:root{--bg: #0b1020;--bg-raised: #121a2b;--bg-inset: #090e1a;--line: #243044;--text: #e8eef8;--muted: #93a3bb;--faint: #6d7e99;--accent: #5ee0b5;--sky: #8fd3ff;--sky-strong: #3aa0e8;--danger: #ff8b8b;--danger-bg: #3a1c24;--amber: #f3c96b;--radius: 10px;--font: "Segoe UI", "Avenir Next", system-ui, sans-serif;--mono: ui-monospace, "SFMono-Regular", "Cascadia Code", monospace;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}*{scrollbar-width:thin;scrollbar-color:#33415c transparent}.app{height:100dvh;display:flex;flex-direction:column;min-height:0}.toolbar{display:flex;align-items:center;gap:10px;padding:10px 14px;background:linear-gradient(180deg,#162033,#10182a);border-bottom:1px solid var(--line);flex-wrap:wrap}.brand{min-width:148px;margin-right:4px}.brand h1{margin:0;font-size:1.05rem;letter-spacing:-.02em;color:var(--sky);font-weight:700}.brand h1:after{content:"";display:block;height:2px;width:72px;margin-top:4px;border-radius:99px;background:linear-gradient(90deg,var(--accent),transparent)}.brand p{margin:5px 0 0;font-size:.68rem;color:var(--faint);letter-spacing:.08em;text-transform:uppercase}.status{flex:1 1 180px;margin:0;color:var(--muted);font-size:.8rem;min-width:0}.btn,.select,.palette-item,.linkish{font:inherit}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid transparent;background:var(--sky-strong);color:#041018;font-weight:650;font-size:.85rem;padding:8px 12px;border-radius:8px;cursor:pointer}.btn:hover{filter:brightness(1.08)}.btn.danger{background:transparent;color:var(--danger);border-color:#6a3038}.btn.danger:hover{background:var(--danger-bg);filter:none}.btn:focus-visible,.select:focus-visible,.palette-item:focus-visible,.field input:focus-visible,.field select:focus-visible,.linkish:focus-visible{outline:2px solid var(--sky);outline-offset:2px}.select{background:#1a2438;color:var(--text);border:1px solid var(--line);border-radius:8px;padding:8px 12px;font-size:.85rem}.workspace{flex:1;min-height:0;display:grid;grid-template-columns:220px minmax(0,1fr) 300px}.palette{overflow:auto;background:var(--bg-raised);border-right:1px solid var(--line);padding:14px 12px 24px}.palette h2,.cat h3{margin:0 0 8px;font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--faint);font-weight:650}.cat{margin-bottom:16px}.palette-item{width:100%;text-align:left;background:#1a2438;color:var(--text);border:1px solid var(--line);border-radius:8px;padding:8px 10px;margin-bottom:6px;cursor:grab;font-size:.84rem}.palette-item:hover{border-color:#3d5478;background:#202c44}.palette-item:active{cursor:grabbing}.stage-wrap{position:relative;min-width:0;min-height:0;overflow:auto;background:var(--bg-inset)}.stage{width:1400px;height:900px;min-width:100%;min-height:100%;display:block;background:radial-gradient(900px 420px at 12% 0%,rgba(94,224,181,.07),transparent 55%),var(--bg-inset);touch-action:pan-x pan-y}.block{touch-action:none}.empty{position:absolute;left:50%;top:38%;transform:translate(-50%,-50%);width:min(440px,calc(100% - 32px));text-align:center;pointer-events:none;color:var(--muted);z-index:1}.empty strong{display:block;color:var(--text);font-size:1.2rem;margin-bottom:6px}.empty p{margin:0;line-height:1.45;font-size:.92rem}.connect-banner{position:sticky;top:0;z-index:2;background:#10283a;color:var(--sky);font-size:.8rem;padding:7px 12px;border-bottom:1px solid #1e4e6e}.inspector{overflow:auto;background:var(--bg-raised);border-left:1px solid var(--line);padding:12px;display:flex;flex-direction:column;gap:12px}.card{background:#101828;border:1px solid var(--line);border-radius:var(--radius);padding:14px}.card h3{margin:0;color:var(--sky);font-size:1rem}.card h4{margin:0 0 8px;font-size:.78rem;letter-spacing:.04em;text-transform:uppercase;color:var(--faint)}.card-head{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px}.muted{color:var(--muted);font-size:.86rem;line-height:1.45;margin:8px 0 0}.stack{display:flex;flex-direction:column;gap:10px}.linkish{background:transparent;border:0;color:var(--danger);cursor:pointer;font-size:.75rem;padding:4px 6px;border-radius:6px}.linkish:hover{background:var(--danger-bg)}.field label{display:block;font-size:.78rem;color:var(--muted);margin-bottom:4px}.field input,.field select{width:100%;padding:8px 10px;background:#1a2438;color:var(--text);border:1px solid var(--line);border-radius:8px;font:inherit;font-size:.88rem}.detector-list{list-style:none;margin:0;padding:0}.detector-list li{display:flex;justify-content:space-between;gap:10px;padding:8px 0;border-bottom:1px solid var(--line);font-size:.84rem;color:var(--muted)}.detector-list strong{color:var(--text);font-weight:600}.readout{font-family:var(--mono);color:var(--accent);white-space:nowrap}.stale{background:#2c2612;color:var(--amber);border-radius:8px;padding:8px 10px;font-size:.82rem}.error{background:var(--danger-bg);color:var(--danger);border-radius:8px;padding:8px 10px;font-size:.85rem}.log{background:var(--bg-inset);border-radius:8px;padding:8px;font-family:var(--mono);font-size:.68rem;line-height:1.4;color:var(--faint);max-height:220px;overflow:auto;white-space:pre-wrap;margin:8px 0 0}details summary{cursor:pointer;color:var(--muted);font-size:.8rem}details summary:focus-visible{outline:2px solid var(--sky);outline-offset:2px}.cursor-pointer{cursor:pointer}.cursor-move{cursor:grab}.pointer-events-none{pointer-events:none}.select-none{-webkit-user-select:none;user-select:none}@media(max-width:900px){.workspace{grid-template-columns:1fr;grid-template-rows:auto minmax(280px,1fr) minmax(140px,36vh)}.palette{border-right:0;border-bottom:1px solid var(--line);max-height:156px;display:flex;gap:12px;overflow-x:auto;overflow-y:hidden;padding:10px}.palette h2{display:none}.cat{min-width:148px;margin:0}.inspector{border-left:0;border-top:1px solid var(--line)}.brand p{display:none}}@media(max-width:420px){.toolbar{padding:8px;gap:6px}.btn,.select{padding:8px 10px}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}
