:root{--page:#0b0d10;--surface:#14181d;--card:#1b2026;--line:#38414a;--line-soft:#2b333b;--ink:#f3f1ec;--muted:#a9b0b8;--gold:#c8a96b;--gold-soft:#e1c58d;--rise:#e05a67;--fall:#48b89b;--chart-grid:#2b333b}*{box-sizing:border-box}html,body{background:var(--page);min-height:100%;color:var(--ink);margin:0}body{font-family:Arial,Noto Sans TC,sans-serif;font-size:14px}button,input,select{font:inherit}.stock-shell{min-height:100vh}.app-header{background:linear-gradient(90deg,#0b0d10 0%,#14181d 72%,#1b2026 100%);border-bottom:1px solid #c8a96b94;align-items:center;gap:.9rem;min-height:4.2rem;padding:.35rem .85rem;display:flex}.brand-lockup{color:var(--gold);flex:none;align-items:center;gap:.4rem;text-decoration:none;display:inline-flex}.brand-logo{object-fit:contain;width:3.7rem;height:3.25rem}.brand-name{color:var(--gold);letter-spacing:.1em;white-space:nowrap;font-family:Georgia,Noto Serif TC,serif;font-size:1.05rem;font-weight:700}.top-navigation{align-items:center;gap:.15rem;min-width:0;display:flex}.top-navigation-item{color:#cdd1d4;white-space:nowrap;border-bottom:2px solid #0000;padding:.62rem .62rem .52rem;font-size:.85rem;text-decoration:none;display:inline-flex}.top-navigation-item.active{border-bottom-color:var(--gold);color:var(--gold);font-weight:700}.top-navigation-item.reserved{color:#b7bdc2;cursor:default}.top-navigation-item.reserved:hover{color:var(--ink)}.member-menu em{color:var(--gold);background:#c8a96b29;border:1px solid #c8a96b8c;border-radius:999px;margin-left:.3rem;padding:.08rem .28rem;font-size:.64rem;font-style:normal}.header-search{align-items:center;gap:.4rem;margin-left:auto;display:flex}.header-search-label{color:var(--gold-soft);white-space:nowrap;font-size:.78rem;font-weight:700}.search-form{align-items:center;gap:.25rem;display:flex}.search-form input{color:var(--ink);background:#0e1115;border:1px solid #4a535d;border-radius:3px;width:10.5rem;padding:.32rem .5rem}.search-form input::placeholder{color:#7d858d}.search-form button{color:var(--gold-soft);cursor:pointer;background:#252c33;border:1px solid #c8a96bad;border-radius:3px;padding:.3rem .58rem}.search-form button:hover{color:var(--ink);background:#303941}.search-form button:disabled{cursor:wait;opacity:.65}.search-error{color:var(--rise);white-space:nowrap;font-size:.75rem}.market-workspace{grid-template-columns:minmax(0,1fr) 34rem;min-height:calc(100vh - 4.2rem);display:grid}.workspace-main{min-width:0;padding:.4rem .6rem 1rem}.workspace-titlebar{color:var(--gold);align-items:center;gap:1rem;height:2rem;padding:0 .2rem;display:flex}.titlebar-muted{color:var(--muted);font-size:.78rem}.analysis-sidebar{background:var(--surface);border-left:1px solid var(--line);min-width:0;overflow:hidden}.analysis-controls{background:var(--card);border-bottom:1px solid var(--line);align-items:center;gap:.65rem;min-height:2.15rem;padding:.28rem .45rem;display:flex}.analysis-controls label,.analysis-mode label{color:var(--gold-soft);white-space:nowrap;align-items:center;gap:.3rem;display:inline-flex}.analysis-controls select,.analysis-mode select,.broker-panel-heading select{color:var(--ink);background:#101419;border:1px solid #4b555f;border-radius:2px;padding:.18rem .28rem}.analysis-controls .date-control{flex:1}.analysis-controls .date-control select{width:100%;min-width:8rem}.today-button{color:var(--ink);cursor:pointer;background:#252c33;border:1px solid #5a646e;border-radius:2px;padding:.18rem .4rem}.analysis-summary{border-bottom:1px solid var(--line);padding:.55rem .45rem .35rem}.analysis-summary strong{font-size:1rem}.analysis-summary b{color:var(--rise);margin-left:.5rem;font-size:1.05rem}.stock-id{color:var(--gold);font-weight:700}.period-summary{border-top:1px solid var(--line-soft);color:var(--gold-soft);align-items:center;gap:.5rem;margin-top:.45rem;padding-top:.3rem;display:flex}.period-summary strong{color:var(--ink);background:#242a31;margin-left:auto;padding:.18rem 1rem}.analysis-mode{border-bottom:1px solid var(--line);padding:.35rem .45rem}.analysis-tabs{border-bottom:1px solid var(--line);background:#11151a;grid-template-columns:repeat(4,minmax(0,1fr));padding:.3rem .35rem 0;display:grid}.analysis-tabs button{color:#b7bec5;cursor:pointer;background:#20262d;border:1px solid #3d4751;border-bottom:0;min-height:2rem;padding:.25rem .2rem;font-size:.75rem}.analysis-tabs button+button{border-left:0}.analysis-tabs button.active{background:var(--surface);box-shadow:inset 0 2px 0 var(--gold);color:var(--gold);font-weight:700}.tab-placeholder{color:var(--gold-soft);background:#c8a96b1f;margin:0;padding:.4rem .55rem;font-size:.75rem}.charts-stack{gap:.35rem;display:grid}.chart-pane{background:var(--surface);border:1px solid var(--line);overflow:hidden}.chart-pane>div:last-child{min-height:110px}.price-pane>div:last-child{height:520px;min-height:min(54vh,36rem)}.chart-interaction-surface{cursor:crosshair;touch-action:none;position:relative}.chart-host{width:100%;height:100%}.force-chart-host{width:100%;height:230px}.range-selection{border-left:1px solid var(--gold);border-right:1px solid var(--gold);pointer-events:none;z-index:4;background:#c8a96b38;position:absolute;top:0;bottom:0}.chart-legend,.pane-label{color:var(--muted);align-items:center;gap:1rem;min-height:1.7rem;padding:.25rem .5rem 0;font-size:.78rem;display:flex}.legend-ma8{color:var(--gold)}.legend-ma20{color:#98a4b2}.chart-help{color:var(--gold-soft);margin-left:auto;font-size:.72rem}.chart-status{color:var(--muted);text-align:right;padding:.3rem .1rem;font-size:.78rem}.broker-lists{gap:.45rem;padding:.35rem;display:grid}.broker-table-panel{border:1px solid var(--line);min-width:0}.broker-panel-heading{color:#fff;align-items:center;gap:.45rem;min-height:1.85rem;padding:.2rem .35rem;display:flex}.buy-panel .broker-panel-heading,.sell-panel .broker-panel-heading,.winner-panel .broker-panel-heading{border-left:3px solid var(--gold);color:var(--ink);background:#1b2026}.broker-panel-heading h3{margin:0;font-size:.9rem}.broker-panel-heading span{opacity:.9;margin-left:auto;font-size:.72rem}.broker-panel-heading select{max-width:6.5rem;padding:.1rem;font-size:.72rem}.broker-table-scroll{max-height:18rem;overflow:auto}.broker-table-scroll table{border-collapse:collapse;table-layout:fixed;min-width:100%;font-size:.77rem}.broker-table-scroll th,.broker-table-scroll td{border-bottom:1px solid var(--line-soft);text-align:right;white-space:nowrap;padding:.3rem .25rem}.broker-table-scroll th{color:#d9dcde;z-index:1;background:#252c33;font-weight:600;position:sticky;top:0}.sort-button{color:inherit;cursor:pointer;font:inherit;background:0 0;border:0;padding:0}.sort-button:hover,.sort-button:focus-visible{color:var(--gold);text-decoration:underline}.broker-table-scroll th:first-child,.broker-table-scroll td:first-child{text-align:center;width:1.8rem}.broker-table-scroll th:nth-child(2),.broker-table-scroll td:nth-child(2){text-align:left;text-overflow:ellipsis;width:12rem;overflow:hidden}.broker-name{text-overflow:ellipsis;overflow:hidden}.broker-name-cell{align-items:center;gap:.3rem;min-width:0;display:flex}.broker-name-button{color:inherit;cursor:pointer;text-align:left;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:0;max-width:100%;padding:0;text-decoration:underline;overflow:hidden}.broker-name-button:hover,.broker-name-button:focus-visible{color:var(--gold)}.company-broker-button{color:var(--gold-soft);cursor:pointer;background:#242b32;border:1px solid #c8a96bb8;border-radius:2px;flex:none;padding:.08rem .22rem;font-size:.68rem}.company-broker-button.assigned{color:#f08b95;background:#e05a6724;border-color:#e05a679e}.company-broker-button:disabled{cursor:wait;opacity:.6}.correlation-broker-button{color:#83d4bd;cursor:pointer;background:#1d2c2b;border:1px solid #48b89ba6;border-radius:2px;flex:none;padding:.08rem .22rem;font-size:.68rem}.correlation-broker-button.assigned{color:#f08b95;background:#e05a6724;border-color:#e05a679e}.correlation-broker-button:disabled{cursor:wait;opacity:.6}.selected-broker-row{background:#c8a96b24}.broker-hint{color:var(--muted);margin:0;padding:0 .15rem;font-size:.72rem}.company-list-toolbar{justify-content:flex-end;padding:.45rem .35rem .2rem;display:flex}.company-list-toggle{color:var(--gold-soft);cursor:pointer;background:#242b32;border:1px solid #c8a96bb3;border-radius:3px;padding:.25rem .5rem;font-size:.75rem}.company-assignment-panel{background:#171c21;border:1px solid #424c55;border-radius:3px;margin:0 .35rem .4rem;padding:.4rem .5rem}.company-assignment-panel p{color:var(--gold-soft);margin:0 0 .25rem;font-size:.74rem;font-weight:700}.company-assignment-panel ul{gap:.2rem;max-height:8rem;margin:0;padding:0;list-style:none;display:grid;overflow:auto}.company-assignment-panel li{justify-content:space-between;align-items:center;font-size:.75rem;display:flex}.company-empty-state{color:var(--gold-soft);text-align:center;background:#c8a96b1a;border:1px dashed #c8a96b99;margin:.4rem .35rem;padding:.65rem;font-size:.78rem}.correlation-pool{background:#171c21;border:1px solid #424c55;margin:.35rem;padding:.45rem}.correlation-pool-heading{color:var(--gold-soft);justify-content:space-between;align-items:center;font-size:.78rem;font-weight:700;display:flex}.correlation-pool-list{flex-wrap:wrap;gap:.25rem;margin:.35rem 0 0;padding:0;list-style:none;display:flex}.correlation-pool-list li{background:#20262d;border:1px solid #424c55;border-radius:2px;align-items:center;gap:.2rem;padding:.12rem .25rem;font-size:.72rem;display:inline-flex}.correlation-threshold{color:var(--gold-soft);justify-content:flex-end;align-items:center;gap:.25rem;padding:.35rem;font-size:.74rem;display:flex}.correlation-threshold input{color:var(--ink);background:#0f1317;border:1px solid #4d5761;width:3.6rem}.correlation-results{border:1px solid var(--line);margin:.35rem}.correlation-results .broker-panel-heading{border-left:3px solid var(--gold);color:var(--ink);background:#1b2026}.broker-history-status{color:var(--gold-soft);background:#c8a96b1a;margin:0 .35rem .35rem;padding:.35rem .5rem;font-size:.75rem}.rise{color:var(--rise)}.fall{color:var(--fall)}.value{font-variant-numeric:tabular-nums}.broker-loading,.error-inline,.muted{color:var(--muted);padding:1rem}.error-panel{color:var(--muted);text-align:center;max-width:60rem;margin:4rem auto;padding:2rem}.skeleton-page{max-width:1200px;margin:2rem auto;padding:1rem}.skeleton{background:#293139;border-radius:.2rem;margin-bottom:1rem;animation:1.6s ease-in-out infinite pulse}.skeleton.title{width:45%;height:4rem}.skeleton.chart{height:30rem}.skeleton.list{height:14rem}.sr-only{width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}@keyframes pulse{50%{opacity:.5}}@media (max-width:1180px){.app-header{flex-wrap:wrap}.header-search{margin-left:0}.market-workspace{grid-template-columns:minmax(0,1fr) 27rem}}@media (max-width:780px){.app-header{gap:.35rem .65rem;padding:.35rem .55rem}.brand-logo{width:3.1rem;height:2.65rem}.brand-name{font-size:.95rem}.top-navigation{order:3;width:100%;overflow-x:auto}.top-navigation-item{padding-left:.4rem;padding-right:.4rem;font-size:.76rem}.header-search,.search-form{flex:1}.search-form input{width:100%;min-width:0}.market-workspace{display:block}.analysis-sidebar{border-left:0;border-top:1px solid var(--line)}.broker-table-scroll{max-height:20rem}}
