:root{color:#f8fff9;font-synthesis:none;text-rendering:optimizelegibility;--canvas:#06100b;--surface:#102219;--surface-raised:#183328;--surface-soft:#1d3b2e;--surface-inset:#09150f;--positive-surface:#123323;--positive-raised:#194530;--warning-surface:#302511;--danger-surface:#35161a;--line:#4d705e;--line-strong:#739481;--text:#f8fff9;--muted:#c9d7cf;--dim:#a7baaf;--green:#78e8a9;--green-bright:#a4ffca;--amber:#ffd683;--red:#ff9b92;--price-up:#7cf2ad;--price-down:#ff968d;--action-text:#07120b;--summary-start:#1b3a2c;--summary-end:#102219;--mono:"SFMono-Regular", Consolas, "Liberation Mono", ui-monospace, monospace;background:#06100b;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans TC,sans-serif}html[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--canvas:#f3f7f4;--surface:#fff;--surface-raised:#eaf3ed;--surface-soft:#dbece1;--surface-inset:#f7faf8;--positive-surface:#e1f3e8;--positive-raised:#cce9d7;--warning-surface:#fff1cf;--danger-surface:#ffe7e8;--line:#a7c0b1;--line-strong:#668875;--text:#13251b;--muted:#40594a;--dim:#5d7467;--green:#147a49;--green-bright:#08683a;--amber:#8a5900;--red:#b92f3b;--price-up:#087640;--price-down:#c12f3c;--action-text:#fff;--summary-start:#dceee3;--summary-end:#fff}*{box-sizing:border-box}html{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;background:var(--canvas);font-size:18px}body{min-width:320px;min-height:100vh;color:var(--text);background:var(--canvas);margin:0}button{font:inherit}button:focus-visible{outline:2px solid var(--green-bright);outline-offset:3px}.auth-screen{place-items:center;min-height:100vh;padding:24px;display:grid}.auth-panel{border:1px solid var(--line-strong);background:var(--surface);width:min(420px,100%);padding:34px}.auth-brand{border:1px solid var(--line-strong);background:var(--surface-raised);align-items:flex-end;gap:4px;width:42px;height:42px;margin-bottom:20px;padding:9px;display:flex}.auth-brand span{background:var(--green);width:5px}.auth-brand span:first-child{height:11px}.auth-brand span:nth-child(2){height:21px}.auth-brand span:nth-child(3){height:15px}.auth-panel h1{letter-spacing:-.04em;margin:7px 0 8px;font-size:1.8rem}.auth-intro{color:var(--muted);margin:0 0 25px;font-size:.82rem;line-height:1.65}.auth-form{gap:10px;display:grid}.auth-form label{color:var(--muted);font-size:.78rem}.auth-form input{border:1px solid var(--line-strong);width:100%;min-height:46px;color:var(--text);background:var(--surface-inset);font:1rem var(--mono);border-radius:0;padding:10px 12px}.auth-form input:focus{border-color:var(--green);outline-offset:1px;outline:2px solid #70e0a333}.auth-form button{border:1px solid var(--green);min-height:46px;color:var(--action-text);background:var(--green-bright);cursor:pointer;margin-top:5px;font-weight:700}.auth-form button:disabled{cursor:wait;opacity:.7}.auth-error{color:var(--price-down);margin:0;font-size:.8rem}.auth-loading{color:var(--muted);font:.8rem var(--mono)}.app-shell{width:min(1180px,100%);min-height:100vh;margin:0 auto;padding:0 22px 32px}.eyebrow{color:var(--green);font:500 .74rem/1.4 var(--mono);letter-spacing:.14em;text-transform:uppercase;margin:0}.site-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;min-height:98px;display:flex}.brand-lockup{align-items:center;gap:14px;display:flex}.brand-lockup h1{letter-spacing:-.04em;margin:3px 0 0;font-size:1.5rem}.brand-mark{border:1px solid var(--line-strong);background:var(--surface-raised);align-items:flex-end;gap:3px;width:34px;height:34px;padding:7px;display:flex}.brand-mark span{background:var(--green);width:4px}.brand-mark span:first-child{height:9px}.brand-mark span:nth-child(2){height:17px}.brand-mark span:nth-child(3){height:12px}.header-actions{align-items:center;gap:8px;display:flex}.theme-toggle{border:1px solid var(--line-strong);min-height:45px;color:var(--text);background:var(--surface-raised);cursor:pointer;white-space:nowrap;align-items:center;gap:7px;padding:8px 11px;font-size:.76rem;font-weight:700;display:inline-flex}.theme-toggle>span:first-child{color:var(--amber);font-size:1rem;line-height:1}.theme-toggle:hover{border-color:var(--green);background:var(--surface-soft)}.alert-button{border:1px solid var(--line-strong);color:var(--green-bright);background:var(--positive-surface);cursor:pointer;text-align:left;gap:2px;padding:9px 12px;font-size:.78rem;display:grid}.alert-button small{color:var(--muted);font-size:.7rem}.alert-button:disabled{cursor:default;opacity:.72}.data-state{border:1px solid var(--line);background:var(--surface);align-items:center;gap:9px;padding:9px 12px;display:flex}.data-state div{gap:1px;display:grid}.data-state strong{font-size:.82rem;font-weight:600}.data-state small{color:var(--muted);font:.72rem var(--mono)}.status-light{background:var(--amber);border-radius:50%;width:7px;height:7px;box-shadow:0 0 0 4px #f3bd621a}.data-state.live{border-color:var(--line-strong);background:var(--positive-surface)}.data-state.live .status-light{background:var(--price-up);box-shadow:0 0 0 4px #79efac1f}.data-state.error .status-light{background:var(--price-down);box-shadow:0 0 0 4px #ff91871f}.logout-button{border:1px solid var(--line);min-height:45px;color:var(--text);background:var(--surface);cursor:pointer;padding:8px 11px;font-size:.78rem}.logout-button:hover{border-color:var(--line-strong);background:var(--surface-raised)}.logout-button:disabled{cursor:wait;opacity:.7}.primary-tabs{border-bottom:1px solid var(--line)}.tab-list{gap:26px;display:flex}.tab{color:var(--muted);cursor:pointer;background:0 0;border:0;padding:17px 1px 15px;font-weight:600;position:relative}.tab:after{content:"";background:0 0;height:2px;position:absolute;bottom:-1px;left:0;right:0}.tab.is-active{color:var(--text)}.tab.is-active:after{background:var(--green)}main{padding-top:26px}.market-summary{border:1px solid var(--line-strong);background:linear-gradient(105deg, var(--summary-start) 0%, var(--summary-end) 72%);justify-content:space-between;align-items:center;gap:18px;padding:24px 26px;display:flex}.market-summary h2{letter-spacing:-.045em;margin:6px 0 5px;font-size:clamp(1.45rem,4vw,2.25rem)}.market-summary p:last-child{color:var(--muted);margin:0;font-size:.88rem}.summary-meter{border-left:1px solid var(--line-strong);place-items:center;min-width:86px;padding:12px;display:grid}.summary-meter span{color:var(--green-bright);font:500 2.4rem var(--mono)}.summary-meter small{color:var(--muted);font-size:.76rem}.scanner-toolbar{justify-content:space-between;align-items:center;gap:20px;margin:18px 0 24px;display:flex}.scan-scope{color:var(--muted);white-space:nowrap;align-items:center;gap:8px;font-size:.84rem;display:flex}.scan-scope strong{color:var(--text);font:600 .84rem var(--mono)}.scope-dot{background:var(--green);width:6px;height:6px}.filter-row{scrollbar-width:none;gap:7px;padding:3px;display:flex;overflow-x:auto}.filter-chip{border:1px solid var(--line);color:var(--muted);cursor:pointer;background:0 0;flex:none;padding:9px 13px;font-size:.8rem}.filter-chip:hover{border-color:var(--line-strong);color:var(--text)}.filter-chip.is-selected{border-color:var(--green);color:var(--green-bright);background:var(--positive-surface)}.dashboard-grid{grid-template-columns:minmax(0,1fr) 280px;align-items:start;gap:24px;display:grid}.section-heading{justify-content:space-between;align-items:end;gap:16px;margin-bottom:14px;display:flex}.section-heading h2{letter-spacing:-.03em;margin:3px 0 0;font-size:1.25rem}.section-heading>span{color:var(--muted);font:.8rem var(--mono)}.candidate-list{gap:10px;display:grid}.candidate-card{border:1px solid var(--line);background:var(--surface);border-left-width:3px;padding:17px 18px 14px}.candidate-card.priority{border-left-color:var(--green)}.candidate-card.watch{border-left-color:var(--amber)}.candidate-card.neutral{border-left-color:var(--line-strong)}.candidate-main{grid-template-columns:40px minmax(0,1fr) auto;align-items:stretch;gap:12px;display:grid}.symbol-block{border:1px solid var(--line-strong);width:40px;height:40px;color:var(--green-bright);background:var(--surface-raised);font:500 .75rem var(--mono);place-items:center;display:grid}.symbol-line{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.symbol-line h3{font:500 1.02rem var(--mono);letter-spacing:-.03em;margin:0}.chart-open-button{border:1px solid var(--green-bright);min-height:36px;color:var(--action-text);background:var(--green-bright);cursor:pointer;font:700 .78rem var(--mono);white-space:nowrap;align-items:center;gap:6px;margin-left:auto;padding:7px 10px;text-decoration:none;display:inline-flex}.chart-open-button:hover{border-color:var(--text);filter:brightness(1.08)}.candidate-identity p{max-width:320px;color:var(--muted);text-overflow:ellipsis;white-space:nowrap;margin:4px 0 3px;font-size:.82rem;overflow:hidden}.candidate-identity small{color:var(--dim);font-size:.72rem}.signal-badge{letter-spacing:.02em;border:1px solid;padding:4px 8px;font-size:.78rem;font-weight:700}.signal-badge.priority{border-color:var(--green);color:var(--green-bright);background:var(--positive-surface)}.signal-badge.watch{border-color:var(--amber);color:var(--amber);background:var(--warning-surface)}.signal-badge.neutral{border-color:var(--line-strong);color:var(--muted);background:var(--surface-raised)}.price-block{text-align:right;align-self:end;justify-items:end;gap:3px;display:grid}.price-block strong{font:700 1.1rem var(--mono);letter-spacing:-.02em}.price-block span{font:650 .8rem var(--mono)}.price-block .positive{color:var(--price-up)}.price-block .negative{color:var(--price-down)}.price-block .neutral{color:var(--text)}.candidate-signal-row{border-top:1px solid var(--line);grid-template-columns:116px 1fr;align-items:center;gap:16px;margin-top:13px;padding-top:12px;display:grid}.sparkline{width:116px;height:42px;overflow:visible}.sparkline polyline{fill:none;stroke-width:2px;vector-effect:non-scaling-stroke}.sparkline-up{stroke:var(--green)}.sparkline-down{stroke:var(--dim)}.sparkline-base{stroke:var(--line);stroke-dasharray:2 3}.indicator-strip{grid-template-columns:repeat(4,1fr);gap:6px;display:grid}.indicator-strip>span{border:1px solid var(--line);min-width:0;color:var(--text);background:var(--surface-inset);font:.76rem var(--mono);text-align:right;justify-items:end;gap:3px;padding:9px 10px;display:grid}.indicator-strip>span.is-bullish{border-color:var(--green);color:var(--green-bright)}.indicator-strip small{color:var(--dim);font:.72rem var(--mono)}.coach-note{color:var(--muted);gap:8px;margin:13px 0 0;font-size:.82rem;line-height:1.65;display:flex}.coach-note span{color:var(--green)}.entry-toggle{border:0;border-top:1px solid var(--line);width:100%;color:var(--green-bright);cursor:pointer;background:0 0;justify-content:space-between;align-items:center;margin-top:12px;padding:11px 0 3px;font-size:.78rem;font-weight:600;display:flex}.entry-detail{border:1px solid var(--line-strong);background:var(--surface-inset);margin-top:14px;padding:16px}.entry-detail-heading{justify-content:space-between;align-items:start;gap:12px;margin-bottom:14px;display:flex}.entry-detail-heading h4{margin:3px 0 0;font-size:.95rem}.entry-detail-heading>span{color:var(--amber);background:var(--warning-surface);white-space:nowrap;padding:4px 8px;font-size:.72rem;font-weight:600}.entry-levels{background:var(--line);grid-template-columns:repeat(3,1fr);gap:1px;margin:0;display:grid}.entry-levels>div{background:var(--surface);grid-template-rows:auto 1fr auto;gap:4px;min-width:0;min-height:100px;padding:11px;display:grid}.entry-levels dt{color:var(--muted);font-size:.76rem}.entry-levels dd{color:var(--text);font:650 .86rem var(--mono);text-align:right;place-self:end;margin:0}.entry-levels small{color:var(--muted);text-align:right;font-size:.78rem;line-height:1.55}.entry-levels .entry-emphasis{background:var(--positive-raised)}.entry-levels .entry-emphasis dd{color:var(--green-bright)}.entry-levels .entry-risk dd{color:var(--red)}.risk-note{border-left:4px solid var(--amber);color:var(--text);background:var(--warning-surface);margin:16px 0 0;padding:12px 14px;font-size:.94rem;font-weight:550;line-height:1.7}.risk-note strong{color:var(--amber)}.coach-panel{border:1px solid var(--line);background:var(--surface);padding:20px;position:sticky;top:18px}.coach-kicker{color:var(--amber);background:var(--warning-surface);font:.72rem var(--mono);margin-bottom:16px;padding:5px 8px;display:inline-flex}.coach-panel h2{letter-spacing:-.03em;margin:0;font-size:1.05rem;line-height:1.5}.coach-panel ol{gap:15px;margin:22px 0;padding:0;list-style:none;display:grid}.coach-panel li{color:var(--text);grid-template-columns:30px 1fr;align-items:start;gap:9px;font-size:.84rem;line-height:1.6;display:grid}.coach-panel li span{color:var(--green);font:.72rem var(--mono)}.coach-panel>p{border-top:1px solid var(--line);color:var(--muted);margin:0;padding-top:16px;font-size:.8rem;line-height:1.7}.watchlist-heading{margin-bottom:8px}.section-intro{color:var(--muted);margin:0 0 20px;font-size:.8rem}.watchlist-grid{border-top:1px solid var(--line);border-left:1px solid var(--line);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.watch-item{border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--surface);flex-direction:column;min-width:0;min-height:148px;padding:16px;display:flex}.watch-item>div{justify-content:space-between;align-items:center;gap:8px;display:flex}.watch-symbol{font:500 .92rem var(--mono)}.watch-category{color:var(--green);font-size:.72rem}.watch-item p{color:var(--muted);margin:8px 0 16px;font-size:.8rem;line-height:1.45}.watch-item>.watch-price{text-align:right;justify-content:end;justify-items:end;gap:3px;margin-top:auto;display:grid}.watch-price strong{font:650 1rem var(--mono)}.watch-price span{font:650 .78rem var(--mono)}.watch-price .positive{color:var(--price-up)}.watch-price .negative{color:var(--price-down)}.watch-price .neutral{color:var(--text)}.watch-price small{color:var(--muted);font-size:.72rem}.watch-chart-button{border:1px solid var(--green);width:100%;min-height:38px;color:var(--action-text);background:var(--green-bright);cursor:pointer;font:700 .76rem var(--mono);justify-content:space-between;align-items:center;margin-top:12px;padding:9px 11px;text-decoration:none;display:flex}.watch-chart-button:hover{filter:brightness(1.08)}.chart-open-button:focus-visible,.watch-chart-button:focus-visible{outline:2px solid var(--green-bright);outline-offset:3px}.backtest-section{max-width:960px;margin:0 auto}.backtest-hero{border:1px solid var(--line-strong);background:var(--surface);justify-content:space-between;align-items:end;gap:24px;padding:26px;display:flex}.backtest-hero h2{letter-spacing:-.045em;margin:6px 0;font-size:clamp(1.5rem,4vw,2.25rem)}.backtest-hero p:last-child{max-width:600px;color:var(--muted);margin:0;font-size:.86rem;line-height:1.65}.period-control{border:1px solid var(--line);display:flex}.period-control button{border:0;border-right:1px solid var(--line);min-width:62px;color:var(--muted);background:var(--surface-inset);cursor:pointer;padding:10px 11px;font-size:.78rem}.period-control button:last-child{border-right:0}.period-control button.is-selected{color:var(--green-bright);background:var(--positive-surface)}.backtest-form{border:1px solid var(--line);background:var(--surface);grid-template-columns:minmax(100px,.75fr) repeat(2,minmax(150px,1fr)) auto;align-items:end;gap:10px;margin-top:14px;padding:16px;display:grid}.backtest-form label{color:var(--muted);gap:7px;font-size:.74rem;display:grid}.backtest-form input{border:1px solid var(--line-strong);width:100%;min-height:42px;color:var(--text);background:var(--surface-inset);font:600 .8rem var(--mono);color-scheme:inherit;border-radius:0;padding:9px 11px}.backtest-form input:focus{border-color:var(--green);outline-offset:1px;outline:2px solid #5be28938}.backtest-form button{border:1px solid var(--green);min-height:42px;color:var(--action-text);background:var(--green-bright);cursor:pointer;white-space:nowrap;padding:9px 16px;font-size:.78rem;font-weight:700}.backtest-form button:hover{filter:brightness(1.08)}.backtest-form button:disabled{border-color:var(--line-strong);color:var(--dim);background:var(--surface-raised);cursor:wait}.backtest-empty,.backtest-loading,.backtest-error{border:1px dashed var(--line-strong);background:var(--surface-inset);text-align:center;gap:5px;margin:14px 0 0;padding:20px;display:grid}.backtest-empty strong{color:var(--text);font-size:.82rem}.backtest-empty span,.backtest-loading{color:var(--muted);font-size:.78rem}.backtest-error{border-style:solid;border-color:var(--price-down);color:var(--price-down);background:var(--danger-surface);font-size:.78rem;line-height:1.55}.backtest-run-meta{border:1px solid var(--line-strong);color:var(--muted);background:var(--surface-inset);font:.74rem var(--mono);flex-wrap:wrap;align-items:center;gap:8px 18px;margin-top:14px;padding:12px 14px;display:flex}.backtest-run-meta strong{color:var(--green-bright);margin-right:auto;font-size:.82rem}.backtest-sample-warning{border:1px solid var(--amber);color:var(--text);background:var(--warning-surface);margin:12px 0 0;padding:13px 14px;font-size:.78rem;line-height:1.6}.strategy-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:14px;display:grid}.strategy-card{border:1px solid var(--line);background:var(--surface);padding:22px}.strategy-card.confirmed{border-top:2px solid var(--green)}.strategy-card.early{border-top:2px solid var(--amber)}.strategy-title{align-items:center;gap:12px;display:flex}.strategy-title>span{color:var(--dim);font:.74rem var(--mono)}.strategy-title h3{margin:0;font-size:1rem}.strategy-title p{color:var(--muted);margin:3px 0 0;font-size:.76rem}.strategy-card dl{background:var(--line);grid-template-columns:repeat(2,1fr);gap:1px;margin:20px 0;display:grid}.strategy-card dl>div{background:var(--surface-inset);grid-template-rows:auto 1fr;gap:5px;min-height:76px;padding:12px;display:grid}.strategy-card dl>div.adverse{grid-column:1/-1}.strategy-card dt{color:var(--muted);font-size:.72rem}.strategy-card dd{font:650 .94rem var(--mono);text-align:right;place-self:end;margin:0}.strategy-card .adverse dd{color:var(--red)}.strategy-card>p{color:var(--muted);margin:0;font-size:.78rem;line-height:1.65}.backtest-warning{border:1px solid var(--amber);color:var(--text);background:var(--warning-surface);gap:8px;margin-top:14px;padding:16px 18px;font-size:.78rem;line-height:1.7;display:flex}.backtest-warning strong{color:var(--amber);flex:none}.empty-state{border:1px dashed var(--line-strong);text-align:center;gap:6px;padding:48px 20px;display:grid}.empty-state span{color:var(--muted);font-size:.78rem}footer{border-top:1px solid var(--line);color:var(--dim);justify-content:space-between;gap:20px;margin-top:34px;padding-top:18px;font-size:.74rem;display:flex}@media (width<=820px){.theme-toggle{justify-content:center;width:45px;padding:8px}.theme-toggle>span:last-child{display:none}.dashboard-grid{grid-template-columns:1fr}.coach-panel{position:static}.scanner-toolbar{flex-direction:column;align-items:flex-start}.filter-row{width:100%}.watchlist-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.backtest-hero{flex-direction:column;align-items:flex-start}.backtest-form{grid-template-columns:repeat(2,minmax(0,1fr))}.backtest-form button{align-self:stretch}}@media (width<=560px){.app-shell{padding:0 14px 24px}.site-header{min-height:82px}.brand-lockup{gap:10px}.brand-mark{width:30px;height:30px}.brand-lockup h1{font-size:1.25rem}.header-actions{gap:5px}.alert-button{padding:7px 8px;font-size:.72rem}.alert-button small{display:none}.data-state{padding:7px 8px}.data-state small{display:none}.logout-button{min-height:39px;padding:7px 8px;font-size:.72rem}main{padding-top:18px}.market-summary{padding:19px 18px}.market-summary h2{font-size:1.35rem}.market-summary p:last-child{font-size:.8rem}.summary-meter{min-width:67px;padding:8px}.summary-meter span{font-size:1.8rem}.scan-scope>span:last-child{display:none}.candidate-card{padding:14px 13px 12px}.candidate-main{grid-template-columns:36px minmax(0,1fr) auto;gap:9px}.symbol-block{width:36px;height:36px}.candidate-identity p{max-width:150px}.candidate-signal-row{grid-template-columns:88px 1fr;gap:9px}.sparkline{width:88px}.indicator-strip{grid-template-columns:repeat(2,1fr)}.indicator-strip>span{padding:6px}.coach-note{font-size:.78rem}.entry-detail{padding:12px}.entry-levels{grid-template-columns:repeat(2,1fr)}.watchlist-grid,.strategy-grid{grid-template-columns:1fr}.backtest-form{grid-template-columns:1fr;padding:14px}.period-control{width:100%}.period-control button{flex:1}.backtest-warning,footer{flex-direction:column}}@media (width<=420px){.auth-screen{padding:14px}.auth-panel{padding:26px 20px}.data-state{display:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important}}
