:root{color-scheme:light;--bg: #f5f7fa;--surface: #ffffff;--surface-2: #f1f5f9;--line: #e4e9f0;--line-2: #d5dce6;--input-line: #7d8ba0;--ink: #0b1b2b;--ink-2: #475569;--ink-3: #5b6678;--brand: #0f766e;--brand-dk: #115e59;--brand-2: #0d9488;--accent: #0d9488;--brand-ink: #ffffff;--brand-soft: #e3f5f2;--brand-xl: #f0fdfa;--brand-hover: #115e59;--ok: #15803d;--ok-soft: #dcfce7;--warn: #b45309;--warn-soft: #fef3c7;--bad: #be123c;--bad-soft: #ffe4e6;--info: #1d4ed8;--info-soft: #dbeafe;--focus: #0d9488;--radius: 12px;--radius-input: 8px;--radius-pill: 999px;--shadow: none;--shadow-pop: 0 1px 2px rgba(11, 27, 43, .06), 0 8px 24px rgba(11, 27, 43, .08);--scrim: rgba(11, 27, 43, .42);--grad: linear-gradient(135deg, #0d9488, #0f766e);--side: 248px;--topbar-h: 56px;--tabbar-h: 60px;--page-max: 1120px;--row-h: 40px;--ease: cubic-bezier(.2, .7, .2, 1);--t-hover: 80ms;--t-pop: .15s;--s1: 8px;--s2: 16px;--s3: 24px;--s4: 32px}html[data-theme=dark]{color-scheme:dark;--bg: #0b1218;--surface: #121b24;--surface-2: #1a2530;--line: #243140;--line-2: #33445a;--input-line: #6a7d95;--ink: #e7eef5;--ink-2: #b4c0cd;--ink-3: #93a1b3;--brand: #2dd4bf;--brand-dk: #5eead4;--brand-2: #2dd4bf;--accent: #2dd4bf;--brand-ink: #04211e;--brand-soft: #123631;--brand-xl: #0f2a27;--brand-hover: #5eead4;--ok: #4ade80;--ok-soft: #12351f;--warn: #fbbf24;--warn-soft: #3a2a0b;--bad: #fb7185;--bad-soft: #3d1621;--info: #7aa7ff;--info-soft: #14284d;--focus: #5eead4;--shadow-pop: 0 1px 2px rgba(0, 0, 0, .4), 0 10px 30px rgba(0, 0, 0, .5);--scrim: rgba(2, 8, 14, .66);--grad: linear-gradient(135deg, #2dd4bf, #14b8a6)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.55 Inter,system-ui,-apple-system,Segoe UI,sans-serif;-webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums}h1,h2,h3,h4{margin:0;letter-spacing:-.01em;font-weight:650}a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline}button{font:inherit;color:inherit}.mono{font-family:JetBrains Mono,ui-monospace,monospace;font-size:12.5px}.muted{color:var(--ink-3)}.small{font-size:13px}.tiny{font-size:12px}.row{display:flex;align-items:center;gap:var(--s1)}.row.wrap{flex-wrap:wrap}.spread{justify-content:space-between}.stack{display:flex;flex-direction:column;gap:var(--s2)}.grow{flex:1;min-width:0}.grid{display:grid;gap:var(--s2)}.g2{grid-template-columns:repeat(2,minmax(0,1fr))}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.g4{grid-template-columns:repeat(4,minmax(0,1fr))}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}:focus{outline:none}:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:6px}.input:focus-visible,select.input:focus-visible,textarea.input:focus-visible{outline-offset:0;border-radius:var(--radius-input)}.skip-link{position:fixed;left:12px;top:-64px;z-index:300;background:var(--brand);color:var(--brand-ink);padding:10px 16px;border-radius:var(--radius-pill);font-weight:600;transition:top var(--t-pop) var(--ease)}.skip-link:focus{top:12px;text-decoration:none}::selection{background:var(--brand-soft);color:var(--ink)}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--s2);margin-bottom:var(--s3);flex-wrap:wrap}.page-head h1{font-size:28px;line-height:1.2;font-weight:650}.page-head p{margin:4px 0 0;color:var(--ink-3);font-size:15px}.avatar{border-radius:50%;display:inline-grid;place-items:center;color:#fff;font-weight:700;font-size:12px;flex:none}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:36px;padding:6px 16px;border-radius:var(--radius-pill);border:1px solid var(--input-line);background:var(--surface);color:var(--ink);font-weight:600;font-size:14px;cursor:pointer;transition:background var(--t-hover) ease-out,border-color var(--t-hover) ease-out,color var(--t-hover) ease-out;white-space:nowrap}.btn:hover{border-color:var(--brand);color:var(--brand);text-decoration:none;background:var(--brand-xl)}.btn:disabled,.btn[aria-disabled=true]{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--brand);border-color:var(--brand);color:var(--brand-ink)}.btn-primary:hover{background:var(--brand-hover);border-color:var(--brand-hover);color:var(--brand-ink)}.btn-danger{background:var(--bad);border-color:var(--bad);color:#fff}.btn-danger:hover{filter:brightness(.92);background:var(--bad);border-color:var(--bad);color:#fff}html[data-theme=dark] .btn-danger,html[data-theme=dark] .btn-danger:hover{color:#2a0610}.btn-ghost{background:transparent;border-color:transparent}.btn-ghost:hover{background:var(--surface-2);border-color:transparent;color:var(--ink)}.btn-sm{min-height:30px;padding:3px 12px;font-size:13px}.btn-icon{padding:0;width:36px;border-radius:50%}.btn-icon.btn-sm{width:30px}.input,select.input,textarea.input{width:100%;min-height:38px;padding:8px 12px;border:1px solid var(--input-line);border-radius:var(--radius-input);background:var(--surface);color:var(--ink);font:inherit;font-size:14.5px;transition:border-color var(--t-hover) ease-out}.input::placeholder{color:var(--ink-3)}.input:hover{border-color:var(--ink-3)}.input:focus{border-color:var(--brand)}textarea.input{min-height:84px;resize:vertical}.field{display:flex;flex-direction:column;gap:6px}.field>label{font-size:13px;font-weight:600;color:var(--ink-2)}.field .err{color:var(--bad);font-size:13px}.check{display:flex;gap:8px;align-items:center}input[type=checkbox],input[type=radio]{accent-color:var(--brand);width:16px;height:16px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.card-pad{padding:var(--s3)}.card h3{font-size:17px;margin-bottom:12px}.stat{padding:var(--s2) var(--s3)}.stat .v{font-size:28px;font-weight:650;line-height:1.2}.stat .l{color:var(--ink-3);font-size:13px}.pill{display:inline-flex;align-items:center;padding:1px 10px;border-radius:var(--radius-pill);font-size:12px;font-weight:600;line-height:20px;background:var(--surface-2);color:var(--ink-2)}.pill.ok{background:var(--ok-soft);color:var(--ok)}.pill.warn{background:var(--warn-soft);color:var(--warn)}.pill.bad{background:var(--bad-soft);color:var(--bad)}.pill.info{background:var(--info-soft);color:var(--info)}.pill.brand{background:var(--brand-soft);color:var(--brand)}.kbd{display:inline-block;min-width:20px;padding:0 6px;border:1px solid var(--line-2);border-bottom-width:2px;border-radius:6px;font:600 11.5px/18px Inter,sans-serif;color:var(--ink-2);background:var(--surface);text-align:center}.table-wrap{overflow:auto;max-height:calc(100vh - var(--topbar-h) - 120px)}table.table{width:100%;border-collapse:separate;border-spacing:0}.table th{position:sticky;top:var(--topbar-h);z-index:2;text-align:left;font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3);padding:0 14px;height:36px;border-bottom:1px solid var(--line);background:var(--surface-2);white-space:nowrap}.table-wrap .table th{top:0}.table td{padding:0 14px;min-height:var(--row-h);height:var(--row-h);border-bottom:1px solid var(--line);vertical-align:middle;font-size:14px}.table tr:last-child td{border-bottom:0}.table tbody tr{transition:background var(--t-hover) ease-out}.table tbody tr:hover{background:var(--surface-2)}.table tr.click{cursor:pointer}.table td,.table th{font-variant-numeric:tabular-nums}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:var(--s3);overflow-x:auto}.tab{padding:10px 14px;border:0;background:none;font-weight:600;color:var(--ink-2);cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap;margin-bottom:-1px;transition:color var(--t-hover) ease-out;text-decoration:none}.tab:hover{color:var(--ink);text-decoration:none}.tab.active{color:var(--brand);border-color:var(--brand)}.empty{text-align:center;padding:48px 20px;color:var(--ink-3)}.empty b{display:block;color:var(--ink);font-size:17px;margin-bottom:4px}.empty p{margin:4px auto 16px;max-width:420px}.empty .row{justify-content:center}.bar{height:8px;background:var(--surface-2);border-radius:var(--radius-pill);overflow:hidden}.bar>span{display:block;height:100%;background:var(--brand-2);border-radius:var(--radius-pill);transition:width .3s var(--ease)}.spinner{width:18px;height:18px;border:2px solid var(--line-2);border-top-color:var(--brand);border-radius:50%;animation:spin .7s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.loading{display:flex;align-items:center;justify-content:center;gap:10px;padding:40px;color:var(--ink-3)}.skeleton{display:block;border-radius:8px;background:linear-gradient(90deg,var(--surface-2) 25%,var(--line) 37%,var(--surface-2) 63%);background-size:400% 100%;animation:shimmer 1.4s ease infinite}@keyframes shimmer{0%{background-position:100% 50%}to{background-position:0 50%}}.skeleton-stack{display:flex;flex-direction:column;gap:12px;padding:4px 0}.skeleton-row{display:flex;align-items:center;gap:14px;height:var(--row-h);border-bottom:1px solid var(--line)}.overlay{position:fixed;inset:0;background:var(--scrim);display:grid;place-items:center;z-index:50;padding:16px;animation:fade var(--t-pop) var(--ease)}.modal{background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:16px;width:min(560px,100%);max-height:90vh;overflow:auto;box-shadow:var(--shadow-pop);animation:pop var(--t-pop) var(--ease)}.modal.wide{width:min(860px,100%)}.modal-head{padding:16px 24px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:12px}.modal-head h3{font-size:17px}.modal-body{padding:var(--s3)}.modal-foot{padding:14px 24px;border-top:1px solid var(--line);display:flex;gap:10px;justify-content:flex-end}.drawer-wrap{position:fixed;inset:0;background:var(--scrim);z-index:40;display:flex;justify-content:flex-end;animation:fade var(--t-pop) var(--ease)}.drawer{width:min(560px,100%);background:var(--surface);color:var(--ink);height:100%;overflow:auto;border-left:1px solid var(--line);box-shadow:var(--shadow-pop);animation:slide-in var(--t-pop) var(--ease)}@keyframes fade{0%{opacity:0}}@keyframes pop{0%{opacity:0;transform:translateY(6px) scale(.985)}}@keyframes slide-in{0%{transform:translate(24px);opacity:0}}.toasts{position:fixed;left:16px;bottom:16px;display:flex;flex-direction:column;gap:8px;z-index:200;max-width:min(420px,calc(100vw - 32px))}.toast{display:flex;align-items:center;gap:6px;background:var(--ink);color:var(--bg);padding:10px 16px;border-radius:12px;box-shadow:var(--shadow-pop);font-weight:500;font-size:14px;animation:pop var(--t-pop) var(--ease)}.toast.error{background:var(--bad);color:#fff}html[data-theme=dark] .toast.error{color:#2a0610}.toast-action{border:0;background:transparent;color:inherit;font-weight:700;text-decoration:underline;cursor:pointer;padding:2px 4px;border-radius:6px}.toast-action:focus-visible{outline-color:currentColor}.login{min-height:100%;display:grid;grid-template-columns:1.05fr 1fr;background:var(--bg)}.login-art{background:linear-gradient(160deg,#0f766e,#115e59 55%,#134e4a);color:#fff;padding:56px;display:flex;flex-direction:column;justify-content:center;position:relative;overflow:hidden}.login-art:before{content:"";position:absolute;inset:-20%;background:radial-gradient(42% 42% at 20% 25%,rgba(94,234,212,.3),transparent 62%),radial-gradient(40% 40% at 85% 80%,rgba(255,255,255,.1),transparent 60%)}.login-art>*{position:relative}.login-art h1{font-size:40px;line-height:1.15;margin:0 0 16px;font-weight:700;letter-spacing:-.02em}.login-art p{color:#d3f5ee;max-width:420px;font-size:17px}.login-art .brand{color:#fff}.login-art ul{margin:24px 0 0;padding:0;list-style:none;display:grid;gap:12px;color:#e8fbf7}.login-art li{display:flex;gap:10px;align-items:center}.login-form{display:grid;place-items:center;padding:32px}.login-card{width:min(400px,100%)}.login-card h2{font-size:28px}.divider{display:flex;align-items:center;gap:12px;color:var(--ink-3);font-size:13px}.divider:before,.divider:after{content:"";flex:1;height:1px;background:var(--line)}.pw-meter{display:grid;grid-template-columns:repeat(4,1fr);gap:4px}.pw-meter i{height:4px;border-radius:2px;background:var(--line)}.pw-meter i.on{background:var(--brand-2)}.pw-meter[data-level="1"] i.on{background:var(--bad)}.pw-meter[data-level="2"] i.on{background:var(--warn)}img,svg,video,canvas{max-width:100%}.input,select.input,textarea.input,.field,.grow,.card{min-width:0}@media(max-width:1100px){.g4{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:900px){.g3,.g4{grid-template-columns:repeat(2,minmax(0,1fr))}.g2,.login{grid-template-columns:1fr}.login-art{display:none}.login-form{padding:20px;align-items:start;padding-top:8vh}.drawer-wrap{background:var(--scrim)}.drawer{width:100%;border-left:0;animation-name:sheet-up}@keyframes sheet-up{0%{transform:translateY(24px);opacity:0}}}@media(max-width:600px){body{font-size:15px}.page-head{flex-direction:column;align-items:stretch;gap:10px;margin-bottom:16px}.page-head h1{font-size:22px}.page-head>.row{width:100%}.page-head>.row .btn{flex:1 1 auto}.g2,.g3{grid-template-columns:1fr}.g4{grid-template-columns:repeat(2,minmax(0,1fr))}.stat{padding:12px 14px}.stat .v{font-size:21px;overflow-wrap:anywhere}.card-pad{padding:var(--s2)}.page .row{flex-wrap:wrap}.page .row.nowrap{flex-wrap:nowrap}.spread{gap:8px}.table-wrap{max-height:none}table.table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}.table th,.table td{padding:0 10px}.table th{position:static}.tabs{margin-left:-2px;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tab{padding:10px 12px}.overlay{padding:0;align-items:end}.modal,.modal.wide{width:100%;max-height:92vh;max-height:92dvh;border-radius:18px 18px 0 0;animation-name:sheet-up}.modal-head{padding:14px 16px}.modal-body{padding:16px}.modal-foot{padding:12px 16px calc(12px + env(safe-area-inset-bottom));flex-wrap:wrap}.modal-foot .btn{flex:1 1 auto}.login-card h2{font-size:24px}}@media(pointer:coarse){.btn{min-height:44px}.btn-sm{min-height:40px}.btn-icon{width:44px}.input,select.input,textarea.input{min-height:44px;font-size:16px}.nav-item,.tab{min-height:44px}}@media(max-width:340px){.g4{grid-template-columns:1fr}.stat .v{font-size:19px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}.skeleton{animation:none;background:var(--surface-2)}}.stack>*,.grid>*,.row>*,.page>*,.card>*{min-width:0}.page{overflow-wrap:break-word}.table-wrap,.card>table.table{max-width:100%}pre,code{overflow-x:auto;max-width:100%}.table td,.tab,.btn{position:relative}.sr-only{left:0;top:0}@media(max-width:600px){table.table:not(.table-keep){display:block;overflow:visible}.table:not(.table-keep) thead{position:absolute;left:-9999px;top:0}.table:not(.table-keep) tbody,.table:not(.table-keep) tr,.table:not(.table-keep) td{display:block;width:100%}.table:not(.table-keep) tbody{padding:10px}.table:not(.table-keep) tr{border:1px solid var(--line);border-radius:12px;background:var(--surface);margin:0 0 10px;padding:6px 0}.table:not(.table-keep) tr:last-child{margin-bottom:0}.table:not(.table-keep) tbody tr:hover{background:var(--surface)}.table:not(.table-keep) td{display:block;height:auto;border:0;padding:7px 14px;white-space:normal;overflow-wrap:anywhere}.table:not(.table-keep) td:before{content:attr(data-label);display:block;margin-bottom:2px;font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-3)}.table:not(.table-keep) td:first-child{padding-top:10px}.table:not(.table-keep) td:last-child{padding-bottom:10px}.table:not(.table-keep) td[data-label=""]{display:block}.table:not(.table-keep) td[data-label=""]:before{display:none}.table:not(.table-keep) td[colspan]{display:block;text-align:center}.table:not(.table-keep) td[colspan]:before{display:none}.table:not(.table-keep) td.hide-sm,.table:not(.table-keep) th.hide-sm{display:none}}@media(max-width:600px){.stat .l,.stat .small{overflow-wrap:anywhere}}.app{display:grid;grid-template-columns:var(--side) minmax(0,1fr);min-height:100%}.main{min-width:0;display:flex;flex-direction:column;min-height:100vh}.page{padding:var(--s3) var(--s4) var(--s4);max-width:calc(var(--page-max) + 2 * var(--s4));width:100%;margin:0}.side{background:var(--surface);border-right:1px solid var(--line);padding:12px;display:flex;flex-direction:column;gap:2px;position:sticky;top:0;height:100vh;height:100dvh;overflow-y:auto;overflow-x:hidden}.brand{display:flex;align-items:center;gap:10px;color:var(--ink);font-weight:700;font-size:17px;letter-spacing:-.01em}.brand .mark{width:30px;height:30px;border-radius:9px;background:var(--grad);color:#fff;display:grid;place-items:center;flex:none}html[data-theme=dark] .brand .mark{color:#04211e}.ws-switch{position:relative;margin-bottom:8px}.ws-btn{width:100%;display:flex;align-items:center;gap:10px;padding:8px;border:1px solid transparent;background:transparent;border-radius:10px;cursor:pointer;text-align:left;color:var(--ink);transition:background var(--t-hover) ease-out}.ws-btn:hover,.ws-btn[aria-expanded=true]{background:var(--surface-2)}.ws-btn .ws-name{font-weight:650;font-size:14px;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ws-btn small{display:block;color:var(--ink-3);font-weight:500;font-size:12px;text-transform:capitalize}.ws-btn .mark{width:32px;height:32px}.nav-group-label{font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3);padding:16px 10px 6px}.nav-item{position:relative;display:flex;align-items:center;gap:12px;min-height:36px;padding:6px 10px;border-radius:8px;color:var(--ink-2);font-weight:500;font-size:14.5px;border:0;background:none;width:100%;cursor:pointer;text-align:left;transition:background var(--t-hover) ease-out,color var(--t-hover) ease-out}.nav-item:hover{background:var(--surface-2);color:var(--ink);text-decoration:none}.nav-item.active{background:var(--brand-soft);color:var(--brand-dk);font-weight:600}.nav-item.active:before{content:"";position:absolute;left:-12px;top:7px;bottom:7px;width:3px;border-radius:0 3px 3px 0;background:var(--brand-2)}.nav-item svg{flex:none}.nav-item .chev{margin-left:auto;transition:transform var(--t-pop) var(--ease)}.nav-item[aria-expanded=true] .chev{transform:rotate(180deg)}.nav-item .count{margin-left:auto;font-size:12px;font-weight:700;background:var(--brand-2);color:#fff;border-radius:999px;padding:0 7px;line-height:18px}.nav-sub{display:flex;flex-direction:column;gap:2px;padding-left:20px;margin-bottom:4px}.nav-sub .nav-item{min-height:32px;font-size:14px}.side-foot{margin-top:auto;padding-top:12px;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:8px}.side-progress{padding:10px;border:1px solid var(--line);border-radius:12px;background:var(--surface-2);text-decoration:none;color:var(--ink);display:block}.side-progress:hover{text-decoration:none;border-color:var(--brand-2)}.side-progress b{font-size:13px;display:block;margin-bottom:6px}.side-progress small{color:var(--ink-3);font-size:12px}.userbox{display:flex;align-items:center;gap:10px;padding:6px}.userbox b{display:block;font-size:14px}.userbox span{font-size:12px;color:var(--ink-3);text-transform:capitalize}.topbar{height:var(--topbar-h);background:var(--surface);border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 var(--s4);gap:12px;position:sticky;top:0;z-index:20}.search-trigger{flex:1;max-width:480px;display:flex;align-items:center;gap:10px;height:36px;padding:0 12px;border:1px solid var(--line-2);border-radius:var(--radius-pill);background:var(--surface-2);color:var(--ink-3);cursor:pointer;text-align:left;font-size:14px;transition:border-color var(--t-hover) ease-out,background var(--t-hover) ease-out}.search-trigger:hover{border-color:var(--brand-2);background:var(--surface)}.search-trigger span.grow{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.top-actions{margin-left:auto;display:flex;align-items:center;gap:4px}.icon-btn{position:relative;width:36px;height:36px;border-radius:50%;border:0;background:transparent;color:var(--ink-2);display:inline-grid;place-items:center;cursor:pointer;transition:background var(--t-hover) ease-out}.icon-btn:hover,.icon-btn[aria-expanded=true]{background:var(--surface-2);color:var(--ink)}.badge{position:absolute;top:1px;right:0;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--bad);color:#fff;font-size:11px;font-weight:700;line-height:18px;text-align:center;border:2px solid var(--surface);box-sizing:content-box}html[data-theme=dark] .badge{color:#2a0610}.avatar-btn{border:0;background:none;padding:2px;border-radius:50%;cursor:pointer;margin-left:4px}.page-title-bar{font-weight:650;font-size:16px;display:none}.menu{position:absolute;z-index:60;min-width:220px;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-pop);padding:6px;animation:pop var(--t-pop) var(--ease)}.menu.right{right:0}.menu.left{left:0}.menu.down{top:calc(100% + 6px)}.menu-item{display:flex;align-items:center;gap:10px;width:100%;padding:8px 10px;border-radius:8px;border:0;background:none;color:var(--ink);font-size:14px;cursor:pointer;text-align:left;text-decoration:none}.menu-item:hover,.menu-item:focus-visible,.menu-item[aria-selected=true]{background:var(--surface-2);text-decoration:none}.menu-item svg{color:var(--ink-3)}.menu-item .hint{margin-left:auto;color:var(--ink-3);font-size:12px}.menu-sep{height:1px;background:var(--line);margin:6px 0}.menu-label{padding:6px 10px 4px;font-size:12px;font-weight:600;color:var(--ink-3);text-transform:uppercase;letter-spacing:.04em}.menu-wrap{position:relative}.bell-panel{width:min(380px,calc(100vw - 24px));padding:0;right:0}.bell-head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--line)}.bell-list{max-height:min(60vh,440px);overflow-y:auto;margin:0;padding:0;list-style:none}.bell-item{display:flex;gap:12px;padding:12px 16px;border-bottom:1px solid var(--line);cursor:pointer;width:100%;background:none;border-left:0;border-right:0;border-top:0;text-align:left;color:var(--ink)}.bell-item:hover{background:var(--surface-2)}.bell-item:last-child{border-bottom:0}.bell-item .dot{width:8px;height:8px;border-radius:50%;background:var(--brand-2);margin-top:7px;flex:none}.bell-item.read .dot{background:transparent}.bell-item.read{color:var(--ink-2)}.bell-item b{font-size:14px;display:block}.bell-item small{color:var(--ink-3)}.palette-overlay{position:fixed;inset:0;background:var(--scrim);z-index:120;display:flex;justify-content:center;align-items:flex-start;padding:12vh 16px 16px;animation:fade var(--t-pop) var(--ease)}.palette{width:min(640px,100%);background:var(--surface);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow-pop);overflow:hidden;animation:pop var(--t-pop) var(--ease);display:flex;flex-direction:column;max-height:70vh}.palette-input{display:flex;align-items:center;gap:12px;padding:0 16px;border-bottom:1px solid var(--line);color:var(--ink-3)}.palette-input input{flex:1;height:54px;border:0;background:transparent;color:var(--ink);font:inherit;font-size:17px;outline:none;min-width:0}.palette-list{overflow-y:auto;padding:6px}.palette-group{padding:10px 10px 4px;font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3)}.palette-item{display:flex;align-items:center;gap:12px;width:100%;padding:9px 10px;border-radius:10px;border:0;background:none;color:var(--ink);cursor:pointer;text-align:left;font-size:14.5px}.palette-item[aria-selected=true]{background:var(--brand-soft)}.palette-item .sub{color:var(--ink-3);font-size:13px;margin-left:auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:45%}.palette-item .ico{width:28px;height:28px;border-radius:8px;background:var(--surface-2);display:grid;place-items:center;color:var(--ink-2);flex:none}.palette-item .title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.palette-item mark{background:transparent;color:var(--brand);font-weight:700}.palette-foot{display:flex;gap:16px;padding:8px 16px;border-top:1px solid var(--line);color:var(--ink-3);font-size:12px;background:var(--surface-2)}.palette-empty{padding:28px 16px;text-align:center;color:var(--ink-3)}.ctx-scrim{position:fixed;inset:0;z-index:70;background:transparent}.ctx-drawer{position:fixed;top:0;right:0;bottom:0;width:360px;max-width:100%;z-index:71;background:var(--surface);border-left:1px solid var(--line);box-shadow:var(--shadow-pop);display:flex;flex-direction:column;animation:slide-in var(--t-pop) var(--ease)}.ctx-head{display:flex;align-items:center;gap:8px;padding:12px 16px;border-bottom:1px solid var(--line);min-height:var(--topbar-h)}.ctx-head h2{font-size:17px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ctx-body{flex:1;overflow-y:auto;padding:16px}.ctx-foot{padding:12px 16px;border-top:1px solid var(--line);display:flex;gap:8px}.ctx-section{margin-top:20px}.ctx-section h4{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-3);margin-bottom:8px}.kv{display:grid;grid-template-columns:96px 1fr;gap:6px 12px;font-size:14px}.kv dt{color:var(--ink-3)}.kv dd{margin:0;overflow-wrap:anywhere}.mini-timeline{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}.mini-timeline li{display:flex;gap:10px;font-size:14px}.mini-timeline small{color:var(--ink-3);display:block}.mini-timeline .ico{width:24px;height:24px;border-radius:50%;background:var(--surface-2);display:grid;place-items:center;color:var(--ink-2);flex:none}body.ctx-open .page{transition:padding-right var(--t-pop) var(--ease)}.tabbar{display:none}.more-sheet-wrap{position:fixed;inset:0;z-index:90;background:var(--scrim);display:flex;align-items:flex-end;animation:fade var(--t-pop) var(--ease)}.more-sheet{width:100%;max-height:82dvh;overflow-y:auto;background:var(--surface);border-radius:20px 20px 0 0;padding:8px 16px calc(var(--tabbar-h) + 12px + env(safe-area-inset-bottom));border-top:1px solid var(--line);box-shadow:var(--shadow-pop);animation:sheet-up var(--t-pop) var(--ease)}.more-sheet .grabber{width:40px;height:4px;border-radius:2px;background:var(--line-2);margin:4px auto 12px}.more-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.more-grid a,.more-grid button{display:flex;flex-direction:column;align-items:center;gap:6px;padding:14px 6px;border-radius:12px;border:1px solid var(--line);background:var(--surface);color:var(--ink);font-size:13px;font-weight:500;text-align:center;cursor:pointer;text-decoration:none}.more-grid a:hover,.more-grid button:hover{background:var(--surface-2);text-decoration:none}.more-grid a.active{background:var(--brand-soft);color:var(--brand-dk);border-color:var(--brand-2)}@keyframes sheet-up{0%{transform:translateY(24px);opacity:0}}@media(min-width:900px)and (max-width:1279px){:root{--side: 64px}.side{padding:12px 10px;align-items:stretch}.side .nav-text,.side .ws-name,.side .nav-group-label,.side .chev,.side .count,.side .userbox .grow,.side .side-progress,.side .brand-name,.side .ws-btn .ws-meta{display:none}.side .ws-btn,.side .nav-item{justify-content:center;padding:6px}.side .nav-item.active:before{left:-10px}.side .nav-sub{padding-left:0}.side .userbox{justify-content:center;flex-direction:column;padding:0}.page{padding:var(--s3)}.topbar{padding:0 var(--s3)}.ws-switch .menu{left:0;min-width:240px}}@media(max-width:899px){:root{--side: 0px}.app{display:block}.side{display:none}.topbar{padding:0 12px;gap:8px}.search-trigger .kbd,.search-trigger .search-hint{display:none}.search-trigger{max-width:none}.page-title-bar{display:none}.page{padding:var(--s2) var(--s2) calc(var(--tabbar-h) + 28px + env(safe-area-inset-bottom));max-width:none}.tabbar{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;left:0;right:0;bottom:0;height:calc(var(--tabbar-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--surface);border-top:1px solid var(--line);z-index:80}.tab-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border:0;background:none;color:var(--ink-3);font-size:11.5px;font-weight:600;text-decoration:none;cursor:pointer;position:relative;min-width:0}.tab-item.active{color:var(--brand-dk)}.tab-item.active:before{content:"";position:absolute;top:0;left:30%;right:30%;height:3px;border-radius:0 0 3px 3px;background:var(--brand-2)}.tab-item:hover{text-decoration:none}.tab-item .badge{top:4px;right:calc(50% - 20px)}.toasts{bottom:calc(var(--tabbar-h) + 12px + env(safe-area-inset-bottom));left:12px}.ctx-drawer{width:100%;border-left:0;animation-name:sheet-up}.menu.right.down{right:-4px}.palette-overlay{padding:8px;align-items:flex-start}.palette{max-height:calc(100dvh - 16px);border-radius:14px}.ws-switch{display:none}}@media(max-width:480px){.top-actions .hide-xs{display:none}.topbar{padding:0 8px}}.dt-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px}.view-pills{display:flex;gap:6px;flex-wrap:wrap;align-items:center;flex:1;min-width:0}.view-pill{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 12px;border-radius:999px;border:1px solid var(--line-2);background:var(--surface);color:var(--ink-2);font-weight:600;font-size:13px;cursor:pointer;transition:background var(--t-hover) ease-out}.view-pill:hover{background:var(--surface-2)}.view-pill button:focus-visible{outline:2px solid var(--focus);outline-offset:3px;border-radius:999px}.view-pill[aria-pressed=true],.view-pill.on{background:var(--brand-soft);border-color:var(--brand-2);color:var(--brand-dk)}.view-pill .x{border:0;background:none;padding:0;margin-right:-4px;color:inherit;cursor:pointer;display:grid;opacity:.7}.view-pill .x:hover{opacity:1}.col-menu{min-width:220px;max-height:320px;overflow-y:auto}.col-menu label{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:8px;cursor:pointer;font-size:14px}.col-menu label:hover{background:var(--surface-2)}.inline-cell{display:inline-flex;align-items:center;gap:6px;min-height:28px;max-width:100%;border-radius:6px;padding:2px 6px;margin:0 -6px;cursor:text;border:1px solid transparent;background:none;color:inherit;font:inherit;text-align:left}.inline-cell:hover{border-color:var(--line-2);background:var(--surface)}.inline-cell .pencil{opacity:0;color:var(--ink-3)}.inline-cell:hover .pencil,.inline-cell:focus-visible .pencil{opacity:1}.inline-cell-input{width:100%;min-height:30px;padding:3px 8px;font:inherit;font-size:14px;border:1px solid var(--brand-2);border-radius:6px;background:var(--surface);color:var(--ink)}.inline-cell.saving{opacity:.6}.empty-rich{text-align:center;padding:48px 20px}.empty-rich .glyph{width:48px;height:48px;border-radius:14px;background:var(--brand-soft);color:var(--brand-dk);display:grid;place-items:center;margin:0 auto 16px}.empty-rich b{display:block;font-size:17px;margin-bottom:4px}.empty-rich p{margin:0 auto 16px;max-width:420px;color:var(--ink-3)}.sample-toggle{display:inline-flex;align-items:center;gap:10px;margin-top:16px;color:var(--ink-2);font-size:13.5px;cursor:pointer}.switch{position:relative;width:38px;height:22px;flex:none}.switch input{position:absolute;inset:0;opacity:0;width:100%;height:100%;margin:0;cursor:pointer}.switch i{position:absolute;inset:0;border-radius:999px;background:var(--input-line);transition:background var(--t-pop) var(--ease);pointer-events:none}.switch i:after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform var(--t-pop) var(--ease)}.switch input:checked+i{background:var(--brand)}html[data-theme=dark] .switch input:checked+i:after{background:#04211e}.switch input:checked+i:after{transform:translate(16px)}.switch input:focus-visible+i{outline:2px solid var(--focus);outline-offset:2px}.banner{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:10px 16px;border-radius:12px;border:1px solid var(--line);background:var(--info-soft);color:var(--ink);margin-bottom:var(--s2);font-size:14px}.banner.warn{background:var(--warn-soft)}.banner .grow{min-width:200px}.checklist{margin-bottom:var(--s3)}.checklist-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}.checklist ol{list-style:none;margin:0;padding:0;display:grid;gap:8px}.check-step{display:flex;align-items:center;gap:14px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}.check-step .num{width:28px;height:28px;border-radius:50%;border:2px solid var(--input-line);display:grid;place-items:center;font-weight:700;font-size:13px;color:var(--ink-2);flex:none}.check-step.done .num{background:var(--brand);border-color:var(--brand);color:var(--brand-ink)}.check-step.done b{text-decoration:line-through;color:var(--ink-3)}.check-step b{display:block;font-size:14.5px}.check-step small{color:var(--ink-3)}.wizard{max-width:760px}.wizard-steps{display:flex;gap:8px;margin-bottom:var(--s3);overflow-x:auto}.wizard-dot{display:flex;align-items:center;gap:8px;padding:6px 12px;border-radius:999px;border:1px solid var(--line);background:var(--surface);font-size:13px;font-weight:600;color:var(--ink-3);white-space:nowrap;cursor:pointer}.wizard-dot[aria-current=step]{border-color:var(--brand-2);background:var(--brand-soft);color:var(--brand-dk)}.wizard-dot.done{color:var(--ink-2)}.stage-chips{display:flex;flex-wrap:wrap;gap:8px}.stage-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 4px 4px 12px;border:1px solid var(--line-2);border-radius:999px;background:var(--surface);font-weight:600;font-size:13.5px}.stage-chip button{border:0;background:none;width:22px;height:22px;border-radius:50%;cursor:pointer;display:grid;place-items:center;color:var(--ink-3)}.stage-chip button:hover{background:var(--surface-2);color:var(--ink)}.map-row{display:grid;grid-template-columns:minmax(0,1fr) 24px minmax(0,1fr);gap:10px;align-items:center}@media(max-width:600px){.map-row{grid-template-columns:1fr}.map-row>svg{display:none}}.shortcut-list{display:grid;grid-template-columns:1fr auto;gap:8px 24px}.shortcut-list dt{color:var(--ink-2)}.shortcut-list dd{margin:0;display:flex;gap:4px;justify-content:flex-end}.theme-seg{display:inline-flex;border:1px solid var(--line-2);border-radius:999px;overflow:hidden}.theme-seg button{border:0;background:var(--surface);padding:6px 16px;font-weight:600;font-size:13.5px;cursor:pointer;color:var(--ink-2)}.theme-seg button[aria-pressed=true]{background:var(--brand);color:var(--brand-ink)}.mobile-brand{display:none}@media(max-width:899px){.mobile-brand{display:flex}}main.page:focus{outline:none}
