/* Unser Kalender – Design-System im Lernportal-Look (eigenständig, keine Kopplung).
   Tokens + Light/Dark. Browser: Wochen-Tabelle. Handy: Tage untereinander. */

@font-face{font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;src:url('/assets/fonts/inter-400.woff2') format('woff2')}
@font-face{font-family:'Inter';font-style:normal;font-weight:600;font-display:swap;src:url('/assets/fonts/inter-600.woff2') format('woff2')}
@font-face{font-family:'Inter';font-style:normal;font-weight:700;font-display:swap;src:url('/assets/fonts/inter-700.woff2') format('woff2')}
@font-face{font-family:'Inter';font-style:normal;font-weight:800;font-display:swap;src:url('/assets/fonts/inter-800.woff2') format('woff2')}

:root{
  --accent:#1f7a4d; --accent-strong:#185e3b; --accent-soft:#DCFCE7; --accent-fg:#1f7a4d;
  --headerbg:#0F1923;
  --bg:#F7F8FA; --panel:#FFFFFF; --panel-2:#F3F4F6; --text:#111827; --muted:#6B7280; --border:#E5E7EB; --border-strong:#D1D5DB;
  --p1:#C8102E; --p1-soft:#FEE2E2; --p1-strong:#991B1B;
  --p2:#1D4ED8; --p2-soft:#EFF6FF; --p2-strong:#1E40AF;
  --amp-gruen:#15803D; --amp-gruen-bg:#DCFCE7;
  --amp-gelb:#B45309;  --amp-gelb-bg:#FEF3C7;
  --amp-rot:#B91C1C;   --amp-rot-bg:#FEE2E2;
  --ring:rgba(31,122,77,.25);
  --shadow-sm:0 1px 2px rgba(0,0,0,.06); --shadow:0 2px 12px rgba(0,0,0,.07);
  --radius:8px; --radius-lg:12px; --header-h:56px; --nav-w:220px;
  color-scheme:light;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --accent:#249a5f; --accent-strong:#1f7a4d; --accent-soft:rgba(36,154,95,.20); --accent-fg:#5fd597;
    --headerbg:#111827;
    --bg:#151B24; --panel:#1E2530; --panel-2:#171f2a; --text:#CBD5E1; --muted:#64748B; --border:#2D3748; --border-strong:#3A4657;
    --p1:#f87171; --p1-soft:#1f0808; --p1-strong:#f87171;
    --p2:#60a5fa; --p2-soft:#0f172a; --p2-strong:#60a5fa;
    --amp-gruen:#4ade80; --amp-gruen-bg:#052e16;
    --amp-gelb:#fbbf24;  --amp-gelb-bg:#1c1100;
    --amp-rot:#f87171;   --amp-rot-bg:#1f0808;
    --ring:rgba(36,154,95,.4);
    --shadow-sm:0 1px 2px rgba(0,0,0,.4); --shadow:0 2px 12px rgba(0,0,0,.35);
    color-scheme:dark;
  }
}
:root[data-theme="dark"]{
  --accent:#249a5f; --accent-strong:#1f7a4d; --accent-soft:rgba(36,154,95,.20); --accent-fg:#5fd597;
  --headerbg:#111827;
  --bg:#151B24; --panel:#1E2530; --panel-2:#171f2a; --text:#CBD5E1; --muted:#64748B; --border:#2D3748; --border-strong:#3A4657;
  --p1:#f87171; --p1-soft:#1f0808; --p1-strong:#f87171;
  --p2:#60a5fa; --p2-soft:#0f172a; --p2-strong:#60a5fa;
  --amp-gruen:#4ade80; --amp-gruen-bg:#052e16;
  --amp-gelb:#fbbf24;  --amp-gelb-bg:#1c1100;
  --amp-rot:#f87171;   --amp-rot-bg:#1f0808;
  --ring:rgba(36,154,95,.4);
  --shadow-sm:0 1px 2px rgba(0,0,0,.4); --shadow:0 2px 12px rgba(0,0,0,.35);
  color-scheme:dark;
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html,body{min-height:100vh}
body{font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--text);font-size:15px;line-height:1.5}
a{text-decoration:none;color:inherit}

/* ── Topbar ── */
.topbar{position:fixed;top:0;left:0;right:0;height:var(--header-h);background:var(--headerbg);z-index:100;display:flex;align-items:center;gap:.8rem;padding:0 1rem;border-bottom:1px solid rgba(255,255,255,.07)}
.brand{display:flex;align-items:center;gap:.6rem;margin-right:auto}
.brand .logo{width:34px;height:34px;display:block}
.brand .logo img{display:block;width:100%;height:100%}
.brand .tt{color:#fff;font-weight:700;font-size:.95rem;line-height:1.1}
.brand .tt small{display:block;font-weight:400;font-size:.68rem;color:rgba(255,255,255,.55)}
.hdr-btn{border:1px solid rgba(255,255,255,.2);background:transparent;color:rgba(255,255,255,.85);border-radius:20px;padding:.3rem .6rem;font:inherit;font-size:.8rem;cursor:pointer;display:inline-flex;align-items:center;gap:.3rem}
.hdr-btn:hover{background:rgba(255,255,255,.1)}
.burger{display:none;background:none;border:none;color:#fff;font-size:1.3rem;cursor:pointer;line-height:1}

.usermenu{position:relative}
.usermenu .uname{display:flex;align-items:center;gap:.5rem;cursor:pointer;padding:.3rem .5rem;border-radius:22px;border:1px solid rgba(255,255,255,.12);background:none;font:inherit;color:#fff}
.usermenu .uname:hover{background:rgba(255,255,255,.08)}
.u-avatar{width:28px;height:28px;border-radius:50%;background:var(--accent);display:grid;place-items:center;color:#fff;font-size:.72rem;font-weight:800}
.u-name{font-size:.82rem;font-weight:600}
.u-role{font-size:.66rem;color:rgba(255,255,255,.5)}
.usermenu .caret{color:rgba(255,255,255,.5);font-size:.7rem}
.usermenu-pop{display:none;position:absolute;right:0;top:calc(100% + 8px);min-width:200px;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);overflow:hidden;z-index:200}
.usermenu.open .usermenu-pop{display:block}
.usermenu-pop a{display:flex;align-items:center;gap:.5rem;padding:.65rem .9rem;font-size:.85rem;color:var(--text)}
.usermenu-pop a:hover{background:var(--bg)}
.usermenu-pop .sep{height:1px;background:var(--border)}
.usermenu-pop a.danger{color:var(--amp-rot)}

/* ── Sidebar ── */
.app-nav{position:fixed;top:var(--header-h);left:0;width:var(--nav-w);height:calc(100vh - var(--header-h));background:var(--panel);border-right:1px solid var(--border);padding:1rem .6rem;overflow-y:auto;display:flex;flex-direction:column;z-index:90}
.nav-group{font-size:.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:.7rem .8rem .3rem}
.nav-item{display:flex;align-items:center;gap:.7rem;padding:.6rem .8rem;border-radius:var(--radius);font-size:.88rem;font-weight:500;color:var(--muted)}
.nav-item .i{width:20px;text-align:center}
.nav-item:hover{background:var(--bg);color:var(--text)}
.nav-item.active{background:var(--accent-soft);color:var(--accent-fg);font-weight:600}
.nav-foot{margin-top:auto;font-size:.72rem;color:var(--muted);padding:.7rem .8rem 0;border-top:1px solid var(--border)}
.nav-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:80}
.nav-overlay.open{display:block}

/* ── Layout ── */
.app-layout{padding-top:var(--header-h);padding-left:var(--nav-w);min-height:100vh}
.app-content{padding:1.5rem 1.75rem;max-width:1300px;margin-inline:auto}
.page-head{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;margin-bottom:1.3rem}
.page-head h1{font-size:1.35rem;font-weight:700;color:var(--text)}
.page-head .lead{font-size:.88rem;color:var(--muted);margin-top:.15rem}
.page-head .spacer{margin-left:auto}

/* ── Buttons ── */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;padding:.55rem 1rem;border-radius:var(--radius);font:inherit;font-size:.85rem;font-weight:600;cursor:pointer;border:1px solid var(--border);background:var(--panel);color:var(--text);transition:background .15s,border-color .15s,color .15s}
.btn:hover{border-color:var(--accent);color:var(--accent)}
.btn.primary{background:var(--accent);border-color:var(--accent-strong);color:#fff}
.btn.primary:hover{background:var(--accent-strong);color:#fff}
.btn.sm{padding:.38rem .7rem;font-size:.8rem}
.btn.icon{width:2.1rem;padding:.45rem}
.btn.block{width:100%}
.btn.danger{color:var(--amp-rot);border-color:var(--border)}
.btn.danger:hover{background:var(--amp-rot-bg);border-color:var(--amp-rot)}

/* ── Cards / Forms ── */
.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.2rem 1.35rem;box-shadow:var(--shadow-sm)}
.card h2,.card h3{font-size:1rem;font-weight:700;margin-bottom:.7rem}
.grid-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1.3rem;align-items:start}
.split{display:grid;grid-template-columns:1fr 340px;gap:1.4rem;align-items:start}
@media (max-width:820px){ .split{grid-template-columns:1fr} }
.field{margin-bottom:1rem}
.field label{display:block;font-size:.8rem;font-weight:600;color:var(--text);margin-bottom:.35rem}
.field .req{color:var(--accent)}
.field input,.field select,.field textarea{width:100%;padding:.6rem .8rem;border:1.5px solid var(--border);border-radius:var(--radius);font:inherit;font-size:.9rem;background:var(--panel);color:var(--text);transition:border-color .15s,box-shadow .15s}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--ring)}
.field .row{display:flex;gap:.6rem}.field .row>*{flex:1}
.form-hint{font-size:.76rem;color:var(--muted);margin-top:.3rem}
.inline-check{display:flex;align-items:center;gap:.5rem;font-weight:500;font-size:.88rem;cursor:pointer}
.inline-check input{width:auto}
.pw-wrap{position:relative}
.pw-wrap input{padding-right:2.7rem}
.pw-toggle{position:absolute;right:.5rem;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;color:var(--muted);font-size:1.05rem;line-height:1;padding:.2rem}
.pw-toggle:hover{color:var(--text)}
.msg{border-radius:var(--radius);padding:.7rem .9rem;font-size:.85rem;font-weight:600;margin-bottom:1rem;border:1px solid transparent}
.msg.err{background:var(--amp-rot-bg);color:var(--amp-rot);border-color:var(--amp-rot)}
.msg.ok{background:var(--amp-gruen-bg);color:var(--amp-gruen);border-color:rgba(21,128,61,.3)}

/* ── Chips / Tags ── */
.chip{display:inline-flex;align-items:center;gap:.3rem;border-radius:6px;padding:.14rem .45rem;font-size:.72rem;font-weight:600;line-height:1.35;max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;vertical-align:middle}
.chip .cdot{width:7px;height:7px;border-radius:50%;flex:none}
.chip.toni{background:var(--p1-soft);color:var(--p1-strong)} .chip.toni .cdot{background:var(--p1)}
.chip.marie{background:var(--p2-soft);color:var(--p2-strong)} .chip.marie .cdot{background:var(--p2)}
.chip.termin{background:var(--bg);border:1px solid var(--border);color:var(--text)}
.chip .time{font-weight:700}
.tag{display:inline-block;font-size:.66rem;font-weight:700;border-radius:20px;padding:.14rem .6rem}
.tag.gruen{background:var(--amp-gruen-bg);color:var(--amp-gruen)} .tag.gelb{background:var(--amp-gelb-bg);color:var(--amp-gelb)} .tag.rot{background:var(--amp-rot-bg);color:var(--amp-rot)} .tag.neutral{background:var(--bg);color:var(--muted);border:1px solid var(--border)}

/* ── Wochen-Navigation + Legende ── */
.wk-nav{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin-bottom:1rem}
.wk-range{font-weight:700;font-size:1.05rem;min-width:11rem}
.legend{display:flex;flex-wrap:wrap;gap:.45rem .9rem;margin:0 0 1rem;font-size:.78rem;color:var(--muted)}
.legend .it{display:inline-flex;align-items:center;gap:.4rem}
.legend .dot{width:11px;height:11px;border-radius:50%}
.legend .amp{width:14px;height:14px;border-radius:4px;border:1px solid var(--border)}

/* ── Browser: Monatsraster (7 Tage nebeneinander) ── */
.calendar{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr)}
.cal-dow{padding:.5rem .4rem;text-align:center;font-size:.64rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);background:var(--bg);border-bottom:1px solid var(--border)}
.cal-cell{min-height:118px;border-right:1px solid var(--border);border-bottom:1px solid var(--border);padding:.35rem .4rem;display:flex;flex-direction:column;gap:.22rem;position:relative;cursor:pointer;transition:filter .12s}
.cal-cell:nth-child(7n){border-right:none}
.cal-cell:hover{filter:brightness(.98)}
.cal-cell.out{opacity:.45}
.cal-cell.a-gruen{background:var(--amp-gruen-bg)} .cal-cell.a-gelb{background:var(--amp-gelb-bg)} .cal-cell.a-rot{background:var(--amp-rot-bg)}
.cal-cell .bar{position:absolute;left:0;top:0;bottom:0;width:3px}
.cal-cell.a-gruen .bar{background:var(--amp-gruen)} .cal-cell.a-gelb .bar{background:var(--amp-gelb)} .cal-cell.a-rot .bar{background:var(--amp-rot)}
.cal-num{font-size:.8rem;font-weight:700;color:var(--muted);align-self:flex-start}
.cal-cell.today .cal-num{color:#fff;background:var(--accent);border-radius:999px;min-width:1.4rem;height:1.4rem;display:inline-flex;align-items:center;justify-content:center;padding:0 .3rem}
.cal-more{font-size:.62rem;color:var(--muted);font-weight:700}
.dshift{display:flex;flex-direction:column;align-items:center;gap:3px;width:100%;text-align:center;margin-top:.15rem}
.dshift-box{border-radius:9px;padding:.32rem 1rem;font-weight:800;font-size:1.35rem;line-height:1.1;min-width:2.6rem}
.dshift-time{font-size:.78rem;font-weight:700;letter-spacing:.01em;color:var(--text)}
.calendar.ro .cal-cell{cursor:default}
.calendar.ro .cal-cell:hover{filter:none}
.dlist.ro .dhd{cursor:default}

/* ── Handy: Tage untereinander ── */
.dlist{display:none;flex-direction:column;gap:.55rem}
.dcard{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;background:var(--panel)}
.dcard .dhd{display:flex;align-items:center;gap:.5rem;padding:.55rem .7rem;border-bottom:1px solid var(--border);cursor:pointer}
.dcard.a-gruen .dhd{background:var(--amp-gruen-bg)} .dcard.a-gelb .dhd{background:var(--amp-gelb-bg)} .dcard.a-rot .dhd{background:var(--amp-rot-bg)}
.dcard.today{box-shadow:inset 0 0 0 2px var(--accent)}
.dcard .dwd{font-weight:700;font-size:.92rem}
.dcard .dsub{color:var(--muted);font-size:.78rem}
.dcard .dst{margin-left:auto}
.dhd .dchip{margin:0 auto;max-width:70%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center;font-size:1.02rem;font-weight:800;border-radius:12px;padding:.45rem 1.15rem;line-height:1.35;box-shadow:0 1px 3px rgba(0,0,0,.14)}
.dbody{padding:.55rem .7rem;display:flex;flex-direction:column;gap:.4rem}
.drow{display:flex;gap:.5rem;align-items:flex-start;font-size:.85rem}
.drow .who{min-width:3.4rem;color:var(--muted);font-weight:600;flex:none}
.drow .val{min-width:0;display:flex;flex-wrap:wrap;gap:.3rem;align-items:center}

/* ── Termin-Liste ── */
.tlist{display:flex;flex-direction:column;gap:.5rem}
.trow{display:flex;align-items:center;gap:.8rem;padding:.7rem .9rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--panel)}
.trow .tic{font-size:1.1rem;flex:none}
.trow .tmeta{flex:1;min-width:0}
.trow .tmeta .n{font-weight:600}
.trow .tmeta .s{font-size:.8rem;color:var(--muted)}

/* ── Dienstarten ── */
.da-list{display:flex;flex-direction:column;gap:.5rem}
.da-row{display:flex;align-items:center;gap:.8rem;padding:.7rem .9rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--panel)}
.da-swatch{width:40px;height:40px;border-radius:9px;display:grid;place-items:center;font-weight:800;font-size:.85rem;flex:none;color:#fff}
.da-meta{flex:1;min-width:0}.da-meta .n{font-weight:600}.da-meta .t{font-size:.8rem;color:var(--muted)}
.da-main{display:flex;align-items:center;gap:.8rem;flex:1;min-width:0}
.da-actions{display:flex;gap:.5rem}

/* ── Modal ── */
.modal-back{position:fixed;inset:0;background:rgba(8,12,22,.5);z-index:150;display:none;align-items:center;justify-content:center;padding:1rem}
.modal-back.open{display:flex}
.modal{width:100%;max-width:460px;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:1.3rem 1.4rem;max-height:92vh;overflow-y:auto}
.modal h3{font-size:1.1rem;font-weight:700;margin-bottom:.15rem}
.modal .modal-date{color:var(--muted);font-size:.85rem;margin-bottom:1rem}
.modal-actions{display:flex;gap:.6rem;margin-top:1.2rem;align-items:center}
.modal-actions .spacer{margin-left:auto}
.da-picker{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:.5rem}
.da-opt{border:1.5px solid var(--border);border-radius:10px;padding:.5rem .4rem;text-align:center;cursor:pointer;background:var(--bg);display:block}
.da-opt:hover{border-color:var(--accent)}
.da-opt.sel{border-color:var(--accent);box-shadow:0 0 0 3px var(--ring)}
.da-opt .k{font-size:1rem;font-weight:800}
.da-opt .z{font-size:.66rem;color:var(--muted);margin-top:.1rem}
.modal-tabs{display:flex;gap:4px;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);padding:3px;margin-bottom:1rem}
.modal-tabs button{flex:1;border:none;background:transparent;color:var(--muted);font:inherit;font-size:.82rem;font-weight:600;padding:.45rem;border-radius:6px;cursor:pointer}
.modal-tabs button.on{background:var(--panel);color:var(--accent);box-shadow:var(--shadow-sm)}
.tabpane[hidden]{display:none}

/* ── Auth ── */
.auth-wrap{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:1.5rem}
.auth-card{position:relative;width:100%;max-width:400px;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:2rem 1.8rem 1.9rem}
.auth-card::before{content:"";position:absolute;left:0;right:0;top:0;height:4px;background:var(--accent);border-radius:var(--radius-lg) var(--radius-lg) 0 0}
.auth-logo{width:58px;height:58px;margin:0 auto;display:block}
.auth-logo img{display:block;width:100%;height:100%}
.auth-card h1{text-align:center;font-size:1.3rem;margin:.6rem 0 .1rem}
.auth-card .sub{text-align:center;color:var(--muted);font-size:.9rem;margin:0 0 1.4rem}

/* ── Responsive: Handy ── */
@media (max-width:820px){
  :root{--nav-w:0px}
  .app-nav{transform:translateX(-100%);transition:transform .22s ease;width:250px}
  .app-nav.open{transform:translateX(0);box-shadow:4px 0 24px rgba(0,0,0,.18)}
  .burger{display:inline-flex}
  .app-content{padding:1rem}
  .brand .tt small{display:none}
  .u-name,.u-role,.usermenu .caret{display:none}
  .da-row{flex-direction:column;align-items:stretch;gap:.7rem}
  .da-actions{display:grid;grid-template-columns:repeat(3,1fr)}
  .da-actions .btn{width:100%;font-size:.76rem;padding:.42rem .3rem}
  .da-actions form{display:block}
  .trow{flex-wrap:wrap}
  .trow .tmeta{flex:1 1 100%}
  .wk-range{min-width:0;flex:1}
  .page-head h1{font-size:1.2rem}
  .grid-2{gap:1rem}
}
@media (max-width:720px){
  .calendar{display:none}
  .dlist{display:flex}
}
@media (max-width:420px){
  .app-content{padding:.8rem}
  .card{padding:1rem}
  .da-picker{grid-template-columns:repeat(auto-fill,minmax(72px,1fr))}
  .modal{padding:1.1rem 1rem}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}
