:root{--font-sans: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif;--font-mono: "SFMono-Regular", Consolas, "Liberation Mono", monospace;--color-bg: #f4f7fb;--color-surface: #ffffff;--color-surface-muted: #f8fafc;--color-surface-strong: #eef3f8;--color-text: #172033;--color-text-muted: #5f6f82;--color-text-soft: #7c8998;--color-border: #dbe3ec;--color-border-strong: #cbd6e2;--color-primary: #2563eb;--color-primary-hover: #1d4ed8;--color-primary-soft: #eef5ff;--color-primary-border: #cbdcff;--color-success: #18794e;--color-success-soft: #eaf8f0;--color-success-border: #c8ead7;--color-warning: #8a6100;--color-warning-soft: #fff7df;--color-warning-border: #f0dfa7;--color-danger: #b42318;--color-danger-hover: #912018;--color-danger-soft: #fff0ee;--color-danger-border: #f0c7c2;--shadow-card: 0 8px 28px rgba(23, 32, 51, .07);--shadow-modal: 0 24px 80px rgba(23, 32, 51, .22);--focus-ring: 0 0 0 4px rgba(37, 99, 235, .18);--radius-sm: 10px;--radius-md: 14px;--radius-lg: 18px;--radius-xl: 24px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--text-sm: .875rem;--text-base: 1.0625rem;--text-lg: 1.1875rem;--text-xl: 1.375rem;--text-2xl: clamp(1.75rem, 4vw, 2.25rem);--control-height: 52px;--control-height-sm: 48px;--sidebar-width: 276px;--content-max: 1180px}*{box-sizing:border-box}html{min-width:320px;background:var(--color-bg);color:var(--color-text);font-family:var(--font-sans);font-size:16px;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-text-size-adjust:100%}body{margin:0;min-width:320px;min-height:100vh;background:var(--color-bg);color:var(--color-text);font-size:var(--text-base);line-height:1.55}button,input,select,textarea{font:inherit}button,select{cursor:pointer}button:disabled,input:disabled,select:disabled{cursor:not-allowed;opacity:.62}button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible{outline:none;box-shadow:var(--focus-ring)}h1,h2,h3,p{margin-top:0}h1{margin-bottom:var(--space-3);font-size:var(--text-2xl);line-height:1.15;letter-spacing:-.025em}h2{font-size:var(--text-xl);line-height:1.25}code,.mono{font-family:var(--font-mono)}code{padding:2px 6px;border-radius:6px;background:var(--color-surface-strong);font-size:.92em}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.centered-page{min-height:100vh;display:grid;place-items:center;padding:var(--space-6)}.btn{min-height:var(--control-height);border:1px solid transparent;border-radius:var(--radius-md);padding:0 20px;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:750;line-height:1.2;transition:background .12s ease,border-color .12s ease,transform .12s ease}.btn:active:not(:disabled){transform:translateY(1px)}.btn-small{min-height:var(--control-height-sm);padding-inline:16px;font-size:.96rem}.btn-full{width:100%}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn-secondary{background:var(--color-surface);color:var(--color-text);border-color:var(--color-border-strong)}.btn-secondary:hover:not(:disabled),.btn-ghost:hover:not(:disabled){background:var(--color-surface-strong)}.btn-ghost{background:transparent;color:var(--color-text)}.btn-danger{background:var(--color-danger);color:#fff}.btn-danger:hover:not(:disabled){background:var(--color-danger-hover)}.field{display:grid;gap:8px}.field-label{font-weight:750;color:var(--color-text)}.input,.select{width:100%;min-height:var(--control-height);border:1px solid var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);padding:0 15px;font-size:1rem;transition:border-color .12s ease,box-shadow .12s ease}.select{appearance:none;padding-right:44px;background-image:linear-gradient(45deg,transparent 50%,var(--color-text-muted) 50%),linear-gradient(135deg,var(--color-text-muted) 50%,transparent 50%);background-position:calc(100% - 20px) 22px,calc(100% - 14px) 22px;background-size:6px 6px,6px 6px;background-repeat:no-repeat}.input:hover,.select:hover{border-color:#aebdcd}.input:focus,.select:focus{border-color:var(--color-primary);outline:none;box-shadow:var(--focus-ring)}.input.is-invalid,.select.is-invalid{border-color:var(--color-danger)}.field-hint,.field-error{font-size:.9375rem;line-height:1.4}.field-hint{color:var(--color-text-muted)}.field-error{color:var(--color-danger);font-weight:650}.ui-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);overflow:hidden}.card-header{padding:var(--space-6) var(--space-6) 0;display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4)}.card-title{margin:0}.card-description{margin:7px 0 0;color:var(--color-text-muted);font-size:.98rem}.card-actions{flex:0 0 auto}.card-body{padding:var(--space-6)}.status-badge{min-height:34px;max-width:100%;padding:6px 11px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--color-border);background:var(--color-surface-strong);color:#45566b;font-size:.9rem;line-height:1.2;font-weight:750;overflow-wrap:anywhere}.badge-success{background:var(--color-success-soft);color:var(--color-success);border-color:var(--color-success-border)}.badge-info{background:var(--color-primary-soft);color:var(--color-primary-hover);border-color:var(--color-primary-border)}.badge-warning{background:var(--color-warning-soft);color:var(--color-warning);border-color:var(--color-warning-border)}.badge-danger{background:var(--color-danger-soft);color:var(--color-danger);border-color:var(--color-danger-border)}.alert{border:1px solid;border-radius:var(--radius-md);padding:15px 16px;display:flex;gap:12px;align-items:flex-start}.alert strong{display:block;line-height:1.35}.alert-copy{margin-top:4px;color:inherit;opacity:.92;font-size:.97rem}.alert-mark{flex:0 0 26px;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-weight:850;background:#ffffffb8}.alert-info{background:var(--color-primary-soft);color:#1748a8;border-color:var(--color-primary-border)}.alert-success{background:var(--color-success-soft);color:var(--color-success);border-color:var(--color-success-border)}.alert-warning{background:var(--color-warning-soft);color:var(--color-warning);border-color:var(--color-warning-border)}.alert-danger{background:var(--color-danger-soft);color:var(--color-danger);border-color:var(--color-danger-border)}.request-id{display:block;margin-top:6px;font-family:var(--font-mono);font-size:.86rem}.modal-backdrop{position:fixed;inset:0;z-index:100;background:#0f172a6b;display:grid;place-items:center;padding:20px}.modal{width:min(520px,100%);max-height:calc(100vh - 40px);overflow:auto;background:var(--color-surface);border-radius:var(--radius-xl);box-shadow:var(--shadow-modal);padding:var(--space-6)}.modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.modal-head h2{margin:0}.icon-button{width:48px;height:48px;flex:0 0 48px;border:0;border-radius:12px;background:var(--color-surface-strong);color:var(--color-text);font-size:1.6rem;line-height:1}.modal-copy{margin-top:var(--space-4);color:var(--color-text-muted)}.modal-actions{margin-top:var(--space-6);display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap}.table-wrap{width:100%;overflow-x:auto;border:1px solid var(--color-border);border-radius:var(--radius-md)}.data-table{width:100%;border-collapse:collapse;background:var(--color-surface);font-size:.98rem}.data-table th,.data-table td{min-height:48px;padding:14px 16px;border-bottom:1px solid var(--color-border);vertical-align:middle}.data-table th{background:var(--color-surface-strong);color:#3b4c61;font-weight:800;text-align:left}.data-table tr:last-child td{border-bottom:0}.data-table tbody tr:hover{background:#fbfdff}.align-right{text-align:right!important}.align-center{text-align:center!important}.state-box{min-height:132px;padding:22px;border:1px dashed var(--color-border-strong);border-radius:var(--radius-md);background:var(--color-surface-muted);display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:8px}.state-box p{margin:0;color:var(--color-text-muted);font-size:.96rem}.state-mark{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:var(--color-surface-strong);color:var(--color-text-muted);font-weight:800}.spinner{width:28px;height:28px;border:3px solid var(--color-primary-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.app-shell{min-height:100vh;display:grid;grid-template-columns:var(--sidebar-width) minmax(0,1fr)}.sidebar{position:sticky;top:0;height:100vh;padding:22px 18px;border-right:1px solid var(--color-border);background:#fffffff5;display:flex;flex-direction:column;gap:24px}.brand{min-height:58px;padding:6px;border:0;border-radius:14px;background:transparent;color:var(--color-text);display:flex;align-items:center;gap:12px;text-align:left}.brand:hover{background:var(--color-surface-muted)}.brand>span:last-child{display:grid;gap:1px}.brand strong{font-size:1.08rem}.brand small{color:var(--color-text-muted);font-size:.82rem}.brand-mark{width:46px;height:46px;flex:0 0 46px;border-radius:14px;display:grid;place-items:center;background:var(--color-primary);color:#fff;font-size:.88rem;font-weight:850;letter-spacing:.02em}.sidebar-nav{display:grid;gap:8px}.nav-item{width:100%;min-height:52px;border:1px solid transparent;border-radius:var(--radius-md);padding:8px 10px;background:transparent;color:var(--color-text-muted);display:flex;align-items:center;gap:11px;text-align:left;font-weight:700}.nav-item:hover{background:var(--color-surface-muted);color:var(--color-text)}.nav-item.is-active{background:var(--color-primary-soft);border-color:var(--color-primary-border);color:var(--color-primary-hover)}.nav-mark{width:32px;height:32px;flex:0 0 32px;border-radius:10px;display:grid;place-items:center;background:var(--color-surface-strong);color:var(--color-text-muted);font-size:.84rem;font-weight:850}.nav-item.is-active .nav-mark{background:var(--color-primary);color:#fff}.sidebar-footer{margin-top:auto;display:grid;gap:14px}.session-summary{padding:12px;border:1px solid var(--color-border);border-radius:var(--radius-md);display:flex;gap:10px;align-items:center}.avatar{width:40px;height:40px;flex:0 0 40px;border-radius:50%;display:grid;place-items:center;background:var(--color-surface-strong);color:var(--color-text-muted);font-weight:850}.session-summary>span:last-child{min-width:0;display:grid}.session-summary strong,.session-summary small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.session-summary small{color:var(--color-text-muted);font-size:.82rem}.shell-main{min-width:0}.content{width:min(var(--content-max),calc(100% - 48px));margin:0 auto;padding:42px 0 56px}.mobile-header,.mobile-nav{display:none}.page-stack{display:grid;gap:22px}.page-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:22px}.page-heading>div{min-width:0}.page-heading p:last-child{margin:0;color:var(--color-text-muted);max-width:760px}.eyebrow{margin:0 0 8px;color:var(--color-primary-hover);font-size:.82rem;line-height:1.3;font-weight:850;letter-spacing:.08em}.metric-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.metric-value{font-size:1.7rem;line-height:1.2;font-weight:850;letter-spacing:-.02em}.metric-success{color:var(--color-success)}.metric-danger{color:var(--color-danger)}.muted{color:var(--color-text-muted)}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.break-word{overflow-wrap:anywhere}.principles-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.principles-grid>div{min-height:112px;padding:18px;border-radius:var(--radius-md);background:var(--color-surface-muted);display:grid;align-content:start;gap:7px}.principles-grid span{color:var(--color-text-muted);font-size:.96rem}.two-column-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.detail-list{margin:0;display:grid;gap:16px}.detail-list>div{padding-bottom:16px;border-bottom:1px solid var(--color-border)}.detail-list>div:last-child{padding-bottom:0;border-bottom:0}.detail-list dt{color:var(--color-text-muted);font-size:.9rem;font-weight:700}.detail-list dd{margin:5px 0 0;font-size:.95rem}.badge-list,.component-row{display:flex;align-items:center;flex-wrap:wrap;gap:10px}.component-row+.component-row{margin-top:18px}.form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;align-items:start}.stack-sm{display:grid;gap:12px}.states-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.login-page{min-height:100vh;display:grid;place-items:center;padding:28px 20px;background:radial-gradient(circle at 18% 12%,rgba(37,99,235,.08),transparent 30%),var(--color-bg)}.login-panel{width:min(520px,100%);padding:clamp(26px,5vw,40px);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-xl);box-shadow:0 16px 48px #17203317}.login-brand{display:flex;align-items:center;gap:14px}.brand-mark-large{width:54px;height:54px;flex-basis:54px;border-radius:16px}.login-brand>div{display:grid}.login-brand strong{font-size:1.12rem}.login-brand span:last-child{color:var(--color-text-muted);font-size:.88rem}.login-copy{margin-top:34px}.login-copy p:last-child{margin-bottom:0;color:var(--color-text-muted)}.segmented-control{margin-top:24px;padding:4px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-muted);display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px}.segmented-control button{min-height:48px;border:0;border-radius:10px;background:transparent;color:var(--color-text-muted);font-weight:750}.segmented-control button.is-active{background:var(--color-surface);color:var(--color-primary-hover);box-shadow:0 2px 8px #17203314}.login-panel>.alert{margin-top:18px}.login-form{margin-top:22px;display:grid;gap:18px}.login-help{margin:20px 0 0;color:var(--color-text-muted);font-size:.91rem;text-align:center}@media(max-width:980px){.app-shell{display:block}.sidebar{display:none}.mobile-header{height:72px;padding:10px 18px;border-bottom:1px solid var(--color-border);background:#fffffff7;position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:12px}.brand-mobile{min-height:48px;padding:2px}.brand-mobile .brand-mark{width:40px;height:40px;flex-basis:40px;border-radius:12px;font-size:.78rem}.content{width:min(var(--content-max),calc(100% - 32px));padding:28px 0 104px}.mobile-nav{position:fixed;left:12px;right:12px;bottom:max(10px,env(safe-area-inset-bottom));z-index:30;min-height:70px;padding:7px;border:1px solid var(--color-border);border-radius:20px;background:#fffffff7;box-shadow:0 12px 36px #17203329;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px}.nav-item-mobile{min-height:56px;padding:5px 4px;flex-direction:column;justify-content:center;gap:3px;text-align:center;font-size:.79rem}.nav-item-mobile .nav-mark{width:27px;height:27px;flex-basis:27px;border-radius:8px;font-size:.72rem}.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.metric-grid>:last-child{grid-column:span 2}.form-grid,.states-grid{grid-template-columns:1fr}}@media(max-width:700px){body{font-size:1rem}.content{width:min(100% - 24px,var(--content-max));padding-top:22px}.page-stack{gap:16px}.page-heading{display:grid;gap:12px}.page-heading>.status-badge{justify-self:start}.metric-grid,.two-column-grid,.principles-grid{grid-template-columns:1fr}.metric-grid>:last-child{grid-column:auto}.card-header{padding:20px 18px 0;display:grid}.card-body{padding:18px}.card-actions{width:100%}.component-row{align-items:stretch}.component-row .btn{flex:1 1 180px}.modal-backdrop{align-items:end;padding:12px}.modal{width:100%;border-radius:22px}.modal-actions{display:grid;grid-template-columns:1fr}.modal-actions .btn{width:100%}.table-wrap{overflow:visible;border:0}.data-table,.data-table thead,.data-table tbody,.data-table tr,.data-table td{display:block;width:100%}.data-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.data-table tbody{display:grid;gap:12px}.data-table tr{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);overflow:hidden}.data-table td{min-height:52px;padding:12px 14px;border-bottom:1px solid var(--color-border);display:grid;grid-template-columns:minmax(110px,42%) minmax(0,1fr);align-items:center;gap:12px;text-align:right!important}.data-table td:before{content:attr(data-label);color:var(--color-text-muted);font-size:.88rem;font-weight:750;text-align:left}.data-table td:last-child{border-bottom:0}.login-page{padding:16px 12px;place-items:stretch;align-items:start}.login-panel{margin:0 auto;padding:24px 18px;border-radius:20px}.login-copy{margin-top:28px}}.assignment-list{display:grid;gap:12px}.assignment-card{padding:16px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-muted)}.assignment-card-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.assignment-details{margin:14px 0 0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.assignment-details>div{min-width:0}.assignment-details dt{color:var(--color-text-muted);font-size:.82rem;font-weight:700}.assignment-details dd{margin:3px 0 0;font-weight:700;overflow-wrap:anywhere}@media(max-width:700px){.assignment-details{grid-template-columns:repeat(2,minmax(0,1fr))}}.employee-name-cell{display:grid;gap:4px}.employee-name-cell .mono{font-size:.82rem}.fallback-page{min-height:100vh;display:grid;place-items:center;padding:24px;background:var(--color-bg)}.fallback-card{width:min(600px,100%);padding:clamp(28px,6vw,44px);border:1px solid var(--color-border);border-radius:var(--radius-xl);background:var(--color-surface);box-shadow:var(--shadow-card)}.fallback-card .brand-mark{margin-bottom:22px}.fallback-copy{max-width:52ch;margin-bottom:0;color:var(--color-text-muted)}.fallback-actions{margin-top:24px;display:flex;gap:12px;flex-wrap:wrap}@media(max-width:980px){.mobile-nav{grid-template-columns:repeat(auto-fit,minmax(68px,1fr))}}@media(max-width:420px){.nav-item-mobile{font-size:.74rem}.fallback-page{padding:12px}}
