:root{
  --bg:#f4f5f7;--panel:#ffffff;--panel2:#f9fafb;--text:#1f2937;--muted:#6b7280;--border:#e5e7eb;
  --accent:#2563eb;--accent-soft:#dbeafe;--danger:#dc2626;--hoch:#dc2626;--normal:#d97706;--nice:#16a34a;
  --bg-hoch:#fdeeee;--bg-normal:#fdf7e2;--bg-nice:#ebf7ee;--hover-f:brightness(.97);
  --shadow:0 1px 2px rgba(0,0,0,.05),0 1px 3px rgba(0,0,0,.06);--radius:10px;
  --top:#1e293b;--toptext:#e2e8f0;color-scheme:light;
}
:root[data-theme="dark"]{
  --bg:#0f172a;--panel:#1e293b;--panel2:#172033;--text:#e5e7eb;--muted:#94a3b8;--border:#334155;
  --accent:#60a5fa;--accent-soft:#1e3a5f;--hoch:#f87171;--normal:#fbbf24;--nice:#4ade80;
  --bg-hoch:#3a2228;--bg-normal:#342e1e;--bg-nice:#1c3127;--hover-f:brightness(1.15);
  --shadow:0 1px 2px rgba(0,0,0,.3);--top:#020617;color-scheme:dark;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#0f172a;--panel:#1e293b;--panel2:#172033;--text:#e5e7eb;--muted:#94a3b8;--border:#334155;
  --accent:#60a5fa;--accent-soft:#1e3a5f;--hoch:#f87171;--normal:#fbbf24;--nice:#4ade80;
  --bg-hoch:#3a2228;--bg-normal:#342e1e;--bg-nice:#1c3127;--hover-f:brightness(1.15);
  --shadow:0 1px 2px rgba(0,0,0,.3);--top:#020617;color-scheme:dark;}}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--text);font:15px/1.45 system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;-webkit-text-size-adjust:100%}
button,input,select,textarea{font:inherit;color:inherit}
a{color:var(--accent)}
button{cursor:pointer}
[hidden]{display:none!important}

/* Topbar */
.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:1rem;padding:.5rem 1rem;padding-top:calc(.5rem + env(safe-area-inset-top));background:var(--top);color:var(--toptext)}
.brand{display:flex;align-items:center;gap:.5rem;color:#fff;text-decoration:none;font-weight:700;font-size:1.05rem}
.brand img{width:28px;height:28px;border-radius:7px}
.tabs{display:flex;gap:.25rem;flex:1}
.tabs a{color:#cbd5e1;text-decoration:none;padding:.4rem .8rem;border-radius:8px;font-weight:500}
.tabs a:hover{background:rgba(255,255,255,.08)}
.tabs a.active{background:rgba(255,255,255,.15);color:#fff}
.top-actions{display:flex;align-items:center;gap:.4rem;margin-left:auto}
.top-actions select{background:rgba(255,255,255,.1);color:#fff;border:1px solid rgba(255,255,255,.15);border-radius:8px;padding:.3rem .4rem;max-width:11rem}
.top-actions select option{color:#111;background:#fff}
button.icon{background:transparent;border:0;color:#e2e8f0;font-size:1.15rem;width:36px;height:36px;border-radius:8px}
button.icon:hover{background:rgba(255,255,255,.1)}
.menu-wrap{position:relative}
.menu{position:absolute;right:0;top:42px;background:var(--panel);color:var(--text);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 10px 30px rgba(0,0,0,.18);min-width:240px;padding:.35rem;z-index:30}
.menu button,.menu a{display:block;width:100%;text-align:left;background:none;border:0;padding:.55rem .75rem;border-radius:7px;color:var(--text);text-decoration:none}
.menu button:hover,.menu a:hover{background:var(--panel2)}
.menu hr{border:0;border-top:1px solid var(--border);margin:.3rem 0}
.menu form{margin:0}

/* Toolbar / Filter */
.toolbar{display:flex;gap:.5rem;padding:.75rem 1rem 0;max-width:1500px;margin:0 auto}
.quickadd{display:flex;flex:1;gap:.4rem}
.quickadd input{flex:1;padding:.6rem .8rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--panel);box-shadow:var(--shadow);min-width:0}
input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:-1px}
button.primary{background:var(--accent);color:#fff;border:0;border-radius:var(--radius);padding:.5rem 1rem;font-weight:600}
:root[data-theme="dark"] button.primary{color:#0f172a}
.quickadd button{font-size:1.3rem;line-height:1;padding:0 1rem}
.filter-toggle{display:none;border:1px solid var(--border);background:var(--panel);border-radius:var(--radius);padding:.5rem .8rem}
.filter-toggle span{background:var(--accent);color:#fff;border-radius:99px;padding:0 .4rem;margin-left:.3rem;font-size:.8rem}
.filters{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;padding:.6rem 1rem;max-width:1500px;margin:0 auto}
.filters select,.filters input[type=search]{padding:.4rem .5rem;border:1px solid var(--border);border-radius:8px;background:var(--panel);max-width:14rem}
.filters input[type=search]{width:13rem}
.filters label{display:flex;align-items:center;gap:.35rem;font-size:.9rem;color:var(--muted)}
.filters .sep{width:1px;height:24px;background:var(--border);margin:0 .25rem}
.filters button.link{background:none;border:0;color:var(--accent);padding:.3rem}
.colpicker{position:relative}
.colpicker .pop{position:absolute;top:36px;left:0;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:.5rem .75rem;z-index:15;box-shadow:0 10px 30px rgba(0,0,0,.15);min-width:180px}
.colpicker .pop label{color:var(--text);padding:.2rem 0}
button.ghost{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:.4rem .7rem}

main{max-width:1500px;margin:0 auto;padding:0 1rem 2rem}

/* Items */
.group{margin:1rem 0 1.25rem}
.group h3{font-size:.8rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:0 0 .4rem;display:flex;align-items:center;gap:.5rem}
.group h3 .count{background:var(--panel2);border:1px solid var(--border);border-radius:99px;padding:0 .45rem;font-size:.75rem}
.list{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}
.item{display:flex;gap:.6rem;align-items:flex-start;padding:.6rem .75rem;border-top:1px solid var(--border);cursor:pointer;border-left:3px solid transparent}
.item:first-child{border-top:0}
.item:hover{background:var(--panel2)}
.item.p-hoch{border-left-color:var(--hoch);background:var(--bg-hoch)}.item.p-normal{border-left-color:var(--normal);background:var(--bg-normal)}.item.p-nice{border-left-color:var(--nice);background:var(--bg-nice)}
.item.p-hoch:hover,.item.p-normal:hover,.item.p-nice:hover,.card:hover{filter:var(--hover-f)}
.item.done{background:var(--panel);border-left-color:var(--border)}
.check{flex:none;width:22px;height:22px;border-radius:50%;border:2px solid var(--border);background:transparent;margin-top:1px;display:flex;align-items:center;justify-content:center;color:transparent;font-size:.8rem;padding:0}
.check:hover{border-color:var(--accent);color:var(--accent)}
.item.done .check{background:#16a34a;border-color:#16a34a;color:#fff}
.item.done .title{text-decoration:line-through;color:var(--muted)}
.item .body{flex:1;min-width:0}
.item .title{font-weight:500;word-wrap:break-word}
.meta{display:flex;flex-wrap:wrap;gap:.3rem .5rem;margin-top:.25rem;font-size:.78rem;color:var(--muted);align-items:center}
.badge{display:inline-flex;align-items:center;gap:.25rem;padding:.05rem .45rem;border-radius:99px;background:var(--panel2);border:1px solid var(--border);white-space:nowrap}
.badge.dot::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--c,#888)}
.badge.prio-hoch{color:var(--hoch);border-color:currentColor;font-weight:600}
.badge.prio-normal{color:var(--normal);border-color:currentColor}
.badge.prio-nice{color:var(--nice);border-color:currentColor}
.badge.pts{background:var(--panel);color:var(--text);font-weight:700;border-color:var(--muted);padding:.05rem .4rem;font-variant-numeric:tabular-nums}
.badge.stale{background:#fff7ed;color:#9a3412;border-color:#fdba74;font-weight:600}
.badge.plan.stale{font-weight:600}
:root[data-theme="dark"] .badge.stale{background:#431407;color:#fdba74;border-color:#9a3412}
.badge.overdue{color:#fff;background:var(--danger);border-color:var(--danger)}
.badge.today{color:#fff;background:#d97706;border-color:#d97706}
.badge.status{background:var(--accent-soft);border-color:transparent;color:var(--text)}
.badge.idee{background:#fef3c7;color:#92400e;border-color:#fde68a}
:root[data-theme="dark"] .badge.idee{background:#422006;color:#fde68a;border-color:#713f12}
.empty{color:var(--muted);text-align:center;padding:2rem 1rem}

/* Board */
.board{display:flex;gap:.75rem;overflow-x:auto;padding:.5rem 0 1rem;align-items:flex-start;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch}
.col{flex:0 0 280px;min-width:0;background:var(--panel2);border:1px solid var(--border);border-radius:var(--radius);display:flex;flex-direction:column;max-height:var(--colmax,calc(100vh - 190px));scroll-snap-align:start}
.col header{display:flex;justify-content:space-between;align-items:center;padding:.6rem .75rem;font-weight:600;font-size:.9rem}
.col header .count{color:var(--muted);font-weight:500}
.col .cards{flex:1;overflow-y:auto;padding:0 .5rem .5rem;min-height:60px;display:flex;flex-direction:column;gap:.45rem}
.card{background:var(--panel);border:1px solid var(--border);border-radius:9px;padding:.55rem .65rem;box-shadow:var(--shadow);cursor:grab;border-left:3px solid transparent;touch-action:manipulation}
.card.p-hoch{border-left-color:var(--hoch);background:var(--bg-hoch)}.card.p-normal{border-left-color:var(--normal);background:var(--bg-normal)}.card.p-nice{border-left-color:var(--nice);background:var(--bg-nice)}
.card .title{font-size:.92rem;font-weight:500}
.card.sortable-ghost{opacity:.35}
.card.sortable-chosen{box-shadow:0 8px 24px rgba(0,0,0,.2)}
.col form{padding:.4rem .5rem .6rem}
.col form input{width:100%;padding:.45rem .6rem;border:1px dashed var(--border);border-radius:8px;background:transparent}

/* Board: Tagesspalten */
.col.daycol{border-style:dashed}
.col.daycol.today{border:2px solid var(--accent)}
.todaytag{font-style:normal;font-size:.7rem;font-weight:700;background:var(--accent);color:#fff;border-radius:99px;padding:0 .4rem;margin-left:.3rem;vertical-align:1px}
:root[data-theme="dark"] .todaytag{color:#0f172a}
.colhint{font-size:.75rem;color:var(--muted);padding:0 .75rem .4rem}
.pop-days{margin:.1rem 0 .3rem 1.3rem;padding-left:.5rem;border-left:2px solid var(--border)}
.pop-days label.today{font-weight:600}

/* Score */
.scorebar{display:flex;gap:.6rem;max-width:1500px;margin:0 auto;padding:.55rem 1rem 0}
.score{flex:1;display:flex;align-items:center;gap:.5rem;min-width:0;background:var(--panel);border:1px solid var(--border);border-radius:99px;padding:.25rem .7rem;box-shadow:var(--shadow);font-size:.82rem;max-width:360px}
.score .lbl{font-weight:600;color:var(--muted)}
.score .bar{flex:1;height:8px;border-radius:99px;background:var(--panel2);border:1px solid var(--border);overflow:hidden;min-width:40px;position:relative}
.score .bar .pace{position:absolute;top:-1px;bottom:-1px;width:2px;margin-left:-1px;background:var(--text);opacity:.55;border-radius:1px}
.sb-dots{display:none}
.fx-closed{border:1px solid var(--border);border-left:4px solid #94a3b8;border-radius:10px;padding:.55rem .7rem;background:var(--panel2);display:flex;flex-direction:column;gap:.4rem}
.score .bar i{display:block;height:100%;border-radius:99px;background:#94a3b8;transition:width .3s}
.score .num{font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}
.score.lvl-1 .bar i{background:#eab308}.score.lvl-2 .bar i{background:#16a34a}
.score.lvl-2 .num{color:#15803d}
:root[data-theme="dark"] .score.lvl-2 .num{color:#4ade80}

/* Segment-Schalter */
.seg{display:inline-flex;border:1px solid var(--border);border-radius:8px;overflow:hidden;background:var(--panel)}
.seg button{border:0;background:none;padding:.35rem .7rem;color:var(--muted);font-weight:500}
.seg button+button{border-left:1px solid var(--border)}
.seg button.on{background:var(--accent-soft);color:var(--text);font-weight:600}
.dlg-body .lbl-group{display:flex;flex-direction:column;gap:.25rem;font-size:.8rem;font-weight:600;color:var(--muted)}
.dlg-body .pts-seg{display:flex;width:100%}
.dlg-body .pts-seg label{flex:1;display:block;position:relative;font-size:.95rem;color:var(--text);font-weight:600;text-align:center;cursor:pointer}
.dlg-body .pts-seg label+label{border-left:1px solid var(--border)}
.dlg-body .pts-seg input{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
.dlg-body .pts-seg span{display:block;padding:.45rem 0}
.dlg-body .pts-seg input:checked+span{background:var(--accent);color:#fff}
:root[data-theme="dark"] .dlg-body .pts-seg input:checked+span{color:#0f172a}
.dlg-body .pts-seg input:focus-visible+span{outline:2px solid var(--accent);outline-offset:-2px}

/* Kalender-Woche */
.cal-week{margin-top:.5rem}
.cal-head{flex-wrap:wrap}
.wk-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:.5rem}
.wk-day{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:.45rem;min-height:180px;box-shadow:var(--shadow);min-width:0}
.wk-day.today{border:2px solid var(--accent)}
.wk-day.past{background:var(--panel2)}
.wk-head{display:flex;align-items:center;gap:.35rem;margin-bottom:.35rem}
.wk-d{font-weight:700;font-size:.9rem;flex:1;white-space:nowrap}
.wk-pts{font-size:.72rem;font-weight:700;border-radius:99px;padding:0 .4rem;background:var(--panel2);border:1px solid var(--border);color:var(--muted);white-space:nowrap}
.wk-pts.lvl-1{background:#fef9c3;color:#854d0e;border-color:#fde047}.wk-pts.lvl-2{background:#dcfce7;color:#166534;border-color:#86efac}
:root[data-theme="dark"] .wk-pts.lvl-1{background:#422006;color:#fde047;border-color:#854d0e}
:root[data-theme="dark"] .wk-pts.lvl-2{background:#052e16;color:#86efac;border-color:#166534}
.wk-add{border:1px solid var(--border);background:var(--panel);border-radius:6px;width:24px;height:24px;padding:0;line-height:1;color:var(--muted)}
.wk-sec{margin-top:.35rem}
.wk-sec h5{margin:0 0 .2rem;font-size:.68rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:600}
.wk-it{display:flex;align-items:baseline;gap:.3rem;font-size:.8rem;padding:.2rem .35rem;border-radius:6px;margin-bottom:2px;cursor:pointer;border-left:3px solid var(--border);background:var(--panel2)}
.wk-it.p-hoch{border-left-color:var(--hoch);background:var(--bg-hoch)}.wk-it.p-normal{border-left-color:var(--normal);background:var(--bg-normal)}.wk-it.p-nice{border-left-color:var(--nice);background:var(--bg-nice)}
.wk-it .t{flex:1;min-width:0;overflow-wrap:anywhere}
.wk-it .tm{font-weight:700;font-variant-numeric:tabular-nums;color:var(--muted);font-size:.75rem}
.wk-it .tm.overdue{color:var(--danger)}
.wk-it .badge.pts{font-size:.68rem;padding:0 .3rem}
.wk-it.done{background:var(--panel2);border-left-color:var(--border)}
.wk-it.done .t{text-decoration:line-through;color:var(--muted)}
.wk-empty{padding:.3rem}

/* Kalender */
.cal-wrap{display:grid;grid-template-columns:1fr 320px;gap:1rem;margin-top:.5rem}
.cal-head{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}
.cal-head h2{font-size:1.15rem;margin:0 .5rem 0 0;min-width:10rem}
.cal{display:grid;grid-template-columns:repeat(7,1fr);background:var(--border);gap:1px;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}
.cal .dow{background:var(--panel2);text-align:center;font-size:.75rem;color:var(--muted);padding:.3rem 0;font-weight:600}
.cal .day{background:var(--panel);min-height:96px;padding:.25rem;display:flex;flex-direction:column;gap:2px;cursor:pointer;min-width:0}
.cal .day.other{background:var(--panel2);opacity:.6}
.cal .day.today .num{background:var(--accent);color:#fff;border-radius:99px}
.cal .day.sel{outline:2px solid var(--accent);outline-offset:-2px}
.cal .num{font-size:.75rem;font-weight:600;width:22px;height:22px;display:flex;align-items:center;justify-content:center;color:var(--muted)}
.chip{font-size:.72rem;padding:1px 5px;border-radius:5px;background:var(--accent-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-left:3px solid var(--c,#888)}
.chip.termin{background:#ede9fe}
:root[data-theme="dark"] .chip.termin{background:#2e1065}
.chip.done{text-decoration:line-through;opacity:.6}
.agenda .group{margin-top:0}
.agenda h3.overdue{color:var(--danger)}

/* Epics */
.epic-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:.75rem}
.epic{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:.85rem;box-shadow:var(--shadow);cursor:pointer;border-top:4px solid var(--c,#888)}
.epic h4{margin:0 0 .3rem;font-size:1rem}
.epic.closed{opacity:.65}
.progress{height:8px;background:var(--panel2);border:1px solid var(--border);border-radius:99px;overflow:hidden;margin:.6rem 0 .3rem}
.progress div{height:100%;background:#16a34a}
.epic .row{display:flex;justify-content:space-between;align-items:center;font-size:.82rem;color:var(--muted)}
.epic .row a{font-size:.85rem}
.view-head{display:flex;align-items:center;gap:.75rem;margin:1rem 0 .25rem;flex-wrap:wrap}
.view-head h2{margin:0;font-size:1.15rem}

/* Dialog */
dialog{border:0;border-radius:14px;padding:0;background:var(--panel);color:var(--text);width:min(680px,96vw);max-height:92vh;box-shadow:0 20px 60px rgba(0,0,0,.3)}
dialog::backdrop{background:rgba(15,23,42,.45)}
dialog form{display:flex;flex-direction:column;max-height:92vh;margin:0}
.dlg-head{display:flex;justify-content:space-between;align-items:center;padding:.9rem 1.1rem;border-bottom:1px solid var(--border)}
.dlg-head h2{margin:0;font-size:1.05rem}
.dlg-body{padding:1rem 1.1rem;overflow-y:auto;display:grid;grid-template-columns:1fr 1fr;gap:.75rem}
.dlg-body .full{grid-column:1/-1}
.dlg-body label{display:flex;flex-direction:column;gap:.25rem;font-size:.8rem;font-weight:600;color:var(--muted)}
.dlg-body input,.dlg-body select,.dlg-body textarea{padding:.5rem .6rem;border:1px solid var(--border);border-radius:8px;background:var(--panel);font-weight:400;color:var(--text);width:100%}
.dlg-body textarea{min-height:120px;resize:vertical;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.88rem}
.dlg-body .pair{display:flex;gap:.4rem}
.dlg-foot{display:flex;gap:.5rem;padding:.8rem 1.1rem;border-top:1px solid var(--border);justify-content:flex-end;align-items:center}
.dlg-foot .danger{margin-right:auto;background:none;border:1px solid var(--danger);color:var(--danger);border-radius:8px;padding:.45rem .8rem}
.dlg-foot button.ghost{padding:.5rem .9rem}
.info{font-size:.78rem;color:var(--muted)}
.md{font-size:.92rem;line-height:1.5;background:var(--panel2);border:1px solid var(--border);border-radius:8px;padding:.5rem .75rem;overflow-wrap:anywhere}
.md p{margin:.3rem 0}.md ul,.md ol{margin:.3rem 0;padding-left:1.3rem}
.md code{background:var(--border);padding:0 .25rem;border-radius:4px;font-size:.85em}
.md pre{background:var(--border);padding:.5rem;border-radius:6px;overflow-x:auto}
details summary{cursor:pointer;color:var(--muted);font-size:.85rem}
.log{font-size:.78rem;color:var(--muted);margin:.4rem 0 0;padding-left:1rem}
.log li{margin:.2rem 0}
.bereich-row{display:flex;gap:.5rem;align-items:center;margin-bottom:.4rem}
.bereich-row input[type=text]{flex:1}
.bereich-row input[type=color]{width:44px;height:36px;padding:2px}
.bereich-row button{background:none;border:0;color:var(--danger);font-size:1.1rem}


/* Grobe Planung (1.2) */
.badge.rough{background:#eef2ff;color:#3730a3;border-color:#c7d2fe;font-weight:600}
.badge.rough.cur{background:var(--accent-soft);color:var(--text);border-color:var(--accent)}
.badge.rough-quarter{background:#f5f3ff;color:#5b21b6;border-color:#ddd6fe}
.badge.rough-year{background:#fdf4ff;color:#86198f;border-color:#f5d0fe}
:root[data-theme="dark"] .badge.rough{background:#1e1b4b;color:#c7d2fe;border-color:#3730a3}
:root[data-theme="dark"] .badge.rough-quarter{background:#2e1065;color:#ddd6fe;border-color:#5b21b6}
:root[data-theme="dark"] .badge.rough-year{background:#4a044e;color:#f5d0fe;border-color:#86198f}
.plan-pick select,.plan-pick input{flex:1;min-width:0}
.plan-pick select[name=plan_kind]{flex:0 0 7.5rem}
.dlg-foot{flex-wrap:wrap}
button.link{background:none;border:0;color:var(--accent);padding:.3rem;font-weight:500}

/* Woche (1.2) */
.wv{margin-top:.5rem}
.wv-top h2 .wk-pts{font-size:.8rem;vertical-align:1px}
.wv-grid{display:grid;gap:.5rem;align-items:start;overflow-x:auto;padding-bottom:.5rem;
  grid-template-columns:minmax(170px,1.1fr) repeat(7,minmax(120px,1fr)) minmax(110px,.75fr)}
.wv-grid.cur{grid-template-columns:minmax(170px,1.1fr) minmax(250px,2fr) repeat(6,minmax(115px,1fr)) minmax(110px,.75fr)}
.wv-col{background:var(--panel2);border:1px solid var(--border);border-radius:var(--radius);min-width:0;display:flex;flex-direction:column;min-height:320px}
.wv-head{display:flex;align-items:center;gap:.35rem;padding:.5rem .55rem;font-size:.88rem;flex-wrap:wrap}
.wv-d{font-weight:700;flex:1;min-width:0}
.wv-d .info{font-weight:500}
.wv-cnt{color:var(--muted);font-size:.75rem;white-space:nowrap}
.wv-cards{flex:1;display:flex;flex-direction:column;gap:.4rem;padding:0 .4rem .4rem;min-height:70px;overflow-y:auto}
.wv-grid .wv-col{max-height:var(--colmax,calc(100vh - 150px))}
.wv-empty{color:var(--muted);font-size:.75rem;text-align:center;border:1px dashed var(--border);border-radius:8px;padding:.8rem .3rem}
.wv-cards .card{padding:.45rem .5rem}
.wv-cards .card .title{font-size:.86rem}
.wv-cards .card.done{opacity:.6;cursor:pointer;background:var(--panel);border-left-color:var(--border)}
.wv-cards .card.done .title{text-decoration:line-through}
.wv-col form{padding:.2rem .4rem .5rem}
.wv-col form input{width:100%;padding:.4rem .5rem;border:1px dashed var(--border);border-radius:8px;background:transparent;font-size:.85rem}
.wv-week{border-top:4px solid var(--accent)}
.wv-day.today{border:2px solid var(--accent);background:var(--panel)}
.wv-day.today .wv-head{font-size:1rem}
.wv-day.today .card .title{font-size:.95rem}
.wv-day.past{opacity:.72}
.wv-next{border-style:dashed;background:transparent}
.wv-next .wv-head{flex-direction:column;align-items:flex-start;gap:0}
.wv-sep{font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;color:#9a3412;font-weight:700;padding:.3rem .2rem 0;border-top:1px dashed var(--border);margin-top:.2rem}
:root[data-theme="dark"] .wv-sep{color:#fdba74}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .wv-sep{color:#fdba74}}
.wv-appt{font-size:.75rem;color:var(--muted);padding:.1rem .6rem .25rem;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wk-actions{display:flex;gap:.4rem;margin-top:.45rem}
.wk-actions select,.wk-actions button{flex:1;min-width:0;font-size:.85rem;padding:.45rem .5rem;border:1px solid var(--border);border-radius:8px;background:var(--panel);color:var(--text)}

/* Fokusliste (1.2) */
.fx-strip{display:flex;gap:.4rem;overflow-x:auto;padding:.1rem 0 .6rem;align-items:stretch;-webkit-overflow-scrolling:touch}
.fx-chip{flex:0 0 auto;display:flex;align-items:center;gap:.4rem;border:1px solid var(--border);border-left:4px solid var(--c,#888);background:var(--panel);border-radius:9px;padding:.3rem .6rem;font-size:.8rem;box-shadow:var(--shadow);max-width:15rem;color:var(--text)}
.fx-chip.top{max-width:22rem;font-size:.9rem;font-weight:600;padding:.45rem .7rem;background:color-mix(in srgb,var(--c,#888) 14%,var(--panel))}
.fx-chip .fx-t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fx-chip .fx-n{color:var(--muted);font-weight:500;font-size:.75rem;white-space:nowrap}
.fx-chip.edit{border-left-width:1px;color:var(--muted)}
.fx-pos{flex:none;display:inline-flex;align-items:center;justify-content:center;width:1.4rem;height:1.4rem;border-radius:99px;background:var(--c,var(--muted));color:#fff;font-size:.75rem;font-weight:700}
.fx-body{grid-template-columns:1fr;align-content:start}
.fx-date{font-size:.9rem;color:var(--muted);font-weight:600}
.fx-review{display:flex;flex-direction:column;gap:.35rem;background:var(--accent-soft);border-radius:10px;padding:.7rem .8rem}
.fx-review-btns{display:flex;gap:.5rem}
.fx-slots{display:flex;flex-direction:column;gap:.45rem}
.fx-slot{display:flex;align-items:center;gap:.65rem;text-align:left;width:100%;border:1px solid var(--border);border-left:5px solid var(--c,#888);border-radius:10px;background:var(--panel);padding:.45rem .7rem;color:var(--text)}
.fx-slot.top{padding:.8rem .8rem;background:color-mix(in srgb,var(--c,#888) 16%,var(--panel));border-color:color-mix(in srgb,var(--c,#888) 45%,var(--border))}
.fx-slot.top .fx-pos{width:2rem;height:2rem;font-size:1rem}
.fx-slot.top .fx-title{font-size:1.1rem}
.fx-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:.1rem}
.fx-title{font-weight:700;font-size:.92rem;overflow-wrap:anywhere}
.fx-sub{font-size:.75rem;color:var(--muted)}
.fx-main .progress{display:block;height:6px;margin:.3rem 0 0}
.fx-main .progress span{display:block;height:100%;background:#16a34a}
.fx-nums{display:flex;flex-direction:column;align-items:flex-end;font-size:.75rem;color:var(--muted);white-space:nowrap}
.fx-nums b{color:var(--text);font-size:.9rem}
.fx-slot:hover{filter:var(--hover-f)}
.fx-row{display:flex;gap:.4rem;align-items:center;margin-bottom:.4rem}
.fx-row .fx-pos{background:var(--accent)}
.fx-row:nth-child(n+4) .fx-pos{background:var(--muted)}
.fx-row select{flex:1;min-width:0}
.fx-row button{flex:none;width:34px;height:34px;border:1px solid var(--border);background:var(--panel);border-radius:8px;padding:0;color:var(--text)}
.fx-dialog .dlg-foot .primary{min-width:9rem}

#toast{position:fixed;left:50%;bottom:calc(80px + env(safe-area-inset-bottom));transform:translateX(-50%);background:#111827;color:#fff;padding:.55rem 1rem;border-radius:9px;font-size:.9rem;opacity:0;transition:opacity .2s;pointer-events:none;z-index:50;max-width:90vw}
#toast.show{opacity:1}
#toast.act{pointer-events:auto;display:flex;align-items:center;gap:.6rem}
#toast button{background:none;border:1px solid rgba(255,255,255,.5);color:#fff;border-radius:7px;padding:.2rem .6rem;font-weight:600}

/* 1.3: Kopfbereich einklappen (Board + Woche) */
.collapse-btn{position:relative;display:inline-flex;align-items:center;justify-content:center}
.collapse-btn svg{width:22px;height:22px;transition:transform .15s}
body.collapsed .collapse-btn svg{transform:rotate(180deg)}
.cbadge{position:absolute;top:2px;right:0;min-width:16px;height:16px;border-radius:99px;background:var(--accent);color:#fff;font-size:.68rem;font-weight:700;line-height:16px;padding:0 3px;text-align:center}
body.collapsed #scorebar,body.collapsed .toolbar,body.collapsed #filters{display:none!important}
body.collapsed main .board{padding-top:.6rem}
body.collapsed main .wv{margin-top:.6rem}

/* 1.3: schlanke Karten – Titel (max. 2 Zeilen) + Punkte; Priorität = Farbe */
.card.slim{border-left-width:5px}
.card.slim .c-row{display:flex;align-items:flex-start;gap:.4rem}
.card.slim .title{flex:1;min-width:0;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden;overflow-wrap:break-word;hyphens:auto;-webkit-hyphens:auto}
.card.slim .c-side{flex:none;display:flex;align-items:center;gap:.25rem;margin-top:1px}
.card.slim .badge.pts{font-size:.72rem;padding:0 .35rem}
.od{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;background:var(--danger);color:#fff;font-size:.7rem;font-weight:800;line-height:1}
.wv:not(.phone) .wv-col:not(.today) .card.slim .title{-webkit-line-clamp:3;line-clamp:3}
/* schmale Tagesspalten (Desktop-Woche): Punkte/! oben rechts, Titel darunter in voller Breite */
.wv:not(.phone) .wv-col:not(.today) .card.slim .c-row{flex-direction:column-reverse;gap:.1rem}
.wv:not(.phone) .wv-col:not(.today) .card.slim .c-side{align-self:flex-end;margin-top:0}
.wv:not(.phone) .wv-col:not(.today) .card.slim .title{align-self:stretch}
.wv-cards .card.slim .wk-actions{margin-top:.4rem}

/* 1.3: Dialog – grüner Erledigt-Haken, „Erledigt am“ */
.dlg-body .lbl-row{display:flex;align-items:center;justify-content:space-between;gap:.5rem;min-height:36px}
.done-btn{width:40px;height:36px;border:0;border-radius:9px;background:#16a34a;color:#fff;font-size:1.25rem;font-weight:800;line-height:1;padding:0;box-shadow:var(--shadow)}
.done-btn:hover{background:#15803d}
.done-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.done-info{font-weight:600;color:#15803d;font-size:.8rem}
:root[data-theme="dark"] .done-info{color:#4ade80}
.done-pick{align-items:center;flex-wrap:wrap}
.done-pick input{flex:1;min-width:9rem}
.done-row .info{font-weight:400}
.bottomnav{display:none}

/* Phone */
@media (max-width:760px){
  .tabs{display:none}
  .topbar{gap:.5rem;padding:.4rem .6rem;padding-top:calc(.4rem + env(safe-area-inset-top))}
  .top-actions select{max-width:7.2rem}
  .topbar{gap:.35rem}.top-actions{gap:.15rem}
  .toolbar{padding:.6rem .6rem 0}
  .filter-toggle{display:block}
  .filters{display:none;padding:.5rem .6rem}
  .filters.open{display:flex}
  .filters select,.filters input[type=search]{flex:1 1 45%;max-width:none;min-width:0;width:0}
  .filters .sep{display:none}
  main{padding:0 .6rem calc(84px + env(safe-area-inset-bottom))}
  .bottomnav{display:flex;position:fixed;bottom:0;left:0;right:0;background:var(--panel);border-top:1px solid var(--border);z-index:20;padding-bottom:env(safe-area-inset-bottom)}
  .bottomnav a{flex:1;text-align:center;padding:.45rem 0 .5rem;font-size:.72rem;color:var(--muted);text-decoration:none;display:flex;flex-direction:column;align-items:center}
  .bottomnav a span{font-size:1.2rem;line-height:1.3}
  .bottomnav a.active{color:var(--accent);font-weight:600}
  .col{flex:0 0 86vw;max-height:var(--colmax,calc(100vh - 230px))}
  .cal-wrap{grid-template-columns:1fr}
  .cal .day{min-height:52px;padding:2px}
  .cal .chip{font-size:0;padding:0;height:6px;border-left:0;background:var(--c,#888);border-radius:3px}
  .dlg-body{grid-template-columns:1fr}
  dialog{width:100vw;max-width:100vw;max-height:100vh;height:100%;border-radius:0;margin:0}
  dialog form{max-height:100vh;height:100%}
  .dlg-body{flex:1}
  .item{padding:.7rem .6rem}
  .scorebar{padding:.45rem .6rem 0;gap:.4rem}
  .score{padding:.2rem .55rem;gap:.35rem;font-size:.78rem;max-width:none}
  .scorebar:not(.pair2) .score.p2,.scorebar.pair2 .score.p1{display:none}
  .sb-dots{display:flex;flex-direction:column;justify-content:center;gap:3px;flex:none;padding:0 .1rem}
  .sb-dots i{width:5px;height:5px;border-radius:50%;background:var(--muted);opacity:.3}
  .scorebar:not(.pair2) .sb-dots i:first-child,.scorebar.pair2 .sb-dots i:last-child{opacity:1}
  .wk-grid{grid-template-columns:1fr;gap:.4rem}
  .wk-day{min-height:0}
  .wk-it{font-size:.88rem;padding:.35rem .45rem}
  .cal-head h2{min-width:0;font-size:1.05rem}
  .cal-week .cal-head h2{order:-1;flex:1 0 100%}
  .wv-top h2{order:-1;flex:1 0 100%}
  .wv.phone .wv-grid{display:flex;flex-direction:column;overflow:visible;gap:.45rem;align-items:stretch}
  .wv.phone .wv-col{min-height:0;max-height:none}
  .wv.phone .wv-cards{overflow:visible}
  .wv.phone .wv-day.today{order:0}
  .wv.phone .wv-day.today .wv-head{font-size:1.05rem;padding:.65rem .6rem}
  .wv.phone .wv-day.today .card .title{font-size:1rem}
  .wv.phone details.wv-col>summary{list-style:none;cursor:pointer}
  .wv.phone details.wv-col>summary::-webkit-details-marker{display:none}
  .wv.phone details.wv-col>summary::before{content:"▸";color:var(--muted);margin-right:.2rem}
  .wv.phone details.wv-col[open]>summary::before{content:"▾"}
  .wv.phone .wv-cards{min-height:0}
  .wv.phone .wv-next .wv-head{flex-direction:row;align-items:center}
  .wv.phone .wv-empty{padding:.4rem}
  .fx-chip{max-width:12rem}
  .plan-pick select[name=plan_kind]{flex:0 0 6.5rem}
  .dlg-foot:has(#btnDup) button[value=cancel]{display:none}
  .done-btn{width:48px;height:44px}
  .dlg-foot{gap:.4rem;padding:.7rem .8rem calc(.7rem + env(safe-area-inset-bottom))}
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .done-info{color:#4ade80}}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .badge.stale{background:#431407;color:#fdba74;border-color:#9a3412}
:root:not([data-theme="light"]) .todaytag,:root:not([data-theme="light"]) .dlg-body .pts-seg input:checked+span{color:#0f172a}
:root:not([data-theme="light"]) .score.lvl-2 .num{color:#4ade80}
:root:not([data-theme="light"]) .wk-pts.lvl-1{background:#422006;color:#fde047;border-color:#854d0e}
:root:not([data-theme="light"]) .wk-pts.lvl-2{background:#052e16;color:#86efac;border-color:#166534}
:root:not([data-theme="light"]) .badge.idee{background:#422006;color:#fde68a;border-color:#713f12}
:root:not([data-theme="light"]) .chip.termin{background:#2e1065}:root:not([data-theme="light"]) button.primary{color:#0f172a}}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .badge.rough{background:#1e1b4b;color:#c7d2fe;border-color:#3730a3}
:root:not([data-theme="light"]) .badge.rough-quarter{background:#2e1065;color:#ddd6fe;border-color:#5b21b6}
:root:not([data-theme="light"]) .badge.rough-year{background:#4a044e;color:#f5d0fe;border-color:#86198f}}
