:root{--bg: #070b12;--panel: #0d141f;--panel2: #121c2a;--line: #1c2838;--text: #e8edf5;--dim: #7d8aa0;--cyan: #38d6ff;--gold: #f5c04a;--violet: #b388ff;--up: #ff5a5f;--down: #22c3a6;--up-rgb: 255,90,95;--down-rgb: 34,195,166;--mono: ui-monospace, "SF Mono", "Cascadia Mono", Consolas, monospace}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--text);font:14px/1.5 system-ui,Noto Sans TC,sans-serif}body{background:radial-gradient(1200px 500px at 20% -10%,#0f1b2e 0%,transparent 60%),var(--bg)}h2{font-size:14px;margin:0 0 10px;letter-spacing:.02em}h2 em{color:var(--dim);font-style:normal;font-weight:400;font-size:12px;margin-left:6px}input,select,button{background:var(--panel2);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:7px 10px;font:inherit;min-width:0}input:focus,select:focus{outline:1px solid var(--cyan)}button{cursor:pointer;background:linear-gradient(180deg,#ffd166,#f5b82e);color:#1a1200;border-color:#f5b82e;font-weight:700}button.ghost{background:transparent;color:var(--dim);border-color:var(--line);font-weight:500}button.ghost:hover{color:var(--text);border-color:var(--dim)}.app{display:grid;grid-template-columns:372px minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);gap:12px;height:100vh;padding:12px}.bar{grid-column:1 / -1;display:flex;align-items:center;gap:16px;padding:8px 14px;background:linear-gradient(180deg,#101a29,#0b121c);border:1px solid var(--line);border-radius:12px}.brand{display:flex;align-items:center;gap:8px;font-size:16px;letter-spacing:.12em;white-space:nowrap}.brand span{color:var(--cyan)}.mark{width:14px;height:14px;border-radius:4px;background:conic-gradient(from 200deg,var(--cyan),var(--gold),var(--cyan));box-shadow:0 0 14px #38d6ff80}.mods{display:flex;gap:6px;font-size:12px}.mods a{padding:3px 10px;border-radius:12px;border:1px solid var(--line);color:var(--dim);white-space:nowrap}.mods a.on{border-color:var(--cyan);color:var(--cyan);background:#38d6ff14}.mods a.soon{border-style:dashed}.bar-mid{flex:1;min-width:0}.controls{display:flex;gap:6px}#symbol{flex:1}.status{color:var(--dim);font-size:12px;min-height:18px;padding-top:2px}.status.err{color:var(--up)}.ticker{text-align:right;white-space:nowrap;font-family:var(--mono)}.ticker .px{font-size:22px;font-weight:700;letter-spacing:.02em}.ticker .sub{font-size:12px;color:var(--dim)}.up{color:var(--up)}.dn{color:var(--down)}.side{overflow:auto;display:flex;flex-direction:column;gap:12px;min-height:0;padding-right:2px}.side-top,.side-bot{display:flex;flex-direction:column;gap:12px}.stage{display:flex;flex-direction:column;gap:10px;min-height:0;overflow:auto}.panel,.tf,.flow-step{background:linear-gradient(180deg,#0f1722,#0b111a);border:1px solid var(--line);border-radius:12px;padding:12px;box-shadow:inset 0 1px #ffffff08}.verdict{border-radius:14px;padding:14px 16px;border:1px solid var(--line);background:linear-gradient(160deg,#111b2a,#0a1019);position:relative;overflow:hidden}.verdict .dirs{display:flex;gap:6px;margin-bottom:10px}.verdict .dirs button{padding:3px 12px;font-size:12px}.verdict .dirs button.sel{background:var(--cyan);border-color:var(--cyan);color:#00222b}.verdict .head{display:flex;align-items:baseline;justify-content:space-between}.verdict .title{font-size:20px;font-weight:800;letter-spacing:.04em}.verdict .score{font-family:var(--mono);font-size:30px;font-weight:800}.verdict .score small{font-size:14px;color:var(--dim)}.verdict p{margin:6px 0 0;color:#b9c3d3;font-size:13px}.verdict.bull{border-color:rgba(var(--up-rgb),.55);box-shadow:0 0 28px rgba(var(--up-rgb),.14),inset 0 0 0 1px rgba(var(--up-rgb),.08)}.verdict.bull .title,.verdict.bull .score{color:var(--up)}.verdict.bear{border-color:rgba(var(--down-rgb),.55);box-shadow:0 0 28px rgba(var(--down-rgb),.14),inset 0 0 0 1px rgba(var(--down-rgb),.08)}.verdict.bear .title,.verdict.bear .score{color:var(--down)}.verdict.none .title{color:var(--dim)}.meter{display:flex;gap:5px;margin-top:10px}.meter i{flex:1;height:5px;border-radius:3px;background:var(--line)}.verdict.bull .meter i.on{background:var(--up);box-shadow:0 0 8px var(--up)}.verdict.bear .meter i.on{background:var(--down);box-shadow:0 0 8px var(--down)}#flow{display:flex;flex-direction:column;gap:8px}.flow-step{padding:10px 12px}.flow-step .st{display:flex;align-items:center;gap:8px;margin-bottom:4px}.flow-step .no{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:700;background:var(--line);color:var(--dim)}.flow-step.pass{border-color:#38d6ff73}.flow-step.pass .no{background:var(--cyan);color:#00222b;box-shadow:0 0 10px #38d6ff99}.flow-step b{font-size:14px}.flow-step .role{color:var(--dim);font-size:12px}.flow-step .res{margin-left:auto;font-size:12px;font-weight:700;color:var(--dim)}.flow-step.pass .res{color:var(--cyan)}.chk{display:flex;gap:6px;font-size:12.5px;color:#aab5c6;padding:1px 0}.chk i{font-style:normal;width:14px;text-align:center;flex:none}.chk .y{color:var(--cyan)}.chk .n{color:#55627a}.chk .na{color:var(--gold)}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:12px;color:var(--dim);padding:0 2px}.toolbar label{display:flex;align-items:center;gap:6px;color:var(--text)}.toolbar input{width:auto;padding:0}.toolbar button{padding:3px 11px}.legend{margin-left:auto;display:flex;align-items:center;gap:6px}.lg{width:8px;height:8px;border-radius:50%;display:inline-block;margin-left:6px}.lg.gold{background:var(--gold)}.lg.violet{background:var(--violet)}.lg.cyan{background:#4fc3f7}:root{--tfh: 470px}:root[data-size=compact]{--tfh: 350px}:root[data-size=tall]{--tfh: 660px}.tf{display:flex;flex-direction:column;flex:none;height:var(--tfh);min-height:0;padding:10px 12px 8px}#tf-d{height:calc(var(--tfh) * 1.12)}.stage.focus .tf{display:none}#stage.focus .tf.on{display:flex;height:calc(100vh - 150px);min-height:360px}.fbtn{padding:1px 8px;margin-left:8px;font-size:14px;line-height:1.2}.toolbar{position:sticky;top:0;z-index:5;background:var(--bg);padding:4px 2px 6px}.hint{color:var(--dim);font-size:12px}.tfhead{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:6px}.tag{font-weight:800;font-size:14px;padding:2px 10px;border-radius:6px;background:#38d6ff1a;color:var(--cyan);border:1px solid rgba(56,214,255,.3)}.role{color:var(--dim);font-size:12px;margin-left:8px}.stat{color:var(--dim);font-size:12px;font-family:var(--mono);text-align:right}.stat b{color:var(--text);font-weight:600}.price{position:relative;flex:2.4 1 0;min-height:0}.macd{flex:1 1 0;min-height:100px;margin-top:2px}.price canvas.mk{position:absolute;left:0;top:0;pointer-events:none;z-index:1}.price canvas.vp{position:absolute;top:0;pointer-events:none;z-index:2}.msg{color:var(--dim);padding:12px;font-size:13px}.row{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:10px;align-items:end}.row label{display:flex;flex-direction:column;gap:4px;color:var(--dim);font-size:12px}.row input{width:120px}.btns button{flex:1 1 70px;padding:7px 4px}table{width:100%;border-collapse:collapse;font-size:12.5px;font-family:var(--mono)}th,td{text-align:right;padding:4px 5px;border-bottom:1px solid var(--line)}th:first-child,td:first-child{text-align:left;font-family:system-ui,Noto Sans TC,sans-serif}th{color:var(--dim);font-weight:500}.good{color:var(--up)}.bad{color:var(--down)}.foot{color:var(--dim);font-size:12px;text-align:center;margin:0}.note{color:var(--dim);font-size:12px;margin:8px 0 0}@media (max-width: 1000px){.app{display:flex;flex-direction:column;height:auto;padding:10px;gap:10px}.bar{flex-wrap:wrap;gap:8px 12px}.bar-mid{order:3;flex:1 1 100%}.ticker{margin-left:auto}.side{display:contents}.side-top{order:1}.stage{order:2;overflow:visible}.side-bot{order:3}.tf{flex:none;min-height:0}.price{flex:none;height:260px}.macd{flex:none;height:110px}.legend{margin-left:0;flex:1 1 100%}.mods{display:none}}@media (max-width: 480px){.app{padding:8px}.controls{flex-wrap:wrap}#symbol{flex:1 1 100%;order:3}.price{height:230px}.macd{height:100px}.ticker .px{font-size:18px}}.toolbar button.sel{color:var(--cyan);border-color:var(--cyan);background:#38d6ff14}.app.side-off{grid-template-columns:minmax(0,1fr)}.app.side-off .side{display:none}@media (max-width: 1000px){#btnSide{display:none}.app.side-off .side{display:contents}.tf,#tf-d{min-height:0}}.toolbar select{padding:3px 8px;font-size:12px}@media (max-width: 1000px){.tf,#tf-d{height:auto}.toolbar{position:static}.fbtn{display:none}.stage.focus .tf{display:flex}}#chipRange{margin-left:8px;padding:2px 6px;font-size:12px}.macd{position:relative}canvas.cx{position:absolute;left:0;top:0;pointer-events:none;z-index:3}
