:root{--canvas:#f8f4ec;--surface:#fff;--surface-2:#fcfaf5;--grid:#e8e0d0;--grid-strong:#d6cfc2;--weekend:#e8e0d073;--ink:#161e2b;--ink-soft:#3f4757;--muted:#636b7c;--navy:#1c2a47;--copper:#b86a2e;--chrome-hi:#1c2a47;--signal:#b86a2e;--focus:#2563eb;--danger:#dc2626;--label-w:196px;--mono:ui-monospace,"SF Mono",SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace;--sans:"Inter",ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;--display:"DM Serif Display",Georgia,serif;--shadow:0 1px 2px #161e2b0f,0 4px 14px #161e2b0f;--shadow-lg:0 10px 40px #161e2b2e}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--sans);background:var(--canvas);color:var(--ink);-webkit-font-smoothing:antialiased;overflow:hidden}#root{flex-direction:column;display:flex}button{cursor:pointer;font-family:inherit}header{background:var(--surface);border-bottom:1px solid var(--grid-strong);z-index:20;flex-wrap:wrap;align-items:center;gap:14px;padding:12px 18px;display:flex}.brand{align-items:center;gap:12px;margin-right:6px;display:flex}.brand .brand-logo{object-fit:contain;width:auto;height:26px}.brand .brand-div{background:var(--grid);width:1px;height:20px}.brand h1{font-family:var(--display);color:var(--navy);letter-spacing:-.01em;margin:0;font-size:19px;font-weight:400;line-height:1}.brand .sub{color:var(--muted);font-size:11.5px;font-family:var(--mono);letter-spacing:.02em}.spacer{flex:1}.seg{background:var(--canvas);border:1px solid var(--grid-strong);border-radius:8px;padding:3px;display:inline-flex}.seg button{color:var(--ink-soft);background:0 0;border:0;border-radius:6px;padding:6px 12px;font-size:13px;font-weight:550}.seg button.active{background:var(--surface);color:var(--ink);box-shadow:var(--shadow)}.navcluster{align-items:center;gap:2px;display:inline-flex}.icon-btn{border:1px solid var(--grid-strong);background:var(--surface);width:34px;height:34px;color:var(--ink-soft);border-radius:8px;justify-content:center;align-items:center;font-size:15px;display:inline-flex}.icon-btn:hover{background:var(--surface-2);color:var(--ink)}.period{font-family:var(--mono);color:var(--ink);text-align:center;min-width:150px;font-size:13px;font-weight:600}.btn{border:1px solid var(--grid-strong);background:var(--surface);color:var(--ink);border-radius:8px;align-items:center;gap:7px;padding:8px 13px;font-size:13px;font-weight:550;display:inline-flex}.btn:hover{background:var(--surface-2)}.btn.primary{background:var(--navy);border-color:var(--navy);color:#fff}.btn.primary:hover{background:#16223a}.refresh-glyph{font-size:15px;line-height:1;display:inline-block}.refresh-glyph.spin{animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.user-chip{color:var(--muted);align-items:center;gap:8px;font-size:12.5px;display:flex}.user-chip .signout{color:var(--muted);background:0 0;border:0;padding:0;font-size:12px;text-decoration:underline}.user-chip .signout:hover{color:var(--ink)}.btn:disabled{opacity:.55;cursor:default}.banner{color:var(--danger);background:#fef2f2;border-bottom:1px solid #fecaca;padding:8px 18px;font-size:13px;font-weight:550}.board-wrap{flex:1;position:relative;overflow:auto}.board{min-width:max-content;position:relative}.axis{z-index:12;background:var(--surface);border-bottom:1px solid var(--grid-strong);display:flex;position:sticky;top:0}.axis .corner{z-index:2;width:var(--label-w);background:var(--surface);border-right:1px solid var(--grid-strong);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);flex:none;align-items:center;padding:0 14px;font-size:11px;font-weight:600;display:flex;position:sticky;left:0}.axis-track{position:relative}.month-strip{pointer-events:none;height:22px;display:flex}.mlabel{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);border-left:1px solid var(--grid-strong);white-space:nowrap;flex:none;padding:5px 8px;font-size:10.5px;overflow:hidden}.days{display:flex}.daycell{text-align:center;border-left:1px solid var(--grid);flex:none;min-height:34px;padding:4px 0 7px}.daycell.wk{background:var(--weekend)}.daycell .dow{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-size:9.5px}.daycell .dnum{font-family:var(--mono);color:var(--ink-soft);font-size:12.5px;font-weight:600;line-height:1.3}.zoom-quarter .daycell .dnum{font-size:10px}.daycell.today .dnum{color:var(--surface);background:var(--signal);border-radius:9px;min-width:20px;height:20px;margin-top:1px;padding:0 2px;line-height:20px;display:inline-block}.rows{position:relative}.underlay{z-index:0;pointer-events:none;background-image:linear-gradient(90deg,var(--grid) 0 1px,transparent 1px);position:absolute;top:0;bottom:0}.wkstrip{background:var(--weekend);position:absolute;top:0;bottom:0}.needle{background:var(--signal);z-index:8;width:2px;position:absolute;top:0;bottom:0}.needle:before{content:"";background:var(--signal);border-radius:50%;width:8px;height:8px;position:absolute;top:0;left:-3px}.row{border-bottom:1px solid var(--grid);display:flex;position:relative}.row .label{z-index:6;width:var(--label-w);background:var(--surface);border-right:1px solid var(--grid-strong);flex:none;align-items:center;gap:11px;padding:0 14px;display:flex;position:sticky;left:0}.row:nth-child(2n) .label{background:var(--surface-2)}.avatar{color:#fff;width:30px;height:30px;font-size:12px;font-weight:650;font-family:var(--mono);border-radius:8px;flex:none;justify-content:center;align-items:center;display:flex}.who{min-width:0}.who .nm{white-space:nowrap;text-overflow:ellipsis;font-size:13.5px;font-weight:600;overflow:hidden}.who .rl{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:11px;font-family:var(--mono);overflow:hidden}.pdot{border-radius:4px;flex:none;width:12px;height:12px}.orgtag{background:var(--canvas);border:1px solid var(--grid-strong);letter-spacing:.04em;text-transform:uppercase;border-radius:4px;margin-right:5px;padding:0 4px;font-size:9.5px}.track{z-index:1;flex:none;height:100%;position:relative;overflow:hidden}.bar{color:#fff;z-index:5;cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none;border:1px solid #ffffff47;border-radius:7px;align-items:center;gap:6px;padding:0 9px;display:flex;position:absolute;overflow:hidden;box-shadow:0 1px 2px #0f172a2e}.bar:hover{box-shadow:0 3px 12px #0f172a47}.bar.dragging{cursor:grabbing;z-index:30;box-shadow:var(--shadow-lg);opacity:.96}.bar.vac{background-image:repeating-linear-gradient(135deg,#ffffff29 0 6px,#0000 6px 12px)}.bar.conflict{outline:2px solid var(--danger);border:2px solid #fff}.bar .btitle{white-space:nowrap;text-overflow:ellipsis;text-shadow:0 1px 1px #0000002e;font-size:12.5px;font-weight:650;line-height:1.1;overflow:hidden}.bar .bsub{opacity:.92;font-size:10.5px;font-family:var(--mono);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.bar .bstack{pointer-events:none;flex-direction:column;justify-content:center;min-width:0;display:flex}.bar .days-pill{font-family:var(--mono);pointer-events:none;background:#ffffff38;border-radius:20px;flex:none;padding:1px 5px;font-size:10px}.zoom-quarter .bar{padding:0 4px}.zoom-quarter .bar .btitle{font-size:10.5px}.zoom-quarter .bar .days-pill{display:none}.bar .handle{cursor:ew-resize;opacity:0;width:9px;position:absolute;top:0;bottom:0}.bar .handle.l{left:0}.bar .handle.r{right:0}.bar:hover .handle.l{opacity:1;background:linear-gradient(90deg,#ffffff59,#0000)}.bar:hover .handle.r{opacity:1;background:linear-gradient(270deg,#ffffff59,#0000)}.empty{color:var(--muted);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:8px;min-height:200px;padding:40px;display:flex;position:absolute;inset:0}.empty h3{color:var(--ink-soft);margin:0;font-size:15px}.empty p{max-width:360px;margin:0;font-size:13px;line-height:1.5}.legend{background:var(--surface);border-top:1px solid var(--grid-strong);color:var(--ink-soft);flex-wrap:wrap;align-items:center;gap:6px;padding:9px 18px;font-size:12px;display:flex}.legend .lg-title{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-right:4px;font-size:10.5px}.legend .li{background:var(--canvas);border:1px solid var(--grid-strong);border-radius:20px;align-items:center;gap:6px;padding:3px 9px 3px 6px;display:inline-flex}.legend .sw{border-radius:3px;width:11px;height:11px}.legend .vac-sw{background:#64748b repeating-linear-gradient(135deg,#ffffff40 0 3px,#0000 3px 6px)}.legend .lc{color:var(--muted)}.legend .filt{align-items:center;gap:8px;margin-left:auto;display:inline-flex}.seg.seg-sm{padding:2px}.seg.seg-sm button{padding:3px 9px;font-size:11.5px}select,input,textarea{color:var(--ink);border:1px solid var(--grid-strong);background:var(--surface);border-radius:8px;outline:none;padding:8px 10px;font-family:inherit;font-size:13px}select:focus,input:focus,textarea:focus{border-color:var(--focus);box-shadow:0 0 0 3px #2563eb24}textarea{resize:vertical;font-family:var(--mono);font-size:11.5px}.scrim{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:50;background:#0f172a6b;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal{background:var(--surface);box-shadow:var(--shadow-lg);border-radius:16px;width:min(460px,100%);max-height:90vh;overflow:auto}.panel{background:var(--surface);box-shadow:var(--shadow-lg);border-radius:16px;width:min(580px,100%);max-height:90vh;overflow:auto}.m-head{border-bottom:1px solid var(--grid);justify-content:space-between;align-items:center;padding:18px 20px;display:flex}.m-head h2{margin:0;font-size:16px;font-weight:650}.m-body{flex-direction:column;gap:14px;padding:18px 20px;display:flex}.m-body code{font-family:var(--mono);background:var(--canvas);border-radius:4px;padding:1px 5px;font-size:11px}.m-foot{border-top:1px solid var(--grid);justify-content:flex-end;gap:10px;padding:14px 20px;display:flex}.field{flex-direction:column;gap:6px;display:flex}.field label{color:var(--ink-soft);font-size:12px;font-weight:600}.field .row2{gap:10px;display:flex}.field .row2>*{flex:1}.swatches{flex-wrap:wrap;gap:8px;display:flex}.swatch{cursor:pointer;border:2px solid #0000;border-radius:8px;width:28px;height:28px}.swatch.sel{border-color:var(--ink);box-shadow:0 0 0 2px var(--surface) inset}.tabs{gap:4px;padding:14px 20px 0;display:flex}.tabs button{color:var(--muted);background:0 0;border:0;border-radius:8px 8px 0 0;padding:8px 12px;font-size:13px;font-weight:600}.tabs button.active{color:var(--ink);background:var(--canvas)}.tabcontent{padding:16px 20px 20px}.list{flex-direction:column;gap:8px;margin-top:12px;display:flex}.list .item{border:1px solid var(--grid);background:var(--surface-2);border-radius:10px;align-items:center;gap:11px;padding:9px 11px;display:flex}.list .item .grow{flex:1;min-width:0}.list .item .t{white-space:nowrap;text-overflow:ellipsis;font-size:13.5px;font-weight:600;overflow:hidden}.list .item .s{color:var(--muted);font-size:11.5px;font-family:var(--mono)}.list .item .dot{border-radius:4px;flex:none;width:12px;height:12px}.mini{border:1px solid var(--grid-strong);background:var(--surface);width:30px;height:30px;color:var(--ink-soft);border-radius:7px;justify-content:center;align-items:center;font-size:14px;display:inline-flex}.mini:hover{color:var(--danger);border-color:var(--danger)}.addrow{gap:8px;margin-top:14px;display:flex}.addrow input{flex:1;min-width:0}.hint{color:var(--muted);font-size:11.5px;line-height:1.5}.link{color:var(--focus);background:0 0;border:0;align-self:flex-start;padding:0;font-size:12.5px;text-decoration:underline}.danger-link{color:var(--danger)}@media (width<=640px){.brand .sub{display:none}:root{--label-w:132px}.period{min-width:110px}}.auth{min-height:100vh;display:flex}.auth-left{background:var(--navy);flex-direction:column;width:40%;min-width:340px;padding:48px;display:flex;position:relative;overflow:hidden}.auth-watermark{object-fit:contain;opacity:.05;pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;inset:0}.auth-wordmark{z-index:1;object-fit:contain;align-self:flex-start;width:auto;height:32px;position:relative}.auth-hero{z-index:1;flex:1;align-items:center;display:flex;position:relative}.auth-hero h1{font-family:var(--display);color:#fff;margin:0;font-size:2.4rem;font-weight:400;line-height:1.35}.auth-geo{z-index:1;letter-spacing:.2em;text-transform:uppercase;color:#7a8fae;margin:0;font-size:11px;position:relative}.auth-right{background:var(--canvas);flex:1;justify-content:center;align-items:center;padding:48px;display:flex}.auth-card-wrap{flex-direction:column;gap:28px;width:100%;max-width:380px;display:flex}.auth-card{background:var(--surface);border:1px solid var(--grid);box-shadow:var(--shadow);border-radius:6px;flex-direction:column;gap:14px;padding:32px;display:flex}.auth-card h2{font-family:var(--display);color:var(--navy);margin:0;font-size:21px;font-weight:400;line-height:1.3}.auth-card code{font-family:var(--mono);background:var(--canvas);border-radius:4px;padding:1px 5px;font-size:11px}.auth-sub{color:var(--muted);margin:0;font-size:13.5px}.auth-ms-btn{background:var(--navy);color:#fff;border:0;border-radius:6px;justify-content:center;align-items:center;gap:12px;width:100%;margin-top:6px;padding:13px 16px;font-size:14px;font-weight:500;display:flex}.auth-ms-btn:hover{opacity:.92}.auth-fine{color:var(--muted);text-align:center;margin:0;font-size:11px}.auth-foot{justify-content:center;align-items:center;gap:8px;display:flex}.auth-foot img{object-fit:contain;opacity:.5;width:auto;height:14px}.auth-foot span{color:var(--muted);font-size:12px}@media (width<=768px){.auth{flex-direction:column}.auth-left{width:100%;min-height:220px;padding:32px}.auth-hero{padding:24px 0}.auth-hero h1{font-size:1.7rem}}
