:root{--surface:#f8f9ff;--surface-bright:#f8f9ff;--surface-dim:#cbdbf5;--surface-container-lowest:#fff;--surface-container-low:#eff4ff;--surface-container:#e5eeff;--surface-container-high:#dce9ff;--surface-container-highest:#d3e4fe;--on-surface:#0b1c30;--on-surface-variant:#444651;--on-background:#0b1c30;--background:#f8f9ff;--outline:#757682;--outline-variant:#c5c5d3;--primary:#00236f;--primary-container:#1e3a8a;--on-primary:#fff;--on-primary-container:#b6c4ff;--primary-fixed:#dce1ff;--secondary:#006c4a;--secondary-container:#82f5c1;--on-secondary:#fff;--on-secondary-container:#00714e;--error:#ba1a1a;--error-container:#ffdad6;--on-error:#fff;--on-error-container:#93000a;--warn-bg:#fef3c7;--warn-text:#92400e;--font-body:"Inter", system-ui, sans-serif;--font-mono:"JetBrains Mono", "SFMono-Regular", Menlo, Consolas, monospace;--radius-sm:4px;--radius:8px;--radius-md:12px;--radius-lg:16px;--radius-full:9999px;--xs:4px;--sm:8px;--md:16px;--lg:24px;--xl:32px;--xxl:48px;--shadow-sm:0 1px 2px #1e3a8a0f;--shadow-md:0 4px 12px #1e3a8a14;--shadow-lg:0 8px 24px #1e3a8a1f;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--background);color:var(--on-background);font-family:var(--font-body);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-size:16px;line-height:24px}.icon{letter-spacing:normal;text-transform:none;white-space:nowrap;word-wrap:normal;font-variation-settings:"FILL" 0, "wght" 400, "GRAD" 0, "opsz" 24;-webkit-font-feature-settings:"liga";-webkit-font-smoothing:antialiased;vertical-align:middle;direction:ltr;font-family:Material Symbols Outlined;font-size:20px;font-style:normal;font-weight:400;line-height:1;display:inline-block}.icon.fill{font-variation-settings:"FILL" 1}.icon.sm{font-size:18px}.icon.lg{font-size:28px}.icon.xl{font-size:32px}.h1{letter-spacing:-.02em;margin:0;font-size:32px;font-weight:700;line-height:40px}.h2{letter-spacing:-.01em;margin:0;font-size:24px;font-weight:600;line-height:32px}.h3{margin:0;font-size:20px;font-weight:600;line-height:28px}.body-lg{font-size:18px;line-height:28px}.body-md{font-size:16px;line-height:24px}.body-sm{font-size:14px;line-height:20px}.label-caps{letter-spacing:.05em;text-transform:uppercase;color:var(--on-surface-variant);font-size:12px;font-weight:600;line-height:16px}.timer-display{font-family:var(--font-mono);letter-spacing:-.05em;font-variant-numeric:tabular-nums;font-size:40px;font-weight:500;line-height:40px}.muted{color:var(--on-surface-variant)}.small{font-size:12px;line-height:16px}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.right{text-align:right}button{font:inherit;border-radius:var(--radius);border:1px solid var(--outline-variant);background:var(--surface-container-lowest);color:var(--on-surface);cursor:pointer;align-items:center;gap:6px;padding:10px 16px;font-weight:500;transition:background .12s,border-color .12s,color .12s,box-shadow .12s;display:inline-flex}button:hover:not(:disabled){background:var(--surface-container-high);border-color:var(--primary)}button:disabled{opacity:.5;cursor:not-allowed}button[type=submit],button.primary{background:var(--primary);color:var(--on-primary);border-color:var(--primary)}button[type=submit]:hover:not(:disabled),button.primary:hover:not(:disabled){background:var(--primary-container);border-color:var(--primary-container);filter:brightness(1.05)}button.danger{background:var(--error);color:var(--on-error);border-color:var(--error)}button.danger:hover:not(:disabled){filter:brightness(.92)}button.ghost{background:0 0;border-color:#0000;padding:6px 10px}button.ghost:hover:not(:disabled){background:var(--surface-container)}input,select,textarea{font:inherit;border-radius:var(--radius);border:1px solid var(--outline-variant);background:var(--surface-container-lowest);width:100%;color:var(--on-surface);padding:10px 12px;transition:border-color .12s,box-shadow .12s}input:focus,select:focus,textarea:focus{border-color:var(--primary);outline:none;box-shadow:0 0 0 3px #00236f26}textarea{resize:vertical;min-height:64px}label{flex-direction:column;gap:6px;margin-bottom:14px;display:flex}label>span{letter-spacing:.05em;text-transform:uppercase;color:var(--on-surface-variant);font-size:12px;font-weight:600}.input-icon{position:relative}.input-icon .icon{color:var(--outline);pointer-events:none;position:absolute;top:50%;left:12px;transform:translateY(-50%)}.input-icon input{padding-left:40px}.card-surface{background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:var(--radius-md);box-shadow:var(--shadow-sm)}.error{background:var(--error-container);color:var(--on-error-container);border-radius:var(--radius);margin:8px 0;padding:10px 14px;font-size:14px}.empty{color:var(--on-surface-variant);text-align:center;background:var(--surface-container-lowest);border:1px dashed var(--outline-variant);border-radius:var(--radius-md);padding:32px}.page{max-width:1200px;margin:0 auto;padding:24px}.page-loading{text-align:center;color:var(--on-surface-variant);padding:60px}.topbar{margin-bottom:var(--lg);justify-content:space-between;align-items:center;gap:var(--md);display:flex}.topbar h1{letter-spacing:-.02em;margin:0;font-size:28px;font-weight:700;line-height:36px}.topbar-right{align-items:center;gap:var(--md);display:flex}.topbar-right .badge{background:var(--surface-container-high);color:var(--on-surface-variant);border-radius:var(--radius-full);letter-spacing:.05em;text-transform:uppercase;padding:4px 10px;font-size:12px;font-weight:600}.section-head{margin-bottom:var(--md);justify-content:space-between;align-items:center;gap:var(--md);display:flex}.section-head h2{margin:0;font-size:18px;font-weight:600}section{margin-bottom:var(--xxl)}.auth-shell{min-height:100vh;padding:var(--md);background:radial-gradient(ellipse at top, #1e3a8a14, transparent 60%), var(--background);place-items:center;display:grid}.auth-shell:before{content:"";background:var(--secondary);height:4px;position:fixed;top:0;left:0;right:0}.auth-card{background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:var(--radius-lg);padding:var(--xxl);width:100%;max-width:440px;box-shadow:var(--shadow-md)}.auth-brand{margin-bottom:var(--xl);align-items:center;gap:var(--sm);flex-direction:column;display:flex}.auth-brand .logo{border-radius:var(--radius);background:var(--primary);width:56px;height:56px;color:var(--on-primary);place-items:center;display:grid}.auth-brand .logo .icon{font-size:32px}.auth-brand h1{color:var(--primary);margin:0;font-size:24px;font-weight:700;line-height:32px}.auth-brand p{color:var(--on-surface-variant);margin:0;font-size:14px}.auth-foot{margin-top:var(--lg);justify-content:center;display:flex}.seg-tabs{background:var(--surface-container-low);border-radius:var(--radius);margin-bottom:var(--md);gap:4px;padding:4px;display:flex}.seg-tabs button{color:var(--on-surface-variant);background:0 0;border:none;border-radius:6px;flex:1;justify-content:center;padding:8px 12px;font-size:13px;font-weight:500}.seg-tabs button:hover:not(.active){background:var(--surface-container)}.seg-tabs button.active{background:var(--surface-container-lowest);color:var(--primary);box-shadow:var(--shadow-sm)}.auth-empty{text-align:center;padding:16px 0}.auth-empty h3{margin:0;font-size:18px}.info-chip{align-items:center;gap:var(--sm);background:var(--surface-container-high);border:1px solid var(--outline-variant);border-radius:var(--radius-full);color:var(--on-surface-variant);padding:6px 14px;font-size:13px;display:inline-flex}.info-chip .icon{color:var(--primary);font-size:18px}.session-card{background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);margin-bottom:var(--md);grid-template-columns:1fr 280px;display:grid;overflow:hidden}@media (width<=720px){.session-card{grid-template-columns:1fr}}.session-body{padding:var(--lg);border-right:1px solid var(--outline-variant)}@media (width<=720px){.session-body{border-right:none;border-bottom:1px solid var(--outline-variant)}}.session-rail{background:var(--surface-container-low);padding:var(--lg);gap:var(--md);flex-direction:column;justify-content:center;align-items:center;display:flex}.session-rail .timer-display{color:var(--primary)}.status-chip{background:var(--secondary-container);color:var(--on-secondary-container);border-radius:var(--radius-full);letter-spacing:.06em;text-transform:uppercase;align-items:center;gap:6px;padding:4px 10px;font-size:11px;font-weight:700;display:inline-flex}.status-chip .icon{font-size:14px}.session-title{color:var(--primary);margin:8px 0 0;font-size:20px;font-weight:600}.session-meta-grid{gap:var(--md);margin:var(--md) 0;grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.session-actions{margin-top:var(--md);justify-content:flex-end;gap:8px;display:flex}.session-edit>*+*{margin-top:var(--sm)}.modal-backdrop{padding:var(--md);z-index:100;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0b1c308c;place-items:center;display:grid;position:fixed;inset:0}.modal{background:var(--surface-container-lowest);border-radius:var(--radius-lg);padding:var(--xl);width:100%;max-width:480px;max-height:90vh;box-shadow:var(--shadow-lg);overflow-y:auto}.modal-wide{max-width:640px}.modal h2{margin:0 0 var(--md);font-size:22px;font-weight:600}.modal-actions{margin-top:var(--md);justify-content:flex-end;gap:8px;display:flex}.grid-2{gap:var(--md);grid-template-columns:1fr 1fr;display:grid}.log-table{border-collapse:collapse;background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:var(--radius-md);width:100%;box-shadow:var(--shadow-sm);overflow:hidden}.log-table th,.log-table td{text-align:left;vertical-align:top;padding:12px 16px;font-size:14px}.log-table thead{background:var(--surface-container-low)}.log-table th{letter-spacing:.05em;text-transform:uppercase;color:var(--on-surface-variant);font-size:11px;font-weight:600}.log-table tbody tr{border-top:1px solid var(--outline-variant);transition:background .12s}.log-table tbody tr:hover{background:var(--surface-container)}.log-table th.right,.log-table td.right{text-align:right;font-family:var(--font-mono);font-variant-numeric:tabular-nums}.row-actions{gap:6px;display:flex}.filter-row{gap:var(--md);margin-bottom:var(--md);background:var(--surface-container-lowest);border:1px solid var(--outline-variant);padding:var(--md);border-radius:var(--radius-md);flex-wrap:wrap;align-items:flex-end;display:flex}.filter-row label{flex:1;min-width:160px;margin-bottom:0}.pagination{gap:var(--md);margin-top:var(--md);justify-content:flex-end;align-items:center;font-size:14px;display:flex}.summary-grid{gap:var(--md);margin-bottom:var(--lg);grid-template-columns:repeat(auto-fit,minmax(200px,1fr));display:grid}.summary-card{background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:var(--radius-md);padding:var(--lg);box-shadow:var(--shadow-sm)}.summary-card .label-caps{margin-bottom:4px;display:block}.summary-big{letter-spacing:-.02em;color:var(--primary);font-size:32px;font-weight:700;line-height:40px}.summary-by-client h3{color:var(--on-surface-variant);text-transform:uppercase;letter-spacing:.05em;margin:4px 0 8px;font-size:14px}.summary-by-client ul{margin:0;padding:0;list-style:none}.summary-by-client li{border-bottom:1px solid var(--outline-variant);justify-content:space-between;padding:8px 0;font-size:14px;display:flex}.summary-by-client li:last-child{border-bottom:none}.admin-shell{min-height:100vh;display:flex}.admin-nav{background:var(--surface-container-low);border-right:1px solid var(--outline-variant);width:240px;padding:var(--lg);gap:var(--lg);flex-direction:column;flex-shrink:0;display:flex}.admin-brand{color:var(--primary);align-items:center;gap:10px;font-size:18px;font-weight:700;display:flex}.admin-brand .logo{background:var(--primary);width:32px;height:32px;color:var(--on-primary);border-radius:8px;place-items:center;display:grid}.admin-brand .logo .icon{font-size:20px}.admin-nav nav{flex-direction:column;flex:1;gap:2px;display:flex}.admin-nav nav a{color:var(--on-surface-variant);border-radius:var(--radius);align-items:center;gap:10px;padding:10px 12px;font-size:14px;font-weight:500;text-decoration:none;transition:background .12s,color .12s;display:flex}.admin-nav nav a:hover{background:var(--surface-container);color:var(--on-surface)}.admin-nav nav a.active{background:var(--surface-container-high);color:var(--primary);font-weight:600}.admin-foot{border-top:1px solid var(--outline-variant);padding-top:var(--md);flex-direction:column;gap:8px;display:flex}.admin-main{padding:var(--xl);flex:1;width:100%;max-width:1280px;margin:0 auto}.toast-stack{bottom:var(--md);right:var(--md);z-index:200;flex-direction:column;gap:8px;max-width:380px;display:flex;position:fixed}.toast{border-radius:var(--radius);background:var(--surface-container-lowest);border:1px solid var(--outline-variant);box-shadow:var(--shadow-md);flex-direction:column;gap:8px;padding:12px 16px;font-size:14px;display:flex}.toast-body{line-height:20px}.toast-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px;display:flex}.toast-actions button{padding:4px 10px;font-size:13px}.toast-success{background:var(--secondary-container);color:var(--on-secondary-container);border-color:#0000}.toast-warn{background:var(--warn-bg);color:var(--warn-text);border-color:#0000}.toast-error{background:var(--error-container);color:var(--on-error-container);border-color:#0000}.bell-wrap{display:inline-block}.bell-badge{background:var(--error);min-width:18px;height:18px;color:var(--on-error);text-align:center;border-radius:9px;padding:0 5px;font-size:10px;font-weight:700;line-height:18px;position:absolute;top:0;right:0;transform:translate(35%,-35%)}.bell-dropdown{background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:var(--radius-md);width:360px;max-height:480px;box-shadow:var(--shadow-lg);z-index:90;flex-direction:column;display:flex;position:absolute;top:calc(100% + 6px);right:0;overflow:hidden}.bell-dropdown-head{border-bottom:1px solid var(--outline-variant);background:var(--surface-container-low);justify-content:space-between;align-items:center;padding:10px 14px;display:flex}.bell-list{margin:0;padding:0;list-style:none;overflow-y:auto}.bell-list li{border-bottom:1px solid var(--outline-variant);cursor:pointer;align-items:flex-start;gap:10px;padding:10px 14px;display:flex}.bell-list li:hover{background:var(--surface-container)}.bell-list li:last-child{border-bottom:none}.bell-list li.unread{background:var(--surface-container-low)}.bell-list li.unread .body{font-weight:600}.notif-page-grid{grid-template-columns:1fr;gap:24px;display:grid}@media (width>=960px){.notif-page-grid{grid-template-columns:320px 1fr}}.notif-summary-card{background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);padding:20px}.notif-summary-card .row{justify-content:space-between;align-items:center;margin:10px 0;display:flex}.notif-summary-card .pill{background:var(--primary-container);color:var(--primary);border-radius:999px;padding:2px 10px;font-size:12px;font-weight:700}.notif-summary-card .pill.alert{background:var(--error-container);color:var(--on-error-container)}.notif-pills{background:var(--surface-container-low);border-radius:var(--radius);border:1px solid var(--outline-variant);gap:4px;padding:4px;display:inline-flex}.notif-pills button{letter-spacing:.04em;text-transform:uppercase;color:var(--on-surface-variant);background:0 0;border:none;border-radius:6px;padding:6px 12px;font-size:12px;font-weight:600}.notif-pills button:hover:not(.active){background:var(--surface-container)}.notif-pills button.active{background:var(--surface-container-highest);color:var(--primary)}.notif-category-head{letter-spacing:.06em;text-transform:uppercase;color:var(--on-surface-variant);align-items:center;gap:8px;margin:16px 0 8px;font-size:11px;font-weight:600;display:flex}.notif-category-dot{background:var(--primary);border-radius:50%;width:8px;height:8px}.notif-category-dot.alert{background:var(--error)}.notif-category-dot.activity{background:var(--secondary)}.notif-card{background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:var(--radius-md);cursor:pointer;align-items:flex-start;gap:12px;padding:14px;transition:border-color .12s,box-shadow .12s;display:flex;position:relative}.notif-card:hover{border-color:var(--primary);box-shadow:var(--shadow-md)}.notif-card.alert{border-left:4px solid var(--error);border-left-color:var(--error)}.notif-card.read{opacity:.6}.notif-card .icon-box{background:var(--surface-container);width:36px;height:36px;color:var(--primary);border-radius:8px;flex-shrink:0;place-items:center;display:grid}.notif-card.alert .icon-box{background:var(--error-container);color:var(--on-error-container)}.notif-card.activity .icon-box{background:var(--secondary-container);color:var(--on-secondary-container)}.notif-card .head{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.notif-card .title{color:var(--on-surface);font-size:14px;font-weight:600}.notif-card.alert .title{color:var(--error)}.notif-card .when{color:var(--on-surface-variant);white-space:nowrap;font-size:11px}.notif-card .body{color:var(--on-surface-variant);margin-top:2px;font-size:13px}.notif-card .actions{opacity:0;gap:12px;margin-top:8px;transition:opacity .12s;display:flex}.notif-card:hover .actions{opacity:1}.notif-card .actions button{letter-spacing:.04em;text-transform:uppercase;color:var(--primary);cursor:pointer;background:0 0;border:none;padding:0;font-size:11px;font-weight:700}.notif-card .actions button:hover{text-decoration:underline}.notif-card .actions button.muted{color:var(--on-surface-variant)}.notif-card.alert .actions button{color:var(--error)}.notif-card .unread-dot{background:var(--primary);border-radius:50%;flex-shrink:0;width:8px;height:8px;margin-top:4px}.notif-card.alert .unread-dot{background:var(--error)}.dev-tabs{background:var(--surface-container-low);border-radius:var(--radius);gap:4px;margin-bottom:20px;padding:4px;display:inline-flex}.dev-tabs a{color:var(--on-surface-variant);border-radius:6px;align-items:center;gap:6px;padding:8px 14px;font-size:14px;font-weight:500;text-decoration:none;transition:background .12s,color .12s;display:inline-flex}.dev-tabs a:hover{background:var(--surface-container);color:var(--on-surface)}.dev-tabs a.active{background:var(--surface-container-lowest);color:var(--primary);box-shadow:var(--shadow-sm)}.class-chip{background:var(--tertiary-fixed,var(--primary-fixed));color:var(--on-tertiary-fixed-variant,var(--primary));letter-spacing:.04em;text-transform:uppercase;border-radius:999px;align-items:center;gap:4px;padding:2px 8px;font-size:10px;font-weight:600;display:inline-flex}.activity-feed{gap:8px;display:grid}.activity-row{border-bottom:1px dashed var(--outline-variant);align-items:flex-start;gap:10px;padding:8px 0;display:flex}.activity-row:last-child{border-bottom:none}.activity-row .activity-icon{background:var(--surface-container-high);border-radius:50%;flex-shrink:0;place-items:center;width:28px;height:28px;display:grid}.activity-row .activity-body{flex:1;font-size:13px}.activity-row .activity-body .who{font-weight:600}.activity-row .activity-body .when{color:var(--on-surface-variant);margin-left:6px;font-size:11px}.wi-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;display:grid}.wi-card{background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);cursor:pointer;flex-direction:column;gap:10px;padding:16px;transition:box-shadow .12s,transform .12s;display:flex;position:relative;overflow:hidden}.wi-card:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}.wi-card .edge{width:4px;height:100%;position:absolute;top:0;left:0}.wi-card .edge.todo{background:var(--outline)}.wi-card .edge.in_progress{background:var(--secondary)}.wi-card .edge.in_review{background:var(--primary)}.wi-card .edge.blocked{background:var(--warn-text)}.wi-card .edge.done{background:var(--secondary);opacity:.5}.wi-card .edge.cancelled{background:var(--outline);opacity:.3}.wi-card .wi-chips{flex-wrap:wrap;justify-content:space-between;gap:8px;display:flex}.wi-card h4{margin:0;font-size:16px;font-weight:600;line-height:22px}.wi-card .wi-progress-row{color:var(--on-surface-variant);text-transform:uppercase;letter-spacing:.04em;justify-content:space-between;font-size:11px;display:flex}.wi-progress-bar{background:var(--surface-container-high);border-radius:3px;width:100%;height:6px;overflow:hidden}.wi-progress-bar .fill{background:var(--secondary);height:100%;transition:width .2s}.wi-card-foot{border-top:1px solid var(--outline-variant);justify-content:space-between;align-items:center;margin-top:auto;padding-top:10px;display:flex}.wi-card-foot .due{color:var(--on-surface-variant);align-items:center;gap:4px;font-size:12px;display:inline-flex}.wi-card-foot .due.overdue{color:var(--error)}.breadcrumbs{color:var(--on-surface-variant);align-items:center;gap:4px;margin-bottom:12px;font-size:13px;display:flex}.breadcrumbs a{color:var(--on-surface-variant);text-decoration:none}.breadcrumbs a:hover{color:var(--primary)}.breadcrumbs .current{color:var(--on-surface);font-weight:500}.wi-detail-grid{grid-template-columns:1fr;gap:16px;display:grid}@media (width>=960px){.wi-detail-grid{grid-template-columns:2fr 1fr}}.wi-meta-grid{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:16px;margin:16px 0;display:grid}.wi-meta-grid .field{flex-direction:column;gap:4px;display:flex}.wi-comment{align-items:flex-start;gap:12px;display:flex}.wi-comment .avatar{background:var(--primary-container);width:36px;height:36px;color:var(--primary);border-radius:50%;flex-shrink:0;place-items:center;font-weight:600;display:grid}.wi-comment .bubble{background:var(--surface-container-low);border:1px solid var(--outline-variant);border-radius:4px 12px 12px;flex:1;padding:10px 14px}.wi-comment .bubble .meta{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}.wi-comment .bubble .meta .name{font-size:14px;font-weight:600}.wi-comment .bubble .meta .time{color:var(--on-surface-variant);font-size:11px}.wi-comment .bubble .body{white-space:pre-wrap;font-size:14px}.audit-list{flex-direction:column;gap:8px;display:flex}.audit-card{background:var(--surface-container-lowest);border:1px solid var(--outline-variant);border-radius:var(--radius);padding:12px 16px}.audit-card summary{cursor:pointer;align-items:center;gap:12px;font-size:14px;list-style:none;display:flex}.audit-card summary::-webkit-details-marker{display:none}.audit-card[open]{padding-bottom:16px}
