.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#0f172a8c;display:flex;align-items:center;justify-content:center;padding:20px;animation:fadeIn .18s ease}.modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px;width:100%;max-width:380px;max-height:92vh;display:flex;flex-direction:column;gap:12px}.share-preview-wrap{flex:1;min-height:0;display:flex;align-items:center;justify-content:center}.share-preview{max-width:100%;max-height:76vh;height:auto;border-radius:var(--radius-sm);border:1px solid var(--border)}.share-preview-loading{padding:60px 0}@media (min-width: 600px){.modal{max-width:460px}.share-preview{max-height:82vh}}@media (min-width: 960px){.modal{max-width:560px}}.modal-actions{display:flex;gap:10px}.modal-actions .btn{flex:1}.setup{width:100%}.setup-hero{padding:24px;display:flex;flex-direction:column;gap:12px}.setup-hero-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.setup-date{font-size:14px;color:var(--text-dim)}.setup-history{padding:18px}.name-why-btn{align-self:flex-start;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:none;padding:0;margin:-2px 0 0;font-size:13px;color:var(--accent);cursor:pointer;display:inline-flex;align-items:center;gap:6px}.name-why-btn:hover{text-decoration:underline}.modal.name-modal{max-width:440px}.name-modal-title{margin:0;font-size:18px;font-weight:800}.name-modal-body{margin:0;font-size:14px;line-height:1.7;color:var(--text-dim)}.setup-done-note{margin:0;text-align:center;font-size:14px;color:var(--text-dim)}.setup-error{padding:14px 16px;font-size:14px}.testing-order-head{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:4px 10px}.testing-progress{font-size:15px;font-weight:600;color:var(--text-dim)}.testing-meta{font-size:13px;font-weight:600;color:var(--accent)}.testing-note{margin:0;font-size:13px;line-height:1.5;color:var(--text-muted)}.testing-grid{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:var(--gap);align-items:start}.testing-chart{height:460px}.testing-panel{padding:18px;display:flex;flex-direction:column;gap:14px}.testing-dirs{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}.testing-dirs .btn{padding:12px 6px;font-size:14px;white-space:nowrap}.testing-hint{margin:0;font-size:13px;line-height:1.5}.testing-adjust{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-top:8px}.testing-adjust button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text-dim);padding:6px 4px;border-radius:var(--radius-sm);font-size:12px;font-weight:600;cursor:pointer;transition:all .12s ease}.testing-adjust button:hover:not(:disabled){filter:brightness(1.08);color:var(--text)}.testing-adjust button:disabled{opacity:.4;cursor:not-allowed}.field.testing-level{display:grid;grid-template-columns:auto 1fr auto;grid-template-areas:"label input toggle" "adjust adjust adjust";column-gap:8px;row-gap:8px;align-items:center}.testing-level>label{grid-area:label;white-space:nowrap}.testing-level>.input{grid-area:input}.testing-level>.testing-toggle{grid-area:toggle}.testing-level>.testing-adjust{grid-area:adjust;margin-top:0}.testing-toggle{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-flex;align-items:center;gap:6px;border:1px solid var(--border-strong);background:transparent;color:var(--text-dim);padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap;cursor:pointer;transition:all .12s ease}.testing-toggle-box{flex:none;position:relative;width:13px;height:13px;border:1px solid var(--border-strong);border-radius:4px;transition:all .12s ease}.testing-toggle:not(.is-active):hover:not(:disabled){border-color:var(--text-dim);color:var(--text)}.testing-toggle:not(.is-active):hover:not(:disabled) .testing-toggle-box{border-color:var(--text-dim)}.testing-toggle:disabled{opacity:.5;cursor:not-allowed}.testing-toggle.is-active{background:var(--short-dim);border-color:var(--short);color:var(--short)}.testing-toggle.is-active .testing-toggle-box{background:var(--short);border-color:var(--short)}.testing-toggle.is-active .testing-toggle-box:after{content:"";position:absolute;left:4px;top:1px;width:3px;height:6px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}.testing-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:80px 20px;min-height:300px}@media (max-width: 880px){.testing-grid{grid-template-columns:1fr}}@media (max-width: 720px){.app-main:has(.testing.screen){display:flex;flex-direction:column;padding:10px 10px 0}.testing.screen{flex:1;min-height:0;gap:8px}.testing-note{display:none}.testing-grid{flex:1;min-height:0;display:flex;flex-direction:column;align-items:stretch;gap:8px}.testing-chart{flex:1;min-height:160px;height:auto}.testing-panel{position:sticky;bottom:0;padding:9px 12px;gap:6px;padding-bottom:calc(7px + env(safe-area-inset-bottom))}.testing-dirs{gap:6px}.testing-dirs .btn{padding:8px 4px;font-size:13px}.testing-panel .field{gap:4px}.testing-panel label{font-size:12px;white-space:nowrap}.testing-panel .input{padding:7px 10px;font-size:14px}.field.testing-level{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;gap:6px}.testing-level>label{flex:0 0 auto;min-width:2.8em}.testing-level>.input{flex:1;min-width:0}.testing-level>.testing-adjust{margin-top:0;display:flex;gap:5px}.testing-level>.testing-adjust button:first-child,.testing-level>.testing-adjust button:last-child{display:none}.testing-adjust button{padding:4px 8px;font-size:11px}.testing-toggle{padding:3px 9px;white-space:nowrap}.testing-panel .btn-primary{padding:10px 18px;font-size:15px}}.testing-revealing{font-size:14px;font-weight:700;color:var(--accent)}.testing-settle{gap:10px}.result-reveal-head{display:flex;align-items:center;flex-wrap:wrap;gap:10px}.result-symbol{font-size:22px;font-weight:800;letter-spacing:.01em}.result-subrow{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:6px 10px}.result-range{font-size:13px;color:var(--text-dim);white-space:nowrap}.result-stats{margin:0;display:grid;grid-template-columns:auto auto;justify-content:space-between;column-gap:18px;row-gap:8px}.result-row{display:flex;align-items:center;justify-content:space-between;gap:12px;white-space:nowrap}.result-row dt{color:var(--text-dim);font-size:14px}.result-row dd{margin:0;font-size:16px;font-weight:600}@media (max-width: 720px){.result-symbol{font-size:18px}.result-range{font-size:12px}.result-row dt{font-size:13px}.result-row dd{font-size:15px}}.lb-info{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border-strong);background:transparent;color:var(--text-dim);width:18px;height:18px;border-radius:50%;font-size:11px;font-weight:700;font-style:italic;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.lb-info:hover{color:var(--text);border-color:var(--text-dim)}.lb-score-hint{font-size:12px;color:var(--text-muted);text-align:center}.lb-section-title{font-size:16px;margin-bottom:12px}.lb-summary{padding:18px;display:flex;flex-direction:column;gap:var(--gap)}.lb-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.lb-stat{display:flex;flex-direction:column;gap:6px}.lb-stat-label{font-size:13px;color:var(--text-dim);font-weight:600;display:inline-flex;align-items:center;gap:5px}.lb-stat-value{font-size:22px;font-weight:700}.lb-comment{background:var(--accent-dim);border:1px solid var(--accent);border-radius:var(--radius-sm);padding:14px 16px;display:flex;flex-direction:column;gap:6px}.lb-comment-tag{font-size:12px;font-weight:700;letter-spacing:.08em;color:var(--accent);text-transform:uppercase}.lb-comment-text{margin:0;font-size:16px;line-height:1.6;color:var(--text)}.lb-recap{padding:18px}.lb-recap-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.lb-recap-row{display:flex;align-items:center;gap:14px;padding:14px 4px;border-top:1px solid var(--border)}.lb-recap-row:first-child{border-top:none}.lb-recap-index{flex:none;align-self:flex-start;color:var(--text-muted);font-size:13px;line-height:1.5}.lb-recap-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.lb-recap-symbol{font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lb-recap-status{font-size:13px;color:var(--text-dim)}.lb-recap-dir{font-weight:700;margin-right:6px}.lb-recap-pnl{flex:none;font-weight:800;font-size:16px;text-align:right;min-width:76px}.lb-recap-chart-btn{flex:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;width:34px;height:34px;border-radius:8px;border:1px solid var(--border-strong);background:transparent;color:var(--text-dim);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:all .12s ease}.lb-recap-chart-btn:hover{color:var(--text);border-color:var(--text-dim)}.modal.lb-chart-modal{max-width:920px}.lb-chart-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.lb-chart-titles{display:flex;flex-direction:column;gap:2px;min-width:0}.lb-chart-title{font-weight:800;font-size:16px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lb-chart-range{font-size:12px;color:var(--text-dim)}.lb-chart-view{height:60vh;min-height:320px}.lb-chart-state{display:flex;align-items:center;justify-content:center;padding:60px 0;font-size:14px}.history-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.history-head .lb-section-title{margin:0}.lb-summary-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.lb-summary-head .screen-title{margin:0}.lb-share-icon{flex:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;width:38px;height:38px;border-radius:9px;border:1px solid var(--border-strong);background:transparent;color:var(--text-dim);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:all .12s ease}.lb-share-icon:hover{color:var(--text);border-color:var(--text-dim)}@media (max-width: 720px){.lb-stats{grid-template-columns:repeat(2,1fr)}.lb-stat-value{font-size:19px}}.install-prompt{position:fixed;left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom));z-index:200;display:flex;align-items:center;gap:14px;padding:13px 15px;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:var(--shadow);animation:installSlideUp .28s ease}@keyframes installSlideUp{0%{transform:translateY(140%);opacity:0}to{transform:translateY(0);opacity:1}}.install-prompt-body{flex:1;min-width:0}.install-prompt-title{display:block;font-size:14px;font-weight:700;color:var(--text)}.install-prompt-text{margin:3px 0 0;font-size:12.5px;line-height:1.45;color:var(--text-dim)}.install-prompt-actions{flex:0 0 auto;display:flex;flex-direction:column;align-items:stretch;gap:6px}.install-prompt-cta{padding:8px 18px;font-size:14px;white-space:nowrap}.install-prompt-later{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:none;color:var(--text-dim);font-size:12px;font-weight:600;cursor:pointer;padding:2px}.install-prompt-later:hover{color:var(--text)}.app{min-height:100%;display:flex;flex-direction:column}.app-header{border-bottom:1px solid var(--border);background:#ffffffb8;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);position:sticky;top:0;z-index:10}.app-header-inner{display:flex;align-items:center;justify-content:space-between;gap:16px;width:100%;max-width:1180px;margin:0 auto;padding:8px 22px}.brand{display:flex;align-items:center;gap:8px}.brand-home{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:none;padding:0;margin:0;cursor:pointer;display:inline-flex;align-items:center;border-radius:6px}.brand-home:hover{opacity:.7}.brand-home:focus-visible{outline:2px solid var(--accent, #2563eb);outline-offset:3px}.brand-mark{height:40px;width:auto;display:block;color:var(--text)}.app-version{font-size:11px;color:var(--text-muted);font-family:var(--mono)}.lang-switcher{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-flex;align-items:center;gap:6px;padding:6px 11px;height:36px;font-size:13px;font-weight:600;color:var(--text-dim);background-color:transparent;border:1px solid var(--border-strong);border-radius:9px;cursor:pointer;transition:all .12s ease}.lang-switcher-code{line-height:1}.lang-switcher:hover{color:var(--text);border-color:var(--text-dim)}.lang-switcher:focus-visible{outline:2px solid var(--accent, #2563eb);outline-offset:1px}.app-main{flex:1;width:100%;max-width:1180px;margin:0 auto;padding:22px}.app-footer{width:100%;max-width:1180px;margin:0 auto;padding:12px 22px 24px;display:flex;align-items:center;justify-content:center;gap:10px}.app-footer-credit{font-size:12px;color:var(--text-muted)}.app-footer-credit a{color:var(--text-dim);text-decoration:none}.app-footer-credit a:hover{text-decoration:underline}.screen{display:flex;flex-direction:column;gap:var(--gap)}.screen-title{font-size:22px}.screen-subtitle{color:var(--text-dim);font-size:14px;line-height:1.6}@media (max-width: 720px){.app-main{padding:14px}.app-header-inner{padding:8px 14px}.app-footer{padding:10px}}:root{--bg: #f4f6fa;--bg-elev: #ffffff;--surface: #ffffff;--surface-2: #eef1f6;--border: rgba(15, 23, 42, .1);--border-strong: rgba(15, 23, 42, .18);--text: #1a2233;--text-dim: #5b6472;--text-muted: #9aa3b2;--long: #089981;--long-dim: rgba(8, 153, 129, .12);--short: #f23645;--short-dim: rgba(242, 54, 69, .12);--skip: #6b7280;--accent: #2563eb;--accent-dim: rgba(37, 99, 235, .1);--warn: #d97706;--radius: 12px;--radius-sm: 8px;--gap: 16px;--shadow: 0 6px 22px rgba(15, 23, 42, .08);--font: "Inter", "Segoe UI", system-ui, -apple-system, "Noto Sans TC", "Microsoft JhengHei", sans-serif;--mono: "JetBrains Mono", "SF Mono", "Consolas", monospace}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}html{touch-action:manipulation}body{background:radial-gradient(1200px 600px at 50% -10%,#ffffff 0%,transparent 65%),var(--bg);color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}button,input,select{font-family:inherit}h1,h2,h3,h4{margin:0;font-weight:700;letter-spacing:-.01em}a{color:var(--accent)}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text);padding:12px 18px;border-radius:var(--radius-sm);font-size:15px;font-weight:600;cursor:pointer;transition:transform .06s ease,filter .15s ease,background .15s ease,border-color .15s ease}.btn:hover:not(:disabled){filter:brightness(1.12)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:transparent;color:#fff}.btn-lg{padding:15px 26px;font-size:16px}.btn-block{width:100%}.btn-ghost{background:transparent;border-color:var(--border);color:var(--text-dim)}.btn-long{background:var(--long-dim);border-color:var(--long);color:var(--long)}.btn-short{background:var(--short-dim);border-color:var(--short);color:var(--short)}.btn-skip{background:transparent;border-color:var(--border-strong);color:var(--text-dim)}.btn-long.is-active{background:var(--long);color:#fff}.btn-short.is-active{background:var(--short);color:#fff}.btn-skip.is-active{background:var(--skip);color:#fff;border-color:var(--skip)}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.card{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius-sm);padding:14px 16px}.field{display:flex;flex-direction:column;gap:6px}.field>label{font-size:13px;color:var(--text-dim);font-weight:600}.input{background:var(--bg);border:1px solid var(--border-strong);color:var(--text);padding:11px 12px;border-radius:var(--radius-sm);font-size:15px;font-family:var(--mono);width:100%}.input:focus{outline:none;border-color:var(--accent)}.input:read-only{color:var(--text-dim);background:var(--surface)}.badge{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;font-size:13px;font-weight:700;border:1px solid var(--border-strong);white-space:nowrap}.badge.pos{color:var(--long);background:var(--long-dim);border-color:transparent}.badge.neg{color:var(--short);background:var(--short-dim);border-color:transparent}.badge.flat{color:var(--text-dim)}.pos{color:var(--long)}.neg{color:var(--short)}.flat{color:var(--text-dim)}.mono{font-family:var(--mono)}.chart-wrap{position:relative;width:100%;background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.chart-canvas{position:absolute;top:0;right:0;bottom:0;left:0}.chart-watermark{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;pointer-events:none;font-size:clamp(28px,6vw,64px);font-weight:800;letter-spacing:.08em;color:#0f172a0f;-webkit-user-select:none;user-select:none}.chart-draw-toolbar{position:absolute;top:8px;left:8px;z-index:5;display:flex;flex-wrap:wrap;gap:4px}.chart-draw-toolbar button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border-strong);background:#ffffffe6;color:var(--text-dim);font-size:12px;font-weight:600;padding:4px 9px;border-radius:6px;cursor:pointer}.chart-draw-toolbar button:hover{color:var(--text);border-color:var(--text-dim)}.chart-draw-toolbar button.is-active{background:var(--accent);border-color:var(--accent);color:#fff}@media (max-width: 880px){.chart-draw-toolbar{display:none}}.spinner{width:28px;height:28px;border:3px solid var(--border-strong);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.fade-in{animation:fadeIn .25s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
