:root{--color-surface:#fff;--color-surface-2:#f8fafc;--color-primary:#204474;--color-secondary:#7f2f7d;--color-text:#1e293b;--color-muted:#64748b;--color-border:#e2e8f0;--gradient-brand:linear-gradient(135deg,#204474,#4a3a8f 50%,#7f2f7d);--gradient-brand-soft:linear-gradient(135deg,rgba(32,68,116,.08),rgba(127,47,125,.08));--shadow-card:0 1px 2px rgba(15,23,42,.04),0 1px 3px rgba(15,23,42,.06);--shadow-pop:0 10px 30px rgba(15,23,42,.18)}[data-theme=dark]{--color-surface:#1e293b;--color-surface-2:#253249;--color-text:#e2e8f0;--color-muted:#94a3b8;--color-border:#334155;--gradient-brand-soft:linear-gradient(135deg,rgba(32,68,116,.25),rgba(127,47,125,.25));--shadow-card:0 1px 3px rgba(0,0,0,.4);--shadow-pop:0 10px 30px rgba(0,0,0,.55)}*{box-sizing:border-box}body,html{margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:14px;line-height:1.5;color:var(--color-text);background:var(--gradient-brand-soft),#f4f6fb;background-attachment:fixed}[data-theme=dark] body{background:#0f172a}a{color:var(--color-primary);text-decoration:none}[data-theme=dark] a{color:#93c5fd}a:hover{text-decoration:underline}.boot{padding:3rem;color:var(--color-muted)}.shell{display:flex;min-height:100vh}.sidebar{width:218px;flex:0 0 218px;background:var(--gradient-brand);color:#fff;display:flex;flex-direction:column;padding:1rem .7rem;position:-webkit-sticky;position:sticky;top:0;height:100vh;overflow-y:auto;z-index:30;transition:width .2s ease,flex-basis .2s ease,padding .2s ease}.sidebar.collapsed{width:60px;flex-basis:60px;padding:1rem .35rem}.brand{display:flex;align-items:center;gap:.5rem;padding:0 .35rem 1rem}.brand-text{display:flex;flex-direction:column;min-width:0}.brand-text strong{color:#fff;font-size:.98rem;letter-spacing:-.01em;white-space:nowrap}.brand-text span{font-size:.68rem;color:hsla(0,0%,100%,.55);text-transform:uppercase;letter-spacing:.09em;white-space:nowrap}.sidebar.collapsed .brand-text{display:none}.sidebar.collapsed .brand{justify-content:center;padding:0 0 1rem}.logo-badge{width:30px;height:30px;border-radius:8px;background:hsla(0,0%,100%,.16);border:1px solid hsla(0,0%,100%,.28);font-weight:700;font-size:.82rem}.collapse-btn,.logo-badge{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;color:#fff}.collapse-btn{margin-left:auto;background:hsla(0,0%,100%,.15);border:1px solid hsla(0,0%,100%,.3);border-radius:5px;width:24px;height:24px;cursor:pointer;font-size:.85rem;line-height:1;transition:background .15s,border-color .15s}.collapse-btn:hover{background:hsla(0,0%,100%,.3);border-color:hsla(0,0%,100%,.6)}.sidebar.collapsed .collapse-btn{margin-left:0}.sidebar nav{display:flex;flex-direction:column;gap:.12rem;flex:1 1}.nav-item{display:flex;align-items:center;gap:.55rem;color:#dbe4f5;font-size:.88rem;padding:.52rem .6rem;border-radius:6px;white-space:nowrap;transition:background .12s,color .12s}.nav-item:hover{background:hsla(0,0%,100%,.09);color:#fff;text-decoration:none}.nav-item.active{background:hsla(0,0%,100%,.16);color:#fff;font-weight:600}.nav-icon{width:18px;flex-shrink:0;text-align:center;font-size:.95rem;opacity:.9}.nav-label{flex:1 1;overflow:hidden;text-overflow:ellipsis}.sidebar.collapsed .nav-label{display:none}.sidebar.collapsed .nav-item{justify-content:center;padding:.52rem;gap:0;position:relative}.nav-count{background:linear-gradient(135deg,#b91c1c,#f87171);color:#fff;border-radius:999px;padding:0 .4rem;font-size:.68rem;font-weight:700;min-width:1.15rem;text-align:center;flex-shrink:0}.sidebar.collapsed .nav-count{position:absolute;top:2px;right:2px;padding:0 .25rem;font-size:.6rem;min-width:.95rem}.sidebar-foot{margin-top:auto;border-top:1px solid hsla(0,0%,100%,.14);padding-top:.8rem;display:flex;flex-direction:column;gap:.3rem}.sidebar-foot .who{color:#fff;font-size:.82rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-foot .role{font-size:.65rem;color:hsla(0,0%,100%,.55);letter-spacing:.07em;margin-bottom:.25rem}.sidebar-action{background:hsla(0,0%,100%,.1);border:1px solid hsla(0,0%,100%,.22);color:#e6ecf8;border-radius:6px;padding:.4rem .55rem;font-size:.8rem;font-family:inherit;cursor:pointer;display:flex;align-items:center;gap:.45rem;white-space:nowrap;transition:background .12s}.sidebar-action:hover{background:hsla(0,0%,100%,.2);color:#fff}.sidebar.collapsed .sidebar-action .label,.sidebar.collapsed .sidebar-foot .role,.sidebar.collapsed .sidebar-foot .who{display:none}.sidebar.collapsed .sidebar-action{justify-content:center;padding:.4rem;gap:0}.content{flex:1 1;min-width:0;padding:1.5rem 1.75rem 4rem}.mobile-topbar,.sidebar-backdrop{display:none}@media (max-width:880px){.shell{flex-direction:column}.mobile-topbar{display:flex;align-items:center;gap:.7rem;background:var(--gradient-brand);color:#fff;padding:.6rem .9rem;position:-webkit-sticky;position:sticky;top:0;z-index:40}.mobile-topbar strong{font-size:.95rem}.mobile-topbar .spacer{margin-left:auto}.hamburger-btn{background:transparent;border:1px solid hsla(0,0%,100%,.5);color:#fff;border-radius:6px;padding:.3rem .55rem;font-size:1.05rem;line-height:1;cursor:pointer}.sidebar{position:fixed;top:0;left:0;height:100vh;width:232px;flex-basis:auto;transform:translateX(-100%);transition:transform .18s ease;z-index:50}.sidebar.open{transform:translateX(0)}.sidebar.collapsed{width:232px;padding:1rem .7rem}.sidebar.collapsed .nav-label,.sidebar.collapsed .sidebar-action .label,.sidebar.collapsed .sidebar-foot .role,.sidebar.collapsed .sidebar-foot .who{display:block}.sidebar.collapsed .brand-text{display:flex}.sidebar.collapsed .brand{justify-content:flex-start;padding:0 .35rem 1rem}.sidebar.collapsed .logo-badge{display:inline-flex}.sidebar.collapsed .nav-item,.sidebar.collapsed .sidebar-action{justify-content:flex-start;padding:.52rem .6rem;gap:.55rem}.collapse-btn{display:none}.sidebar-backdrop.show{display:block;position:fixed;inset:0;background:rgba(15,23,42,.5);z-index:45}.content{padding:1rem .9rem 3rem}}.page-head{margin-bottom:1.15rem;display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;flex-wrap:wrap}h1{font-size:1.4rem;margin:0 0 .2rem;letter-spacing:-.015em;background:var(--gradient-brand);-webkit-background-clip:text;background-clip:text;color:transparent}[data-theme=dark] h1{background:none;color:var(--color-text)}h2{font-size:.98rem;margin:0;color:var(--color-text)}.subtitle{color:var(--color-muted);margin:0;font-size:.87rem}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:10px;padding:.9rem 1.05rem 1.05rem;margin-bottom:1rem;box-shadow:var(--shadow-card)}.card-head{align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.8rem}.card-actions,.card-head{display:flex;flex-wrap:wrap}.card-actions{gap:.4rem}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(168px,1fr));grid-gap:.7rem;gap:.7rem;margin-bottom:1rem}.stat{background:var(--color-surface);border:1px solid var(--color-border);border-radius:10px;padding:.8rem .95rem;display:flex;flex-direction:column;gap:.1rem;box-shadow:var(--shadow-card);position:relative;overflow:hidden}.stat:before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:var(--gradient-brand)}.stat-label{font-size:.71rem;text-transform:uppercase;letter-spacing:.05em;color:var(--color-muted);font-weight:600}.stat-value{font-size:1.45rem;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;letter-spacing:-.02em;color:var(--color-primary)}[data-theme=dark] .stat-value{color:#93c5fd}.stat-hint{font-size:.76rem;color:var(--color-muted)}.stat-warn:before{background:linear-gradient(135deg,#d97706,#fbbf24)}.stat-warn .stat-value{color:#b45309}[data-theme=dark] .stat-warn .stat-value{color:#fbbf24}.stat-good:before{background:linear-gradient(135deg,#16a34a,#4ade80)}.stat-good .stat-value{color:#15803d}[data-theme=dark] .stat-good .stat-value{color:#4ade80}.table-wrap{overflow-x:auto;border-radius:8px}table{width:100%;border-collapse:collapse;font-size:.86rem;background:var(--color-surface)}td,th{text-align:left;padding:.5rem .7rem;border-bottom:1px solid var(--color-border);vertical-align:top}thead th{background:var(--gradient-brand-soft);color:var(--color-primary);font-weight:700;font-size:.71rem;text-transform:uppercase;letter-spacing:.045em;white-space:nowrap;border-bottom:2px solid var(--color-border)}[data-theme=dark] thead th{color:#93c5fd}tbody tr:hover{background:var(--gradient-brand-soft)}tfoot td{border-bottom:none}td.num,th.num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}td.nowrap,td.num,th.num{white-space:nowrap}td.pick,th.pick{width:34px;padding-right:0}.muted{color:var(--color-muted)}.badge,.strong{font-weight:600}.badge{display:inline-block;padding:.12rem .5rem;border-radius:999px;font-size:.7rem;letter-spacing:.015em;white-space:nowrap;border:1px solid transparent;color:#fff}.badge-success{background:linear-gradient(135deg,#16a34a,#4ade80)}.badge-warning{background:linear-gradient(135deg,#d97706,#fbbf24)}.badge-danger{background:linear-gradient(135deg,#b91c1c,#f87171)}.badge-info{background:var(--gradient-brand)}.badge-purple{background:linear-gradient(135deg,#7c3aed,#c084fc)}.badge-teal{background:linear-gradient(135deg,#0d9488,#5eead4)}.badge-orange{background:linear-gradient(135deg,#c2410c,#fb923c)}.badge-pink{background:linear-gradient(135deg,#be185d,#f472b6)}.badge-indigo{background:linear-gradient(135deg,#4338ca,#818cf8)}.badge-neutral{background:#e2e8f0;color:var(--color-muted)}[data-theme=dark] .badge-neutral{background:#334155;color:#cbd5e1}.chip-row{display:flex;gap:.3rem;flex-wrap:wrap}.btn{border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);border-radius:6px;padding:.36rem .75rem;font-size:.83rem;cursor:pointer;display:inline-flex;align-items:center;gap:.35rem;font-family:inherit;transition:filter .12s,background .12s,border-color .12s}.btn:hover:not(:disabled){background:var(--color-surface-2);border-color:var(--color-primary)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{color:#fff}.btn-primary,.btn-primary:hover:not(:disabled){background:var(--gradient-brand);border-color:transparent}.btn-primary:hover:not(:disabled){filter:brightness(1.12)}.btn-danger{color:#b91c1c;border-color:#b91c1c;background:transparent}.btn-danger:hover:not(:disabled){background:linear-gradient(135deg,#b91c1c,#f87171);color:#fff;border-color:transparent}[data-theme=dark] .btn-danger{color:#f87171;border-color:#f87171}input,select,textarea{font-family:inherit;font-size:.85rem;padding:.38rem .5rem;border:1px solid var(--color-border);border-radius:6px;background:var(--color-surface);color:var(--color-text);width:100%}input[type=checkbox]{width:auto;accent-color:var(--color-primary);cursor:pointer}a:focus-visible,button:focus-visible,input:focus,select:focus,textarea:focus{outline:2px solid #fbbf24;outline-offset:1px;border-color:var(--color-primary)}textarea{min-height:68px;resize:vertical}.field{display:flex;flex-direction:column;gap:.2rem;margin-bottom:.7rem}.field-label{font-size:.72rem;text-transform:uppercase;letter-spacing:.045em;color:var(--color-muted);font-weight:700}.field-hint{font-size:.76rem;color:var(--color-muted)}.field-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));grid-gap:0 .7rem;gap:0 .7rem}.filters{display:flex;gap:.5rem;flex-wrap:wrap;align-items:flex-end;margin-bottom:.9rem}.filters .field{margin-bottom:0;min-width:150px}.bulk-bar{position:-webkit-sticky;position:sticky;top:.5rem;z-index:20;background:var(--gradient-brand);color:#fff;border-radius:9px;padding:.6rem .9rem;display:flex;align-items:center;gap:.7rem;flex-wrap:wrap;margin-bottom:.85rem;box-shadow:var(--shadow-pop)}.bulk-bar .count{font-weight:700;font-size:.95rem}.bulk-bar .spacer{margin-left:auto}.bulk-bar .btn{background:hsla(0,0%,100%,.14);border-color:hsla(0,0%,100%,.34);color:#fff}.bulk-bar .btn:hover:not(:disabled){background:hsla(0,0%,100%,.26);border-color:hsla(0,0%,100%,.6)}.bulk-bar .btn-primary{background:#fff;color:var(--color-primary);border-color:#fff}.bulk-bar .btn-primary:hover:not(:disabled){background:#fff;filter:brightness(.95)}.modal-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.55);display:flex;align-items:flex-start;justify-content:center;padding:2.5rem 1rem;z-index:60;overflow-y:auto}.modal{background:var(--color-surface);border:1px solid var(--color-border);border-radius:11px;width:100%;max-width:480px;box-shadow:var(--shadow-pop)}.modal-wide{max-width:780px}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;border-bottom:1px solid var(--color-border);background:var(--gradient-brand-soft);border-radius:11px 11px 0 0}.modal-head h2{color:var(--color-primary)}[data-theme=dark] .modal-head h2{color:#93c5fd}.modal-close{background:none;border:none;font-size:1.4rem;line-height:1;color:var(--color-muted);cursor:pointer}.modal-body{padding:1rem}.modal-foot{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1rem}.empty{color:var(--color-muted);font-size:.87rem;padding:.6rem 0;margin:0}.error-box{background:linear-gradient(135deg,rgba(185,28,28,.1),hsla(0,91%,71%,.1));color:#b91c1c;border:1px solid #b91c1c;border-radius:8px;padding:.55rem .8rem;font-size:.85rem;margin-bottom:.8rem}[data-theme=dark] .error-box{color:#fca5a5}.notice{background:linear-gradient(135deg,rgba(217,119,6,.1),rgba(251,191,36,.12));color:#b45309;border:1px solid #d97706;border-radius:8px;padding:.6rem .85rem;font-size:.86rem;margin-bottom:.9rem}[data-theme=dark] .notice{color:#fbbf24}.notice-good{background:linear-gradient(135deg,rgba(22,163,74,.1),rgba(74,222,128,.12));color:#15803d;border-color:#16a34a}[data-theme=dark] .notice-good{color:#4ade80}.notice a{color:inherit;text-decoration:underline}.bar{height:6px;background:var(--color-surface-2);border-radius:999px;overflow:hidden;min-width:60px}.bar>span{display:block;height:100%;background:var(--gradient-brand)}[data-theme=dark] .bar{background:#334155}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1.5rem}.login-card{width:100%;max-width:360px}.login-mark{width:46px;height:46px;border-radius:12px;background:var(--gradient-brand);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:1.05rem;margin-bottom:.7rem}.tabs{display:flex;gap:.25rem;margin-bottom:1rem;background:var(--color-surface-2);padding:.2rem;border-radius:8px}.tabs button{flex:1 1;border:none;background:none;padding:.38rem;border-radius:6px;font-size:.82rem;cursor:pointer;color:var(--color-muted);font-family:inherit}.tabs button.active{background:var(--gradient-brand);color:#fff;font-weight:600}