:root{--bg:#f5f7fa;--panel:#fff;--ink:#1a2230;--ink-soft:#4a5568;--muted:#7c8697;--border:#e2e7ef;--border-strong:#cdd5e1;--accent:#0d6e79;--accent-ink:#0a565f;--accent-tint:#e2f0f1;--danger:#c0392b;--danger-tint:#fdeaea;--warn:#93370d;--warn-tint:#fff6ed;--warn-border:#f9dbaf;--shadow-sm:0 1px 2px #1a22300f, 0 1px 3px #1a22300a;--shadow-md:0 6px 16px #1a223024, 0 2px 6px #1a223014;--radius:10px;--font:-apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif}*{box-sizing:border-box}html,body{height:100%}body{font-family:var(--font);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;margin:0}@media (prefers-reduced-motion:reduce){*{transition:none!important}}.app-shell nav{background:var(--panel);border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:10px 18px;padding:14px 22px;display:flex}.brand{flex-direction:column;gap:2px;min-width:0;margin-right:4px;display:flex}.brand h1{letter-spacing:-.02em;margin:0;font-size:17px;font-weight:700}.brand .sub{color:var(--muted);letter-spacing:.01em;white-space:nowrap;font-size:11.5px}.app-shell nav a{color:var(--ink-soft);border:1px solid #0000;border-radius:8px;padding:7px 12px;font-size:13px;font-weight:600;text-decoration:none;transition:background .12s,color .12s,border-color .12s}.app-shell nav a:hover{background:#f0f3f8}.app-shell nav a.active{background:var(--accent);color:#fff}.nav-dropdown{position:relative}.app-shell nav .nav-dropdown-toggle{color:var(--ink-soft);background:0 0;border:1px solid #0000;border-radius:8px;align-items:center;gap:4px;padding:7px 12px;font-size:13px;font-weight:600;display:inline-flex}.app-shell nav .nav-dropdown-toggle:hover{background:#f0f3f8}.app-shell nav .nav-dropdown-toggle.active{background:var(--accent);color:#fff}.nav-dropdown-caret{font-size:9px}.nav-dropdown-menu{background:var(--panel);border:1px solid var(--border-strong);min-width:150px;box-shadow:var(--shadow-md);z-index:50;border-radius:10px;flex-direction:column;gap:2px;padding:6px;display:flex;position:absolute;top:calc(100% + 6px);left:0}.nav-dropdown-menu a{display:block}.nav-spacer{flex:1}.nav-user{align-items:center;gap:8px;display:flex}.app-shell nav .muted{color:var(--muted);font-size:13px}main{max-width:1000px;margin:0 auto;padding:22px}h1{letter-spacing:-.02em;margin:0 0 4px;font-size:20px;font-weight:700}.muted{color:var(--muted);font-size:.9em}.error{color:var(--danger);background:var(--danger-tint);border:1px solid #f0c9c9;border-radius:8px;padding:8px 12px;font-size:13px}button{font-family:var(--font);cursor:pointer;border:1px solid var(--border-strong);background:var(--panel);color:var(--ink-soft);white-space:nowrap;border-radius:8px;padding:8px 12px;font-size:13px;font-weight:500;transition:background .12s,border-color .12s,color .12s,box-shadow .12s}button:hover{background:#f0f3f8}button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button:disabled{color:var(--muted);cursor:not-allowed;background:#f3f4f6}input,select{font-family:var(--font);color:var(--ink);border:1px solid var(--border-strong);background:#fbfcfe;border-radius:8px;padding:8px 10px;font-size:13.5px}input:focus,select:focus,input:focus-visible,select:focus-visible{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-tint);outline:none}input[type=color]{width:44px;padding:3px}.save-button,.primary,form button[type=submit]{background:var(--accent);border-color:var(--accent);color:#fff}.save-button:hover,.primary:hover,form button[type=submit]:hover{background:var(--accent-ink);border-color:var(--accent-ink)}.save-button:disabled{background:var(--border-strong);border-color:var(--border-strong);color:var(--muted)}.day-logger .save-button{margin-left:8px}.avatar{color:#fff;letter-spacing:.02em;-webkit-user-select:none;user-select:none;vertical-align:middle;border-radius:50%;flex:none;place-items:center;font-weight:700;display:inline-grid}.person-cell{align-items:center;gap:8px;display:inline-flex}.pill{text-transform:uppercase;letter-spacing:.05em;white-space:nowrap;border-radius:20px;padding:2px 7px;font-size:10px;font-weight:700;display:inline-block}.pill.dca{color:#0a565f;background:#e2f0f1}.pill.pal{color:#a5710f;background:#fbf0dd}.pill.vgs{color:#2b63a8;background:#e3eefb}.pill.vgn{color:#2f7d47;background:#e4f3e8}.pill.other{color:#5b6472;background:#eef1f6}.pill.role-admin{background:var(--accent-tint);color:var(--accent-ink)}.pill.role-manager{color:#2b63a8;background:#e3eefb}.pill.role-viewer{color:#6b3fa0;background:#f3eefc}.pill.role-employee{color:#5b6472;background:#eef1f6}.login-screen{background:radial-gradient(480px 320px at 50% 0%, var(--accent-tint), transparent), linear-gradient(180deg, var(--bg), var(--bg));justify-content:center;align-items:center;min-height:calc(100vh - 44px);display:flex}.login-page{text-align:center;background:var(--panel);border:1px solid var(--border);width:100%;max-width:380px;box-shadow:var(--shadow-md);border-radius:16px;padding:36px 32px}.login-mark{background:linear-gradient(135deg, var(--accent), var(--accent-ink));color:#fff;letter-spacing:-.02em;width:48px;height:48px;box-shadow:var(--shadow-sm);border-radius:12px;justify-content:center;align-items:center;margin:0 auto 16px;font-size:16px;font-weight:700;display:flex}.login-page h1{font-size:19px}.login-page .hint{color:var(--muted);margin:8px 0 22px;font-size:13px;line-height:1.5}.login-page .error{text-align:left;margin-bottom:16px}.ms-signin{width:100%;color:var(--ink);background:var(--panel);border:1px solid var(--border-strong);justify-content:center;align-items:center;gap:10px;padding:11px 16px;font-size:14px;font-weight:600;display:flex}.ms-signin:hover{box-shadow:var(--shadow-sm);background:#f7f9fc;border-color:#b9c2cf}.ms-signin:disabled{opacity:.7}.recent-strip{gap:8px;margin:16px 0;display:flex}.day-chip{border:1px solid var(--border);background:var(--panel);box-shadow:var(--shadow-sm);cursor:pointer;text-align:center;color:var(--ink-soft);border-radius:8px;flex:1;padding:8px 4px;font-size:12px;font-weight:600;transition:border-color .12s,box-shadow .12s}.day-chip:hover{border-color:var(--border-strong)}.day-chip.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent);color:var(--ink)}.day-chip.logged{background:var(--accent-tint)}.day-logger{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:18px}.capacity-reason{background:var(--warn-tint);border:1px solid var(--warn-border);color:var(--warn);border-radius:8px;margin-bottom:12px;padding:8px 12px;font-size:13px;font-weight:500}.capacity-summary{letter-spacing:-.01em;margin-bottom:12px;font-weight:700}.capacity-summary.over{color:var(--danger)}.log-row{align-items:center;gap:8px;margin-bottom:8px;display:flex}.log-row .notes-input{flex:1;min-width:0}.remove-row{color:var(--muted);cursor:pointer;background:0 0;border:none;padding:4px 6px;font-size:15px}.remove-row:hover{background:var(--danger-tint);color:var(--danger);border-radius:6px}.swatches{vertical-align:middle;flex-wrap:wrap;gap:6px;display:inline-flex}.swatch{cursor:pointer;width:22px;height:22px;box-shadow:0 0 0 1px var(--border-strong);border:2px solid #0000;border-radius:50%;display:inline-block}.swatch.sel{box-shadow:0 0 0 2px var(--ink);border-color:#fff}.scrim{z-index:60;background:#141c2a73;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.dialog{background:var(--panel);box-shadow:var(--shadow-md);border-radius:14px;width:100%;max-width:380px;max-height:calc(100vh - 40px);padding:22px;overflow-y:auto}.dialog h2{letter-spacing:-.01em;margin:0 0 4px;font-size:16px;font-weight:700}.dialog .hint{color:var(--muted);margin:0 0 16px;font-size:12px}.dialog .error{margin-bottom:12px}.field{flex-direction:column;gap:5px;margin-bottom:13px;display:flex}.field label{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-size:11px;font-weight:600}.field input,.field select{width:100%}.field.split{border-top:1px solid var(--border);padding-top:13px}.dialog-actions{justify-content:flex-end;gap:8px;margin-top:20px;display:flex}.dialog-actions .danger{color:var(--danger);background:#fff;border-color:#f0c9c9;margin-right:auto}.dialog-actions .danger:hover{background:var(--danger-tint)}.admin-page .inline-form{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:4px;display:flex}.table-wrap{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);margin-top:16px;overflow-x:auto}.admin-page table{border-collapse:collapse;width:100%}.admin-page th,.admin-page td{text-align:left;border-bottom:1px solid var(--border);padding:10px 12px;font-size:13.5px}.admin-page th{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);background:#fbfcfe;font-size:11px;font-weight:700}.admin-page tr:last-child td{border-bottom:none}.admin-page tr.closed-row{opacity:.5}.view-toggle{gap:8px;margin-bottom:12px;display:inline-flex}.view-toggle button.active{background:var(--accent);border-color:var(--accent);color:#fff}.view-toggle button.active:hover{background:var(--accent-ink);border-color:var(--accent-ink)}.week-nav{align-items:center;gap:10px;display:flex}.week-nav span{text-align:center;min-width:150px;font-weight:600}.week-legend{color:var(--ink-soft);flex-wrap:wrap;gap:16px;margin:12px 0;font-size:12.5px;display:flex}.week-legend-item{align-items:center;gap:6px;display:inline-flex}.week-legend-swatch{border-radius:3px;width:12px;height:12px;display:inline-block}.week-legend-unlogged{background:var(--border)}.week-legend-off{background:var(--muted);opacity:.5}.week-bar{background:var(--border);border:1px solid var(--border-strong);border-radius:4px;width:110px;height:20px;display:flex;overflow:hidden}.week-bar-segment{height:100%}.week-bar-unlogged{background:var(--border)}.week-bar-off{background:repeating-linear-gradient(45deg, var(--border), var(--border) 4px, var(--panel) 4px, var(--panel) 8px);border:1px solid var(--border-strong);width:110px;height:20px;color:var(--muted);border-radius:4px;justify-content:center;align-items:center;font-size:10px;display:flex}.kb-board{align-items:stretch;gap:16px;margin-top:16px;padding-bottom:10px;display:flex;overflow-x:auto}.kb-column{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);flex-direction:column;flex:0 0 260px;max-height:calc(100vh - 260px);display:flex;position:relative}.kb-column.kb-bench{border-style:dashed;border-color:var(--border-strong);box-shadow:none;background:#f0f2f6}.kb-column:before{content:"";border-radius:var(--radius) var(--radius) 0 0;background:var(--kb-squad,transparent);height:4px;position:absolute;inset:0 0 auto}.kb-column.kb-bench:before{display:none}.kb-column.kb-drop-active{box-shadow:inset 0 0 0 2px var(--accent)}.kb-col-head{align-items:center;gap:8px;padding:14px 12px 10px;display:flex}.kb-col-dot{background:var(--kb-squad,var(--muted));border-radius:50%;flex:none;width:12px;height:12px}.kb-column.kb-bench .kb-col-dot{background:repeating-linear-gradient(45deg,#c3cbd8,#c3cbd8 3px,#d8dee7 3px 6px)}.kb-col-name{letter-spacing:-.01em;flex:auto;min-width:0;font-size:14px;font-weight:650}.kb-col-count{font-variant-numeric:tabular-nums;color:var(--muted);background:#eef1f6;border-radius:20px;flex:none;padding:2px 8px;font-size:12px;font-weight:600}.kb-col-body{flex-direction:column;flex:auto;gap:8px;min-height:60px;padding:4px 10px 12px;display:flex;overflow-y:auto}.kb-empty{text-align:center;margin:10px 0 0;font-size:12.5px}.kb-card{background:var(--panel);border:1px solid var(--border);box-shadow:var(--shadow-sm);border-radius:9px;align-items:center;gap:10px;padding:10px 11px;display:flex}.kb-card[draggable=true]{cursor:grab}.kb-card[draggable=true]:active{cursor:grabbing}.kb-card.kb-dragging{opacity:.4}.kb-card-main{flex-direction:column;flex:auto;align-items:flex-start;gap:4px;min-width:0;display:flex}.kb-card-name{letter-spacing:-.01em;white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:13.5px;font-weight:600;overflow:hidden}.cal-table th,.cal-table td{white-space:nowrap}.cal-table .cal-cell{text-align:center;color:#fff;border-left:1px solid var(--border);width:24px;min-width:24px;padding:0;font-size:10px}.cal-table th.cal-day-head{color:var(--muted);text-align:center;background:#fbfcfe;padding:4px 0;font-size:10px;font-weight:600}.cal-weekend{background:#f1f3f7!important}.cal-company-holiday{background:repeating-linear-gradient(45deg, var(--border), var(--border) 3px, var(--panel) 3px, var(--panel) 6px)!important}.cal-squad-row td{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);background:#fbfcfe;border-left:none;padding:8px 12px;font-size:11px;font-weight:700}.project-groups{flex-direction:column;gap:10px;margin-top:16px;display:flex}.project-group{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);overflow:hidden}.project-group summary{cursor:pointer;align-items:center;gap:8px;padding:12px 16px;font-weight:600;list-style:none;display:flex}.project-group summary::-webkit-details-marker{display:none}.project-group summary:before{content:"▸";color:var(--muted);font-weight:400}.project-group[open] summary:before{content:"▾"}.project-group-name{flex:1}.project-group-hours{color:var(--accent-ink);font-weight:700}.project-group table{border-top:1px solid var(--border)}
