:root{--c-bg:#f6f7f9;--c-surface:#fff;--c-surface-sunk:#eef0f4;--c-border:#d4d9e0;--c-border-strong:#8a93a0;--c-text:#1b2028;--c-text-muted:#5c6673;--c-text-faint:#616b78;--c-accent:#3b4ba8;--c-accent-soft:#e8ebfa;--c-danger:#a32c2c;--c-danger-soft:#fae7e7;--c-warning:#8a5a00;--c-warning-soft:#fbf0d9;--c-success:#1f6b45;--c-success-soft:#e2f2ea;--cat-oncall-bg:#23784a;--cat-oncall-fg:#fff;--cat-onsite-bg:#8fc7ee;--cat-onsite-fg:#1b2028;--cat-remote-bg:#5b4bc8;--cat-remote-fg:#fff;--cat-absence-bg:#f2c94c;--cat-absence-fg:#1b2028;--c-conflict-bg:#b3146b;--c-conflict-fg:#fff;--c-conflict-soft:#fbe4ef;--c-notice-stripe:#1b2028;--cat-onsite-edge:#3f86c0;--c-weekend:#eceff3;--c-grid:#e1e5ea;--c-today:var(--c-danger);--w-rowhead:280px;--w-update:116px;--w-update-sym:24px;--w-rowhead-narrow:160px;--lane-h:30px;--lane-gap:4px;--lane-h-half:calc((var(--lane-h) - var(--lane-gap)) / 2);--row-min-h:40px;--h-timeline-min:calc(var(--row-min-h) * 8);--day-w-day:34px;--day-w-week:16px;--day-w-month:6px;--h-head:48px;--h-nav:40px;--w-content:960px;--focus:2px solid var(--c-accent);--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:24px;--s-6:32px;--s-7:48px;--s-8:64px;--f-sans:ui-sans-serif, "Segoe UI", system-ui, sans-serif;--f-mono:ui-monospace, "Cascadia Mono", "Consolas", monospace;--t-xs:11px;--t-sm:12px;--t-base:14px;--t-md:16px;--t-lg:20px;--t-xl:26px;--lh-tight:1.3;--lh-base:1.55;--r-1:3px;--r-2:5px;--sh-1:0 1px 2px #1b202812;--sh-2:0 4px 16px #1b202821;--ctrl-h:32px;--o-scrim:.45;--o-disabled:.6;--lh-compact:1.4;--w-card-label:96px;--w-toast:480px;--spin-s:10px;--h-logo-head:32px;--h-logo-card:120px}*{box-sizing:border-box}body{background:var(--c-bg);color:var(--c-text);font:var(--t-base)/var(--lh-base) var(--f-sans);margin:0}h1,h2,h3{line-height:var(--lh-tight);margin:0;font-weight:600}h1{font-size:var(--t-xl)}h2{font-size:var(--t-lg)}h3{font-size:var(--t-md)}code{font:var(--t-sm)/1.4 var(--f-mono);background:var(--c-surface-sunk);border-radius:var(--r-1);padding:1px 5px}.card{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--r-2);box-shadow:var(--sh-1)}.pad{padding:var(--s-4)}.btn{height:var(--ctrl-h);padding:0 var(--s-3);border-radius:var(--r-1);border:1px solid var(--c-border-strong);background:var(--c-surface);color:var(--c-text);font:500 var(--t-base) var(--f-sans);cursor:pointer;align-items:center;gap:var(--s-2);display:inline-flex}.btn:hover{background:var(--c-surface-sunk)}.btn:focus-visible{outline:var(--focus);outline-offset:2px}.btn--primary{background:var(--c-accent);border-color:var(--c-accent);color:#fff}.btn--primary:hover{filter:brightness(1.1);background:var(--c-accent)}.btn[disabled]{opacity:.45;cursor:not-allowed}.btn .spin,.state .spin{border:2px solid;border-right-color:#0000;border-radius:50%;width:12px;height:12px;animation:.7s linear infinite sp;display:inline-block}@keyframes sp{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spin{animation:none}}.seg{border:1px solid var(--c-border-strong);border-radius:var(--r-1);display:inline-flex;overflow:hidden}.seg button{height:calc(var(--ctrl-h) - 2px);padding:0 var(--s-3);background:var(--c-surface);font:500 var(--t-sm) var(--f-sans);color:var(--c-text);cursor:pointer;border:0;border-right:1px solid var(--c-border-strong)}.seg button:last-child{border-right:0}.seg button.on{background:var(--c-accent);color:#fff}.seg button:focus-visible{outline:var(--focus);outline-offset:-2px}.state{border-left:3px solid var(--c-border-strong);background:var(--c-surface);padding:var(--s-5) var(--s-4);text-align:center}.state h3{margin-bottom:var(--s-1)}.state p{color:var(--c-text-muted);font-size:var(--t-sm);margin:0 0 var(--s-3)}.state--e{border-color:var(--c-danger)}.skel{background:linear-gradient(90deg, var(--c-surface-sunk), var(--c-border), var(--c-surface-sunk));border-radius:var(--r-1);height:12px;margin:var(--s-2) 0}.shell-head{align-items:center;gap:var(--s-3);padding:0 var(--s-4);height:var(--h-head);background:var(--c-text);color:#fff;font-size:var(--t-sm);display:flex}.shell-head .brand-logo{height:var(--h-logo-head);flex:none;width:auto;display:block}.shell-head .brand-logo--narrow{display:none}.shell-head .seg{border-color:var(--c-text-muted)}.shell-head .seg button{color:#fff;border-right-color:var(--c-text-muted);background:0 0}.shell-head .seg button.on{color:var(--c-text);background:#fff}.shell-ctx{justify-content:space-between;align-items:flex-end;gap:var(--s-3);padding:var(--s-3) var(--s-4);border-bottom:1px solid var(--c-border);flex-wrap:wrap;display:flex}.shell-main{padding:var(--s-4);background:var(--c-bg)}.shell-foot{padding:var(--s-2) var(--s-4);border-top:1px solid var(--c-border);font-size:var(--t-xs);color:var(--c-text-muted);background:var(--c-surface);justify-content:space-between;display:flex}.app{background:var(--c-surface);flex-direction:column;min-height:100vh;display:flex}.app .shell-main{flex:auto}.app--fit{height:100dvh;min-height:0}.app--fit .shell-main{flex-direction:column;display:flex}.app--fit .content--wide{gap:var(--s-4);flex-direction:column;flex:auto;display:flex}.app .shell-ctx h2{font-size:var(--t-lg)}.app .shell-head .seg{margin-left:auto}.content{max-width:var(--w-content);gap:var(--s-4);margin:0 auto;display:grid}.kennung{font:600 var(--t-lg)/var(--lh-tight) var(--f-mono);margin:var(--s-2) 0 0;white-space:nowrap}code.ref{white-space:nowrap}.loading{align-items:center;gap:var(--s-2);color:var(--c-text-muted);font-size:var(--t-base);margin:0;display:inline-flex}.loading-s{margin:var(--s-2) 0 0;color:var(--c-text-muted);font-size:var(--t-sm)}.topnav{align-items:stretch;gap:var(--s-1);height:var(--h-nav);padding:0 var(--s-4);background:var(--c-surface);border-bottom:1px solid var(--c-border);display:flex;position:relative}.nav-links{align-items:stretch;gap:var(--s-1);display:flex}.topnav a{padding:0 var(--s-3);color:var(--c-text-muted);font-size:var(--t-base);border-bottom:2px solid #0000;align-items:center;text-decoration:none;display:flex}.topnav a:focus-visible{outline:var(--focus);outline-offset:-2px}.topnav a[aria-current=page]{color:var(--c-text);border-color:var(--c-accent);font-weight:600}.nav-btn{align-items:center;gap:var(--s-2);height:100%;padding:0 var(--s-3);border:0;border-bottom:2px solid var(--c-accent);font:600 var(--t-base) var(--f-sans);color:var(--c-text);cursor:pointer;background:0 0;display:none}.nav-btn:focus-visible{outline:var(--focus);outline-offset:-2px}@media (width<=639px){.nav-btn{display:inline-flex}.nav-links{left:var(--s-4);z-index:3;background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--r-2);min-width:180px;box-shadow:var(--sh-2);flex-direction:column;display:none;position:absolute;top:100%}.nav-links.open{display:flex}.nav-links a{height:var(--h-nav);border-bottom:0;border-left:2px solid #0000}.nav-links a[aria-current=page]{border-left-color:var(--c-accent)}.app .shell-head{gap:var(--s-2);padding:0 var(--s-3)}.shell-head .brand-logo--wide{display:none}.shell-head .brand-logo--narrow{display:block}.um-btn{max-width:120px;padding:0 var(--s-2)}}.um{min-width:0;display:inline-block;position:relative}.um-btn{height:calc(var(--ctrl-h) - 2px);align-items:center;gap:var(--s-2);max-width:220px;padding:0 var(--s-3);border:1px solid var(--c-text-muted);border-radius:var(--r-1);color:#fff;font:500 var(--t-sm) var(--f-sans);cursor:pointer;background:0 0;display:inline-flex}.um-btn:focus-visible{outline:var(--focus);outline-offset:2px}.um-btn.empty .um-name{font-style:italic}.um-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.menu{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--r-2);box-shadow:var(--sh-2);min-width:180px;font-size:var(--t-base);display:inline-block}.menu .sep{border-top:1px solid var(--c-border);padding:0}.menu-item{width:100%;padding:var(--s-2) var(--s-3);text-align:left;font:inherit;color:var(--c-text);cursor:pointer;background:0 0;border:0;display:block}.menu-item:hover{background:var(--c-surface-sunk)}.menu-item:focus-visible{outline:var(--focus);outline-offset:-2px}.menu-item[disabled]{opacity:.45;cursor:not-allowed}.um-menu{right:0;top:calc(100% + var(--s-1));z-index:3;color:var(--c-text);position:absolute}.um-full{padding:var(--s-2) var(--s-3);font-size:var(--t-sm);color:var(--c-text-muted);overflow-wrap:anywhere}.um-error{padding:var(--s-2) var(--s-3);font-size:var(--t-xs);color:var(--c-danger)}.badge{align-items:center;gap:var(--s-1);padding:1px var(--s-2);font:600 var(--t-xs)/18px var(--f-sans);white-space:nowrap;border-radius:10px;display:inline-flex}.badge--n{background:var(--c-surface-sunk);color:var(--c-text-muted)}.badge--ok{background:var(--c-success-soft);color:var(--c-success)}.badgeline{margin:var(--s-2) 0 0}.bare{background:var(--c-bg);min-height:100vh;padding:var(--s-4) var(--s-4) var(--s-7);gap:var(--s-6);grid-template-rows:auto 1fr;justify-items:center;display:grid}.bare-top{justify-self:end}.bare-card{gap:var(--s-4);align-content:start;width:100%;max-width:460px;display:grid}.bare-logo{height:var(--h-logo-card);width:auto;margin:0 auto;display:block}.btn--danger{background:var(--c-danger);border-color:var(--c-danger);color:var(--c-surface)}.btn--danger:hover{background:var(--c-danger);filter:brightness(1.1)}.btn--ghost{color:var(--c-accent);background:0 0;border-color:#0000}.badge--w{background:var(--c-warning-soft);color:var(--c-warning)}.badge--e{background:var(--c-danger-soft);color:var(--c-danger)}.badge .spin{width:var(--spin-s);height:var(--spin-s);border:2px solid;border-right-color:#0000;border-radius:50%;animation:.7s linear infinite sp;display:inline-block}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.field{gap:var(--s-1);display:grid}.field label,.field .label{font-size:var(--t-sm);font-weight:500}.field .req{color:var(--c-danger)}.field .hint{font-size:var(--t-xs);color:var(--c-text-muted)}.field .ro{overflow-wrap:anywhere}.input,select{height:var(--ctrl-h);padding:0 var(--s-2);border:1px solid var(--c-border-strong);border-radius:var(--r-1);background:var(--c-surface);font:var(--t-base) var(--f-sans);color:var(--c-text);width:100%}.input:focus,select:focus{outline:var(--focus);outline-offset:-1px;border-color:var(--c-accent)}.input--err{border-color:var(--c-danger);background:var(--c-danger-soft)}.input[disabled]{opacity:var(--o-disabled)}.err{font-size:var(--t-xs);color:var(--c-danger)}.alert{gap:var(--s-3);padding:var(--s-3);border-radius:var(--r-1);font-size:var(--t-base);border-left:3px solid;display:flex}.alert--w{background:var(--c-warning-soft);border-color:var(--c-warning)}.alert--e{background:var(--c-danger-soft);border-color:var(--c-danger)}.alert b{display:block}.state--flat{border-left:0}.tabs{gap:var(--s-1);border-bottom:1px solid var(--c-border);display:flex;overflow-x:auto}.tabs a{padding:var(--s-2) var(--s-3);color:var(--c-text-muted);white-space:nowrap;border-bottom:2px solid #0000;text-decoration:none}.tabs a:focus-visible{outline:var(--focus);outline-offset:-2px}.tabs a[aria-current=page]{border-color:var(--c-accent);color:var(--c-text);font-weight:600}.shell-actions{gap:var(--s-2);display:flex}.toolbar{gap:var(--s-2);padding:var(--s-3);border-bottom:1px solid var(--c-border);background:var(--c-surface-sunk);border-radius:var(--r-2) var(--r-2) 0 0;flex-wrap:wrap;align-items:center;display:flex}.toolbar .grow{flex:180px}.toolbar select{width:auto}.chipfilter{gap:var(--s-2);padding:var(--s-2) var(--s-3);border-bottom:1px solid var(--c-border);flex-wrap:wrap;align-items:center;display:flex}.chip-label{font-size:var(--t-sm);color:var(--c-text-muted)}.chipfilter .fc{background:var(--c-accent-soft);color:var(--c-accent);border:1px solid var(--c-accent);padding:1px var(--s-2);font:var(--t-xs) var(--f-sans);cursor:pointer;border-radius:12px}.chipfilter .fc:focus-visible{outline:var(--focus);outline-offset:2px}.chipfilter .count{font-size:var(--t-sm);color:var(--c-text-muted);margin-left:auto}.ptable,.atable{border-collapse:collapse;width:100%;font-size:var(--t-base);table-layout:fixed}.ptable th,.ptable td,.atable th,.atable td{text-align:left;padding:var(--s-2) var(--s-3);border-bottom:1px solid var(--c-border);vertical-align:middle}.ptable thead th,.atable thead th{font-size:var(--t-sm);color:var(--c-text-muted);background:var(--c-surface);white-space:nowrap;font-weight:600}.ptable thead th button,.atable thead th button{font:inherit;color:inherit;cursor:pointer;gap:var(--s-1);background:0 0;border:0;align-items:center;padding:0;display:inline-flex}.ptable thead th button:focus-visible,.atable thead th button:focus-visible{outline:var(--focus);outline-offset:2px}.ptable .dir,.atable .dir{font-size:9px}.ptable tbody tr:hover,.atable tbody tr:hover{background:var(--c-accent-soft)}.ptable th:first-child{width:15%}.ptable th:nth-child(2){width:24%}.ptable th:nth-child(3),.ptable th:nth-child(4){width:6%}.ptable th:nth-child(5){width:13%}.ptable th:nth-child(6){width:17%}.ptable th:nth-child(7){width:14%}.ptable th:nth-child(8){width:5%}.ptable td:last-child,.ptable th:last-child,.atable td:last-child,.atable th:last-child{padding-left:var(--s-1);padding-right:var(--s-1);text-align:center}.atable th:first-child{width:58%}.atable th:nth-child(2){width:34%}.atable th:nth-child(3){width:8%}.num{font-variant-numeric:tabular-nums;font-size:var(--t-sm)}.ptable td.num,.trunc{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.empty-val{color:var(--c-text-faint)}.row-act{height:var(--ctrl-h);width:var(--ctrl-h);justify-content:center;padding:0}.rowmenu{display:inline-block;position:relative}.row-menu{right:0;top:calc(100% + var(--s-1));z-index:3;text-align:left;position:absolute}.menu-item.dangerous{color:var(--c-danger)}.menu-item[aria-disabled=true]{color:var(--c-text-faint);cursor:not-allowed}.menu-item[aria-disabled=true]:hover{background:0 0}.menu-reason{font-size:var(--t-xs);color:var(--c-text-muted);display:block}.row-menu--floating{top:calc(var(--menu-top) * 1px + var(--s-1));right:calc(var(--menu-right) * 1px);z-index:6;position:fixed}.tl-rowhead .rowmenu{right:var(--s-1);align-items:center;display:flex;position:absolute;top:0;bottom:0}.tl-row .tl-rowhead{padding-right:calc(var(--s-3) + var(--ctrl-h) + var(--s-1))}.switch{background:var(--c-accent);border-radius:10px;flex:none;width:36px;height:20px;display:inline-block;position:relative}.switch i{background:var(--c-surface);border-radius:50%;width:16px;height:16px;position:absolute;top:2px;right:2px}.switch.off{background:var(--c-border-strong)}.switch.off i{left:2px;right:auto}.sw-btn{align-items:center;gap:var(--s-2);cursor:pointer;font:var(--t-sm) var(--f-sans);color:var(--c-text);white-space:nowrap;background:0 0;border:0;padding:0;display:inline-flex}.sw-btn:focus-visible{outline:var(--focus);outline-offset:2px}.sw-btn[disabled]{cursor:not-allowed;opacity:var(--o-disabled)}.sw-btn .spin{border:2px solid;border-right-color:#0000;border-radius:50%;width:12px;height:12px;animation:.7s linear infinite sp;display:inline-block}.tipwrap{display:inline-block;position:relative}.tipbtn{cursor:help;border:0;font-family:inherit}.tipbtn:focus-visible{outline:var(--focus);outline-offset:2px}.tip{left:0;top:calc(100% + var(--s-1));z-index:3;background:var(--c-text);width:max-content;max-width:280px;color:var(--c-surface);padding:var(--s-2) var(--s-3);border-radius:var(--r-1);font-size:var(--t-sm);line-height:var(--lh-compact);box-shadow:var(--sh-2);white-space:normal;text-align:left;display:none;position:absolute}.tipwrap:hover .tip,.tipwrap:focus-within .tip,.tip.show{display:block}.pcards{gap:var(--s-3);grid-template-columns:minmax(0,1fr);margin:0;padding:0;list-style:none;display:grid}.pcard{padding:var(--s-3);gap:var(--s-2);display:grid}.pcard-top{justify-content:space-between;align-items:flex-start;gap:var(--s-2);display:flex}.pcard-top>div{min-width:0}.pcard-name{overflow-wrap:anywhere;font-weight:600}.pcard-mail{font-size:var(--t-sm);color:var(--c-text-muted);overflow-wrap:anywhere}.pcard dl{grid-template-columns:var(--w-card-label) minmax(0, 1fr);gap:var(--s-1) var(--s-3);font-size:var(--t-sm);margin:0;display:grid}.pcard dt{color:var(--c-text-muted)}.pcard dd{overflow-wrap:anywhere;margin:0}.content{grid-template-columns:minmax(0,1fr)}.modal{background:var(--c-surface);border-radius:var(--r-2);box-shadow:var(--sh-2);border:1px solid var(--c-border)}.modal header{padding:var(--s-4);border-bottom:1px solid var(--c-border)}.modal header p{margin:var(--s-2) 0 0;font-size:var(--t-sm);color:var(--c-text-muted)}.modal .body{padding:var(--s-4);gap:var(--s-3);display:grid}.body-form{gap:var(--s-3);display:grid}.modal footer{padding:var(--s-3) var(--s-4);border-top:1px solid var(--c-border);justify-content:flex-end;gap:var(--s-2);background:var(--c-surface-sunk);border-radius:0 0 var(--r-2) var(--r-2);display:flex}.dialog-layer{z-index:10;padding:var(--s-4);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.dialog-scrim{background:var(--c-text);opacity:var(--o-scrim);position:absolute;inset:0}.dialog{width:100%;max-width:460px;max-height:100%;position:relative;overflow:auto}.dialog:focus{outline:none}.toasts{top:calc(var(--h-head) + var(--s-3));right:var(--s-4);z-index:20;gap:var(--s-2);max-width:min(var(--w-toast), calc(100vw - var(--s-5)));justify-items:end;display:grid;position:fixed}.toast{gap:var(--s-2);background:var(--c-text);color:var(--c-surface);padding:var(--s-2) var(--s-3);border-radius:var(--r-1);font-size:var(--t-sm);box-shadow:var(--sh-2);align-items:center;display:inline-flex}.toast--e{background:var(--c-danger)}.toast code.ref{color:inherit;background:0 0}.toast .x{color:inherit;border-radius:var(--r-1);font:var(--t-xs) var(--f-sans);padding:0 var(--s-2);cursor:pointer;background:0 0;border:1px solid;flex:none}.toast .x:focus-visible{outline:var(--focus);outline-offset:2px}@media (width<=639px){.shell-ctx{flex-direction:column;align-items:stretch}.shell-actions .btn{justify-content:center;width:100%}.tip{max-width:min(280px, calc(100vw - var(--s-7)))}.toasts{left:var(--s-3);right:var(--s-3)}}.content--wide{max-width:none;margin:0}.timeline{flex-direction:column;flex:auto;display:flex;overflow:clip}.timeline>:not(.tl-scroll){flex:none}.legend{align-items:center;gap:var(--s-4);padding:var(--s-2) var(--s-4);font-size:var(--t-sm);border-bottom:1px solid var(--c-border);background:var(--c-surface);flex-wrap:wrap;display:flex}.legend .sq{width:12px;height:12px;margin-right:var(--s-2);vertical-align:-1px;border-radius:2px;display:inline-block}[data-category=OnCall]{background:var(--cat-oncall-bg);color:var(--cat-oncall-fg)}[data-category=OnsiteProject]{background:var(--cat-onsite-bg);color:var(--cat-onsite-fg);box-shadow:inset 0 0 0 1px var(--cat-onsite-edge)}[data-category=RemoteProject]{background:var(--cat-remote-bg);color:var(--cat-remote-fg)}[data-category=Absence]{background:var(--cat-absence-bg);color:var(--cat-absence-fg)}.legend .sq--error,.legend .sq--notice{width:auto;min-width:12px;padding:0 var(--s-1);line-height:12px;font-size:var(--t-xs);text-align:center;font-weight:700}.legend .sq--error{background:var(--c-conflict-bg);color:var(--c-conflict-fg)}.legend .sq--notice{background:var(--cat-onsite-bg) repeating-linear-gradient(135deg, var(--c-notice-stripe) 0 2px, var(--c-surface) 2px 3px, transparent 3px 8px);color:var(--c-text)}.legend--narrow{padding:var(--s-1) var(--s-2);flex-wrap:nowrap;gap:0;overflow-x:auto}.legend--narrow .tipwrap{flex:none}.legend--narrow .lg{padding:var(--s-2) var(--s-3);background:0 0}.legend--narrow .lg .sq{margin-right:0}.legend--narrow .lg:focus-visible{outline-offset:-2px}.tl-scroll{min-height:var(--h-timeline-min);background:var(--c-surface);flex:1 1 0;overflow:auto}.tl-head{z-index:4;position:sticky;top:0}.tl-scroll:focus-visible{outline:var(--focus);outline-offset:-2px}.tl{width:calc(var(--w-rowhead) + var(--dw) * var(--days));position:relative}.tl-line{display:flex}.tl-rowhead{flex:0 0 var(--w-rowhead);width:var(--w-rowhead);padding:var(--s-1) var(--s-3);border-right:1px solid var(--c-border);background:var(--c-surface);z-index:3;position:sticky;left:0}.tl-head .tl-line{border-bottom:1px solid var(--c-border);background:var(--c-surface-sunk)}.tl-head .tl-rowhead{background:var(--c-surface-sunk);font-size:var(--t-sm);color:var(--c-text-muted);font-weight:600}.tl-cell{width:calc(var(--dw) * var(--n));font-size:var(--t-xs);color:var(--c-text-muted);border-right:1px solid var(--c-border);white-space:nowrap;text-align:center;flex:none;padding:1px 0;overflow:hidden}.tl-cell.m{text-align:left;padding-left:var(--s-2);font-size:var(--t-sm);color:var(--c-text);font-weight:600}.tl-cell.d{font-size:var(--t-xs)}.tl-cell.weekend{background:var(--c-weekend)}.tl-group{background:var(--c-surface-sunk);border-top:1px solid var(--c-border);border-bottom:1px solid var(--c-border);display:flex}.tl-group .tl-rowhead{background:var(--c-surface-sunk);font-size:var(--t-sm);gap:var(--s-2);align-items:center;font-weight:600;display:flex}.grp-btn{font:inherit;color:inherit;cursor:pointer;gap:var(--s-2);background:0 0;border:0;align-items:center;padding:0;display:inline-flex}.grp-btn:focus-visible{outline:var(--focus);outline-offset:2px}.grp-btn{min-width:0;max-width:100%}.grp-btn .grp-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.tl-group .cnt{color:var(--c-text-muted);font-weight:400}.tl-row{border-bottom:1px solid var(--c-border);height:max(var(--row-min-h), calc(var(--lanes) * var(--lane-h) + (var(--lanes) + 1) * var(--lane-gap)));display:flex}.tl-row .tl-rowhead{flex-direction:column;justify-content:center;display:flex}.tl-name{font-size:var(--t-base);white-space:nowrap;text-overflow:ellipsis;line-height:16px;overflow:hidden}.tl-meta{justify-content:space-between;align-items:center;gap:var(--s-2);min-width:0;min-height:16px;display:flex}.tl-role{font-size:var(--t-xs);color:var(--c-text-muted);white-space:nowrap;text-overflow:ellipsis;line-height:16px;overflow:hidden}.tl-row .badge{padding:0 var(--s-2);flex:none;line-height:14px}.tl-lanes{background-image:linear-gradient(90deg, transparent calc(var(--dw) - 1px), var(--c-grid) calc(var(--dw) - 1px)), linear-gradient(90deg, transparent calc(var(--dw) * 5), var(--c-weekend) calc(var(--dw) * 5));background-size:var(--dw) 100%, calc(var(--dw) * 7) 100%;background-repeat:repeat-x,repeat-x;background-position-x:0, calc(var(--first-weekday) * var(--dw) * -1);flex:auto;position:relative}.tl-today{background:var(--c-today);width:2px;top:0;bottom:0;left:calc(var(--w-rowhead) + var(--dw) * var(--today) + var(--dw) / 2);z-index:2;pointer-events:none;position:absolute}.tb{z-index:1;height:var(--lane-h);top:calc(var(--lane-gap) + var(--lane) * (var(--lane-h) + var(--lane-gap)));left:calc(var(--dw) * var(--x));width:calc(var(--dw) * var(--w));border-radius:var(--r-1);padding:0 var(--s-2);font:500 var(--t-xs) / var(--lane-h) var(--f-sans);white-space:nowrap;text-overflow:ellipsis;position:absolute;overflow:hidden}.tb.half{height:var(--lane-h-half);line-height:var(--lane-h-half);text-align:center;padding:0}.tb.half.pm{top:calc(var(--lane-gap) + var(--lane) * (var(--lane-h) + var(--lane-gap)) + var(--lane-h-half) + var(--lane-gap))}.tb .sym{min-width:var(--s-4);padding:0 var(--s-1);margin-right:var(--s-1);text-align:center;background:var(--c-surface);color:var(--c-text);font-weight:700;line-height:var(--s-4);vertical-align:middle;border-radius:2px;display:inline-block}.tb.half .sym{min-width:var(--s-3);vertical-align:top;margin:0;padding:0 2px;font-size:10px;line-height:11px}.tb.rg[data-level=error]{background:var(--c-conflict-bg);color:var(--c-conflict-fg);box-shadow:inset 0 0 0 2px var(--c-surface)}.tb.rg[data-level=error] .sym{color:var(--c-conflict-bg)}.tb.rg[data-level=notice]{background-color:var(--c-surface-sunk);background-image:repeating-linear-gradient(135deg, var(--c-notice-stripe) 0 2px, var(--c-surface) 2px 3px, transparent 3px 8px);color:var(--c-text);box-shadow:inset 0 0 0 1px var(--c-border-strong)}.tb.rg[data-level=notice][data-color=OnsiteProject]{background-color:var(--cat-onsite-bg);box-shadow:inset 0 0 0 1px var(--cat-onsite-edge)}.tb.rg[data-level=notice][data-color=RemoteProject]{background-color:var(--cat-remote-bg);box-shadow:none}.tb.rg[data-level=notice][data-color=Absence]{background-color:var(--cat-absence-bg);box-shadow:none}.tb.mk{z-index:2;padding:0 var(--s-1);text-align:left;box-shadow:none;background:0 0}.tb.mk .sym{color:var(--c-conflict-bg);box-shadow:0 0 0 1px var(--c-conflict-bg)}.blk{z-index:0;top:var(--lane-gap);bottom:var(--lane-gap);left:calc(var(--dw) * var(--x));width:calc(var(--dw) * var(--w));justify-content:center;align-items:center;gap:var(--s-2);font-size:var(--t-sm);color:var(--c-text-muted);background:repeating-linear-gradient(135deg, var(--c-surface-sunk) 0 var(--s-2), var(--c-surface) var(--s-2) var(--s-4));border-radius:var(--r-1);display:flex;position:absolute}.blk--e{color:var(--c-danger);background:var(--c-danger-soft);text-align:center;padding:0 var(--s-2);flex-wrap:wrap}.blk .spin{border:2px solid;border-right-color:#0000;border-radius:50%;width:12px;height:12px;animation:.7s linear infinite sp;display:inline-block}@media (prefers-reduced-motion:reduce){.blk .spin{animation:none}}.sr{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.tl-row .tl-meta{justify-content:flex-start}.tl-row .tl-role{flex:1 1 0;min-width:0}.upd-slot{width:var(--w-update);flex:none;justify-content:flex-start;display:flex}.upd-slot--sym{width:var(--w-update-sym);justify-content:flex-end}.upd{align-items:center;gap:var(--s-1);white-space:nowrap;max-width:100%;padding:0 var(--s-2);font:var(--t-xs) / 18px var(--f-sans);color:var(--c-text-muted);cursor:help;background:0 0;border-radius:10px;display:inline-flex;overflow:hidden}.upd--w{background:var(--c-warning-soft);color:var(--c-warning);font-weight:600}.upd--sym{padding:0 var(--s-1)}.tipwrap .namebtn{text-overflow:ellipsis;white-space:nowrap;text-align:left;max-width:100%;font:var(--t-base) / 16px var(--f-sans);color:var(--c-text);cursor:help;background:0 0;padding:0;display:block;overflow:hidden}.toast--i{background:var(--c-accent)}.tip--fixed{left:calc(var(--tip-x) * 1px);top:calc(var(--tip-y) * 1px + var(--s-1));z-index:6;position:fixed}.tl-rowhead:has(.tip.show){z-index:9}.tipwrap:hover .tip--fixed:not(.show){display:none}@media (width<=639px){.tl{width:calc(var(--w-rowhead-narrow) + var(--dw) * var(--days))}.tl-rowhead{flex-basis:var(--w-rowhead-narrow);width:var(--w-rowhead-narrow)}.tl-today{left:calc(var(--w-rowhead-narrow) + var(--dw) * var(--today) + var(--dw) / 2)}.stale-text{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}}.lsec{gap:var(--s-2);display:grid}.lsec+.lsec{margin-top:var(--s-4)}.lsec-head{justify-content:space-between;align-items:center;gap:var(--s-3);flex-wrap:wrap;display:flex}.vtable{border-collapse:collapse;width:100%;font-size:var(--t-base);table-layout:fixed}.vtable th,.vtable td{text-align:left;padding:var(--s-2) var(--s-3);border-bottom:1px solid var(--c-border);vertical-align:middle}.vtable thead th{font-size:var(--t-sm);color:var(--c-text-muted);background:var(--c-surface);white-space:nowrap;font-weight:600}.vtable tbody tr:hover{background:var(--c-accent-soft)}.vtable--role th:first-child,.vtable--team th:first-child{width:7%}.vtable--role th:nth-child(2){width:15%}.vtable--role th:nth-child(3){width:48%}.vtable--role th:nth-child(4){width:22%}.vtable--team th:nth-child(2){width:63%}.vtable--team th:nth-child(3){width:22%}.vtable th:last-child,.vtable td:last-child{width:8%;padding-left:var(--s-1);padding-right:var(--s-1);text-align:center}.vtable th:first-child,.vtable td:first-child{padding-left:var(--s-2);padding-right:0}.grip{width:var(--ctrl-h);height:var(--ctrl-h);color:var(--c-text-muted);border-radius:var(--r-1);font-size:var(--t-md);cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none;justify-content:center;align-items:center;line-height:1;display:inline-flex}.grip:hover{background:var(--c-surface-sunk);color:var(--c-text)}.grip--off{visibility:hidden}.is-locked .grip{cursor:not-allowed;opacity:.45}.is-dragging{background:var(--c-accent-soft);opacity:.7}.is-dragging .grip{cursor:grabbing;color:var(--c-accent)}tr.drop-before td{box-shadow:inset 0 3px 0 var(--c-accent)}tr.drop-after td{box-shadow:inset 0 -3px 0 var(--c-accent)}.pcard.is-dragging{border-color:var(--c-accent)}.pcard.drop-before{box-shadow:0 -3px 0 var(--c-accent)}.pcard.drop-after{box-shadow:0 3px 0 var(--c-accent)}.pcard-lead{gap:var(--s-2);align-items:flex-start;min-width:0;display:flex}.pcard-sub{font-size:var(--t-sm);color:var(--c-text-muted);overflow-wrap:anywhere}@media (prefers-reduced-motion:reduce){.is-dragging{transition:none}}.sel{display:block;position:relative}.sel-btn{width:100%;height:var(--ctrl-h);justify-content:space-between;align-items:center;gap:var(--s-2);padding:0 var(--s-2);border:1px solid var(--c-border-strong);border-radius:var(--r-1);background:var(--c-surface);font:var(--t-base) var(--f-sans);color:var(--c-text);cursor:pointer;text-align:left;display:flex}.sel-btn .v{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.sel-btn.empty .v{color:var(--c-text-faint)}.sel-btn.err{border-color:var(--c-danger);background:var(--c-danger-soft)}.sel-btn[disabled]{opacity:.6;cursor:not-allowed}.sel-btn:focus-visible{outline:var(--focus);outline-offset:-1px;border-color:var(--c-accent)}.sel-pop{margin-top:var(--s-1);background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--r-2);box-shadow:var(--sh-2);font-size:var(--t-base);overflow:hidden}.toolbar .sel{min-width:180px}.toolbar .sel-pop{z-index:4;width:max-content;min-width:100%;max-width:360px;position:absolute;left:0}.sel-search{padding:var(--s-2);border-bottom:1px solid var(--c-border);background:var(--c-surface-sunk)}.sel-opts{padding:var(--s-1) 0;max-height:220px;margin:0;list-style:none;overflow-y:auto}.sel-opts:focus-visible{outline:var(--focus);outline-offset:-2px}.sel-opt{align-items:baseline;gap:var(--s-2);padding:var(--s-2) var(--s-3);cursor:pointer;display:flex}.sel-opt:hover,.sel-opt.act{background:var(--c-surface-sunk)}.sel-opt .mk{color:var(--c-accent);flex:0 0 14px;font-weight:700}.sel-opt .ab{color:var(--c-text-muted)}.sel-opt.none{color:var(--c-text-faint);border-bottom:1px solid var(--c-border)}.sel-opt.sel-on{background:var(--c-accent-soft)}.sel-empty{padding:var(--s-3);font-size:var(--t-sm);color:var(--c-text-muted)}.sel-foot{padding:var(--s-2) var(--s-3);border-top:1px solid var(--c-border);background:var(--c-surface-sunk);justify-content:space-between;display:flex}.toolbar .filters{gap:var(--s-2);flex-wrap:wrap;align-items:flex-start;display:flex}.fbox{margin:calc(-1 * var(--s-4)) calc(-1 * var(--s-4)) 0;background:var(--c-surface);border-bottom:1px solid var(--c-border);flex:none}.fbar{padding:var(--s-3) var(--s-4);background:0 0;border-bottom:0;border-radius:0}.fbar .grow{flex:0 130px;min-width:90px}.fbar .sel{min-width:130px}.fbar .view{gap:var(--s-3);flex-wrap:wrap;align-items:center;margin-left:auto;display:flex}.fbar--narrow{padding:var(--s-3)}.fbar--narrow .grow{flex:auto}.fbar--narrow .view{flex:1 0 100%;margin-left:0}.tl[data-zoom=month] .tb{padding:0;font-size:0}.tl[data-zoom=month] .tb .sym{display:none}.tl[data-zoom=month] .tb.rg[data-level=error]{box-shadow:none;outline:2px solid var(--c-conflict-bg);outline-offset:0}.tl[data-zoom=month] .tl-cell.d{padding:0}.tl-row.is-empty .tl-name{color:var(--c-text-muted)}.tb:focus-visible{outline:var(--focus);outline-offset:1px}.btip{pointer-events:none;transform:translateX(min(0px, calc(100vw - var(--tip-x) * 1px - 100% - var(--s-3))))}.btip b,.btip .tip-line,.btip .tip-sec{display:block}.btip .tip-sec+.tip-sec{margin-top:var(--s-2)}.fp-btn{gap:var(--s-2);align-items:center;display:inline-flex}.fpanel{gap:var(--s-3);padding:var(--s-3);background:var(--c-surface-sunk);border-bottom:1px solid var(--c-border);display:grid}.fpanel .sel,.fpanel .sel-btn{width:100%}.tl-collapsed{visibility:hidden;flex:none;height:0;min-height:0;overflow:hidden}
