:root{--ink:#202124;--muted:#6f7379;--page:#f4f2ed;--line:#ded9cd;--mono:"SFMono-Regular", Consolas, "Liberation Mono", monospace;--sans:Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;color:var(--ink);background:var(--page);font-family:var(--sans);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:15px;line-height:1.45}*{box-sizing:border-box}body{min-width:320px;margin:0}#root{min-height:100svh}button:focus-visible,input:focus-visible,textarea:focus-visible{outline-offset:2px;outline:2px solid #1f5eff}.login-shell{color:#f5f0df;background:radial-gradient(circle at 50% 15%,#f2c84b1c,#0000 34rem),#101010;justify-content:center;align-items:center;min-height:100svh;padding:24px;display:flex}.login-card{box-sizing:border-box;background:#181818;border:1px solid #343434;border-radius:12px;gap:22px;width:100%;max-width:430px;padding:32px;display:grid;box-shadow:0 24px 80px #0000006b}.login-brand{align-items:center;gap:14px;display:flex}.login-brand h1{margin:0;font-size:21px;line-height:1.1}.login-brand p{color:#a7a7a7;text-transform:uppercase;margin:4px 0 0;font-size:12px;font-weight:700}.login-divider{background:#343434;height:1px}.login-copy{gap:8px;display:grid}.login-copy h2,.login-copy p{margin:0}.login-copy h2{color:#fff;font-size:22px}.login-copy>p:last-child,.login-status{color:#aaa493;margin:0;line-height:1.55}.login-notice{margin:0}.login-button{width:100%;min-height:46px}.shell{grid-template-columns:286px minmax(0,1fr);min-height:100svh;display:grid}.sidebar{border-right:1px solid var(--line);color:#f5f0df;background:#151515;flex-direction:column;gap:28px;padding:24px;display:flex}.brand{align-items:center;gap:14px;display:flex}.brand-mark{color:#151515;font-family:var(--mono);background:#f2c84b;border-radius:8px;justify-content:center;align-items:center;width:44px;height:44px;font-size:22px;font-weight:800;display:inline-flex}.brand h1,.topbar h2{color:inherit;margin:0;font-size:20px;line-height:1.1}.brand p,.eyebrow,.status-line,.metric span,.data-list dt,.connection label{color:var(--muted);letter-spacing:0;text-transform:uppercase;font-size:12px;font-weight:700}.nav{gap:8px;display:grid}button,input,select,textarea{font:inherit}button{cursor:pointer;border:0}button:disabled{cursor:not-allowed;opacity:.55}.nav-button{color:#d7d1bf;text-align:left;background:0 0;border-radius:7px;align-items:center;gap:10px;min-height:42px;padding:0 12px;display:flex}.nav-button span{color:#f2c84b;font-family:var(--mono);background:#2c2c2c;border-radius:6px;justify-content:center;align-items:center;width:24px;height:24px;font-size:13px;display:inline-flex}.nav-button.active,.nav-button:hover{color:#fff;background:#252525}.connection{gap:12px;margin-top:auto;display:grid}.connection label,.control-row label{gap:7px;display:grid}.signed-in-user{background:#222;border:1px solid #383838;border-radius:7px;gap:4px;padding:10px 11px;display:grid}.signed-in-user span{color:#a7a7a7;text-transform:uppercase;font-size:11px;font-weight:700}.signed-in-user strong{color:#fff;overflow-wrap:anywhere}input,select,textarea{border:1px solid var(--line);box-sizing:border-box;color:var(--ink);background:#fff;border-radius:7px;width:100%;min-height:40px;padding:9px 11px}.sidebar input{color:#fff;background:#222;border-color:#383838}.workspace{background:var(--page);color:var(--ink);min-width:0;padding:24px}.topbar{justify-content:space-between;align-items:center;gap:20px;margin-bottom:18px;display:flex}.eyebrow{margin:0 0 5px}.status-line{border:1px solid var(--line);background:#fff;border-radius:999px;align-items:center;gap:8px;min-height:36px;padding:0 13px;display:inline-flex}.status-dot{background:#a6a6a6;border-radius:999px;width:8px;height:8px}.status-dot.online{background:#24a148}.notice{color:#5d4500;background:#fff7df;border:1px solid #ecd38a;border-radius:8px;margin-bottom:18px;padding:12px 14px}.view{gap:18px;display:grid}.metric-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;display:grid}.metric,.panel{border:1px solid var(--line);background:#fff;border-radius:8px}.metric{gap:8px;min-height:86px;padding:16px;display:grid}.metric strong{font-family:var(--mono);font-size:24px;line-height:1}.metric.good strong{color:#207b3d}.metric.danger strong{color:#b42318}.split{grid-template-columns:minmax(0,1.1fr) minmax(300px,.9fr);gap:18px;display:grid}.panel{padding:18px}.panel h3{margin:0 0 16px;font-size:16px}.data-list{gap:0;margin:0;display:grid}.data-list div{border-top:1px solid var(--line);justify-content:space-between;align-items:center;min-height:43px;display:flex}.data-list div:first-child{border-top:0}.data-list dd{font-family:var(--mono);margin:0}.data-list.compact{margin-top:16px}.chart-shell{gap:14px;display:grid}.chart-header{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.chart-header div{border:1px solid var(--line);background:#f5f6f7;border-radius:7px;gap:5px;min-width:0;padding:11px 12px;display:grid}.chart-header span{color:var(--muted);text-transform:uppercase;font-size:11px;font-weight:700}.chart-header strong{font-family:var(--mono);overflow-wrap:anywhere;font-size:14px}.market-chart{width:100%;height:auto;min-height:260px;max-height:430px;display:block}.chart-bg{fill:#fbfcfd}.chart-grid{stroke:#e5e9ee;stroke-width:1px}.chart-axis{stroke:#aab2bd;stroke-width:1.2px}.chart-label,.reference-label{fill:#727b86;font-family:var(--mono);font-size:11px}.chart-label.end{text-anchor:end}.chart-area{fill:#1f5eff1a}.chart-line{fill:none;stroke:#1f5eff;stroke-linecap:round;stroke-linejoin:round;stroke-width:3px}.chart-point{fill:#fff;stroke:#1f5eff;stroke-width:1.5px}.reference-line{stroke-dasharray:5 5;stroke-width:1.3px}.reference-line.fair,.reference-label.fair{stroke:#7c3aed;fill:#6d28d9}.reference-line.bid,.reference-label.bid{stroke:#207b3d;fill:#207b3d}.reference-line.ask,.reference-label.ask{stroke:#b42318;fill:#b42318}.control-row{gap:14px;display:grid}.form-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;display:grid}.form-grid label,.wide-field{gap:8px;display:grid}.wide-field{margin-top:14px}.wide-field textarea{min-height:150px}.status-pill{color:#2f3640;font-family:var(--mono);background:#eef1f4;border-radius:999px;min-height:28px;padding:5px 10px;display:inline-flex}.status-pill.active{color:#207b3d;background:#e3f6e9}.status-chart{grid-template-columns:220px minmax(0,1fr);align-items:center;gap:22px;display:grid}.pie-chart{width:220px;height:auto;display:block}.pie-ring{fill:#0000;stroke:#e8ecef;stroke-width:6px}.pie-segment{fill:#0000;stroke-linecap:butt;stroke-width:6px;transform-origin:50%;transform:rotate(-90deg)}.pie-total,.pie-caption{fill:var(--ink);font-family:var(--mono);text-anchor:middle}.pie-total{font-size:6px;font-weight:800}.pie-caption{fill:var(--muted);text-transform:uppercase;font-size:3px}.status-legend{gap:10px;display:grid}.status-item{border:1px solid var(--line);background:#f5f6f7;border-radius:7px;grid-template-columns:14px minmax(0,1fr) auto;align-items:center;gap:10px;min-height:58px;padding:10px 12px;display:grid}.status-swatch{border-radius:999px;width:12px;height:12px}.status-item strong,.status-item em{font-family:var(--mono)}.status-item p{color:var(--muted);margin:3px 0 0;font-size:12px}.status-item em{font-style:normal}.mood-panel{grid-template-columns:minmax(220px,1fr) auto minmax(280px,1.4fr);align-items:end;gap:14px;display:grid}.mood-panel label{gap:8px;display:grid}input[type=range]{accent-color:#1f5eff;padding:0}.mood-readout{border:1px solid var(--line);background:#f5f6f7;border-radius:7px;gap:4px;min-width:126px;padding:10px 12px;display:grid}.mood-readout strong{font-family:var(--mono);font-size:22px}.mood-readout span{color:var(--muted);text-transform:uppercase;font-size:12px}.button-row,.toolbar{flex-wrap:wrap;gap:10px;display:flex}.button-row.end{justify-content:flex-end;margin-top:12px}.primary,.danger,.chip,.mini-button,.icon-button{border-radius:7px;min-height:40px;padding:0 14px}.primary{color:#fff;background:#1f5eff}.apple-button{color:#111;background:#fff;border:1px solid #fff;border-radius:7px;min-height:44px;padding:0 14px;font-weight:700}.danger{color:#fff;background:#b42318}.chip{color:#2f3640;background:#eef1f4}.chip.active{color:#fff;background:#151515}.mini-button{color:#fff;background:#151515;min-height:32px}.icon-button{color:#151515;font-family:var(--mono);background:#eef1f4;justify-content:center;align-items:center;width:36px;min-height:36px;padding:0;font-weight:700;display:inline-flex}.modal-backdrop{z-index:20;background:#0a0a0a73;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.npc-editor{border:1px solid var(--line);background:#fff;border-radius:8px;gap:16px;width:min(820px,100%);max-width:820px;max-height:calc(100svh - 48px);padding:18px;display:grid;overflow-y:auto;box-shadow:0 22px 70px #00000038}.editor-header{justify-content:space-between;align-items:start;gap:16px;display:flex}.editor-header h3{margin:0}.editor-summary,.preset-row{flex-wrap:wrap;gap:10px;display:flex}.editor-summary span,.editor-summary strong{border:1px solid var(--line);font-family:var(--mono);background:#f5f6f7;border-radius:7px;padding:8px 10px}.trait-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.trait-grid label,.tuning-grid label{gap:8px;display:grid}.tuning-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;display:grid}.slider-label{justify-content:space-between;align-items:center;display:flex}.slider-label strong{font-family:var(--mono)}textarea{font-family:var(--mono);resize:vertical;min-height:280px;margin-top:14px}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%;min-width:720px}th,td{border-top:1px solid var(--line);text-align:left;white-space:nowrap;padding:12px 10px}th{color:var(--muted);text-transform:uppercase;font-size:12px}td{font-family:var(--mono);font-size:14px}.empty-state{background:#f5f6f7;border-radius:8px;gap:8px;padding:18px;display:grid}.empty-state p{color:var(--muted);max-width:680px;margin:0}@media (width<=980px){.shell{grid-template-columns:1fr}.sidebar{position:static}.metric-grid,.split,.chart-header,.form-grid,.mood-panel,.status-chart,.trait-grid,.tuning-grid{grid-template-columns:1fr}.pie-chart{justify-self:center}.topbar{flex-direction:column;align-items:flex-start}}
