@font-face{font-family:Bricolage;src:url(../fonts/Bricolage.ttf)format("truetype");font-weight:100 900;font-display:swap}@font-face{font-family:Geist;src:url(../fonts/Geist.ttf)format("truetype");font-weight:100 900;font-display:swap}@font-face{font-family:JetBrainsMono;src:url(../fonts/JetBrainsMono.ttf)format("truetype");font-weight:100 900;font-display:swap}:root{--ink:#17181c;--paper:#f3f0e8;--desk:#e7e3d8;--card:#fff;--card-soft:#fbfaf6;--line:#e4dfd3;--line-soft:#efebe2;--line-chip:#d5cfc1;--line-btn:#cfc9ba;--header-line:#e1dccf;--body:#4a4840;--muted:#7a766b;--muted-2:#9c988d;--acc:#ff6a2b;--acc-text:#e2531b;--acc-soft:#fff6f1;--nav:#0e1420;--nav-active:#1c2433;--nav-text:#a9a59a;--nav-muted:#6e6b63;--dark-3:#2c2d33;--dark-4:#3a3b41;--green:#1f8a5b;--green-ok:#3dc980;--green-bg:#e8f3ec;--green-fg:#1f6b45;--amber:#c98a00;--amber-bg:#fff4dc;--amber-fg:#8a6000;--amber-fg-2:#9a6a00;--red:#d6453d;--red-soft:#f0564b;--red-bg:#fdecea;--red-bg-2:#fde4e1;--red-bd:#f4c9c4;--red-fg:#b0332a;--blue:#2f6fde;--blue-bg:#e5edfb;--blue-fg:#2350a8;--violet:#6d5bd0;--violet-bg:#eeeafb;--violet-fg:#4f3fa8;--peach-bg:#ffe6da;--peach-fg:#b03e10;--f-disp:"Bricolage", "Bricolage Grotesque", system-ui, sans-serif;--f-sans:"Geist", system-ui, -apple-system, "Segoe UI", sans-serif;--f-mono:"JetBrainsMono", "JetBrains Mono", ui-monospace, monospace}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--desk);color:var(--ink);font-family:var(--f-sans);-webkit-font-smoothing:antialiased;margin:0;font-size:14px}a{color:var(--ink)}a:hover{color:var(--acc-text)}input,textarea,button,select{color:inherit;font-family:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}:focus-visible{outline:2px solid var(--acc);outline-offset:2px}@keyframes fade{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}@keyframes slide{0%{opacity:0;transform:translate(40px)}to{opacity:1;transform:none}}@keyframes pulse{0%{box-shadow:0 0 #3dc9808c}to{box-shadow:0 0 0 9px #3dc98000}}@keyframes spin{to{transform:rotate(360deg)}}.eyebrow{font:600 10.5px/1 var(--f-mono);letter-spacing:.1em;color:var(--muted);text-transform:uppercase}.mono{font-family:var(--f-mono)}.disp{font-family:var(--f-disp);letter-spacing:-.02em}.muted{color:var(--muted)}.small{font-size:12px}.lockup{width:150px;height:auto;margin-left:-6px;display:block}.signin-card .lockup{width:168px}.shell{background:var(--paper);height:100vh;display:flex;overflow:hidden}.nav{background:var(--nav);width:244px;color:var(--paper);scrollbar-width:none;flex-direction:column;flex:none;padding:22px 12px 16px;display:flex;overflow-y:auto}.nav-brand{flex-direction:column;gap:8px;padding:0 10px 18px;display:flex}.nav-badge-role{font:600 9.5px/1 var(--f-mono);letter-spacing:.12em;color:var(--ink);background:var(--acc);border-radius:5px;align-self:flex-start;padding:4px 7px}.nav-group{font:600 9.5px/1 var(--f-mono);letter-spacing:.12em;color:var(--nav-muted);padding:14px 10px 6px}.nav-item{width:100%;height:38px;color:var(--nav-text);font:500 13.5px/1 var(--f-sans);text-align:left;background:0 0;border:none;border-radius:11px;align-items:center;gap:11px;padding:0 10px;text-decoration:none;display:flex}.nav-item:hover{color:var(--paper)}.nav-item.active{background:var(--nav-active);color:var(--paper)}.nav-item svg{flex:none}.nav-item .label{flex:1}.count-badge{background:var(--acc);min-width:19px;height:19px;color:var(--ink);font:700 10px/19px var(--f-sans);text-align:center;border-radius:10px;padding:0 5px}.nav-spacer{flex:1;min-height:16px}.nav-user{border-top:1px solid var(--nav-active);align-items:center;gap:10px;padding:12px 10px;display:flex}.nav-user .who{flex:1;min-width:0}.nav-user .who b{font:600 13.5px/1.2 var(--f-sans);display:block}.nav-user .who span{color:var(--muted-2);white-space:nowrap;text-overflow:ellipsis;margin-top:2px;font-size:11.5px;display:block;overflow:hidden}.main{flex-direction:column;flex:1;min-width:0;display:flex}.topbar{border-bottom:1px solid var(--header-line);background:var(--paper);flex:none;align-items:center;gap:10px;height:62px;padding:0 28px;display:flex}.topbar .grow{flex:1}.page-scroll{flex:1;overflow-y:auto}.page{flex-direction:column;gap:18px;max-width:1240px;margin:0 auto;padding:26px 28px 48px;display:flex}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px;display:flex}.page-head h1{font:700 30px/1.02 var(--f-disp);letter-spacing:-.03em;margin:7px 0 0}.page-actions{flex-wrap:wrap;gap:8px;display:flex}.status-ok{font:600 10.5px/1 var(--f-mono);color:var(--green-fg);flex:none;align-items:center;gap:7px;display:flex}.status-ok i{background:var(--green-ok);border-radius:50%;width:7px;height:7px;animation:1.6s infinite pulse}.menu-btn{display:none}.scrim{z-index:40;background:#0e0f1273;animation:.2s ease-out both fade;position:fixed;inset:0}.banner{background:var(--acc);color:var(--ink);flex:none;align-items:center;gap:10px;padding:9px 28px;font-size:13px;display:flex}.banner .grow{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}@media (width<=1023px){.nav{z-index:50;transition:transform .2s;position:fixed;top:0;bottom:0;left:0;transform:translate(-100%)}.nav.open{transform:none}.menu-btn{display:flex}.topbar{padding:0 14px}.page{padding:18px 14px 40px}.banner{padding:9px 14px}.hide-narrow{display:none!important}}.card{background:var(--card);border:1px solid var(--line);border-radius:20px}.card.pad{padding:16px}.card.list{padding:6px 16px 8px}.card.dark{background:var(--ink);color:var(--paper);border-color:var(--ink)}.card-head{justify-content:space-between;align-items:center;gap:10px;padding:14px 0 8px;display:flex}.card-head .title,.card-title{font:600 15px/1.2 var(--f-sans)}.row{border-top:1px solid var(--line-soft);align-items:center;gap:12px;padding:11px 0;display:flex}.row:first-of-type{border-top:none}.row.divided{border-top:1px solid var(--line-soft)}.row .grow{flex:1;min-width:0}.row .t{font:600 13.5px/1.25 var(--f-sans);display:block}.row .s{color:var(--muted);margin-top:3px;font-size:12px;display:block}.grid{gap:14px;display:grid}.grid-kpi{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;display:grid}.grid-2{grid-template-columns:repeat(auto-fit,minmax(min(100%,360px),1fr));gap:14px;display:grid}.grid-3{grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:14px;display:grid}.stack{flex-direction:column;gap:12px;display:flex}.hstack{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.spread{justify-content:space-between;align-items:center;gap:10px;display:flex}.kpi{text-align:left;background:var(--card);border:1px solid var(--line);color:var(--ink);border-radius:18px;flex-direction:column;gap:9px;padding:15px 16px;display:flex}button.kpi:hover{border-color:var(--ink)}.kpi .k{font:600 10px/1 var(--f-mono);letter-spacing:.1em;color:var(--muted)}.kpi .v{font:700 30px/1 var(--f-disp);letter-spacing:-.02em}.kpi .sub{font-size:12px}.table{background:var(--card);border:1px solid var(--line);border-radius:20px;overflow:hidden}.table-head{background:var(--card-soft);font:600 10px/1 var(--f-mono);letter-spacing:.08em;color:var(--muted);gap:12px;padding:11px 16px;display:flex}.table-row{border-top:1px solid var(--line-soft);align-items:center;gap:12px;padding:12px 16px;display:flex}.table-row.click{cursor:pointer}.table-row.click:hover{background:var(--card-soft)}.table-foot{border-top:1px solid var(--line-soft);font:500 10.5px/1 var(--f-mono);color:var(--muted);letter-spacing:.06em;padding:12px 16px}.cell-grow{flex:1;min-width:0}.cell-grow .t{font:600 14.5px/1.2 var(--f-sans);display:block}.cell-grow .s{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;margin-top:3px;font-size:12px;display:block;overflow:hidden}.chev{width:12px;color:var(--muted-2)}.btn{border:1px solid var(--line-btn);background:var(--card);height:38px;color:var(--ink);font:600 13px/1 var(--f-sans);white-space:nowrap;border-radius:12px;justify-content:center;align-items:center;gap:8px;padding:0 14px;display:inline-flex}.btn:hover:not(:disabled){border-color:var(--ink)}.btn.sm{border-radius:10px;height:32px;padding:0 12px;font-size:12.5px}.btn.lg{border-radius:14px;height:46px;padding:0 18px;font-size:14.5px}.btn.block{width:100%}.btn.primary{background:var(--acc);border-color:var(--acc);color:var(--ink)}.btn.dark{background:var(--ink);border-color:var(--ink);color:var(--paper)}.btn.ghost{background:0 0}.btn.danger{background:var(--red-bg);border-color:var(--red-bd);color:var(--red-fg)}.btn.link{height:auto;color:var(--acc-text);background:0 0;border:none;padding:0;font-weight:600}.chip{border:1px solid var(--line-chip);height:32px;color:var(--ink);font:500 12.5px/1 var(--f-sans);background:0 0;border-radius:999px;flex:none;align-items:center;gap:6px;padding:0 12px;display:inline-flex}.chip.on{background:var(--ink);border-color:var(--ink);color:var(--paper)}.chip .n{font:600 10.5px/1 var(--f-mono);opacity:.65}.chips{scrollbar-width:none;flex-wrap:nowrap;gap:6px;display:flex;overflow-x:auto}.chips.wrap{flex-wrap:wrap;overflow:visible}.seg{background:var(--line);scrollbar-width:none;border-radius:12px;gap:4px;min-width:0;padding:3px;display:flex;overflow-x:auto}.seg button{height:32px;font:500 12.5px/1 var(--f-sans);background:0 0;border:none;border-radius:9px;flex:none;padding:0 11px}.seg button.on{background:var(--card);box-shadow:0 1px 3px #00000014}.toggle{background:var(--line-chip);border:none;border-radius:13px;flex:none;width:44px;height:26px;padding:0;transition:background .2s;position:relative}.toggle.on{background:var(--green)}.toggle:after{content:"";background:#fff;border-radius:50%;width:20px;height:20px;transition:left .2s;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #0003}.toggle.on:after{left:21px}.toggle-row{border:none;border-top:1px solid var(--line-soft);text-align:left;background:0 0;align-items:center;gap:12px;width:100%;padding:11px 0;display:flex}.toggle-row:first-child{border-top:none}.toggle-row .grow{flex:1}.toggle-row .t{font:600 13.5px/1.2 var(--f-sans);display:block}.toggle-row .s{color:var(--muted);margin-top:2px;font-size:11.5px;display:block}.field{flex-direction:column;gap:7px;display:flex}.input,.textarea,.select{border:1px solid var(--line);background:var(--card);border-radius:12px;outline:none;width:100%;min-height:44px;padding:0 13px;font-size:14.5px}.input:focus,.textarea:focus,.select:focus{border-color:var(--ink)}.textarea{resize:vertical;padding:12px 13px;line-height:1.5}.search{border:1px solid var(--line);background:var(--card-soft);border-radius:12px;align-items:center;gap:9px;height:44px;padding:0 13px;display:flex}.search input{background:0 0;border:none;outline:none;flex:1;min-width:0;font-size:14.5px}.num{align-items:center;gap:8px;display:flex}.num input{border:1px solid var(--line);width:84px;height:36px;font:500 13.5px/1 var(--f-mono);text-align:right;background:var(--card);border-radius:10px;padding:0 10px}.num span{color:var(--muted);font-size:12px}.tag{font:600 9.5px/1 var(--f-mono);letter-spacing:.06em;background:var(--line-soft);color:var(--body);white-space:nowrap;border-radius:999px;align-items:center;padding:5px 8px;display:inline-flex}.tag.green{background:var(--green-bg);color:var(--green-fg)}.tag.amber{background:var(--amber-bg);color:var(--amber-fg)}.tag.red{background:var(--red-bg-2);color:var(--red-fg)}.tag.blue{background:var(--blue-bg);color:var(--blue-fg)}.tag.violet{background:var(--violet-bg);color:var(--violet-fg)}.tag.peach{background:var(--peach-bg);color:var(--peach-fg)}.tag.dark{background:var(--ink);color:var(--paper)}.dot{border-radius:50%;flex:none;width:8px;height:8px;display:inline-block}.avatar{color:#fff;width:38px;height:38px;font:600 13px/38px var(--f-sans);text-align:center;border-radius:50%;flex:none;overflow:hidden}.avatar img{object-fit:cover;width:100%;height:100%}.glyph{width:38px;height:38px;font:600 10px/38px var(--f-mono);text-align:center;border-radius:11px;flex:none}.bar{background:var(--line-soft);border-radius:3px;height:6px;overflow:hidden}.bar>i{background:var(--ink);height:100%;display:block}.drawer-scrim{z-index:60;background:#0e0f1273;justify-content:flex-end;animation:.2s ease-out both fade;display:flex;position:fixed;inset:0}.drawer{background:var(--sheet,#f7f5ef);flex-direction:column;width:min(560px,100%);height:100%;animation:.25s cubic-bezier(.2,.9,.3,1) both slide;display:flex}.drawer-head{border-bottom:1px solid var(--header-line);flex:none;align-items:flex-start;gap:12px;padding:18px 20px 14px;display:flex}.drawer-head .grow{flex:1;min-width:0}.drawer-head h2{font:700 24px/1.1 var(--f-disp);letter-spacing:-.02em;margin:6px 0 0}.drawer-body{flex-direction:column;flex:1;gap:16px;padding:18px 20px 24px;display:flex;overflow-y:auto}.drawer-foot{border-top:1px solid var(--header-line);background:var(--card-soft);flex-wrap:wrap;flex:none;justify-content:flex-end;gap:8px;padding:14px 20px;display:flex}.drawer-tabs{scrollbar-width:none;border-bottom:1px solid var(--header-line);flex:none;gap:18px;padding:0 20px;display:flex;overflow-x:auto}.drawer-tabs button{height:42px;color:var(--muted);font:600 13px/1 var(--f-sans);background:0 0;border:none;border-bottom:2px solid #0000;flex:none;padding:0}.drawer-tabs button.on{border-color:var(--ink);color:var(--ink)}.close-x{border:1px solid var(--line-btn);background:var(--card);border-radius:10px;flex:none;width:36px;height:36px;font-size:18px;line-height:1}.modal-scrim{z-index:80;background:#0e0f1280;justify-content:center;align-items:center;padding:16px;animation:.2s ease-out both fade;display:flex;position:fixed;inset:0}.modal{background:var(--card);border-radius:20px;flex-direction:column;gap:14px;width:min(440px,100%);padding:20px;display:flex;box-shadow:0 30px 60px -20px #00000080}.modal h3{font:700 20px/1.15 var(--f-disp);letter-spacing:-.02em;margin:0}.modal p{color:var(--body);margin:0;font-size:13.5px;line-height:1.5}.toast-host{z-index:100;pointer-events:none;justify-content:center;padding:0 16px;display:flex;position:fixed;top:16px;left:0;right:0}.toast{background:var(--ink);color:var(--paper);font:500 13.5px/1.35 var(--f-sans);border-radius:14px;align-items:center;gap:10px;max-width:560px;padding:12px 16px;animation:.25s ease-out both fade;display:flex;box-shadow:0 12px 30px -10px #00000080}.spinner{border:3px solid var(--line);border-top-color:var(--ink);border-radius:50%;width:28px;height:28px;animation:.8s linear infinite spin}.state{text-align:center;color:var(--muted);flex-direction:column;align-items:center;gap:12px;padding:36px 16px;font-size:13.5px;display:flex}.state.error{color:var(--red-fg)}.empty{color:var(--muted);padding:22px 0;font-size:13px}.notice{border-radius:12px;padding:11px 13px;font-size:13px;line-height:1.45}.notice.error{background:var(--red-bg);border:1px solid var(--red-bd);color:#8a3a33}.notice.warn{background:var(--amber-bg);color:#7a5a00;border:1px solid #f1ddae}.notice.ok{background:var(--green-bg);color:var(--green-fg)}.notice.info{background:var(--line-soft);color:var(--body)}.signin{background:var(--desk);justify-content:center;align-items:center;min-height:100vh;padding:32px 16px;display:flex}.signin-card{background:var(--paper);border:1px solid var(--line);border-radius:26px;flex-direction:column;gap:16px;width:min(420px,100%);padding:28px 24px;display:flex}.signin-card h1{font:700 30px/1.02 var(--f-disp);letter-spacing:-.03em;margin:0}.otp{grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;display:grid}.otp input{text-align:center;border:1.5px solid var(--line);background:var(--card);height:54px;font:600 22px/1 var(--f-mono);border-radius:12px;outline:none}.otp input:focus{border-color:var(--acc)}
