:root{color-scheme:light dark;--accent:#2563eb;--bg:#fbfcfe;--bg-raised:#eff3f9;--chart-shade:rgba(148,163,184,0.22);--chart-final:rgba(37,99,235,0.1);--text:#1e2936;--text-dim:#5b6a7d;--border:#e3e8f1;--positive:#15803d;--negative:#b91c1c;--warning:#b45309;--radius:0.6rem;--radius-tight:0.5rem;--gap:0.75rem;--series-buy:#87cefa;--series-sell:#fa8072;--series-ma:#2563eb;--series-ema:#ea580c;--series-long:#0d9488;--series-strategy:#111827;--series-fast:#ea580c;--series-slow:#2563eb;--series-fft:#86198f;--series-spline:#be185d;--series-kalman:#4d7c0f;--venue-1:#2a78d6;--venue-2:#eb6834;--venue-3:#1baf7a;--venue-4:#eda100;--font:ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--font-mono:ui-monospace,"SF Mono","Cascadia Mono",Menlo,monospace}@media (prefers-color-scheme:dark){:root{--accent:#6c95f5;--bg:#101623;--bg-raised:#1b2334;--chart-shade:rgba(148,163,184,0.13);--chart-final:rgba(108,149,245,0.12);--text:#d5dbe7;--text-dim:#8b98ad;--border:#293349;--positive:#4ade80;--negative:#f87171;--warning:#fbbf24;--series-ma:#5583ea;--series-ema:#d97706;--series-long:#0d9488;--series-strategy:#e5e7eb;--series-fast:#f59e0b;--series-slow:#60a5fa;--series-fft:#7e22ce;--series-spline:#be185d;--series-kalman:#65a30d;--venue-1:#3987e5;--venue-2:#d95926;--venue-3:#199e70;--venue-4:#c98500}}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:var(--font);font-size:15px;line-height:1.45}a{color:var(--accent)}.shell{min-height:100dvh;display:flex;flex-direction:column}.shell-header{display:flex;align-items:center;flex-wrap:wrap;gap:.4rem var(--gap);padding:max(.6rem,env(safe-area-inset-top)) max(1rem,env(safe-area-inset-right)) .6rem max(1rem,env(safe-area-inset-left));border-bottom:1px solid var(--border);background:var(--bg-raised);position:sticky;top:0;z-index:10}.shell-brand{font-weight:650;letter-spacing:-.01em}.shell-brand span{color:var(--accent)}.shell-main{flex:1 1;padding:1rem max(1rem,env(safe-area-inset-right)) max(1rem,env(safe-area-inset-bottom)) max(1rem,env(safe-area-inset-left));display:flex;flex-direction:column;gap:var(--gap);min-width:0}.shell-main>*{min-width:0}.shell-user{display:flex;align-items:center;gap:.5rem;color:var(--text-dim);font-size:.85rem;flex-wrap:wrap;min-width:0}.shell-email{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:14rem}.shell-zone{font-size:.8rem;max-width:13rem;padding:.2rem .4rem}.shell-account{flex-wrap:nowrap}.shell-account button.live.selected{color:var(--negative);border-color:color-mix(in srgb,var(--negative) 45%,transparent)}.shell-role{border:1px solid var(--border);border-radius:999px;padding:.05rem .5rem;font-size:.72rem}@media (max-width:40rem){.shell-email{display:none}.shell-nav{order:3;width:100%;margin:0;gap:1.25rem}}.card{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-raised);padding:.85rem 1rem}.card-empty{color:var(--text-dim)}.metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(9.5rem,1fr));gap:var(--gap)}.metric-label{color:var(--text-dim);font-size:.72rem;text-transform:uppercase;letter-spacing:.04em}.metric-value{font-family:var(--font-mono);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-size:1.25rem;margin-top:.15rem}.metric-value.positive{color:var(--positive)}.metric-value.negative{color:var(--negative)}.metric-value.unknown{color:var(--text-dim)}.badge{display:inline-block;border-radius:999px;padding:.1rem .55rem;font-size:.75rem;font-weight:600;border:1px solid var(--border)}.badge.running{color:var(--positive);border-color:color-mix(in srgb,var(--positive) 40%,transparent)}.badge.paused{color:var(--warning);border-color:color-mix(in srgb,var(--warning) 40%,transparent)}.badge.live,.badge.stopped{color:var(--negative);border-color:color-mix(in srgb,var(--negative) 45%,transparent)}.badge.idle,.badge.paper{color:var(--text-dim)}.badge.idle{border-style:dashed}.login{min-height:100dvh;display:grid;place-items:center;padding:1rem}.login-card{width:min(24rem,100%);gap:var(--gap)}.field,.login-card{display:flex;flex-direction:column}.field{gap:.25rem}.field label{font-size:.8rem;color:var(--text-dim)}input{font:inherit;padding:.5rem .6rem;border-radius:var(--radius-tight);border:1px solid var(--border);background:var(--bg);color:var(--text)}button{font:inherit;font-weight:600;padding:.5rem .9rem;border-radius:var(--radius-tight);border:1px solid transparent;background:var(--accent);color:white;cursor:pointer}button.secondary{background:transparent;border-color:var(--border);color:var(--text)}button[disabled]{opacity:.6;cursor:progress}.error{color:var(--negative);font-size:.85rem}.chart-card{display:flex;flex-direction:column;gap:.6rem}.chart-header{display:flex;align-items:center;justify-content:space-between;gap:var(--gap);flex-wrap:wrap}.chart-canvas{height:min(52vh,26rem);min-height:15rem;width:100%}.chart-caption{font-size:.78rem}.chart-caption,.preview-pnl{margin:0;color:var(--text-dim)}.preview-pnl{display:flex;flex-wrap:wrap;align-items:baseline;gap:.25rem .6rem;font-size:.85rem}.preview-pnl strong{font-size:1.35rem;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--text)}.preview-pnl strong.positive{color:var(--positive)}.preview-pnl strong.negative{color:var(--negative)}.range{display:flex;gap:.3rem;flex-wrap:wrap}.range button{padding:.2rem .55rem;font-size:.8rem;font-weight:500}.range button.selected{border-color:var(--accent);color:var(--accent)}tr.choosable{cursor:pointer}tr.choosable:hover>td{background:var(--bg-raised)}tr.choosable:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}tr.choosable.chosen>td{background:color-mix(in srgb,var(--accent) 24%,var(--bg));font-weight:600}tr.choosable.chosen>td:first-child{box-shadow:inset 4px 0 0 var(--accent)}.market-picker{display:flex;flex-direction:column;gap:.25rem;min-width:0}.market-picker select{width:100%;padding:.3rem .45rem;font-weight:600}.market-picker-note{margin:0;font-size:.85rem;color:var(--text-dim)}.estimators button .swatch{display:inline-block;width:.5rem;height:.5rem;border-radius:50%;margin-right:.3rem;vertical-align:baseline}.estimators button.selected{border-color:currentcolor}.panels{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--gap);align-items:start}.panels>*{min-width:0}@media (min-width:60rem){.panels{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}.panel{display:flex;flex-direction:column;gap:.6rem;min-width:0}.panel-full{grid-column:1/-1}.panel-header{display:flex;align-items:baseline;justify-content:space-between;gap:.3rem var(--gap);flex-wrap:wrap}.panel-header h2{margin:0;font-size:.95rem;font-weight:650}.panel-notice{margin:0;font-size:.82rem;color:var(--text-dim)}.table-scroll{overflow:auto;max-height:18rem;max-width:100%}table{width:100%;border-collapse:collapse;font-size:.85rem}th{position:sticky;top:0;background:var(--bg-raised);text-align:left;font-weight:600;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:var(--text-dim);padding:.3rem .5rem;border-bottom:1px solid var(--border)}td{padding:.32rem .5rem;border-bottom:1px solid color-mix(in srgb,var(--border) 55%,transparent);white-space:nowrap}td.numeric,th.numeric{text-align:right;font-family:var(--font-mono);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}td.positive{color:var(--positive)}td.negative{color:var(--negative)}td.warning-text{color:var(--warning)}.metric-value.small{font-size:1rem}.portfolio-switches{display:flex;flex-wrap:wrap;gap:.5rem}.portfolio-legend{display:flex;flex-wrap:wrap;gap:.35rem 1rem;margin:.75rem 0 .25rem;padding:0;list-style:none;font-size:.82rem;color:var(--text-dim)}.portfolio-legend strong{color:var(--text);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.portfolio-venues th[scope=row]{text-align:left;font-weight:600;text-transform:none;letter-spacing:normal;font-size:inherit;color:var(--text);white-space:nowrap}.cell-note{color:var(--text-dim);font-size:.78rem;font-weight:400}.equity-canvas{height:10rem;width:100%}.controls{gap:var(--gap);font-size:.85rem;color:var(--text-dim)}.controls,.loss-stop{display:flex;align-items:center;flex-wrap:wrap}.loss-stop{gap:.4rem;flex-basis:100%}.loss-stop input{width:4.5rem}button.small{padding:.15rem .5rem;font-size:.78rem;font-weight:500}button.danger-outline{border-color:color-mix(in srgb,var(--negative) 50%,transparent);color:var(--negative)}button.danger{background:var(--negative);border-color:var(--negative);color:white}.shell-nav{display:flex;gap:1rem;font-size:.9rem;margin-right:auto;margin-left:1.5rem}.shell-nav a{color:var(--text-dim);text-decoration:none;padding:.15rem 0;border-bottom:2px solid transparent}.shell-nav a:hover{color:var(--text);border-bottom-color:var(--border)}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));gap:var(--gap)}.subheading{margin:.5rem 0 0;font-size:.85rem;font-weight:650;color:var(--text-dim);text-transform:uppercase;letter-spacing:.04em}select{font:inherit;padding:.5rem .6rem;border-radius:var(--radius-tight);border:1px solid var(--border);background:var(--bg)}.checkbox,select{color:var(--text)}.checkbox{display:flex;align-items:center;gap:.45rem;font-size:.85rem}.checkbox input{width:auto}.inline-fields{display:flex;align-items:center;gap:.45rem;font-size:.85rem;color:var(--text-dim)}.inline-fields input{flex:1 1;min-width:0}.field .metric-label{text-transform:none;letter-spacing:0;font-size:.75rem;line-height:1.35}table caption{caption-side:top;text-align:left;padding-bottom:.35rem}.shell-user .warning-text{color:var(--warning)}.shell-user .negative{color:var(--negative)}@media (pointer:coarse){button,input:not([type=checkbox]),select{min-height:44px}.range button,button.small{min-height:40px;padding-inline:.75rem}.shell-nav a{padding:.6rem 0;min-height:44px;display:inline-flex;align-items:center}.checkbox input{width:1.15rem;height:1.15rem}}@media (max-width:40rem){.chart-canvas{height:min(46vh,20rem)}.table-scroll{max-height:22rem}}.chart-behaviour{display:flex;gap:1.25rem;flex-wrap:wrap;font-size:.78rem;color:var(--text-dim)}.chart-behaviour strong{font-family:var(--font-mono);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--text);font-weight:600}.holding-actions,.holding-sell{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem}.holding-sell input{width:8rem;padding:.15rem .4rem}.holding-note{font-size:.78rem;color:var(--text-dim)}.holding-note.positive{color:var(--positive)}.holding-note.negative{color:var(--negative)}.script-editor{display:flex;flex-direction:column;gap:var(--gap)}.script-editor textarea{font:.85rem/1.5 var(--font-mono);padding:.6rem .7rem;border-radius:var(--radius-tight);border:1px solid var(--border);background:var(--bg);color:var(--text);width:100%;min-height:12rem;resize:vertical;tab-size:2;white-space:pre;overflow-wrap:normal;overflow-x:auto}.script-templates{display:flex;flex-direction:column;gap:.5rem}.script-templates-header{display:flex;flex-direction:column;gap:.2rem}.script-templates-header .subheading{margin:0}.script-template-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(12.5rem,1fr));gap:.5rem}button.script-template{--template-color:var(--accent);display:flex;flex-direction:column;align-items:flex-start;gap:.2rem;min-width:0;padding:.6rem .75rem .65rem;text-align:left;font-weight:400;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-tight);transition:border-color .12s ease,background-color .12s ease,transform .12s ease,box-shadow .12s ease}button.script-template:hover{background:var(--bg-raised);border-color:color-mix(in srgb,var(--template-color) 45%,var(--border));transform:translateY(-1px)}button.script-template:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button.script-template[aria-current=true]{background:color-mix(in srgb,var(--template-color) 9%,var(--bg));border-color:var(--template-color);box-shadow:inset 3px 0 0 var(--template-color)}.script-template-style{display:inline-flex;align-items:center;gap:.35rem;font-size:.68rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--text-dim)}.script-template-style:before{content:"";width:.45rem;height:.45rem;border-radius:50%;background:var(--template-color)}.script-template-title{font-size:.86rem;font-weight:600;line-height:1.3}.script-template-summary{font-size:.76rem;line-height:1.4;color:var(--text-dim)}@media (min-width:64rem){.script-template-grid{grid-template-columns:repeat(5,minmax(0,1fr))}}@media (max-width:34rem){.script-template-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.script-template-summary{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3;overflow:hidden}}@media (prefers-reduced-motion:reduce){button.script-template{transition:none}button.script-template:hover{transform:none}}.script-undo{padding:.4rem .7rem;border-radius:var(--radius-tight);background:var(--bg-raised)}.script-note{font-size:.8rem;line-height:1.45;color:var(--text-dim);margin:0}.script-editor-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--gap)}.script-shortcut{font-family:var(--font-mono);font-size:.75rem}@media (hover:none){.script-shortcut{display:none}}.script-verdict:empty{display:none}.script-verdict{display:flex;flex-direction:column;gap:.2rem;padding:.55rem .75rem;border:1px solid var(--border);border-left-width:3px;border-radius:var(--radius-tight);background:var(--bg-raised);overflow-wrap:anywhere}.script-verdict.ok{border-left-color:var(--positive)}.script-verdict.refused{border-left-color:var(--negative)}.script-verdict-headline{display:flex;flex-wrap:wrap;align-items:baseline;gap:.25rem .75rem;margin:0;font-size:.85rem}.script-verdict.ok .script-verdict-headline strong{color:var(--positive)}.script-verdict.refused .script-verdict-headline strong{color:var(--negative)}.link-button{background:none;border:0;padding:0;font:inherit;font-size:.8rem;color:var(--accent);cursor:pointer;text-decoration:underline;text-underline-offset:2px}.script-reference table{width:100%;border-collapse:collapse;font-size:.8rem;margin:.5rem 0}.script-reference td{padding:.25rem .5rem .25rem 0;border-bottom:1px solid var(--border);vertical-align:top;white-space:normal}.script-reference td:first-child{overflow-wrap:anywhere}.script-reference{max-width:100%;min-width:0}.script-reference summary{cursor:pointer;font-size:.85rem;color:var(--text-dim)}