:root{--bg:#f4f5f7;--surface:#fff;--surface-2:#f7f8fa;--text:#0b0f19;--muted:#667085;--faint:#98a2b3;--border:rgba(15,23,42,.08);--accent:#2f6bff;--accent-weak:#eaf0ff;--good:#12a150;--good-weak:#e7f7ee;--bad:#e5484d;--bad-weak:#fdeaea;--warn:#d9930a;--warn-weak:#fbf1dd;--c-green:#12a150;--c-blue:#2f6bff;--c-amber:#e0a10b;--c-red:#e5484d;--c-purple:#7c5cff;--c-orange:#f5871f;--c-teal:#109e8f;--c-pink:#d4537e;--radius:16px;--radius-sm:10px;--shadow:0 0 0 1px rgba(15,23,42,.03),0 1px 2px rgba(15,23,42,.05),0 8px 24px -14px rgba(15,23,42,.18);--shadow-hover:0 0 0 1px rgba(15,23,42,.05),0 2px 6px rgba(15,23,42,.08),0 16px 32px -16px rgba(15,23,42,.22);--sidebar-w:232px;--sidebar-w-collapsed:72px;--font:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;color-scheme:light}[data-theme=dark]{--bg:#0b0f19;--surface:#151b2b;--surface-2:#1b2233;--text:#e6e9f0;--muted:#9aa4b8;--faint:#6b7687;--border:hsla(0,0%,100%,.1);--accent:#5b8cff;--accent-weak:rgba(47,107,255,.2);--good:#34d17f;--good-weak:rgba(18,161,80,.2);--bad:#ff6166;--bad-weak:rgba(229,72,77,.2);--warn:#f0b429;--warn-weak:rgba(217,147,10,.2);--shadow:0 0 0 1px hsla(0,0%,100%,.05),0 10px 30px -18px rgba(0,0,0,.7);--shadow-hover:0 0 0 1px hsla(0,0%,100%,.08),0 16px 40px -18px rgba(0,0,0,.8);color-scheme:dark}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:var(--font);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none}h1{font-size:26px;font-weight:700;letter-spacing:-.02em;margin:0 0 4px}h2{font-size:15px;font-weight:650;margin:0 0 14px}.subtitle{margin:0 0 22px;font-size:14px}.muted,.subtitle{color:var(--muted)}.app{--sw:var(--sidebar-w)}.app.is-collapsed{--sw:var(--sidebar-w-collapsed)}.sidebar{position:fixed;top:0;left:0;bottom:0;width:var(--sw);background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:16px 12px;gap:6px;transition:width .18s ease;z-index:20;overflow:hidden}.brand{display:flex;align-items:center;gap:10px;padding:6px 8px 14px}.brand-mark{flex:none;width:34px;height:34px;border-radius:10px;background:linear-gradient(135deg,var(--accent),#6ea0ff);color:#fff;font-weight:800;display:grid;place-items:center;font-size:17px}img.brand-mark{object-fit:cover;background:#fff}.brand-text{font-weight:700;font-size:15px;line-height:1.15;white-space:nowrap}.brand-text small{display:block;color:var(--muted);font-weight:500;font-size:11px}.nav{display:flex;flex-direction:column;gap:2px;margin-top:4px}.collapse-btn,.nav-item{display:flex;align-items:center;gap:12px;padding:10px;border-radius:12px;color:var(--muted);font-weight:550;font-size:14px;white-space:nowrap;border:none;background:none;cursor:pointer;width:100%;text-align:left;font-family:inherit}.collapse-btn:hover,.nav-item:hover{background:var(--surface-2);color:var(--text);text-decoration:none}.nav-item.active{background:color-mix(in srgb,var(--tab) 12%,transparent);color:var(--text)}.nav-item.active .nav-label{color:var(--tab);font-weight:650}.nav-icon{flex:none;display:grid;place-items:center;width:24px;height:24px;color:var(--tab,var(--muted))}.collapse-btn,.collapse-btn .nav-icon{color:var(--faint)}.collapse-btn,.nav-user{margin-top:auto}.nav-user{display:flex;align-items:center;gap:12px;padding:8px 10px}.nav-user+.collapse-btn{margin-top:8px}.app.is-collapsed .nav-user{justify-content:center;padding-left:0;padding-right:0}.app.is-collapsed .nav-user .nav-label{display:none}.topbar .spacer{flex:1 1}.app.is-collapsed .brand-text,.app.is-collapsed .nav-label{display:none}.app.is-collapsed .brand,.app.is-collapsed .collapse-btn,.app.is-collapsed .nav-item{justify-content:center;padding-left:0;padding-right:0}.main{margin-left:var(--sw);padding:30px 34px 60px;max-width:1180px;transition:margin-left .18s ease}.app:not([data-ready=true]) .main,.app:not([data-ready=true]) .sidebar{transition:none}.mobilenav,.topbar{display:none}.auth-brand{display:flex;align-items:center;gap:10px;padding:22px 26px}.auth-main{display:grid;place-items:center;padding:12px 20px 48px;min-height:calc(100vh - 120px)}.card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px}a.card,a.item{color:inherit;text-decoration:none;display:block}.card.clickable{cursor:pointer;transition:box-shadow .15s ease,transform .15s ease}.card.clickable:hover{box-shadow:var(--shadow-hover);transform:translateY(-2px)}.card.clickable:hover .go{opacity:1;transform:translateX(0)}.card .go{position:absolute;top:16px;right:16px;color:var(--muted);opacity:0;transform:translateX(-4px);transition:opacity .15s,transform .15s;z-index:1}.tint{position:relative;overflow:hidden;--tint:var(--c-blue)}.tint:before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(130% 120% at 0 0,color-mix(in srgb,var(--tint) 16%,transparent) 0,transparent 52%)}.tint>*{position:relative}.tint.green{--tint:var(--c-green)}.tint.blue{--tint:var(--c-blue)}.tint.amber{--tint:var(--c-amber)}.tint.red{--tint:var(--c-red)}.tint.purple{--tint:var(--c-purple)}.tint.orange{--tint:var(--c-orange)}.tint.teal{--tint:var(--c-teal)}.tint.pink{--tint:var(--c-pink)}.brand-tint{position:relative;overflow:hidden}.brand-tint:before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(120% 120% at 0 0,color-mix(in srgb,#1aa3ff 24%,transparent) 0,transparent 55%),radial-gradient(120% 120% at 100% 100%,color-mix(in srgb,var(--c-purple) 26%,transparent) 0,transparent 55%)}.brand-tint>*{position:relative}.chip{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;color:#fff;background:var(--tint,var(--c-blue));box-shadow:0 4px 12px -4px var(--tint)}.chip.sm{width:32px;height:32px;border-radius:9px}.chip.green{background:var(--c-green);box-shadow:0 4px 12px -4px var(--c-green)}.chip.blue{background:var(--c-blue);box-shadow:0 4px 12px -4px var(--c-blue)}.chip.amber{background:var(--c-amber);box-shadow:0 4px 12px -4px var(--c-amber)}.chip.red{background:var(--c-red);box-shadow:0 4px 12px -4px var(--c-red)}.chip.purple{background:var(--c-purple);box-shadow:0 4px 12px -4px var(--c-purple)}.chip.orange{background:var(--c-orange);box-shadow:0 4px 12px -4px var(--c-orange)}.chip.teal{background:var(--c-teal);box-shadow:0 4px 12px -4px var(--c-teal)}.chip.pink{background:var(--c-pink);box-shadow:0 4px 12px -4px var(--c-pink)}.grid{display:grid;grid-gap:16px;gap:16px}.stats{grid-template-columns:repeat(auto-fill,minmax(190px,1fr))}.cols-2{grid-template-columns:1fr 1fr}.mb{margin-bottom:22px}.card .k,.stat .k{color:var(--muted);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.04em}.card .v,.stat .v{font-size:26px;font-weight:750;letter-spacing:-.02em;margin-top:8px}.stat .sub{color:var(--faint);font-size:12px;margin-top:2px}.cards{grid-gap:16px;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));margin-bottom:22px}.cards,.cols{display:grid;gap:16px}.cols{grid-template-columns:1fr 1fr;grid-gap:16px}@media (max-width:860px){.cols{grid-template-columns:1fr}}.pill{gap:6px;font-size:11px;font-weight:650;text-transform:uppercase;letter-spacing:.04em}.badge,.pill{display:inline-flex;align-items:center;color:var(--muted)}.badge{padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600;background:var(--surface-2)}.badge.blue{background:var(--accent-weak);color:var(--accent)}.badge.good{background:var(--good-weak);color:var(--good)}.badge.bad{background:var(--bad-weak);color:var(--bad)}.badge.warn{background:var(--warn-weak);color:var(--warn)}.list{gap:12px}.item,.list{display:flex;flex-direction:column}.item{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px;gap:8px;transition:box-shadow .15s ease,transform .15s ease}.item:hover{box-shadow:var(--shadow-hover)}.item .top{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.item .title{font-size:15px;font-weight:600;letter-spacing:-.01em}.item .meta{display:flex;align-items:center;gap:14px;flex-wrap:wrap;color:var(--faint);font-size:12.5px}.item .meta a{display:inline-flex;align-items:center;gap:4px;color:var(--accent);font-weight:600}.spacer{flex:1 1}.section-head{display:flex;align-items:baseline;justify-content:space-between;margin:26px 0 14px}.section-head h2{margin:0}.section-head .count{color:var(--faint);font-size:13px}.toast{padding:12px 14px;border-radius:12px;margin-bottom:16px;font-size:14px;font-weight:500}.toast.ok{background:var(--good-weak);color:var(--good)}.toast.err{background:var(--bad-weak);color:var(--bad)}.banner{background:var(--warn-weak);color:var(--warn);border-radius:12px;padding:12px 14px;margin-bottom:18px;font-size:13.5px;font-weight:500}.group{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px 22px;margin-bottom:16px}.group>h2{color:var(--text);display:flex;gap:10px}.group>h2,.row{align-items:center}.row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,340px);grid-gap:18px;gap:18px;padding:14px 0;border-top:1px solid var(--border)}.row:first-of-type{border-top:none;padding-top:4px}.row label{font-weight:600;font-size:14px}.row .desc{color:var(--muted);font-size:12.5px;margin-top:3px}input[type=number],input[type=password],input[type=text],select,textarea{width:100%;background:var(--surface);border:1px solid var(--border);color:var(--text);border-radius:10px;padding:10px 12px;font:inherit;font-size:14px;transition:border-color .12s,box-shadow .12s}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-weak)}textarea{resize:vertical}button{background:var(--accent);color:#fff;border:none;border-radius:10px;padding:10px 16px;font:inherit;font-weight:650;font-size:14px;cursor:pointer;transition:filter .12s,background .12s}button:hover{filter:brightness(1.05)}button:disabled{opacity:.45;cursor:not-allowed;filter:none}button.secondary{background:var(--surface);color:var(--text);border:1px solid var(--border)}button.secondary:hover{background:var(--surface-2);filter:none}button.danger{background:var(--bad)}.toolbar{display:flex;gap:10px;flex-wrap:wrap;margin:16px 0}.switch,.toolbar{align-items:center}.switch{display:inline-flex;gap:8px;font-size:14px;color:var(--text);cursor:pointer}.table-card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}table{width:100%;border-collapse:collapse}td,th{text-align:left;padding:13px 16px;border-bottom:1px solid var(--border);font-size:14px}th{color:var(--muted);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.04em;background:var(--surface-2)}tr:last-child td{border-bottom:none}tbody tr:hover{background:var(--surface-2)}.conn{display:flex;align-items:flex-start;gap:14px}.conn .conn-body{flex:1 1;min-width:0}.conn .conn-title{font-size:16px;font-weight:700;letter-spacing:-.01em;display:flex;align-items:center;gap:10px}.conn .conn-desc{color:var(--muted);font-size:13px;margin-top:4px}.conn .conn-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:14px}.hint{color:var(--faint);font-size:12.5px;margin-top:8px}.hint code,code.kbd{background:var(--surface-2);border:1px solid var(--border);border-radius:6px;padding:1px 6px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;color:var(--text)}.steps{margin:8px 0 0;padding-left:18px;color:var(--muted);font-size:13px}.steps li{margin:4px 0}.mono-mark{font-size:13px;font-weight:800}.pick-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));grid-gap:10px;gap:10px}.pick{text-align:left;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:10px;display:flex;gap:10px;align-items:flex-start;cursor:pointer;color:inherit;font:inherit;box-shadow:var(--shadow);transition:box-shadow .12s,border-color .12s}.pick:hover{box-shadow:var(--shadow-hover)}.pick.selected{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-weak),var(--shadow)}.pick .pick-noimg,.pick img{width:52px;height:52px;border-radius:8px;object-fit:cover;flex:none;background:var(--surface-2)}.pick-title{display:block;font-weight:600;font-size:13px;margin-top:4px;line-height:1.3}.gen{display:flex;gap:14px;margin:12px 0 4px}.gen textarea{flex:1 1;min-height:160px}.gen-img{width:180px;height:180px;object-fit:cover;border-radius:12px;flex:none;background:var(--surface-2);border:1px solid var(--border)}.platform-row{display:flex;gap:18px;align-items:center;flex-wrap:wrap;margin:10px 0 2px}.platform-row .switch{font-weight:600}.cats{display:flex;gap:8px;overflow-x:auto;padding-bottom:6px;margin-bottom:12px;-webkit-overflow-scrolling:touch}.cat{flex:none;display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border-radius:999px;background:var(--surface);box-shadow:var(--shadow);color:var(--muted);font-weight:600;font-size:13.5px;cursor:pointer;border:none;font-family:inherit;white-space:nowrap}.cat:hover{color:var(--text)}.cat.active{background:color-mix(in srgb,var(--tab) 14%,transparent);color:var(--tab)}.cat .dot{width:9px;height:9px;border-radius:999px;background:var(--tab)}.cat-dirty{width:7px;height:7px;border-radius:999px;background:var(--warn);margin-left:2px}@media (max-width:720px){.pick-grid{grid-template-columns:1fr}.gen{flex-direction:column}.gen-img{width:100%;height:200px}}.bars{display:flex;flex-direction:column;gap:10px}.bar-row{display:grid;grid-template-columns:140px 1fr 48px;align-items:center;grid-gap:12px;gap:12px;font-size:13px}.bar-row .lbl{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bar-track{background:var(--surface-2);height:22px;overflow:hidden}.bar-fill,.bar-track{display:block;border-radius:999px}.bar-fill{background:linear-gradient(90deg,var(--accent),#6ea0ff);height:100%;min-width:3px}.bar-row .val{text-align:right;font-weight:650;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}@media (max-width:860px){.cols-2{grid-template-columns:1fr}}@media (max-width:720px){.sidebar{display:none}.main{margin-left:0;padding:70px 16px 92px}.topbar{display:flex;align-items:center;gap:10px;position:fixed;top:0;left:0;right:0;height:56px;padding:0 16px;z-index:30;background:var(--surface);border-bottom:1px solid var(--border)}.topbar .brand-mark{width:30px;height:30px;border-radius:9px;font-size:15px}.topbar .tb-text{display:flex;flex-direction:column;line-height:1.12}.topbar .tb-title{font-weight:750;font-size:15px;letter-spacing:-.01em}.topbar .tb-text small{color:var(--muted);font-size:11px;font-weight:500}h1{font-size:22px}.row{grid-template-columns:1fr;gap:8px;align-items:stretch}.row label{font-size:14px}.table-card{overflow-x:auto}table{min-width:560px}.bar-row{grid-template-columns:92px 1fr 40px;gap:8px;font-size:12.5px}.bar-track{height:18px}.cal-grid{gap:3px!important}.cal-day{min-height:44px!important;padding:4px!important}.cal-dot{width:5px!important;height:5px!important}.vol-chart{overflow-x:auto}.vol-chart>div{min-width:420px}.mobilenav{display:flex;position:fixed;bottom:0;left:0;right:0;z-index:30;background:var(--surface);border-top:1px solid var(--border);box-shadow:0 -6px 20px -12px rgba(15,23,42,.35);padding:6px 6px calc(6px + env(safe-area-inset-bottom));justify-content:space-around}.m-item{flex:1 1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 4px;color:var(--faint);font-size:10.5px;font-weight:600;border-radius:10px}.m-item svg{color:var(--tab,var(--faint))}.m-item.active{color:var(--tab);background:color-mix(in srgb,var(--tab) 12%,transparent)}.m-item:hover{text-decoration:none}}.cat:focus-visible,.collapse-btn:focus-visible,.m-item:focus-visible,.nav-item:focus-visible,.pick:focus-visible,:where(a,button,[role=button],summary):focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:8px}input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.sk{background:linear-gradient(90deg,var(--surface-2) 25%,color-mix(in srgb,var(--surface-2) 55%,var(--border)) 37%,var(--surface-2) 63%);background-size:400% 100%;border-radius:6px;animation:sk 1.4s ease infinite}@keyframes sk{0%{background-position:100% 50%}to{background-position:0 50%}}@media (prefers-reduced-motion:reduce){.sk{animation:none}}.cl-card,.cl-rootBox{color-scheme:light}.cl-rootBox input,.cl-rootBox input[type]{background:#fff;color:#1a1a2e;border:1px solid rgba(15,23,42,.16)}.cl-rootBox input::placeholder{color:#8a90a2}