/* aldrich-latin-400-normal */
@font-face {
  font-family: 'Aldrich';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(./aldrich-latin-400-normal-D8sU7F5Z.woff2) format('woff2'), url(./aldrich-latin-400-normal-cb_6WAaE.woff) format('woff');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
/* ibm-plex-sans-cyrillic-ext-400-normal */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(./ibm-plex-sans-cyrillic-ext-400-normal-g30qAdWV.woff2) format('woff2'), url(./ibm-plex-sans-cyrillic-ext-400-normal-Dsrv2Tcn.woff) format('woff');
  unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
}

/* ibm-plex-sans-cyrillic-400-normal */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(./ibm-plex-sans-cyrillic-400-normal-DZqxrq2p.woff2) format('woff2'), url(./ibm-plex-sans-cyrillic-400-normal-BTotfTJu.woff) format('woff');
  unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}

/* ibm-plex-sans-greek-400-normal */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(./ibm-plex-sans-greek-400-normal-_efipK4i.woff2) format('woff2'), url(./ibm-plex-sans-greek-400-normal-D9ESIMu3.woff) format('woff');
  unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;
}

/* ibm-plex-sans-vietnamese-400-normal */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(./ibm-plex-sans-vietnamese-400-normal-DG4YqDda.woff2) format('woff2'), url(./ibm-plex-sans-vietnamese-400-normal-fK1oJ5dG.woff) format('woff');
  unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
}

/* ibm-plex-sans-latin-ext-400-normal */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(./ibm-plex-sans-latin-ext-400-normal-C5H60-Va.woff2) format('woff2'), url(./ibm-plex-sans-latin-ext-400-normal-RBey6euL.woff) format('woff');
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

/* ibm-plex-sans-latin-400-normal */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(./ibm-plex-sans-latin-400-normal-CDDApCn2.woff2) format('woff2'), url(./ibm-plex-sans-latin-400-normal-CYLoc0-x.woff) format('woff');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
/* ibm-plex-sans-cyrillic-ext-500-normal */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 500;
  src: url(./ibm-plex-sans-cyrillic-ext-500-normal-Cs5J6C77.woff2) format('woff2'), url(./ibm-plex-sans-cyrillic-ext-500-normal-DB5PtV2g.woff) format('woff');
  unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
}

/* ibm-plex-sans-cyrillic-500-normal */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 500;
  src: url(./ibm-plex-sans-cyrillic-500-normal-CocWQlwt.woff2) format('woff2'), url(./ibm-plex-sans-cyrillic-500-normal-ByOcLdNv.woff) format('woff');
  unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}

/* ibm-plex-sans-greek-500-normal */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 500;
  src: url(./ibm-plex-sans-greek-500-normal-JMMifIXV.woff2) format('woff2'), url(./ibm-plex-sans-greek-500-normal-CuWXN6rf.woff) format('woff');
  unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;
}

/* ibm-plex-sans-vietnamese-500-normal */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 500;
  src: url(./ibm-plex-sans-vietnamese-500-normal-e4dixQRQ.woff2) format('woff2'), url(./ibm-plex-sans-vietnamese-500-normal-BEb3_waV.woff) format('woff');
  unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
}

/* ibm-plex-sans-latin-ext-500-normal */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 500;
  src: url(./ibm-plex-sans-latin-ext-500-normal-DakdToA3.woff2) format('woff2'), url(./ibm-plex-sans-latin-ext-500-normal-D0aIdm-b.woff) format('woff');
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

/* ibm-plex-sans-latin-500-normal */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 500;
  src: url(./ibm-plex-sans-latin-500-normal-6ng42L7E.woff2) format('woff2'), url(./ibm-plex-sans-latin-500-normal-BgVn5rGT.woff) format('woff');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
/* ibm-plex-sans-cyrillic-ext-600-normal */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 600;
  src: url(./ibm-plex-sans-cyrillic-ext-600-normal-DUMzJB7m.woff2) format('woff2'), url(./ibm-plex-sans-cyrillic-ext-600-normal-Bz0x94Yp.woff) format('woff');
  unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
}

/* ibm-plex-sans-cyrillic-600-normal */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 600;
  src: url(./ibm-plex-sans-cyrillic-600-normal-71GNu3SW.woff2) format('woff2'), url(./ibm-plex-sans-cyrillic-600-normal-BGq0mW3O.woff) format('woff');
  unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}

/* ibm-plex-sans-greek-600-normal */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 600;
  src: url(./ibm-plex-sans-greek-600-normal-DzTrcv_p.woff2) format('woff2'), url(./ibm-plex-sans-greek-600-normal-D-CqTdkO.woff) format('woff');
  unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;
}

/* ibm-plex-sans-vietnamese-600-normal */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 600;
  src: url(./ibm-plex-sans-vietnamese-600-normal-DpPYBSTl.woff2) format('woff2'), url(./ibm-plex-sans-vietnamese-600-normal-DgdngZtN.woff) format('woff');
  unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
}

/* ibm-plex-sans-latin-ext-600-normal */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 600;
  src: url(./ibm-plex-sans-latin-ext-600-normal-DOrvGEcy.woff2) format('woff2'), url(./ibm-plex-sans-latin-ext-600-normal-DIrixKbi.woff) format('woff');
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

/* ibm-plex-sans-latin-600-normal */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 600;
  src: url(./ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2) format('woff2'), url(./ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff) format('woff');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
/* ibm-plex-sans-cyrillic-ext-700-normal */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 700;
  src: url(./ibm-plex-sans-cyrillic-ext-700-normal-BmRLXWpJ.woff2) format('woff2'), url(./ibm-plex-sans-cyrillic-ext-700-normal-DCQwxkRk.woff) format('woff');
  unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
}

/* ibm-plex-sans-cyrillic-700-normal */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 700;
  src: url(./ibm-plex-sans-cyrillic-700-normal-D_uavGvn.woff2) format('woff2'), url(./ibm-plex-sans-cyrillic-700-normal-RFb1v-CK.woff) format('woff');
  unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}

/* ibm-plex-sans-greek-700-normal */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 700;
  src: url(./ibm-plex-sans-greek-700-normal-wyJ6jzdA.woff2) format('woff2'), url(./ibm-plex-sans-greek-700-normal-CkZN0sRy.woff) format('woff');
  unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;
}

/* ibm-plex-sans-vietnamese-700-normal */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 700;
  src: url(./ibm-plex-sans-vietnamese-700-normal-CkEo6LDy.woff2) format('woff2'), url(./ibm-plex-sans-vietnamese-700-normal-BV5B8Are.woff) format('woff');
  unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
}

/* ibm-plex-sans-latin-ext-700-normal */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 700;
  src: url(./ibm-plex-sans-latin-ext-700-normal-aMgXseD4.woff2) format('woff2'), url(./ibm-plex-sans-latin-ext-700-normal-DZH6Xh-4.woff) format('woff');
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

/* ibm-plex-sans-latin-700-normal */
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 700;
  src: url(./ibm-plex-sans-latin-700-normal-Bxkt5Cjx.woff2) format('woff2'), url(./ibm-plex-sans-latin-700-normal-Bth3BMcD.woff) format('woff');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
/* ibm-plex-mono-cyrillic-ext-500-normal */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-display: swap;
  font-weight: 500;
  src: url(./ibm-plex-mono-cyrillic-ext-500-normal-BqneJy0T.woff2) format('woff2'), url(./ibm-plex-mono-cyrillic-ext-500-normal-BIfNGwUT.woff) format('woff');
  unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
}

/* ibm-plex-mono-cyrillic-500-normal */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-display: swap;
  font-weight: 500;
  src: url(./ibm-plex-mono-cyrillic-500-normal-Bq9vWWag.woff2) format('woff2'), url(./ibm-plex-mono-cyrillic-500-normal-Ael50iVv.woff) format('woff');
  unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}

/* ibm-plex-mono-vietnamese-500-normal */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-display: swap;
  font-weight: 500;
  src: url(./ibm-plex-mono-vietnamese-500-normal-DZ4AoWbu.woff2) format('woff2'), url(./ibm-plex-mono-vietnamese-500-normal-C8zxqsMH.woff) format('woff');
  unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
}

/* ibm-plex-mono-latin-ext-500-normal */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-display: swap;
  font-weight: 500;
  src: url(./ibm-plex-mono-latin-ext-500-normal-CAhNIIs5.woff2) format('woff2'), url(./ibm-plex-mono-latin-ext-500-normal-CZ70TYgx.woff) format('woff');
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

/* ibm-plex-mono-latin-500-normal */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-display: swap;
  font-weight: 500;
  src: url(./ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2) format('woff2'), url(./ibm-plex-mono-latin-500-normal-CB9ihrfo.woff) format('woff');
  unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
:root{
  --accent-rgb:226,38,61; --btn-rgb:160,20,40; --tint-d:#3a0f18; --tint-l:#fde1e5;
  --bg:radial-gradient(120% 70% at 50% 0%,var(--tint-d) 0%,#0a0a0b 60%);
  --bg-solid:#0a0a0b;
  --glow:radial-gradient(60% 65% at 50% 100%,rgba(var(--accent-rgb),.85) 0%,rgba(var(--btn-rgb),.45) 45%,transparent 75%);
  --text:#f5f3f1; --muted:#b3b4ba; --faint:rgba(245,243,241,.55);
  --glass:rgba(255,255,255,.06); --glass-strong:rgba(255,255,255,.1); --line:rgba(255,255,255,.12); --line-strong:rgba(255,255,255,.16);
  --accent:#e2263d; --btn:#8f1626; --btn-text:#fff;
  --ok:#3ddc84; --ok-bg:rgba(61,220,132,.15); --warn:#f2b24a; --warn-bg:rgba(242,178,74,.15);
  --bad:#ff6b7a; --bad-bg:rgba(255,107,122,.15); --info:#5aa0ff; --info-bg:rgba(90,160,255,.15);
  --tabbg:rgba(18,10,12,.48); --shadow:0 8px 24px rgba(0,0,0,.35); --input:rgba(255,255,255,.06);
  --font:'IBM Plex Sans',system-ui,sans-serif; --mono:'IBM Plex Mono',ui-monospace,monospace; --head:'Aldrich',system-ui,sans-serif;
  color-scheme:dark;
}
:root[data-theme=hell]{
  --bg:linear-gradient(180deg,var(--tint-l) 0%,#f6f2f0 60%); --bg-solid:#f6f2f0;
  --glow:radial-gradient(60% 65% at 50% 100%,rgba(var(--accent-rgb),.28) 0%,rgba(var(--accent-rgb),.1) 45%,transparent 75%);
  --text:#1d1417; --muted:#6e6468; --faint:#6e6468;
  --glass:rgba(255,255,255,.72); --glass-strong:rgba(255,255,255,.9); --line:rgba(60,20,32,.1); --line-strong:rgba(60,20,32,.16);
  --ok:#1c8a4a; --ok-bg:rgba(28,138,74,.12); --warn:#a3650a; --warn-bg:rgba(163,101,10,.13);
  --bad:#c4162e; --bad-bg:rgba(196,22,46,.1); --info:#2264d1; --info-bg:rgba(34,100,209,.1);
  --tabbg:rgba(255,255,255,.55); --shadow:0 8px 24px rgba(90,20,35,.14); --input:rgba(255,255,255,.8);
  color-scheme:light;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body,#root{margin:0;height:var(--appH,100%)}
html,body{position:fixed;inset:0;width:100%;overflow:hidden;overscroll-behavior:none;touch-action:manipulation;-webkit-touch-callout:none}
/* Eingabefelder mit mindestens 16px: sonst zoomt iOS beim Antippen von selbst hinein */
input,select,textarea{font-size:16px}
html{background:var(--glow) center bottom -70px/calc(100% + 80px) 300px no-repeat,var(--bg) no-repeat,var(--bg-solid)}
body{background:transparent;color:var(--text);font-family:var(--font);font-size:14px;line-height:20px;-webkit-text-size-adjust:100%}
button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer;text-align:left}
input,select,textarea{font:inherit;color:inherit}
h1,h2,h3,p{margin:0}
.app{position:fixed;left:0;right:0;top:0;bottom:0;height:var(--appH,auto);background:var(--bg);overflow:hidden}
.kb .app{bottom:auto;top:var(--vvt,0px);height:var(--vvh,100%)}
.kb .tabbar,.kb .fab{display:none}
.glowbar{position:absolute;left:-40px;right:-40px;bottom:-70px;height:300px;background:var(--glow);pointer-events:none}
.scroll{position:absolute;inset:0;overflow-y:auto;overflow-x:hidden;padding:max(20px,calc(env(safe-area-inset-top) + 10px)) max(16px,env(safe-area-inset-right)) 120px max(16px,env(safe-area-inset-left));scrollbar-width:none}
.scroll::-webkit-scrollbar{display:none}
.page{max-width:720px;margin:0 auto;display:flex;flex-direction:column;gap:12px;animation:in .18s ease}
@keyframes in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* Tab-Leiste (Handy) */
.tabbar{position:absolute;z-index:5;left:16px;right:16px;bottom:max(6px,calc(env(safe-area-inset-bottom) - 24px));max-width:560px;margin:0 auto;height:60px;padding:8px;border-radius:9999px;background:var(--tabbg);border:1px solid var(--line-strong);--bf:blur(30px) saturate(1.5);backdrop-filter:var(--bf);-webkit-backdrop-filter:var(--bf);display:flex;box-shadow:var(--shadow)}
.tabbar a{flex:1 1 0;min-width:0;padding:0;height:42px;border-radius:9999px;display:flex;align-items:center;justify-content:center;font-size:clamp(9.5px,2.95vw,11.5px);font-weight:600;color:var(--muted);text-decoration:none;transition:color .2s}
.tabbar{touch-action:none;user-select:none;-webkit-user-select:none}
.tabbar .pill{position:absolute;top:8px;height:42px;left:8px;width:calc((100% - 16px) / var(--n));border-radius:9999px;background:var(--accent);box-shadow:0 4px 14px rgba(var(--accent-rgb),.35);transform:translateX(calc(var(--x) * 100%));transition:transform .32s cubic-bezier(.3,.9,.3,1);will-change:transform;pointer-events:none}
.tabbar .pill.drag{transition:none}
.tabbar a{position:relative;z-index:1;-webkit-user-drag:none}
.tabbar a.on{color:#fff}
.sidebar{display:none}
.mobonly{display:contents}@media (min-width:900px){.mobonly{display:none}}

/* Desktop: Seitenleiste statt Tab-Leiste */
@media (min-width:900px){
  .tabbar{display:none}
  .sidebar{display:flex;position:absolute;z-index:5;left:16px;top:16px;bottom:16px;width:232px;flex-direction:column;gap:4px;padding:16px 12px;border-radius:26px;background:var(--glass);border:1px solid var(--line-strong);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);box-shadow:var(--shadow)}
  .sidebar .brand{display:flex;align-items:center;gap:10px;padding:4px 8px 16px;font-family:var(--head);font-size:18px;letter-spacing:.06em}
  .sidebar a{display:flex;align-items:center;gap:12px;height:44px;padding:0 14px;border-radius:9999px;color:var(--muted);text-decoration:none;font-weight:600;font-size:14px}
  .sidebar a.on{background:var(--accent);color:#fff}
  .sidebar a:hover:not(.on){background:var(--glass-strong)}
  .sidebar .grow{flex:1}
  .scroll{left:264px;padding:32px 32px 48px}
  .page{max-width:1040px}
}

/* Bausteine */
.tile{background:var(--glass);border:1px solid var(--line);border-radius:26px;padding:16px 18px}
.tile.tap{cursor:pointer;transition:transform .12s ease,filter .12s ease}
.tile.tap:active{transform:scale(.985);filter:brightness(1.12)}
.row{display:flex;align-items:center;gap:12px}
.col{display:flex;flex-direction:column}
.grow{flex:1;min-width:0}
.h1{font-family:var(--head);font-weight:400;font-size:28px;line-height:34px}
.h2{font-weight:600;font-size:15px}
.eyebrow{font-family:var(--mono);font-weight:500;font-size:11px;letter-spacing:.08em;text-transform:uppercase;opacity:.7}
.sub{font-size:12px;color:var(--faint)}
.chev{opacity:.5;font-size:20px;line-height:1}
.ic{width:44px;height:44px;border-radius:15px;display:flex;align-items:center;justify-content:center;flex:none;background:var(--glass-strong)}
.avatar{width:44px;height:44px;border-radius:15px;background:linear-gradient(135deg,var(--accent),var(--btn));display:flex;align-items:center;justify-content:center;font-family:var(--head);font-size:15px;flex:none;color:#fff}
.avatar.lg{width:56px;height:56px;border-radius:18px;font-size:19px}
.chip{display:inline-flex;align-items:center;height:24px;padding:0 10px;border-radius:9999px;font-size:11px;font-weight:600;white-space:nowrap}
.chip.ok{background:var(--ok-bg);color:var(--ok)}.chip.warn{background:var(--warn-bg);color:var(--warn)}
.chip.bad{background:var(--bad-bg);color:var(--bad)}.chip.info{background:var(--info-bg);color:var(--info)}
.chip.mute{background:var(--glass-strong);color:var(--muted)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:44px;padding:0 20px;border-radius:9999px;background:var(--btn);color:var(--btn-text);font-weight:600;font-size:14px;border:1px solid var(--line-strong);transition:transform .12s,filter .12s;text-decoration:none}
.btn:active{transform:scale(.97);filter:brightness(1.15)}
.btn.ghost{background:var(--glass);color:var(--text)}
.btn.danger{background:var(--bad-bg);color:var(--bad);border-color:transparent}
.btn.sm{height:36px;padding:0 14px;font-size:13px}
.btn.block{width:100%}
.btn[disabled]{opacity:.45;pointer-events:none}
.icobtn{width:44px;height:44px;border-radius:9999px;background:var(--glass);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;flex:none;text-decoration:none;color:var(--text)}
.icobtn.red{background:var(--btn);color:#fff}
.field{display:flex;flex-direction:column;gap:6px}
.field label{font-size:12px;color:var(--faint);font-weight:500}
.input{height:48px;border-radius:9999px;padding:0 18px;background:var(--input);border:1px solid var(--line);outline:none;width:100%;min-width:0;max-width:100%}
.input:focus{border-color:var(--accent)}
.pick{display:flex;align-items:center;gap:8px;text-align:left;cursor:pointer;color:var(--text)}
.pick.empty{color:var(--muted)}
.pick:disabled{opacity:.5;cursor:default}
.ell{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.picklist{display:flex;flex-direction:column;gap:4px;margin:0 -6px}
.pickopt{display:flex;align-items:center;gap:10px;min-height:48px;padding:10px 14px;border-radius:16px;width:100%;color:var(--text)}
.pickopt:active{background:var(--glass)}
.pickopt.on{background:rgba(var(--accent-rgb),.14);color:var(--accent)}
.pickopt.on .sub{color:inherit;opacity:.8}
.search{display:flex;align-items:center;height:48px;border-radius:9999px;background:var(--input);border:1px solid var(--line);padding:0 6px 0 18px;gap:8px;color:var(--muted)}
.search input{flex:1;background:none;border:0;outline:none;color:var(--text);min-width:0;height:100%}
.chips{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;padding:2px 0}
.chips::-webkit-scrollbar{display:none}
.pill{height:36px;padding:0 16px;border-radius:9999px;background:var(--glass);border:1px solid var(--line);font-weight:600;font-size:13px;white-space:nowrap;display:inline-flex;align-items:center}
.pill.on{background:var(--accent);border-color:transparent;color:#fff}
.seg{display:flex;gap:2px;padding:3px;border-radius:9999px;background:var(--glass-strong)}
.seg button{height:32px;padding:0 12px;border-radius:9999px;font-size:12px;font-weight:600;color:var(--muted);text-align:center}
.seg button.on{background:var(--btn);color:#fff}
.seg button[disabled]{opacity:.5;pointer-events:none}
.list>*+*{border-top:1px solid var(--line)}
.list .item{display:flex;align-items:center;gap:12px;padding:12px 0;cursor:pointer}
.sep{height:1px;background:var(--line)}
.topbar{display:flex;align-items:center;gap:12px;min-height:44px}
.topbar .t{flex:1;font-family:var(--head);font-size:24px;line-height:30px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sheet-bg{position:fixed;left:0;right:0;top:var(--vvt,0px);height:var(--vvh,100%);z-index:20;background:rgba(0,0,0,.55);display:flex;align-items:flex-end;justify-content:center;animation:fade .15s}
@keyframes fade{from{opacity:0}to{opacity:1}}
.sheet{width:100%;max-width:520px;background:var(--bg-solid);border:1px solid var(--line-strong);border-radius:28px 28px 0 0;padding:20px 18px max(24px,env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:14px;max-height:92%;overflow-y:auto;overflow-x:hidden;background-image:var(--bg);overscroll-behavior:contain}
/* Nichts im Bogen darf breiter werden als der Bogen (iOS macht Datumsfelder sonst zu breit und der Bogen laesst sich seitlich schieben) */
.sheet>*{min-width:0;max-width:100%}
input[type=date],input[type=time],input[type=datetime-local]{-webkit-appearance:none;appearance:none;display:block;min-width:0;max-width:100%;box-sizing:border-box}
/* iOS setzt den Datumstext mittig und oben; buendig links und mittig in der Hoehe wie alle anderen Felder */
input[type=date]{text-align:left}
input[type=date]::-webkit-date-and-time-value{text-align:left;height:100%;display:flex;align-items:center}
@media (min-width:900px){.sheet-bg{align-items:center}.sheet{border-radius:28px}}
.toast{position:fixed;z-index:30;left:50%;bottom:104px;transform:translateX(-50%);padding:11px 18px;border-radius:9999px;background:rgba(20,10,13,.94);color:#fff;font-size:13px;font-weight:600;box-shadow:var(--shadow);animation:toastin .22s ease}
@keyframes toastin{from{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%,0)}}
.banner{position:sticky;top:0;z-index:6;display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:9999px;background:var(--warn-bg);border:1px solid var(--warn);color:var(--warn);font-weight:600;font-size:13px}
.meter{height:6px;border-radius:9999px;background:var(--glass-strong);overflow:hidden}
.meter i{display:block;height:100%;border-radius:9999px;background:var(--ok)}
.meter i.w{background:var(--warn)}
.mono{font-family:var(--mono)}
a{color:inherit}

/* Etikettenbogen: A4, 4 x 10 Etiketten, 52,5 x 29,7 mm */
.sheetA4{container-type:inline-size;background:#fff;color:#111;width:100%;aspect-ratio:210/297;border-radius:6px;display:grid;grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(10,1fr);overflow:hidden;box-shadow:var(--shadow)}
/* 1 mm = 100cqw/210: alles im Etikett ist in Millimetern gerechnet, damit Vorschau und Druck gleich aussehen (Etikett 52,5 x 29,7 mm) */
.lbl{--mm:calc(100cqw / 210);border:1px dashed #ddd;padding:0 calc(var(--mm)*2.5);display:grid;grid-template-columns:calc(var(--mm)*20) minmax(0,1fr);column-gap:calc(var(--mm)*2.4);align-items:center;line-height:1.15;overflow:hidden}
.lbl.skip{background:repeating-linear-gradient(45deg,#f3f3f3,#f3f3f3 4px,#fff 4px,#fff 8px)}
.lbl.next{outline:2px solid var(--accent);outline-offset:-2px}
.lbl .qr{width:calc(var(--mm)*20);height:calc(var(--mm)*20);align-self:center;justify-self:start}
.lbl .qr>span,.lbl .qr svg{display:block;width:100%;height:100%}
.lbl .meta{min-width:0;display:flex;flex-direction:column;justify-content:center;gap:calc(var(--mm)*1)}
.lbl .brand{display:flex;align-items:center;gap:calc(var(--mm)*1.2);font-size:calc(var(--mm)*2.1);font-weight:700;letter-spacing:.06em;text-transform:uppercase;line-height:1.1}
.lbl .lg{width:calc(var(--mm)*5.2);flex:none;display:block}
.lbl .lg svg{display:block;width:100%;height:auto}
.lbl .nm{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;font-size:calc(var(--mm)*2.7);line-height:1.15}
.lbl .sn,.lbl .cd{font-size:calc(var(--mm)*2.2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lbl .cd{font-family:var(--mono)}
@media print{
  html,body{position:static!important;inset:auto;width:210mm!important;height:297mm!important;max-height:297mm;overflow:hidden!important;background:#fff;margin:0}
  #root,.app{position:static!important;height:auto!important;background:#fff;overflow:visible}
  .app>*:not(.scroll),.noprint{display:none!important}
  .scroll{position:static;padding:0;overflow:visible;height:auto}
  .page{max-width:none;margin:0;padding:0;animation:none;display:block}
  .printonly{display:block!important}
  .sheetA4{width:210mm;height:297mm;max-height:297mm;aspect-ratio:auto;border-radius:0;box-shadow:none;grid-template-columns:repeat(4,52.5mm);grid-template-rows:repeat(10,29.7mm);break-after:avoid;page-break-after:avoid;break-inside:avoid;overflow:hidden}
  .sheetA4{position:relative;left:var(--ox,0mm);top:var(--oy,0mm);transform:scale(var(--sc,1));transform-origin:50% 50%}
  .lbl{border:0;--mm:1mm}
  .lbl .sn,.lbl .cd{overflow:visible;text-overflow:clip}
  .lbl.skip{background:none}
  .lbl.next{outline:0}
  .sheetA4.test .lbl.tst{border:.25mm solid #000;background:none}
  @page{size:A4;margin:0}
}
.printonly{display:none}

.fab{position:fixed;right:16px;bottom:calc(max(6px,calc(env(safe-area-inset-bottom) - 24px)) + 72px);z-index:4;height:54px;padding:0 22px 0 8px;gap:10px;border-radius:9999px;font-weight:600;letter-spacing:.01em;color:#fff;background:linear-gradient(135deg,var(--accent) 0%,var(--btn) 100%);border:1px solid rgba(255,255,255,.28);box-shadow:0 10px 28px rgba(var(--accent-rgb),.45),0 2px 0 rgba(255,255,255,.22) inset,0 -10px 18px rgba(0,0,0,.18) inset;transition:transform .12s ease,filter .12s ease}
.fab:active{transform:scale(.96);filter:brightness(1.08)}
.fab svg{width:38px;height:38px;padding:9px;border-radius:9999px;background:rgba(255,255,255,.2);flex:none}
@media (min-width:900px){.fab{right:40px;bottom:32px}}

.livedot{width:8px;height:8px;border-radius:9px;background:var(--ok);display:inline-block;box-shadow:0 0 0 0 var(--ok);animation:pulse 1.6s infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(61,220,132,.6)}70%{box-shadow:0 0 0 8px rgba(61,220,132,0)}100%{box-shadow:0 0 0 0 rgba(61,220,132,0)}}
.glowtext{text-shadow:0 0 18px currentColor}
.srvcard{position:relative;overflow:hidden}
.srvcard::before{content:'';position:absolute;inset:0;background:radial-gradient(80% 60% at 0% 0%,var(--srvglow,rgba(61,220,132,.14)),transparent 70%);pointer-events:none}

/* Kamera-Scanner */
.scanner{position:fixed;left:0;top:0;width:100%;height:100%;height:100dvh;z-index:60;background:#000;color:#fff;overflow:hidden;touch-action:none}
.scanner video{position:absolute;left:0;top:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .25s ease}
.scanner video.on{opacity:1}
.scan-top{position:absolute;left:0;right:0;top:0;display:flex;align-items:center;gap:12px;padding:max(16px,calc(env(safe-area-inset-top) + 8px)) 16px 16px;background:linear-gradient(#000a,transparent)}
.scan-title{font-family:var(--head);font-size:20px}
.scan-frame{position:absolute;left:50%;top:46%;width:min(68vw,320px);aspect-ratio:1;transform:translate(-50%,-50%);border-radius:24px;box-shadow:0 0 0 100vmax rgba(0,0,0,.45);pointer-events:none}
.scan-frame i{position:absolute;width:34px;height:34px;border:4px solid var(--accent)}
.scan-frame i:nth-child(1){left:-2px;top:-2px;border-right:0;border-bottom:0;border-top-left-radius:24px}
.scan-frame i:nth-child(2){right:-2px;top:-2px;border-left:0;border-bottom:0;border-top-right-radius:24px}
.scan-frame i:nth-child(3){left:-2px;bottom:-2px;border-right:0;border-top:0;border-bottom-left-radius:24px}
.scan-frame i:nth-child(4){right:-2px;bottom:-2px;border-left:0;border-top:0;border-bottom-right-radius:24px}
.scan-bottom{position:absolute;left:0;right:0;bottom:0;display:flex;flex-direction:column;align-items:center;gap:14px;padding:40px 20px max(28px,calc(env(safe-area-inset-bottom) + 12px));background:linear-gradient(transparent,#000c)}
.scan-msg{text-align:center;font-weight:600;font-size:14px;padding:8px 16px;border-radius:9999px;background:rgba(0,0,0,.55);max-width:100%}
.scan-msg.bad{color:#ffb3bb}

/* Ringreihe */
.rings{display:flex;justify-content:space-around}
/* Wisch-zum-Aktualisieren */
.ptr{position:absolute;left:50%;top:0;z-index:7;width:40px;height:40px;margin-left:-20px;border-radius:9999px;background:var(--tabbg);border:1px solid var(--line-strong);display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow);--bf:blur(20px);backdrop-filter:var(--bf);-webkit-backdrop-filter:var(--bf);pointer-events:none;color:var(--text)}
.ptr svg{transition:transform .15s}
.ptr.spin svg{animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.dgrid,.dlist{display:contents}
.dcats{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.dlist.wide{display:flex;flex-direction:column;gap:12px}

/* Desktop: Inhalt in Spalten statt gestreckter Karten */
@media (min-width:900px){
  .page{max-width:1120px;gap:16px}
  .dgrid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;align-items:start}
  .dgrid>*{grid-column:1}
  .dgrid>.srvcard{grid-column:2;grid-row:1 / span 3}
  .dgrid:not(:has(.srvcard))>*{grid-column:auto}
  .dlist{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:14px}
  .dlist.wide{display:grid;grid-template-columns:repeat(auto-fill,minmax(480px,1fr));gap:16px;align-items:start}
  .dcats{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}
  .rings{justify-content:center;gap:clamp(24px,5vw,72px)}
  .ring{--rs:116px}
  .tile{padding:18px 22px}
  .h1{font-size:34px;line-height:42px}
}
@media (min-width:1500px){.page{max-width:1240px}}
.spanel{margin-top:6px;padding:10px 10px 6px;border-radius:16px;background:linear-gradient(180deg,rgba(255,255,255,.05),rgba(255,255,255,.015));border:1px solid var(--line,rgba(255,255,255,.08));background-image:repeating-linear-gradient(0deg,transparent 0 17px,rgba(255,255,255,.045) 17px 18px)}
.netrow{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.netbox{display:flex;flex-direction:column;gap:4px;padding:10px 12px;border-radius:16px;background:var(--glass-strong);border:1px solid rgba(255,255,255,.06)}
.netlbl{display:flex;align-items:center;gap:6px;font-size:11px;letter-spacing:.08em;text-transform:uppercase;opacity:.75}
.netbox.down .netlbl{color:var(--info)}
.netbox.up .netlbl{color:#ff8a98}
.netval{font-size:26px;line-height:30px;font-weight:600}
.netval small{font-size:11px;opacity:.6;margin-left:6px;font-weight:400}
.switch{appearance:none;-webkit-appearance:none;width:46px;height:28px;border-radius:9999px;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.12);position:relative;flex:none;transition:background .18s ease;cursor:pointer}
.switch::after{content:'';position:absolute;top:2px;left:2px;width:22px;height:22px;border-radius:50%;background:#fff;transition:transform .18s ease;box-shadow:0 1px 4px rgba(0,0,0,.4)}
.switch:checked{background:linear-gradient(135deg,#f0344b,#b31a2e)}
.switch:checked::after{transform:translateX(18px)}
:root[data-theme="light"] .switch{background:rgba(0,0,0,.14)}
.nrow{display:flex;gap:12px;align-items:flex-start;padding:12px 4px}
.ndot{width:9px;height:9px;border-radius:50%;background:#f0344b;flex:none;margin-top:7px;box-shadow:0 0 10px rgba(240,52,75,.7)}
.ndot.read{background:transparent;box-shadow:none}
.nbadge{position:absolute;top:-3px;right:-3px;min-width:18px;height:18px;padding:0 5px;border-radius:9999px;background:linear-gradient(135deg,#f0344b,#b31a2e);color:#fff;font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;border:2px solid var(--bg,#0a0a0a)}
.pday{padding:10px 4px}.pday.we{opacity:.55}
.pday.miss{background:var(--bad-bg);border-radius:12px;box-shadow:inset 3px 0 0 var(--bad)}
.pyear{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;margin-top:12px}
@media(min-width:900px){.pyear{grid-template-columns:repeat(12,1fr)}}
.pmon{display:flex;flex-direction:column;align-items:center;gap:1px;padding:8px 2px;border-radius:12px;background:var(--glass);border:1px solid var(--line);cursor:pointer;min-height:68px}
.pmon.miss{border-color:var(--bad);background:var(--bad-bg)}
.pm-l{font-size:11px;color:var(--muted);font-weight:600}.pm-n{font-size:18px;font-weight:700}
.pm-t{display:flex;gap:3px;flex-wrap:wrap;justify-content:center;font-size:10px;min-height:12px}
.pm-t b{font-weight:700}.pm-t .p{color:var(--ok)}.pm-t .x{color:var(--muted)}.pm-t .u,.pm-t .a{color:var(--info)}.pm-t .k{color:var(--warn)}.pm-t .f{color:var(--muted)}.pm-t .m{color:var(--bad)}
.wrapchips .chips{flex-wrap:wrap;overflow:visible}

/* Anwesenheit: Tageskaestchen nach Status */
:root{--c-w:#2fbf71;--c-p:#14b8a6;--c-x:#7c7f93;--c-u:#4c8dff;--c-k:#f5a524;--c-a:#a78bfa;--c-f:#6b6b76;--c-m:#f0344b}
.dc{display:inline-block;border-radius:4px;background:var(--glass-strong);flex:none}
.dc.w{background:var(--c-w)}.dc.p{background:var(--c-p)}.dc.x{background:var(--c-x)}.dc.u{background:var(--c-u)}.dc.k{background:var(--c-k)}.dc.a{background:var(--c-a)}.dc.f{background:var(--c-f)}.dc.m{background:var(--c-m)}
.dc.we{opacity:.45}.dc.none{background:transparent}
.legend{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:12px;font-size:12px;color:var(--muted)}
.legend span{display:inline-flex;align-items:center;gap:6px}.legend .dc{width:12px;height:12px}
.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.cal-h{text-align:center;font-size:11px;font-weight:700;color:var(--muted);padding-bottom:2px}
.dc.big{width:100%;aspect-ratio:1/1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;border-radius:12px;background:var(--glass);border:1px solid var(--line);color:var(--text)}
.dc.big .dn{font-size:15px;font-weight:700;line-height:18px}.dc.big .dl{font-size:10px;line-height:12px;min-height:12px;font-weight:700;opacity:.9}
.dc.big.w,.dc.big.p,.dc.big.x,.dc.big.u,.dc.big.k,.dc.big.a,.dc.big.f,.dc.big.m{color:#fff;border-color:transparent}
.dc.big.we{opacity:.6}.dc.big.today{outline:2px solid #fff;outline-offset:1px}
.yr{display:flex;flex-direction:column;gap:2px;margin-top:10px}
.yr-row{display:flex;align-items:center;gap:1px;padding:1px 0;width:100%}
.yr-l{width:26px;flex:none;font-size:10px;color:var(--muted);font-weight:600}
.yr-row .dc{flex:1 1 0;min-width:0;height:11px;border-radius:2px}
.ycal{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
@media(min-width:900px){.ycal{grid-template-columns:repeat(4,1fr)}}
.ycal .tile{padding:12px}
.mini{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
.dc.sm{width:100%;aspect-ratio:1/1;border-radius:4px;font-size:9px;line-height:1;color:#fff;display:flex;align-items:center;justify-content:center;background:var(--glass-strong);color:var(--muted)}
.dc.sm.w,.dc.sm.p,.dc.sm.x,.dc.sm.u,.dc.sm.k,.dc.sm.a,.dc.sm.f,.dc.sm.m{color:#fff}
.dc.big.w,.dc.sm.w{background:var(--c-w)}.dc.big.p,.dc.sm.p{background:var(--c-p)}.dc.big.x,.dc.sm.x{background:var(--c-x)}.dc.big.u,.dc.sm.u{background:var(--c-u)}.dc.big.k,.dc.sm.k{background:var(--c-k)}
.dc.big.a,.dc.sm.a{background:var(--c-a)}.dc.big.f,.dc.sm.f{background:var(--c-f)}.dc.big.m,.dc.sm.m{background:var(--c-m)}
.dc.big.we.w,.dc.big.we.p,.dc.big.we.x,.dc.big.we.u,.dc.big.we.k,.dc.big.we.a,.dc.big.we.f,.dc.big.we.m{opacity:.8}

/* Jahresraster: Mitarbeiter als Zeilen, Tage als Spalten, seitlich scrollbar */
.ygrid{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;scrollbar-width:thin}
.yg{display:grid;grid-template-rows:30px 26px;grid-auto-rows:56px;width:max-content;align-items:center}
/* Namensspalte: eigene Flaeche mit Trennkante und Schatten, bleibt beim Wischen stehen */
.yg-n{position:sticky;left:0;z-index:2;display:flex;align-items:center;gap:8px;padding:0 8px 0 10px;text-overflow:ellipsis;background:linear-gradient(var(--glass-strong),var(--glass-strong)),var(--bg-solid);font-weight:600;font-size:13px;height:100%;min-width:0;white-space:nowrap;overflow:hidden;border-right:1px solid var(--line-strong);border-bottom:1px solid var(--line);box-shadow:8px 0 12px -8px rgba(0,0,0,.45)}
.yg-n span.nm{overflow:hidden;text-overflow:ellipsis}
.yg-av{flex:none;width:26px;height:26px;border-radius:9px;background:linear-gradient(135deg,var(--accent),var(--btn));color:#fff;font-family:var(--head);font-size:10px;display:flex;align-items:center;justify-content:center;overflow:hidden}
.yg-av img{width:100%;height:100%;object-fit:cover}
.yg-corner{grid-row:1 / span 2;grid-column:1;flex-direction:column;align-items:flex-start;justify-content:center;gap:2px;border-bottom:1px solid var(--line-strong);z-index:3}
.yg-corner .t{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.yg-corner .c{font-size:12px;font-weight:600}
.yg-m{font-size:11px;font-weight:700;color:var(--muted);padding-left:6px;border-left:1px solid var(--line);height:100%;display:flex;align-items:center}
.yg-d{font-size:10px;text-align:center;color:var(--muted);height:100%;display:flex;align-items:center;justify-content:center;border-bottom:1px solid var(--line-strong)}
.yg-d.we{opacity:.5}.yg-d.today{color:#fff;font-weight:700;box-shadow:inset 0 0 0 1.5px #fff;border-radius:6px}
.dc.yg-c{position:relative;display:block;width:100%;height:56px;margin:0;padding:0;border-radius:0;background:transparent;border-bottom:1px solid var(--line)}
.dc.yg-c::before{content:'';position:absolute;left:1.5px;right:1.5px;top:7px;bottom:7px;border-radius:6px;background:var(--glass-strong)}
.dc.yg-c.w::before{background:var(--c-w)}.dc.yg-c.p::before{background:var(--c-p)}.dc.yg-c.x::before{background:var(--c-x)}.dc.yg-c.u::before{background:var(--c-u)}.dc.yg-c.k::before{background:var(--c-k)}.dc.yg-c.a::before{background:var(--c-a)}.dc.yg-c.f::before{background:var(--c-f)}.dc.yg-c.m::before{background:var(--c-m)}
.dc.yg-c.we{opacity:1}.dc.yg-c.we::before{opacity:.4}
.dc.yg-c.today::after{content:'';position:absolute;left:1.5px;right:1.5px;top:7px;bottom:7px;border-radius:6px;border:1.5px solid #fff;pointer-events:none}
.yg-ml{position:sticky;left:118px}
.dc.big.sel{box-shadow:0 0 0 2px var(--accent)}
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px 8px;margin-top:8px}
.item.on{background:var(--glass-strong);border-radius:12px}

/* Profilfarben */
.swatches{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:6px}
.swatch{display:flex;flex-direction:column;align-items:center;gap:6px;padding:10px 4px;border-radius:16px;border:1px solid var(--line);background:var(--glass);font-size:12px;font-weight:600;text-align:center;justify-content:center}
.swatch i{display:block;width:30px;height:30px;border-radius:50%;box-shadow:inset 0 0 0 2px rgba(255,255,255,.25)}
.swatch.on{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent)}
@media (min-width:720px){.swatches{grid-template-columns:repeat(8,1fr)}}
/* Auswahlliste bei @ # + in Notizen */
.mention{margin-top:8px;border:1px solid var(--line-strong);border-radius:18px;background:var(--glass-strong);max-height:224px;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
.mention .mh{padding:8px 14px 4px;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.mention button{display:flex;align-items:center;width:100%;min-height:44px;padding:6px 14px;gap:10px;font-size:15px}
.mention button.on{background:var(--accent);color:#fff}
.mention button .s{margin-left:auto;font-size:12px;opacity:.7}
.mention .none{padding:12px 14px;color:var(--muted)}
.code{font-family:var(--mono);font-size:20px;letter-spacing:.08em;text-align:center;padding:16px 10px;border-radius:16px;border:1px dashed var(--line-strong);background:var(--glass);word-break:break-all;user-select:all}

/* ---- Kalender ---- */
.kd{position:relative;display:grid;place-items:center;width:100%;aspect-ratio:1/1;max-height:52px;border-radius:12px;background:var(--glass);border:1px solid transparent;color:var(--text);padding:0}
.kd.dim{opacity:.4}.kd.sel{border-color:var(--accent);background:var(--glass-strong)}.kd.today .kd-n{background:var(--accent);color:#fff;border-radius:999px}
.kd-n{font-size:13px;font-weight:700;width:24px;height:24px;line-height:24px;text-align:center;border-radius:999px}
.kc{position:absolute;width:6px;height:6px;border-radius:50%;display:block}
.kc0{top:4px;left:4px}.kc1{top:4px;right:4px}.kc2{bottom:4px;left:4px}.kc3{bottom:4px;right:4px}
.kd-more{position:absolute;top:1px;left:50%;transform:translateX(-50%);font-style:normal;font-size:10px;line-height:12px;font-weight:800;color:var(--warn)}
.kd-x{position:absolute;bottom:3px;left:50%;transform:translateX(-50%);width:5px;height:5px;border:1.5px solid var(--muted);border-radius:50%;display:block}
.kdot{display:block;width:10px;height:10px;border-radius:50%;flex:none}
.kcol{width:34px;height:34px;border-radius:50%;border:2px solid transparent;box-shadow:inset 0 0 0 2px rgba(255,255,255,.25)}.kcol.on{border-color:var(--text);box-shadow:0 0 0 2px var(--bg-solid),0 0 0 4px var(--text)}
.kwd{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 0;border-radius:12px;background:var(--glass);color:var(--text);font-weight:700;font-size:14px;position:relative}
.kwd.on{background:var(--accent);color:#fff}.kwd.on .sub{color:#fff;opacity:.85}.kwd.today:not(.on){box-shadow:inset 0 0 0 1.5px var(--accent)}
.kwd i{position:absolute;bottom:3px;width:4px;height:4px;border-radius:50%;background:currentColor}
.kwk{display:grid;gap:0 4px;position:relative}
.kwh{text-align:center;font-size:12px;font-weight:700;color:var(--muted);padding:4px 0}.kwh.today{color:var(--accent)}
.kwa{display:flex;flex-direction:column;gap:3px;padding:2px 0 6px;min-height:8px}
.kwt{position:relative}.kwt-h{position:absolute;right:6px;transform:translateY(-7px);font-size:10px;color:var(--muted);font-family:var(--mono)}
.kwc{position:relative;border-left:1px solid var(--line);cursor:pointer}
.kwc-work{position:absolute;left:0;right:0;background:rgba(255,255,255,.035)}
:root[data-theme=hell] .kwc-work{background:rgba(0,0,0,.035)}
.kwc-l{position:absolute;left:0;right:0;border-top:1px solid var(--line);opacity:.6}
.kwc-now{position:absolute;left:0;right:0;border-top:2px solid var(--accent);z-index:2}.kwc-now::before{content:'';position:absolute;left:-5px;top:-5px;width:8px;height:8px;border-radius:50%;background:var(--accent)}
.kev{position:absolute;left:3px;right:3px;border-radius:8px;padding:3px 6px;color:#fff;font-size:11px;line-height:14px;text-align:left;overflow:hidden;display:flex;flex-direction:column;z-index:1;box-shadow:0 1px 4px rgba(0,0,0,.3)}
.kev b{font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kev span{opacity:.9;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kev.all{position:static;height:auto;padding:4px 8px;flex-direction:row;font-weight:600}.kev.all.x{background:var(--glass-strong);color:var(--muted);box-shadow:none;font-weight:500}

.cal.kw{grid-template-columns:26px repeat(7,1fr)}
.kwn{display:flex;align-items:center;justify-content:center;font-size:10px;font-family:var(--mono);color:var(--muted)}
.cal-h.kwn{font-family:var(--font);font-weight:700}
