*{box-sizing:border-box}html,body{height:100%;margin:0}body{font-family:var(--font);background:var(--bg);color:var(--text);overflow:hidden;font-size:14px;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit;color:inherit}button{border:0}a{color:inherit;text-decoration:none}.hidden{display:none!important}.mono{font-family:var(--mono)}.muted{color:var(--muted)}.positive{color:var(--win)!important}.negative{color:var(--loss)!important}.warning{color:var(--warn)!important}.divider{height:1px;background:var(--line);margin:8px 0}.scroll-thin{scrollbar-width:thin;scrollbar-color:#2a3340 transparent}.scroll-thin::-webkit-scrollbar{width:6px;height:6px}.scroll-thin::-webkit-scrollbar-thumb{background:#2a3340;border-radius:20px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:34px;padding:0 12px;border-radius:var(--radius-sm);background:var(--panel-2);border:1px solid var(--line);cursor:pointer;transition:transform var(--fast),border-color var(--fast),background var(--fast),color var(--fast);white-space:nowrap}.btn:hover{background:var(--panel-3);border-color:#344052}.btn:active{transform:scale(.98)}.btn.primary{background:var(--accent);border-color:var(--accent);color:#04110e;font-weight:800}.btn.ghost{background:transparent}.btn.danger{border-color:rgba(240,68,100,.45);color:#ff8298}.icon-btn{width:34px;height:34px;padding:0}.field{display:flex;flex-direction:column;gap:6px}.field label{font-size:11px;color:var(--muted);font-weight:650}.input,.select,.textarea{width:100%;height:36px;background:#090c11;border:1px solid var(--line);border-radius:var(--radius-sm);outline:none;padding:0 10px;transition:border-color var(--fast),box-shadow var(--fast)}.textarea{height:90px;padding:10px;resize:vertical}.input:focus,.select:focus,.textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.pill{display:inline-flex;align-items:center;gap:5px;padding:3px 7px;border:1px solid var(--line);border-radius:999px;color:var(--muted);font-size:10px;font-weight:700;letter-spacing:.02em}.dot{width:7px;height:7px;border-radius:99px;background:var(--muted)}.dot.online{background:var(--win);box-shadow:0 0 0 3px rgba(22,199,154,.11)}.kbd{font-family:var(--mono);font-size:10px;border:1px solid var(--line);background:#0a0e13;padding:2px 5px;border-radius:5px;color:var(--muted)}

/* v1.0.11 UI primitives */
html{color-scheme:dark}.ui-icon{display:block;flex:0 0 auto}.input,.select,.textarea,select,input,textarea{color-scheme:dark}select option,select optgroup{background:#0d1117!important;color:#eef2f7!important}.select.compact{height:30px;padding:0 7px}.compact-input{height:30px;border:1px solid var(--line);background:var(--panel);color:var(--text);border-radius:7px;padding:0 8px;outline:none}.compact-input:focus{border-color:var(--accent)}.tiny{font-size:10px}.empty-state{padding:12px}.link-btn{background:transparent;color:var(--accent);cursor:pointer;font-size:10px;padding:0}.icon-only{width:31px;padding:0}.muted-control{opacity:.42}.btn.compact-btn{min-height:30px;height:30px;padding:0 8px;font-size:10px}

/* STRATTON v1.0.11 — oscillator deck: every oscillator owns a resizable/collapsible pane */
.osc-deck{min-height:0;overflow:auto;background:var(--chart-bg);scrollbar-width:thin;scrollbar-color:#2a3340 transparent}
.osc-deck.empty{display:grid;place-items:center;min-height:48px}
.osc-empty{padding:12px 14px;color:var(--muted);font-size:10px;text-align:center}
.osc-card{--osc-height:118px;position:relative;flex:0 0 auto;height:var(--osc-height);min-height:56px;max-height:96vh;background:var(--chart-bg);border-top:1px solid var(--line);overflow:hidden}
.osc-card:first-child{border-top:0}
.osc-head{position:absolute;left:0;right:0;top:7px;height:23px;display:flex;align-items:center;gap:7px;padding:0 6px 0 9px;background:linear-gradient(90deg,rgba(255,255,255,.018),transparent);border-bottom:1px solid rgba(255,255,255,.035);user-select:none}
.osc-head strong{font-size:10px;letter-spacing:.07em;text-transform:uppercase;color:var(--text)}
.osc-head span{font-size:9px;color:var(--muted);opacity:.8}
.osc-spacer{flex:1}
.osc-collapse{width:22px;height:18px;display:grid;place-items:center;background:transparent;color:var(--muted);border-radius:4px;cursor:pointer;font:800 13px/1 var(--mono)}
.osc-collapse:hover{background:var(--panel-2);color:var(--text)}
.osc-canvas-wrap{position:absolute;left:0;right:0;top:30px;bottom:0;overflow:hidden}
.osc-canvas-wrap canvas{position:absolute;inset:0;width:100%;height:100%;touch-action:none}
.osc-resizer{position:absolute;left:0;right:0;top:0;height:7px;cursor:ns-resize;background:transparent;z-index:8;touch-action:none}
.osc-resizer:after{content:"";position:absolute;left:50%;top:2px;width:42px;height:2px;transform:translateX(-50%);border-radius:4px;background:rgba(255,255,255,.13);transition:background .15s,width .15s}
.osc-resizer:hover:after,.osc-resizing .osc-resizer:after{width:52px;background:var(--accent)}
.osc-card.collapsed{height:30px!important;min-height:30px;max-height:30px}
.osc-card.collapsed .osc-canvas-wrap,.osc-card.collapsed .osc-resizer{display:none}
.osc-card.collapsed .osc-head{border-bottom:0}
.osc-resizing{cursor:ns-resize!important}.osc-resizing *{user-select:none!important}
.compact-osc .osc-head span{display:none}.compact-osc .osc-card{--osc-height:96px}.compact-osc .osc-head{height:22px;top:7px}.compact-osc .osc-canvas-wrap{top:29px}
[data-theme="web3"] .osc-head{background:linear-gradient(90deg,rgba(124,102,255,.08),rgba(24,214,174,.02),transparent)}
[data-theme="clay"] .osc-card{background:#111720;border-color:rgba(255,255,255,.025)}


/* STRATTON v1.0.11 — compact readability / motion baseline */
button,.btn,.rail-btn,.mini-control,.tool-btn,.asset-tab,.signal-card{touch-action:manipulation}
button,.btn,.rail-btn,.mini-control,.tool-btn,.asset-tab,.signal-card,.drawer,.modal,.floating-window{transition-timing-function:var(--ease)}
.scroll-thin,.osc-deck{scroll-behavior:smooth}
::placeholder{color:#697585;opacity:1}

/* v1.0.16 robust oscillator drag */
.osc-resizer{touch-action:none!important;user-select:none;-webkit-user-select:none}
html.osc-resize-active,html.osc-resize-active *{cursor:ns-resize!important;user-select:none!important;-webkit-user-select:none!important}


/* STRATTON v1.0.16 — page-side half of the login-to-terminal transition */
.terminal-entry-transition{position:fixed;inset:0;z-index:99999;pointer-events:none;overflow:hidden}.terminal-entry-transition:before,.terminal-entry-transition:after{content:"";position:absolute;left:0;right:0;height:50.5%;background:linear-gradient(180deg,#010204,#03070b);transition:transform .72s cubic-bezier(.22,.74,.16,1)}.terminal-entry-transition:before{top:0;transform:translateY(0)}.terminal-entry-transition:after{bottom:0;transform:translateY(0)}.terminal-entry-transition span{position:absolute;z-index:3;left:4%;right:4%;top:50%;height:1px;background:linear-gradient(90deg,transparent,rgba(24,214,174,.25),rgba(239,246,250,.98),rgba(24,214,174,.25),transparent);box-shadow:0 0 22px rgba(239,246,250,.48),0 0 50px rgba(24,214,174,.18);opacity:1;transform:scaleX(1);transition:opacity .36s .14s,transform .48s .08s cubic-bezier(.2,.8,.2,1)}.terminal-entry-transition.reveal:before{transform:translateY(-102%)}.terminal-entry-transition.reveal:after{transform:translateY(102%)}.terminal-entry-transition.reveal span{opacity:0;transform:scaleX(.18)}
@media(prefers-reduced-motion:reduce){.terminal-entry-transition:before,.terminal-entry-transition:after{transition-duration:.24s}.terminal-entry-transition span{transition-duration:.2s}}

/* STRATTON v1.0.18 — viewport resize shield */
.osc-resize-shield{position:fixed;inset:0;z-index:2147483600;background:transparent;cursor:ns-resize;touch-action:none;user-select:none;-webkit-user-select:none}
html.osc-resize-active,html.osc-resize-active body{overscroll-behavior:none;touch-action:none}
