:root{--brand: #c0266d;--brand-hover: #a41f5c;--brand-active: #87194c;--brand-soft: #fcedf4;--brand-softer: #fff7fb;--brand-border: #f2c3d8;--brand-ink: #8a1a4e;--tes-purple: #a21caf;--tes-magenta: #e5337a;--tes-amber: #f9a51a;--tes-orange: #f5561e;--brand-gradient: linear-gradient(120deg, var(--tes-purple) 0%, var(--tes-magenta) 42%, var(--tes-amber) 80%, var(--tes-orange) 100%);--brand-gradient-v: linear-gradient(180deg, var(--tes-purple) 0%, var(--tes-magenta) 50%, var(--tes-orange) 100%);--page-bg: #eeebef;--canvas: #f9f8fa;--surface: #ffffff;--surface-alt: #fafbfc;--border: #e8eaee;--border-strong: #dcdfe5;--hairline: #f0f1f4;--text: #101828;--text-secondary: #475467;--text-muted: #737e91;--text-faint: #98a2b3;--success: #1fa94a;--success-soft: #e8f7ed;--success-text: #167a37;--danger: #f04438;--danger-soft: #fee4e2;--danger-text: #b42318;--warning: #f16b24;--warning-soft: #fdeee4;--warning-text: #b34d17;--purple: #7a5af8;--purple-soft: #f4f1ff;--teal: #15b8a6;--orange: #f16b24;--sidebar-w: 252px;--sidebar-w-collapsed: 76px;--topbar-h: 68px;--frame-gap: 14px;--r-frame: 18px;--r-card: 14px;--r-md: 10px;--r-sm: 8px;--r-pill: 999px;--shadow-xs: 0 1px 2px rgba(16, 24, 40, .04);--shadow-sm: 0 1px 3px rgba(16, 24, 40, .06), 0 1px 2px rgba(16, 24, 40, .04);--shadow-pop: 0 12px 28px rgba(16, 24, 40, .12), 0 2px 6px rgba(16, 24, 40, .06);--shadow-modal:0 24px 56px rgba(16, 24, 40, .2);--shadow-frame:0 2px 14px rgba(16, 24, 40, .07)}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:Inter,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:14px;line-height:1.5;color:var(--text);background:var(--page-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,h4{margin:0;font-weight:600;letter-spacing:-.01em}a{color:var(--brand);text-decoration:none}a:hover{color:var(--brand-hover)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:#d8dbe1;border-radius:99px;border:3px solid transparent;background-clip:content-box}::-webkit-scrollbar-thumb:hover{background:#c3c7cf;background-clip:content-box}::-webkit-scrollbar-track{background:transparent}.app-shell{display:flex;height:calc(100vh - var(--frame-gap) * 2);margin:var(--frame-gap);background:var(--surface);border-radius:var(--r-frame);box-shadow:var(--shadow-frame);overflow:hidden;position:relative}.app-shell:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--brand-gradient);z-index:5;pointer-events:none}.app-main{flex:1;min-width:0;display:flex;flex-direction:column;background:var(--canvas)}.content{flex:1;overflow-y:auto;padding:22px 26px 34px}.sidebar{width:var(--sidebar-w);flex-shrink:0;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;transition:width .18s ease}.app-shell.collapsed .sidebar{width:var(--sidebar-w-collapsed)}.sidebar-brand{height:var(--topbar-h);display:flex;align-items:center;gap:10px;padding:0 18px;flex-shrink:0;color:inherit;text-decoration:none}.sidebar-brand:hover{color:inherit}.sidebar-brand:focus-visible{outline:2px solid var(--brand);outline-offset:-2px;border-radius:var(--r-sm)}.brand-logo{height:26px;width:auto;display:block}.brand-mark{height:28px;width:auto;display:none;flex-shrink:0}.brand-sub{font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--brand);background:var(--brand-gradient);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;margin-top:3px;white-space:nowrap;display:inline-block}.app-shell.collapsed .brand-logo,.app-shell.collapsed .brand-sub{display:none}.app-shell.collapsed .brand-mark{display:block}.app-shell.collapsed .sidebar-brand{justify-content:center;padding:0;gap:0}.sidebar-nav{flex:1;overflow-y:auto;overflow-x:hidden;padding:6px 12px 12px}.nav-item{display:flex;align-items:center;gap:11px;padding:9px 11px;margin-bottom:2px;border-radius:var(--r-md);color:var(--text-secondary);font-size:13.5px;font-weight:500;white-space:nowrap;position:relative;transition:background .14s,color .14s}.nav-item:hover{background:var(--surface-alt);color:var(--text)}.nav-item.active{background:linear-gradient(90deg,var(--brand-soft) 0%,var(--brand-softer) 100%);color:var(--brand);font-weight:600}.nav-item.active:before{content:"";position:absolute;left:-12px;top:50%;transform:translateY(-50%);width:3px;height:24px;background:var(--brand-gradient-v);border-radius:0 3px 3px 0}.nav-item svg{flex-shrink:0}.nav-label{flex:1;overflow:hidden;text-overflow:ellipsis}.nav-count{background:var(--surface-alt);border:1px solid var(--border);color:var(--text-muted);font-size:11px;font-weight:600;padding:1px 7px;border-radius:var(--r-pill)}.nav-item.active .nav-count{background:var(--surface);border-color:var(--brand-border);color:var(--brand)}.app-shell.collapsed .nav-item{justify-content:center;padding:10px 0;gap:0}.app-shell.collapsed .nav-label,.app-shell.collapsed .nav-count{display:none}.app-shell.collapsed .nav-item.active:before{left:-12px}.sidebar-section{padding:16px 11px 7px;font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint);white-space:nowrap}.app-shell.collapsed .sidebar-section{padding:14px 0 6px;text-align:center;font-size:0}.app-shell.collapsed .sidebar-section:after{content:"";display:block;height:1px;background:var(--border);margin:0 16px}.topbar{height:var(--topbar-h);flex-shrink:0;background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;gap:12px;padding:0 20px}.topbar-spacer{flex:1}.icon-button{width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);color:var(--text-secondary);cursor:pointer;transition:background .14s,color .14s,border-color .14s}.icon-button:hover{background:var(--brand-soft);color:var(--brand);border-color:var(--brand-border)}.icon-button.plain{border-color:transparent;background:transparent}.icon-button.plain:hover{background:var(--surface-alt);color:var(--text)}.avatar{width:36px;height:36px;border-radius:50%;background:var(--brand-gradient);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:12.5px;border:2px solid var(--surface);box-shadow:0 0 0 1px var(--brand-border);cursor:pointer;flex-shrink:0;overflow:hidden;padding:0}.avatar img{width:100%;height:100%;object-fit:cover;display:block}.dropdown{position:relative}.dropdown-panel{position:absolute;right:0;top:calc(100% + 9px);min-width:232px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-card);box-shadow:var(--shadow-pop);padding:7px;z-index:1200}.dropdown-panel .dd-head{padding:9px 11px 12px;border-bottom:1px solid var(--hairline);margin-bottom:6px}.dropdown-panel .dd-head strong{display:block;font-size:13.5px}.dropdown-panel .dd-head span{font-size:12px;color:var(--text-muted);word-break:break-all}.dropdown-item{display:flex;align-items:center;gap:10px;width:100%;padding:9px 11px;border:none;background:none;font:inherit;font-size:13.5px;color:var(--text-secondary);text-align:left;cursor:pointer;border-radius:var(--r-sm)}.dropdown-item:hover{background:var(--brand-soft);color:var(--brand)}.dropdown-item.danger:hover{background:var(--danger-soft);color:var(--danger-text)}.page-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:20px;flex-wrap:wrap}.page-head h1{font-size:24px;font-weight:650}.page-head .sub{font-size:13px;color:var(--text-muted);margin-top:3px}.page-head .actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.settings-nav{display:flex;align-items:center;gap:4px;margin-bottom:18px;padding:4px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--shadow-xs);flex-wrap:wrap}@media (max-width: 720px){.settings-nav{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}.settings-nav::-webkit-scrollbar{display:none}}.settings-tab{display:inline-flex;align-items:center;gap:7px;padding:8px 13px;border-radius:var(--r-sm);font-size:13px;font-weight:500;color:var(--text-secondary);white-space:nowrap;transition:background .14s,color .14s}.settings-tab:hover{background:var(--surface-alt);color:var(--text)}.settings-tab.active{background:var(--brand-soft);color:var(--brand);font-weight:600}.settings-tab svg{flex-shrink:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;height:38px;padding:0 15px;border-radius:var(--r-md);border:1px solid transparent;font:inherit;font-size:13.5px;font-weight:550;cursor:pointer;white-space:nowrap;transition:background .14s,border-color .14s,color .14s,box-shadow .14s}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--brand);border-color:var(--brand);color:#fff;box-shadow:var(--shadow-xs)}.btn-primary:hover:not(:disabled){background:var(--brand-hover);border-color:var(--brand-hover)}.btn-default{background:var(--surface);border-color:var(--border-strong);color:var(--text-secondary);box-shadow:var(--shadow-xs)}.btn-default:hover:not(:disabled){background:var(--surface-alt);color:var(--text)}.btn-danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn-danger:hover:not(:disabled){background:var(--danger-text);border-color:var(--danger-text)}.btn-ghost{background:transparent;border-color:transparent;color:var(--text-muted)}.btn-ghost:hover:not(:disabled){background:var(--surface-alt);color:var(--text)}.btn-sm{height:32px;padding:0 11px;font-size:12.5px}.chip{display:inline-flex;align-items:center;gap:7px;height:38px;padding:0 13px;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-md);font-size:13px;font-weight:500;color:var(--text-secondary);cursor:pointer;white-space:nowrap;box-shadow:var(--shadow-xs)}.chip:hover{background:var(--surface-alt);color:var(--text)}.chip svg{color:var(--text-faint)}.btn-icon{width:32px;height:32px;padding:0;border-radius:var(--r-sm);border:1px solid var(--border);background:var(--surface);color:var(--text-muted);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:background .14s,color .14s,border-color .14s}.btn-icon:hover:not(:disabled){background:var(--brand-soft);border-color:var(--brand-border);color:var(--brand)}.btn-icon.danger:hover:not(:disabled){background:var(--danger-soft);border-color:#fda29b;color:var(--danger-text)}.btn-icon.brand{background:var(--brand-soft);border-color:var(--brand-border);color:var(--brand)}.btn-icon.brand:hover:not(:disabled){background:var(--brand);border-color:var(--brand);color:#fff}.btn-icon:disabled{opacity:.4;cursor:not-allowed}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-card);box-shadow:var(--shadow-xs)}.card+.card{margin-top:16px}.card-header{padding:15px 18px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.card-header.with-border{border-bottom:1px solid var(--hairline)}.card-title{font-size:15px;font-weight:600}.card-sub{font-size:12.5px;color:var(--text-muted);margin-top:2px;font-weight:400}.card-body{padding:18px}.card-body.tight{padding:6px 0 0}.card-footer{padding:13px 18px;border-top:1px solid var(--hairline);display:flex;justify-content:flex-end;gap:8px;background:var(--surface-alt);border-radius:0 0 var(--r-card) var(--r-card)}.tile-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(212px,1fr));gap:16px;margin-bottom:18px}.tile{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-card);box-shadow:var(--shadow-xs);padding:17px 18px}.tile-top{display:flex;align-items:center;justify-content:space-between;gap:10px}.tile-label{font-size:13px;color:var(--text-secondary);font-weight:500}.tile-icon{width:30px;height:30px;border-radius:var(--r-sm);display:flex;align-items:center;justify-content:center;background:var(--brand-soft);color:var(--brand);flex-shrink:0}.tile-icon.green{background:var(--success-soft);color:var(--success-text)}.tile-icon.purple{background:var(--purple-soft);color:var(--purple)}.tile-icon.amber{background:var(--warning-soft);color:var(--warning-text)}.tile-value{font-size:27px;font-weight:650;letter-spacing:-.02em;margin-top:10px;line-height:1.15}.tile-foot{font-size:12px;color:var(--text-muted);margin-top:5px;display:flex;align-items:center;gap:7px;flex-wrap:wrap}.delta{display:inline-flex;align-items:center;gap:3px;font-size:11.5px;font-weight:600;padding:1px 7px;border-radius:var(--r-pill)}.delta.up{background:var(--success-soft);color:var(--success-text)}.delta.down{background:var(--danger-soft);color:var(--danger-text)}.delta.flat{background:var(--hairline);color:var(--text-muted)}.grid-2{display:grid;grid-template-columns:1.55fr 1fr;gap:16px;align-items:start}.grid-halves{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}.stack{display:flex;flex-direction:column;gap:16px}.bar-row{padding:11px 0}.bar-row+.bar-row{border-top:1px solid var(--hairline)}.bar-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:7px}.bar-name{font-size:13.5px;font-weight:550;display:flex;align-items:center;gap:7px}.bar-value{font-size:12.5px;color:var(--text-muted);font-weight:500;white-space:nowrap}.bar-track{height:7px;background:var(--hairline);border-radius:var(--r-pill);overflow:hidden}.bar-fill{height:100%;border-radius:var(--r-pill);background:var(--brand);transition:width .3s ease}.bar-fill.green{background:var(--success)}.bar-fill.purple{background:var(--purple)}.bar-fill.amber{background:var(--warning)}.bar-fill.teal{background:var(--teal)}.donut-wrap{display:flex;align-items:center;gap:22px;flex-wrap:wrap}.donut{position:relative;width:132px;height:132px;flex-shrink:0}.donut svg{transform:rotate(-90deg);display:block}.donut-centre{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center}.donut-centre .dv{font-size:24px;font-weight:650;line-height:1;letter-spacing:-.02em}.donut-centre .dl{font-size:11.5px;color:var(--text-muted);margin-top:3px}.legend{display:flex;flex-direction:column;gap:11px;flex:1;min-width:130px}.legend-row{display:flex;align-items:center;gap:9px;font-size:13px}.legend-dot{width:9px;height:9px;border-radius:3px;flex-shrink:0}.legend-name{color:var(--text-secondary);flex:1}.legend-value{font-weight:600}.person-row{display:flex;align-items:center;gap:11px;padding:10px 18px}.person-row+.person-row{border-top:1px solid var(--hairline)}.person-row:hover{background:var(--surface-alt)}.person-av{width:32px;height:32px;border-radius:50%;background:var(--canvas);color:var(--text-secondary);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;font-size:11.5px;font-weight:600;flex-shrink:0}.person-main{flex:1;min-width:0}.person-name{display:block;font-size:13.5px;font-weight:550;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.person-meta{display:block;font-size:12px;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.person-side{font-size:12px;color:var(--text-muted);white-space:nowrap}.table-wrap{overflow-x:auto}table.table{width:100%;border-collapse:collapse;font-size:13.5px}table.table th{text-align:left;background:var(--surface-alt);color:var(--text-muted);font-weight:600;font-size:11.5px;letter-spacing:.04em;text-transform:uppercase;padding:10px 18px;border-top:1px solid var(--hairline);border-bottom:1px solid var(--hairline);white-space:nowrap}table.table td{padding:13px 18px;border-bottom:1px solid var(--hairline);vertical-align:middle}table.table tbody tr:last-child td{border-bottom:none}table.table tbody tr:hover{background:var(--surface-alt)}table.table td.actions{text-align:right;white-space:nowrap}table.table td.actions>*+*{margin-left:6px}.table-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:14px 18px;border-bottom:1px solid var(--hairline)}table.table-reorder td.grip-cell{width:34px;padding-right:0;vertical-align:middle}table.table-reorder tr.dragging{opacity:.45}table.table-reorder tr.drop-above td{box-shadow:inset 0 2px 0 var(--brand)}table.table-reorder tr.drop-below td{box-shadow:inset 0 -2px 0 var(--brand)}.search-box{position:relative;flex:0 1 300px;min-width:190px}.search-box svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--text-faint);pointer-events:none}.search-box input{width:100%;height:38px;padding:0 13px 0 35px;font:inherit;font-size:13.5px;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-md);outline:none}.search-box input:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.empty-row{text-align:center;color:var(--text-muted);padding:42px 18px}.empty-state{text-align:center;padding:40px 18px;color:var(--text-muted)}.empty-state .es-icon{width:44px;height:44px;margin:0 auto 12px;border-radius:12px;background:var(--canvas);display:flex;align-items:center;justify-content:center;color:var(--text-faint)}.empty-state .es-title{font-size:14.5px;font-weight:600;color:var(--text);margin-bottom:4px}.form-group{margin-bottom:15px}.form-row{display:flex;gap:15px;flex-wrap:wrap}.form-row>.form-group{flex:1 1 230px}label{display:block;font-size:12.5px;font-weight:600;color:var(--text-secondary);margin-bottom:6px}label .req{color:var(--danger);margin-left:2px}.form-control{width:100%;height:40px;padding:0 13px;font:inherit;font-size:13.5px;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-md);outline:none;transition:border-color .14s,box-shadow .14s}.form-control:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.form-control:disabled{background:var(--canvas);color:var(--text-faint);cursor:not-allowed}.form-control.is-invalid{border-color:var(--danger)}.form-control.is-invalid:focus{box-shadow:0 0 0 3px var(--danger-soft)}.form-control::placeholder{color:var(--text-faint)}select.form-control{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23737e91' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 11px center;padding-right:34px}textarea.form-control{height:auto;min-height:80px;padding:10px 13px;resize:vertical}.field-error{color:var(--danger-text);font-size:12px;margin-top:5px}.field-hint{color:var(--text-muted);font-size:12px;margin-top:5px;line-height:1.45}.password-field{position:relative}.password-field .form-control,.password-field .login-input{padding-right:44px}.password-toggle{position:absolute;right:7px;top:50%;transform:translateY(-50%);background:none;border:none;padding:6px;cursor:pointer;color:var(--text-faint);display:inline-flex;border-radius:6px}.password-toggle:hover{color:var(--brand);background:var(--brand-soft)}.check-list{border:1px solid var(--border-strong);border-radius:var(--r-md);max-height:244px;overflow-y:auto;padding:5px;background:var(--surface)}.check-row{display:flex;align-items:flex-start;gap:10px;padding:8px 10px;border-radius:var(--r-sm);cursor:pointer;font-size:13.5px;font-weight:400;color:var(--text);margin-bottom:0}.check-row:hover{background:var(--brand-softer)}.check-row input{margin:3px 0 0;accent-color:var(--brand);cursor:pointer;width:15px;height:15px}.check-row .meta{display:block;font-size:11.5px;color:var(--text-muted);font-weight:400;margin-top:1px}.check-row strong{font-weight:550}.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 9px;border-radius:var(--r-pill);font-size:11.5px;font-weight:600;line-height:1.65;white-space:nowrap}.badge.brand{background:var(--brand-soft);color:var(--brand)}.badge.success{background:var(--success-soft);color:var(--success-text)}.badge.danger{background:var(--danger-soft);color:var(--danger-text)}.badge.warning{background:var(--warning-soft);color:var(--warning-text)}.badge.purple{background:var(--purple-soft);color:var(--purple)}.badge.muted{background:var(--hairline);color:var(--text-muted)}.badge-group{display:flex;flex-wrap:wrap;gap:5px}.dot{width:6px;height:6px;border-radius:50%;background:currentColor}.matrix{width:100%;border-collapse:collapse;font-size:13.5px}.matrix th{background:var(--surface-alt);font-size:11.5px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);padding:10px 12px;text-align:center;border-bottom:1px solid var(--hairline)}.matrix th:first-child{text-align:left}.matrix td{padding:11px 12px;border-bottom:1px solid var(--hairline);text-align:center}.matrix td:first-child{text-align:left}.matrix tbody tr:last-child td{border-bottom:none}.matrix tbody tr:hover{background:var(--surface-alt)}.matrix .module-name{font-weight:550}.matrix .module-desc{display:block;font-size:11.5px;color:var(--text-faint);font-weight:400}.matrix input[type=checkbox]{width:16px;height:16px;accent-color:var(--brand);cursor:pointer}.matrix .na{color:#d9dde3}.matrix-wrap{border:1px solid var(--border);border-radius:var(--r-md);overflow:hidden}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#10182873;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:flex-start;justify-content:center;padding:44px 16px;overflow-y:auto;z-index:2000}.modal{background:var(--surface);border-radius:var(--r-frame);width:100%;max-width:540px;box-shadow:var(--shadow-modal);overflow:hidden}.modal.wide{max-width:880px}.modal-header{padding:18px 22px;border-bottom:1px solid var(--hairline);display:flex;align-items:center;justify-content:space-between;gap:12px}.modal-header h3{font-size:16.5px;font-weight:600}.modal-header .close{width:32px;height:32px;background:none;border:none;color:var(--text-muted);cursor:pointer;border-radius:var(--r-sm);display:inline-flex;align-items:center;justify-content:center}.modal-header .close:hover{background:var(--surface-alt);color:var(--text)}.modal-body{padding:22px;max-height:calc(100vh - 260px);overflow-y:auto}.modal-footer{padding:15px 22px;border-top:1px solid var(--hairline);background:var(--surface-alt);display:flex;justify-content:flex-end;gap:9px}.alert{padding:12px 15px;border-radius:var(--r-md);font-size:13px;margin-bottom:16px;border:1px solid transparent;line-height:1.5}.alert-danger{background:var(--danger-soft);border-color:#fda29b;color:var(--danger-text)}.alert-warning{background:var(--warning-soft);border-color:#fec84b;color:var(--warning-text)}.alert-info{background:var(--brand-soft);border-color:var(--brand-border);color:var(--brand-ink)}.alert-success{background:var(--success-soft);border-color:#a6f4c5;color:var(--success-text)}.login-container{display:flex;min-height:100vh;background:var(--surface)}.login-left{flex:1.15;position:relative;overflow:hidden;background-color:#4a1052;background-image:linear-gradient(155deg,#3a0c42f0,#a21cafd1 34%,#e5337abd 66%,#f5561eb3),url(/images/login-bg.jpg);background-size:cover;background-position:center;color:#fff;display:flex;flex-direction:column;justify-content:space-between;padding:52px 64px 44px}.login-left:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(900px 560px at 8% 0%,rgba(255,255,255,.16),transparent 62%);pointer-events:none}.login-left>*{position:relative;z-index:1}.login-left .mark{height:56px;width:56px;border-radius:16px;background:#fff;display:flex;align-items:center;justify-content:center;padding:9px;box-shadow:0 10px 28px #2806284d}.login-left .mark img{max-height:100%;max-width:100%;height:auto;width:auto;object-fit:contain;display:block}.login-hero{max-width:520px}.login-eyebrow{display:inline-flex;align-items:center;gap:8px;font-size:11.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;padding:6px 12px;border-radius:var(--r-pill);background:#ffffff24;border:1px solid rgba(255,255,255,.28);margin-bottom:18px}.login-eyebrow .dot{width:7px;height:7px;border-radius:50%;background:var(--tes-amber);box-shadow:0 0 0 3px #f9a51a4d}.login-left h1{font-size:38px;font-weight:700;line-height:1.16;letter-spacing:-.028em;text-shadow:0 2px 18px rgba(40,6,40,.25)}.login-left .tagline{margin-top:16px;font-size:15.5px;line-height:1.6;max-width:460px;opacity:.92}.login-features{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:34px;padding:0;list-style:none}.login-features li{background:#ffffff1f;border:1px solid rgba(255,255,255,.22);border-radius:14px;padding:14px 14px 13px;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);font-size:13px;line-height:1.4;font-weight:500}.login-features .li-icon{width:30px;height:30px;border-radius:9px;background:#fff3;display:flex;align-items:center;justify-content:center;margin-bottom:10px}.login-left-foot{font-size:12.5px;opacity:.78;display:flex;justify-content:space-between;gap:16px}.login-right{flex:1;display:flex;flex-direction:column;justify-content:center;padding:64px 56px;max-width:540px;background:radial-gradient(520px 320px at 100% 0%,var(--brand-softer),transparent 70%),var(--surface)}.login-right .login-logo{height:34px;width:auto;max-width:100%;object-fit:contain;display:block;margin-bottom:22px;align-self:flex-start}.login-product{display:inline-flex;align-items:center;gap:8px;align-self:flex-start;font-size:12px;font-weight:600;color:var(--brand-ink);background:var(--brand-soft);border:1px solid var(--brand-border);padding:5px 11px 5px 6px;border-radius:var(--r-pill);margin-bottom:18px}.login-product .chip{font-size:10.5px;font-weight:800;letter-spacing:.06em;color:#fff;background:var(--brand-gradient);padding:2px 8px;border-radius:var(--r-pill)}.login-right h2{font-size:26px;font-weight:680;letter-spacing:-.02em;margin-bottom:6px}.login-right .lead{font-size:13.5px;color:var(--text-muted);margin:0 0 28px}.login-form{display:flex;flex-direction:column}.login-form .form-group{margin-bottom:16px}.login-input{width:100%;height:46px;padding:0 15px;font:inherit;font-size:14.5px;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-md);outline:none;transition:border-color .14s,box-shadow .14s}.login-input:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.login-input::placeholder{color:var(--text-faint)}.login-button{height:48px;margin-top:8px;background:var(--brand-gradient);background-size:160% 100%;background-position:0% 0;color:#fff;border:none;border-radius:var(--r-md);font:inherit;font-size:15px;font-weight:650;letter-spacing:.01em;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;box-shadow:0 8px 22px #c0266d47;transition:background-position .35s ease,box-shadow .2s,transform .12s}.login-button:hover:not(:disabled){background-position:100% 0;box-shadow:0 10px 26px #c0266d5c}.login-button:active:not(:disabled){transform:translateY(1px)}.login-button:focus-visible{outline:2px solid var(--brand);outline-offset:3px}.login-button:disabled{opacity:.65;cursor:not-allowed}.login-footnote{margin-top:26px;font-size:12.5px;color:var(--text-faint);text-align:center}.centred-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:34px 16px;background:var(--canvas)}.centred-page .card{width:100%;max-width:460px;box-shadow:var(--shadow-sm)}.section-head{margin:26px 0 12px;font-size:11px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--text-faint);padding-top:18px;border-top:1px solid var(--border)}.switch-row{display:flex;align-items:flex-start;gap:10px;padding:9px 0;font-size:13.5px;cursor:pointer}.switch-row+.switch-row{border-top:1px solid var(--hairline)}.switch-row input{margin-top:2px;flex-shrink:0;width:15px;height:15px;cursor:pointer}.switch-row input:disabled{cursor:not-allowed}.switch-row>span{display:block}.switch-row .switch-help{display:block;font-size:12px;color:var(--text-muted);margin-top:2px;line-height:1.45}.profile-photo{display:flex;align-items:center;gap:18px}.profile-avatar{width:88px;height:88px;border-radius:50%;background:var(--brand-soft);color:var(--brand);border:1px solid var(--brand-border);display:flex;align-items:center;justify-content:center;font-weight:650;font-size:27px;overflow:hidden;flex-shrink:0}.profile-avatar img{width:100%;height:100%;object-fit:cover;display:block}.profile-photo-actions{display:flex;flex-wrap:wrap;gap:8px}.profile-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}.kv-row{display:flex;align-items:baseline;justify-content:space-between;gap:16px;padding:10px 0;font-size:13px}.kv-row+.kv-row{border-top:1px solid var(--hairline)}.kv-row>span:first-child{color:var(--text-muted);flex-shrink:0}.kv-row>strong{font-weight:600;text-align:right}.kv-row .badge-group{justify-content:flex-end}.spinner{width:14px;height:14px;border:2px solid rgba(255,255,255,.45);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite;display:inline-block}.spinner.dark{border-color:var(--brand-border);border-top-color:var(--brand)}@keyframes spin{to{transform:rotate(360deg)}}.page-loader{min-height:60vh;display:flex;align-items:center;justify-content:center;gap:10px;color:var(--text-muted)}.text-muted{color:var(--text-muted)}.mono{font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:12.5px}.credential-callout{background:var(--brand-soft);border:1px solid var(--brand-border);border-radius:var(--r-md);padding:14px 16px}.credential-callout .value{display:flex;align-items:center;gap:10px;font-size:17px;font-weight:650;letter-spacing:.4px;margin-top:7px}.no-access{min-height:58vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:var(--text-muted);text-align:center}.no-access .na-icon{width:52px;height:52px;border-radius:15px;background:var(--danger-soft);color:var(--danger-text);display:flex;align-items:center;justify-content:center;margin-bottom:6px}@media (max-width: 1180px){.grid-2{grid-template-columns:1fr}}@media (max-width: 980px){.login-left{display:none}.login-right{max-width:none;padding:48px 28px}.grid-halves{grid-template-columns:1fr}}@media (max-width: 760px){:root{--frame-gap: 0px}.app-shell{border-radius:0;height:100vh}.sidebar{width:var(--sidebar-w-collapsed)}.sidebar .nav-label,.sidebar .nav-count{display:none}.sidebar .nav-item{justify-content:center;padding:10px 0;gap:0}.sidebar-section{font-size:0;padding:14px 0 6px}.brand-text{display:none}.sidebar-brand{justify-content:center;padding:0}.content{padding:16px 14px 26px}.topbar{padding:0 12px}.grid-2{grid-template-columns:1fr}.profile-photo{flex-direction:column;align-items:flex-start}}.cl-gaps{display:flex;align-items:center;gap:13px;padding:14px 16px;margin-bottom:14px;border-radius:var(--r-card);border:1px solid #fec84b;background:var(--warning-soft);color:var(--warning-text);flex-wrap:wrap}.cl-gaps.soft{border-color:var(--border);background:var(--surface);color:var(--text)}.cl-gaps-icon{display:flex;flex-shrink:0}.cl-gaps-main{flex:1;min-width:200px}.cl-gaps-title{font-size:14px;font-weight:600}.cl-gaps-sub{font-size:12.5px;margin-top:2px;opacity:.85}.cl-section{margin-bottom:14px}.cl-head{display:flex;align-items:center;gap:13px;padding:14px 16px;cursor:pointer;-webkit-user-select:none;user-select:none}.cl-head:hover{background:var(--surface-alt)}.cl-head .chev{color:var(--text-faint);flex-shrink:0;transition:transform .15s}.cl-head.open .chev{transform:rotate(90deg)}.cl-head-main{flex:1;min-width:0}.cl-head-name{font-size:14.5px;font-weight:600;display:flex;align-items:center;gap:9px;flex-wrap:wrap}.cl-head-meta{font-size:12px;color:var(--text-muted);margin-top:3px}.cl-head-actions{display:flex;gap:7px;flex-shrink:0}.cl-progress{width:108px;flex-shrink:0}.cl-progress .bar-track{height:5px}.cl-progress .pl{font-size:11px;color:var(--text-muted);margin-bottom:4px;text-align:right}.cl-item{display:flex;gap:14px;padding:15px 16px;border-top:1px solid var(--hairline)}.cl-item:hover{background:var(--surface-alt)}.cl-item.is-rejected{background:#fffaf9}.cl-item.is-approved{background:#fbfefc}.cl-item.is-missing{background:#fffdf7;box-shadow:inset 3px 0 0 var(--warning)}.cl-item.is-missing .cl-num{color:var(--warning-text);font-weight:700}.cl-num{width:26px;flex-shrink:0;font-size:12px;color:var(--text-faint);font-variant-numeric:tabular-nums;padding-top:2px}.cl-body{flex:1;min-width:0}.cl-label{font-size:13.5px;line-height:1.5}.cl-label .req-star{color:var(--danger);margin-left:3px}.cl-help{font-size:12px;color:var(--text-muted);margin-top:3px}.cl-control{margin-top:10px;display:flex;gap:10px;flex-wrap:wrap;align-items:flex-start}.cl-control .form-control{max-width:340px}.cl-side{width:190px;flex-shrink:0;display:flex;flex-direction:column;gap:7px;align-items:flex-end}.yn-group{display:inline-flex;gap:8px}.yn-group button{display:inline-flex;align-items:center;gap:8px;padding:7px 15px;border:1px solid var(--border-strong);border-radius:var(--r-md);background:var(--surface);font:inherit;font-size:13px;font-weight:500;color:var(--text-secondary);cursor:pointer}.yn-group .yn-dot{width:14px;height:14px;flex-shrink:0;border:2px solid var(--border-strong);border-radius:50%;background:transparent}.yn-group button:hover:not(:disabled){border-color:var(--text-faint);background:var(--surface-alt)}.yn-group button.on-yes,.yn-group button.on-no{color:#fff;font-weight:600}.yn-group button.on-yes{background:var(--success);border-color:var(--success)}.yn-group button.on-no{background:var(--danger);border-color:var(--danger)}.yn-group button.on-yes .yn-dot,.yn-group button.on-no .yn-dot{border-color:#fff;background:#fff;box-shadow:inset 0 0 0 3px currentColor}.yn-group button:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.yn-group button:disabled{opacity:.55;cursor:not-allowed}.yn-group.none-picked button{border-style:dashed}.yn-hint{display:inline-flex;align-items:center;font-size:12px;color:var(--warning-text);background:var(--warning-soft);border-radius:var(--r-pill);padding:4px 11px;align-self:center}.yn-clear{align-self:center;color:var(--text-muted)}.file-chip{display:inline-flex;align-items:center;gap:7px;background:var(--canvas);border:1px solid var(--border);border-radius:var(--r-pill);padding:4px 6px 4px 11px;font-size:12.5px;max-width:320px}.file-chip a{color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-chip .rm{border:none;background:none;cursor:pointer;color:var(--text-faint);display:inline-flex;padding:2px;border-radius:50%}.file-chip .rm:hover{background:var(--danger-soft);color:var(--danger-text)}.upload-btn{display:inline-flex;align-items:center;gap:7px;padding:7px 14px;border:1px dashed var(--border-strong);border-radius:var(--r-md);background:var(--surface);font-size:13px;color:var(--text-secondary);cursor:pointer}.upload-btn:hover{border-color:var(--brand);color:var(--brand);background:var(--brand-softer)}.upload-btn input{display:none}.autosave{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;color:var(--text-muted);background:var(--canvas);border:1px solid var(--border);border-radius:var(--r-pill);padding:6px 13px;white-space:nowrap}.autosave.saved{color:var(--success-text);background:var(--success-soft);border-color:transparent}.autosave.error{color:var(--danger-text);background:var(--danger-soft);border-color:transparent}.cl-autosave-note{display:flex;align-items:flex-start;gap:10px;font-size:12.5px;line-height:1.55;color:var(--text-secondary);background:var(--brand-softer, var(--canvas));border:1px solid var(--border);border-radius:var(--r-card);padding:11px 14px;margin-bottom:14px}.cl-autosave-note>svg{flex-shrink:0;margin-top:2px;color:var(--success)}.row-save{display:inline-flex;align-items:center;gap:6px;margin-top:8px;font-size:11.5px;color:var(--text-muted)}.row-save.saved{color:var(--success-text)}.row-save.error{color:var(--danger-text)}.cl-toolbar{display:flex;align-items:center;gap:11px;flex-wrap:wrap;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-card);padding:11px 14px;margin-bottom:14px;box-shadow:var(--shadow-xs)}.cl-toolbar-spacer{flex:1}.cl-toolbar-count{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--text-muted)}.cl-label mark,.cl-help mark{background:var(--warning-soft);color:inherit;border-radius:3px;padding:0 1px}.verdict{font-size:11.5px;padding:7px 10px;border-radius:var(--r-sm);background:var(--canvas);width:100%}.verdict .vh{font-weight:600;display:flex;align-items:center;gap:5px}.verdict .vc{color:var(--text-muted);margin-top:3px;line-height:1.45}.verdict.ok{background:var(--success-soft);color:var(--success-text)}.verdict.no{background:var(--danger-soft);color:var(--danger-text)}.verdict.dev{background:var(--warning-soft);color:var(--warning-text)}.ed-section{border:1px solid var(--border);border-radius:var(--r-card);background:var(--surface);margin-bottom:14px;box-shadow:var(--shadow-xs)}.ed-section.dragging{opacity:.45}.ed-section.drop-above{border-top:2px solid var(--brand)}.ed-section.drop-below{border-bottom:2px solid var(--brand)}.ed-section.inactive{background:var(--surface-alt)}.ed-head{display:flex;align-items:center;gap:11px;padding:13px 14px}.ed-head .ed-title-input{flex:1;min-width:0;font-weight:600}.grip{cursor:grab;color:#c2c7d0;display:inline-flex;padding:5px 3px;border-radius:5px;-webkit-user-select:none;user-select:none;flex-shrink:0}.grip:hover{color:var(--brand);background:var(--brand-soft)}.grip:focus-visible{outline:2px solid var(--brand);outline-offset:1px}.grip:active{cursor:grabbing}.ed-items{border-top:1px solid var(--hairline)}.ed-item{display:flex;align-items:center;gap:9px;padding:8px 14px 8px 10px;border-bottom:1px solid var(--hairline)}.ed-item:last-child{border-bottom:none}.ed-item.dragging{opacity:.45}.ed-item.drop-above{border-top:2px solid var(--brand)}.ed-item.drop-below{border-bottom:2px solid var(--brand)}.ed-item.inactive{background:var(--surface-alt);opacity:.72}.ed-item .ed-label{flex:1;min-width:0}.ed-item select.form-control{width:auto;min-width:118px}.ed-item .form-control{height:34px;font-size:13px}.ed-flags{display:flex;align-items:center;gap:11px;flex-shrink:0}.ed-flag{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;color:var(--text-muted);cursor:pointer;white-space:nowrap;font-weight:500;margin:0}.ed-flag input{accent-color:var(--brand);margin:0}.ed-approvers{display:flex;gap:10px;flex-wrap:wrap;padding:11px 14px;background:var(--surface-alt);border-top:1px solid var(--hairline)}.ed-approvers label{margin:0}.ed-approvers>div{flex:1 1 165px;min-width:150px}.ed-approvers select.form-control{height:34px;font-size:12.5px}.ed-toolbar{position:sticky;bottom:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-card);box-shadow:var(--shadow-pop);padding:12px 16px;display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-top:18px;z-index:50}.cred-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px}.cred-box{background:var(--brand-soft);border:1px solid var(--brand-border);border-radius:var(--r-md);padding:12px 14px}.cred-box .cl{font-size:11.5px;font-weight:600;color:var(--brand);text-transform:uppercase;letter-spacing:.05em}.cred-box .cv{display:flex;align-items:center;gap:9px;font-size:16px;font-weight:650;margin-top:5px;word-break:break-all}@media (max-width: 760px){.cred-grid{grid-template-columns:1fr}.cl-item{flex-wrap:wrap}.cl-side{width:100%;align-items:flex-start}}.nw-table{width:100%;table-layout:fixed}.nw-table th,.nw-table td{padding:11px 14px;vertical-align:middle}.nw-table th.num,.nw-table td.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.nw-table td.num{color:var(--text)}.nw-table td.zero{color:var(--text-muted)}.nw-name{font-weight:600;color:var(--text)}.nw-codes{font-size:11.5px;color:var(--text-muted);margin-top:3px;font-family:var(--mono, ui-monospace, "SFMono-Regular", Consolas, monospace)}.nw-place{color:var(--text-secondary)}.nw-row{cursor:pointer}.nw-row:hover{background:var(--surface-alt)}.nw-row:focus-visible{outline:2px solid var(--brand);outline-offset:-2px}.nw-flow{display:grid;grid-template-columns:repeat(4,1fr);position:relative;margin-top:4px}.nw-flow:before{content:"";position:absolute;top:13px;left:12.5%;right:12.5%;height:2px;background:var(--border)}.nw-flow-step{position:relative;text-align:center;padding-top:0}.nw-flow-dot{width:28px;height:28px;margin:0 auto;border-radius:50%;display:grid;place-items:center;font-size:12.5px;font-weight:650;font-variant-numeric:tabular-nums;background:var(--surface);color:var(--text-muted);border:2px solid var(--border);position:relative;z-index:1}.nw-flow-step.on .nw-flow-dot{background:var(--brand);border-color:var(--brand);color:#fff}.nw-flow-step.done .nw-flow-dot{background:var(--success-text);border-color:var(--success-text);color:#fff}.nw-flow-label{font-size:12px;color:var(--text-secondary);margin-top:8px;line-height:1.35}.nw-flow-step.on .nw-flow-label,.nw-flow-step.done .nw-flow-label{color:var(--text);font-weight:500}.nw-exits{display:flex;gap:18px;flex-wrap:wrap;margin-top:16px;padding-top:13px;border-top:1px solid var(--hairline);font-size:12.5px;color:var(--text-muted)}.nw-exit{display:inline-flex;align-items:center;gap:7px}.nw-exit b{font-variant-numeric:tabular-nums;color:var(--text-muted);font-weight:600}.nw-exit.raised{color:var(--text)}.nw-exit.raised b{color:var(--danger-text)}.nw-exit-dot{width:7px;height:7px;border-radius:50%;background:var(--border-strong)}.nw-exit.raised .nw-exit-dot{background:var(--danger-text)}.nw-bars{display:flex;flex-direction:column;gap:9px}.nw-bar{display:grid;grid-template-columns:minmax(92px,33%) 1fr 58px;align-items:center;gap:10px;font-size:12.5px}.nw-bar-label{color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nw-bar-track{height:8px;background:var(--surface-alt);border-radius:999px;overflow:hidden}.nw-bar-fill{display:block;height:100%;border-radius:999px;background:var(--brand)}.nw-bar-fill.ok{background:var(--success-text)}.nw-bar-fill.warn{background:var(--warning-text)}.nw-bar-fill.bad{background:var(--danger-text)}.nw-bar-value{text-align:right;font-variant-numeric:tabular-nums;color:var(--text);font-weight:500}.nw-bar-value.muted{color:var(--text-muted);font-weight:400;font-size:11.5px}@media (max-width: 760px){.nw-flow{grid-template-columns:repeat(2,1fr);row-gap:18px}.nw-flow:before{display:none}}.st-barcard{margin-top:14px;padding:16px 18px 14px}.st-bar{display:flex;width:100%;height:30px;border-radius:7px;overflow:hidden;background:var(--surface-2, #f1f2f6)}.st-seg{display:flex;align-items:center;justify-content:center;min-width:0;font-size:11.5px;font-weight:600;color:#fff;white-space:nowrap;transition:filter .15s ease}.st-seg:hover{filter:brightness(1.07)}.st-seg-label{overflow:hidden;text-overflow:ellipsis;padding:0 6px}.st-seg.school{background:#2f6fd0}.st-seg.p-a{background:#8e5cd9}.st-seg.p-b{background:#e08131}.st-seg.p-c{background:#d94f8a}.st-seg.p-d{background:#e0b021}.st-seg.p-e{background:#2fa39b}.st-seg.p-f{background:#6b7a8f}.st-bar-note{margin:9px 0 0;font-size:12px;color:var(--text-muted)}.st-dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:5px;vertical-align:middle}.st-dot.p-a{background:#8e5cd9}.st-dot.p-b{background:#e08131}.st-dot.p-c{background:#d94f8a}.st-dot.p-d{background:#e0b021}.st-dot.p-e{background:#2fa39b}.st-dot.p-f{background:#6b7a8f}.st-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:14px 16px 10px}.st-cfg .st-head{padding:0 0 4px}.seg{display:inline-flex;border:1px solid var(--border);border-radius:7px;overflow:hidden;flex:none}.seg button{border:0;background:transparent;padding:6px 13px;font-size:12.5px;color:var(--text-muted);cursor:pointer}.seg button.on{background:var(--brand, #2f6fd0);color:#fff;font-weight:500}.seg button:not(.on):hover{background:var(--surface-2, #f1f2f6);color:var(--text)}.st-table td .nw-codes{margin-top:2px}.st-row{cursor:pointer}.st-row:hover{background:var(--surface-2, #f7f8fa)}.st-caret{display:inline-flex;width:16px;margin-right:4px;color:var(--text-muted);transition:transform .15s ease;vertical-align:middle}.st-caret.open{transform:rotate(90deg)}.st-sub td{background:var(--surface-2, #fafbfc);font-size:12.5px}.st-indent{display:inline-block;width:20px}.st-cfg{margin-top:14px;padding:16px 18px}.st-cfg-note{margin:4px 0 14px;font-size:12.5px;color:var(--text-muted);max-width:72ch}.st-split-row{display:flex;align-items:flex-end;gap:14px;flex-wrap:wrap}.st-split-row .field{display:flex;flex-direction:column;gap:5px}.st-split-row .field>span{font-size:12px;color:var(--text-muted)}.st-pct{display:flex;align-items:center;gap:4px;border:1px solid var(--border);border-radius:7px;padding:7px 10px;background:var(--surface)}.st-pct input{border:0;width:72px;font-size:15px;font-weight:600;background:transparent}.st-pct input:focus{outline:none}.st-pct.derived{background:var(--surface-2, #f7f8fa)}.st-pct.derived strong{font-size:15px;width:72px}.st-pct.ok{border-color:#2fa36b}.st-pct.bad{border-color:#d9534f}.st-plus,.st-eq{font-size:17px;color:var(--text-muted);padding-bottom:10px}.st-in{width:100%;border:1px solid transparent;border-radius:6px;padding:5px 7px;font-size:13px;background:transparent;color:var(--text)}.st-in:hover:not(:disabled){border-color:var(--border)}.st-in:focus{outline:none;border-color:var(--brand, #2f6fd0);background:var(--surface)}.st-in:disabled{color:var(--text-muted)}.st-in.num{text-align:right;font-variant-numeric:tabular-nums}.st-muted{color:var(--text-muted);font-size:12.5px}.st-bad td{color:#d9534f}.st-del{border:0;background:transparent;color:var(--text-muted);cursor:pointer;padding:2px 4px;margin-left:8px;vertical-align:middle}.st-del:hover{color:#d9534f}.st-actions{display:flex;justify-content:flex-end;padding-top:14px}@media (max-width: 760px){.st-head{flex-direction:column;gap:10px}.st-seg-label{font-size:10px}.st-split-row{gap:10px}.st-plus,.st-eq{display:none}}.st-own{font-weight:600;font-size:12.5px}.st-pct.sm{padding:2px 8px}.st-pct.sm input{width:58px;font-size:13.5px}.st-ed{padding:12px 4px 14px;font-size:13px}.st-ed-block+.st-ed-block{margin-top:16px}.st-ed-head{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);margin-bottom:8px}.st-choice{display:flex;align-items:center;gap:8px;padding:4px 0;cursor:pointer}.st-choice input[type=radio]{margin:0;cursor:pointer}.st-choice>span{line-height:1.4}.st-ed-table{margin-top:10px;background:var(--surface)}.st-ed-table th,.st-ed-table td{font-size:12.5px}.st-ed-actions{display:flex;align-items:center;gap:8px;margin-top:18px;padding-top:14px;border-top:1px solid var(--border-subtle, #eceef1)}.st-ed-gap{flex:1}.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(124px,1fr));gap:10px}.gal-item{margin:0;position:relative}.gal-thumb{display:block;width:100%;aspect-ratio:4 / 3;padding:0;overflow:hidden;border:1px solid var(--border-strong);border-radius:var(--r-md);background:var(--surface-alt);cursor:zoom-in;transition:border-color .12s ease,box-shadow .12s ease}.gal-thumb:hover{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.gal-thumb:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.gal-thumb img{width:100%;height:100%;object-fit:cover;display:block}.gal-fallback{display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-size:11.5px;color:var(--text-faint)}.gal-item figcaption{margin-top:5px;font-size:11px;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gal-del{position:absolute;top:5px;right:5px;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border:none;border-radius:var(--r-sm);background:#1118279e;color:#fff;cursor:pointer;opacity:0;transition:opacity .12s ease}.gal-item:hover .gal-del,.gal-del:focus-visible{opacity:1}.gal-del:hover{background:var(--danger, #b3261e)}.gal-empty{font-size:12.5px;color:var(--text-faint)}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1200;display:flex;align-items:center;justify-content:center;gap:10px;padding:28px 64px;background:#0c1016db;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.lb-stage{margin:0;max-width:100%;max-height:100%;display:flex;flex-direction:column;align-items:center;gap:12px}.lb-stage img{max-width:100%;max-height:calc(100vh - 140px);object-fit:contain;border-radius:var(--r-md);background:#0c1016}.lb-stage figcaption{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:center;color:#e8ebf0;font-size:12.5px}.lb-name{font-weight:600}.lb-meta{color:#9aa4b2;font-variant-numeric:tabular-nums}.lb-close,.lb-nav{display:flex;align-items:center;justify-content:center;border:1px solid rgba(255,255,255,.22);background:#ffffff14;color:#fff;border-radius:50%;cursor:pointer;transition:background .12s ease}.lb-close:hover,.lb-nav:hover{background:#fff3}.lb-close:focus-visible,.lb-nav:focus-visible{outline:2px solid #fff;outline-offset:2px}.lb-close{position:absolute;top:18px;right:18px;width:38px;height:38px}.lb-nav{position:absolute;top:50%;transform:translateY(-50%);width:46px;height:46px}.lb-prev{left:14px}.lb-next{right:14px}@media (max-width: 640px){.lightbox{padding:16px 10px 20px}.lb-nav{width:38px;height:38px}.lb-prev{left:4px}.lb-next{right:4px}.lb-stage img{max-height:calc(100vh - 170px)}}.pager{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:12px 16px;border-top:1px solid var(--hairline);background:var(--surface-alt);font-size:12.5px;color:var(--text-muted)}.pager-count{margin-right:auto;font-variant-numeric:tabular-nums}.pager-count strong{color:var(--text);font-weight:600}.pager-controls{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.pager-num{min-width:30px;height:30px;padding:0 7px;border:1px solid transparent;border-radius:var(--r-sm);background:transparent;color:var(--text-muted);font-size:12.5px;font-variant-numeric:tabular-nums;cursor:pointer}.pager-num:hover{background:var(--surface);border-color:var(--border);color:var(--text)}.pager-num.active{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:600}.pager-num:focus-visible{outline:2px solid var(--brand);outline-offset:1px}.pager-gap{padding:0 2px;color:var(--text-faint)}.pager-size{display:flex;align-items:center;gap:7px;white-space:nowrap}.pager-size .form-control{width:auto;height:30px;padding:0 26px 0 9px;font-size:12.5px}@media (max-width: 640px){.pager{gap:10px}.pager-count{margin-right:0;width:100%}}td.num-cell{width:104px;padding-left:10px;padding-right:10px}.form-control.num{padding:0 6px;text-align:center}.form-control.num::-webkit-outer-spin-button,.form-control.num::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.form-control.num{-moz-appearance:textfield}.num-na{color:var(--text-faint);text-align:center;display:block}.att-tone-present{background:var(--success-soft);color:var(--success-text)}.att-tone-half{background:var(--warning-soft);color:var(--warning-text)}.att-tone-absent{background:var(--danger-soft);color:var(--danger-text)}.att-tone-leave{background:var(--purple-soft);color:var(--purple)}.att-tone-holiday{background:var(--brand-soft);color:var(--brand)}.att-tone-off{background:var(--hairline);color:var(--text-muted)}.att-tone-pending,.att-tone-future{background:var(--surface);color:var(--text-faint)}.att-tone-none{background:repeating-linear-gradient(135deg,var(--surface),var(--surface) 4px,var(--hairline) 4px,var(--hairline) 6px);color:var(--text-faint)}.clock-card{display:flex;flex-direction:column;gap:14px}.clock-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}.clock-date{font-size:13px;color:var(--text-muted)}.clock-hello{font-size:15px;font-weight:600}.clock-figure{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.clock-worked{font-size:34px;font-weight:650;letter-spacing:-.02em;line-height:1.1;font-variant-numeric:tabular-nums}.clock-worked-label{font-size:12.5px;color:var(--text-muted)}.clock-meta{display:flex;gap:18px;flex-wrap:wrap;font-size:12.5px;color:var(--text-secondary)}.clock-meta strong{color:var(--text);font-weight:600}.clock-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.clock-actions .btn{min-width:150px;justify-content:center}.clock-note{font-size:12.5px;color:var(--text-muted)}.clock-punches{display:flex;gap:6px;flex-wrap:wrap}.clock-punch{font-size:11.5px;padding:2px 8px;border-radius:var(--r-pill);background:var(--canvas);color:var(--text-secondary);border:1px solid var(--hairline);font-variant-numeric:tabular-nums}.clock-pulse{width:8px;height:8px;border-radius:50%;background:var(--success);display:inline-block;margin-right:6px;box-shadow:0 0 #1fa94a80;animation:att-pulse 1.8s infinite}@keyframes att-pulse{0%{box-shadow:0 0 #1fa94a73}70%{box-shadow:0 0 0 7px #1fa94a00}to{box-shadow:0 0 #1fa94a00}}.att-month-nav{display:inline-flex;align-items:center;gap:6px}.att-month-nav .att-month-label{min-width:132px;text-align:center;font-weight:600;font-size:13.5px}.att-filters{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.att-filters select.form-control{width:auto;min-width:170px;height:38px}.att-grid-wrap{overflow-x:auto}table.att-grid{border-collapse:separate;border-spacing:0;font-size:12px;width:max-content;min-width:100%}table.att-grid th,table.att-grid td{border-bottom:1px solid var(--hairline)}table.att-grid thead th{background:var(--surface-alt);color:var(--text-muted);font-weight:600;font-size:11px;padding:7px 0;text-align:center;white-space:nowrap;border-top:1px solid var(--hairline)}table.att-grid thead th .att-dow{display:block;font-weight:500;font-size:10px;color:var(--text-faint)}table.att-grid thead th.att-today,table.att-grid thead th.att-today .att-dow{color:var(--brand)}table.att-grid .att-person{position:sticky;left:0;z-index:1;background:var(--surface);text-align:left;padding:8px 14px 8px 18px;min-width:210px;max-width:240px;border-right:1px solid var(--hairline)}table.att-grid thead .att-person{background:var(--surface-alt);z-index:2}.att-person-name{font-weight:600;font-size:13px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.att-person-sub{font-size:11.5px;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}table.att-grid td.att-cell{padding:3px 1px;text-align:center}.att-chip{position:relative;width:28px;height:26px;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;font-size:10.5px;font-weight:650;letter-spacing:.01em;border:1px solid transparent;cursor:pointer;padding:0;font-family:inherit}.att-chip:hover{border-color:var(--brand-border)}.att-chip:focus-visible{outline:2px solid var(--brand);outline-offset:1px}.att-chip[disabled]{cursor:default}.att-chip[disabled]:hover{border-color:transparent}.att-chip .att-late,.att-chip .att-flag{position:absolute;top:2px;width:5px;height:5px;border-radius:50%}.att-chip .att-late{left:2px;background:var(--warning)}.att-chip .att-flag{right:2px;background:var(--danger)}.att-chip.att-fixed{box-shadow:inset 0 -2px 0 var(--brand)}table.att-grid td.att-sum,table.att-grid th.att-sum{padding:6px 10px;text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}table.att-grid th.att-sum{text-align:right}table.att-grid td.att-sum:first-of-type,table.att-grid th.att-sum-first{border-left:1px solid var(--hairline)}table.att-grid tbody tr:hover td,table.att-grid tbody tr:hover td.att-person{background:var(--surface-alt)}.att-legend{display:flex;flex-wrap:wrap;gap:8px 16px;font-size:12px;color:var(--text-secondary);padding:12px 18px;border-top:1px solid var(--hairline)}.att-legend-item{display:inline-flex;align-items:center;gap:6px}.att-legend-swatch{width:22px;height:18px;border-radius:5px;display:inline-flex;align-items:center;justify-content:center;font-size:9.5px;font-weight:650;position:relative}.att-legend .att-late,.att-legend .att-flag{position:absolute;top:2px;width:5px;height:5px;border-radius:50%}.att-legend .att-late{left:2px;background:var(--warning)}.att-legend .att-flag{right:2px;background:var(--danger)}.att-cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}.att-cal-head{font-size:11px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;text-align:center;padding-bottom:2px}.att-cal-day{position:relative;min-height:64px;border-radius:var(--r-sm);padding:6px 8px;border:1px solid var(--hairline);text-align:left;font-family:inherit;cursor:pointer;display:flex;flex-direction:column;justify-content:space-between;gap:2px}.att-cal-day:hover:not([disabled]){border-color:var(--brand-border)}.att-cal-day[disabled]{cursor:default}.att-cal-day.att-is-today{border-color:var(--brand);box-shadow:0 0 0 1px var(--brand) inset}.att-cal-num{font-size:12.5px;font-weight:650}.att-cal-label{font-size:10.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.att-cal-hours{font-size:10.5px;opacity:.85;font-variant-numeric:tabular-nums}.att-cal-day .att-late,.att-cal-day .att-flag{position:absolute;top:6px;width:6px;height:6px;border-radius:50%}.att-cal-day .att-late{right:16px;background:var(--warning)}.att-cal-day .att-flag{right:7px;background:var(--danger)}.att-cal-blank{min-height:64px}.att-detail-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}.att-section-title{font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;margin:18px 0 8px}.att-fix-box{border:1px solid var(--brand-border);background:var(--brand-softer);border-radius:var(--r-md);padding:14px 14px 2px}.att-errorlog{background:var(--canvas);border:1px solid var(--hairline);border-radius:var(--r-sm);padding:10px 12px;font-size:12px;max-height:220px;overflow:auto;white-space:pre-wrap;margin:8px 0 0}@media (max-width: 720px){.att-cal{gap:4px}.att-cal-day{min-height:52px;padding:4px 5px}.att-cal-label,.att-cal-hours{display:none}.clock-actions .btn{min-width:0;flex:1}}.att-filters .form-group{display:flex;align-items:center;gap:6px;margin:0}.att-filters .form-group label{margin:0;white-space:nowrap}.ppl-tabs{display:flex;gap:2px;padding:0 12px;border-bottom:1px solid var(--hairline);overflow-x:auto;scrollbar-width:none}.ppl-tabs::-webkit-scrollbar{display:none}.ppl-tab{display:inline-flex;align-items:center;gap:7px;padding:13px 12px 12px;border:none;background:none;border-bottom:2px solid transparent;font:inherit;font-size:13.5px;font-weight:500;color:var(--text-muted);cursor:pointer;white-space:nowrap;margin-bottom:-1px}.ppl-tab:hover{color:var(--text)}.ppl-tab.active{color:var(--brand);border-bottom-color:var(--brand);font-weight:600}.ppl-tab .count{font-size:11px;font-weight:600;background:var(--hairline);color:var(--text-muted);border-radius:var(--r-pill);padding:0 7px;line-height:1.6}.ppl-hero{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:18px}.ppl-hero-av{width:58px;height:58px;border-radius:50%;background:var(--brand-soft);color:var(--brand);border:1px solid var(--brand-border);display:flex;align-items:center;justify-content:center;font-weight:650;font-size:19px;flex-shrink:0}.ppl-hero-main{flex:1;min-width:200px}.ppl-hero-name{font-size:18px;font-weight:650;display:flex;align-items:center;gap:9px;flex-wrap:wrap}.ppl-hero-meta{font-size:13px;color:var(--text-muted);margin-top:3px;display:flex;gap:14px;flex-wrap:wrap}.ppl-hero-actions{display:flex;gap:8px;flex-wrap:wrap}.ppl-kv{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px 22px}.ppl-kv dt{font-size:11.5px;font-weight:600;letter-spacing:.03em;text-transform:uppercase;color:var(--text-faint)}.ppl-kv dd{margin:4px 0 0;font-size:13.5px;color:var(--text);word-break:break-word}.ppl-kv dd.muted{color:var(--text-faint)}.ppl-subhead{font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);margin:22px 0 12px}.ppl-subhead:first-child{margin-top:0}.ppl-filters{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.ppl-filters .form-control{height:38px;width:auto;min-width:150px}.ppl-steps{display:flex;gap:8px;margin-bottom:18px;flex-wrap:wrap}.ppl-step{flex:1 1 160px;display:flex;align-items:center;gap:10px;padding:12px 14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);cursor:pointer;text-align:left;font:inherit;color:var(--text-secondary)}.ppl-step:hover{border-color:var(--brand-border)}.ppl-step.active{border-color:var(--brand);background:var(--brand-softer);color:var(--brand)}.ppl-step .num{width:26px;height:26px;border-radius:50%;background:var(--hairline);color:var(--text-muted);display:flex;align-items:center;justify-content:center;font-size:12.5px;font-weight:650;flex-shrink:0}.ppl-step.active .num{background:var(--brand);color:#fff}.ppl-step.done .num{background:var(--success-soft);color:var(--success-text)}.ppl-step .label{font-size:13.5px;font-weight:600;display:block}.ppl-step .hint{font-size:11.5px;color:var(--text-muted);display:block}.ppl-docs{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:12px}.ppl-doc{border:1px solid var(--border);border-radius:var(--r-md);padding:13px 14px;background:var(--surface);display:flex;flex-direction:column;gap:9px}.ppl-doc.missing{border-style:dashed;background:var(--surface-alt)}.ppl-doc.rejected{border-color:#fda29b}.ppl-doc-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.ppl-doc-title{font-size:13.5px;font-weight:600}.ppl-doc-title .req{color:var(--danger);margin-left:2px}.ppl-doc-sub{font-size:12px;color:var(--text-muted)}.ppl-doc-file{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--text-secondary);background:var(--canvas);border-radius:var(--r-sm);padding:6px 8px}.ppl-doc-file span.name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ppl-doc-reason{font-size:12px;color:var(--danger-text);background:var(--danger-soft);border-radius:var(--r-sm);padding:6px 8px}.ppl-doc-actions{display:flex;gap:6px;flex-wrap:wrap}.ppl-review{display:grid;grid-template-columns:340px 1fr;gap:16px;align-items:start}.ppl-review-list{max-height:70vh;overflow-y:auto}.ppl-review-item{display:flex;align-items:center;gap:10px;padding:11px 16px;border:none;border-bottom:1px solid var(--hairline);background:none;width:100%;text-align:left;font:inherit;cursor:pointer}.ppl-review-item:hover{background:var(--surface-alt)}.ppl-review-item.active{background:var(--brand-softer);box-shadow:inset 3px 0 0 var(--brand)}.ppl-review-item .main{flex:1;min-width:0}.ppl-review-item .t{font-size:13.5px;font-weight:550;display:block}.ppl-review-item .s{font-size:12px;color:var(--text-muted);display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ppl-preview{background:var(--canvas);border:1px solid var(--border);border-radius:var(--r-md);min-height:420px;display:flex;align-items:center;justify-content:center;overflow:hidden}.ppl-preview img{max-width:100%;max-height:64vh;object-fit:contain;display:block}.ppl-preview iframe{width:100%;height:64vh;border:none;background:#fff}.ppl-progress{display:flex;align-items:center;gap:8px;min-width:120px}.ppl-progress .bar-track{flex:1}.ppl-progress span{font-size:12px;color:var(--text-muted);white-space:nowrap}.ppl-exp-row{display:grid;grid-template-columns:1.4fr 1fr 150px 150px 36px;gap:10px;align-items:end;padding:12px 0;border-bottom:1px solid var(--hairline)}.ppl-exp-row .form-group{margin-bottom:0}.ppl-awaiting{text-align:center;padding:48px 20px}.ppl-awaiting .es-icon{width:56px;height:56px;margin:0 auto 14px;border-radius:16px;background:var(--brand-soft);color:var(--brand);display:flex;align-items:center;justify-content:center}.ppl-awaiting h2{font-size:19px;margin-bottom:6px}.ppl-awaiting p{color:var(--text-muted);max-width:520px;margin:0 auto;line-height:1.55}@media (max-width: 900px){.ppl-review{grid-template-columns:1fr}.ppl-exp-row{grid-template-columns:1fr 1fr}}.lv-strip{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px;margin-bottom:18px}.lv-bal{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-card);box-shadow:var(--shadow-xs);padding:15px 16px}.lv-bal-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.lv-bal-name{font-size:13px;color:var(--text-secondary);font-weight:500}.lv-code{font-size:11px;font-weight:700;letter-spacing:.04em;padding:2px 7px;border-radius:var(--r-sm);background:var(--brand-soft);color:var(--brand)}.lv-code.unpaid{background:var(--warning-soft);color:var(--warning-text)}.lv-bal-value{font-size:26px;font-weight:650;letter-spacing:-.02em;margin-top:8px;line-height:1.15}.lv-bal-value small{font-size:12.5px;font-weight:500;color:var(--text-muted);margin-left:4px;letter-spacing:0}.lv-bal-foot{font-size:12px;color:var(--text-muted);margin-top:6px;display:flex;gap:10px;flex-wrap:wrap}.lv-bal-foot b{color:var(--text-secondary);font-weight:600}.lv-tabs{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:14px}.lv-tabs .seg button{display:inline-flex;align-items:center;gap:6px}.lv-count{min-width:18px;height:18px;padding:0 5px;border-radius:var(--r-pill);background:var(--danger);color:#fff;font-size:11px;font-weight:700;display:inline-flex;align-items:center;justify-content:center}.lv-filters{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.lv-filters .form-control{width:auto;min-width:150px;height:38px}.lv-days{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 14px}.lv-day{display:flex;flex-direction:column;align-items:center;min-width:58px;padding:6px 8px;border-radius:var(--r-sm);border:1px solid var(--border);background:var(--surface);font-size:11.5px;line-height:1.3}.lv-day strong{font-size:13.5px;font-weight:650}.lv-day span{color:var(--text-muted)}.lv-day em{font-style:normal;font-weight:600;font-size:10.5px;margin-top:2px}.lv-day.leave{background:var(--brand-soft);border-color:var(--brand-border)}.lv-day.leave em{color:var(--brand)}.lv-day.sandwich{background:var(--warning-soft);border-color:#fec84b}.lv-day.sandwich em{color:var(--warning-text)}.lv-day.excluded{background:var(--canvas);border-style:dashed}.lv-day.excluded strong,.lv-day.excluded em{color:var(--text-faint)}.lv-sum{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:10px;padding:12px 14px;border:1px solid var(--hairline);border-radius:var(--r-md);background:var(--surface-alt);margin-bottom:14px}.lv-sum div{font-size:12px;color:var(--text-muted)}.lv-sum b{display:block;font-size:16px;color:var(--text);font-weight:650;margin-top:2px}.lv-sum b.bad{color:var(--danger-text)}.lv-list{margin:0;padding-left:18px}.lv-list li+li{margin-top:3px}.lv-cal-head{display:flex;align-items:center;gap:10px}.lv-cal-head .lv-month{font-weight:600;min-width:130px;text-align:center}.lv-cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.lv-cal-dow{padding:8px 10px;font-size:11.5px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);background:var(--surface-alt);border-bottom:1px solid var(--hairline)}.lv-cal-cell{min-height:96px;padding:6px 7px;border-right:1px solid var(--hairline);border-bottom:1px solid var(--hairline);display:flex;flex-direction:column;gap:3px;min-width:0}.lv-cal-cell:nth-child(7n){border-right:none}.lv-cal-cell.out{background:var(--canvas)}.lv-cal-cell.today .lv-cal-num{background:var(--brand);color:#fff}.lv-cal-num{align-self:flex-start;font-size:12px;font-weight:600;color:var(--text-secondary);min-width:22px;height:22px;padding:0 5px;border-radius:var(--r-pill);display:inline-flex;align-items:center;justify-content:center}.lv-cal-hol{font-size:11px;color:var(--purple);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lv-cal-item{font-size:11px;line-height:1.35;padding:2px 6px;border-radius:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:var(--success-soft);color:var(--success-text)}.lv-cal-item.pending{background:var(--warning-soft);color:var(--warning-text)}.lv-cal-more{font-size:11px;color:var(--text-muted)}@media (max-width: 720px){.lv-cal-cell{min-height:64px}.lv-cal-item{font-size:10px}}table.table td.lv-cell{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}table.table th.lv-cell{text-align:right}.lv-cell .lv-avail{font-weight:650;font-size:14px}.lv-cell .lv-avail.neg{color:var(--danger-text)}.lv-cell .lv-sub{display:block;font-size:11px;color:var(--text-muted)}.lv-rule{display:inline-block;font-size:11.5px;color:var(--text-secondary);background:var(--hairline);border-radius:var(--r-sm);padding:1px 7px;margin:1px 4px 1px 0;white-space:nowrap}.lv-section-title{font-size:13px;font-weight:600;color:var(--text-secondary);margin:4px 0 8px}.pr-num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}table.table th.pr-num{text-align:right}.pr-row-link{cursor:pointer}.pr-stepper{display:flex;align-items:center;gap:0;flex-wrap:wrap;padding:4px 0}.pr-step{display:flex;align-items:center;gap:8px;color:var(--text-muted);font-size:13px;font-weight:500}.pr-step .pr-dot{width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:2px solid var(--border-strong);background:var(--surface);font-size:12px;font-weight:700;color:var(--text-muted)}.pr-step.done .pr-dot{background:var(--brand);border-color:var(--brand);color:#fff}.pr-step.current .pr-dot{border-color:var(--brand);color:var(--brand);background:var(--brand-soft)}.pr-step.done,.pr-step.current{color:var(--text)}.pr-line{width:42px;height:2px;background:var(--border-strong);margin:0 10px}.pr-line.done{background:var(--brand)}.pr-split{display:grid;grid-template-columns:1fr 1fr;gap:18px}.pr-split h4{margin:0 0 6px;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted)}.pr-line-item{display:flex;justify-content:space-between;padding:6px 0;border-bottom:1px solid var(--hairline);font-size:13.5px}.pr-line-item span:first-child{color:var(--text-secondary)}.pr-line-item.total{font-weight:700;border-bottom:none;border-top:1px solid var(--border-strong)}.pr-net{margin-top:14px;padding:12px 14px;border-radius:var(--r-md);background:var(--brand-soft);display:flex;justify-content:space-between;align-items:center;gap:12px}.pr-net .pr-net-amount{font-size:20px;font-weight:700;color:var(--brand);white-space:nowrap}.pr-net .pr-words{font-size:12px;color:var(--text-secondary);font-style:italic;margin-top:2px}.pr-timeline{list-style:none;margin:0;padding:0}.pr-timeline li{position:relative;padding:0 0 14px 22px;font-size:13px}.pr-timeline li:before{content:"";position:absolute;left:5px;top:5px;width:8px;height:8px;border-radius:50%;background:var(--brand)}.pr-timeline li:after{content:"";position:absolute;left:8px;top:15px;bottom:0;width:2px;background:var(--hairline)}.pr-timeline li:last-child:after{display:none}.pr-timeline li.rejected:before{background:var(--danger)}.pr-timeline .pr-when{color:var(--text-muted);font-size:12px}.pr-timeline .pr-comment{color:var(--text-secondary);margin-top:2px}.pr-actions{display:flex;gap:8px;flex-wrap:wrap}.pr-muted-note{font-size:12.5px;color:var(--text-muted)}@media (max-width: 640px){.pr-split{grid-template-columns:1fr}.pr-line{width:16px;margin:0 6px}.pr-step .pr-label{display:none}}
