:root{--market-up:#e03131;--market-down:#2d9a4a}:root,[data-theme=light]{--primary:#1a56db;--primary-dark:#1e429f;--primary-bg:#eff6ff;--success:#059669;--danger:#dc2626;--warning:#d97706;--background:#f3f4f6;--surface:#ffffff;--surface-hover:#f9fafb;--text:#111827;--text-secondary:#6b7280;--text-muted:#9ca3af;--border:#e5e7eb;--border-light:#f3f4f6;--icon-color:#374151}[data-theme=dark]{--primary:#60a5fa;--primary-dark:#93c5fd;--primary-bg:#1e3a5f;--success:#34d399;--danger:#f87171;--warning:#fbbf24;--background:#0f1117;--surface:#1a1d27;--surface-hover:#222534;--text:#f1f5f9;--text-secondary:#94a3b8;--text-muted:#64748b;--border:#2d3148;--border-light:#1e2236;--icon-color:#94a3b8}[data-theme=coral]{--primary:#da7756;--primary-dark:#b85c3c;--primary-bg:#fdf0ea;--success:#059669;--danger:#dc2626;--warning:#d97706;--background:#faf6f2;--surface:#ffffff;--surface-hover:#fdf8f5;--text:#1c1917;--text-secondary:#78716c;--text-muted:#a8a29e;--border:#e7e0d8;--border-light:#f5f0eb;--icon-color:#57534e}*{box-sizing:border-box;padding:0;margin:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--background);color:var(--text);line-height:1.5;font-size:14px}.container{max-width:1440px;margin:0 auto;padding:0 1rem}.page-grid{display:grid;grid-template-columns:312px 1fr 260px;grid-gap:.75rem;gap:.75rem;align-items:start;padding:.75rem 0}@media (max-width:1100px){.page-grid{grid-template-columns:312px 1fr}.col-right{display:none}}@media (max-width:800px){.page-grid{grid-template-columns:1fr}.col-left{order:2}.col-center{order:1}.col-right{display:none}}.header{background:var(--surface);border-bottom:1px solid var(--border);position:-webkit-sticky;position:sticky;top:0;z-index:10}.header-inner{display:flex;align-items:center;height:64px;gap:1.5rem}.header-logo{font-size:1.375rem;font-weight:700;color:var(--primary);text-decoration:none;flex-shrink:0}.header-nav{display:flex;gap:.25rem;flex:1 1}.header-nav a{padding:.45rem .9rem;border-radius:.375rem;color:var(--text-secondary);text-decoration:none;font-size:1.1rem;transition:background .15s,color .15s}.header-nav a:hover{background:var(--border-light);color:var(--text)}.header-nav a.active{color:var(--primary);background:#eff6ff}.header-actions{display:flex;align-items:center;gap:.5rem;margin-left:auto}.header-login{font-size:1.1rem;color:var(--text-secondary);text-decoration:none;padding:.3rem .6rem}.header-login:hover{color:var(--text)}.hamburger{background:none;border:none;color:var(--text-primary);font-size:1.625rem;line-height:1;cursor:pointer;padding:.2rem .3rem;flex-shrink:0}.hamburger,.mobile-nav{display:none}@media (max-width:800px){.header-login,.header-nav{display:none}.header-actions{gap:.25rem}.btn.btn-sm{font-size:.75rem;padding:.25rem .5rem}.hamburger{display:block}.mobile-nav{display:flex;flex-direction:column;background:var(--surface);border-bottom:1px solid var(--border);padding:.25rem 1rem .5rem;position:-webkit-sticky;position:sticky;top:64px;z-index:9}.mobile-nav a{padding:.5rem 0;font-size:1.045rem;font-weight:500;color:var(--text-secondary);text-decoration:none;border-bottom:1px solid var(--border-light)}.mobile-nav a:last-child{border-bottom:none}.mobile-nav a.active{color:var(--primary)}.indices-layout{flex-direction:column}.indices-main,.indices-sidebar{width:100%!important}.indices-filter-desktop{display:none!important}.indices-filter-mobile{display:flex!important}.indices-search-meta{padding-left:0!important;flex-wrap:wrap;gap:.5rem!important}.comp-table-wrap{display:none!important}.comp-grid-wrap{display:flex!important;flex-direction:column;gap:.45rem}.kline-stock-title{font-size:14px!important}.kline-period-btn{font-size:12px!important;padding:1px 6px!important}.kline-ma-btn{font-size:12px!important;padding:1px 5px!important}.kline-badge{font-size:11px!important}.header-logo{font-size:1.265rem}}.comp-table-wrap{display:block}.comp-grid-wrap{display:none}.comp-card{padding:.4rem .5rem;border-radius:6px;border:1px solid var(--border-light);background:var(--surface);overflow:hidden}.comp-card-line1{display:flex;align-items:baseline;gap:.3rem;margin-bottom:.15rem;flex-wrap:nowrap;overflow:hidden}.comp-card-rank{font-size:.72rem;color:var(--text-muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;flex-shrink:0}.comp-card-code{font-size:.91rem;font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--text-primary);flex-shrink:0}.comp-card-name{font-size:.82rem;color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.comp-card-meta{display:flex;flex-wrap:wrap;gap:.15rem .55rem;font-size:.75rem;color:var(--text-muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.comp-card-weight{font-size:1.25rem;font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;flex-shrink:0;line-height:1}.kline-stock-title{font-size:20px}.kline-ma-btn,.kline-period-btn{font-size:17px}.kline-badge{font-size:15px}.card{background:var(--surface);border:1px solid var(--border);border-radius:.5rem;padding:.875rem;margin-bottom:.75rem}.card-title{font-size:1.125rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.625rem}.index-row{display:flex;justify-content:space-between;align-items:center;padding:.3rem 0;border-bottom:1px solid var(--border-light)}.index-row:last-child{border-bottom:none}.index-name{font-size:1.14rem;font-weight:500;color:var(--text)}.index-sub{font-size:.84rem;color:var(--text-muted)}.index-price{text-align:right}.index-value{font-size:1.2rem;font-weight:600}.index-change{font-size:.9rem;font-weight:500}.up{color:var(--market-up)}.down{color:var(--market-down)}.flat{color:var(--text-muted)}@keyframes spin{to{transform:rotate(1turn)}}.stock-row{display:flex;justify-content:space-between;align-items:center;padding:.375rem 0;border-bottom:1px solid var(--border-light)}.stock-row:last-child{border-bottom:none}.stock-symbol{font-weight:600;font-size:.8rem}.stock-company{font-size:.7rem;color:var(--text-muted)}.locked{position:relative}.lock-icon{font-size:.75rem;color:var(--text-muted);margin-left:.25rem}.locked-overlay{filter:blur(3px);pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:.4}.sector-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:.25rem;gap:.25rem}.sector-cell{padding:.4rem .3rem;border-radius:.25rem;text-align:center;font-size:.7rem;font-weight:500;cursor:default}.analysis-form textarea{width:100%;padding:.625rem;border:1px solid var(--border);border-radius:.375rem;font-size:.875rem;resize:vertical;font-family:inherit;color:var(--text)}.analysis-form textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 2px rgba(26,86,219,.1)}.preset-chips{display:flex;flex-wrap:wrap;gap:.375rem;margin:.5rem 0}.preset-chip{padding:.2rem .6rem;border:1px solid var(--border);border-radius:9999px;font-size:.72rem;color:var(--text-secondary);background:var(--background);cursor:pointer;transition:border-color .15s,color .15s}.preset-chip:hover{border-color:var(--primary);color:var(--primary)}.executive-summary{font-size:.875rem;line-height:1.7;color:var(--text)}.executive-summary h2,.executive-summary h3{font-size:.9rem;font-weight:600;margin:.75rem 0 .25rem;color:var(--text)}.executive-summary p{margin-bottom:.5rem}.executive-summary ol,.executive-summary ul{padding-left:1.25rem;margin-bottom:.5rem}.executive-summary li{margin-bottom:.2rem}.executive-summary strong{font-weight:600;color:var(--text)}.executive-summary hr{border:none;border-top:1px solid var(--border);margin:.75rem 0}.supply-chain-flow{display:flex;flex-wrap:wrap;align-items:center;gap:.375rem;margin:.5rem 0}.chain-node{padding:.3rem .6rem;border-radius:.375rem;border-left:3px solid;background:var(--background);font-size:.78rem}.chain-node.positive{border-color:var(--success)}.chain-node.negative{border-color:var(--danger)}.chain-node.neutral{border-color:var(--warning)}.chain-arrow{color:var(--text-muted);font-size:.875rem}.confidence-bar{height:4px;background:var(--border);border-radius:9999px;overflow:hidden;margin-top:.25rem}.confidence-fill{height:100%;border-radius:9999px;transition:width .4s ease}.btn{background:var(--primary);color:white;border:none;padding:.5rem 1.2rem;border-radius:.375rem;cursor:pointer;font-size:1.3rem;font-weight:500;transition:background .15s}.btn:hover{background:var(--primary-dark)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-sm{padding:.35rem .85rem;font-size:1.2rem}.input{width:100%;padding:.5rem .75rem;border:1px solid var(--border);border-radius:.375rem;font-size:.875rem;color:var(--text);background:var(--surface)}.input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 2px rgba(26,86,219,.1)}.badge{display:inline-block;padding:.15rem .45rem;border-radius:9999px;font-size:.7rem;font-weight:500}.badge-positive{background:#d1fae5;color:#065f46}.badge-negative{background:#fee2e2;color:#991b1b}.badge-neutral{background:#f3f4f6;color:#374151}.loading{text-align:center;padding:1.5rem;color:var(--text-muted);font-size:.875rem}.error-msg{background:#fee2e2;color:#991b1b;padding:.625rem .875rem;border-radius:.375rem;font-size:.875rem;margin-bottom:.75rem}.flex{display:flex;gap:.5rem}.flex-between{display:flex;justify-content:space-between;align-items:center}.text-muted{color:var(--text-muted);font-size:.75rem}.mt-1{margin-top:.5rem}.mt-2{margin-top:1rem}.icon-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border:none;border-radius:.375rem;background:transparent;color:var(--icon-color);cursor:pointer;font-size:1.1rem;transition:background .15s}.icon-btn:hover{background:var(--border-light)}.dropdown{position:absolute;top:calc(100% + 4px);right:0;background:var(--surface);border:1px solid var(--border);border-radius:.5rem;box-shadow:0 4px 12px rgba(0,0,0,.1);overflow:hidden;z-index:100;min-width:110px}.dropdown-item{display:flex;align-items:center;gap:.5rem;width:100%;padding:.5rem .875rem;background:none;border:none;text-align:left;font-size:1.1rem;color:var(--text-secondary);cursor:pointer;transition:background .12s,color .12s}.dropdown-item:hover{background:var(--border-light);color:var(--text)}.dropdown-item.active{color:var(--primary);background:var(--primary-bg);font-weight:500}[data-theme=dark] .card{background:var(--surface);border-color:var(--border)}[data-theme=dark] .analysis-form textarea,[data-theme=dark] .input{background:var(--surface);color:var(--text);border-color:var(--border)}[data-theme=dark] .preset-chip{background:var(--surface);border-color:var(--border);color:var(--text-secondary)}[data-theme=dark] .preset-chip:hover{border-color:var(--primary);color:var(--primary)}[data-theme=coral] .card{border-color:var(--border)}[data-theme=coral] .header-logo{color:var(--primary)}:root,[data-theme=dark]{--stock-bg:#0d0d10;--stock-toolbar-bg:#151518;--stock-border:#2a2a35;--stock-toolbar-text:#e0e0e8;--stock-toolbar-fg:#7a8496;--stock-candle-bull:#ef5350;--stock-candle-bear:#26a69a;--stock-ma5:#f0e68c;--stock-ma10:#90ee90;--stock-ma20:#ff8c69;--stock-ma60:#87ceeb;--stock-ma120:#d0a5eb;--stock-vol-alpha:0.5;--stock-grid-weak:rgba(255,255,255,0.04);--stock-grid-month:rgba(255,255,255,0.07);--stock-grid-qtr:rgba(255,255,255,0.10);--stock-grid-year:rgba(255,255,255,0.15);--stock-axis-fg:rgba(170,170,170,0.75);--stock-axis-year-fg:rgba(220,220,220,0.90);--stock-axis-line:rgba(255,255,255,0.15);--stock-crosshair-line:rgba(200,200,215,0.60);--stock-crosshair-dot-fill:rgba(40,40,58,0.92);--stock-crosshair-dot-stroke:rgba(220,220,235,0.88);--stock-tooltip-bg:rgba(20,20,32,0.97);--stock-tooltip-border:rgba(255,255,255,0.12);--stock-tooltip-text:#e2e4ec;--stock-tooltip-label:rgba(130,130,150,0.85);--stock-tooltip-value:#dcdee8;--stock-tooltip-value-muted:#a0a2b4;--stock-tooltip-separator:rgba(255,255,255,0.09);--stock-tooltip-shadow:0 4px 20px rgba(0,0,0,0.65);--stock-badge-etf-bg:rgba(210,168,255,0.12);--stock-badge-etf-fg:#d2a8ff;--stock-badge-etf-border:rgba(210,168,255,0.25);--stock-badge-emrg-bg:rgba(255,166,87,0.12);--stock-badge-emrg-fg:#ffa657;--stock-badge-emrg-border:rgba(255,166,87,0.25);--stock-badge-twse-bg:rgba(88,166,255,0.10);--stock-badge-twse-fg:#58a6ff;--stock-badge-twse-border:rgba(88,166,255,0.20);--stock-badge-tpex-bg:rgba(63,185,80,0.10);--stock-badge-tpex-fg:#3fb950;--stock-badge-tpex-border:rgba(63,185,80,0.20);--stock-exdiv-bg:rgba(255,184,28,0.10);--stock-exdiv-badge-bg:rgba(255,184,28,0.22);--stock-exdiv-badge-fg:#fbbf24;--stock-exdiv-badge-border:rgba(255,184,28,0.35);--stock-exright-bg:rgba(139,92,246,0.10);--stock-exright-badge-bg:rgba(139,92,246,0.22);--stock-exright-badge-fg:#a78bfa;--stock-exright-badge-border:rgba(139,92,246,0.35);--stock-exdivright-bg:rgba(20,184,166,0.10);--stock-exdivright-badge-bg:rgba(20,184,166,0.22);--stock-exdivright-badge-fg:#2dd4bf;--stock-exdivright-badge-border:rgba(20,184,166,0.35)}[data-theme=coral],[data-theme=light]{--stock-bg:#fafafa;--stock-toolbar-bg:#f3f4f6;--stock-border:#e5e7eb;--stock-toolbar-text:#1f2937;--stock-toolbar-fg:#6b7280;--stock-candle-bull:#dc2626;--stock-candle-bear:#16a34a;--stock-ma5:#a07800;--stock-ma10:#186018;--stock-ma20:#b03800;--stock-ma60:#0058a0;--stock-ma120:#7030a0;--stock-vol-alpha:0.65;--stock-grid-weak:rgba(0,0,0,0.04);--stock-grid-month:rgba(0,0,0,0.07);--stock-grid-qtr:rgba(0,0,0,0.10);--stock-grid-year:rgba(0,0,0,0.15);--stock-axis-fg:rgba(80,80,80,0.75);--stock-axis-year-fg:rgba(30,30,30,0.90);--stock-axis-line:rgba(0,0,0,0.15);--stock-crosshair-line:rgba(60,60,80,0.50);--stock-crosshair-dot-fill:rgba(240,240,245,0.95);--stock-crosshair-dot-stroke:rgba(60,60,80,0.80);--stock-tooltip-bg:rgba(255,255,255,0.97);--stock-tooltip-border:rgba(0,0,0,0.10);--stock-tooltip-text:#1f2937;--stock-tooltip-label:rgba(80,80,100,0.70);--stock-tooltip-value:#111827;--stock-tooltip-value-muted:#6b7280;--stock-tooltip-separator:rgba(0,0,0,0.08);--stock-tooltip-shadow:0 4px 20px rgba(0,0,0,0.15)}.metrics-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:12px;gap:12px}@media (max-width:900px){.metrics-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:800px){.metrics-grid{grid-template-columns:1fr}}.metric-card{min-width:0}.fundamentals-top-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(380px,100%),1fr));grid-gap:16px;gap:16px;margin-bottom:16px}