:root{--kaha-navy-60:#4a4f6a;--kaha-navy-40:#8c90a3;--kaha-navy-20:#c8cad2;--kaha-navy-10:#e6e7eb;--kaha-navy-05:#f3f4f6;--kaha-canvas:#fff;--kaha-surface-1:#fff;--kaha-surface-2:var(--kaha-navy-05);--kaha-text-1:#000421;--kaha-text-2:var(--kaha-navy-60);--kaha-text-3:var(--kaha-navy-40);--kaha-border:var(--kaha-navy-10);--kaha-border-2:var(--kaha-navy-20);--kaha-brand:#0077b6;--kaha-brand-strong:#005a8a;--kaha-brand-soft:#0077b61f;--kaha-navy:#000421;--kaha-mist:#91b2cf;--kaha-danger:#b3261e;--kaha-white:#fff;--kaha-blue:#0077b6;--kaha-shadow-focus:0 0 0 3px #0077b659;--kaha-status-green:#2e7d57;--kaha-status-green-tint:#e7f1eb;--kaha-status-green-on:#1c543b;--kaha-status-green-on-tint:var(--kaha-status-green-on);--kaha-status-blue:#0077b6;--kaha-status-amber:#b9791a;--kaha-status-amber-tint:#f8efdc;--kaha-status-amber-on:#7a4e0c;--kaha-status-amber-on-tint:var(--kaha-status-amber-on);--kaha-status-red:#b3261e;--kaha-status-red-tint:#fae9e7;--kaha-status-red-on:#8a1c16;--kaha-status-red-on-tint:var(--kaha-status-red-on);--kaha-status-neutral:#6b7085;--kaha-status-neutral-tint:#eef0f3;--kaha-status-neutral-on:#454a5f;--kaha-status-neutral-on-tint:var(--kaha-status-neutral-on);--font-sans:"Roboto", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono:"Roboto Mono", "Fira Code", "Cascadia Code", monospace;--radius-kia-sm:6px;--radius-kia:8px;--radius-kia-lg:11px;--radius-pill:999px;--kaha-radius:var(--radius-kia);--kaha-radius-lg:var(--radius-kia-lg);--kaha-radius-pill:var(--radius-pill);--kaha-shadow-1:0 1px 2px #0004210f, 0 1px 1px #0004210a;--kaha-shadow-2:0 4px 12px #00042114, 0 2px 4px #0004210a;--kaha-shadow-3:0 12px 32px #0004211f, 0 4px 8px #0004210f;--kaha-ease:cubic-bezier(.22, .61, .36, 1);--kaha-motion-state:.2s;--color-bg:var(--kaha-surface-2);--color-surface:var(--kaha-surface-1);--color-border:var(--kaha-border);--color-text:var(--kaha-text-1);--color-text-muted:var(--kaha-text-2);--color-primary:var(--kaha-brand);--color-primary-hover:var(--kaha-brand-strong);--color-primary-text:#fff;--color-error:var(--kaha-status-red);--color-error-bg:var(--kaha-status-red-tint);--color-goal:#eb6834;--color-goal-ahead:var(--kaha-status-green);--color-actual:var(--kaha-status-blue);--radius:var(--radius-kia);--shadow-sm:var(--kaha-shadow-1);--shadow-md:var(--kaha-shadow-2)}[data-theme=dark]{--kaha-surface-1:#0d1030;--kaha-surface-2:#ffffff14;--kaha-text-1:#eef1f8;--kaha-text-2:#a7b0c8;--kaha-text-3:#6a7290;--kaha-border:#ffffff17;--kaha-brand:#3d9bd6;--kaha-brand-soft:#3d9bd62e;--kaha-danger:#fb7185;--color-bg:var(--kaha-surface-2);--color-surface:var(--kaha-surface-1);--color-border:var(--kaha-border);--color-text:var(--kaha-text-1);--color-text-muted:var(--kaha-text-2);--color-primary:var(--kaha-brand)}[data-theme=light]{--kaha-surface-1:#fff;--kaha-text-1:#000421;--kaha-text-2:var(--kaha-navy-60);--kaha-text-3:var(--kaha-navy-40);--kaha-border:var(--kaha-navy-10);--kaha-brand:#0077b6;--kaha-brand-soft:#0077b61f;--kaha-danger:#b3261e}@font-face{font-family:Roboto;src:url(/assets/Roboto-VariableFont_wdth_wght-CTnIOZTo.ttf)format("truetype-variations"),url(/assets/Roboto-VariableFont_wdth_wght-CTnIOZTo.ttf)format("truetype");font-weight:100 900;font-style:normal;font-display:swap}@font-face{font-family:Roboto;src:url(/assets/Roboto-Italic-VariableFont_wdth_wght-gvDAkWlq.ttf)format("truetype-variations"),url(/assets/Roboto-Italic-VariableFont_wdth_wght-gvDAkWlq.ttf)format("truetype");font-weight:100 900;font-style:italic;font-display:swap}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-sans);background:var(--kaha-canvas);color:var(--color-text);min-height:100vh;line-height:1.5}input[type=checkbox]{accent-color:var(--kaha-brand)}select{font-family:var(--font-sans);border:1px solid var(--kaha-border-2);border-radius:var(--kaha-radius);color:var(--kaha-text-1);background:var(--kaha-surface-1)}.page-loading{height:100vh;color:var(--color-text-muted);justify-content:center;align-items:center;font-size:.9rem;display:flex}.auth-page{justify-content:center;align-items:center;min-height:100vh;padding:1rem;display:flex}.auth-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--kaha-radius-lg);box-shadow:var(--shadow-md);width:100%;max-width:400px;padding:2.5rem 2rem}.auth-card h1{margin-bottom:.25rem;font-size:1.4rem;font-weight:700}.auth-card .subtitle{color:var(--color-text-muted);margin-bottom:2rem;font-size:.875rem}.login-screen{background:var(--kaha-canvas);grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);min-height:100vh;display:grid}.login-hero{background:var(--kaha-navy);flex-direction:column;justify-content:space-between;min-height:640px;padding:48px;display:flex;position:relative;overflow:hidden}.login-hero-canvas{width:100%;height:100%;display:block;position:absolute;inset:0}.login-hero-brand{align-items:center;gap:14px;display:flex;position:relative}.login-hero-mark{width:auto;height:30px;display:block}.login-hero-brand-divider{background:#ffffff38;width:1px;height:22px}.login-hero-wordmark{letter-spacing:.14em;text-transform:uppercase;color:var(--kaha-mist);font-size:13px;font-weight:500}.login-hero-headline{gap:24px;max-width:520px;display:flex;position:relative}.login-hero-accent{background:var(--kaha-blue);flex:0 0 10px;align-self:stretch;width:10px}.login-hero-h1{font-family:var(--font-sans);color:var(--kaha-white);margin:0 0 18px;font-size:52px;font-weight:300;line-height:1.06}.login-hero-strapline{color:var(--kaha-mist);margin:0;font-size:17px;line-height:1.6}.login-hero-footer{color:var(--kaha-mist);justify-content:space-between;align-items:center;gap:24px;font-size:12px;display:flex;position:relative}.login-hero-status{align-items:center;gap:8px;display:flex}.login-hero-status-dot{background:var(--kaha-status-green);border-radius:50%;width:6px;height:6px}.login-hero-baseline{background:var(--kaha-blue);height:3px;position:absolute;bottom:0;left:0;right:0}.login-form-col{background:var(--kaha-surface-1);justify-content:center;align-items:center;padding:48px 40px;display:flex}.login-form-inner{width:100%;max-width:372px}.login-eyebrow{letter-spacing:.1em;text-transform:uppercase;color:var(--kaha-text-3);margin-bottom:10px;font-size:11px;font-weight:700}.login-h2{font-family:var(--font-sans);margin:0 0 8px;font-size:27px;font-weight:500;line-height:1.2}.login-sub{color:var(--kaha-text-3);margin:0 0 30px;font-size:14px}.login-sso-btn{width:100%;color:var(--kaha-white);background:var(--kaha-brand);border-radius:var(--radius-kia);cursor:pointer;border:none;justify-content:center;align-items:center;gap:11px;padding:15px 16px;font-family:inherit;font-size:15px;font-weight:600;transition:background .12s,transform .12s;display:flex}.login-sso-btn:hover:not(:disabled){background:#005f92}.login-sso-btn:active:not(:disabled){transform:scale(.98)}.login-sso-btn:disabled{opacity:.65;cursor:default}.login-sso-chip{background:var(--kaha-white);border-radius:3px;flex:none;padding:3px;display:flex}.login-divider-row{align-items:center;gap:14px;margin:26px 0;display:flex}.login-divider-line{background:var(--kaha-border);flex:1;height:1px}.login-divider-label{letter-spacing:.08em;text-transform:uppercase;color:var(--kaha-text-3);font-size:11px;font-weight:600}.login-field-label{color:var(--kaha-text-2);margin-bottom:7px;font-size:12.5px;font-weight:600;display:block}.login-input{box-sizing:border-box;width:100%;color:var(--kaha-text-1);background:var(--kaha-surface-1);border:1px solid var(--kaha-border-2);border-radius:var(--radius-kia-sm);margin-bottom:18px;padding:11px 13px;font-family:inherit;font-size:14.5px;transition:border-color .12s,box-shadow .12s}.login-input:focus{border-color:var(--kaha-brand);box-shadow:var(--kaha-shadow-focus);outline:none}.login-password-row{margin-bottom:18px;position:relative}.login-password-row .login-input{margin-bottom:0;padding-right:62px}.login-password-toggle{color:var(--kaha-text-3);cursor:pointer;background:0 0;border:none;padding:6px 8px;font-family:inherit;font-size:12px;font-weight:600;position:absolute;top:50%;right:6px;transform:translateY(-50%)}.login-password-toggle:hover{color:var(--kaha-text-1)}.login-password-label-row{justify-content:space-between;align-items:baseline;margin-bottom:7px;display:flex}.login-forgot-link{font-size:12px;font-weight:500}.login-remember{color:var(--kaha-text-2);cursor:pointer;align-items:center;gap:9px;margin-bottom:24px;font-size:13px;display:flex}.login-remember input{width:15px;height:15px;margin:0}.login-error{background:var(--kaha-status-red-tint);border-radius:var(--radius-kia-sm);color:var(--kaha-status-red-on);gap:10px;margin-bottom:18px;padding:10px 12px;font-size:13px;line-height:1.45;display:flex}.login-error-bar{background:var(--kaha-status-red);border-radius:2px;flex:0 0 3px;width:3px}.login-submit-secondary{width:100%;color:var(--kaha-text-1);background:var(--kaha-surface-1);border:1px solid var(--kaha-border-2);border-radius:var(--radius-kia);cursor:pointer;margin-bottom:4px;padding:13px 16px;font-family:inherit;font-size:14.5px;font-weight:600;transition:border-color .12s,box-shadow .12s}.login-submit-secondary:hover:not(:disabled){border-color:var(--kaha-text-3);box-shadow:var(--kaha-shadow-1)}.login-submit-secondary:disabled{opacity:.65;cursor:default}.login-access-note{color:var(--kaha-text-3);margin:26px 0 0;font-size:12.5px;line-height:1.55}.login-devpanel{background:var(--color-bg);justify-content:center;padding:2rem 1rem;display:flex}@media (width<=900px){.login-screen{grid-template-columns:1fr}.login-hero{min-height:260px}.login-hero-strapline{display:none}}.form-group{flex-direction:column;gap:.375rem;min-width:0;margin-bottom:1rem;display:flex}.form-group label{font-size:.875rem;font-weight:500}.label-optional{color:var(--color-text-muted);font-weight:400}.form-group input,.form-group select{border:1px solid var(--color-border);border-radius:var(--radius);font-size:.9rem;font-family:var(--font-sans);background:var(--color-surface);color:var(--color-text);padding:.625rem .75rem;transition:border-color .15s}.form-group input:focus,.form-group select:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--kaha-brand-soft);outline:none}.btn{border-radius:var(--radius);font-size:.9rem;font-weight:500;font-family:var(--font-sans);cursor:pointer;border:none;justify-content:center;align-items:center;padding:.625rem 1.25rem;transition:background .15s,opacity .15s;display:inline-flex}.btn-primary{background:var(--color-primary);color:var(--color-primary-text);width:100%;margin-top:.5rem}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn-secondary{background:var(--color-border);color:var(--color-text)}.btn-secondary:hover:not(:disabled){background:var(--kaha-border-2)}.btn-danger{background:var(--color-error);color:#fff}.btn-danger:hover:not(:disabled){background:var(--kaha-status-red-on-tint)}.btn-inline{width:auto;margin-top:0}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-cta{border-radius:var(--kaha-radius-pill);gap:.4rem;height:34px;padding:0 16px;font-size:12.5px;font-weight:600}.btn-cta:disabled{opacity:.5}.btn-link{font-size:.85rem;font-family:var(--font-sans);color:var(--color-primary);cursor:pointer;text-underline-offset:2px;background:0 0;border:none;padding:0;text-decoration:underline}.btn-link-danger{color:var(--color-error)}.btn-signout{border:1px solid var(--color-border);border-radius:var(--radius);font-size:.8rem;font-family:var(--font-sans);color:var(--color-text-muted);cursor:pointer;background:0 0;width:100%;margin-top:.5rem;padding:.375rem .75rem;transition:background .15s}.btn-signout:hover{background:var(--color-bg)}.error-message{background:var(--color-error-bg);color:var(--color-error);border-radius:var(--radius);margin-bottom:1rem;padding:.625rem .75rem;font-size:.875rem}.app-shell{flex-direction:column;min-height:100vh;display:flex}.top-nav{background:var(--kaha-surface-1);border-bottom:1px solid var(--kaha-border);height:64px;color:var(--kaha-text-1);z-index:30;align-items:center;gap:1.5rem;padding:0 24px;display:flex;position:sticky;top:0}.top-nav-brand{flex-shrink:0;align-items:center;gap:.5rem;display:flex}.top-nav-mark{flex-shrink:0;width:24px;height:24px}.top-nav-wordmark{white-space:nowrap;font-size:15px;font-weight:640}.top-nav-pills{flex:1;justify-content:center;align-items:center;gap:4px;display:flex}.top-nav-pill{border-radius:var(--kaha-radius-pill);color:var(--kaha-text-2);white-space:nowrap;transition:background var(--kaha-motion-state) var(--kaha-ease), color var(--kaha-motion-state) var(--kaha-ease);padding:8px 11px;font-size:13px;font-weight:500;text-decoration:none}.top-nav-pill:hover{color:var(--kaha-text-1)}.top-nav-pill.active{background:var(--kaha-brand-soft);color:var(--kaha-brand);font-weight:640}.top-nav-actions{flex-shrink:0;align-items:center;gap:.75rem;display:flex}.sub-tab-bar{border-bottom:1px solid var(--kaha-border);background:#23262b;padding:0 32px;display:flex}.sub-tab{font-size:13px;font-family:var(--font-sans);color:var(--kaha-text-2);cursor:pointer;white-space:nowrap;transition:color var(--kaha-motion-state) var(--kaha-ease), border-color var(--kaha-motion-state) var(--kaha-ease);background:0 0;border:none;border-bottom:2px solid #0000;margin-right:22px;padding:12px 4px;font-weight:500}.sub-tab:hover{color:var(--kaha-text-1)}.sub-tab.active{color:var(--kaha-text-1);border-bottom-color:var(--kaha-brand);font-weight:640}.profile-menu{position:relative}.profile-trigger{border-radius:var(--kaha-radius);cursor:pointer;color:inherit;font-family:var(--font-sans);transition:background var(--kaha-motion-state) var(--kaha-ease);background:0 0;border:none;align-items:center;gap:.5rem;padding:4px 8px 4px 4px;display:flex}.profile-trigger:hover,.profile-trigger.open{background:var(--kaha-surface-2)}.profile-avatar{background:var(--kaha-brand-soft);width:30px;min-width:30px;height:30px;color:var(--kaha-brand);border-radius:50%;justify-content:center;align-items:center;font-size:11px;font-weight:640;display:flex}.profile-trigger-text{flex-direction:column;align-items:flex-start;line-height:1.25;display:flex}.profile-name{white-space:nowrap;font-size:13px;font-weight:640}.profile-role{color:var(--kaha-text-2);white-space:nowrap;font-size:10.5px}.profile-chevron{color:var(--kaha-text-2);transition:transform var(--kaha-motion-state) var(--kaha-ease);font-size:12px}.profile-chevron.open{transform:rotate(180deg)}.profile-scrim{z-index:39;cursor:default;background:0 0;border:none;padding:0;position:fixed;inset:0}.profile-menu-panel{z-index:40;background:var(--kaha-surface-1);min-width:216px;color:var(--color-text);border:1px solid var(--kaha-border);border-radius:var(--kaha-radius-lg);box-shadow:var(--kaha-shadow-2);padding:6px;position:absolute;top:46px;right:0}.profile-menu-header{border-bottom:1px solid var(--color-border);margin-bottom:4px;padding:8px 10px}.profile-menu-header-name{color:var(--color-text);font-size:13px;font-weight:640}.profile-menu-header-role{color:var(--color-text-muted);font-size:11px}.profile-menu-item{text-align:left;border-radius:var(--radius-kia-sm);width:100%;font-size:13px;font-weight:500;font-family:var(--font-sans);color:var(--color-text);cursor:pointer;white-space:nowrap;background:0 0;border:none;align-items:center;gap:10px;padding:8px 10px;text-decoration:none;display:flex}.profile-menu-item svg{flex:none}.profile-menu-item:hover{background:var(--color-bg)}.profile-menu-item-danger{color:var(--kaha-danger)}.reminders{position:relative}.reminders-bell-btn{width:30px;height:30px;color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;display:flex;position:relative}.reminders-bell-btn:hover{color:var(--color-text);background:#ffffff14}.reminders-badge{background:var(--kaha-danger);color:#fff;text-align:center;border-radius:7px;min-width:14px;height:14px;padding:0 3px;font-size:.62rem;font-weight:700;line-height:14px;position:absolute;top:1px;right:1px}.reminders-panel{z-index:20;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);width:280px;max-height:360px;box-shadow:var(--shadow-md);text-transform:none;letter-spacing:normal;padding:.85rem;font-weight:400;position:absolute;top:calc(100% + 6px);left:0;overflow-y:auto}.reminders-panel h4{color:var(--color-text);margin:0 0 .5rem;font-size:.85rem;font-weight:700}.reminders-empty{color:var(--color-text-muted);margin:0;font-size:.8rem}.reminders-group{margin-bottom:.75rem}.reminders-group:last-child{margin-bottom:0}.reminders-group h5{text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);margin:0 0 .3rem;font-size:.68rem;font-weight:700}.reminders-group ul{flex-direction:column;gap:.3rem;margin:0;padding:0;list-style:none;display:flex}.reminders-group a{color:var(--color-text);border-radius:4px;padding:.25rem .35rem;font-size:.8rem;text-decoration:none;display:block}.reminders-group a:hover{background:var(--color-bg);color:var(--color-primary)}.main-content{background:var(--kaha-canvas);flex:1;min-width:0;padding:32px 40px 48px;overflow-y:auto}.page-header{justify-content:space-between;align-items:center;margin-bottom:1.5rem;display:flex}.page-header h2{color:var(--kaha-text-1);font-size:1.375rem;font-weight:640}.page-subtitle{color:var(--kaha-text-3);font-size:.8125rem}.page-header-actions{align-items:center;gap:1rem;display:flex}.page-header-meta{color:var(--kaha-text-3);font-size:.75rem;font-family:var(--font-mono);white-space:nowrap;flex:none}.view-mode-toggle{border-radius:var(--radius-kia);border:1px solid var(--kaha-border-2);display:inline-flex;overflow:hidden}.view-mode-toggle .btn{border-radius:0;height:34px;margin-top:0;padding:0 14px;font-size:12.5px;font-weight:600}.view-mode-toggle .btn-primary{background:var(--kaha-brand);color:#fff}.view-mode-toggle .btn-secondary{background:var(--kaha-surface-2);color:var(--kaha-text-2)}.view-mode-toggle .btn-secondary:hover:not(:disabled){background:var(--kaha-border)}.tab-pill-group{background:var(--kaha-surface-2);border-radius:var(--radius-kia-lg);gap:4px;margin-bottom:1.5rem;padding:4px;display:inline-flex}.tab-pill{border-radius:var(--radius-kia);color:var(--kaha-text-2);cursor:pointer;transition:background var(--kaha-motion-state) var(--kaha-ease);background:0 0;border:none;padding:8px 16px;font-size:13px;font-weight:500}.tab-pill:hover:not(.tab-pill-active){background:var(--kaha-border)}.tab-pill-active{background:var(--kaha-brand);color:#fff;font-weight:640}.page-hero{background:var(--kaha-navy);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:48px;margin:-32px -40px 0;padding:28px 40px 40px;display:flex}.page-hero-stats{flex-wrap:wrap;gap:48px;display:flex}.page-hero-stat{flex-direction:column;display:flex}.page-hero-stat-label{text-transform:uppercase;letter-spacing:.06em;color:var(--kaha-mist);margin-bottom:8px;font-size:11px;font-weight:700}.page-hero-stat-value{font-family:var(--font-display,var(--font-sans));color:#fff;font-variant-numeric:tabular-nums;font-size:32px;font-weight:640}.page-hero-actions{flex-shrink:0}.page-hero .month-nav-label{color:#fff}.page-hero .month-nav-btn{color:#fff;background:0 0;border-color:#ffffff4d}.page-hero .month-nav-btn:hover:not(:disabled){background:#ffffff1a}.page-hero-overlap{margin-top:-24px;position:relative}.month-nav{align-items:center;gap:.5rem;display:flex}.month-nav-label{text-align:center;min-width:130px;font-size:.9rem;font-weight:500}.month-nav-btn{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-kia);cursor:pointer;width:26px;height:26px;color:var(--color-text);justify-content:center;align-items:center;font-size:1rem;line-height:1;transition:background .12s;display:flex}.month-nav-btn:hover:not(:disabled){background:var(--color-bg)}.month-nav-btn:disabled{opacity:.35;cursor:default}.summary-bar{gap:1rem;margin-bottom:1.5rem;display:flex}.summary-stat{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--kaha-radius-lg);flex-direction:column;gap:.25rem;min-width:140px;padding:1rem 1.25rem;display:flex}.stat-label{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em;font-size:.78rem}.stat-value{font-size:1.4rem;font-weight:700}.stat-highlight{color:var(--color-primary)}.customer-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));align-items:start;gap:16px;display:grid}.customer-card{background:var(--kaha-surface-1);border-radius:var(--radius-kia-lg);box-shadow:var(--kaha-shadow-1);border:1px solid #0000;padding:18px}.customer-card.card-overlimit{border-color:var(--kaha-status-red)}.card-header{justify-content:space-between;align-items:flex-start;gap:.5rem;margin-bottom:.75rem;display:flex}.card-name{font-size:15px;font-weight:640}.card-term-line{color:var(--kaha-text-3);margin-top:2px;font-size:11.5px}.hours-badge{border-radius:var(--radius-pill);background:var(--kaha-status-green-tint);color:var(--kaha-status-green-on-tint);white-space:nowrap;padding:3px 9px;font-size:11.5px;font-weight:700}.hours-badge.badge-amber{background:var(--kaha-status-amber-tint);color:var(--kaha-status-amber-on-tint)}.hours-badge.badge-red{background:var(--kaha-status-red-tint);color:var(--kaha-status-red-on-tint)}.hours-badge.badge-gray{background:var(--kaha-status-neutral-tint);color:var(--kaha-status-neutral-on-tint)}.card-numbers{border-bottom:1px solid var(--kaha-border);grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:10px;padding-bottom:12px;display:grid}.card-number-value{font-size:19px;font-weight:600;font-family:var(--font-mono);color:var(--kaha-text-1)}.card-number-value.value-muted{color:var(--kaha-text-2)}.card-number-value.value-brand{color:var(--kaha-brand)}.card-number-value.value-green{color:var(--kaha-status-green)}.card-number-value.value-amber{color:var(--kaha-status-amber)}.card-number-value.value-red{color:var(--kaha-status-red)}.card-number-label{text-transform:uppercase;letter-spacing:.05em;color:var(--kaha-text-3);margin-top:2px;font-size:10.5px;font-weight:700}.progress-bar{background:var(--kaha-border);border-radius:var(--radius-pill);height:8px;margin-bottom:12px;overflow:hidden}.progress-fill{border-radius:4px;min-width:2px;height:100%;transition:width .4s}.fill-green{background:var(--kaha-status-green)}.fill-amber{background:var(--kaha-status-amber)}.fill-red{background:var(--kaha-status-red)}.card-unallocated{opacity:.85;border-style:dashed}.card-no-alloc-note{color:var(--color-text-muted);margin-top:.5rem;font-size:.78rem;line-height:1.4}.card-chart{margin-bottom:1rem}.card-chart-title{text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);margin-bottom:.375rem;font-size:.7rem;font-weight:600}.hours-chart-svg{width:100%;display:block}.chart-legend{gap:.75rem;margin-top:.25rem;display:flex}.legend-item{color:var(--color-text-muted);align-items:center;gap:.3rem;font-size:.72rem;display:flex}.legend-dot{border-radius:2px;flex-shrink:0;width:8px;height:8px;display:inline-block}.legend-line{background:var(--kaha-brand);flex-shrink:0;width:12px;height:2px;display:inline-block}.legend-dashed{border-top:1px dashed var(--kaha-text-3);opacity:.7;flex-shrink:0;width:12px;height:0;display:inline-block}.card-breakdown-toggle{cursor:pointer;text-align:left;width:100%;color:var(--kaha-brand);border:none;border-top:1px solid var(--kaha-border);background:0 0;padding:.75rem 0 0;font-size:12px;font-weight:600;display:block}.card-breakdown{margin-top:.6rem}.card-last-entry{color:var(--kaha-text-3);opacity:.8;margin-top:.5rem;padding-top:.4rem;font-size:11px}.card-breakdown-empty{color:var(--color-text-muted);font-size:.82rem}.breakdown-table{border-collapse:collapse;width:100%;font-size:12.5px}.breakdown-table th{text-align:left;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);border-bottom:1px solid var(--color-border);padding-bottom:.35rem;font-size:.72rem;font-weight:600}.breakdown-table td{border-bottom:1px solid var(--color-border);padding:.3rem 0}.breakdown-table tbody tr:last-child td{border-bottom:none}.breakdown-table td:last-child{text-align:right;color:var(--kaha-text-3);font-family:var(--font-mono);font-variant-numeric:tabular-nums}.card-footnote{background:var(--kaha-surface-2);border-radius:var(--radius-kia-sm);color:var(--kaha-text-2);margin-top:.75rem;padding:8px 10px;font-size:12px}.unallocated-section{margin-top:2rem}.unallocated-title{text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted);margin-bottom:.75rem;font-size:.78rem;font-weight:700}.carry-over-tag{color:var(--color-primary);background:var(--kaha-brand-soft);border-radius:4px;margin-top:.75rem;padding:.2rem .5rem;font-size:.75rem;display:inline-block}.empty-state{color:var(--color-text-muted);padding:2rem 0;font-size:.9rem}.empty-state a{color:var(--color-primary)}.modal-overlay{z-index:100;background:#00042180;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.modal{background:var(--color-surface);border-radius:var(--kaha-radius-lg);width:100%;max-width:600px;box-shadow:var(--kaha-shadow-3);padding:1.75rem}.modal-title{margin-bottom:1.25rem;font-size:1.1rem;font-weight:700}.modal-actions{justify-content:flex-end;gap:.5rem;margin-top:.5rem;display:flex}.table-container{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);overflow-x:auto}.data-table{border-collapse:collapse;width:100%;font-size:.9rem}.data-table th{text-align:left;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);border-bottom:1px solid var(--color-border);background:var(--color-bg);padding:.75rem 1rem;font-size:.78rem;font-weight:600}.data-table td{border-bottom:1px solid var(--color-border);padding:.75rem 1rem}.data-table tbody tr:last-child td{border-bottom:none}.data-table tbody tr:hover td{background:var(--color-bg)}.row-inactive td{color:var(--color-text-muted)}.table-group-row td{background:var(--color-bg)}.table-group-row td:first-child{text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);font-size:.78rem;font-weight:600;position:sticky;left:0}.table-group-row:hover td{background:var(--color-bg)!important}.drag-handle{cursor:grab;color:var(--color-text-muted);text-align:center;width:2rem}tr.drag-over td{border-top:2px solid var(--color-primary)}.empty-cell{text-align:center;color:var(--color-text-muted);padding:2rem!important}.expiry-cell{align-items:center;gap:.6rem;display:flex}.expiry-bar-track{background:var(--color-bg);border:1px solid var(--color-border);border-radius:4px;flex-shrink:0;width:100px;height:8px;overflow:hidden}.expiry-bar-fill{border-radius:4px;height:100%}.expiry-bar-fill.urgency-red{background:var(--kaha-status-red)}.expiry-bar-fill.urgency-amber{background:var(--kaha-status-amber)}.expiry-bar-fill.urgency-green{background:var(--kaha-status-green)}.expiry-days{min-width:3.5rem;font-size:.85rem;font-weight:600}.text-muted{color:var(--color-text-muted)}.actions-cell{align-items:center;gap:8px;display:flex}.icon-btn{border:1px solid var(--kaha-border-2);width:26px;height:26px;color:var(--kaha-text-2);cursor:pointer;transition:background var(--kaha-motion-state) var(--kaha-ease);background:0 0;border-radius:7px;flex:none;justify-content:center;align-items:center;display:flex}.icon-btn:hover{background:var(--color-bg)}.icon-btn-danger{border-color:var(--kaha-status-red);color:var(--kaha-status-red)}.icon-btn-danger:hover{background:var(--kaha-status-red-tint)}.icon-btn-success{border-color:var(--kaha-status-green);color:var(--kaha-status-green)}.icon-btn-success:hover{background:var(--kaha-status-green-tint)}.approve-btn,.reject-btn{cursor:pointer;height:28px;transition:opacity var(--kaha-motion-state) var(--kaha-ease);border-radius:7px;align-items:center;padding:0 12px;font-size:11.5px;font-weight:600;display:flex}.approve-btn:disabled,.reject-btn:disabled{opacity:.5;cursor:default}.approve-btn{background:var(--kaha-status-green);color:#fff;border:none}.approve-btn:hover:not(:disabled){background:var(--kaha-status-green-on)}.reject-btn{border:1px solid var(--kaha-border-2);color:var(--kaha-text-2);background:0 0}.reject-btn:hover:not(:disabled){background:var(--color-bg)}.col-checkbox{text-align:center;white-space:nowrap;width:1px}.col-checkbox input[type=checkbox]{cursor:pointer;width:1.05rem;height:1.05rem}.group-customer-meta{color:var(--color-text-muted);text-transform:none;letter-spacing:normal;font-weight:400}.invoice-number-input{width:8rem}.role-page-groups{flex-direction:column;gap:.75rem;padding:.25rem 0 .5rem;display:flex}.role-page-group{flex-wrap:wrap;align-items:baseline;gap:1rem;display:flex}.role-page-group-label{text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted);min-width:6.5rem;font-size:.75rem;font-weight:700}.role-page-grid{flex-wrap:wrap;gap:.5rem 1.25rem;display:flex}.role-page-item{cursor:pointer;align-items:center;gap:.5rem;font-size:.9rem;display:flex}.role-page-item input[type=checkbox]{cursor:pointer;width:1.05rem;height:1.05rem}.status-badge{white-space:nowrap;border-radius:4px;padding:.2rem .5rem;font-size:.75rem;font-weight:600;display:inline-block}.badge-green{background:var(--kaha-status-green-tint);color:var(--kaha-status-green-on-tint)}.badge-gray{background:var(--kaha-status-neutral-tint);color:var(--kaha-status-neutral-on-tint)}.badge-amber{background:var(--kaha-status-amber-tint);color:var(--kaha-status-amber-on-tint)}.badge-red{background:var(--kaha-status-red-tint);color:var(--kaha-status-red-on-tint)}.adj-existing{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius);margin-bottom:1rem;padding:.75rem}.adj-existing-label{text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);margin-bottom:.5rem;font-size:.78rem;font-weight:600}.adj-item{align-items:center;gap:.5rem;padding:.25rem 0;font-size:.85rem;display:flex}.adj-type{min-width:60px;font-weight:500}.adj-hours{color:var(--color-text-muted);min-width:48px}.adj-notes{color:var(--color-text-muted);flex:1;font-style:italic}.upload-zone{border:2px dashed var(--kaha-border-2);border-radius:var(--radius-kia-lg);text-align:center;background:var(--color-surface);max-width:640px;padding:3rem 2rem;transition:border-color .15s,background .15s}.upload-zone.dragging{border-color:var(--color-primary);background:var(--kaha-brand-soft)}.upload-hint{color:var(--color-text-muted);margin-bottom:1rem;font-size:.9rem}.upload-browse{cursor:pointer}.upload-file-name{margin-bottom:.5rem;font-weight:500}.upload-actions{max-width:520px;margin-top:1rem}.upload-pending-note{color:var(--color-text-muted);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius);padding:.75rem;font-size:.85rem}.upload-file-bar{align-items:center;gap:1rem;margin-bottom:.75rem;display:flex}.upload-row-count{color:var(--color-text-muted);margin-bottom:1.25rem;font-size:.85rem}.mapping-section{max-width:720px}.mapping-title{margin-bottom:.75rem;font-size:1rem;font-weight:600}.upload-success{background:var(--kaha-status-green-tint);border:1px solid var(--kaha-status-green);border-radius:var(--radius);max-width:400px;color:var(--kaha-status-green-on-tint);margin-bottom:2rem;padding:1.25rem 1.5rem;font-weight:500}.upload-log{max-width:900px;margin-top:2rem}.upload-log-title{margin-bottom:.75rem;font-size:1rem;font-weight:600}.upload-log-time{color:var(--color-text-muted);white-space:nowrap;font-size:.82rem}.upload-log-error-row td{border-bottom:1px solid var(--color-border);padding-top:0!important;padding-bottom:.5rem!important}.upload-log-error{color:var(--color-error);background:var(--color-error-bg);border-radius:4px;font-size:.8rem;padding:.375rem .75rem!important}.customer-name-btn{font-family:var(--font-sans);font-size:inherit;color:var(--color-text);cursor:pointer;background:0 0;border:none;align-items:center;gap:.4rem;padding:0;font-weight:500;display:flex}.customer-name-btn:hover{color:var(--color-primary)}.expand-icon{color:var(--color-text-muted);width:12px;font-size:.7rem}.contracts-panel{background:var(--kaha-surface-2);border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border);padding:1rem 1.25rem 1rem 2.5rem}.contracts-header{justify-content:space-between;align-items:center;margin-bottom:.75rem;display:flex}.contracts-label{text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted);font-size:.75rem;font-weight:700}.contracts-table{border-collapse:collapse;width:100%;font-size:.85rem}.contracts-table th{text-align:left;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);border-bottom:1px solid var(--color-border);padding:.4rem .75rem;font-size:.72rem;font-weight:600}.contracts-table td{border-bottom:1px solid var(--color-border);padding:.5rem .75rem}.contracts-table tbody tr:last-child td{border-bottom:none}.contracts-table tbody tr:hover td{background:var(--kaha-surface-2)}.contracts-empty{color:var(--color-text-muted);font-size:.85rem}.col-numeric{text-align:right;font-variant-numeric:tabular-nums}.form-row{gap:1rem;display:flex}.form-row .form-group{flex:1}.filter-bar{flex-wrap:wrap;align-items:flex-end;gap:1rem;margin-bottom:1.25rem;display:flex}.filter-group{flex-direction:column;gap:.375rem;display:flex}.filter-group label{color:var(--color-text-muted);font-size:.8rem;font-weight:500}.filter-group input,.filter-group select{border:1px solid var(--color-border);border-radius:var(--radius);font-size:.875rem;font-family:var(--font-sans);background:var(--color-surface);color:var(--color-text);min-width:160px;padding:.5rem .75rem}.filter-group input:focus,.filter-group select:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--kaha-brand-soft);outline:none}.confirm-label{color:var(--color-text-muted);font-size:.85rem}.th-sortable{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.th-sortable:hover{background:var(--color-surface-raised,#f3f4f6)}.sort-icon{opacity:.35;font-size:.7rem}.th-sorted .sort-icon{opacity:1}.table-limit-note{color:var(--color-text-muted);border-top:1px solid var(--color-border);background:var(--color-bg);padding:.625rem 1rem;font-size:.8rem}.month-summary-list{flex-wrap:wrap;gap:1.25rem;display:flex}.month-summary-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--kaha-radius-lg);width:340px;overflow:hidden}.month-summary-card-header{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;padding:.875rem 1rem;display:flex}.month-summary-card-header h3{font-size:.975rem;font-weight:600}.export-pdf-btn{border-radius:var(--radius-kia-sm);background:var(--kaha-surface-2);border:1px solid var(--kaha-border-2);height:28px;color:var(--kaha-text-2);cursor:pointer;padding:0 12px;font-size:11.5px;font-weight:600}.export-pdf-btn:hover{background:var(--kaha-border)}.month-summary-table th:not(:first-child),.month-summary-table td:not(:first-child){text-align:right;font-variant-numeric:tabular-nums}.month-summary-table tfoot td{border-top:2px solid var(--color-border);background:var(--color-bg);font-weight:600;border-bottom:none!important}td select{border:1px solid var(--color-border);font-size:.875rem;font-family:var(--font-sans);background:var(--color-surface);color:var(--color-text);border-radius:6px;min-width:200px;padding:.375rem .5rem}.alloc-grid-container{border:1px solid var(--color-border);border-radius:var(--radius);margin-bottom:1.5rem;overflow-x:auto}.alloc-grid-table{border-collapse:collapse;font-size:.8rem}.alloc-grid-table th,.alloc-grid-table td{border-bottom:1px solid var(--color-border);border-right:1px solid var(--color-border);text-align:center;white-space:nowrap;padding:.35rem .5rem}.alloc-grid-table thead th{background:var(--color-surface);z-index:2;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.03em;font-size:.68rem;font-weight:600;position:sticky;top:0}.alloc-sticky-col{background:var(--color-surface);z-index:1;text-align:left;min-width:120px;position:sticky}.alloc-col-employee{left:0}.alloc-col-customer{left:120px}.alloc-col-actions{text-align:center;min-width:36px;left:240px}.alloc-remove-btn{align-items:center;padding:.15rem .3rem;display:inline-flex}.alloc-grid-table thead .alloc-sticky-col{z-index:3}.alloc-current-week{background:#0077b614}.alloc-grid-table thead th.alloc-current-week{color:var(--color-primary);background:#0077b624}.alloc-grid-table tfoot td{background:var(--color-bg);border-top:2px solid var(--color-border);font-weight:700}.alloc-grid-table tfoot td.alloc-current-week{background:#0077b624}.alloc-matrix-table td{text-align:center}.alloc-matrix-table .alloc-col-employee{font-weight:500}.alloc-matrix-col-demand{font-variant-numeric:tabular-nums;min-width:80px;left:120px;text-align:center!important}.alloc-matrix-filled{font-weight:600}.alloc-matrix-empty{color:var(--color-border)}.alloc-matrix-total-col,.alloc-matrix-actual-col,.alloc-matrix-gap-col{z-index:1;width:88px;min-width:88px;max-width:88px;position:sticky}.alloc-matrix-total-col{background:var(--color-bg);border-left:2px solid var(--color-border);font-weight:600;right:88px}.alloc-matrix-total-col-shifted{right:176px}.alloc-matrix-actual-col{background:var(--color-bg);font-weight:600;right:88px}.alloc-matrix-gap-col{background:var(--color-surface);right:0}.alloc-matrix-table thead .alloc-matrix-total-col,.alloc-matrix-table thead .alloc-matrix-actual-col,.alloc-matrix-table thead .alloc-matrix-gap-col{z-index:3}.alloc-matrix-table .alloc-actual{font-weight:400}.alloc-matrix-capacity-row td{background:var(--color-bg);color:var(--color-text-muted);font-weight:600}.alloc-matrix-table tfoot td{background:var(--color-bg);border-top:2px solid var(--color-border);font-weight:700}.alloc-cell-select{width:56px;min-width:56px;padding:.15rem .25rem;font-size:.75rem}.alloc-actual{color:var(--color-text-muted);margin-top:.15rem;font-size:.65rem}.alloc-actual-over{color:var(--kaha-status-red)}.alloc-actual-under{color:var(--kaha-status-amber)}.alloc-add-toolbar{flex-wrap:wrap;justify-content:flex-start;gap:.5rem}.alloc-week-range-label{color:var(--color-text-muted);font-size:.85rem}.alloc-actual-toggle{cursor:pointer;align-items:center;gap:.4rem;margin-bottom:1rem;font-size:.85rem;display:inline-flex}.metric-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--kaha-radius-lg);margin-bottom:1.5rem;padding:1.25rem 1.25rem 1rem}.metric-card-header{margin-bottom:.5rem}.metric-card-header h3{margin-bottom:.15rem;font-size:1rem}.metric-card-header .page-subtitle{font-size:.85rem}.chart-wrap{width:100%;min-width:0;position:relative}.chart-svg{max-width:100%;display:block;overflow:visible}.chart-grid,.chart-axis{stroke:var(--color-border);stroke-width:1px}.chart-crosshair{stroke:var(--color-text-muted);stroke-width:1px;opacity:.35;pointer-events:none}.chart-average-line{stroke:var(--color-text-muted);stroke-width:1.5px;stroke-dasharray:5 4;opacity:.6}.chart-average-label{fill:var(--color-text-muted);paint-order:stroke;stroke:var(--color-surface);stroke-width:3px;stroke-linejoin:round;font-size:.7rem;font-weight:600}.chart-goal-line{stroke:var(--color-goal);stroke-width:2px;stroke-dasharray:8 4;stroke-linecap:round}.chart-goal-dot{fill:var(--color-goal);stroke:var(--color-surface);stroke-width:2px}.chart-goal-label{fill:var(--color-goal);paint-order:stroke;stroke:var(--color-surface);stroke-width:3px;stroke-linejoin:round;font-size:.72rem;font-weight:700}.chart-today-line{stroke:var(--color-text-muted);stroke-width:1.5px;stroke-dasharray:2 3;opacity:.6}.chart-today-label{fill:var(--color-text-muted);paint-order:stroke;stroke:var(--color-surface);stroke-width:3px;stroke-linejoin:round;font-size:.68rem;font-weight:600}.chart-tick{fill:var(--color-text-muted);font-variant-numeric:tabular-nums;font-size:.72rem}.chart-tick-y{text-anchor:end;dominant-baseline:middle}.chart-tick-x{text-anchor:middle}.chart-tick-y2{text-anchor:start;dominant-baseline:middle}.chart-tick-sub{opacity:.75;font-size:.65rem}.chart-point-label{fill:var(--color-text);text-anchor:middle;font-size:.78rem;font-weight:600}.chart-hit{cursor:pointer;outline:none}.chart-hit:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}.chart-tooltip{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow-md);pointer-events:none;z-index:5;min-width:11rem;padding:.6rem .75rem;font-size:.82rem;position:absolute;transform:translate(-50%)}.chart-tooltip-title{margin-bottom:.35rem;font-weight:600}.chart-tooltip-row{color:var(--color-text-muted);justify-content:space-between;gap:1.25rem;line-height:1.6;display:flex}.chart-tooltip-row strong{color:var(--color-text);font-variant-numeric:tabular-nums}.chart-empty{color:var(--color-text-muted);text-align:center;padding:.5rem 0 1rem;font-size:.88rem}.chart-table-details{margin-top:.75rem}.chart-table-details summary{color:var(--color-text-muted);cursor:pointer;font-size:.82rem}.chart-table-num{text-align:right;font-variant-numeric:tabular-nums}.metric-notes{color:var(--color-text-muted);font-size:.85rem;line-height:1.65}.metric-notes h4{text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);margin-bottom:.4rem;font-size:.78rem;font-weight:600}.metric-notes ul{margin:0 0 1rem;padding-left:1.1rem}.metric-notes strong{color:var(--color-text)}.metric-notes code{font-family:var(--font-mono);font-size:.8em}.metric-warnings{border-left:3px solid var(--color-error);background:var(--color-error-bg);border-radius:0 var(--radius) var(--radius) 0;padding:.75rem 1rem .25rem}.metric-warnings h4{color:var(--color-error)}.side-panel-scrim{z-index:200;background:#00000059;justify-content:flex-end;display:flex;position:fixed;inset:0}.side-panel{background:var(--color-surface);width:420px;max-width:100%;height:100%;box-shadow:var(--shadow-md);flex-direction:column;animation:.32s cubic-bezier(.22,.61,.36,1) side-panel-slide-in;display:flex}@keyframes side-panel-slide-in{0%{transform:translate(100%)}to{transform:translate(0)}}.side-panel-header{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:flex-start;padding:1.25rem 1.5rem;display:flex}.side-panel-eyebrow{text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);margin:0 0 .2rem;font-size:.72rem;font-weight:600}.side-panel-title{margin:0;font-size:1.05rem;font-weight:700}.side-panel-close{cursor:pointer;color:var(--color-text-muted);border-radius:var(--radius);background:0 0;border:none;padding:.15rem .4rem;font-size:1.3rem;line-height:1}.side-panel-close:hover{background:var(--color-border)}.side-panel-body{flex:1;padding:1.25rem 1.5rem;overflow-y:auto}.side-panel-footer{border-top:1px solid var(--color-border);justify-content:space-between;align-items:center;gap:.5rem;padding:1rem 1.5rem;display:flex}.module-color-swatch{border-radius:50%;flex-shrink:0;width:10px;height:10px;display:inline-block}.module-color-swatch.square{border-radius:4px;width:12px;height:12px}.form-hint{color:var(--color-text-muted);margin-top:.4rem;font-size:.72rem}.form-hint-mono{font-family:var(--font-mono)}.color-picker-grid{flex-wrap:wrap;gap:.5rem;display:flex}.color-swatch-btn{cursor:pointer;border:2px solid #0000;border-radius:50%;width:28px;height:28px;padding:0}.color-swatch-btn.selected{border-color:var(--color-text)}.color-swatch-btn:disabled{cursor:not-allowed;opacity:.5}.status-ramp{flex-wrap:wrap;gap:.4rem;display:flex}.status-ramp-btn{color:#fff;cursor:pointer;white-space:nowrap;opacity:.45;border:none;border-radius:999px;padding:.3rem .7rem;font-size:.78rem;font-weight:600}.status-ramp-btn.selected{opacity:1}.status-ramp-btn:disabled{cursor:not-allowed;opacity:.2}.status-dot{background:#ffffffd9;border-radius:50%;width:6px;height:6px;margin-right:.35rem;display:inline-block}.roadmap-module-row td:first-child{align-items:center;gap:.5rem;display:flex}.roadmap-feature-row td:first-child{padding-left:2.5rem;position:relative}.roadmap-feature-row{background:#fafafa}.roadmap-module-title{align-items:center;gap:.5rem;font-weight:600;display:flex}.gantt-toolbar{flex-wrap:wrap;align-items:center;gap:.6rem;padding:.75rem 0;display:flex}.gantt-toolbar-divider{background:var(--color-border);flex:none;width:1px;height:20px}.gantt-toolbar-spacer{flex:1}.gantt-chip-group{flex-wrap:wrap;gap:.35rem;display:flex}.gantt-chip{border:1px solid var(--color-border);background:var(--color-surface);cursor:pointer;color:var(--color-text);white-space:nowrap;border-radius:999px;align-items:center;gap:.3rem;padding:.25rem .6rem;font-size:.75rem;font-weight:600;display:inline-flex}.gantt-chip.excluded{opacity:.4;text-decoration:line-through}.gantt-chip-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.gantt-chip-dot.square{border-radius:3px}.gantt-zoom-group,.gantt-density-group{gap:.25rem;display:flex}.gantt-zoom-btn,.gantt-density-btn{border:1px solid var(--color-border);background:var(--color-surface);border-radius:var(--radius);cursor:pointer;width:30px;height:30px;color:var(--color-text);font-size:.8rem;font-weight:700}.gantt-zoom-btn.active,.gantt-density-btn.active{background:var(--color-primary);color:var(--color-primary-text);border-color:var(--color-primary)}.gantt-legend{border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border);background:var(--color-bg);flex-wrap:wrap;align-items:center;gap:.85rem;padding:.5rem 0;display:flex}.gantt-legend-item-group{flex-wrap:wrap;align-items:center;gap:.85rem;display:flex}.gantt-legend-label{letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-muted);white-space:nowrap;font-size:.68rem;font-weight:600}.gantt-legend-item{color:var(--color-text-muted);white-space:nowrap;align-items:center;gap:.3rem;font-size:.72rem;display:inline-flex}.gantt-legend-dot{border-radius:999px;flex-shrink:0;width:8px;height:8px}.gantt-legend-count{color:var(--color-text-muted);font-size:.72rem;font-family:var(--font-mono);white-space:nowrap}.gantt-scroll{margin-top:1rem;overflow-x:auto}.gantt-grid{grid-template-columns:320px 1fr;display:grid;position:relative}.gantt-today-line{background:var(--color-primary);z-index:5;width:2px;position:absolute;top:0;bottom:0}.gantt-today-label{color:var(--color-primary);white-space:nowrap;background:var(--color-surface);padding:0 4px;font-size:.65rem;font-weight:700;position:absolute;top:-18px;transform:translate(-50%)}.gantt-header-label-cell{grid-column:1}.gantt-header-track-cell{grid-column:2;padding-left:16px;display:flex}.gantt-period-col{letter-spacing:.04em;min-width:0;color:var(--color-text-muted);font-size:.65rem;font-weight:700;font-family:var(--font-mono);border-bottom:2px solid var(--kaha-border-2);white-space:nowrap;padding:0 4px .6rem 0;overflow:hidden}.gantt-group-heading{grid-column:1/-1;align-items:center;gap:.5rem;margin:1.2rem 0 .5rem;font-size:.9rem;font-weight:640;display:flex}.gantt-group-count{color:var(--color-text-muted);font-size:.7rem;font-family:var(--font-mono);font-weight:500}.gantt-row-label{border-bottom:1px solid var(--color-border);cursor:pointer;flex-direction:column;grid-column:1;justify-content:center;min-width:0;padding-right:10px;display:flex}.gantt-row-title{color:var(--color-text);white-space:nowrap;text-overflow:ellipsis;font-size:.82rem;font-weight:500;overflow:hidden}.gantt-row-meta{align-items:center;gap:.45rem;margin-top:.2rem;display:flex}.gantt-row-range{color:var(--color-text-muted);font-size:.68rem;font-family:var(--font-mono);white-space:nowrap}.gantt-row-track{border-bottom:1px solid var(--color-border);grid-column:2;padding-left:16px;position:relative}.gantt-bar{background:var(--color-bg);cursor:grab;border:1px solid;border-radius:6px;min-width:4px;position:absolute;top:50%;overflow:hidden;transform:translateY(-50%)}.gantt-bar:active{cursor:grabbing}.gantt-bar-fill{height:100%}.gantt-bar-handle{cursor:ew-resize;width:11px;position:absolute;top:0;bottom:0}.gantt-bar-handle.left{left:0}.gantt-bar-handle.right{right:0}.gantt-bar-progress{color:var(--color-text-muted);font-size:.72rem;font-weight:700;font-family:var(--font-mono);white-space:nowrap;position:absolute;top:50%;transform:translateY(-50%)}.gantt-footnote{color:var(--color-text-muted);max-width:760px;margin-top:1.4rem;font-size:.75rem;line-height:1.6}.gantt-empty{text-align:center;color:var(--color-text-muted);padding:2rem}.board-subline{color:var(--color-text-muted);max-width:760px;margin:0 0 1rem;font-size:.8rem;line-height:1.5}.board-columns{grid-template-columns:repeat(3,1fr);align-items:start;gap:1.25rem;display:grid}.board-column{border-radius:var(--radius);background:#f8fafc;padding:1rem}.board-column-header{justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.25rem;display:flex}.board-column-label{color:var(--color-text);font-size:.95rem;font-weight:700}.board-column-count{font-size:.7rem;font-family:var(--font-mono);color:var(--color-text-muted);background:var(--color-surface);border-radius:999px;padding:.1rem .5rem}.board-column-hint{color:var(--color-text-muted);margin-bottom:.9rem;font-size:.75rem}.board-column-cards{flex-direction:column;gap:.6rem;display:flex}.board-card{text-align:left;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);cursor:pointer;width:100%;box-shadow:var(--shadow-sm);border-left:3px solid #0000;padding:.75rem .85rem;font-family:inherit;display:block}.board-card-module{color:var(--color-text-muted);white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:.4rem;margin-bottom:.5rem;font-size:.7rem;font-weight:600;display:flex;overflow:hidden}.board-card-module-dot{border-radius:2px;flex-shrink:0;width:8px;height:8px}.board-card-title{color:var(--color-text);margin-bottom:.55rem;font-size:.88rem;font-weight:600;line-height:1.35}.board-card-status-row{margin-bottom:.5rem}.board-card-progress-row{align-items:center;gap:.5rem;margin-bottom:.45rem;display:flex}.board-card-progress-row .progress-bar{flex:1}.board-card-progress-text{color:var(--color-text-muted);white-space:nowrap;font-size:.7rem}.board-card-range{color:var(--color-text-muted);font-size:.7rem}.board-empty{color:var(--color-text-muted);padding:.25rem;font-size:.75rem}
