:root{
  --bg:#F4EEE1;
  --bg-weekend:#E8DEC7;
  --surface:#FFFFFF;
  --surface-alt:#FBF8F2;
  --text:#211D16;
  --text-secondary:#726A59;
  --border:#E3D9C4;
  --border-strong:#D3C6A8;
  --accent:#D2B75F;
  --accent-hover:#E0C475;
  --accent-active:#B89A45;
  --accent-grad:linear-gradient(135deg,#E4C878 0%,#C9A24C 100%);
  --accent-grad-hover:linear-gradient(135deg,#EBD48E 0%,#D2AC55 100%);
  --accent-tint:#FBF3DC;
  --accent-contrast:#2E2510;
  --accent-text:#8E7226;
  --danger:#C9524A;
  --danger-hover:#B5443D;
  --danger-tint:#FCEBE9;
  --danger-text:#B8362E;
  --edit:#4F7286;
  --edit-hover:#436074;
  --success-tint:#E7F7EC;
  --success-text:#1C7A3D;
  --warning-tint:#FEF2DF;
  --warning-text:#A6570A;
  --radius-xl:22px;
  --radius-lg:18px;
  --radius-md:13px;
  --radius-sm:10px;
  --sidebar-w:246px;
  --shadow-xs:0 1px 2px rgba(30,22,6,.05);
  --shadow-card:0 1px 1px rgba(30,22,6,.03),0 6px 20px -4px rgba(30,22,6,.07);
  --shadow-md:0 4px 16px -2px rgba(30,22,6,.09);
  --shadow-pop:0 16px 44px -8px rgba(30,22,6,.22),0 4px 14px rgba(30,22,6,.08);
  --ease-out:cubic-bezier(.16,1,.3,1);
  --ease-spring:cubic-bezier(.34,1.56,.64,1);
  --glass:rgba(255,255,255,.72);
  --glass-2:rgba(255,255,255,.82);
  --glass-pop:rgba(255,255,255,.94);
  --glass-border:rgba(255,255,255,.75);
  --glass-grad:linear-gradient(180deg,rgba(255,255,255,.62),rgba(255,255,255,.38));
  --glass-shadow:0 10px 32px rgba(40,28,6,.16),0 1px 0 rgba(255,255,255,.9) inset,0 -1px 0 rgba(255,255,255,.35) inset;
  --glass-active:linear-gradient(180deg,rgba(255,255,255,.92),rgba(255,255,255,.6));
  --glass-active-shadow:0 2px 10px rgba(40,28,6,.12),0 1px 0 rgba(255,255,255,1) inset;
  --body-glow-1:rgba(226,196,118,.16);
  --body-glow-2:rgba(210,183,95,.10);
  --banner-bg:#FFF6D6;
  --banner-text:#5C4A00;
  color-scheme:light;
}

/* ── Dunkelmodus ─────────────────────────────────────────────────────────
   Wird über <html data-theme="dark"> geschaltet (assets/theme.js: System, Hell
   oder Dunkel; Auswahl im Profil). Rechnungen/PDFs bleiben bewusst hell. */
:root[data-theme="dark"]{
  --bg:#14110B;
  --bg-weekend:#1D1910;
  --surface:#1D1A13;
  --surface-alt:#26221A;
  --text:#F3ECDE;
  --text-secondary:#A99F8A;
  --border:#352F22;
  --border-strong:#4B4231;
  --accent-tint:#2F2813;
  --accent-text:#E6CB7E;
  --danger-tint:#3B201D;
  --danger-text:#F28F86;
  --edit:#6F9CB5;
  --edit-hover:#82ADC5;
  --success-tint:#15301F;
  --success-text:#73D493;
  --warning-tint:#35260F;
  --warning-text:#F2B866;
  --shadow-xs:0 1px 2px rgba(0,0,0,.4);
  --shadow-card:0 1px 1px rgba(0,0,0,.3),0 6px 20px -4px rgba(0,0,0,.5);
  --shadow-md:0 4px 16px -2px rgba(0,0,0,.55);
  --shadow-pop:0 16px 44px -8px rgba(0,0,0,.7),0 4px 14px rgba(0,0,0,.45);
  --glass:rgba(29,26,19,.74);
  --glass-2:rgba(29,26,19,.84);
  --glass-pop:rgba(36,32,24,.96);
  --glass-border:rgba(255,255,255,.09);
  --glass-grad:linear-gradient(180deg,rgba(48,43,32,.78),rgba(30,27,20,.62));
  --glass-shadow:0 10px 32px rgba(0,0,0,.55),0 1px 0 rgba(255,255,255,.07) inset;
  --glass-active:linear-gradient(180deg,rgba(210,183,95,.26),rgba(210,183,95,.12));
  --glass-active-shadow:0 2px 10px rgba(0,0,0,.4),0 1px 0 rgba(255,255,255,.1) inset;
  --body-glow-1:rgba(210,183,95,.07);
  --body-glow-2:rgba(210,183,95,.04);
  --banner-bg:#3A3010;
  --banner-text:#F3DE94;
  color-scheme:dark;
}

*{box-sizing:border-box}
html,body{margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",Helvetica,Arial,sans-serif;
  background:
    radial-gradient(1100px 620px at 12% -8%, var(--body-glow-1), transparent 60%),
    radial-gradient(900px 700px at 100% 0%, var(--body-glow-2), transparent 55%),
    var(--bg);
  background-attachment:fixed;
  color:var(--text);
  min-height:100vh;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  letter-spacing:-.005em;
}
a{color:var(--accent-text)}

/* ── Bewegung (Apple-artige Easing-Kurven: gedämpft-elastisch für Eintritte,
   sanft für Hover/Fokus) — respektiert prefers-reduced-motion global. ────── */
@keyframes fadeSlideUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
@keyframes scaleIn{from{opacity:0;transform:scale(.94) translateY(6px)}to{opacity:1;transform:scale(1) translateY(0)}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes pulseGlow{0%,100%{box-shadow:0 0 0 0 rgba(31,122,61,.35)}50%{box-shadow:0 0 0 7px rgba(31,122,61,0)}}
@keyframes shimmer{0%{background-position:-200% 0}100%{background-position:200% 0}}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
}

/* ── App shell / sidebar ─────────────────────────────────────────────── */
.app-shell{display:flex;min-height:100vh}
.sidebar{
  width:var(--sidebar-w);flex:0 0 var(--sidebar-w);
  background:var(--glass);backdrop-filter:blur(24px) saturate(1.6);-webkit-backdrop-filter:blur(24px) saturate(1.6);
  border-right:1px solid var(--border);
  position:fixed;top:0;left:0;bottom:0;
  display:flex;flex-direction:column;
  padding:1.6rem 1.1rem 1.1rem;
  overflow-y:auto;
}
.sidebar-brand{
  display:flex;align-items:center;gap:.6rem;
  font-size:1.22rem;font-weight:800;letter-spacing:-0.03em;
  padding:.25rem .6rem;margin-bottom:2rem;color:var(--text);text-decoration:none;
}
.sidebar-brand .mark{
  width:28px;height:28px;border-radius:9px;background:var(--accent-grad);
  display:flex;align-items:center;justify-content:center;color:var(--accent-contrast);flex-shrink:0;
  box-shadow:0 2px 6px rgba(184,154,69,.4),inset 0 1px 0 rgba(255,255,255,.35);
}
.sidebar-brand .mark svg{width:16px;height:16px}
.sidebar-nav{display:flex;flex-direction:column;gap:.15rem;flex:1}
.sidebar-nav .nav-section-label{
  font-size:.66rem;text-transform:uppercase;letter-spacing:.08em;font-weight:800;
  color:var(--text-secondary);padding:1.2rem .7rem .5rem;opacity:.75;
}
.sidebar-nav .nav-section-label:first-child{padding-top:0}
.sidebar-nav a{
  display:flex;align-items:center;gap:.7rem;
  padding:.6rem .7rem;border-radius:var(--radius-sm);
  color:var(--text);text-decoration:none;font-size:.89rem;font-weight:600;
  transition:background .18s var(--ease-out),color .18s var(--ease-out),transform .1s ease,box-shadow .18s ease;
  position:relative;
}
.sidebar-nav a svg{width:18px;height:18px;flex-shrink:0;color:var(--text-secondary);transition:color .18s ease,transform .18s var(--ease-spring)}
.sidebar-nav a:hover{background:var(--surface-alt)}
.sidebar-nav a:hover svg{transform:translateX(1px)}
.sidebar-nav a:active{transform:scale(.98)}
.sidebar-nav a.active{
  background:var(--accent-grad);color:var(--accent-contrast);
  box-shadow:0 3px 10px -2px rgba(184,154,69,.55),inset 0 1px 0 rgba(255,255,255,.3);
}
.sidebar-nav a.active svg{color:var(--accent-contrast)}
.nav-badge{margin-left:auto;background:var(--danger);color:#fff;font-size:.68rem;font-weight:800;line-height:1;padding:.26rem .46rem;border-radius:999px;flex-shrink:0;box-shadow:0 1px 3px rgba(0,0,0,.25)}
.sidebar-nav a.active .nav-badge{background:rgba(255,255,255,.92);color:#B89A45}
.sidebar-footer{
  border-top:1px solid var(--border);margin-top:.85rem;padding-top:.9rem;
  display:flex;align-items:center;gap:.6rem;padding-left:.5rem;padding-right:.25rem;
}
.sidebar-footer .avatar{
  width:31px;height:31px;border-radius:50%;background:var(--accent-tint);color:var(--accent-text);
  display:flex;align-items:center;justify-content:center;font-size:.8rem;font-weight:800;flex-shrink:0;
  box-shadow:inset 0 0 0 1px rgba(184,154,69,.2);
}
.sidebar-footer .user-name{font-size:.83rem;font-weight:700;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}
.sidebar-footer button{
  background:none;border:none;color:var(--text-secondary);cursor:pointer;
  font-size:.78rem;padding:.42rem;border-radius:var(--radius-sm);flex-shrink:0;
  display:flex;align-items:center;justify-content:center;transition:background .15s ease,color .15s ease;
}
.sidebar-footer button:hover{background:var(--danger-tint);color:var(--danger)}
.sidebar-footer button svg{width:16px;height:16px}

.content{margin-left:var(--sidebar-w);flex:1;min-width:0;padding:2.9rem 3.2rem 4rem;max-width:1060px}

/* ── Bottom nav (mobile) ─────────────────────────────────────────────── */
.bottom-nav{
  display:none;position:fixed;left:0;right:0;bottom:0;z-index:20;
  background:var(--glass-2);backdrop-filter:blur(22px) saturate(1.5);-webkit-backdrop-filter:blur(22px) saturate(1.5);
  border-top:1px solid var(--border);
  /* Zusätzlich zum reinen Safe-Area-Inset noch etwas extra Luft nach unten —
     manche mobile Browser (z. B. Safari-Adressleiste unten) legen ihre eigene,
     nicht per Safe-Area erfasste Bedienleiste über den unteren Rand, wodurch
     die echten Tabs sonst schwer zu treffen sind. */
  padding:.45rem .5rem calc(1.1rem + env(safe-area-inset-bottom));
  box-shadow:0 -8px 24px rgba(30,22,6,.05);
}
.bottom-nav-inner{display:flex;align-items:center;justify-content:center;max-width:560px;margin:0 auto;width:100%}
/* .bn-main ist die "normale", unangetastete 5er-Leiste (Start/Arbeitsplan/
   Abwesenheit/Mitteilungen/Mehr) — exakt wie sie ohne die Erweiterung aussehen
   würde. Die Extra-Tabs stecken in einer separaten Gruppe DANEBEN statt
   INNERHALB dieser Verteilung, damit .bn-main sich beim Auf-/Zuklappen der
   Extra-Gruppe keinen Pixel verschiebt. `flex:1 1 0` auf den Tabs (statt einer
   festen `min-width`) teilt die verfügbare Breite IMMER exakt gleichmäßig auf
   — ein langes Label wie "Mitteilungen" kann dadurch nie mehr einen Nachbar-
   Tab (z. B. "Abwesenheit") aus der Leiste hinausdrücken/verschwinden lassen. */
.bn-main{display:flex;justify-content:space-around;align-items:center;flex:1;min-width:0}
.bottom-nav a,.bottom-nav button{
  position:relative;display:flex;flex-direction:column;align-items:center;gap:.2rem;
  color:var(--text-secondary);text-decoration:none;font-size:.62rem;font-weight:700;
  padding:.4rem .3rem;border-radius:var(--radius-md);
  flex:1 1 0;min-width:0;max-width:88px;
  transition:color .18s var(--ease-out),background .18s var(--ease-out),max-width .3s var(--ease-out),padding .3s var(--ease-out);
  background:none;border:none;font-family:inherit;cursor:pointer;
}
.bottom-nav a span,.bottom-nav button span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.bottom-nav a svg,.bottom-nav button svg{width:22px;height:22px;flex-shrink:0;transition:transform .3s var(--ease-spring)}
.bottom-nav a:active svg,.bottom-nav button:active svg{transform:scale(.88)}
.bottom-nav a.active,.bottom-nav button.active{color:var(--accent-text);background:var(--accent-tint)}
.bottom-nav a.active svg,.bottom-nav button.active svg{transform:translateY(-1px) scale(1.06)}

/* Zusätzliche Tabs (Übersicht/Team/Profil) — eigene Gruppe RECHTS NEBEN
   .bn-main (nicht Teil von dessen Verteilung), stehen immer im DOM, sind aber
   eingeklappt (0 Breite, unsichtbar, nicht klickbar) bis der Nutzer auf "Mehr"
   tippt. Klappt dann direkt in der Leiste rechts von "Mehr" auf, statt als
   Overlay zu erscheinen — bleibt ausgefahren, bis erneut auf "Mehr" getippt
   wird. */
.bn-extra-group{
  display:flex;align-items:center;max-width:0;opacity:0;overflow:hidden;
  transition:max-width .35s var(--ease-out),opacity .22s ease;
}
.bottom-nav-inner.expanded .bn-extra-group{max-width:280px;opacity:1}
/* 8 Icons MIT Textlabel passen auf schmalen Handys nicht nebeneinander (das
   führte zu Umbrüchen/Layoutsprüngen). Lösung: im ausgeklappten Zustand
   schrumpft NUR .bn-main (die ursprünglichen Tabs vor "Mehr") auf reine,
   kompakte Icons ohne Label — die neu aufgeklappte .bn-extra-group behält
   ihre Beschriftung und bekommt dafür feste, kompakte Tab-Breiten plus
   horizontales Scrollen bei Bedarf (unsichtbare Scrollbar), statt Text
   abzuschneiden. Beim erneuten Zuklappen zeigt .bn-main wieder ganz normal
   seine Labels. */
.bottom-nav-inner.expanded .bn-main a,.bottom-nav-inner.expanded .bn-main button{max-width:56px;padding-left:.4rem;padding-right:.4rem}
.bottom-nav-inner.expanded .bn-main a span,.bottom-nav-inner.expanded .bn-main button span{display:none}
.bottom-nav-inner.expanded .bn-extra-group{overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch}
.bottom-nav-inner.expanded .bn-extra-group::-webkit-scrollbar{display:none}
.bottom-nav-inner.expanded .bn-extra-group a,.bottom-nav-inner.expanded .bn-extra-group button{flex:0 0 auto;min-width:60px;max-width:64px;padding-left:.3rem;padding-right:.3rem}
.bottom-nav-inner.expanded .bn-extra-group a span,.bottom-nav-inner.expanded .bn-extra-group button span{font-size:.56rem}

/* ── Mobile (≤860px): eigener Modal-Bottom-Sheet-Stil, kompaktere Karten/
   Typografie, feste 2-Spalten-Stats — fühlt sich nativer an als die 1:1
   verkleinerte Desktop-Ansicht. Rein optisch, keine Funktionsänderung. ──── */
@media (max-width:860px){
  .app-shell{flex-direction:column}
  .sidebar{display:none}
  .content{margin-left:0;padding:1rem 1rem calc(5.6rem + env(safe-area-inset-bottom))}
  .bottom-nav{display:block}

  h1{font-size:1.42rem}
  h2{font-size:1rem}
  .sub{font-size:.85rem;margin-bottom:.7rem}
  input,select,textarea{margin-bottom:.65rem}
  label{margin-bottom:.25rem}

  /* Karten-Kopfzeilen (Titel + Aktions-Button, z. B. "Mitarbeiter" + "+ Mitarbeiter
     anlegen") sind auf Desktop bewusst eine feste Zeile (space-between), auf
     schmalen Handys reicht die Breite dafür aber oft nicht — Titel und Button
     kollidierten/überlappten sich. Auf Mobile daher umbrechen lassen statt in
     einer Zeile zu erzwingen. */
  .card-header-row{flex-wrap:wrap;row-gap:.6rem}
  /* min-width:0 ist hier der eigentliche Fix: Flexbox-Kinder verweigern per
     Default (min-width:auto) das Schrumpfen unter ihre Textbreite, selbst mit
     flex-wrap — ein langer Titel wie "Abwesenheitsanträge" schob sich auf
     schmalen Handys (~320px) dadurch über den Kartenrand hinaus, statt im
     Titel selbst umzubrechen. */
  .card-header-row h1,.card-header-row h2{width:100%;min-width:0;overflow-wrap:break-word}
  .card-header-row{min-width:0}
  .card-header-row > *{min-width:0}

  .card{padding:1.05rem 1rem;border-radius:var(--radius-lg);margin-bottom:.8rem}

  /* .content-Präfix erhöht die Spezifität bewusst über die spätere, im
     Quellcode nachfolgende allgemeine .stat-grid-Regel (Zeile ~522) —
     bei gleicher Spezifität hätte sonst die Reihenfolge im CSS gewonnen,
     nicht die Media Query, und die 2-Spalten-Regel hätte auf Mobile NIE
     gegriffen (auto-fit ist dann je nach Kartenbreite mal 1-, mal
     2-spaltig statt zuverlässig 2 Spalten zu zeigen). */
  .content .stat-grid{grid-template-columns:repeat(2,1fr);gap:.55rem}
  .content .stat-grid.stat-grid-3{grid-template-columns:repeat(3,1fr)}
  .stat{padding:.7rem .55rem}
  .stat .val{font-size:1.25rem}
  .stat-grid-3 .stat .val{font-size:1rem;white-space:nowrap}
  .stat-grid-3 .stat .lbl{font-size:.68rem}
  .intro-text{display:none}

  .clock-hero{padding:.7rem .85rem;gap:.7rem;margin:.5rem 0 .8rem}
  .clock-hero-icon{width:38px;height:38px}
  .clock-hero-time{font-size:1.15rem}


  /* Modals werden zu Bottom-Sheets: fühlt sich auf einem Touch-Gerät deutlich
     natürlicher an als ein zentriertes Desktop-Popup. */
  .modal-backdrop{align-items:flex-end;padding:0}
  .modal-card{
    max-width:100%;width:100%;max-height:92vh;max-height:92dvh;border-radius:var(--radius-xl) var(--radius-xl) 0 0;
    padding:1.1rem 1.1rem calc(1.1rem + env(safe-area-inset-bottom));
    animation:sheetUp .32s var(--ease-out) both;
  }
  .modal-backdrop.closing .modal-card{animation:sheetUp .18s ease reverse both}
  .modal-actions{flex-wrap:wrap;gap:.5rem}
  .modal-actions .btn{flex:1 1 40%}
  .modal-card h3{margin-bottom:.8rem}
}
@keyframes sheetUp{from{opacity:0;transform:translateY(40px)}to{opacity:1;transform:translateY(0)}}

@media (max-width:400px){
  .bottom-nav a,.bottom-nav button{padding:.4rem .3rem}
  .bottom-nav a span,.bottom-nav button span{font-size:.58rem}
}

/* ── Arbeitsplan: Zeitachsen-Raster (Uhrzeiten links, 7 Tage nebeneinander) ─ */
.week-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.15rem;gap:.75rem;flex-wrap:wrap}
.week-nav .week-label{font-weight:700;font-size:.95rem;letter-spacing:-.01em}

.view-switch{display:inline-flex;background:var(--surface-alt);border:1px solid var(--border);border-radius:var(--radius-sm);padding:2px;gap:1px}
.view-switch button{
  background:none;border:none;padding:.42rem .8rem;font-size:.8rem;font-weight:700;
  color:var(--text-secondary);border-radius:8px;cursor:pointer;white-space:nowrap;
  transition:background .2s var(--ease-out),color .2s ease,box-shadow .2s ease;
}
.view-switch button.active{background:var(--surface);color:var(--text);box-shadow:var(--shadow-xs)}

.timegrid-head-row{display:grid;grid-template-columns:34px repeat(7,1fr);gap:0;margin-bottom:.35rem}
.timegrid-head-row .day-head{
  text-align:center;font-size:.62rem;font-weight:700;color:var(--text-secondary);
  cursor:pointer;border-radius:7px;padding:.2rem 0;transition:background .15s ease;
}
.timegrid-head-row .day-head:hover{background:var(--surface-alt)}
.timegrid-head-row .day-head .num{display:block;font-size:.84rem;color:var(--text);font-weight:700;margin-top:1px}
.timegrid-head-row .day-head.is-today{color:var(--accent-text)}
.timegrid-head-row .day-head.is-today .num{color:var(--accent-text)}

.timegrid-scroll{overflow-y:auto;overflow-x:hidden;max-height:620px;border-top:1px solid var(--border);padding:8px 0}
.timegrid{
  display:grid;grid-template-columns:34px repeat(7,1fr);position:relative;
  background-image:linear-gradient(to bottom, var(--border) 1px, transparent 1px);
  background-repeat:repeat-y;
}
.timegrid .time-axis{position:relative;background:var(--surface)}
.timegrid .time-axis .hour-label{
  position:absolute;right:6px;transform:translateY(-50%);
  font-size:.6rem;color:var(--text-secondary);white-space:nowrap;
}
.timegrid .day-col{position:relative;border-left:1px solid var(--border)}

/* "Jetzt"-Linie: rot, über die volle Breite, gleitet minütlich weiter statt zu
   springen (transition:top macht aus dem 60s-Sprung der Ticker-Aktualisierung
   eine sichtbar fließende Bewegung). */
.now-line{position:absolute;left:0;right:0;height:0;border-top:2px solid var(--danger);z-index:5;pointer-events:none;transition:top 1s linear}
.now-line::before{
  content:'';position:absolute;left:29px;top:-4px;width:8px;height:8px;
  border-radius:50%;background:var(--danger);box-shadow:0 0 0 3px rgba(201,82,74,.2);
}

/* Soll: deutlich erkennbare, farbig getönte Fläche mit kräftigerem Rahmen und
   farbigem linkem Akzentstreifen (nur Orientierung, daher weiterhin gestrichelt/
   gepunktet statt eines vollen Blocks wie beim Ist). Der vorherige, fast weiß-
   transparente Look war zu unauffällig — Hintergrund mischt jetzt die
   Schicht-Farbe (currentColor) mit der Kartenfarbe, statt pauschal Weiß. */
.plan-bar{
  position:absolute;left:2px;right:2px;border-radius:6px;overflow:hidden;
  border:2px dashed currentColor;background:color-mix(in srgb, currentColor 20%, var(--surface));
  box-shadow:inset 3px 0 0 currentColor;
  padding:1px 4px;cursor:pointer;z-index:1;line-height:1.15;font-weight:700;
  transition:transform .15s var(--ease-out),box-shadow .15s ease,background .15s ease;
}
.plan-bar:hover{transform:scale(1.03);z-index:3;box-shadow:inset 3px 0 0 currentColor,0 3px 10px rgba(0,0,0,.16)}
.plan-bar .lbl{font-size:.6rem;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.plan-bar .time{font-size:.52rem;font-weight:600;opacity:.9;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.plan-bar.is-self{border-style:dotted}
/* Nachträglich (per genehmigtem Verschiebungsantrag) verschobene Schicht:
   kleines Rotations-Icon in der Ecke statt die Farbcodierung nach Label zu
   überschreiben — bleibt so mit jeder Schicht-Farbe kombinierbar. */
.moved-badge{
  position:absolute;top:0;right:1px;font-size:.55rem;font-weight:900;line-height:1;
  color:var(--accent-contrast);opacity:.8;
}

/* Ist: dicker, durchgezogener Block — liegt über dem Soll und deckt ihn im
   überlappenden Zeitraum ab (tatsächlich gestempelte Zeit gewinnt visuell). */
.ist-block{
  --ist-color:var(--accent);
  position:absolute;left:2px;right:2px;border-radius:5px;overflow:hidden;
  padding:1px 3px;color:var(--accent-contrast);background:var(--ist-color);box-shadow:0 2px 6px rgba(0,0,0,.22);
  cursor:pointer;z-index:2;line-height:1.1;
  transition:transform .15s var(--ease-out),box-shadow .15s ease;
}
.ist-block:hover{transform:scale(1.03);z-index:4;box-shadow:0 4px 12px rgba(0,0,0,.28)}
.ist-block .time{font-size:.54rem;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ist-block.is-open{background:linear-gradient(to bottom, var(--ist-color) 0%, var(--ist-color) 80%, transparent 100%)}

@media (max-width:480px){
  .timegrid-head-row .day-head .num{font-size:.72rem}
  .plan-bar{padding:1px 2px}
  .plan-bar .lbl{font-size:.5rem}
  .ist-block{padding:1px 2px}
  .ist-block .time{font-size:.48rem}
}

/* ── Modal ───────────────────────────────────────────────────────────── */
.modal-backdrop{
  position:fixed;inset:0;background:rgba(24,18,6,.42);backdrop-filter:blur(3px);
  display:flex;align-items:center;justify-content:center;z-index:50;padding:1.25rem;
  animation:fadeIn .18s ease both;
}
.modal-card{max-height:calc(100vh - 2.5rem);max-height:calc(100dvh - 2.5rem);overflow-y:auto;-webkit-overflow-scrolling:touch;position:relative;background:var(--surface);border-radius:var(--radius-xl);padding:1.6rem;max-width:380px;width:100%;box-shadow:var(--shadow-pop);animation:scaleIn .28s var(--ease-out) both}
.modal-close{
  position:absolute;top:.85rem;right:.85rem;width:29px;height:29px;border-radius:50%;
  background:var(--surface-alt);border:none;color:var(--text-secondary);font-size:1.3rem;line-height:1;
  cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;
  transition:background .15s ease,color .15s ease,transform .12s ease;
}
.modal-close:hover{background:var(--border);color:var(--text)}
.modal-close:active{transform:scale(.9)}
.modal-backdrop.closing{animation:fadeIn .16s ease reverse both}
.modal-backdrop.closing .modal-card{animation:scaleIn .16s cubic-bezier(.4,0,.2,1) reverse both}
.modal-card h3{font-size:1.08rem;font-weight:700;letter-spacing:-.01em;margin:0 1.8rem 1.15rem 0}
.modal-actions{display:flex;gap:.6rem;margin-top:.5rem}
.modal-actions .btn{flex:1}


/* ── Mitteilungen ────────────────────────────────────────────────────── */
.ann-list{display:flex;flex-direction:column;gap:.7rem}
.announcement{
  border:1px solid var(--border);border-radius:var(--radius-md);padding:1rem 1.1rem;
  background:var(--surface);cursor:pointer;
  transition:border-color .2s ease,background .2s ease,box-shadow .2s ease,transform .12s ease;
  animation:fadeSlideUp .4s var(--ease-out) both;
}
.announcement:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}
.announcement:active{transform:scale(.99)}
.announcement:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.a-body-preview{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
.announcement:nth-child(1){animation-delay:.03s}
.announcement:nth-child(2){animation-delay:.06s}
.announcement:nth-child(3){animation-delay:.09s}
.announcement:nth-child(n+4){animation-delay:.12s}
.announcement.is-unread{border-color:var(--accent);background:var(--accent-tint)}
.announcement .a-head{display:flex;align-items:center;gap:.6rem;margin-bottom:.2rem}
.announcement .a-title{font-weight:700;font-size:.95rem;flex:1;min-width:0}
.announcement .a-badge{
  background:var(--accent-grad);color:var(--accent-contrast);font-size:.62rem;font-weight:800;
  padding:.16rem .55rem;border-radius:999px;flex-shrink:0;letter-spacing:.03em;text-transform:uppercase;
}
.announcement .a-date{font-size:.72rem;color:var(--text-secondary);margin-bottom:.5rem}
.announcement .a-body{font-size:.87rem;color:var(--text);line-height:1.55;white-space:pre-wrap}

/* Lese-Fortschritt (Admin-Sicht): wie viele Mitarbeiter eine Mitteilung schon
   geöffnet haben, aus announcement_reads berechnet. */
.read-progress{display:flex;align-items:center;gap:.6rem;margin-top:.7rem}
.read-bar{flex:1;height:6px;border-radius:999px;background:var(--bg);overflow:hidden}
.read-bar-fill{height:100%;background:var(--accent-grad);border-radius:999px;transition:width .5s var(--ease-out)}
.read-label{font-size:.72rem;color:var(--text-secondary);white-space:nowrap;flex-shrink:0}

/* ── Profil ──────────────────────────────────────────────────────────── */
.profile-head{display:flex;align-items:center;gap:1.1rem;margin-bottom:.6rem}
.profile-head .avatar-lg{
  width:58px;height:58px;border-radius:50%;background:var(--accent-grad);color:var(--accent-contrast);
  display:flex;align-items:center;justify-content:center;font-size:1.3rem;font-weight:800;flex-shrink:0;
  box-shadow:0 4px 14px rgba(184,154,69,.35),inset 0 1px 0 rgba(255,255,255,.3);
}
.profile-head .name{font-size:1.18rem;font-weight:800;letter-spacing:-.01em}
.profile-head .email{font-size:.85rem;color:var(--text-secondary)}
.info-list{display:flex;flex-direction:column}
.info-list .info-row{display:flex;justify-content:space-between;padding:.7rem 0;border-bottom:1px solid var(--border);font-size:.87rem}
.info-list .info-row:last-child{border-bottom:none}
.info-list .info-row .k{color:var(--text-secondary)}
.info-list .info-row .v{font-weight:700}
.admin-link-list{display:flex;flex-direction:column;gap:.4rem}
.admin-link-list a{
  display:flex;align-items:center;gap:.7rem;padding:.7rem .8rem;border-radius:var(--radius-sm);
  color:var(--text);text-decoration:none;font-size:.88rem;font-weight:700;background:var(--surface-alt);
  border:1px solid var(--border);transition:background .15s ease,border-color .15s ease,transform .12s ease,box-shadow .15s ease;
}
.admin-link-list a:hover{background:var(--surface);border-color:var(--border-strong);box-shadow:var(--shadow-xs);transform:translateY(-1px)}
.admin-link-list a svg{width:18px;height:18px;color:var(--text-secondary)}

/* ── Typography ──────────────────────────────────────────────────────── */
h1{font-size:1.75rem;font-weight:800;letter-spacing:-0.03em;margin:0 0 .3rem}
h2{font-size:1.06rem;font-weight:700;letter-spacing:-.01em;margin:0 0 .9rem;color:var(--text)}
.sub{color:var(--text-secondary);font-size:.9rem;margin:0 0 1.25rem;line-height:1.5}

/* ── Cards ───────────────────────────────────────────────────────────── */
.card{
  background:var(--surface);border-radius:var(--radius-xl);border:1px solid rgba(30,22,6,.045);
  padding:1.8rem;margin-bottom:1.5rem;box-shadow:var(--shadow-card);
  animation:fadeSlideUp .5s var(--ease-out) both;
}
/* Sanft gestaffelter Eintritt der ersten paar Karten pro Seite beim Laden. */
main.content>.card:nth-of-type(1){animation-delay:0s}
main.content>.card:nth-of-type(2){animation-delay:.06s}
main.content>.card:nth-of-type(3){animation-delay:.12s}
main.content>.card:nth-of-type(4){animation-delay:.18s}

/* ── Buttons ─────────────────────────────────────────────────────────── */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.4rem;
  background:var(--accent-grad);color:var(--accent-contrast);border:none;border-radius:var(--radius-sm);
  padding:.7rem 1.3rem;font-size:.9rem;font-weight:700;cursor:pointer;letter-spacing:-.005em;
  box-shadow:0 1px 2px rgba(30,22,6,.06),inset 0 1px 0 rgba(255,255,255,.25);
  text-decoration:none;transition:background .15s var(--ease-out),transform .12s var(--ease-out),box-shadow .15s ease,filter .15s ease;
}
.btn:hover{background:var(--accent-grad-hover);transform:translateY(-1px);box-shadow:0 6px 16px -2px rgba(184,154,69,.45)}
.btn:active{filter:brightness(.94);transform:scale(.97)}
.btn:disabled{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none}
.btn-danger{background:var(--danger);color:#fff}
.btn-danger:hover{background:var(--danger-hover);box-shadow:0 6px 16px -2px rgba(201,82,74,.45)}
.btn-edit{background:var(--edit);color:#fff}
.btn-edit:hover{background:var(--edit-hover);box-shadow:0 6px 16px -2px rgba(79,114,134,.4)}
.btn-gray{background:var(--surface-alt);color:var(--text);border:1px solid var(--border);box-shadow:none}
.btn-gray:hover{background:var(--border);box-shadow:none}
.btn-sm{padding:.42rem .85rem;font-size:.8rem;border-radius:8px}

/* ── Forms ───────────────────────────────────────────────────────────── */
label{display:block;font-size:.8rem;font-weight:700;color:var(--text-secondary);margin-bottom:.35rem}
input,select,textarea{
  width:100%;padding:.68rem .85rem;border:1px solid var(--border);border-radius:var(--radius-sm);
  font-size:.9rem;margin-bottom:.9rem;font-family:inherit;background:var(--surface-alt);color:var(--text);
  transition:border-color .12s ease,box-shadow .12s ease,background .12s ease;
  box-sizing:border-box;
}
/* iOS Safari lässt "datetime-local"/"date"-Felder (Datum + Uhrzeit-Segmente
   + Kalender-Icon) nicht zuverlässig auf die gesetzte Breite schrumpfen —
   das native Eigen-Styling beansprucht dabei mehr Platz, als die Box hat,
   und ragt über den Rand hinaus (z. B. im "Eintrag anlegen"-Modal bei Start/
   Ende, während "Pause"-Feld daneben korrekt endet). -webkit-appearance:none
   entfernt dieses Eigen-Styling; Tippen öffnet weiterhin denselben nativen
   Picker. */
input[type="datetime-local"],input[type="date"],input[type="time"],input[type="month"]{
  -webkit-appearance:none;appearance:none;
}
@media (max-width:480px){
  input[type="datetime-local"]{font-size:.82rem;padding-left:.55rem;padding-right:.3rem}
}
input:hover,select:hover,textarea:hover{border-color:var(--border-strong)}
input:focus,select:focus,textarea:focus{
  outline:none;border-color:var(--accent);background:var(--surface);box-shadow:0 0 0 3px rgba(210,183,95,.22);
}
/* flex-wrap + min-width:0 beheben den klassischen Flexbox-Überlauf: ohne das
   verweigern Kinder (Selects/Inputs mit langem Inhalt) das Schrumpfen unter
   ihre Inhaltsbreite und sprengen den Container, statt umzubrechen — genau
   das war die Ursache für Text, der bei vielen Admin-Formularen/Filterzeilen
   über den Rand hinauslief. */
.row-inline{display:flex;flex-wrap:wrap;gap:.85rem}
.row-inline > *{flex:1 1 160px;min-width:0}

/* Für Felder, die IMMER nebeneinander bleiben sollen (z. B. Von/Bis-Datum),
   statt bei zu wenig Platz umzubrechen wie .row-inline es bewusst tut.
   CSS-Grid mit fester 2-Spalten-Aufteilung + min-width:0 auf den Kindern
   erzwingt das Nebeneinander auch dann, wenn ein natives <input type="date">
   auf iOS eine größere intrinsische Mindestbreite hat, als noch Platz ist —
   die Felder schrumpfen dann eben, statt umzubrechen. */
/* minmax(0,1fr) statt nur 1fr: Safari respektiert bei reinem "1fr" das
   Schrumpfen von Grid-Kindern nicht zuverlässig (bekannter WebKit-Bug) —
   ohne minmax(0,...) blieben die nativen <input type="date">-Felder auf
   iOS in ihrer eigenen Mindestbreite und überlappten sich dadurch, obwohl
   die Grid-Spalten selbst korrekt schmaler berechnet wurden. */
/* Explizites calc()-Fixmaß statt Grid/fr: bei manchen iOS-Safari-Versionen
   wird die Breite von Grid-Spalten mit nativen <input type="date">-Kindern
   trotz minmax(0,1fr) nicht zuverlässig neu berechnet — die Felder blieben
   dann bei ihrer alten/intrinsischen Breite und überlappten sich weiterhin
   in der Mitte. flex mit fester calc(50% - gap/2)-Basis (kein grow/shrink)
   ist deterministisch und hängt nicht von der fr/minmax-Auflösung der
   jeweiligen Engine ab. */
.row-2col{display:flex;gap:.4rem}
.row-2col > *{flex:0 0 calc(50% - .2rem);min-width:0;max-width:calc(50% - .2rem)}
/* KEIN overflow:hidden auf dem Input selbst: iOS Safari respektiert dabei
   den border-radius des Feldes nicht (bekannter WebKit-Rendering-Bug bei
   nativen Formularelementen) — das Feld wurde dadurch eckig abgeschnitten
   statt die Ecken rund zu behalten. Stattdessen wird die Schrift/das Padding
   klein genug gemacht, dass das native Datums-Widget gar nicht erst
   schrumpfen/clippen muss. */
/* -webkit-appearance:none entfernt das native iOS-Eigen-Styling des
   Datumsfelds (das reserviert intern Platz für Icon/Segmente unabhängig von
   der gesetzten CSS-Breite und ignoriert dabei die Box — das war vermutlich
   die eigentliche Ursache der Überlappung, nicht die Grid/Flex-Berechnung
   selbst). Tippen öffnet weiterhin denselben nativen Datums-Picker. */
.row-2col input{min-width:0;width:100%;border-radius:var(--radius-sm);-webkit-appearance:none;appearance:none}
@media (max-width:480px){
  .row-2col input[type="date"]{font-size:.68rem;padding-left:.35rem;padding-right:.15rem}
}

/* ── Tables ──────────────────────────────────────────────────────────── */
/* Breite Tabellen (mit Inline-Inputs o. Ä.) laufen auf schmalen Mobile-
   Viewports sonst über den Rand hinaus, statt horizontal zu scrollen.
   :has(table) statt :has(> table), da manche Tabellen (z. B. admin/zeiten.html)
   zusätzlich in einen .screen-only/.print-only-Wrapper verschachtelt sind. */
.card:has(table){overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:.86rem}
th,td{padding:.75rem .65rem;text-align:left;border-bottom:1px solid var(--border)}
th{color:var(--text-secondary);font-weight:700;font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;border-bottom-color:var(--border-strong)}
tbody tr:last-child td{border-bottom:none}
tbody tr{transition:background .15s ease}
tbody tr:hover{background:var(--surface-alt)}
/* Ungelesene Benachrichtigungen (admin/benachrichtigungen.html) sollen sofort
   auffallen, nicht nur durch fett — Akzent-Balken links + leichte Einfärbung. */
tbody tr.is-unseen{font-weight:600;background:var(--accent-tint);box-shadow:inset 3px 0 0 var(--accent)}
tbody tr.is-unseen:hover{background:var(--accent-tint)}
/* Stornierte Nachträge (admin/benachrichtigungen.html) bleiben sichtbar statt zu
   verschwinden — rot + durchgestrichen macht auf einen Blick klar, dass der
   Zeiteintrag storniert wurde. */
tbody tr.is-cancelled{color:var(--danger);text-decoration:line-through}
tbody tr.is-cancelled:hover{background:var(--danger-tint)}

/* Mehrere Buttons in einer Tabellenzelle (z. B. Bearbeiten/Deaktivieren/PW
   zurücksetzen in admin/index.html) — sauber untereinander statt zufällig
   umzubrechen, mit einheitlicher Breite/Ausrichtung. */
.row-actions{display:flex;flex-direction:column;align-items:stretch;gap:.4rem;min-width:9.5rem}
.row-actions .btn{white-space:nowrap;justify-content:center}

/* Zwei bis drei Buttons nebeneinander in einer Tabellenzelle (z. B. Bearbeiten/
   Löschen, Genehmigen/Ablehnen) — bleiben als Gruppe zusammen und brechen bei
   Platzmangel gemeinsam um, statt mitten im Button-Text umzubrechen. */
.row-actions-inline{display:flex;flex-wrap:wrap;gap:.4rem;justify-content:flex-end}
.row-actions-inline .btn{white-space:nowrap}

/* ── Badges ──────────────────────────────────────────────────────────── */
.badge{display:inline-block;padding:.28rem .68rem;border-radius:999px;font-size:.73rem;font-weight:700;letter-spacing:-.005em}
.badge-beantragt{background:var(--warning-tint);color:var(--warning-text)}
.badge-genehmigt{background:var(--success-tint);color:var(--success-text)}
.badge-abgelehnt{background:var(--danger-tint);color:var(--danger-text)}
.badge-gray{background:var(--surface-alt);color:var(--text-secondary);border:1px solid var(--border)}

/* ── Stats ───────────────────────────────────────────────────────────── */
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.9rem;margin-bottom:.5rem}
.stat{
  background:var(--surface-alt);border:1px solid var(--border);border-radius:var(--radius-md);
  padding:1.15rem 1rem;text-align:center;animation:scaleIn .4s var(--ease-out) both;
  transition:transform .15s ease,box-shadow .15s ease;
  min-width:0;overflow:hidden;
}
.stat:hover{transform:translateY(-2px);box-shadow:var(--shadow-xs)}
.stat:nth-child(1){animation-delay:.05s}
.stat:nth-child(2){animation-delay:.1s}
.stat:nth-child(3){animation-delay:.15s}
.stat:nth-child(4){animation-delay:.2s}
.stat .val{font-size:1.65rem;font-weight:800;letter-spacing:-0.03em;color:var(--text);font-variant-numeric:tabular-nums}
.stat .val.neg{color:var(--danger)}
.stat .lbl{font-size:.76rem;color:var(--text-secondary);margin-top:.25rem;font-weight:600}

/* ── Messages ────────────────────────────────────────────────────────── */
.msg{padding:.7rem .95rem;border-radius:var(--radius-sm);font-size:.85rem;margin-bottom:1.1rem;font-weight:600;animation:fadeSlideUp .25s var(--ease-out) both}
.msg-ok{background:var(--success-tint);color:var(--success-text)}
.msg-err{background:var(--danger-tint);color:var(--danger-text)}

/* ── Stempeluhr ──────────────────────────────────────────────────────── */
.clock-hero{
  display:flex;align-items:center;gap:1.1rem;margin:.9rem 0 1.4rem;
  padding:1.1rem 1.2rem;background:var(--surface-alt);border:1px solid var(--border);border-radius:var(--radius-md);
}
.clock-hero-icon{
  width:50px;height:50px;border-radius:50%;flex-shrink:0;
  background:var(--surface);color:var(--text-secondary);border:1px solid var(--border);
  display:flex;align-items:center;justify-content:center;transition:background .2s ease,color .2s ease,border-color .2s ease;
}
.clock-hero-icon svg{width:23px;height:23px}
.clock-hero-icon.active{background:var(--success-tint);color:var(--success-text);border-color:transparent;animation:pulseGlow 2.4s ease-in-out infinite}
.clock-hero-info{flex:1;min-width:0}
.clock-hero-status{font-size:.82rem;color:var(--text-secondary);font-weight:700}
.clock-hero-time{font-size:1.4rem;font-weight:800;color:var(--text);letter-spacing:-.02em;margin-top:.1rem;font-variant-numeric:tabular-nums}

/* ── Auth pages (Login, Registrierung, Passwort vergessen/zurücksetzen, E-Mail bestätigen) ──
   Zweigeteilt: links das Formular, rechts eine goldene Fläche mit laufender Uhr (assets/auth.js).
   Schmal (Handy): Uhr als niedriger Kopfbereich, Formular als Blatt darunter. */
.auth-shell{
  min-height:100vh;display:grid;grid-template-columns:minmax(380px,520px) 1fr;
  background:var(--surface);
}
.auth-card{
  grid-column:1;grid-row:1;position:relative;display:flex;flex-direction:column;
  width:100%;min-height:100vh;padding:2.6rem clamp(1.6rem,5vw,4rem) 1.6rem;
  background:var(--surface);border:0;border-radius:0;box-shadow:none;
}
.auth-card>*{max-width:420px;width:100%}
.auth-logo{display:flex;flex-direction:row;align-items:center;gap:.7rem;margin:0 0 2.6rem}
.auth-logo .mark{width:40px;height:40px;border-radius:12px;background:var(--accent-grad);display:flex;align-items:center;justify-content:center;color:var(--accent-contrast);box-shadow:0 6px 16px rgba(184,154,69,.38),inset 0 1px 0 rgba(255,255,255,.3)}
.auth-logo .mark svg{width:22px;height:22px}
.auth-logo h1{margin:0;font-size:1.3rem;font-weight:800;letter-spacing:-.02em}
.auth-h{margin:0 0 .35rem;font-size:1.95rem;line-height:1.15;font-weight:800;letter-spacing:-.025em}
.auth-sub{margin:0 0 1.8rem;color:var(--text-secondary);font-size:.96rem;line-height:1.5}
.auth-card label{font-size:.78rem;font-weight:700;color:var(--text-secondary);letter-spacing:.01em}
.auth-card input[type=text],.auth-card input[type=email],.auth-card input[type=password]{padding:.9rem 1rem;border-radius:var(--radius-md);font-size:1rem}
.auth-card .btn{padding:.95rem 1rem;border-radius:14px;font-size:1rem;font-weight:700}
.auth-card form .btn,.auth-card .btn[style*="width"]{box-shadow:0 10px 22px -10px rgba(201,162,76,.85)}
.switch-link{display:block;text-align:center;margin-top:1.4rem;font-size:.9rem;color:var(--text-secondary)}
.switch-link a{font-weight:700}
.auth-card .legal-links{margin-top:auto;padding-top:2.2rem;text-align:left}
.pw-wrap{position:relative}
.pw-wrap input{padding-right:5.2rem!important}
.pw-toggle{position:absolute;right:.55rem;top:50%;transform:translateY(-50%);margin-top:-.45rem;background:none;border:0;font:inherit;font-size:.78rem;font-weight:700;color:var(--accent-text);cursor:pointer;padding:.35rem .5rem;border-radius:8px}
.pw-toggle:hover{background:var(--accent-tint)}
.caps-hint{display:none;margin:-.55rem 0 .9rem;font-size:.78rem;font-weight:600;color:var(--warning-text)}
.caps-hint.on{display:block}
.theme-btn{position:absolute;top:2.4rem;right:clamp(1.2rem,4vw,2.4rem);width:40px;height:40px;border-radius:12px;border:1px solid var(--border);background:var(--surface-alt);color:var(--text-secondary);cursor:pointer;display:grid;place-items:center;max-width:none;padding:0}
.theme-btn:hover{color:var(--text);border-color:var(--border-strong)}
.theme-btn svg{width:19px;height:19px}
.theme-btn .i-sun{display:none}
:root[data-theme="dark"] .theme-btn .i-sun{display:block}
:root[data-theme="dark"] .theme-btn .i-moon{display:none}

.auth-hero{
  grid-column:2;grid-row:1;position:relative;overflow:hidden;display:grid;place-items:center;min-height:100vh;
  background:radial-gradient(1200px 700px at 30% 18%,#F7E9BE 0%,#E9D08A 36%,#B98F3E 100%);color:#2E2510;
}
.auth-hero::before{content:"";position:absolute;inset:0;background:repeating-radial-gradient(circle at 50% 52%,rgba(255,255,255,.13) 0 1px,transparent 1px 46px)}
:root[data-theme="dark"] .auth-hero{background:radial-gradient(1200px 700px at 30% 18%,#5B4718 0%,#3A2E12 38%,#1B150A 100%);color:#F3ECDE}
:root[data-theme="dark"] .auth-hero::before{background:repeating-radial-gradient(circle at 50% 52%,rgba(226,196,118,.07) 0 1px,transparent 1px 46px)}
.hero-claim{position:absolute;top:2.8rem;left:3rem;right:3rem;max-width:420px;margin:0;font-size:1.55rem;font-weight:800;letter-spacing:-.02em;line-height:1.25}
.hero-clock{position:relative;width:min(330px,56%);aspect-ratio:1;border-radius:50%;background:#FFFDF9;box-shadow:0 40px 80px -20px rgba(60,40,0,.5),inset 0 0 0 10px #F4EEE1,inset 0 0 0 11px #E3D9C4}
:root[data-theme="dark"] .hero-clock{background:#1D1A13;box-shadow:0 40px 80px -20px rgba(0,0,0,.7),inset 0 0 0 10px #26221A,inset 0 0 0 11px #4B4231}
.hero-clock .tk{position:absolute;left:50%;top:0;width:3px;height:100%;margin-left:-1.5px;transform:rotate(calc(var(--r)*1deg))}
.hero-clock .tk::before{content:"";position:absolute;top:7%;left:0;width:3px;height:4.2%;border-radius:2px;background:#CBBB90}
.hero-clock .tk.m::before{height:6.8%;background:#2E2510}
:root[data-theme="dark"] .hero-clock .tk::before{background:#6B5E3F}
:root[data-theme="dark"] .hero-clock .tk.m::before{background:#E6CB7E}
.hero-clock .hd{position:absolute;left:50%;bottom:50%;transform-origin:50% 100%;border-radius:4px;background:#2E2510}
:root[data-theme="dark"] .hero-clock .hd{background:#F3ECDE}
.hero-clock .hd.h{width:2.4%;height:24%;margin-left:-1.2%;transform:rotate(var(--hr,0deg))}
.hero-clock .hd.mn{width:1.6%;height:35%;margin-left:-.8%;transform:rotate(var(--mr,0deg))}
.hero-clock .hd.s{width:.7%;height:39%;margin-left:-.35%;background:#C9524A!important;animation:heroSec 60s steps(60,end) infinite}
@keyframes heroSec{from{transform:rotate(0)}to{transform:rotate(360deg)}}
.hero-clock .dot{position:absolute;left:50%;top:50%;width:5%;height:5%;margin:-2.5%;border-radius:50%;background:#2E2510;border:3px solid #C9524A}
:root[data-theme="dark"] .hero-clock .dot{background:#F3ECDE}
.hero-chip{position:absolute;display:flex;align-items:center;gap:.7rem;padding:.75rem 1rem;border-radius:16px;font-size:.82rem;line-height:1.3;color:#211D16;background:rgba(255,253,249,.92);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-shadow:0 14px 30px -10px rgba(60,40,0,.42);animation:heroFloat 7s ease-in-out infinite}
.hero-chip b{display:block;font-size:.95rem}
.hero-chip i{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;font-style:normal;font-weight:800;flex:none;background:#E7F7EC;color:#1C7A3D}
.hero-chip.c2 i{background:#FBF3DC;color:#8E7226}
.hero-chip.c3 i{background:#E8EEF2;color:#4F7286}
:root[data-theme="dark"] .hero-chip{background:rgba(38,34,26,.9);color:#F3ECDE;box-shadow:0 14px 30px -10px rgba(0,0,0,.6)}
.hero-chip.c1{left:9%;top:17%}
.hero-chip.c2{right:7%;top:31%;animation-delay:-2.3s}
.hero-chip.c3{left:13%;bottom:13%;animation-delay:-4.6s}
@keyframes heroFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}
.hero-stamp{position:absolute;right:11%;bottom:12%;border:3px solid currentColor;border-radius:10px;padding:.35rem .85rem;font-weight:800;letter-spacing:.12em;font-size:.9rem;transform:rotate(-8deg);opacity:.78}
.auth-hero.stamped .hero-stamp{animation:heroStamp .5s var(--ease-spring) both}
@keyframes heroStamp{0%{opacity:0;transform:rotate(-8deg) scale(2.6)}60%{opacity:1;transform:rotate(-8deg) scale(.94)}100%{opacity:1;transform:rotate(-8deg) scale(1)}}
.auth-hero.stamped .hero-clock{animation:heroThud .5s var(--ease-out)}
@keyframes heroThud{40%{transform:translateY(6px) scale(.985)}100%{transform:none}}

@media (max-width:900px){
  .auth-shell{display:flex;flex-direction:column;background:var(--bg)}
  .auth-hero{order:-1;min-height:0;height:210px;grid-column:auto}
  .hero-claim,.hero-chip{display:none}
  .hero-clock{width:132px;margin-top:-6px}
  .hero-clock .tk::before{width:2px}
  .hero-stamp{right:7%;bottom:auto;top:46%;font-size:.7rem;padding:.25rem .6rem;opacity:0}
  .auth-card{min-height:calc(100vh - 182px);flex:1;margin-top:-28px;border-radius:28px 28px 0 0;padding:1.8rem 1.5rem 1.4rem;box-shadow:0 -10px 30px -12px rgba(30,22,6,.25);z-index:1}
  .auth-card>*{max-width:none}
  .auth-logo{margin-bottom:1.4rem}
  .auth-h{font-size:1.65rem}
  .auth-sub{margin-bottom:1.3rem}
  .theme-btn{top:1.5rem;right:1.2rem}
  .auth-card .legal-links{padding-top:1.6rem}
}
@media (min-width:901px) and (max-width:1100px){.hero-chip.c2{right:3%}.hero-claim{font-size:1.3rem}}

/* Eigene Vorschlagsliste fürs Firmen-Feld beim Login statt <datalist> — die
   wird von iOS Safari gar nicht unterstützt (lief nur am Laptop/Desktop). */
.suggest-list{
  position:absolute;left:0;right:0;top:calc(100% - .75rem);z-index:5;
  background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);
  box-shadow:var(--shadow-md);max-height:220px;overflow-y:auto;
}
.suggest-item{padding:.65rem .85rem;font-size:.9rem;cursor:pointer}
.suggest-item:hover{background:var(--surface-alt)}
.suggest-item+.suggest-item{border-top:1px solid var(--border)}

/* Update-Hinweis-Banner (siehe startUpdateWatcher() in app.js) — schwebt
   über der Bottom-Nav, damit er auf Mobile/Home-Bildschirm-PWA nicht mit ihr
   kollidiert, und ist auf Desktop unten mittig zentriert. */
@keyframes updateBannerIn{from{opacity:0;transform:translateX(-50%) translateY(40px)}to{opacity:1;transform:translateX(-50%) translateY(0)}}
.update-banner{
  position:fixed;left:50%;transform:translateX(-50%);
  bottom:calc(5.6rem + env(safe-area-inset-bottom));z-index:30;
  display:flex;align-items:center;gap:.85rem;
  background:var(--text);color:var(--surface);
  padding:.75rem .8rem .75rem 1.1rem;border-radius:999px;
  box-shadow:var(--shadow-pop);font-size:.86rem;font-weight:600;
  animation:updateBannerIn .3s var(--ease-out) both;white-space:nowrap;
}
.update-banner button{
  background:var(--accent-grad);color:var(--accent-contrast);border:none;
  padding:.5rem .9rem;border-radius:999px;font-weight:700;font-size:.84rem;
  cursor:pointer;font-family:inherit;flex-shrink:0;
}
@media (min-width:861px){.update-banner{bottom:1.5rem}}

/* ── Team-Übersicht (wer arbeitet wann) ──────────────────────────────── */
.team-day-list{display:flex;flex-direction:column;gap:.7rem}
.team-day{
  border:1px solid var(--border);border-radius:var(--radius-md);padding:.9rem 1.05rem;
  animation:fadeSlideUp .4s var(--ease-out) both;transition:box-shadow .15s ease;
}
.team-day.is-today{border-color:var(--accent);background:var(--accent-tint);box-shadow:var(--shadow-xs)}
.team-day-head{font-weight:700;font-size:.85rem;margin-bottom:.5rem;color:var(--text)}
.team-day.is-today .team-day-head{color:var(--accent-text)}
.team-entry{display:flex;justify-content:space-between;gap:.6rem;font-size:.85rem;padding:.4rem 0;border-top:1px solid var(--border)}
.team-entry:first-of-type{border-top:none}
.team-entry-name{font-weight:700}
.team-entry-time{color:var(--text-secondary);white-space:nowrap}
.team-entry-empty{color:var(--text-secondary);font-style:italic;border-top:none}
.team-entry-absence .team-entry-time{color:var(--accent-text);font-weight:700}

/* ── Konflikt-/Info-Hinweise bei der Selbstplanung ────────────────────── */
.warn-box{padding:.68rem .95rem;border-radius:var(--radius-sm);font-size:.82rem;margin-bottom:1rem;font-weight:600;animation:fadeSlideUp .25s var(--ease-out) both}
.warn-box-info{background:var(--warning-tint);color:var(--warning-text)}
.warn-box-danger{background:var(--danger-tint);color:var(--danger-text)}
/* Kompakter, ruhiger Hinweis in Modals statt der orangefarbenen warn-box:
   kleines Info-Icon + eine kurze Zeile, neutrale Farben. */
.modal-hint{display:flex;align-items:flex-start;gap:.55rem;padding:.6rem .75rem;margin-bottom:1rem;border-radius:var(--radius-sm);background:var(--surface-alt);border:1px solid var(--border);font-size:.78rem;line-height:1.4;color:var(--text-secondary)}
.modal-hint svg{width:16px;height:16px;flex-shrink:0;margin-top:.1rem;color:var(--accent-text)}
.modal-hint strong{color:var(--text);font-weight:700}

/* ── Überstunden/Saldo-Hervorhebung ────────────────────────────────────── */
.saldo-inline{font-weight:800}
.saldo-inline.pos{color:var(--success-text)}
.saldo-inline.neg{color:var(--danger)}

/* ── Monatsübersicht: Kalender-Wochenraster ───────────────────────────── */
.month-cal-head{display:grid;grid-template-columns:repeat(7,1fr);gap:5px;margin-bottom:.35rem}
.month-cal-head-cell{text-align:center;font-size:.66rem;font-weight:700;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em}
.month-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}
.month-day{
  background:var(--surface-alt);border:1px solid transparent;border-radius:var(--radius-sm);padding:.5rem .45rem;min-height:66px;
  display:flex;flex-direction:column;transition:background .2s ease,opacity .2s ease,border-color .2s ease;
  animation:fadeIn .3s ease both;
  /* Grid-Kinder haben per Default min-width:auto — ein langes, nicht
     umbrechendes Label wie "Urlaub (offen)" würde die 7er-Spalte sonst über
     ihren 1fr-Anteil hinaus aufblähen und die ganze Kalenderwoche über den
     rechten Rand hinausschieben. min-width:0 erlaubt der Spalte zu schrumpfen,
     overflow:hidden kappt den Rest sauber statt die Karte zu sprengen. */
  min-width:0;overflow:hidden;
}
.month-day.is-other-month{opacity:.3}
.month-day.is-weekend{background:var(--bg-weekend)}
.month-day.is-today{box-shadow:0 0 0 2px var(--accent) inset;border-color:transparent}
.month-day.is-clickable{cursor:pointer}
.month-day.is-clickable:hover{background:var(--border);border-color:var(--border-strong)}
.month-day.is-clickable:active{transform:scale(.97)}
.month-day-num{font-size:.74rem;font-weight:700;color:var(--text)}
.month-day.is-other-month .month-day-num{color:var(--text-secondary)}
.month-day-hours{font-size:.64rem;color:var(--text-secondary);margin-top:.15rem;font-variant-numeric:tabular-nums;text-align:center}
/* Fortschritts-Ring statt Balken: kompakter und auf einen Blick lesbar, wie
   nah ein Tag am Tagesziel dran ist (voll = Ziel erreicht/überschritten). */
.day-ring{width:26px;height:26px;display:block;margin:auto auto 0;transform:rotate(-90deg)}
.day-ring-bg{fill:none;stroke:var(--border-strong);stroke-width:3}
.day-ring-fill{fill:none;stroke:var(--accent);stroke-width:3;stroke-linecap:round;transition:stroke-dashoffset .35s var(--ease-out)}
.day-ring-fill.over{stroke:var(--success-text)}
.month-day-absence{font-size:.66rem;font-weight:700;margin-top:auto;line-height:1.2;overflow-wrap:break-word}
.month-day.is-absence-urlaub{background:var(--accent-tint)}
.month-day.is-absence-urlaub .month-day-absence{color:var(--accent-text)}
.month-day.is-absence-krank{background:var(--danger-tint)}
.month-day.is-absence-krank .month-day-absence{color:var(--danger-text)}
.month-day.is-absence-sonstiges .month-day-absence{color:var(--text-secondary)}
.month-day.is-pending{opacity:.75}
@media (max-width:480px){
  .month-day{min-height:50px;padding:.35rem .3rem}
  .month-day-num{font-size:.66rem}
  .day-ring{width:20px;height:20px}
  .month-day-hours,.month-day-absence{font-size:.58rem}
  .month-cal-head-cell{font-size:.58rem}
}

/* ── Admin-Benachrichtigungen: Feed-Karten statt dichter Tabellen ───────
   Zwei separate Tabellen (Schicht-Verschiebungen, Nachträge) mit vielen
   Spalten waren auf Mobile unlesbar und wirkten unübersichtlich. Jetzt eine
   Feed-Liste aus einzelnen Karten pro Eintrag: Icon links, Inhalt in der
   Mitte, Aktionen rechts (bricht auf Mobile automatisch untereinander um). */
.notif-count{background:var(--danger);color:#fff;font-size:.72rem;font-weight:800;padding:.24rem .6rem;border-radius:999px;flex-shrink:0}
.notif-list{display:flex;flex-direction:column;gap:.7rem}
.notif-empty{color:var(--text-secondary);text-align:center;padding:1.5rem}
.notif-item{
  display:flex;align-items:flex-start;gap:.85rem;padding:.9rem 1rem;
  background:var(--surface-alt);border:1px solid var(--border);border-radius:var(--radius-md);
  transition:background .15s ease,box-shadow .15s ease;
}
.notif-item.is-unseen{background:var(--accent-tint);border-color:transparent;box-shadow:inset 3px 0 0 var(--accent)}
.notif-item.is-cancelled{opacity:.6}
.notif-item.is-cancelled .notif-title{text-decoration:line-through}
.notif-icon{
  width:38px;height:38px;border-radius:50%;background:var(--surface);border:1px solid var(--border);
  display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--text-secondary);
}
.notif-item.is-unseen .notif-icon{background:var(--accent-grad);color:var(--accent-contrast);border-color:transparent}
.notif-icon svg{width:19px;height:19px}
.notif-body{flex:1;min-width:0}
.notif-title{font-weight:800;font-size:.94rem;display:flex;align-items:center;flex-wrap:wrap;gap:.3rem}
.notif-shift-change{display:flex;align-items:center;gap:.6rem;font-size:.82rem;color:var(--text);margin-top:.4rem;line-height:1.35}
.notif-arrow{color:var(--text-secondary);flex-shrink:0;display:flex}
.notif-arrow svg{width:16px;height:16px}
.notif-note{font-size:.82rem;color:var(--text-secondary);margin-top:.35rem;overflow-wrap:break-word}
.notif-meta{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;margin-top:.55rem}
.notif-by{font-size:.74rem;color:var(--text-secondary)}
.notif-actions{display:flex;flex-direction:column;gap:.4rem;flex-shrink:0}
@media (max-width:640px){
  .notif-item{flex-wrap:wrap}
  /* flex-wrap statt starrer Einzeiler: bei 3+ Buttons (z. B. Bearbeiten/
     Deaktivieren/PW zurücksetzen) reichte eine Zeile auf schmalen Handys
     nicht — die Buttons wurden gequetscht bis der letzte über den Kartenrand
     hinausragte. Jetzt bricht der dritte Button einfach in eine zweite
     Zeile um, statt die Kartenbreite zu sprengen. */
  .notif-actions{flex-direction:row;flex-wrap:wrap;width:100%;margin-top:.3rem}
  .notif-actions .btn{flex:1 1 auto;min-width:6.5rem}
  .notif-shift-change{flex-wrap:wrap}
}

/* ── Start: "Nächste Schicht"-Karte ─────────────────────────────────────
   War nur ein reiner Textsatz ("Schicht — Datum, Zeit bis Zeit") ohne jede
   visuelle Struktur. Jetzt: Datums-Kachel links (wie ein Mini-Kalenderblatt)
   + Bezugstag ("Heute"/"Morgen"/Wochentag) + Uhrzeit mit Icon + Schicht-Label
   als Badge — auf einen Blick erfassbar statt einen Satz lesen zu müssen. */
.next-shift{display:flex;align-items:center;gap:1rem}
.next-shift-date{
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
  width:56px;height:56px;border-radius:var(--radius-md);background:var(--accent-grad);color:var(--accent-contrast);
  box-shadow:var(--shadow-xs);
}
.next-shift-day{font-weight:800;font-size:.98rem;text-align:center;line-height:1.15}
.next-shift-body{min-width:0}
.next-shift-when{font-weight:800;font-size:1.05rem;color:var(--text)}
.next-shift-time{display:flex;align-items:center;gap:.4rem;color:var(--text-secondary);font-size:.88rem;margin:.25rem 0 .5rem}
.next-shift-time svg{width:16px;height:16px;flex-shrink:0}
.next-shift-empty{display:flex;align-items:center;gap:.6rem;color:var(--text-secondary);padding:.3rem 0}
.next-shift-empty svg{width:22px;height:22px;flex-shrink:0;opacity:.6}

/* ── Admin-Zeiten: kompakte Zeilen statt Karten auf Mobile ──────────────
   Volle Karten (wie bei Abwesenheiten/Mitarbeitern) wären hier zu viel
   Scroll-Strecke, da pro Monat leicht 20-30+ Zeiteinträge zusammenkommen —
   Tabelle bleibt auf Desktop (kompakt, viele Zeilen auf einen Blick), auf
   Mobile schlanke gestapelte Zeilen statt Horizontal-Scroll. Umschaltung
   rein per CSS, .desktop-table/.mobile-list werden beide von JS befüllt. */
.mobile-list{display:none}
.zt-row{
  display:flex;align-items:center;gap:.75rem;padding:.7rem 0;border-bottom:1px solid var(--border);
}
.zt-row:last-child{border-bottom:none}
.zt-row-main{flex:1;min-width:0}
.zt-row-name{font-weight:700;font-size:.9rem}
.zt-row-time{font-size:.84rem;color:var(--text);margin-top:.15rem}
.zt-row-sub{font-size:.78rem;color:var(--text-secondary);margin-top:.1rem;overflow-wrap:break-word}
.zt-row-actions{display:flex;flex-direction:column;gap:.35rem;flex-shrink:0}
@media (max-width:860px){
  .desktop-table{display:none}
  .mobile-list{display:block}
}

/* ── Admin-Mitarbeiterverwaltung: Karten statt Tabelle ───────────────────
   Die Tabelle (Name, E-Mail, Rolle, Soll h/W, Urlaub, Status, Aktionen) war
   auf Mobile nur mit Horizontal-Scroll nutzbar — genau das wollte der Nutzer
   nicht mehr. Eine Karte pro Mitarbeiter zeigt alles direkt untereinander,
   ohne seitliches Scrollen, in jeder Fensterbreite. */
.user-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1.1rem}
.user-card{animation:fadeIn .35s var(--ease-out) both}
.user-card.is-inactive{opacity:.6}
.user-card-head{display:flex;align-items:center;gap:.75rem;margin-bottom:.85rem}
.user-avatar{
  width:42px;height:42px;border-radius:50%;background:var(--accent-grad);color:var(--accent-contrast);
  display:flex;align-items:center;justify-content:center;font-weight:800;font-size:.9rem;flex-shrink:0;box-shadow:var(--shadow-xs);
}
.user-card-headtext{min-width:0;flex:1}
.user-name{font-weight:800;font-size:1rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.user-email{font-size:.8rem;color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.user-card-meta{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.7rem}
.user-meta-item{font-size:.8rem;color:var(--text-secondary)}

/* ── Admin-Abwesenheitsanträge: dieselben Feed-Karten wie bei den
   Benachrichtigungen, nur mit Checkbox links für die Mehrfachauswahl
   (Bulk-Genehmigen/-Ablehnen). ─────────────────────────────────────────── */
.absence-bulkbar{
  display:flex;align-items:center;justify-content:space-between;gap:.8rem;flex-wrap:wrap;
  background:var(--accent-tint);border:1px solid transparent;box-shadow:inset 3px 0 0 var(--accent);
  animation:fadeIn .2s ease both;
}
.absence-bulkbar-label{font-weight:700;color:var(--accent-text);font-size:.88rem}
.absence-check{width:19px;height:19px;margin:.15rem 0 0;flex-shrink:0;accent-color:var(--accent)}
.absence-check-spacer{width:19px;flex-shrink:0}

/* ── Urlaub-Jahresübersicht: Karten statt 16-spaltiger Tabelle ──────────
   Eine feste Tabelle mit Mitarbeiter+Kontingent+Genommen+Rest+12 Monaten
   war auf Mobile unlesbar (nur mit Horizontal-Scroll) und optisch trocken.
   Stattdessen: eine Karte pro Mitarbeiter mit Avatar, Fortschrittsbalken
   (genommen/Kontingent) und 12 kompakten Monats-Chips, die bei Bedarf im
   Grid umbrechen statt zu scrollen. */
.yearov-header-card .sub{line-height:1.5}
.yearov-legend-pending{opacity:.7;font-style:italic}
.yearov-switcher{display:flex;align-items:center;gap:.15rem;background:var(--surface-alt);border:1px solid var(--border);border-radius:999px;padding:.2rem}
.yearov-switch-btn{
  display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:50%;
  border:none;background:none;color:var(--text-secondary);cursor:pointer;transition:background .15s var(--ease-out),color .15s ease;
}
.yearov-switch-btn:hover{background:var(--surface);color:var(--text)}
.yearov-switch-btn svg{width:16px;height:16px}
.yearov-year{font-weight:800;font-size:.95rem;min-width:3.4rem;text-align:center}

.yearov-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:1.1rem}
.yearov-card{animation:fadeIn .35s var(--ease-out) both}
.yearov-empty{grid-column:1/-1;color:var(--text-secondary);padding:1.5rem;text-align:center}
.yearov-card-head{display:flex;align-items:center;gap:.75rem;margin-bottom:.85rem}
.yearov-avatar{
  width:42px;height:42px;border-radius:50%;background:var(--accent-grad);color:var(--accent-contrast);
  display:flex;align-items:center;justify-content:center;font-weight:800;font-size:.9rem;flex-shrink:0;box-shadow:var(--shadow-xs);
}
.yearov-card-headtext{min-width:0}
.yearov-name{font-weight:800;font-size:1.02rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.yearov-stats{font-size:.78rem;color:var(--text-secondary);margin-top:.1rem}
.yearov-stats strong{color:var(--accent-text)}

.yearov-progress{height:8px;border-radius:999px;background:var(--surface-alt);border:1px solid var(--border);overflow:hidden;margin-bottom:1rem}
.yearov-progress-fill{height:100%;border-radius:999px;background:var(--accent-grad);transition:width .5s var(--ease-out)}

.yearov-months{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem}
.yearov-month{
  background:var(--surface-alt);border:1px solid var(--border);border-radius:var(--radius-sm);
  padding:.5rem .55rem;min-width:0;overflow:hidden;transition:background .15s ease,border-color .15s ease;
}
.yearov-month-lbl{display:block;font-size:.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-secondary)}
.yearov-month-val{display:block;font-size:.78rem;font-weight:700;color:var(--text);margin-top:.15rem;overflow-wrap:break-word}
.yearov-month.has-abs{background:var(--accent-tint);border-color:transparent}
.yearov-month.has-abs .yearov-month-val{color:var(--accent-text)}
.yearov-month.has-abs.is-pending{opacity:.65}
/* Unbezahlter Urlaub zählt nicht gegen das Kontingent (Backend zählt nur
   paid=1 gegen "genommen") — ohne diese Kennzeichnung sieht "0 von X Tagen
   genommen" trotz sichtbarem Zeitraum im Chip wie ein Fehler aus. */
.yearov-month.has-abs.is-unpaid{background:var(--surface-alt);border-color:var(--border-strong)}
.yearov-month.has-abs.is-unpaid .yearov-month-val{color:var(--text)}
.yearov-month-tag{display:block;font-size:.6rem;font-weight:700;color:var(--text-secondary);margin-top:.1rem}
@media (max-width:480px){.yearov-months{grid-template-columns:repeat(3,1fr)}}

/* ── Druckansicht ("Als PDF speichern" nutzt den Browser-Druckdialog,
   kein PDF-Server-Setup nötig) ───────────────────────────────────────── */
@media print{
  /* @page{margin:0} + eigenes body-margin ist der Standard-Trick, um die vom
     Browser selbst hinzugefügte Kopf-/Fußzeile (Datum, Seitentitel, URL,
     Seitenzahl) verschwinden zu lassen — die druckt der Browser nämlich in den
     Seitenrand, den er ohne verfügbaren Rand gar nicht erst anlegt. */
  @page{margin:0}
  body{margin:1.3cm;background:#fff}
  .sidebar,.bottom-nav,.btn,.modal-backdrop,#msg,.filter-row,.action-row{display:none!important}
  .app-shell{display:block}
  .content{margin-left:0;padding:0;max-width:100%}
  .card{box-shadow:none;border:1px solid #ddd;animation:none!important;break-inside:avoid}
  input,select,textarea{border:none;background:transparent;padding:0;color:#000}
  /* .card:has(table){overflow-x:auto} ist fürs Bildschirm-Scrollen gedacht —
     im Druck schneidet overflow:auto die Tabelle sonst am Seitenrand ab, statt
     sie einfach kleiner darzustellen. */
  .card:has(table){overflow-x:visible}
  table{font-size:.72rem;width:100%}
  th,td{padding:.4rem .35rem;word-break:break-word}
  /* Zeigt eine lesbare Zusammenfassung der aktiven Filter (Zeitraum,
     Mitarbeiter, Monat …) statt der rohen Formularfelder — pro Seite per JS
     kurz vor dem Drucken befüllt, siehe pdfBtn-Click-Handler. */
  .print-summary{display:block!important;font-weight:600;margin-bottom:1rem}
  /* Für Überschriften/Texte, die im Bildschirm anders heißen sollen als im
     Ausdruck (z. B. "Zeiten korrigieren" auf dem Bildschirm, schlicht
     "Zeiten" im PDF, weil dort nichts mehr korrigiert wird). */
  .screen-only{display:none!important}
  .print-only{display:block!important}
}
.print-summary,.print-only{display:none}

/* Zwei sekundäre Aktionen nebeneinander statt untereinander (Start-Seite). */
.btn-row{display:flex;gap:.5rem;margin-top:.5rem}
.btn-row .btn{flex:1 1 0;min-width:0;padding-left:.5rem;padding-right:.5rem}

/* ── Wizard / Slideshow-Pop-up (siehe openWizard() in app.js) ───────────── */
.wz-top{display:flex;align-items:center;justify-content:space-between;margin:0 1.8rem .9rem 0}
.wz-count{font-size:.72rem;font-weight:700;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em}
.wz-dots{display:inline-flex;gap:.3rem}
.wz-dots i{width:7px;height:7px;border-radius:50%;background:var(--border-strong);transition:all .25s var(--ease-out)}
.wz-dots i.done{background:var(--accent)}
.wz-dots i.on{background:var(--accent-text);width:20px;border-radius:99px}
.wz-title{font-size:1.15rem;font-weight:800;letter-spacing:-.01em;margin:0 0 1rem}
.wz-step.from-right{animation:wzInR .28s var(--ease-out) both}
.wz-step.from-left{animation:wzInL .28s var(--ease-out) both}
@keyframes wzInR{from{opacity:0;transform:translateX(28px)}to{opacity:1;transform:none}}
@keyframes wzInL{from{opacity:0;transform:translateX(-28px)}to{opacity:1;transform:none}}
.wz .modal-actions{margin-top:1rem}
.wz-sum{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-alt);padding:.2rem .85rem;margin-bottom:1rem}
.wz-sum div{display:flex;justify-content:space-between;gap:1rem;padding:.5rem 0;border-top:1px solid var(--border);font-size:.84rem}
.wz-sum div:first-child{border-top:none}
.wz-sum span{color:var(--text-secondary)}
.wz-sum b{text-align:right;font-weight:700}
.wz-days{display:flex;flex-direction:column;gap:.4rem;margin-bottom:.8rem}
.wz-day{display:grid;grid-template-columns:44px minmax(0,1fr) minmax(0,1fr);gap:.4rem;align-items:center}
.wz-day button{height:38px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface-alt);color:var(--text-secondary);font:inherit;font-weight:800;font-size:.82rem;cursor:pointer;transition:all .15s ease}
.wz-day button.on{background:var(--accent-grad);color:var(--accent-contrast);border-color:transparent}
.wz-day input{margin:0;height:38px;padding-top:0;padding-bottom:0}
.wz-day input:disabled{opacity:.35}
.wz-preset{background:none;border:none;color:var(--accent-text);font:inherit;font-weight:700;font-size:.82rem;cursor:pointer;padding:0;margin-bottom:.7rem}

/* ── Einheitlicher, minimalistischer Seitenkopf ─────────────────────────────
   Kurzer Titel mit goldenem Akzentbalken, optional ein kleiner Zusatz rechts
   (.page-meta) und eine Mini-Zeile darüber (.page-eyebrow). Keine Fließtexte. */
.content h1{font-size:1.4rem;font-weight:800;letter-spacing:-.025em;margin:0 0 1rem;line-height:1.2}
.content h1::before{content:"";display:inline-block;width:4px;height:.95em;border-radius:3px;background:var(--accent-grad);margin-right:.55rem;vertical-align:-.1em}
.content h1.ov-sr::before,.content h1.print-only::before{display:none}
.card-header-row h1{margin:0}
.page-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin:0 0 1rem;min-width:0}
.page-head h1{margin:0;min-width:0;white-space:nowrap}
.page-meta{font-size:.76rem;font-weight:700;color:var(--text-secondary);white-space:nowrap;background:var(--surface-alt);border:1px solid var(--border);border-radius:99px;padding:.22rem .65rem}
.page-eyebrow{font-size:.68rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--accent-text);margin:0 0 .25rem}
.page-back{display:inline-block;font-size:.78rem;font-weight:700;color:var(--text-secondary);text-decoration:none;margin-bottom:.35rem}
.btn-link{display:inline-block;margin-top:.6rem;font-size:.8rem;font-weight:700;color:var(--accent-text);text-decoration:none}
@media (max-width:860px){
  .card-header-row h1,.card-header-row h2{width:auto;flex:1 1 auto}
  .card-header-row{flex-wrap:nowrap;align-items:center}
  .card-header-row > .btn{flex:0 0 auto}
}

.card-header-row{gap:.75rem}

/* Büro-Leiste: 6 Einträge in einer Zeile — Labels etwas kleiner, Padding knapp */
.bottom-nav-inner.bn-buero .bn-main a{min-width:0;padding-left:.1rem;padding-right:.1rem;flex:1 1 0}
.bottom-nav-inner.bn-buero .bn-main a span{font-size:.5rem;letter-spacing:-.01em}

.wz-title{padding-right:1.8rem}

/* Abwesenheit als ganztägiger Block in der Wochenansicht (liegt unter Schichten/Zeiten) */
.abs-block{position:absolute;inset:0 1px;border-radius:7px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.25rem;text-align:center;padding:.3rem .1rem;pointer-events:none;overflow:hidden;
  background:var(--accent-tint);color:var(--accent-text);border:1px solid color-mix(in srgb,var(--accent) 45%,transparent)}
.abs-block.k{background:var(--danger-tint);color:var(--danger-text);border-color:color-mix(in srgb,var(--danger) 45%,transparent)}
.abs-block.s{background:var(--surface-alt);color:var(--text-secondary);border-color:var(--border-strong)}
.abs-block.pend{border-style:dashed;opacity:.85}
.abs-block .abs-ic svg{width:1.35rem;height:1.35rem;display:block}
.abs-block b{font-size:.66rem;font-weight:800;line-height:1.1}
.abs-block .abs-r{font-size:.56rem;font-weight:700;line-height:1.25;opacity:.9}
.abs-block em{font-size:.5rem;font-style:normal;font-weight:700;opacity:.8;text-transform:uppercase;letter-spacing:.03em}
.day-col.has-abs .plan-bar,.day-col.has-abs .ist-block{z-index:2}

/* Umschalter oben auf Seiten mit zwei zusammengehörigen Listen (z. B. Kunden | Tätigkeiten) */
.seg{display:flex;gap:.25rem;background:var(--surface-alt);border:1px solid var(--border);border-radius:99px;padding:.2rem;margin:0 0 .9rem}
.seg a{flex:1;text-align:center;padding:.4rem .5rem;border-radius:99px;font-size:.8rem;font-weight:700;color:var(--text-secondary);text-decoration:none}
.seg a.on{background:var(--surface);color:var(--accent-text);box-shadow:0 1px 4px rgba(0,0,0,.12)}

/* Suche, Filter-Chips und aufklappbare Gruppen (Kunden / Tätigkeiten) */
.chips{display:flex;gap:.15rem;margin-top:.6rem;max-width:30rem;background:var(--surface-alt);border:1px solid var(--border);border-radius:99px;padding:.2rem;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.chips::-webkit-scrollbar{display:none}
.chip{flex:1 1 0;min-width:0;display:inline-flex;align-items:center;justify-content:center;gap:.15rem;background:transparent;border:0;color:var(--text-secondary);border-radius:99px;padding:.38rem .1rem;font:inherit;font-weight:700;font-size:.71rem;line-height:1.1;cursor:pointer;white-space:nowrap;transition:background .15s ease,color .15s ease}
.chips:has(.chip:nth-child(5)) .chip{flex:1 0 auto;padding:.38rem .6rem}
.chip.on{background:var(--surface);color:var(--accent-text);box-shadow:0 1px 4px rgba(0,0,0,.12)}
.chip.warn:not(.on){color:var(--danger-text)}
.chip i{font-style:normal;opacity:.65;font-size:.64rem;margin:0}
.grp{padding:0;overflow:hidden;margin-bottom:.7rem}
.grp-head{display:flex;align-items:center;gap:.7rem;width:100%;background:none;border:0;font:inherit;color:inherit;text-align:left;padding:.85rem 1.05rem;cursor:pointer}
.grp-av{width:34px;height:34px;border-radius:50%;background:var(--accent-grad);color:var(--accent-contrast);font-weight:800;font-size:.85rem;display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.grp-nm{flex:1;min-width:0}
.grp-nm b{display:block;font-size:.95rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.grp-nm span{font-size:.76rem;color:var(--text-secondary)}
.grp-chev{color:var(--text-secondary);flex:0 0 auto;transition:transform .15s ease}
.grp.open .grp-chev{transform:rotate(180deg)}
.grp-body{display:none;padding:0 1.05rem .95rem}
.grp.open .grp-body{display:block}
.grp.is-inactive{opacity:.65}
.row-act{display:flex;align-items:center;justify-content:space-between;gap:.7rem;width:100%;background:none;border:0;border-top:1px solid var(--border);font:inherit;color:inherit;text-align:left;padding:.62rem 0;cursor:pointer;text-decoration:none}
.row-act:first-child{border-top:0}
.row-act .n{font-weight:700;font-size:.9rem;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.row-act .m{font-size:.76rem;color:var(--text-secondary);white-space:nowrap;flex:0 0 auto}
.row-act .m .w{color:var(--danger-text);font-weight:700}
.row-act.off .n{opacity:.55;text-decoration:line-through}
.kv{display:flex;justify-content:space-between;gap:1rem;padding:.3rem 0;font-size:.84rem}
.kv span{color:var(--text-secondary);flex:0 0 auto}
.kv b{text-align:right;font-weight:600;min-width:0;overflow-wrap:anywhere}
.sub-h{font-size:.68rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--text-secondary);margin:.8rem 0 .15rem}
.grp-actions{display:flex;gap:.45rem;flex-wrap:wrap;margin-top:.75rem}

.sheet-cust{margin:-.2rem 0 .7rem;font-size:.85rem;color:var(--text-secondary)}
.sheet-cust b{color:var(--text)}

/* ── Rechnungspapier (gemeinsam für Einstellungen-Vorschau und echte Rechnungen; Renderer: assets/invoice.js) ── */
.inv-wrap{overflow:hidden;border-radius:6px;cursor:zoom-in}
.invfs{position:fixed;inset:0;z-index:300;background:#262626;display:flex;flex-direction:column}
.invfs-bar{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.6rem .8rem calc(.6rem + env(safe-area-inset-top));color:#fff;flex:0 0 auto}
.invfs-bar .grp{display:flex;align-items:center;gap:.35rem}
.invfs-bar button{background:rgba(255,255,255,.14);color:#fff;border:0;border-radius:10px;min-width:40px;height:40px;font:inherit;font-weight:800;font-size:1.05rem;cursor:pointer;padding:0 .7rem}
.invfs-bar button:active{background:rgba(255,255,255,.28)}
.invfs-bar span{min-width:3.2rem;text-align:center;font-weight:700;font-size:.85rem}
.invfs-body{flex:1;overflow:auto;-webkit-overflow-scrolling:touch;padding:0 .6rem 1.5rem}
.invfs-body .inv{margin:0 auto}
.inv{--ac:#B08A2E;background:#fff;color:#111;box-shadow:0 6px 24px rgba(0,0,0,.14);padding:48px 52px 34px;font-size:12px;line-height:1.5;width:700px;min-height:990px;display:flex;flex-direction:column;font-family:Helvetica,Arial,sans-serif}
.inv,.inv *{box-sizing:border-box;-webkit-text-size-adjust:100%;text-size-adjust:100%}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
.inv table,.inv td,.inv th{font-size:inherit}
.inv p{font-size:12px;line-height:1.5}
.inv p{margin:0 0 .7em}
.inv .ph{color:#c4c4c4}
.inv-logo{margin-bottom:34px;min-height:70px}
.inv-logo img{max-height:96px;max-width:220px;object-fit:contain;display:block}
.inv-brand{font-size:26px;font-weight:700;letter-spacing:-.01em;color:var(--ac)}
.inv-sline{font-size:9px;color:#8a8a8a;border-bottom:1px solid #ececec;padding-bottom:3px;margin-bottom:12px;width:62%}
.inv-row{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:34px}
.inv-row > div{flex:1 1 auto;white-space:nowrap}
.inv-meta{border-collapse:collapse;width:auto;flex:0 0 auto}
.inv-meta td,.inv-tot td{border:0;border-bottom:0;background:none}
.inv-meta td{padding:1px 0 1px 10px;white-space:nowrap}
.inv-meta td:first-child{color:#8a8a8a;text-align:right}
.inv-meta td:last-child{font-weight:700}
.inv-title{font-size:16px;font-weight:700;margin:0 0 16px}
.inv-tbl{width:100%;border-collapse:collapse;margin:14px 0 18px}
.inv-tbl th{font-size:9px;text-transform:uppercase;letter-spacing:.03em;color:#8a8a8a;text-align:left;padding:3px 4px;border-bottom:1px solid #999}
.inv-tbl td{padding:4px;border-bottom:1px solid #e5e5e5}
.inv-tbl th:nth-child(n+3),.inv-tbl td:nth-child(n+3){text-align:right;white-space:nowrap}
.inv-tot{margin:6px 0 10px auto;border-collapse:collapse}
.inv-tot td{padding:1px 0 1px 26px;text-align:right;white-space:nowrap}
.inv-tot{width:auto}
.inv-tot .g td{font-weight:700;font-size:14px;border-top:1px solid #111;padding-top:3px}
.inv p.inv-tax{font-style:italic;color:#8a8a8a;font-size:10px}
.inv-sign{margin-top:8px}
.inv-sign b{color:var(--ac)}
.inv-foot{display:grid;grid-template-columns:1.15fr 1.15fr 1fr;gap:14px;margin-top:auto;padding-top:12px;border-top:1px solid #ececec;font-size:9px;color:#8a8a8a;line-height:1.5}
.inv-foot b{display:block;color:#666;margin-bottom:1px}

/* Druck / PDF einer Rechnung (Seite setzt body.print-invoice) */
@media print{
  @page{size:A4;margin:0}
  body.print-invoice{background:#fff!important}
  body.print-invoice .sidebar,body.print-invoice .bottom-nav,body.print-invoice .no-print,body.print-invoice .invfs{display:none!important}
  body.print-invoice .app-shell,body.print-invoice .content{display:block!important;margin:0!important;padding:0!important;max-width:none!important}
  body.print-invoice .inv-wrap{overflow:visible;cursor:default;border-radius:0}
  body.print-invoice .inv{zoom:1!important;width:210mm;min-height:297mm;box-shadow:none;margin:0;padding:16mm 17mm 12mm}
}

/* Posteingang-Listen (Meldungen, Abwesenheiten) */
.ib-bar{display:flex;gap:.5rem;align-items:center;justify-content:space-between;flex-wrap:wrap}
.ib-sel{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;margin-top:.6rem}
.ib-sel select{margin:0}
.ib-link{background:none;border:0;font:inherit;font-weight:700;font-size:.78rem;color:var(--accent-text);cursor:pointer;padding:.2rem .1rem}
.ib-link:disabled{opacity:.4;cursor:default}
.ib-day{font-size:.68rem;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:var(--text-secondary);margin:1rem .2rem .35rem}
.ib-day:first-child{margin-top:.2rem}
.ib-list{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}
.ib-row{border-top:1px solid var(--border)}
.ib-row:first-child{border-top:0}
.ib-head{display:grid;grid-template-columns:34px minmax(0,1fr) auto;gap:.7rem;align-items:center;width:100%;background:none;border:0;font:inherit;color:inherit;text-align:left;padding:.7rem .9rem;cursor:pointer}
.ib-ic{width:34px;height:34px;border-radius:50%;background:var(--accent-tint);color:var(--accent-text);display:flex;align-items:center;justify-content:center}
.ib-ic svg{width:17px;height:17px}
.ib-ic.todo{background:var(--accent-grad);color:var(--accent-contrast)}
.ib-ic.mute{background:var(--surface-alt);color:var(--text-secondary)}
.ib-t,.ib-s{display:block}
.ib-t{font-size:.88rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ib-t b{font-weight:800}
.ib-s{font-size:.76rem;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:.1rem}
.ib-r{display:flex;flex-direction:column;align-items:flex-end;gap:.25rem;font-size:.72rem;color:var(--text-secondary);font-weight:600}
.ib-dot{width:8px;height:8px;border-radius:50%;background:var(--accent)}
.ib-row.unseen .ib-t{font-weight:800}
.ib-row.done .ib-t{font-weight:600;color:var(--text-secondary)}
.ib-row.cancelled .ib-t{text-decoration:line-through;color:var(--text-secondary)}
.ib-det{display:none;padding:0 .9rem .85rem 3.55rem;font-size:.82rem}
.ib-row.open .ib-det{display:block}
.ib-det p{margin:0 0 .3rem;color:var(--text-secondary)}
.ib-det p b{color:var(--text)}
.ib-act{display:flex;gap:.45rem;flex-wrap:wrap;margin-top:.6rem}
.ib-todo{border:1px solid var(--accent);background:var(--accent-tint);border-radius:var(--radius-lg);overflow:hidden;margin-bottom:.4rem}
.ib-todo .ib-row{border-top-color:color-mix(in srgb,var(--accent) 25%,transparent)}
.ib-todo-h{font-size:.68rem;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:var(--accent-text);padding:.6rem .9rem .1rem}
.ib-quick{display:flex;gap:.45rem;padding:0 .9rem .8rem 3.55rem}
.ib-more{width:100%;margin-top:.8rem}
.ib-empty{text-align:center;color:var(--text-secondary);font-size:.9rem;padding:2rem 1rem}

/* Admin-Dienstplan: Abwesenheit liegt dezent hinter den Schichten, die dadurch ausfallen */
.abs-block.adm{justify-content:flex-start;padding-top:.45rem;gap:.15rem;opacity:.9}
.abs-block.adm .abs-ic svg{width:1.05rem;height:1.05rem}
.day-col.has-abs .plan-bar{opacity:.6}
.day-col.has-abs .plan-bar .lbl,.day-col.has-abs .plan-bar .time{text-decoration:line-through;text-decoration-thickness:1px}

/* Untere Navigation als schwebende Glas-Kapsel (Liquid-Glass-Anmutung) */
@media (max-width:860px){
  .bottom-nav{
    left:12px;right:12px;bottom:calc(8px + env(safe-area-inset-bottom));
    padding:.35rem .4rem;border:1px solid var(--glass-border);border-radius:30px;
    background:var(--glass-grad);
    backdrop-filter:blur(26px) saturate(1.9) brightness(1.04);-webkit-backdrop-filter:blur(26px) saturate(1.9) brightness(1.04);
    box-shadow:var(--glass-shadow);
  }
  .bottom-nav a,.bottom-nav button{border-radius:22px;padding:.45rem .3rem}
  .bottom-nav a.active,.bottom-nav button.active{
    background:var(--glass-active);
    box-shadow:var(--glass-active-shadow);
  }
  .content{padding-bottom:calc(6.6rem + env(safe-area-inset-bottom))}
}

/* Wochenkarte im Urlaub/Krankheit */
.wk-abs{display:flex;align-items:center;gap:.9rem;padding:.9rem 1rem;border-radius:var(--radius-lg);background:var(--accent-tint);color:var(--accent-text)}
.wk-abs.k{background:var(--danger-tint);color:var(--danger-text)}
.wk-abs.s{background:var(--surface-alt);color:var(--text-secondary)}
.wk-abs-ic svg{width:34px;height:34px;display:block}
.wk-abs b{display:block;font-size:1.05rem;font-weight:800}
.wk-abs span{font-size:.8rem;font-weight:600;opacity:.85}

/* Feiertage im Wochenraster */
.day-col.has-hol{background:color-mix(in srgb,var(--accent-tint) 55%,transparent)}
.day-col.has-hol .abs-block.adm{padding-top:1.8rem}
.hol-tag{position:absolute;left:3px;right:3px;top:4px;z-index:1;text-align:center;font-size:.54rem;font-weight:800;line-height:1.15;letter-spacing:.02em;color:var(--accent-text);background:var(--accent-tint);border:1px solid color-mix(in srgb,var(--accent) 40%,transparent);border-radius:6px;padding:.15rem .1rem;pointer-events:none;overflow:hidden;text-overflow:ellipsis}

/* ── Wochenraster, ruhigere Optik ───────────────────────────────────────── */
.timegrid-head-row{margin-bottom:.5rem}
.timegrid-head-row .day-head{font-size:.6rem;letter-spacing:.05em;text-transform:uppercase;padding:.15rem 0;display:flex;flex-direction:column;align-items:center;gap:.2rem}
.timegrid-head-row .day-head .num{display:flex;align-items:center;justify-content:center;width:1.9rem;height:1.9rem;border-radius:50%;margin:0;font-size:.92rem;letter-spacing:0;text-transform:none}
.timegrid-head-row .day-head.is-today .num{background:var(--accent-grad);color:var(--accent-contrast)}
.timegrid-head-row .day-head.is-today{color:var(--accent-text)}
.timegrid-head-row .day-head.is-hol::after{content:"";width:5px;height:5px;border-radius:50%;background:var(--accent)}
.timegrid-scroll{border-top:0;padding:4px 0}
.timegrid{background-image:linear-gradient(to bottom,color-mix(in srgb,var(--border) 55%,transparent) 1px,transparent 1px)}
.timegrid .day-col{border-left:0}
.timegrid .day-col.is-today{background:color-mix(in srgb,var(--accent-tint) 45%,transparent);border-radius:10px}
.timegrid .time-axis .hour-label{font-size:.58rem;opacity:.8}
.plan-bar{border:0;border-radius:10px;background:color-mix(in srgb,currentColor 13%,var(--surface));box-shadow:inset 3px 0 0 currentColor;padding:3px 6px}
.plan-bar:hover{box-shadow:inset 3px 0 0 currentColor,0 3px 10px rgba(0,0,0,.12)}
.plan-bar.is-self{border:0}
.plan-bar .lbl{font-size:.62rem}
.ist-block{border-radius:10px;padding:3px 6px;box-shadow:0 2px 8px rgba(40,28,6,.16)}
.abs-block{border:0;border-radius:10px;justify-content:flex-start;padding-top:1rem;gap:.3rem;opacity:.95}
.abs-block .abs-ic svg{width:1.2rem;height:1.2rem}
.abs-block b{font-size:.64rem;white-space:nowrap}
.hol-tag{border:0;border-radius:99px;font-size:.55rem}

@media (max-width:560px){
  .timegrid.d7 .plan-bar .lbl{display:none}
  .timegrid.d7 .time .to{display:block;opacity:.75}
  .timegrid.d7 .plan-bar,.timegrid.d7 .ist-block{padding:3px 3px}
}
.plan-bar{box-shadow:inset 3px 0 0 color-mix(in srgb,currentColor 55%,transparent)}
.plan-bar:hover{box-shadow:inset 3px 0 0 currentColor,0 3px 10px rgba(0,0,0,.12)}

/* Wochenkopf: Umschalter volle Breite, Titel mittig zwischen runden Pfeilen */
.view-switch.full{display:flex;width:100%;margin:0 0 1rem;padding:3px;border-radius:99px}
.view-switch.full button{flex:1;border-radius:99px;padding:.5rem .4rem;font-size:.82rem}
.wk-nav{display:flex;align-items:center;justify-content:space-between;gap:.8rem;margin:0 0 1.1rem}
.wk-arrow{width:2.6rem;height:2.6rem;border-radius:50%;border:1px solid var(--border);background:var(--surface);color:var(--text);font:inherit;font-size:1.5rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0 0 .15rem;box-shadow:var(--shadow-xs)}
.wk-arrow:active{transform:scale(.93)}
.wk-title{text-align:center;min-width:0}
.wk-title b{display:block;font-size:1.05rem;font-weight:800;letter-spacing:-.01em}
.wk-title span{display:block;font-size:.8rem;color:var(--text-secondary);font-weight:600;margin-top:.1rem}
/* Raster: mehr Luft — Karte auf dem Handy schmaler gepolstert, Spalten breiter */
@media (max-width:560px){
  .timegrid-scroll{margin:0 -.5rem}
  .timegrid-head-row{margin-left:-.5rem;margin-right:-.5rem}
  .timegrid-head-row .day-head{font-size:.62rem}
  .timegrid.d7 .plan-bar .time,.timegrid.d7 .ist-block .time{font-size:.58rem}
}
.timegrid{--gap:3px}
.timegrid .day-col .plan-bar,.timegrid .day-col .ist-block{left:3px;right:3px}

/* Team-Matrix (Dienstplan Admin + Team Mitarbeiter) */
.tm-wrap{overflow-x:auto;margin:0 -.2rem;padding:0 .2rem}
.tm{display:grid;min-width:max-content;width:100%;row-gap:.3rem;column-gap:.3rem;align-items:center}
.tm .hd{display:flex;flex-direction:column;align-items:center;gap:.15rem;font-size:.66rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--text-secondary);padding-bottom:.35rem}
.tm .hd b{font-size:.92rem;letter-spacing:0;text-transform:none;color:var(--text);width:2rem;height:2rem;border-radius:50%;display:flex;align-items:center;justify-content:center}
.tm .hd.today b{background:var(--accent-grad);color:var(--accent-contrast)}
.tm .nm{position:sticky;left:0;z-index:2;background:var(--surface);border:0;font:inherit;text-align:left;cursor:pointer;color:var(--text);padding:.15rem .6rem .15rem 0;min-width:96px;max-width:140px;display:flex;flex-direction:column;justify-content:center;align-self:stretch;min-height:44px;box-shadow:-.4rem 0 0 var(--surface),.55rem 0 .5rem -.35rem var(--surface)}   /* deckt die ganze Zeilenhöhe und den Rand links ab: darunter durchlaufende Felder schweben nicht mehr halb sichtbar neben dem Namen */
.tm .hd0{position:sticky;left:0;z-index:2;background:var(--surface);align-self:stretch;box-shadow:-.4rem 0 0 var(--surface),.55rem 0 .5rem -.35rem var(--surface)}   /* leere Ecke über den Namen: Tage laufen beim Wischen darunter durch */
.tm .nm span{display:block;font-size:.84rem;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tm .nm small{display:block;font-size:.68rem;color:var(--text-secondary);font-weight:600}
.tm .cell{height:44px;display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:12px;min-width:64px;position:relative}
.tm .cell:hover .pill{filter:brightness(.97)}
.tm .cell.empty:hover{background:var(--surface-alt)}
.tm .pill{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.05rem;width:100%;height:100%;border-radius:12px;background:var(--surface-alt);font-size:.76rem;font-weight:700;color:var(--text);white-space:nowrap}
.tm .pill small{font-size:.62rem;font-weight:700;opacity:.75}
.tm .pill svg{width:14px;height:14px}
.tm .pill.u{background:var(--accent-tint);color:var(--accent-text)}
.tm .pill.k{background:var(--danger-tint);color:var(--danger-text)}
.tm .pill.s{background:var(--surface-alt);color:var(--text-secondary)}
.tm .pill.pend{opacity:.55}
.tm .pill i{position:absolute;top:5px;right:6px;width:7px;height:7px;border-radius:50%;background:var(--danger)}
.tm .pill.today-sh{background:var(--accent-tint);color:var(--accent-text)}
.tm .hd.hol::after{content:"";width:5px;height:5px;border-radius:50%;background:var(--accent);margin-top:.1rem}
.tm .cell.hol{background:var(--accent-tint)}

/* Auswahlfelder: eigener Pfeil mit Abstand zum Rand (nativer Pfeil klebt am Feldrand) */
select{
  -webkit-appearance:none;appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8' fill='none' stroke='%237a6a45' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M1.5 1.5l4.5 4.5 4.5-4.5'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 1.15rem center;background-size:12px 8px;
  padding-right:2.9rem;
}
select[multiple]{background-image:none;padding-right:.9rem}

/* Umschalter Pro Stunde / Pauschal (Tätigkeiten) */
.pr-seg{display:flex;gap:.4rem;margin:.15rem 0 .5rem}
.pr-seg button{flex:1;padding:.5rem .6rem;border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--surface);font:inherit;font-weight:700;font-size:.84rem;color:var(--text-secondary);cursor:pointer}
.pr-seg button.on{background:var(--accent-tint);border-color:var(--accent);color:var(--accent-text)}
.pr-seg button:disabled{opacity:.55;cursor:default}

/* Ein/Aus-Schalter (Büro) */
.fe-sw{position:relative;width:46px;height:28px;flex:none}
.fe-sw input{position:absolute;inset:0;opacity:0;margin:0;width:100%;height:100%;cursor:pointer;z-index:2}
.fe-sw i{position:absolute;inset:0;border-radius:99px;background:var(--surface-alt);border:1px solid var(--border-strong);transition:background .2s}
.fe-sw i::after{content:"";position:absolute;top:2px;left:2px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 1px 4px rgba(0,0,0,.25);transition:transform .2s var(--ease-out)}
.fe-sw input:checked + i{background:var(--accent);border-color:var(--accent)}
.fe-sw input:checked + i::after{transform:translateX(18px)}

/* Info-Hinweis (i + Pop-up) */
.lbl-i{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.35rem}
.lbl-i label{margin:0;flex:1;min-width:0}
.info-i{flex:none;width:22px;height:22px;border-radius:50%;border:1px solid var(--border-strong);background:var(--surface-alt);color:var(--accent-text);font:italic 700 .78rem/1 Georgia,serif;display:flex;align-items:center;justify-content:center;padding:0;cursor:pointer;transition:background .15s ease,transform .12s ease}
.info-i:hover{background:var(--accent-tint)}
.info-i:active{transform:scale(.92)}
.info-pop{position:fixed;inset:0;z-index:80;background:rgba(24,18,6,.3);display:flex;align-items:center;justify-content:center;padding:1.5rem;animation:fadeIn .15s ease both}
.info-card{background:var(--surface);border-radius:var(--radius-lg,18px);padding:1.2rem 1.25rem 1rem;max-width:340px;width:100%;box-shadow:var(--shadow-pop);animation:scaleIn .22s var(--ease-out) both}
.info-body{font-size:.88rem;line-height:1.5;color:var(--text-secondary);margin-bottom:.9rem}
.info-body p{margin:0 0 .6rem}.info-body p:last-child{margin:0}
.info-body strong{color:var(--text)}
.info-card .btn{width:100%}
/* Meldungen: Chips links (gleich breit, begrenzt), „Alle gelesen“ rechts */
.ib-bar .chips{flex:0 1 11rem;min-width:0}
.ib-bar .chip{min-width:0}

/* Tab-Leiste: Symbol + kurze Beschriftung (max. 5 Einträge, Rest im „Mehr“-Menü) */
.bottom-nav a,.bottom-nav button{height:54px;justify-content:center;gap:.18rem;max-width:none;padding:0 .08rem}
.bottom-nav a svg,.bottom-nav button svg{width:24px;height:24px}
.bottom-nav a span,.bottom-nav button span{font-size:.58rem;letter-spacing:-.025em;line-height:1.1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.bottom-nav-inner.bn-buero .bn-main a{padding:0 .08rem}
.bottom-nav-inner.bn-buero .bn-main a span{font-size:.58rem}
@media (max-width:860px){.bottom-nav a,.bottom-nav button{padding:0 .08rem}.bottom-nav{padding:.3rem .45rem}}

/* „Mehr“-Menü über der Tab-Leiste */
.bottom-nav-inner{position:relative}
.bn-more-menu{position:absolute;right:0;bottom:calc(100% + 16px);min-width:215px;display:flex;flex-direction:column;padding:.35rem;border-radius:24px;background:var(--glass-pop);backdrop-filter:blur(24px) saturate(1.8);-webkit-backdrop-filter:blur(24px) saturate(1.8);border:1px solid var(--glass-border);box-shadow:0 14px 40px rgba(0,0,0,.28);animation:scaleIn .2s var(--ease-out) both;transform-origin:bottom right}
.bn-more-menu[hidden]{display:none}
.bottom-nav .bn-more-menu a{flex:none;flex-direction:row;justify-content:flex-start;gap:.85rem;width:100%;height:50px;max-width:none;padding:0 1rem;border-radius:18px;font-size:.92rem}
.bottom-nav .bn-more-menu a span{position:static;width:auto;height:auto;margin:0;clip:auto;overflow:visible;white-space:nowrap;font-size:.92rem;font-weight:700}

/* „i“ in Überschriften von Dialogen */
.wz-title .info-i,.modal-card h3 .info-i{display:inline-flex;vertical-align:middle;margin-left:.5rem}

/* ── Rechtsseiten (Impressum, Datenschutz, AGB, AV-Vertrag) + Footer-Links ── */
.legal{max-width:760px;margin:0 auto;padding:1.4rem 1rem 3rem;line-height:1.6;font-size:.95rem}
.legal h1{font-size:1.5rem;letter-spacing:-.02em;margin:.6rem 0 .4rem}
.legal h2{font-size:1.02rem;margin:1.6rem 0 .3rem}
.legal ul{padding-left:1.2rem;margin:.4rem 0}
.legal li{margin:.25rem 0}
.legal-back{font-size:.85rem;font-weight:700}
.legal-note{font-size:.82rem;color:var(--text-secondary);margin:0 0 1rem}
.legal-nav{margin-top:2.2rem;font-size:.85rem;color:var(--text-secondary)}
.legal mark.ph{background:#FFF3B0;color:#5C4A00;padding:0 .25em;border-radius:4px}
.legal-links{text-align:center;margin-top:1.1rem;font-size:.78rem;color:var(--text-secondary)}
.legal-links a{color:inherit;text-decoration:underline;text-underline-offset:2px}
.terms-check{display:flex;align-items:flex-start;gap:.55rem;margin:.9rem 0 1rem;font-size:.84rem;line-height:1.4;color:var(--text-secondary)}
.terms-check input{width:auto;margin:.15rem 0 0;flex:none}

.verify-banner{display:flex;align-items:center;justify-content:space-between;gap:.8rem;flex-wrap:wrap;background:var(--banner-bg);color:var(--banner-text);border-radius:12px;padding:.7rem .9rem;margin:0 0 1rem;font-size:.86rem;line-height:1.35}
.verify-banner .btn{padding:.4rem .8rem;font-size:.8rem;flex:none}

/* ── Preise (öffentlich: preise.html) ──────────────────────────────────── */
.pr-body{background:var(--bg)}
.pr-top{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem clamp(1rem,4vw,3rem);background:var(--surface);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:5}
.pr-brand{display:flex;align-items:center;gap:.6rem;font-weight:800;font-size:1.1rem;color:var(--text);text-decoration:none}
.pr-brand .mark{width:36px;height:36px;border-radius:11px;background:var(--accent-grad);display:grid;place-items:center;color:var(--accent-contrast)}
.pr-brand .mark svg{width:20px;height:20px}
.pr-nav{display:flex;gap:1.6rem;font-size:.92rem;font-weight:600}
.pr-nav a{color:var(--text-secondary);text-decoration:none}.pr-nav a.on,.pr-nav a:hover{color:var(--text)}
.pr-actions{display:flex;align-items:center;gap:.7rem}
.pr-actions .theme-btn{position:static;width:38px;height:38px}
.pr-cta{padding:.6rem 1.1rem;border-radius:12px;font-size:.9rem}
.pr-main{padding-bottom:1rem}
.pr-hero{text-align:center;padding:3.2rem 1.2rem 1.2rem}
.pr-hero h1{margin:0;font-size:clamp(1.7rem,4vw,2.5rem);letter-spacing:-.03em}
.pr-hero p{margin:.7rem auto 0;max-width:560px;color:var(--text-secondary)}
.pr-pill{display:table;margin:1.1rem auto 0;background:var(--accent-tint);color:var(--accent-text);font-weight:700;font-size:.82rem;padding:.4rem .9rem;border-radius:99px}
.pr-toggle{display:inline-flex;flex-wrap:wrap;justify-content:center;gap:2px;background:var(--surface);border:1px solid var(--border);border-radius:99px;padding:4px;margin-top:1.4rem}
.pr-toggle button{border:0;background:none;font:inherit;font-size:.85rem;font-weight:700;color:var(--text-secondary);padding:.45rem 1rem;border-radius:99px;cursor:pointer}
.pr-toggle button.on{background:var(--accent-grad);color:var(--accent-contrast)}
.pr-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;max-width:1100px;margin:1.8rem auto 0;padding:.6rem 1.2rem 0}
.pr-card{position:relative;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:20px;padding:1.5rem;box-shadow:var(--shadow-card)}
.pr-card.pop{border:2px solid var(--accent);box-shadow:0 18px 40px -14px rgba(201,162,76,.55)}
.pr-tag{position:absolute;top:-12px;left:50%;transform:translateX(-50%);background:var(--accent-grad);color:var(--accent-contrast);font-size:.7rem;font-weight:800;padding:.25rem .7rem;border-radius:99px;white-space:nowrap}
.pr-card h3{margin:0;font-size:1.1rem}
.pr-who{color:var(--text-secondary);font-size:.84rem;margin:.2rem 0 1rem}
.pr-price{font-size:2.1rem;font-weight:800;letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.pr-price small{font-size:.85rem;font-weight:600;color:var(--text-secondary);letter-spacing:0}
.pr-card ul{list-style:none;padding:0;margin:1.1rem 0 1.4rem;display:grid;gap:.5rem;font-size:.86rem;color:var(--text-secondary);flex:1}
.pr-card li::before{content:"✓ ";color:var(--success-text);font-weight:800}
.pr-card .btn{text-align:center;text-decoration:none;display:block}
.pr-note{max-width:900px;margin:1.4rem auto 2.4rem;padding:0 1.2rem;text-align:center;font-size:.82rem;color:var(--text-secondary);line-height:1.5}
.pr-incl,.pr-faq{max-width:760px;margin:0 auto 2.2rem;padding:0 1.2rem}
.pr-incl h2,.pr-faq h2{font-size:1.25rem;margin:0 0 .9rem}
.pr-incl ul{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:1fr 1fr;gap:.55rem 1.4rem;font-size:.92rem}
.pr-incl li::before{content:"✓ ";color:var(--success-text);font-weight:800}
.pr-faq details{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:.85rem 1.1rem;margin-bottom:.6rem}
.pr-faq summary{font-weight:700;cursor:pointer}
.pr-faq details p{margin:.6rem 0 0;color:var(--text-secondary);font-size:.9rem;line-height:1.5}
.pr-foot{padding:1.2rem 1rem 2.2rem}
@media (max-width:980px){.pr-grid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:620px){
  /* Pakete als seitlich wischbare Leiste (Scroll-Snap) statt langer Liste */
  .pr-grid{display:flex;grid-template-columns:none;gap:.8rem;overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding:0 11%;padding:1.3rem 11% 1.9rem;margin:1rem 0 -1rem;max-width:none;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  .pr-grid::-webkit-scrollbar{display:none}
  .pr-card{flex:0 0 78%;scroll-snap-align:center}
  .pr-dots{display:flex!important}
  .pr-nav{display:none}
  .pr-hero{padding-top:2rem}
  .pr-incl ul{grid-template-columns:1fr}
  .pr-cta{padding:.55rem .9rem;font-size:.85rem}
}
/* ── Abo (Büro → Abo) ─────────────────────────────────────────────────── */
.abo-row{display:flex;justify-content:space-between;align-items:center;gap:1rem}
.abo-mut{font-size:.82rem;color:var(--text-secondary)}
.abo-chip{font-size:.72rem;font-weight:800;background:var(--success-tint);color:var(--success-text);padding:.28rem .65rem;border-radius:99px;white-space:nowrap}
.abo-inner{margin-top:1rem;background:var(--surface-alt);border:1px solid var(--border);border-radius:16px;padding:1rem 1.1rem}
.abo-price{font-size:1.4rem;font-weight:800;letter-spacing:-.02em;white-space:nowrap}
.abo-price small{font-size:.8rem;font-weight:600;color:var(--text-secondary)}
.abo-bar{height:8px;border-radius:9px;background:var(--border);margin:.8rem 0 .4rem;overflow:hidden}
.abo-bar i{display:block;height:100%;background:var(--accent-grad);border-radius:9px}
.abo-link{font-weight:700;font-size:.9rem}

.pr-dots{display:none;justify-content:center;gap:.45rem;margin:.2rem 0 0}
.pr-dots i{width:7px;height:7px;border-radius:50%;background:var(--border-strong);transition:width .25s var(--ease-out),background .25s}
.pr-dots i.on{width:20px;border-radius:99px;background:var(--accent)}

/* ── Registrierung in zwei Schritten, Einladungsseite ─────────────────────── */
.reg-steps{display:flex;gap:.5rem;margin:0 0 1.2rem;font-size:.78rem;font-weight:700;color:var(--text-secondary)}
.reg-steps span{padding:.32rem .8rem;border-radius:99px;background:var(--surface-alt);border:1px solid var(--border)}
.reg-steps span.on{background:var(--accent-grad);color:var(--accent-contrast);border-color:transparent}
.fld-row{display:grid;grid-template-columns:110px 1fr;gap:.7rem}
.opt{font-weight:600;color:var(--text-secondary);opacity:.7;font-size:.72rem}
.auth-hint{font-size:.8rem;color:var(--text-secondary);line-height:1.45;margin:.2rem 0 1rem}
.auth-card select{width:100%}

/* ── Firmenwechsel ───────────────────────────────────────────────────────── */
.co-sw{position:relative}
.co-btn{display:flex;align-items:center;gap:.6rem;width:100%;text-align:left;font:inherit;color:inherit;background:var(--surface-alt);border:1px solid var(--border);border-radius:14px;padding:.5rem .65rem;cursor:pointer}
.co-btn:hover{border-color:var(--border-strong)}
.co-av{width:30px;height:30px;border-radius:9px;background:var(--accent-grad);color:var(--accent-contrast);display:grid;place-items:center;font-weight:800;font-size:.82rem;flex:none}
.co-av.inv{background:var(--surface);border:1px dashed var(--border-strong);color:var(--text-secondary)}
.co-tx{display:flex;flex-direction:column;min-width:0;flex:1;line-height:1.2}
.co-tx b{font-size:.86rem;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.co-tx small{font-size:.7rem;color:var(--text-secondary)}
.co-ch{color:var(--text-secondary);font-size:.9rem;flex:none}
.co-dot{width:9px;height:9px;border-radius:50%;background:var(--danger);flex:none}
.co-menu{position:absolute;left:0;right:0;top:calc(100% + 6px);z-index:60;background:var(--glass-pop);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow-pop);padding:.4rem;min-width:240px;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}
.co-menu[hidden]{display:none}
.co-menu-title{font-size:.68rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary);padding:.5rem .55rem .25rem}
.co-item{display:flex;align-items:center;gap:.6rem;width:100%;text-align:left;font:inherit;color:inherit;background:none;border:0;border-radius:11px;padding:.5rem .55rem;cursor:pointer}
.co-item:hover{background:var(--surface-alt)}
.co-item.on{background:var(--accent-tint)}
.co-item.co-inv{cursor:default;flex-wrap:wrap}
.co-item.co-inv:hover{background:none}
.co-ok{color:var(--success-text);font-weight:800}
.co-inv-act{display:flex;gap:.4rem;width:100%;padding-left:calc(30px + .6rem)}
.co-add{display:block;margin-top:.3rem;padding:.65rem .55rem;border-top:1px solid var(--border);font-weight:700;font-size:.84rem;color:var(--accent-text);text-decoration:none;border-radius:0 0 11px 11px}
.co-add:hover{background:var(--surface-alt)}
.co-side{margin:0 0 1rem}
.co-chip{display:none}
@media (max-width:860px){
  .co-side{display:none}
  .co-chip{display:block;margin:0 0 .8rem}
  .co-chip .co-btn{display:inline-flex;width:auto;max-width:100%;border-radius:99px;padding:.3rem .75rem .3rem .3rem}
  .co-chip .co-av{width:26px;height:26px;border-radius:99px;font-size:.74rem}
  .co-chip .co-menu{right:auto;width:min(340px,calc(100vw - 2rem))}
}

/* ── Scott (KI-Assistent): Gesicht mittig, Gedankenblase, Anhänger am oberen Rand ─────────────── */
:root{--sd-safe:env(safe-area-inset-top,0px)}
.sd-fab{--sd-stem:calc(var(--sd-safe) + 16px);position:fixed;top:var(--sd-stem);left:50%;transform:translateX(-50%);z-index:41;width:88px;height:44px;padding:0;border:0;background:transparent;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:opacity .25s}
.sd-half{position:absolute;left:0;right:0;bottom:0;top:calc(-1 * var(--sd-stem) - 40px);padding-top:calc(var(--sd-stem) + 40px);border-radius:0 0 44px 44px;display:flex;align-items:center;justify-content:center;overflow:hidden;background:var(--accent-grad);color:#2E2510;
  box-shadow:0 10px 22px -6px rgba(150,115,30,.55),inset 0 -2px 0 rgba(255,255,255,.28)}
.sd-half svg{width:38px;height:38px;margin-top:-4px}
.sd-open .sd-fab{opacity:0;pointer-events:none}
.sd-ov{position:fixed;inset:0;height:100vh;height:100dvh;z-index:42;display:flex;flex-direction:column;align-items:center;padding:calc(var(--sd-safe) + 3.7rem) 1.2rem calc(env(safe-area-inset-bottom) + 1rem);
  background:rgba(22,15,3,.58);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);opacity:0;visibility:hidden;transition:opacity .3s,visibility 0s linear .3s;overflow:hidden}
.sd-open .sd-ov{opacity:1;visibility:visible;transition:opacity .3s,visibility 0s}
.sd-x{position:absolute;top:calc(var(--sd-safe) + .8rem);right:.9rem;width:40px;height:40px;border-radius:50%;border:0;background:rgba(255,255,255,.14);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center}
.sd-x:hover{background:rgba(255,255,255,.24)}.sd-x svg{width:18px;height:18px}
.sd-hist{position:absolute;top:calc(var(--sd-safe) + .8rem);left:.9rem;width:40px;height:40px;border-radius:50%;border:0;background:rgba(255,255,255,.14);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center}
.sd-hist:hover{background:rgba(255,255,255,.24)}.sd-hist svg{width:19px;height:19px}.sd-hist[hidden]{display:none}
.sd-stage{position:relative;width:min(460px,100%);flex:1;min-height:0;container:sdstage/size}
.sd-center{--cy:50%;position:absolute;inset:0}
.sd-face{position:absolute;left:calc(50% - 76px);top:calc(var(--cy) - 76px);width:152px;height:152px;border-radius:50%;background:var(--accent-grad);color:#2E2510;display:flex;align-items:center;justify-content:center;
  box-shadow:0 30px 56px -16px rgba(0,0,0,.65),0 0 0 7px rgba(255,255,255,.1),inset 0 -3px 0 rgba(255,255,255,.28);transform:translateY(-44vh) scale(.3);opacity:0;transition:transform .55s var(--ease-spring),opacity .3s,top .45s ease}
.sd-open .sd-face{transform:none;opacity:1}
.sd-face svg{width:126px;height:126px}
.sd-face .ln,.sd-half .ln{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round}.sd-face .fl,.sd-half .fl{fill:currentColor}
.sd-arc{opacity:0}.sd-mh,.sd-arc{transform-origin:32px 19px}
@keyframes sd-spin{to{transform:rotate(360deg)}}@keyframes sd-bob{0%,100%{transform:translateY(0)}50%{transform:translateY(.6px)}}
@keyframes sd-pop{0%{transform:scale(.92)}40%{transform:scale(1.06)}100%{transform:scale(1)}}
@keyframes sd-glow{0%,100%{box-shadow:0 30px 56px -16px rgba(0,0,0,.65),0 0 0 7px rgba(255,255,255,.1),0 0 0 7px rgba(210,183,95,.45)}50%{box-shadow:0 30px 56px -16px rgba(0,0,0,.65),0 0 0 7px rgba(255,255,255,.1),0 0 0 26px rgba(210,183,95,0)}}
@keyframes sd-in{from{opacity:0;transform:translateY(10px) scale(.96)}to{opacity:1;transform:none}}
.sd-think .sd-arc{opacity:1;animation:sd-spin 1.3s linear infinite}.sd-think .sd-rim{opacity:.3}.sd-think .sd-mh{animation:sd-spin 1s linear infinite}.sd-think .sd-st{animation:sd-bob .8s ease-in-out infinite}
.sd-open .sd-face.sd-think{animation:sd-glow 1.8s ease-in-out infinite}
.sd-done svg{animation:sd-pop .6s ease-out 1}
/* Gedankenblase: geht vom Gesicht nach oben rechts, mit zwei kleinen Kreisen als Verbindung */
.sd-bubble{position:absolute;width:min(330px,calc(100vw - 92px));left:calc(50% + min(330px,100vw - 92px) / -2 + 30px);bottom:calc(100% - var(--cy) + 134px);max-height:calc(var(--cy) - 134px);transition:bottom .45s ease;background:#FBF8F1;color:#211D16;border-radius:26px;box-shadow:0 26px 50px -18px rgba(0,0,0,.6);display:flex;flex-direction:column;animation:sd-in .4s both;min-height:0;transform-origin:22% 100%}
.sd-tail{position:absolute;border-radius:50%;background:#FBF8F1;box-shadow:0 8px 16px -6px rgba(0,0,0,.55);transition:transform .4s var(--ease-spring),opacity .25s}
.sd-t1,.sd-t2{transition:transform .4s var(--ease-spring),opacity .25s,top .45s ease}.sd-t1{left:calc(50% + 52px);top:calc(var(--cy) - 66px);width:15px;height:15px}.sd-t2{left:calc(50% + 68px);top:calc(var(--cy) - 98px);width:25px;height:25px}
.sd-bubble[hidden]~.sd-tail{display:none}
.sd-bubble[hidden]{display:none}
.sd-scroll{position:relative;overflow-y:auto;padding:1.1rem 1.25rem .6rem;min-height:0;overscroll-behavior:contain}
.sd-q{font-size:.8rem;color:#726A59;margin:0 0 .5rem;font-weight:600}
.sd-a{font-size:1rem;line-height:1.55;white-space:pre-wrap;word-wrap:break-word;margin:0}
.sd-link{display:inline-block;margin-top:.7rem;font-weight:700;font-size:.9rem;color:#8E7226;text-decoration:none}.sd-link:hover{text-decoration:underline}
.sd-err{color:#B8362E}
.sd-pager{flex:none;display:flex;align-items:center;justify-content:center;gap:.4rem;padding:.2rem .8rem .75rem;color:#726A59;font-size:.8rem}
.sd-pager button{width:34px;height:34px;border-radius:50%;border:0;background:#F3E8C6;color:#211D16;cursor:pointer;display:flex;align-items:center;justify-content:center}
.sd-pager button:disabled{opacity:.3;cursor:default}.sd-pager svg{width:16px;height:16px}
.sd-list{list-style:none;margin:0;padding:.5rem .6rem .7rem;overflow-y:auto}
.sd-list h3{margin:.5rem .65rem .4rem;font-size:.82rem;color:#726A59;font-weight:700;letter-spacing:.04em;text-transform:uppercase}
.sd-list li button{display:flex;width:100%;gap:.7rem;align-items:center;justify-content:space-between;text-align:left;border:0;background:transparent;color:#211D16;font:inherit;font-size:.93rem;padding:.7rem .65rem;border-radius:14px;cursor:pointer}
.sd-list li button:hover{background:#F3E8C6}.sd-list li button i{font-style:normal;color:#8E7226;font-weight:800}
.sd-sugg{position:absolute;top:calc(var(--cy) + 104px);left:50%;width:min(340px,calc(100vw - 2.4rem));margin-left:calc(min(340px,100vw - 2.4rem) / -2);display:flex;flex-direction:column;gap:.5rem;animation:sd-in .5s .15s both}
.sd-sugg button{display:flex;align-items:center;justify-content:space-between;gap:.8rem;text-align:left;width:100%;border:0;background:rgba(255,255,255,.14);color:#fff;border-radius:16px;padding:.8rem 1rem;font:inherit;font-size:.93rem;font-weight:600;cursor:pointer}
.sd-sugg button:hover{background:rgba(255,255,255,.24)}.sd-sugg button i{font-style:normal;color:#E4C878;font-weight:800}
.sd-form{flex:none;width:min(420px,100%);padding-top:.8rem}
.sd-field{display:flex;align-items:flex-end;gap:.4rem;border-radius:28px;padding:.35rem .35rem .35rem 1.15rem;background:var(--surface);box-shadow:0 14px 34px -14px rgba(0,0,0,.6)}
.sd-field textarea,.sd-field textarea:focus{outline:0!important;box-shadow:none!important;border:0!important}
.sd-field textarea{flex:1;resize:none;background:transparent;padding:.6rem 0;font:inherit;font-size:16px;color:var(--text);max-height:110px;min-width:0}
.sd-send{width:42px;height:42px;border-radius:50%;border:0;background:var(--accent-grad);color:#2E2510;cursor:pointer;display:flex;align-items:center;justify-content:center;flex:none}.sd-send svg{width:20px;height:20px}
.sd-vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.sd-face.sd-voice{cursor:pointer;-webkit-tap-highlight-color:transparent}
.sd-face.sd-voice:focus-visible{outline:2px solid var(--accent);outline-offset:4px}
/* Sprachmodus: Sonar-Ringe laufen vom Gesicht weg (Zuhören schneller und kräftiger, Sprechen ruhiger); die übrigen Animationen bleiben */
.sd-face.sd-rec::before,.sd-face.sd-rec::after,.sd-face.sd-speak::before,.sd-face.sd-speak::after{content:"";position:absolute;inset:0;border-radius:50%;border:2px solid var(--sd-gold,#C9A24C);opacity:0;pointer-events:none;z-index:-1;animation:sdsonar 1.7s ease-out infinite}
.sd-face.sd-rec::after,.sd-face.sd-speak::after{animation-delay:.85s}
.sd-face.sd-speak::before,.sd-face.sd-speak::after{animation-duration:2.6s;border-width:1.5px}.sd-face.sd-speak::after{animation-delay:1.3s}
@keyframes sdsonar{0%{transform:scale(1);opacity:.85}100%{transform:scale(2.15);opacity:0}}
@media (prefers-reduced-motion:reduce){.sd-face.sd-rec::before,.sd-face.sd-speak::before{animation:none;transform:scale(1.25);opacity:.6}.sd-face.sd-rec::after,.sd-face.sd-speak::after{display:none}}
.sd-yn{display:flex;gap:.5rem;margin-top:.6rem}
.sd-yn button{flex:1;border-radius:999px;padding:.45rem 1rem;font:inherit;font-weight:600;cursor:pointer;border:1px solid var(--sd-gold,#C9A24C);background:transparent;color:var(--text)}
.sd-yn .sd-yes{background:var(--accent-grad);color:#2E2510;border-color:transparent}
.sd-yn button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
/* weicher Wechsel der Gesichtsausdrücke statt hartem Austausch */
.sd-face svg,.sd-half svg{animation:sd-swap .24s ease-out both}
@keyframes sd-swap{from{opacity:.3;transform:scale(.94)}to{opacity:1;transform:scale(1)}}
@media (prefers-reduced-motion:reduce){.sd-face svg,.sd-half svg{animation:none!important}}
.sd-fab:focus-visible,.sd-x:focus-visible,.sd-hist:focus-visible,.sd-send:focus-visible,.sd-pager button:focus-visible,.sd-sugg button:focus-visible,.sd-list button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
@media (prefers-reduced-motion:reduce){.sd-face,.sd-ov,.sd-bubble,.sd-sugg{transition:none!important;animation:none!important}.sd-face *,.sd-done svg{animation:none!important}}
/* Dunkelmodus: Blase und Gedankenkreise dunkel, mit feinem Goldrand für Kontrast zum abgedunkelten Hintergrund */
:root[data-theme="dark"] .sd-bubble,:root[data-theme="dark"] .sd-tail{background:#2A2417;color:#F4ECD6;box-shadow:0 26px 50px -18px rgba(0,0,0,.7),0 0 0 1px rgba(228,200,120,.3)}
:root[data-theme="dark"] .sd-tail{box-shadow:0 8px 16px -6px rgba(0,0,0,.6),0 0 0 1px rgba(228,200,120,.3)}
:root[data-theme="dark"] .sd-q,:root[data-theme="dark"] .sd-pager,:root[data-theme="dark"] .sd-list h3{color:#A99C79}
:root[data-theme="dark"] .sd-link,:root[data-theme="dark"] .sd-list li button i{color:#E4C878}
:root[data-theme="dark"] .sd-err{color:#F08A82}
:root[data-theme="dark"] .sd-pager button{background:#3A3220;color:#F4ECD6}
:root[data-theme="dark"] .sd-list li button{color:#F4ECD6}
:root[data-theme="dark"] .sd-list li button:hover{background:#3A3220}
/* Dünner Goldrand um Blase und Gedankenkreise (hell und dunkel) */
.sd-bubble,.sd-tail{box-shadow:0 26px 50px -18px rgba(0,0,0,.6),0 0 0 1.5px #CDA949}
.sd-tail{box-shadow:0 8px 16px -6px rgba(0,0,0,.55),0 0 0 1.5px #CDA949}
:root[data-theme="dark"] .sd-bubble{box-shadow:0 26px 50px -18px rgba(0,0,0,.7),0 0 0 1.5px #D9B65A}
:root[data-theme="dark"] .sd-tail{box-shadow:0 8px 16px -6px rgba(0,0,0,.6),0 0 0 1.5px #D9B65A}

/* Gedankenblase (Punkte) wird zur Sprechblase: Blase wächst aus der Ecke am Gesicht, die Kreise schrumpfen, der Zipfel wächst */
:root{--sd-gold:#CDA949}:root[data-theme="dark"]{--sd-gold:#D9B65A}
.sd-bubble.sd-thought{width:96px;left:calc(50% + 34px);bottom:calc(100% - var(--cy) + 114px);border-radius:32px}
.sd-bubble.sd-speech~.sd-tail{opacity:0;transform:scale(.15)}
.sd-bubble.sd-thought~.sd-tail{opacity:1;transform:none}
.sd-bubble.sd-speech::after{content:"";position:absolute;bottom:-11px;left:calc(50% + 14px);width:20px;height:20px;background:inherit;border-right:1.5px solid var(--sd-gold);border-bottom:1.5px solid var(--sd-gold);border-radius:0 0 7px 0;transform:translateX(-50%) rotate(45deg);animation:sd-tip .45s .22s var(--ease-spring) both}
@keyframes sd-tip{from{transform:translateX(-50%) rotate(45deg) scale(0)}to{transform:translateX(-50%) rotate(45deg) scale(1)}}
@keyframes sd-morph{0%{opacity:.2;transform:translate(-34px,34px) scale(.3)}55%{opacity:1}100%{opacity:1;transform:none}}
@keyframes sd-think-in{from{opacity:0;transform:scale(.5)}to{opacity:1;transform:none}}
.sd-bubble.sd-speech.sd-anim{animation:sd-morph .55s var(--ease-spring) both}
.sd-bubble.sd-thought.sd-anim{animation:sd-think-in .35s var(--ease-spring) both}
.sd-bubble.sd-speech.sd-anim .sd-scroll,.sd-bubble.sd-speech.sd-anim .sd-list,.sd-bubble.sd-speech.sd-anim .sd-pager{animation:sd-in .4s .18s both}
.sd-dots{display:flex;gap:7px;justify-content:center;align-items:center;padding:1.05rem 0;color:#C9A24C}
.sd-dots i{width:9px;height:9px;border-radius:50%;background:currentColor;opacity:.3;animation:sd-dot 1s ease-in-out infinite}
.sd-dots i:nth-child(2){animation-delay:.15s}.sd-dots i:nth-child(3){animation-delay:.3s}
@keyframes sd-dot{0%,100%{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-4px)}}
@media (prefers-reduced-motion:reduce){.sd-bubble,.sd-bubble::after,.sd-tail,.sd-dots i{animation:none!important;transition:none!important}}

/* Niedrige Fenster (z. B. Safari mit Leisten): kleineres Gesicht, tiefer, weniger Vorschläge, damit nichts überlappt */
@container sdstage (max-height:511px){
  .sd-center{--cy:57%}
  .sd-face{width:112px;height:112px;left:calc(50% - 56px);top:calc(var(--cy) - 56px)}
  .sd-face svg{width:92px;height:92px}
  .sd-bubble{max-height:calc(var(--cy) - 104px);bottom:calc(100% - var(--cy) + 104px)}
  .sd-bubble.sd-thought{bottom:calc(100% - var(--cy) + 88px)}
  .sd-t1{top:calc(var(--cy) - 50px)}.sd-t2{top:calc(var(--cy) - 80px)}
  .sd-sugg{top:calc(var(--cy) + 74px);gap:.4rem}.sd-sugg button{padding:.6rem .95rem}
  .sd-sugg button:nth-child(3){display:none}
}
@container sdstage (max-height:330px){.sd-sugg button:nth-child(2){display:none}}

/* Nach einer Frage (Denken, Antwort, Liste): Gesicht rutscht etwas tiefer, damit die Blase mehr Platz hat */
.sd-center.sd-low{--cy:64%}
@container sdstage (max-height:511px){.sd-center.sd-low{--cy:67%}}

/* Niedrige Fenster nach einer Frage: kompakte Blase, mehr Platz */
@container sdstage (max-height:511px){
  .sd-center.sd-low{--cy:72%}
  .sd-center.sd-low .sd-face{width:100px;height:100px;left:calc(50% - 50px);top:calc(var(--cy) - 50px)}
  .sd-center.sd-low .sd-face svg{width:82px;height:82px}
  .sd-center.sd-low .sd-bubble{bottom:calc(100% - var(--cy) + 92px);max-height:calc(var(--cy) - 92px)}
  .sd-center.sd-low .sd-bubble.sd-thought{bottom:calc(100% - var(--cy) + 76px)}
  .sd-center.sd-low .sd-t1{top:calc(var(--cy) - 46px)}.sd-center.sd-low .sd-t2{top:calc(var(--cy) - 72px)}
  .sd-q{display:none}.sd-a{font-size:.95rem;line-height:1.45}.sd-scroll{padding-top:.9rem}
}

/* Handy: Die Firmenwahl oben links darf nicht unter den Halbkreis in der Mitte reichen */
@media (max-width:860px){.co-sw:not(.co-side){max-width:calc(50vw - 3.9rem)}}

/* ── Stempeluhr: die Uhr ist der Knopf, Funktionen schweben drumherum ───── */
.sc-status{margin:.1rem 0 0;font-size:.88rem;font-weight:700;color:var(--text-secondary)}
.sc-clock{position:relative;grid-column:1/-1;grid-row:2;justify-self:center;margin:1.7rem 0;width:min(236px,60vw);aspect-ratio:1;border-radius:50%;border:0;padding:0;cursor:pointer;color:var(--text);
  /* Muster: feine blaugraue Strahlen und goldene Ringe (Komplementärfarben), zur Mitte hin ausgeblendet */
  background:radial-gradient(circle at 50% 50%,#FFFDF9 0,#FFFDF9 16%,rgba(255,253,249,0) 58%),
    repeating-conic-gradient(from 0deg at 50% 50%,rgba(79,114,134,.055) 0 1.5deg,transparent 1.5deg 7.5deg),
    repeating-radial-gradient(circle at 50% 50%,rgba(201,162,76,.12) 0 1px,transparent 1px 12px),#FFFDF9;
  box-shadow:0 30px 60px -22px rgba(60,40,0,.45),inset 0 0 0 9px #EFE6CF,inset 0 0 0 10px rgba(180,150,70,.35);transition:transform .15s var(--ease-out,ease)}
.sc-clock:active{transform:scale(.97)}
.sc-clock:focus-visible{outline:3px solid var(--accent);outline-offset:6px}
:root[data-theme="dark"] .sc-clock{background:radial-gradient(circle at 50% 50%,#1D1A13 0,#1D1A13 16%,rgba(29,26,19,0) 58%),
    repeating-conic-gradient(from 0deg at 50% 50%,rgba(111,156,181,.09) 0 1.5deg,transparent 1.5deg 7.5deg),
    repeating-radial-gradient(circle at 50% 50%,rgba(228,200,120,.11) 0 1px,transparent 1px 12px),#1D1A13;box-shadow:0 30px 60px -22px rgba(0,0,0,.7),inset 0 0 0 9px #26221A,inset 0 0 0 10px #4B4231}
.sc-clock .tk{position:absolute;left:50%;top:0;width:3px;height:100%;margin-left:-1.5px;transform:rotate(calc(var(--r)*1deg));pointer-events:none}
.sc-clock .tk::before{content:"";position:absolute;top:7%;left:0;width:3px;height:4.2%;border-radius:2px;background:#CBBB90}
.sc-clock .tk.m::before{height:6.8%;background:#2E2510}
:root[data-theme="dark"] .sc-clock .tk::before{background:#6B5E3F}
:root[data-theme="dark"] .sc-clock .tk.m::before{background:#E6CB7E}
.sc-clock .hd{position:absolute;left:50%;bottom:50%;transform-origin:50% 100%;border-radius:4px;background:#2E2510;pointer-events:none}
:root[data-theme="dark"] .sc-clock .hd{background:#F3ECDE}
.sc-clock .hd.h{width:2.4%;height:24%;margin-left:-1.2%}
.sc-clock .hd.mn{width:1.6%;height:35%;margin-left:-.8%}
.sc-clock .hd.s{width:.7%;height:39%;margin-left:-.35%;background:var(--danger)!important}
.sc-clock .dot{position:absolute;left:50%;top:50%;width:5%;height:5%;margin:-2.5%;border-radius:50%;background:#2E2510;border:3px solid var(--danger);pointer-events:none}
:root[data-theme="dark"] .sc-clock .dot{background:#F3ECDE}
/* Ring: füllt sich im Uhrzeigersinn, ein Umlauf = 1 Stunde */
.sc-ringbg{position:absolute;inset:-14px;border-radius:50%;border:1px dashed var(--border-strong);pointer-events:none}
.sc-ring{position:absolute;inset:-14px;border-radius:50%;pointer-events:none;opacity:0;transition:opacity .3s;
  background:conic-gradient(var(--success-text) calc(var(--p,0)*1%),transparent 0);-webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 6px),#000 calc(100% - 5px));mask:radial-gradient(farthest-side,transparent calc(100% - 6px),#000 calc(100% - 5px))}
.sc-rdot{position:absolute;inset:-14px;pointer-events:none;opacity:0;transition:opacity .3s;transform:rotate(var(--a,0deg))}
.sc-rdot::before{content:"";position:absolute;left:50%;top:-1px;width:14px;height:14px;margin-left:-7px;border-radius:50%;background:var(--success-text);box-shadow:0 0 0 4px #FFFDF9,0 0 14px 2px rgba(28,122,61,.5)}
:root[data-theme="dark"] .sc-rdot::before{box-shadow:0 0 0 4px #1D1A13,0 0 14px 2px rgba(115,212,147,.5)}
.sc-stage.on .sc-ring,.sc-stage.on .sc-rdot{opacity:1}
.sc-mid{position:absolute;left:50%;top:63%;transform:translateX(-50%);text-align:center;pointer-events:none;padding:.35rem .8rem;border-radius:12px;background:#FFFDF9;box-shadow:0 0 0 1px var(--border);white-space:nowrap}
:root[data-theme="dark"] .sc-mid{background:#1D1A13}
.sc-mid b{display:block;font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:var(--accent-text)}
.sc-stage.on .sc-mid b{color:var(--success-text)}
.sc-el{display:block;font-size:.8rem;color:var(--text-secondary);font-variant-numeric:tabular-nums}
.sc-stage.on .sc-el{font-size:1.05rem;font-weight:800;color:var(--text)}
.sc-laps{display:flex;gap:4px;justify-content:center;margin-top:3px;min-height:0}
.sc-laps i{width:7px;height:7px;border-radius:50%;background:var(--success-text)}
/* schwebende Funktionen */
.sc-chip{position:relative;display:flex;align-items:center;gap:.6rem;padding:.6rem .85rem;border-radius:16px;background:var(--surface);border:1px solid var(--border);box-shadow:0 14px 30px -12px rgba(60,40,0,.35);
  font:inherit;color:var(--text);text-align:left;cursor:pointer;animation:scFloat 7s ease-in-out infinite;line-height:1.25;z-index:2;min-width:0}
:root[data-theme="dark"] .sc-chip{background:rgba(38,34,26,.94);box-shadow:0 14px 30px -10px rgba(0,0,0,.6)}
.sc-chip b{display:block;font-size:.84rem}
.sc-chip em{display:block;font-style:normal;font-size:.72rem;color:var(--text-secondary)}
.sc-chip i{width:32px;height:32px;border-radius:10px;display:grid;place-items:center;font-style:normal;flex:none;background:var(--accent-tint);color:var(--accent-text)}
.sc-chip.go i{background:var(--success-tint);color:var(--success-text)}
.sc-chip select{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;font-size:16px}
@media (prefers-reduced-motion:reduce){.sc-chip{animation:none}}
@media (max-width:420px){.sc-chip{padding:.5rem .6rem;gap:.5rem}.sc-chip i{width:28px;height:28px}.sc-chip b{font-size:.78rem}.sc-chip em{display:none}.sc-chip #breakStatus,#breakBtn em{display:block;font-size:.68rem}}

/* Raster rund um die Uhr: oben Pause/Tätigkeit, Mitte die Uhr, darunter Pauschale/Nachtragen und Pause gesamt/Notiz. Nichts überlappt. */
.sc-stage{display:grid;grid-template-columns:1fr 1fr;gap:1.1rem .6rem;align-items:stretch;max-width:460px;margin:.8rem auto .4rem}
#backdateBtn,#breakBtn,#activityRow{grid-row:1}
#flatBtn,#manualEntryBtn{grid-row:3}
.sc-extras{display:contents}
.sc-extras>.sc-chip{grid-row:4}
.sc-stage:not(.on) #backdateBtn{grid-column:1/-1;justify-self:center;width:auto}
.sc-chip>span{min-width:0;flex:1}
.sc-chip.sc-brk{cursor:default}
.sc-chip input[type=text],.sc-chip input[type=number]{margin:0;border:0;background:transparent;padding:.05rem 0;font-size:.84rem;color:var(--text);box-shadow:none;border-radius:0;min-width:0;width:100%}
.sc-chip input:focus{outline:none;box-shadow:none}
.sc-chip.sc-note:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-tint)}
.sc-step{display:flex!important;align-items:center;gap:.3rem}
.sc-step input{width:2.4ch!important;min-width:2.4ch;text-align:center;font-weight:800;font-size:.95rem!important;font-variant-numeric:tabular-nums;-moz-appearance:textfield;appearance:textfield}
.sc-step input::-webkit-outer-spin-button,.sc-step input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.sc-step button{width:26px;height:26px;border-radius:50%;border:1px solid var(--border-strong);background:var(--surface-alt);color:var(--text);font:inherit;font-size:1rem;font-weight:700;line-height:1;cursor:pointer;padding:0;display:grid;place-items:center;flex:none;transition:transform .1s ease,background .15s}
.sc-step button:active{transform:scale(.9);background:var(--accent-tint)}
.sc-step em{font-style:normal;font-size:.72rem;color:var(--text-secondary)}
@keyframes scFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}

/* Pause läuft: Ring und Beschriftung werden bernsteinfarben, die Uhr zählt trotzdem weiter */
.sc-stage.paused .sc-ring{background:conic-gradient(var(--warning-text) calc(var(--p,0)*1%),transparent 0)}
.sc-stage.paused .sc-rdot::before{background:var(--warning-text)}
.sc-stage.on.paused .sc-mid b{color:var(--warning-text)}

/* Zickzack statt Reihen: Karten wechseln links/rechts und sitzen mal höher, mal tiefer; Breite folgt dem Inhalt. Das Raster sorgt dafür, dass nichts überlappt. */
.sc-stage{align-items:start;gap:1rem .6rem}
.sc-chip{align-self:start;max-width:100%}
#backdateBtn,#breakBtn{grid-row:1;justify-self:start}
#activityRow{grid-row:1;justify-self:end;margin-top:2.6rem}
#flatBtn{grid-row:3;justify-self:start;margin-top:2.2rem}
#manualEntryBtn{grid-row:3;justify-self:end}
.sc-extras>.sc-brk{grid-row:4;justify-self:start}
.sc-extras>.sc-note{grid-row:4;justify-self:end;margin-top:2.4rem}
.sc-stage:not(.on) #backdateBtn{justify-self:center}
.sc-clock{margin:1.3rem 0}

/* Gruppiert: oben links Pause + Pausenminuten, oben rechts Tätigkeit + Notiz, unten Pauschale + Nachtragen */
.sc-clock{grid-row:3}
#flatBtn,#manualEntryBtn{grid-row:4}
#flatBtn{margin-top:0}
#manualEntryBtn{margin-top:2.2rem}
.sc-extras>.sc-brk{grid-row:2;margin-top:.9rem}
.sc-extras>.sc-note{grid-row:2;margin-top:0}
.sc-stage:not(.on) .sc-clock{grid-row:2}
.sc-stage:not(.on) #flatBtn,.sc-stage:not(.on) #manualEntryBtn{grid-row:3}

/* ── Endgültig: Karten schweben frei rund um die Uhr (wie im ersten Entwurf), nichts überlappt untereinander ── */
.sc-stage{display:block;position:relative;height:500px;max-width:460px;margin:.9rem auto .4rem}
.sc-stage:not(.on){height:340px}
.sc-clock{position:absolute;left:50%;top:50%;margin:0;transform:translate(-50%,-50%)}
.sc-clock:active{transform:translate(-50%,-50%) scale(.97)}
.sc-chip{position:absolute;margin:0;max-width:52%}
.sc-extras{display:contents}
/* links: Pause, Pausenminuten, Pauschale */
#breakBtn{left:0;top:36px}
.sc-extras>.sc-brk{left:0;right:auto;top:224px;max-width:46%}
#flatBtn{left:0;right:auto;top:350px}
/* rechts: Tätigkeit, Notiz, Nachtragen */
#activityRow{right:0;left:auto;top:92px}
.sc-extras>.sc-note{right:0;left:auto;top:224px;max-width:46%}
#manualEntryBtn{right:0;left:auto;top:424px}
.sc-brk i,.sc-note i{display:none}
.sc-note input{width:100%;min-width:0}
/* vor dem Einstempeln: Start vergessen oben links, Pauschale rechts oben am Uhrrand, Nachtragen links unten */
#backdateBtn{left:0;right:auto;top:6px;justify-self:auto}
.sc-stage:not(.on) #backdateBtn{left:0;top:6px;width:auto}
.sc-stage:not(.on) #flatBtn{left:auto;right:0;top:22%}
.sc-stage:not(.on) #manualEntryBtn{left:0;right:auto;top:auto;bottom:11%}
.sc-stage.on{margin-bottom:1.1rem}

/* Feinjustierung: nur der Uhrrand wird überlappt, Zeiger und Beschriftung bleiben frei */
#breakBtn{left:0;top:40px}
.sc-extras>.sc-note{right:0;left:auto;top:0;width:112px;max-width:112px}
#activityRow{right:0;left:auto;top:112px}
.sc-extras>.sc-brk{left:0;right:auto;top:330px;width:max-content;max-width:46%}
#flatBtn{left:0;right:auto;top:440px}
#manualEntryBtn{right:0;left:auto;top:376px}
.sc-stage:not(.on) #flatBtn{left:auto;right:0;top:22%}
.sc-stage:not(.on) #manualEntryBtn{left:0;right:auto;top:auto;bottom:11%}

/* mehr Luft: auch bei 360 px Breite keine Berührung */
.sc-stage{height:530px}
#activityRow{top:98px}
#manualEntryBtn{top:372px}
#flatBtn{top:462px}
.sc-extras>.sc-brk{top:318px}

/* ── Endlayout: Karten hängen nicht auf der Uhr, Platz für das Schloss unten, verschiebbar ── */
.sc-stage{height:600px}
.sc-stage:not(.on){height:470px}
.sc-clock{top:290px}
.sc-stage:not(.on) .sc-clock{top:230px}
.sc-chip{max-width:48%}
/* geöffnet: Karten oberhalb und unterhalb der Uhr, nur der gestrichelte Ring wird berührt */
.sc-stage.on #scNote{right:0;left:auto;top:0;width:112px;max-width:112px}
.sc-stage.on #breakBtn{left:0;right:auto;top:20px}
.sc-stage.on #activityRow{right:0;left:auto;top:76px}
.sc-stage.on #scBrk{left:0;right:auto;top:102px;width:max-content;max-width:46%}
.sc-stage.on #manualEntryBtn{right:0;left:auto;top:442px}
.sc-stage.on #flatBtn{left:0;right:auto;top:476px}
/* vor dem Einstempeln */
.sc-stage:not(.on) #backdateBtn{left:0;right:auto;top:0;width:auto}
.sc-stage:not(.on) #flatBtn{left:auto;right:0;top:44px}
.sc-stage:not(.on) #manualEntryBtn{left:0;right:auto;top:374px;bottom:auto}
/* Schloss unten mittig */
.sc-lockbar{position:absolute;left:0;right:0;bottom:0;height:44px;display:flex;align-items:center;justify-content:center;gap:.7rem;z-index:3;pointer-events:none}
.sc-lockbar>*{pointer-events:auto}
.sc-lock{width:44px;height:44px;border-radius:50%;border:1px solid var(--border-strong);background:var(--surface);color:var(--text-secondary);display:grid;place-items:center;cursor:pointer;padding:0;box-shadow:0 8px 18px -8px rgba(60,40,0,.35);transition:transform .12s ease,background .15s,color .15s}
.sc-lock:active{transform:scale(.92)}
.sc-lock .open{display:none}
.sc-lock[aria-pressed="true"]{background:var(--accent-tint);color:var(--accent-text);border-color:var(--accent)}
.sc-lock[aria-pressed="true"] .closed{display:none}
.sc-lock[aria-pressed="true"] .open{display:block}
.sc-reset{border:1px solid var(--border-strong);background:var(--surface);color:var(--text);border-radius:999px;padding:.35rem .8rem;font:inherit;font-size:.78rem;font-weight:700;cursor:pointer}
.sc-reset[hidden]{display:none}
/* Bearbeitungsmodus: Karten sind greifbar, nichts löst eine Aktion aus */
.sc-editing .sc-chip{touch-action:none;cursor:grab;outline:2px dashed var(--accent);outline-offset:3px;animation:none}
.sc-editing .sc-chip *{pointer-events:none}
.sc-editing .sc-clock{opacity:.85}
.sc-chip.dragging{cursor:grabbing;z-index:6;box-shadow:0 22px 40px -14px rgba(60,40,0,.5);transition:none}
.sc-stage:not(.on){height:500px}
.sc-stage:not(.on) #manualEntryBtn{top:368px}
/* alte Abstände aus früheren Anordnungen dürfen die Positionen nicht verschieben */
#stampStage .sc-chip{margin:0}
.sc-stage.on #breakBtn{top:14px}
.sc-chip em{white-space:nowrap}

/* Größe ändern: Anfasser an der Ecke, Skalierung ohne die Schwebe-Animation zu stören */
.sc-chip{transform-origin:0 0}
.sc-grip{display:none}
.sc-editing .sc-grip{display:block;position:absolute;right:-11px;bottom:-11px;width:24px;height:24px;border-radius:50%;background:var(--accent);border:2px solid var(--surface);box-shadow:0 4px 10px -2px rgba(60,40,0,.45);cursor:nwse-resize;touch-action:none}
.sc-editing .sc-chip .sc-grip{pointer-events:auto}
.sc-grip::before{content:"";position:absolute;inset:6px;border-right:2px solid var(--accent-contrast);border-bottom:2px solid var(--accent-contrast);transform:translate(-1px,-1px)}

/* Fußnote unter dem Rechnungsfuß */
.inv .inv-note{margin-top:8px;font-size:.62rem;line-height:1.35;color:#8a8a8a}

/* Tätigkeit wählen: Suchfenster */
.sc-chip select{pointer-events:none}
.ap-ov{position:fixed;inset:0;z-index:2000;background:rgba(20,15,5,.5);display:flex;align-items:flex-end;justify-content:center;animation:fadeIn .15s ease both}
.ap-sheet{background:var(--surface);width:min(520px,100%);max-height:80vh;border-radius:22px 22px 0 0;display:flex;flex-direction:column;box-shadow:var(--shadow-pop);animation:sheetUp .22s var(--ease-out) both;padding-bottom:env(safe-area-inset-bottom)}
@media (min-width:700px){.ap-ov{align-items:center}.ap-sheet{border-radius:22px;max-height:70vh}}
.ap-head{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.1rem .5rem;font-size:1.05rem}
.ap-x{border:0;background:var(--surface-alt);color:var(--text-secondary);width:32px;height:32px;border-radius:50%;cursor:pointer;font-size:.95rem}
.ap-search{margin:.2rem 1.1rem .6rem;width:auto;font-size:16px}
.ap-list{overflow-y:auto;padding:0 .6rem 1rem;-webkit-overflow-scrolling:touch}
.ap-grp{font-size:.68rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--text-secondary);padding:.8rem .6rem .25rem}
.ap-row{display:flex;flex-direction:column;align-items:flex-start;gap:.05rem;width:100%;text-align:left;border:0;background:transparent;color:var(--text);font:inherit;padding:.65rem .6rem;border-radius:12px;cursor:pointer}
.ap-row span{font-weight:700;font-size:.95rem}
.ap-row small{color:var(--text-secondary);font-size:.76rem}
.ap-row:hover,.ap-row:focus-visible{background:var(--surface-alt);outline:none}
.ap-row.on{background:var(--accent-tint);box-shadow:inset 3px 0 0 var(--accent)}
.ap-empty{text-align:center;color:var(--text-secondary);padding:1.6rem 1rem}
.act-pick{display:flex;align-items:center;justify-content:space-between;gap:.6rem;width:100%;text-align:left;border:1px solid var(--border-strong);background:var(--surface-alt);color:var(--text);font:inherit;font-size:1rem;padding:.7rem .85rem;border-radius:var(--radius-sm);cursor:pointer}
/* Letzte Einträge */
.rc-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem}
.rc-all{font-size:.8rem;font-weight:700;color:var(--accent-text);text-decoration:none}
.rc-list{margin-top:.5rem}
.rc-row{display:flex;justify-content:space-between;gap:.8rem;align-items:flex-start;padding:.65rem 0;border-top:1px solid var(--border)}
.rc-row:first-child{border-top:0}
.rc-main b{display:block;font-size:.9rem}
.rc-main span{display:block;font-size:.84rem;color:var(--text-secondary)}
.rc-main em{display:block;font-style:normal;font-size:.72rem;color:var(--text-secondary);margin-top:.1rem}
.rc-warn{color:var(--warning-text)!important;font-weight:700}
.rc-right{font-weight:800;font-variant-numeric:tabular-nums;white-space:nowrap}
.rc-run{color:var(--success-text)}
.rc-empty{color:var(--text-secondary);padding:.6rem 0}

/* Suchfenster: Kundenflächen und Zurück-Knopf */
.ap-back{border:0;background:var(--surface-alt);color:var(--text);width:32px;height:32px;border-radius:50%;cursor:pointer;font-size:1rem;margin-right:.6rem;flex:none}
.ap-back[hidden]{display:none}
.ap-head .ap-title{flex:1}
.ap-cust{display:flex;align-items:center;justify-content:space-between;gap:.8rem;width:100%;text-align:left;border:1px solid var(--border);background:var(--surface-alt);color:var(--text);font:inherit;padding:.85rem .95rem;border-radius:14px;cursor:pointer;margin:.3rem 0}
.ap-cust span{font-weight:800;font-size:1rem}
.ap-cust small{color:var(--text-secondary);font-size:.78rem;white-space:nowrap}
.ap-cust:hover,.ap-cust:focus-visible{border-color:var(--accent);outline:none}
.ap-cust::after{content:"›";color:var(--text-secondary);font-size:1.3rem;line-height:1;margin-left:.2rem}
.ap-list{padding:0 1.1rem 1rem}

/* Auswahl direkt auf der Seite statt im Fenster */
.ap-inline{margin:.8rem auto .4rem;max-width:460px;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface-alt);padding:.3rem 0 .6rem;animation:fadeIn .15s ease both}
.ap-inline[hidden]{display:none}
.ap-inline .ap-list,.act-field .ap-list{max-height:min(62vh,520px);overflow-y:auto}
.act-field .ap-head{padding:.4rem .2rem}
.act-field .ap-search{margin-left:.2rem;margin-right:.2rem}
.act-field .ap-list{max-height:40vh;padding:0 .2rem .4rem}
.act-field .ap-head .ap-title{font-size:.95rem}

.ap-inline{display:flex;flex-direction:column;box-sizing:border-box}
.ap-inline[hidden]{display:none}
.ap-inline .ap-list{flex:1;max-height:none;min-height:0}
.ap-inline .ap-search{width:calc(100% - 2.2rem);box-sizing:border-box}
.act-field .ap-search{display:block;width:calc(100% - .4rem);box-sizing:border-box}

.ap-inline{margin:.8rem auto 1.1rem}
/* Kundenzeile: Name links, Anzahl rechtsbündig direkt vor dem Pfeil */
.ap-cust span{flex:1;min-width:0}
.ap-cust small{margin-left:auto;text-align:right}

/* Meine Verschiebungsanträge */
.rq-row{display:flex;justify-content:space-between;gap:.8rem;align-items:flex-start;padding:.7rem 0;border-top:1px solid var(--border)}
.rq-row:first-child{border-top:0}
.rq-main b{display:block;font-size:.88rem}
.rq-main span,.rq-main small{display:block;font-size:.8rem;color:var(--text-secondary);margin-top:.1rem}
.rq-side{display:flex;flex-direction:column;align-items:flex-end;gap:.35rem;white-space:nowrap}
.rq-side .ab-link{border:0;background:none;color:var(--accent-text);font:inherit;font-size:.8rem;font-weight:700;cursor:pointer;padding:0;text-decoration:underline}

.sur-box{margin:.8rem 0;border:1px solid var(--border,#d8d2c4);border-radius:10px;padding:.5rem .8rem}
.sur-box>summary{cursor:pointer;font-weight:600}
.sur-row{display:grid;grid-template-columns:4.4rem minmax(0,1fr) 4.6rem;gap:.4rem;align-items:center;margin:.3rem 0}
.sur-row span{white-space:nowrap}
.sur-row input,.sur-row select{width:100%;min-width:0;margin:0;padding-left:.5rem;padding-right:.3rem}

/* Scott: Wegweiser (Scott bleibt in der Lasche oben, die Sprechblase erklärt Schritt für Schritt, die Markierung zeigt, wo man tippt) */
#sdGuide{position:fixed;inset:0;z-index:39;pointer-events:none;animation:sdg-fade .9s ease both}
@keyframes sdg-fade{from{opacity:0}to{opacity:1}}
.sdg-ring{position:fixed;border:3px solid var(--accent);box-shadow:0 0 0 9999px rgba(24,19,8,.55),0 0 28px 4px rgba(210,183,95,.75);animation:sdg-pulse 2s ease-in-out .9s infinite;transition:left .45s ease,top .45s ease,width .45s ease,height .45s ease;pointer-events:none}
@keyframes sdg-pulse{0%,100%{box-shadow:0 0 0 9999px rgba(24,19,8,.55),0 0 18px 2px rgba(210,183,95,.55)}50%{box-shadow:0 0 0 9999px rgba(24,19,8,.55),0 0 34px 8px rgba(210,183,95,.95)}}
.sdg-line{position:fixed;left:0;top:0;pointer-events:none;overflow:visible}
.sdg-path{fill:none;stroke:var(--accent);stroke-width:2.5;stroke-linecap:round;stroke-dasharray:3 9;animation:sdg-flow 1.4s linear infinite;opacity:.9}
@keyframes sdg-flow{to{stroke-dashoffset:-24}}
.sdg-bub{position:fixed;pointer-events:auto;background:var(--surface,#fff);color:var(--text,#1d1b16);border:1px solid var(--accent);border-radius:16px;padding:.8rem 1rem;box-shadow:0 14px 36px -10px rgba(0,0,0,.45);opacity:0;transform:translateY(-12px) scale(.96);transform-origin:50% -14px;transition:opacity .7s ease,transform .7s cubic-bezier(.2,.8,.2,1)}
.sdg-bub.on{opacity:1;transform:none}
.sdg-bub::before{content:"";position:absolute;left:50%;top:-8px;width:14px;height:14px;background:inherit;border-left:1px solid var(--accent);border-top:1px solid var(--accent);transform:translateX(-50%) rotate(45deg);border-radius:3px 0 0 0}
.sdg-step{font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--accent-text,#8E7226);font-weight:700}
.sdg-h{margin:.15rem 0 .2rem;font-weight:700;font-size:1.05rem}
.sdg-t{margin:.3rem 0 .1rem;line-height:1.45}
.sdg-btns{display:flex;gap:.5rem;justify-content:center;margin-top:.7rem}
.sdg-btn{border:1px solid var(--border,#d8d2c4);background:transparent;color:inherit;border-radius:10px;padding:.4rem .8rem;font:inherit;cursor:pointer}
.sdg-btn.sdg-main{background:var(--accent-grad);border-color:transparent;color:#2E2510;font-weight:600}
.sdg-pulse{animation:sdg-h1 1.4s ease-in-out 4;border-radius:10px}
@keyframes sdg-h1{0%,100%{box-shadow:0 0 0 0 rgba(210,183,95,0)}50%{box-shadow:0 0 0 8px rgba(210,183,95,.55)}}
@media (prefers-reduced-motion:reduce){.sdg-ring,.sdg-pulse,.sdg-path{animation:none!important}.sdg-bub{transition:opacity .2s}}
.sdg-here{border-width:2px}

/* Scott-Wegweiser: Tipp irgendwo zum Fortfahren (ausgegraut, mit Tipp-Animation in der Bildmitte) */
.sdg-catch{position:fixed;inset:0;pointer-events:auto;cursor:pointer;-webkit-tap-highlight-color:transparent}
.sdg-tap{position:fixed;left:0;right:0;display:flex;flex-direction:column;align-items:center;gap:.6rem;pointer-events:none;opacity:0;transition:opacity .8s ease;color:#d9d4c7}
.sdg-tap.on{opacity:.62}
.sdg-hand{position:relative;width:72px;height:72px;display:flex;align-items:center;justify-content:center}
.sdg-hand svg{width:42px;height:42px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;animation:sdg-tapdown 1.8s ease-in-out infinite;transform-origin:50% 90%}
.sdg-hand i{position:absolute;inset:0;border:2px solid currentColor;border-radius:50%;opacity:0;animation:sdg-ripple 1.8s ease-out infinite}
.sdg-hand i+i{animation-delay:.35s}
@keyframes sdg-ripple{0%,30%{transform:scale(.35);opacity:0}40%{opacity:.7}100%{transform:scale(1.15);opacity:0}}
@keyframes sdg-tapdown{0%,100%{transform:translateY(0) rotate(0)}35%{transform:translateY(7px) rotate(-4deg)}50%{transform:translateY(7px) rotate(-4deg)}}
.sdg-tapt{font-size:.98rem;letter-spacing:.04em;text-shadow:0 1px 8px rgba(0,0,0,.5)}
@media (prefers-reduced-motion:reduce){.sdg-hand svg,.sdg-hand i{animation:none!important}}

/* Scott: Stumm-Knopf im Sprachmodus */
.sd-mute{width:42px;height:42px;border-radius:50%;border:1px solid var(--sd-gold,#C9A24C);background:transparent;color:var(--text);cursor:pointer;display:flex;align-items:center;justify-content:center;flex:none}
.sd-mute[hidden]{display:none}
.sd-mute svg{width:20px;height:20px}
.sd-mute.on{background:#B3402F;border-color:#B3402F;color:#fff}
.sd-muted .sd-face{opacity:.72}

.sd-fab:focus,.sd-fab:focus-visible{outline:0}
.sd-fab:focus-visible .sd-half{box-shadow:0 0 0 3px var(--accent),0 10px 22px -6px rgba(150,115,30,.55)}   /* Tastatur-Fokus: runder Ring statt Rechteck */
.sd-fab:focus:not(:focus-visible) .sd-half{outline:0}

/* Scott: Zunge mit milder Radar-Animation und Stumm-Knopf rechts daneben, solange das Gespräch bei geschlossenem Fenster weiterläuft */
.sd-radar .sd-fab::before,.sd-radar .sd-fab::after{content:"";position:absolute;left:0;right:0;bottom:0;top:calc(-1 * var(--sd-stem) - 40px);border:2px solid var(--accent);border-top:0;border-radius:0 0 44px 44px;pointer-events:none;opacity:0;transform-origin:50% 0;animation:sd-radar 3.6s ease-out infinite}
.sd-radar .sd-fab::after{animation-delay:1.8s}
@keyframes sd-radar{0%{opacity:.4;transform:scale(1)}100%{opacity:0;transform:scale(1.45,1.7)}}
.sd-mute-top{position:fixed;z-index:41;top:calc(var(--sd-safe,0px) + 18px);left:calc(50% + 58px);width:40px;height:40px;border-radius:50%;border:1px solid var(--accent);background:var(--surface,#fff);color:var(--text);cursor:pointer;display:none;align-items:center;justify-content:center;box-shadow:0 8px 18px -8px rgba(0,0,0,.5)}
.sd-live-closed .sd-mute-top{display:flex}
.sd-mute-top svg{width:19px;height:19px}
.sd-mute-top.on{background:#B3402F;border-color:#B3402F;color:#fff}
@media (prefers-reduced-motion:reduce){.sd-radar .sd-fab::before,.sd-radar .sd-fab::after{animation:none;opacity:.25}}

/* Logo oben rechts (Schriftzug "stamp." mit goldenem Punkt), führt zur Startseite */
.app-logo{position:absolute;z-index:30;top:calc(var(--sd-safe,0px) + 20px);right:18px;font-family:ui-rounded,"SF Pro Rounded","Avenir Next Rounded",-apple-system,"Helvetica Neue",Arial,sans-serif;font-weight:700;font-size:1.3rem;letter-spacing:-.03em;line-height:1;color:var(--text);text-decoration:none;padding:.3rem .2rem;border-radius:8px;-webkit-tap-highlight-color:transparent}
.app-logo i{font-style:normal;color:var(--accent)}
.app-logo:hover{opacity:.8}
.app-logo:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
@media print{.app-logo{display:none}}

.app-logo{display:flex;align-items:center;gap:.4rem}
.app-logo svg{width:30px;height:30px;flex:none}
.app-logo-sb{display:flex;align-items:center;gap:.5rem;color:var(--text);text-decoration:none;font-family:ui-rounded,"SF Pro Rounded","Avenir Next Rounded",-apple-system,"Helvetica Neue",Arial,sans-serif;font-weight:700;font-size:1.35rem;letter-spacing:-.03em;line-height:1}
.app-logo-sb svg{width:32px;height:32px;flex:none}
.app-logo-sb i{font-style:normal;color:var(--accent)}

/* Scott mittig über dem Inhalt (am Laptop sitzt links die Seitenleiste), Handy: Fenstermitte */
:root{--sd-cx:50%}
@media (min-width:861px){:root{--sd-cx:calc(var(--sidebar-w) + min(1060px, 100vw - var(--sidebar-w)) / 2)}}
.sd-fab{left:var(--sd-cx)}
.sd-mute-top{left:calc(var(--sd-cx) + 58px)}
/* Ungelesen-Punkt in der Navigationsleiste (Handy) */
.nav-dot{position:absolute;top:5px;left:calc(50% + 7px);width:10px;height:10px;border-radius:50%;background:var(--danger,#D9482B);box-shadow:0 0 0 2px var(--surface,#fff);pointer-events:none}
.bn-more-menu .nav-dot{top:50%;left:auto;right:.9rem;transform:translateY(-50%)}

/* Offline-Hinweisband */
.off-banner{position:fixed;left:var(--sd-cx,50%);transform:translateX(-50%);bottom:calc(5.9rem + env(safe-area-inset-bottom));z-index:60;max-width:min(92vw,520px);padding:.55rem .95rem;border-radius:999px;background:#2E2510;color:#F4EEDF;font-size:.82rem;font-weight:600;box-shadow:0 10px 26px -10px rgba(0,0,0,.6);text-align:center;cursor:pointer}
.off-banner.warn{background:#7A1E12}
@media (min-width:861px){.off-banner{bottom:1.4rem}}
.rc-off,.zt-off{display:inline-block;font-size:.66rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--accent-text,#8E7226);background:var(--accent-tint,#FBF3DC);border-radius:6px;padding:.05rem .4rem;margin-left:.3rem}

/* Das Logo sitzt oben auf der Seite und scrollt mit (nicht am Bildschirm festgeklebt wie Scotts Zunge) */

/* Zurück-Link auf Preise und Rechtstexten */
.pr-back{display:inline-flex;align-items:center;gap:.3rem;padding:.4rem .8rem;border-radius:999px;border:1px solid var(--border-strong,var(--border));color:var(--text);text-decoration:none;font-size:.88rem;font-weight:600;white-space:nowrap}
.pr-back:hover{background:var(--surface-alt)}
@media (max-width:640px){.pr-top{flex-wrap:wrap}}

/* Einführungstour für neue Firmen (assets/tour.js) */
.tour-card{text-align:center}
.tour-ico{width:46px;height:46px;color:var(--accent-text);margin:.2rem auto .6rem;display:block}
.tour-card h3{margin:0 0 .5rem !important}
.tour-card p{margin:0 0 1rem;color:var(--text-secondary);font-size:.94rem;line-height:1.5}
.tour-dots{display:flex;justify-content:center;gap:.4rem;margin:0 0 1.1rem}
.tour-dots i{width:7px;height:7px;border-radius:50%;background:var(--border-strong)}
.tour-dots i.on{background:var(--accent-text);width:18px;border-radius:99px}
.tour-rows{text-align:left;margin:0 0 1rem;display:flex;flex-direction:column;gap:.55rem}
.tour-row{display:flex;gap:.8rem;align-items:flex-start;padding:.7rem .8rem;background:var(--surface-alt);border:1px solid var(--border);border-radius:var(--radius-sm)}
.tour-row svg{width:26px;height:26px;flex:0 0 auto;color:var(--accent-text);margin-top:.1rem}
.tour-row b{display:block;font-size:.94rem}
.tour-row small{display:block;color:var(--text-secondary);font-size:.8rem;line-height:1.4;margin-top:.1rem}
.tour-opts{display:flex;flex-direction:column;gap:.5rem;margin:0 0 .9rem}
.tour-opts .btn{width:100%}
.tour-note{font-size:.78rem !important;line-height:1.45;margin:-.4rem 0 1rem !important}
.tour-card:first-child .tour-ico{width:54px;height:54px}

/* Kein Hineinzoomen: Eingabefelder mind. 16px (sonst zoomt iOS beim Antippen hinein), kein Doppeltipp-Zoom */
html{touch-action:manipulation}
@media (pointer:coarse){input,select,textarea{font-size:16px}}

/* Auswahlkarten im Wizard (z. B. Rechnungsrhythmus) */
.wz-opts{display:flex;flex-direction:column;gap:.45rem;margin-bottom:.8rem}
.wz-opt{display:flex;flex-direction:column;align-items:flex-start;gap:.1rem;text-align:left;padding:.7rem .85rem;border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--surface);font:inherit;color:var(--text);cursor:pointer}
.wz-opt b{font-size:.92rem}.wz-opt small{font-size:.76rem;color:var(--text-secondary)}
.wz-opt.on{background:var(--accent-tint);border-color:var(--accent)}
label.chk{display:flex;align-items:center;gap:.55rem;font-size:.9rem;font-weight:600;color:var(--text);margin:0 0 .55rem}
label.chk input{width:auto;margin:0}

.wz-off{display:none!important}

/* Tätigkeit laut Dienstplan: Vorschlag über der Auswahl, im Auswahlfenster ganz oben und fett */
.shift-act-hint{display:flex;align-items:center;justify-content:space-between;gap:.6rem;margin:.5rem 0 0;padding:.55rem .7rem;border-radius:12px;background:var(--accent-tint);box-shadow:inset 3px 0 0 var(--accent);font-size:.9rem}
.shift-act-hint[hidden]{display:none}
.ap-row.plan{background:var(--accent-tint);box-shadow:inset 3px 0 0 var(--accent)}
.ap-row.plan span{font-weight:800}
.next-shift-act{margin-top:.25rem;font-size:.9rem}
.next-shift-note{margin-top:.15rem;font-size:.8rem;color:var(--text-secondary);white-space:pre-wrap}

.wz-xd{display:grid;grid-template-columns:2.2rem 1fr;gap:.35rem .5rem;align-items:center;margin:.6rem 0;padding:.5rem;border-radius:12px;background:var(--surface-alt)}
.wz-xd b{grid-row:span 3}
