.indicators{grid-template-columns:repeat(4,1fr)!important}@media(max-width:900px){.indicators{grid-template-columns:repeat(2,1fr)!important}}@media(max-width:720px){.indicators{grid-template-columns:1fr!important}}
@import url('https://fonts.googleapis.com/css2?family=DM+Mono&family=Noto+Sans+TC:wght@400;500;600;700&display=swap');
.chart-tools{text-align:right}.ma-switch{display:flex;justify-content:end;gap:4px;margin-bottom:12px}.ma-switch button{border:1px solid #3a493c;background:transparent;color:#99a795;font:11px 'DM Mono';padding:6px 8px;cursor:pointer}.ma-switch button.active,.ma-switch button:hover{background:#c8f263;border-color:#c8f263;color:#172013}.legend #ma-legend{margin-left:0}.candle{background:#ef7667}@media(max-width:720px){.chart-tools{text-align:left;margin-top:18px}.ma-switch{justify-content:start}}
.final-score{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;position:relative;background:linear-gradient(105deg,#1d2a1d,#18211a)!important}.final-score h3{margin:0;font-size:19px}.final-score>div:last-of-type{display:flex;align-items:baseline;gap:7px}.final-score b{font:34px 'DM Mono';color:#c8f263}.final-score span,.thresholds{font:12px 'DM Mono';color:#9bab95}.final-score .thresholds{position:absolute;right:24px;bottom:15px;margin:0}@media(max-width:720px){.final-score{display:block}.final-score>div:last-of-type{margin-top:12px}.final-score .thresholds{position:static;margin-top:12px;line-height:1.7}}
main>.final-score{margin-bottom:12px}
.market-environment{display:grid;grid-template-columns:minmax(175px,.8fr) auto minmax(330px,1.7fr);align-items:center;gap:26px;margin-bottom:12px;padding:20px 24px;border:1px solid #3a4b3d;background:linear-gradient(110deg,#1b291e,#131c15);position:relative;overflow:hidden}.market-environment::before{content:'';position:absolute;left:0;top:0;bottom:0;width:4px;background:#c8f263}.market-env-title h3{margin:0 0 4px;font-size:19px}.market-env-title small,.market-env-advice small{display:block;color:#778575;font-size:10px}.market-env-score{display:flex;align-items:baseline;gap:7px;padding:0 26px;border-left:1px solid #344137;border-right:1px solid #344137}.market-env-score b{font:700 38px 'DM Mono';color:#c8f263}.market-env-score span{font:13px 'DM Mono'}.market-env-score span.up{color:#ef7667}.market-env-score span.down{color:#7ed487}.market-env-score span.flat{color:#97a294}.market-env-score small{color:#839080;font:10px 'DM Mono'}.market-env-advice{display:grid;grid-template-columns:auto 1fr;align-items:center;column-gap:12px;row-gap:5px}.market-env-advice>span{padding:5px 9px;border-radius:14px;background:#c8f263;color:#172013;font-size:11px;font-weight:700;white-space:nowrap}.market-env-advice strong{font-size:14px;line-height:1.55}.market-env-advice small{grid-column:2}.regime-strong::before{background:#ef7667}.regime-strong .market-env-advice>span{background:#ef7667}.regime-neutral::before{background:#e0a952}.regime-neutral .market-env-advice>span{background:#e0a952}.regime-weak::before,.regime-risk::before{background:#7ed487}.regime-weak .market-env-advice>span,.regime-risk .market-env-advice>span{background:#294a35;color:#9af5b4}.market-environment.unavailable{opacity:.75}@media(max-width:800px){.market-environment{grid-template-columns:1fr auto;gap:14px;padding:18px}.market-env-score{padding:0 0 0 18px;border-right:0}.market-env-advice{grid-column:1/-1;padding-top:14px;border-top:1px solid #344137}}@media(max-width:480px){.market-env-score b{font-size:31px}.market-env-advice{grid-template-columns:1fr}.market-env-advice small{grid-column:1}.market-env-advice strong{font-size:13px}}
.market-trend{grid-column:1/-1;display:grid;grid-template-columns:150px minmax(0,1fr);align-items:center;gap:18px;padding-top:14px;border-top:1px solid #314036}.market-trend>div:first-child{display:flex;flex-direction:column;gap:5px}.market-trend>div:first-child b{color:#9dad98;font:10px 'DM Mono';letter-spacing:.7px}.market-trend>div:first-child span{color:#71806f;font-size:10px}.market-trend-chart{height:150px;min-width:0}.market-trend-chart>small{display:flex;height:100%;align-items:center;justify-content:center;color:#71806f;font-size:10px}.market-trend-chart svg{display:block;width:100%;height:100%;overflow:visible}.market-boundaries line{stroke:#354438;stroke-width:1;stroke-dasharray:4 5}.market-boundaries text,.market-date-label{fill:#71806f;font:9px 'DM Mono'}.market-trend-area{fill:#c8f2630e}.market-trend-line{fill:none;stroke:#c8f263;stroke-width:3;stroke-linejoin:round;stroke-linecap:round}.market-trend-chart circle{fill:#c8f263;stroke:#132016;stroke-width:3;cursor:crosshair}.market-trend-chart circle:last-of-type{fill:#fff;stroke:#c8f263;stroke-width:4}@media(max-width:700px){.market-trend{grid-template-columns:1fr;gap:7px}.market-trend-chart{height:135px}}
.market-trend-chart{height:230px;overflow-x:auto;overflow-y:hidden}.market-trend-chart svg{min-width:980px;overflow:hidden}.market-score-label{fill:#f0f7ed;font:700 13px 'DM Mono';paint-order:stroke;stroke:#121a14;stroke-width:4px}.market-boundaries text{font-size:12px}.market-date-label{font:700 16px 'DM Mono';fill:#d3dfcf;paint-order:stroke;stroke:#101612;stroke-width:3px}.market-point:last-of-type circle{fill:#fff;stroke:#c8f263;stroke-width:4}@media(max-width:700px){.market-trend-chart{height:220px}.market-trend-chart svg{min-width:980px}}
.market-band rect{stroke:none}.market-band text{font:700 13px 'Noto Sans TC';letter-spacing:.5px;paint-order:stroke;stroke:#101612;stroke-width:4px}.market-band.strong rect{fill:#ff5d521f}.market-band.strong text{fill:#ff8078}.market-band.bullish rect{fill:#b9f22720}.market-band.bullish text{fill:#cfff54}.market-band.neutral rect{fill:#ffbd2e24}.market-band.neutral text{fill:#ffd166}.market-band.weak rect{fill:#20c7d923}.market-band.weak text{fill:#56dce8}.market-band.risk rect{fill:#8068dc28}.market-band.risk text{fill:#aa98f2}.market-band+ .market-band rect{stroke:#ffffff08;stroke-width:1}
.layout-enabled>[data-layout-id]{position:relative;transition:opacity .15s,outline-color .15s}.layout-controls{position:absolute;z-index:20;top:7px;right:7px;display:flex;gap:2px;opacity:.16;transition:opacity .15s}.layout-enabled>[data-layout-id]:hover>.layout-controls,.layout-controls:focus-within{opacity:1}.layout-controls button{width:25px;height:25px;padding:0;border:1px solid #425246;background:#101712dc;color:#9eae9b;font:13px 'DM Mono';cursor:pointer}.layout-controls button:hover{border-color:#c8f263;color:#c8f263}.layout-controls .drag-handle{cursor:grab;font-size:16px}.layout-controls .drag-handle:active{cursor:grabbing}.layout-enabled>.is-dragging{opacity:.38;outline:1px dashed #c8f263}.layout-controls .move-up,.layout-controls .move-down{display:none}@media(max-width:720px){.layout-controls{top:6px;right:6px;opacity:.72}.layout-controls .drag-handle{display:none}.layout-controls .move-up,.layout-controls .move-down{display:block}}
.indicators+.chart-card{margin-top:12px}
.score-trend{font:19px 'DM Mono';margin-left:7px}.score-trend.up{color:#ef7667}.score-trend.down{color:#7ed487}.score-trend.flat{color:#95a095}
.score-acceleration{margin-left:10px;padding:5px 8px;border:1px solid #3a493d;border-radius:2px;background:#111914;font:10px 'DM Mono'!important;white-space:nowrap}.score-acceleration.positive{color:#ef8b72}.score-acceleration.negative{color:#76ce90}.score-acceleration.fast{color:#20270d!important;background:#d9ff66;border-color:#d9ff66;box-shadow:0 0 12px rgba(217,255,102,.35)}
.volume{width:8px;height:8px;background:#ef7667;opacity:.7}.volume-ma{width:15px;border-top:2px solid #d6b36a;vertical-align:middle}
.boll{width:15px;border-top:1px dashed #7ba6e8;vertical-align:middle}
.signal-dot{width:9px;height:9px;border-radius:50%;vertical-align:middle}.buy-dot{background:#ffd84d}.sell-dot{background:#55a7ff}
#chart{height:520px}
#chart{position:relative}.hover-ohlc{position:absolute;z-index:5;top:12px;left:14px;display:flex;align-items:center;gap:13px;padding:7px 10px;background:#101812e8;border:1px solid #344338;color:#82907f;font:11px 'DM Mono';pointer-events:none}.hover-ohlc span{white-space:nowrap}.hover-ohlc b{margin-left:4px;color:#e4ebe0;font-weight:600}.hover-ohlc b.up{color:#ef7667}.hover-ohlc b.down{color:#7ed487}.hover-ohlc .ohlc-date{padding-right:10px;border-right:1px solid #344338;color:#aab6a6}@media(max-width:720px){.hover-ohlc{left:8px;right:8px;gap:8px;justify-content:space-between;font-size:9px}.hover-ohlc .ohlc-date{display:none}}
@media(max-width:720px){#chart{height:380px}}
.leaderboard{margin-top:46px;background:#18211a;border:1px solid #2a372d;padding:24px}.leaderboard .section-title{margin-bottom:22px}.leaderboard small{font:11px 'DM Mono';color:#8c9b86}.leaderboard-table{border-top:1px solid #334036}.leaderboard-head{display:grid;grid-template-columns:80px 1.5fr 1fr 1fr 1fr;gap:16px;padding:12px 14px;font:11px 'DM Mono';color:#8c9b86;border-bottom:1px solid #29362c}.leaderboard-empty{padding:32px 14px;text-align:center;font-size:13px;color:#94a18f;background:#152017}@media(max-width:720px){.leaderboard{margin-top:28px}.leaderboard-head{grid-template-columns:45px 1fr 1fr}.leaderboard-head span:nth-child(3),.leaderboard-head span:nth-child(5){display:none}}
.watchlist{margin-bottom:12px;background:#18211a;border:1px solid #2a372d;padding:20px 24px}.watchlist-title{display:flex;justify-content:space-between;align-items:end}.watchlist h2{font-size:19px;margin:0}.new-list{display:flex;gap:6px}.new-list input{width:155px;background:#121a14;border:1px solid #374539;color:#edf0e8;padding:8px 10px;font:12px 'Noto Sans TC';outline:0}.new-list button,.watchlist-actions>button{background:#c8f263;border:0;color:#172013;padding:8px 12px;font:700 12px 'Noto Sans TC';cursor:pointer}.watchlist-body{margin-top:17px;border-top:1px solid #314034}.watchlist-tabs{display:flex;gap:5px;overflow-x:auto;padding:12px 0 8px}.watchlist-tabs button{background:#142017;border:1px solid #3a493c;color:#9ba99a;padding:7px 12px;font:12px 'Noto Sans TC';white-space:nowrap;cursor:pointer}.watchlist-tabs button.active{background:#2a3c25;border-color:#c8f263;color:#dfffa0}.watchlist-actions{display:flex;justify-content:space-between;align-items:center;gap:15px}.watchlist-stocks{display:flex;gap:7px;flex-wrap:wrap}.watch-stock{border:1px solid #405141;background:#111a13;color:#d6e2d1;padding:7px 10px;font:12px 'Noto Sans TC';cursor:pointer}.watch-stock span{font:10px 'DM Mono';color:#9bae96;margin-left:5px}.watchlist-empty{font-size:12px;color:#82907f}@media(max-width:720px){.watchlist{padding:18px}.watchlist-title{align-items:start;gap:15px}.new-list{flex-direction:column}.new-list input{width:135px}.watchlist-actions{align-items:start;flex-direction:column}.watchlist-actions>button{width:100%}}
.leaderboard-row{display:grid;grid-template-columns:80px 1.5fr 1fr 1fr 1fr;gap:16px;width:100%;border:0;border-bottom:1px solid #29362c;background:transparent;color:#dfe9d9;text-align:left;padding:13px 14px;font:13px 'Noto Sans TC';cursor:pointer}.leaderboard-row:hover{background:#223020}.leaderboard-row span:first-child,.leaderboard-row span:nth-child(4){font-family:'DM Mono';color:#c8f263}.leaderboard-row span:last-child{color:#c8f263}@media(max-width:720px){.leaderboard-row{grid-template-columns:45px 1fr 1fr}.leaderboard-row span:nth-child(3),.leaderboard-row span:nth-child(5){display:none}}
.market-boards{display:grid;grid-template-columns:1fr 1fr;gap:14px}.market-board{min-width:0;border:1px solid #314034;background:#141d16}.market-board-title{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px}.market-board-title h3{margin:0;font-size:18px}.market-board .leaderboard-head,.market-board .leaderboard-row{grid-template-columns:42px 1.3fr 65px 75px}.market-board .leaderboard-head span:last-child,.market-board .leaderboard-row span:last-child{display:none}@media(max-width:900px){.market-boards{grid-template-columns:1fr}}
.criteria-list{margin:20px 0;border:1px solid #303e33;background:#121a14}.criteria-list>div{display:grid;grid-template-columns:28px 74px minmax(0,1fr);align-items:center;min-height:33px;padding:0 12px;border-bottom:1px solid #263229;font-size:11px}.criteria-list>div:last-child{border-bottom:0}.criteria-list em{color:#627060;font:9px 'DM Mono';font-style:normal}.criteria-list b{color:#9eae99;font:9px 'DM Mono';letter-spacing:.6px}.criteria-list span{color:#c6d0c2;font-size:11px;white-space:nowrap}.signal-dot-mini{display:inline-block;width:6px;height:6px;border-radius:50%;margin-right:4px}.signal-dot-mini.fresh{background:#ffd84d}.signal-dot-mini.active{background:#66d98a}.combined-board .leaderboard-head,.combined-board .leaderboard-row{grid-template-columns:50px minmax(160px,1.5fr) 70px 95px 80px 85px minmax(145px,1.1fr)}.combined-board .leaderboard-head span:last-child,.combined-board .leaderboard-row span:last-child{display:block}.market-board-title p{margin:7px 0 0;color:#849181;font-size:11px}.signal-chip{display:inline-block;padding:4px 7px;border-radius:2px;font:10px 'Noto Sans TC';font-style:normal}.signal-chip.fresh{background:#ffd84d;color:#292307}.signal-chip.active{background:#294a35;color:#9af5b4;border:1px solid #3b6b4a}.rank-stock{display:flex;flex-direction:column}.rank-stock b{font-size:13px}.rank-stock small,.rank-detail small{margin-top:3px;color:#778576!important}.rank-score{font:700 16px 'DM Mono';color:#c8f263!important}.rank-up{color:#ef7667}.rank-down{color:#7ed487}.rank-detail{display:flex;flex-direction:column}.rank-detail b{font:11px 'DM Mono';color:#dce7d8}@media(max-width:800px){.combined-board .leaderboard-head,.combined-board .leaderboard-row{grid-template-columns:38px 1.4fr 90px 70px}.combined-board .leaderboard-head span:nth-child(3),.combined-board .leaderboard-row span:nth-child(3),.combined-board .leaderboard-head span:nth-child(6),.combined-board .leaderboard-row span:nth-child(6),.combined-board .leaderboard-head span:nth-child(7),.combined-board .leaderboard-row span:nth-child(7){display:none}.leaderboard .section-title small{display:block;margin-top:10px}.market-board-title{align-items:flex-start;flex-direction:column}.criteria-list>div{grid-template-columns:24px 66px minmax(0,1fr);padding:0 9px}.criteria-list span{font-size:10px;overflow:hidden;text-overflow:ellipsis}}
.rank-up,.rank-down{display:flex;flex-direction:column;align-items:flex-start;gap:4px}.rank-up>b,.rank-down>b{font:11px 'DM Mono'}.acceleration-badge{display:inline-block!important;margin:0!important;padding:3px 5px;border:1px solid #d9ff66;border-radius:2px;background:rgba(217,255,102,.12);color:#d9ff66!important;font:8px 'DM Mono';white-space:nowrap}.rank-acceleration-fast{filter:drop-shadow(0 0 5px rgba(217,255,102,.24))}
.acceleration-badge.pre-entry{border-color:#ffbd59;background:rgba(255,189,89,.12);color:#ffbd59!important}
.buy-signal-state{font-size:11px;color:#aebba9!important}.buy-signal-state .signal-dot-mini{width:8px;height:8px;margin-left:5px;vertical-align:middle}.signal-dot-mini.fresh{box-shadow:0 0 6px #ffd84d66}.signal-dot-mini.active{box-shadow:0 0 6px #66d98a55}
.summary{grid-template-columns:.85fr .85fr 1.45fr 1fr}.signal>div,.position>div{font-size:29px;font-weight:700;color:#c8f263}.position.holding>div{color:#66d98a}.position.flat>div{color:#a4afa0}@media(max-width:900px){.summary{grid-template-columns:repeat(2,1fr)}}@media(max-width:720px){.summary{grid-template-columns:1fr}}
.indicators{grid-template-columns:repeat(4,1fr)}@media(max-width:900px){.indicators{grid-template-columns:repeat(2,1fr)}}@media(max-width:720px){.indicators{grid-template-columns:1fr}}
*{box-sizing:border-box}body{margin:0;background:#101612;color:#edf0e8;font-family:'Noto Sans TC',sans-serif}header{height:76px;border-bottom:1px solid #28342b;display:flex;align-items:center;justify-content:space-between;padding:0 max(5vw,28px)}.brand{font-size:20px;font-weight:700;letter-spacing:.2px}.brand span{color:#c8f263;margin-right:8px}.status{font:12px 'DM Mono';color:#a5b0a2}.status i{display:inline-block;background:#c8f263;width:7px;height:7px;border-radius:50%;margin-right:7px;box-shadow:0 0 10px #c8f263}.status small{margin-left:12px;color:#687267}main{max-width:1260px;margin:auto;padding:62px max(5vw,28px) 25px}.hero{display:flex;justify-content:space-between;gap:35px;align-items:end;margin-bottom:50px}.eyebrow{font:11px 'DM Mono';letter-spacing:1.2px;color:#93a38b;margin:0 0 9px}h1{font-size:clamp(30px,4vw,54px);line-height:1.24;margin:0;letter-spacing:-1.5px}h1 em{font-style:normal;color:#c8f263}.hero form{width:min(440px,100%);display:flex;background:#1a241c;border:1px solid #354239;padding:5px}.hero input{flex:1;min-width:0;background:transparent;border:0;color:white;padding:13px;font-family:inherit;outline:0}.hero button,.slack button{background:#c8f263;border:0;padding:0 17px;font-weight:700;font-family:inherit;cursor:pointer;color:#172013}.hero button b{font-size:20px;margin-left:7px}.summary{display:grid;grid-template-columns:1fr 1.55fr 1fr;gap:12px;margin-bottom:12px}.summary article,.chart-card,.indicators article{background:#18211a;border:1px solid #2a372d;padding:24px}.summary p{font-size:13px;color:#a0ac9c;margin:0 0 9px}.summary p span{font-size:11px;float:right;color:#657064}.signal>div{font-size:31px;font-weight:700;color:#c8f263}.summary small{color:#7f8a7c;font-size:11px}.scoreline{display:flex;align-items:center;gap:18px}.scoreline strong{font:32px 'DM Mono';color:#fff}.meter{height:6px;background:#374338;flex:1}.meter i{height:100%;display:block;background:#c8f263;width:0;transition:width .5s}.price{font:28px 'DM Mono';font-weight:bold}.chart-card{padding-bottom:0}.section-title{display:flex;justify-content:space-between;align-items:start}.section-title h2,.slack h2{font-size:21px;margin:0}.legend{font-size:12px;color:#a3afa0}.legend span{display:inline-block;margin:0 7px 0 15px}.candle{width:8px;height:12px;background:#c8f263}.line{width:15px;border-top:2px solid #e0a952;vertical-align:middle}#chart{height:410px;margin-top:18px}.indicators{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:12px}.metric-head{display:flex;justify-content:space-between}.metric-head p{font:11px 'DM Mono';color:#91a48b;margin:0 0 8px}.metric-head h3{font-size:16px;margin:0}.metric-head b{font:24px 'DM Mono';color:#c8f263}.metric{margin:23px 0 13px;display:flex;gap:16px}.metric span{font-size:11px;color:#82907f}.metric strong{font:14px 'DM Mono';color:#e6eee0;margin-left:4px}.indicators article>p{font:12px 'DM Mono';margin:0;color:#aeb9a9}.slack{margin-top:46px;padding:29px;background:#c8f263;color:#152012;display:grid;grid-template-columns:1fr 1.35fr;gap:55px}.slack .eyebrow{color:#516341}.slack>div>p:last-child{font-size:13px;line-height:1.8;color:#415338}.slack form{display:grid;grid-template-columns:1fr 1fr;gap:11px}.slack label{font-size:12px;font-weight:600}.slack input{width:100%;display:block;border:1px solid #96bb47;background:#e2f7a8;margin-top:5px;padding:9px;font-family:'DM Mono';outline:0}.slack .webhook{grid-column:span 2}.slack button{padding:11px;background:#172013;color:#eaffc3}.slack button.ghost{background:transparent;border:1px solid #254126;color:#1e3620}.slack output{grid-column:span 2;font-size:12px}.disclaimer{text-align:center;font-size:11px;color:#64705f;padding:24px}@media(max-width:720px){header{height:58px}.status{display:none}main{padding-top:35px}.hero,.section-title{display:block}.hero form{margin-top:26px}.summary,.indicators,.slack{grid-template-columns:1fr}.summary{gap:8px}.indicators{gap:8px}.slack{gap:20px}.slack .webhook{grid-column:span 2}#chart{height:320px}}
@media(min-width:721px){.summary{grid-template-columns:repeat(4,minmax(0,1fr))!important}}
.price-chart{height:330px}.volume-chart{height:120px;border-top:1px solid #2a372d}#chart{height:450px;position:relative}.hover-ohlc{z-index:5}@media(max-width:720px){.price-chart{height:270px}.volume-chart{height:100px}#chart{height:370px}}
.price-change{font:13px 'DM Mono';font-weight:700;margin:5px 0 6px}.price.up,.price-change.up{color:#ef7667}.price.down,.price-change.down{color:#7ed487}.price.flat,.price-change.flat{color:#a0ac9c}
.holding-editor{display:grid;grid-template-columns:minmax(130px,1fr) 150px 150px auto;gap:10px;align-items:end;padding:12px;margin-bottom:12px;background:#121a14;border:1px solid #314034}.holding-editor[hidden]{display:none}.holding-editor strong{align-self:center}.holding-editor label{font-size:11px;color:#91a48b}.holding-editor input{display:block;width:100%;margin-top:4px;padding:8px;background:#0f1611;border:1px solid #3a493c;color:#edf0e8}.holding-editor button{height:35px;background:#c8f263;border:0;padding:0 13px;font-weight:700;color:#172013;cursor:pointer}.holding-editor small{grid-column:1/-1;color:#7f8a7c}.watchlist-actions:has(.holding-card){display:block}.watchlist-stocks:has(.holding-card){display:grid;gap:7px}.holding-card{display:grid;grid-template-columns:1fr auto;gap:8px;border:1px solid #304034;background:#121a14;padding:8px}.holding-main{display:grid;grid-template-columns:minmax(140px,1.5fr) repeat(5,minmax(78px,1fr)) auto;align-items:center;gap:10px;background:transparent;border:0;color:#e5ecdf;text-align:left;cursor:pointer}.holding-main b em{display:block;font:10px 'DM Mono';font-style:normal;color:#8d9d89}.holding-main span{font:13px 'DM Mono'}.holding-main span small{display:block;margin-top:3px;font:9px 'Noto Sans TC';color:#72806f}.holding-main i{padding:4px 6px;background:#493c1c;color:#ffd84d;font:10px 'Noto Sans TC';font-style:normal}.holding-up{color:#ef7667}.holding-down{color:#7ed487}.holding-card>div{display:flex;gap:5px;align-items:center}.holding-card>div button{border:1px solid #405141;background:#18231a;color:#a9b7a4;padding:6px 8px;font-size:10px;cursor:pointer}.holding-card>div .remove-holding{color:#e98a7e}@media(max-width:900px){.holding-editor{grid-template-columns:1fr 1fr}.holding-main{grid-template-columns:1.4fr repeat(2,1fr)}.holding-main span:nth-of-type(3),.holding-main span:nth-of-type(4),.holding-main span:nth-of-type(5){display:none}}@media(max-width:600px){.holding-editor{grid-template-columns:1fr}.holding-editor small{grid-column:auto}.holding-card{grid-template-columns:1fr}.holding-main{grid-template-columns:1.4fr 1fr}.holding-main span:nth-of-type(2){display:none}}
.watchlist-tab{display:inline-flex;position:relative}.watchlist-tab>button:first-child{padding-right:28px}.watchlist-tab:first-child>button:first-child{padding-right:12px}.watchlist-tab .delete-tab{position:absolute;right:3px;top:3px;width:22px;height:22px;padding:0;border:0;background:transparent;color:#788676;font-size:16px}.watchlist-tab .delete-tab:hover{color:#ef7667}.portfolio-summary{display:grid;grid-template-columns:1.5fr 1fr 1fr auto;align-items:center;gap:18px;padding:15px 17px;background:linear-gradient(110deg,#1d2b20,#151e17);border:1px solid #405340}.portfolio-summary div{display:flex;flex-direction:column}.portfolio-summary div small{font:9px 'DM Mono';letter-spacing:1px;color:#8fa18b}.portfolio-summary div b{font-size:17px;margin-top:4px}.portfolio-summary span{font:17px 'DM Mono'}.portfolio-summary span small{display:block;font:9px 'Noto Sans TC';color:#71806f;margin-top:3px}.portfolio-summary em{font-size:10px;font-style:normal;color:#9bad96}.holding-main i.rotate{background:#25482f;color:#76e69a}.holding-main i.warning{background:#482c25;color:#f0a092}@media(max-width:720px){.portfolio-summary{grid-template-columns:1fr 1fr}.portfolio-summary em{grid-column:1/-1}}
.watchlist{padding:0;overflow:hidden}.watchlist-title{padding:22px 24px 17px}.watchlist-body{margin-top:0;padding:0 24px 24px;background:linear-gradient(180deg,#172119 0%,#121a14 100%)}.watchlist-tabs{padding:14px 0;gap:8px}.watchlist-tab>button:first-child{height:34px;border-radius:17px;padding-left:15px;background:#111912}.watchlist-tab>button:first-child.active{background:#c8f263;color:#162012;border-color:#c8f263;box-shadow:0 0 18px #c8f233}.watchlist-tab .delete-tab{top:6px;right:4px;color:#71806f}.holding-editor{grid-template-columns:minmax(170px,1.25fr) minmax(125px,.7fr) minmax(125px,.7fr) auto;margin:0 0 14px;padding:14px 16px;border-radius:6px;border-color:#35473a;background:#0e1610}.holding-editor strong{font-size:15px}.holding-editor label{letter-spacing:.3px}.holding-editor input{height:38px;border-radius:3px;background:#172119}.holding-editor button{height:38px;border-radius:3px;padding:0 18px}.portfolio-summary{border-radius:7px;padding:18px 20px;border-color:#3b5140;background:radial-gradient(circle at 80% 0,#273923 0,transparent 38%),linear-gradient(125deg,#1d2c20,#111914)}.watchlist-stocks:has(.holding-card){gap:10px}.holding-card{border-radius:7px;padding:13px 14px;border-color:#2d3e32;background:#151f17;transition:transform .18s,border-color .18s}.holding-card:hover{transform:translateY(-1px);border-color:#526a55}.holding-main{min-height:54px}.holding-main b{font-size:15px}.holding-main b em{margin-top:4px}.holding-main span{font-size:14px}.holding-main i{border-radius:12px;padding:5px 9px;white-space:nowrap}.holding-card>div{padding-left:8px;border-left:1px solid #2e3b31}.holding-card>div button{border-radius:3px}.holding-card>div button:hover{border-color:#8aa17f;color:#edf5e9}@media(max-width:900px){.watchlist-title{align-items:flex-start}.holding-editor{grid-template-columns:1fr 1fr}.holding-editor strong,.holding-editor button{grid-column:span 2}.holding-main{grid-template-columns:1.5fr 1fr 1fr auto}.holding-main span:nth-of-type(3),.holding-main span:nth-of-type(4),.holding-main span:nth-of-type(5){display:none}}@media(max-width:600px){.watchlist-title{padding:18px}.watchlist-body{padding:0 18px 18px}.holding-editor{grid-template-columns:1fr}.holding-editor strong,.holding-editor button{grid-column:auto}.portfolio-summary{grid-template-columns:1fr 1fr}.holding-card{grid-template-columns:1fr}.holding-main{grid-template-columns:1.4fr 1fr auto}.holding-main span:nth-of-type(2){display:none}.holding-card>div{border:0;padding:5px 0 0}}
.history-head,.history-row{display:grid;grid-template-columns:105px minmax(155px,1.3fr) 105px minmax(145px,1fr) 105px minmax(175px,1.4fr);gap:12px;align-items:center}.history-head{padding:10px 14px;border:1px solid #304034;background:#101812;color:#82907f;font:10px 'DM Mono'}.history-row{width:100%;padding:12px 14px;border:0;border-bottom:1px solid #2a372d;background:#141e16;color:#dce6d8;text-align:left;font:12px 'Noto Sans TC';cursor:pointer}.history-row:hover{background:#1d2b20}.history-row span{min-width:0}.history-row span:nth-child(2),.history-row span:nth-child(4),.history-row span:nth-child(5){display:flex;flex-direction:column}.history-row b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.history-row small{margin-top:3px;color:#7e8d7a;font:10px 'DM Mono'}.history-row span:nth-child(5){font:700 14px 'DM Mono'}.history-row span:nth-child(6){font-size:11px;color:#9eac99}.history-up{color:#ef7667}.history-down{color:#7ed487}.history-legend{display:flex;justify-content:flex-end;gap:14px;padding:0 2px 9px;color:#8e9c89;font-size:10px}.signal-dot-mini.watch{background:#e0a952;box-shadow:0 0 6px #e0a95255}.signal-dot-mini.exited{background:#55a7ff;box-shadow:0 0 6px #55a7ff55}.signal-dot-mini.unknown{background:#778276}.history-empty{width:100%;padding:30px;border:1px solid #304034;background:#121a14;text-align:center;color:#82907f;font-size:12px}@media(max-width:760px){.history-head,.history-row{grid-template-columns:82px minmax(120px,1fr) 90px 70px;gap:7px}.history-head span:nth-child(4),.history-row span:nth-child(4),.history-head span:nth-child(6),.history-row span:nth-child(6){display:none}.history-legend{justify-content:flex-start;flex-wrap:wrap}}
.watchlist-stocks:has(.history-head){display:block;width:100%}
.history-toolbar{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:18px;padding:10px 12px;border:1px solid #304034;border-bottom:0;background:#121b14;color:#9cab98;font-size:11px}.history-toolbar label{display:flex;align-items:center;gap:8px}.history-toolbar select{min-width:82px;padding:7px 28px 7px 10px;border:1px solid #415345;background:#172219;color:#e1ebdd;font:700 12px 'DM Mono'}.history-toolbar>span{text-align:center}.history-toolbar nav{display:flex;align-items:center;gap:10px}.history-toolbar button{padding:7px 11px;border:1px solid #415345;background:#172219;color:#dce6d8;font-size:11px;cursor:pointer}.history-toolbar button:hover:not(:disabled){border-color:#c8f263;color:#c8f263}.history-toolbar button:disabled{opacity:.35;cursor:not-allowed}.history-toolbar nav b{min-width:45px;text-align:center;color:#c8f263;font:700 11px 'DM Mono'}@media(max-width:760px){.history-toolbar{grid-template-columns:1fr auto;gap:9px}.history-toolbar>span{grid-column:1/-1;grid-row:2;text-align:left}.history-toolbar nav{justify-content:flex-end}}
.sync-bar{display:flex;align-items:center;justify-content:flex-end;gap:10px;min-height:34px;padding-top:10px;border-bottom:1px solid #26352b;color:#8fa18b;font:10px 'Noto Sans TC'}.sync-bar span::before{content:'●';margin-right:6px;color:#80917c}.sync-bar span.synced::before{color:#74dc8d}.sync-bar span.syncing::before{color:#e0b652}.sync-bar span.failed::before{color:#ef7667}.sync-bar span.pending::before{color:#e0b652}.sync-bar button{border:1px solid #c8f263;background:transparent;color:#c8f263;padding:6px 10px;font:700 10px 'Noto Sans TC';cursor:pointer}.sync-bar button:hover{background:#c8f263;color:#152016}.sync-bar button:disabled{opacity:.5;cursor:wait}@media(max-width:600px){.sync-bar{align-items:flex-start;justify-content:space-between}.sync-bar span{max-width:68%}}
.threshold-settings{margin-top:34px;padding:22px 25px;background:#18211a;color:#edf0e8;border:1px solid #2a372d;grid-template-columns:minmax(230px,1fr) minmax(420px,1.2fr);gap:36px;align-items:center}.threshold-settings .eyebrow{color:#91a48b}.threshold-settings>div>p:last-child{margin:7px 0 0;color:#849181;line-height:1.6}.threshold-settings form{grid-template-columns:1fr 1fr auto;align-items:end}.threshold-settings input{background:#101812;border-color:#3a493c;color:#edf0e8}.threshold-settings button{height:36px;padding:0 20px;background:#c8f263;color:#172013}.threshold-settings output{grid-column:1/-1;color:#9dab98}@media(max-width:800px){.threshold-settings{grid-template-columns:1fr;gap:18px}.threshold-settings form{grid-template-columns:1fr 1fr}.threshold-settings button{grid-column:1/-1}}
.holding-editor small.holding-advice{padding:10px 12px;border-left:3px solid #ffd84d;background:#2a2514;color:#f0dc8e;font-size:12px;line-height:1.65}
.target-plan{grid-column:1/-1!important;display:grid!important;grid-template-columns:repeat(5,minmax(90px,1fr)) minmax(180px,1.3fr);gap:0!important;padding:0!important;border:1px solid #304136!important;background:#101812!important}.target-plan span{padding:10px 12px;border-right:1px solid #2a382e}.target-plan small{display:block;margin-bottom:4px;color:#788776;font-size:9px}.target-plan b{font:700 13px 'DM Mono';color:#e6eee0}.target-plan em{display:flex;align-items:center;padding:10px 12px;color:#9dad98;font-size:10px;font-style:normal;line-height:1.5}.target-plan .holding-up{color:#ef7667}.target-plan .holding-down{color:#7ed487}@media(max-width:900px){.target-plan{grid-template-columns:repeat(3,1fr)!important}.target-plan em{grid-column:1/-1;border-top:1px solid #2a382e}}@media(max-width:560px){.target-plan{grid-template-columns:repeat(2,1fr)!important}.target-plan span:nth-child(5){grid-column:1/-1}.target-plan span{border-bottom:1px solid #2a382e}}
.price-chart,.volume-chart{position:relative}.month-grid{position:absolute;z-index:2;inset:0 76px 0 0;pointer-events:none;overflow:hidden}.month-grid i{position:absolute;top:0;bottom:0;width:1px;background:#334438;opacity:.75}.month-axis{position:absolute;z-index:6;left:0;right:76px;bottom:0;height:30px;pointer-events:none;background:linear-gradient(180deg,transparent,#18211a 38%)}.month-axis>span{position:absolute;bottom:2px;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;color:#82907f;font:10px 'DM Mono';line-height:11px;white-space:nowrap}.month-axis b{font-weight:400}.month-axis small{font:8px 'DM Mono';color:#71806f}
.linked-date-line{display:none;position:absolute;z-index:4;top:0;bottom:30px;width:0;border-left:1px dashed #a8b6a7;pointer-events:none;opacity:.9}
.holding-editor{grid-template-columns:minmax(145px,1.2fr) repeat(4,minmax(120px,.8fr)) auto!important}.holding-risk-note{grid-column:1/-1;margin:0;padding:8px 10px;border-top:1px solid #29372d;color:#9eac99;font-size:11px;line-height:1.5}.holding-main i.risk-exit{background:#4a2723;color:#ff9b8f}.holding-main i.risk-watch{background:#4a3b1e;color:#ffd36b}.holding-main i.risk-protect{background:#25482f;color:#76e69a}.holding-main i.risk-warning{background:#30382f;color:#a9b5a5}@media(max-width:1050px){.holding-editor{grid-template-columns:repeat(2,1fr)!important}.holding-editor strong,.holding-editor button,.holding-editor small{grid-column:1/-1}}@media(max-width:600px){.holding-editor{grid-template-columns:1fr!important}}
#admin-access{position:fixed;right:18px;bottom:18px;z-index:1000;border:1px solid #b9f34a;background:#142019;color:#dfffa1;padding:10px 14px;font:700 13px/1.2 inherit;cursor:pointer;box-shadow:0 8px 24px #0008}
#admin-access:hover{background:#b9f34a;color:#0d160f}
body.public-mode #import-state,body.public-mode #add-list,body.public-mode #new-list-name,body.public-mode #add-current-stock,body.public-mode #save-holding,body.public-mode #settings button[type="submit"],body.public-mode .watchlist-tab:first-child{display:none!important}

/* Mobile data grids keep every column available through horizontal swiping. */
@media(max-width:760px){
  .watchlist-stocks:has(.history-head),.leaderboard-board,.leaderboard-table,.holding-card{
    overflow-x:auto;
    overflow-y:hidden;
    -webkit-overflow-scrolling:touch;
    overscroll-behavior-inline:contain;
    scrollbar-width:thin;
    scrollbar-color:#5d735f #121a14;
  }
  .watchlist-stocks:has(.history-head)::before,.leaderboard-board::before,.leaderboard-table::before,.holding-card::before{
    content:'← 左右滑動查看完整欄位 →';
    display:block;
    width:max-content;
    margin:0 0 8px;
    padding:5px 9px;
    border:1px solid #35483a;
    border-radius:3px;
    color:#a9b9a4;
    background:#111a13;
    font:10px 'Noto Sans TC';
    letter-spacing:.4px;
  }
  .history-head,.history-row{
    min-width:920px;
    grid-template-columns:105px 165px 110px 150px 110px 220px!important;
    gap:12px!important;
  }
  .history-head span:nth-child(4),.history-row span:nth-child(4),
  .history-head span:nth-child(6),.history-row span:nth-child(6){display:flex!important}
  .combined-board .leaderboard-head,.combined-board .leaderboard-row{
    min-width:900px;
    grid-template-columns:50px 190px 70px 95px 80px 95px 220px!important;
  }
  .combined-board .leaderboard-head span:nth-child(3),.combined-board .leaderboard-row span:nth-child(3),
  .combined-board .leaderboard-head span:nth-child(6),.combined-board .leaderboard-row span:nth-child(6),
  .combined-board .leaderboard-head span:nth-child(7),.combined-board .leaderboard-row span:nth-child(7){display:block!important}
  .holding-card{display:block!important}
  .holding-main{
    min-width:900px;
    grid-template-columns:170px repeat(5,110px) 100px!important;
  }
  .holding-main span:nth-of-type(2),.holding-main span:nth-of-type(3),
  .holding-main span:nth-of-type(4),.holding-main span:nth-of-type(5){display:block!important}
}
body.public-mode #holding-editor{display:none!important}
body.public-mode #settings input{cursor:not-allowed;opacity:.65}
