:root{--ink:#10232a;--muted:#627078;--paper:#f4f1ea;--surface:#fff;--line:#d7d8d0;--teal:#0d7f78;--cyan:#52d2c6;--navy:#09272d;--lime:#b8e04c;--amber:#f0b74a;--red:#e4675d;--shadow:0 18px 60px rgba(16,35,42,.11);color-scheme:light}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:Inter,"Noto Sans TC","Microsoft JhengHei",system-ui,sans-serif}a{color:inherit;text-decoration:none}button,input,select{font:inherit}button,select,input{border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink)}button{cursor:pointer}.shell{min-height:100vh}.masthead{position:sticky;z-index:50;top:0;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:24px;padding:15px clamp(20px,4vw,62px);border-bottom:1px solid rgba(215,216,208,.85);background:rgba(244,241,234,.92);backdrop-filter:blur(18px)}.brand{display:flex;align-items:center;gap:12px;width:max-content}.brand strong{display:block;font:800 16px/1 ui-monospace,Consolas,monospace;letter-spacing:.13em}.brand small{display:block;margin-top:5px;color:var(--muted);font:600 9px/1 ui-monospace,monospace;letter-spacing:.1em}.brand-mark{position:relative;display:grid;width:38px;height:38px;place-items:center;border:1px solid var(--teal);border-radius:50%}.brand-mark:before,.brand-mark:after{position:absolute;content:"";background:var(--teal)}.brand-mark:before{width:1px;height:30px}.brand-mark:after{width:30px;height:1px}.brand-mark i{position:absolute;width:5px;height:5px;border-radius:50%;background:var(--teal)}.brand-mark i:first-child{translate:-9px -7px}.brand-mark i:nth-child(2){translate:10px 4px}.brand-mark i:last-child{translate:-4px 10px}.masthead nav{display:flex;gap:26px;font-size:13px;font-weight:700}.masthead nav a:hover{color:var(--teal)}.live-state{justify-self:end;display:flex;align-items:center;gap:8px;font:700 11px/1 ui-monospace,monospace;letter-spacing:.08em;text-transform:uppercase}.live-dot{width:9px;height:9px;border-radius:50%;background:var(--amber);box-shadow:0 0 0 5px rgba(240,183,74,.16)}.live-dot.ready{background:var(--teal);box-shadow:0 0 0 5px rgba(13,127,120,.14)}.live-dot.failed{background:var(--red)}.section-pad{padding:clamp(68px,8vw,118px) clamp(20px,7vw,110px)}.hero{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(360px,.95fr);align-items:center;gap:clamp(42px,7vw,120px);min-height:720px;background:radial-gradient(circle at 75% 20%,rgba(82,210,198,.15),transparent 29%),linear-gradient(115deg,rgba(255,255,255,.3),transparent 55%)}.kicker{margin:0 0 18px;color:var(--teal);font:800 11px/1 ui-monospace,monospace;letter-spacing:.2em}.hero h1{margin:0;font-size:clamp(54px,7.8vw,116px);font-weight:850;line-height:.91;letter-spacing:-.065em}.hero h1 em{color:var(--teal);font-style:normal}.hero-deck{max-width:660px;margin:30px 0 0;color:var(--muted);font-size:17px;line-height:1.8}.hero-actions{display:flex;gap:12px;margin-top:34px}.button{display:inline-flex;align-items:center;justify-content:center;min-height:46px;padding:0 18px;border-radius:8px;font-size:13px;font-weight:800}.button.primary{background:var(--ink);color:#fff}.button.secondary{border:1px solid var(--ink)}.notice{max-width:680px;margin:22px 0 0;padding-left:12px;border-left:3px solid var(--amber);color:var(--muted);font-size:12px;line-height:1.6}.radar-card{overflow:hidden;border-radius:28px;background:var(--navy);box-shadow:0 30px 90px rgba(9,39,45,.28)}.radar-visual{position:relative;aspect-ratio:1;overflow:hidden;background:linear-gradient(rgba(82,210,198,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(82,210,198,.07) 1px,transparent 1px),radial-gradient(circle,rgba(13,127,120,.14),transparent 62%);background-size:34px 34px}.radar-ring,.radar-cross,.radar-sweep,.radar-core{position:absolute;inset:50%;translate:-50% -50%}.radar-ring{border:1px solid rgba(82,210,198,.23);border-radius:50%}.ring-a{width:30%;height:30%}.ring-b{width:58%;height:58%}.ring-c{width:86%;height:86%}.radar-cross.horizontal{width:88%;height:1px;background:rgba(82,210,198,.15)}.radar-cross.vertical{width:1px;height:88%;background:rgba(82,210,198,.15)}.radar-sweep{width:88%;height:88%;border-radius:50%;background:conic-gradient(from 260deg,rgba(82,210,198,.32),transparent 18%);animation:sweep 5s linear infinite}.radar-core{width:11px;height:11px;border-radius:50%;background:var(--cyan);box-shadow:0 0 24px var(--cyan)}@keyframes sweep{to{rotate:360deg}}.radar-dot{position:absolute;width:8px;height:8px;border-radius:50%;background:var(--lime);box-shadow:0 0 16px var(--lime);translate:-50% -50%}.radar-dot.hot{background:var(--red);box-shadow:0 0 18px var(--red)}.radar-caption{display:grid;grid-template-columns:1fr auto;align-items:end;padding:19px 22px;border-top:1px solid rgba(82,210,198,.16);color:#d8efed}.radar-caption span{grid-column:1;font:700 10px/1 ui-monospace,monospace;letter-spacing:.16em}.radar-caption strong{grid-column:1;margin-top:7px;font:800 24px/1 ui-monospace,monospace;color:var(--cyan)}.radar-caption small{grid-column:2;grid-row:1/3;align-self:center;color:#8bb4b3}.metric-strip{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.metric-strip article{min-height:150px;padding:28px clamp(20px,3vw,48px);border-right:1px solid var(--line)}.metric-strip article:last-child{border:0}.metric-strip span,.scenario-output>span{color:var(--muted);font:800 10px/1 ui-monospace,monospace;letter-spacing:.14em;text-transform:uppercase}.metric-strip strong{display:block;margin-top:13px;font-size:42px;line-height:1}.metric-strip small{display:block;margin-top:10px;color:var(--muted)}.dark-section,.scenario-section{background:var(--navy);color:#e8f3f2}.section-heading{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(280px,.75fr);gap:40px;align-items:end;margin-bottom:42px}.section-heading h2{max-width:760px;margin:0;font-size:clamp(36px,5vw,70px);line-height:1;letter-spacing:-.05em}.section-heading>p{margin:0;color:var(--muted);font-size:14px;line-height:1.8}.section-heading.invert>p{color:#9fb8b9}.agent-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:rgba(82,210,198,.17);border:1px solid rgba(82,210,198,.17)}.agent-card{min-height:188px;padding:24px;background:#0b3037}.agent-card-head{display:flex;align-items:center;justify-content:space-between}.agent-card h3{margin:0;font:800 14px/1 ui-monospace,monospace;text-transform:uppercase}.status-pill{padding:5px 8px;border-radius:999px;background:rgba(184,224,76,.13);color:var(--lime);font:800 9px/1 ui-monospace,monospace;letter-spacing:.08em}.status-pill.partial{background:rgba(240,183,74,.15);color:var(--amber)}.status-pill.failed{background:rgba(228,103,93,.15);color:var(--red)}.agent-card p{min-height:44px;margin:22px 0 18px;color:#a9c0c1;font-size:13px;line-height:1.65}.agent-meta{display:flex;justify-content:space-between;gap:12px;color:#6f9999;font:600 10px/1.4 ui-monospace,monospace}.filter-bar{display:grid;grid-template-columns:210px 210px minmax(240px,1fr) auto;align-items:end;gap:12px;margin-bottom:28px}.filter-bar label,.demographic-panel>label,.scenario-controls>label{display:grid;gap:7px}.filter-bar label span,.demographic-panel label span,.scenario-controls label span{color:var(--muted);font-size:11px;font-weight:800}.filter-bar select,.filter-bar input,.demographic-panel select,.scenario-controls select{height:44px;padding:0 12px}.result-count{padding:0 8px 12px;color:var(--muted);font:700 11px/1 ui-monospace,monospace}.candidate-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}.candidate-card{overflow:hidden;border:1px solid var(--line);border-radius:14px;background:var(--surface);box-shadow:0 12px 34px rgba(16,35,42,.06);transition:translate .2s,box-shadow .2s}.candidate-card:hover{translate:0 -4px;box-shadow:var(--shadow)}.portrait-wrap{position:relative;aspect-ratio:4/4.65;overflow:hidden;background:#dae3df}.portrait-wrap img{width:100%;height:100%;object-fit:cover;object-position:center top}.party-badge{position:absolute;left:12px;bottom:12px;padding:6px 9px;border-radius:999px;background:rgba(9,39,45,.92);color:#fff;font:800 10px/1 ui-monospace,monospace}.candidate-body{padding:17px}.candidate-area{color:var(--teal);font:800 10px/1 ui-monospace,monospace;letter-spacing:.1em}.candidate-body h3{margin:8px 0 4px;font-size:26px;letter-spacing:-.03em}.candidate-body p{margin:0;color:var(--muted);font-size:12px}.candidate-footer{display:flex;align-items:center;justify-content:space-between;margin-top:16px;padding-top:13px;border-top:1px solid var(--line)}.nomination{font:700 10px/1 ui-monospace,monospace}.source-link{color:var(--teal);font-size:11px;font-weight:800}.observer-section{background:#e7ece7}.observer-layout{display:grid;grid-template-columns:300px minmax(0,1fr);gap:42px}.observer-layout aside h3{margin:0 0 14px;font-size:13px}.source-list{display:grid;gap:7px}.source-item{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border:1px solid rgba(16,35,42,.12);border-radius:8px;background:rgba(255,255,255,.55);font-size:12px}.source-item span{display:flex;align-items:center;gap:8px}.source-item i{width:7px;height:7px;border-radius:50%;background:var(--teal)}.source-item i.limited{background:var(--amber)}.source-item small{color:var(--muted)}.storage-card{margin-top:20px;padding:15px;border-radius:10px;background:var(--navy);color:#dceceb}.storage-card span{display:block;color:var(--cyan);font:800 9px/1 ui-monospace,monospace;letter-spacing:.12em}.storage-card code{display:block;overflow-wrap:anywhere;margin:12px 0;font-size:11px}.storage-card small{color:#8fb1b2;line-height:1.5}.signal-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;color:var(--muted);font:700 11px/1 ui-monospace,monospace}.text-button{border:0;background:transparent;color:var(--teal);font-size:11px;font-weight:800}.signal-feed{display:grid;gap:8px}.signal-item{display:grid;grid-template-columns:110px minmax(0,1fr) auto;gap:18px;align-items:start;padding:17px 19px;border:1px solid rgba(16,35,42,.13);border-radius:10px;background:rgba(255,255,255,.7)}.signal-source{font:800 10px/1.3 ui-monospace,monospace;color:var(--teal);text-transform:uppercase}.signal-content h3{margin:0 0 6px;font-size:14px}.signal-content p{margin:0;color:var(--muted);font-size:12px;line-height:1.55}.signal-tags{display:flex;flex-wrap:wrap;gap:5px;margin-top:9px}.signal-tags span{padding:4px 6px;border-radius:4px;background:#dce8e3;color:#345b59;font-size:9px;font-weight:800}.signal-score{text-align:right}.signal-score strong{display:block;font:800 16px/1 ui-monospace,monospace}.signal-score small{color:var(--muted);font-size:9px}.demographic-panel{display:grid;grid-template-columns:220px 1fr;gap:24px;padding:28px;border:1px solid var(--line);border-radius:16px;background:#fff}.demographic-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.demographic-metrics article{padding:14px;border-radius:9px;background:#f2f4ef}.demographic-metrics span{color:var(--muted);font-size:10px}.demographic-metrics strong{display:block;margin-top:8px;font-size:22px}.age-chart{grid-column:1/-1;display:grid;gap:8px;margin-top:8px}.age-row{display:grid;grid-template-columns:80px 1fr 80px;align-items:center;gap:12px;font-size:11px}.age-track{height:9px;border-radius:999px;background:#e1e6e2}.age-track i{display:block;height:100%;border-radius:inherit;background:var(--teal)}.scenario-layout{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(280px,.7fr);gap:42px}.scenario-controls select{width:100%;background:#123840;border-color:#28545a;color:#fff}.scenario-inputs{display:grid;gap:9px;margin-top:18px}.scenario-row{display:grid;grid-template-columns:1fr 130px 38px;align-items:center;gap:12px;padding:13px 15px;border:1px solid rgba(82,210,198,.15);border-radius:9px;background:#0b3037}.scenario-person{display:flex;align-items:center;gap:10px}.scenario-person img{width:38px;height:38px;border-radius:50%;object-fit:cover;object-position:top}.scenario-person strong{display:block;font-size:13px}.scenario-person small{color:#88a9aa}.scenario-row input[type=range]{width:100%;accent-color:var(--cyan)}.scenario-row output{font:800 12px/1 ui-monospace,monospace;color:var(--cyan)}.scenario-output{padding:28px;border-radius:16px;background:#e8f1ed;color:var(--ink)}.scenario-output strong{display:block;margin:17px 0 14px;font:850 64px/1 ui-monospace,monospace}.total-track{height:10px;overflow:hidden;border-radius:99px;background:#cbd8d3}.total-track i{display:block;width:0;height:100%;background:var(--teal);transition:width .2s}.total-track i.over{background:var(--red)}.scenario-output p{min-height:50px;margin:16px 0;color:var(--muted);font-size:12px;line-height:1.6}.scenario-actions{display:flex;gap:8px}.scenario-actions button{height:40px;padding:0 12px}.endpoint-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.endpoint-card{padding:17px;border:1px solid var(--line);border-radius:10px;background:#fff}.endpoint-card code{display:block;color:var(--teal);font-size:12px;overflow-wrap:anywhere}.endpoint-card span{display:block;margin-top:8px;color:var(--muted);font-size:11px}.skeleton{min-height:90px;border-radius:12px;background:linear-gradient(90deg,#dce1dc,#eef0ec,#dce1dc);background-size:200% 100%;animation:shimmer 1.3s infinite}.skeleton.card{min-height:390px}.skeleton.wide{grid-column:1/-1}@keyframes shimmer{to{background-position:-200% 0}}.empty-state{padding:28px;border:1px dashed var(--line);border-radius:10px;color:var(--muted);text-align:center}.toast{position:fixed;right:22px;bottom:22px;z-index:100;translate:0 30px;opacity:0;padding:12px 16px;border-radius:8px;background:var(--ink);color:#fff;font-size:12px;transition:.2s}.toast.show{translate:0;opacity:1}footer{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:20px;padding:28px clamp(20px,4vw,62px);border-top:1px solid var(--line);font:700 10px/1.4 ui-monospace,monospace;color:var(--muted)}footer strong{color:var(--ink)}footer span:last-child{text-align:right}
@media(max-width:1100px){.masthead nav{display:none}.masthead{grid-template-columns:1fr auto}.hero{grid-template-columns:1fr;min-height:auto}.radar-card{max-width:640px;width:100%;justify-self:center}.candidate-grid{grid-template-columns:repeat(3,1fr)}.agent-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:800px){.section-pad{padding:64px 20px}.section-heading{grid-template-columns:1fr}.metric-strip{grid-template-columns:repeat(2,1fr)}.metric-strip article:nth-child(2){border-right:0}.candidate-grid{grid-template-columns:repeat(2,1fr)}.filter-bar{grid-template-columns:1fr 1fr}.search-field{grid-column:1/-1}.observer-layout,.scenario-layout{grid-template-columns:1fr}.demographic-panel{grid-template-columns:1fr}.demographic-metrics{grid-template-columns:repeat(2,1fr)}.signal-item{grid-template-columns:1fr}.signal-score{text-align:left}.endpoint-grid{grid-template-columns:repeat(2,1fr)}footer{grid-template-columns:1fr}footer span:last-child{text-align:left}}
@media(max-width:520px){.live-state{display:none}.masthead{grid-template-columns:1fr}.hero h1{font-size:50px}.metric-strip,.candidate-grid,.agent-grid,.endpoint-grid{grid-template-columns:1fr}.metric-strip article{border-right:0;border-bottom:1px solid var(--line)}.filter-bar{grid-template-columns:1fr}.search-field{grid-column:auto}.scenario-row{grid-template-columns:1fr}.scenario-output strong{font-size:52px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto}.radar-sweep,.skeleton{animation:none}}

.party-flag{--party:#78828a;display:inline-flex;align-items:center;overflow:hidden;min-height:22px;border:1px solid color-mix(in srgb,var(--party),#fff 45%);border-radius:4px;background:#fff;color:var(--ink);vertical-align:middle;box-shadow:0 1px 0 rgba(16,35,42,.05)}
.party-flag i{display:inline-flex;align-items:center;align-self:stretch;padding:0 6px;background:var(--party);color:#fff;font:900 9px/22px ui-monospace,monospace;letter-spacing:.05em;font-style:normal}
.party-flag b{padding:0 8px;font-size:10px;font-weight:900;white-space:nowrap}
.party-flag.compact{min-height:18px;border-radius:3px}.party-flag.compact i{padding:0 5px;font-size:8px;line-height:18px}.party-flag.compact b{padding:0 6px;font-size:9px}
.party-KMT{--party:#1f5fbf}.party-DPP{--party:#16854f}.party-TPP{--party:#20a7b8}.party-IND{--party:#6e7781}.party-OTHER{--party:#8a6f3d}
.party-card-KMT{border-top:5px solid #1f5fbf}.party-card-DPP{border-top:5px solid #16854f}.party-card-TPP{border-top:5px solid #20a7b8}.party-card-IND{border-top:5px solid #6e7781}.party-card-OTHER{border-top:5px solid #8a6f3d}
.party-badge{left:12px;right:auto;bottom:12px;padding:0;border-radius:0;background:transparent;color:inherit;font:inherit}.party-badge .party-flag{box-shadow:0 8px 20px rgba(0,0,0,.24)}
.candidate-party-row{display:flex;align-items:center;gap:8px;margin-top:12px}.candidate-party-row>span:last-child{color:var(--muted);font-size:10px;font-weight:800}
.race-person small,.scenario-person small,.probability-person span{display:flex;justify-content:center}.race-person .party-flag.compact b{display:none}.scenario-person .party-flag,.probability-person .party-flag{margin-top:3px}
.party-bar-KMT{background:#1f5fbf!important}.party-bar-DPP{background:#16854f!important}.party-bar-TPP{background:#20a7b8!important}.party-bar-IND{background:#6e7781!important}.party-bar-OTHER{background:#8a6f3d!important}
.baseline-row{grid-template-columns:90px 1fr 48px}.baseline-row>span{display:flex}.baseline-row .party-flag.compact b{font-size:8px}
.regional-watch{display:grid;gap:10px}.regional-watch article{padding:12px;border:1px solid rgba(16,35,42,.1);border-radius:10px;background:#fbfcf9}.regional-watch span{display:block;color:var(--teal);font:850 9px/1.35 ui-monospace,monospace;letter-spacing:.05em;text-transform:uppercase}.regional-watch h4{margin:7px 0 5px;font-size:12px;line-height:1.45}.regional-watch p{display:-webkit-box;overflow:hidden;margin:0;color:var(--muted);font-size:10px;line-height:1.45;-webkit-box-orient:vertical;-webkit-line-clamp:2}.regional-watch div{display:flex;flex-wrap:wrap;gap:5px;margin-top:9px}.regional-watch i{display:inline-flex;padding:4px 7px;border-radius:999px;background:#edf2ee;color:#3b5f5c;font-size:10px;font-style:normal;font-weight:800}
.area-signal-board{margin-bottom:28px}.issue-cloud-panel{display:grid;grid-template-columns:260px 1fr;gap:24px;margin-bottom:22px;padding:24px;border:1px solid rgba(16,35,42,.12);border-radius:16px;background:#101b1d;color:#e8f3f2}.issue-cloud-panel span{display:block;color:var(--cyan);font:900 10px/1 ui-monospace,monospace;letter-spacing:.16em}.issue-cloud-panel p{margin:10px 0 0;color:#9fb8b9;font-size:12px;line-height:1.6}.issue-cloud-terms{display:flex;align-items:center;align-content:center;flex-wrap:wrap;gap:10px 14px}.issue-cloud-terms b{color:color-mix(in srgb,var(--cyan),#fff calc(var(--weight)*32%));font-weight:900;line-height:1}.cloud-size-1{font-size:15px;opacity:.75}.cloud-size-2{font-size:20px}.cloud-size-3{font-size:27px}.cloud-size-4{font-size:36px}.cloud-size-5{font-size:48px;letter-spacing:-.04em}
.area-signal-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.area-signal-card{padding:18px;border:1px solid rgba(16,35,42,.12);border-radius:14px;background:#fff;box-shadow:0 10px 28px rgba(16,35,42,.05)}.area-signal-card header{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:14px}.area-signal-card header span{display:block;color:var(--teal);font:900 9px/1 ui-monospace,monospace;letter-spacing:.12em}.area-signal-card h3{margin:7px 0 0;font-size:26px}.area-signal-card header strong{padding:7px 9px;border-radius:999px;background:#edf2ee;color:#3b5f5c;font:900 10px/1 ui-monospace,monospace;white-space:nowrap}.event-critical header strong{background:#ffe6e2;color:#98392f}.event-high header strong{background:#fff0c9;color:#805f1b}.event-warm header strong{background:#e0f2ed;color:#146a5e}
.area-candidate-strip{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:13px}.area-candidate{display:flex;align-items:center;gap:7px;padding:6px 8px;border:1px solid var(--line);border-radius:999px;background:#f8faf7}.area-candidate img{width:26px;height:26px;border-radius:50%;object-fit:cover;object-position:center top}.area-candidate b{font-size:11px}.area-candidate .party-flag.compact b{display:none}
.area-signal-metrics{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.area-signal-metrics span{padding:5px 8px;border-radius:999px;background:#edf2ee;color:#536465;font-size:10px;font-weight:850}.area-signal-card ul{display:grid;gap:8px;margin:0;padding:0;list-style:none}.area-signal-card li{display:grid;grid-template-columns:34px 1fr;gap:8px;color:var(--ink);font-size:12px;line-height:1.5}.area-signal-card li span{font:900 11px/1.5 ui-monospace,monospace;color:var(--teal)}.area-signal-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:13px}.area-signal-tags i{padding:5px 7px;border-radius:6px;background:#e8f1ed;color:#315c58;font-size:10px;font-style:normal;font-weight:900}
@media(max-width:900px){.issue-cloud-panel{grid-template-columns:1fr}.area-signal-grid{grid-template-columns:1fr}}
.poll-section{background:#f0eee6}.poll-quality{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;margin-bottom:32px;background:var(--line);border:1px solid var(--line)}.poll-quality article{padding:19px;background:#fff}.poll-quality span{display:block;color:var(--muted);font:800 10px/1 ui-monospace,monospace;letter-spacing:.08em}.poll-quality strong{display:block;margin-top:10px;font-size:27px}.poll-columns{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(300px,.55fr);gap:34px}.poll-list-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.poll-list-head h3{margin:0;font-size:16px}.poll-list-head span{color:var(--teal);font:800 10px/1 ui-monospace,monospace}.poll-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.poll-card{padding:18px;border:1px solid var(--line);border-radius:12px;background:#fff}.poll-card-head,.poll-card-foot{display:flex;align-items:center;justify-content:space-between;gap:12px}.poll-card-head span{color:var(--teal);font:800 10px/1 ui-monospace,monospace}.poll-card-head time{color:var(--muted);font-size:10px}.poll-card h3{min-height:42px;margin:13px 0 6px;font-size:16px;line-height:1.35}.poll-card>p{margin:0;color:var(--muted);font-size:10px}.poll-results{display:grid;gap:8px;margin-top:18px}.poll-result{display:grid;grid-template-columns:74px 1fr 46px;align-items:center;gap:8px;font-size:10px}.poll-result>div{height:7px;overflow:hidden;border-radius:99px;background:#e2e7e2}.poll-result i{display:block;height:100%;border-radius:inherit;background:var(--teal)}.poll-result strong{text-align:right;font:800 10px/1 ui-monospace,monospace}.poll-card-foot{margin-top:17px;padding-top:12px;border-top:1px solid var(--line);font:800 9px/1 ui-monospace,monospace}.poll-card-foot a{color:var(--teal)}.poll-source-states{display:grid;gap:6px;margin-bottom:12px}.poll-source-state{display:flex;align-items:center;justify-content:space-between;padding:11px;border:1px solid var(--line);border-radius:8px;background:#fff;font-size:11px}.poll-source-state span{display:flex;align-items:center;gap:7px}.poll-source-state i{width:7px;height:7px;border-radius:50%;background:var(--teal)}.poll-source-state i.limited{background:var(--amber)}.poll-source-state small{color:var(--muted)}.poll-review-queue{display:grid;gap:6px;max-height:650px;overflow:auto}.poll-review-item{padding:12px;border:1px solid var(--line);border-radius:8px;background:rgba(255,255,255,.7)}.poll-review-item>span{color:var(--teal);font:800 9px/1 ui-monospace,monospace}.poll-review-item h4{margin:7px 0 6px;font-size:12px;line-height:1.45}.poll-review-item p{margin:0;color:var(--muted);font-size:9px;line-height:1.5}
@media(max-width:800px){.poll-columns{grid-template-columns:1fr}.poll-list{grid-template-columns:1fr}.poll-quality{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.poll-quality{grid-template-columns:1fr}}
.historical-scenario-tag{display:inline-flex;margin-top:10px;padding:6px 9px;border:1px solid rgba(166,126,51,.34);border-radius:999px;background:#fff8e5;color:#8c6318;font:900 10px/1 ui-monospace,monospace;letter-spacing:.04em}
.poll-patrol{margin-bottom:12px}.poll-patrol article{padding:18px;border:1px solid var(--line);border-radius:14px;background:#101b1d;color:#eef8f6}.poll-patrol span{display:block;color:var(--cyan);font:900 10px/1 ui-monospace,monospace;letter-spacing:.14em}.poll-patrol strong{display:block;margin-top:8px;font-size:26px}.poll-patrol p{margin:8px 0 0;color:#a7c4c2;font-size:12px;line-height:1.65}

/* v2: clickable command cards and segmented issue radar cloud. */
.war-room-brief-card{display:block;border-radius:13px}
.war-room-brief-card article{position:relative;min-height:138px;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease,background .18s ease}
.war-room-brief-card:hover article{transform:translateY(-2px);border-color:rgba(82,210,198,.45);background:#fff;box-shadow:0 16px 38px rgba(16,35,42,.11)}
.war-room-brief-card em{position:absolute;right:16px;bottom:14px;color:var(--teal);font-size:11px;font-style:normal;font-weight:900;opacity:.72}
.war-room-brief-card:focus-visible{outline:3px solid rgba(82,210,198,.72);outline-offset:3px}
.issue-cloud-v2{grid-template-columns:minmax(0,1fr) 280px;gap:18px;padding:18px;background:#081b1f}
.issue-cloud-stage{position:relative;min-height:360px;overflow:hidden;border:1px solid rgba(82,210,198,.16);border-radius:22px;background:radial-gradient(circle at 50% 48%,rgba(82,210,198,.13),transparent 26%),radial-gradient(circle at 25% 30%,rgba(240,183,74,.1),transparent 22%),linear-gradient(rgba(82,210,198,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(82,210,198,.045) 1px,transparent 1px);background-size:auto,auto,36px 36px,36px 36px}
.cloud-axis{position:absolute;inset:50%;background:rgba(82,210,198,.13);pointer-events:none}.cloud-axis.horizontal{width:88%;height:1px;transform:translate(-50%,-50%)}.cloud-axis.vertical{width:1px;height:84%;transform:translate(-50%,-50%)}
.cloud-node{position:absolute;left:calc(var(--x)*1%);top:calc(var(--y)*1%);transform:translate(-50%,-50%);padding:.12em .28em;border-radius:999px;color:color-mix(in srgb,var(--cyan),#fff calc(var(--w)*34%));font-weight:950;line-height:1;letter-spacing:-.04em;text-shadow:0 0 calc(12px + var(--w)*18px) rgba(82,210,198,.35);white-space:nowrap}
.cloud-node:after{content:"";position:absolute;inset:-7px;border-radius:999px;background:rgba(82,210,198,calc(.04 + var(--w)*.12));z-index:-1}
.issue-cloud-v2 .cloud-size-1{font-size:16px;opacity:.76}.issue-cloud-v2 .cloud-size-2{font-size:22px}.issue-cloud-v2 .cloud-size-3{font-size:31px}.issue-cloud-v2 .cloud-size-4{font-size:43px}.issue-cloud-v2 .cloud-size-5{font-size:60px}
.cloud-rankings{display:grid;gap:12px;align-content:start}
.cloud-rankings>div{padding:14px;border:1px solid rgba(82,210,198,.14);border-radius:14px;background:rgba(255,255,255,.045)}
.cloud-rankings span{display:block;color:var(--cyan);font:900 9px/1 ui-monospace,monospace;letter-spacing:.15em}
.cloud-rankings h4{margin:8px 0 10px;color:#f3fbfa;font-size:16px}
.cloud-rankings ol{display:grid;gap:7px;margin:0;padding:0;list-style:none}
.cloud-rankings li{display:flex;align-items:center;justify-content:space-between;gap:10px;color:#dceceb;font-size:12px}
.cloud-rankings li span{color:#8fb1b2;font:850 10px/1 ui-monospace,monospace;letter-spacing:0}
.cloud-rankings p{margin:0;padding:0 3px;color:#88a9aa;font-size:11px;line-height:1.65}
@media(max-width:900px){.issue-cloud-v2{grid-template-columns:1fr}.issue-cloud-stage{min-height:300px}.issue-cloud-v2 .cloud-size-5{font-size:46px}}

/* National race map. */
.map-section{background:#edf1ec}
.map-layout{display:grid;grid-template-columns:minmax(520px,1fr) minmax(360px,.72fr);gap:18px;align-items:start}
.taiwan-map-card,.map-brief-panel{border:1px solid var(--line);border-radius:18px;background:#fff;box-shadow:0 14px 42px rgba(16,35,42,.07)}
.taiwan-map-card{overflow:hidden}
.map-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 18px;border-bottom:1px solid var(--line)}
.map-toolbar span,.map-list-head span,.map-brief-card header span{display:block;color:var(--teal);font:900 10px/1 ui-monospace,monospace;letter-spacing:.14em;text-transform:uppercase}
.map-toolbar strong{display:block;margin-top:7px;font-size:18px}.map-toolbar small{color:var(--muted);font-size:11px}
.taiwan-race-map{position:relative;min-height:720px;overflow:hidden;background:radial-gradient(circle at 67% 45%,rgba(82,210,198,.14),transparent 28%),linear-gradient(rgba(13,127,120,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(13,127,120,.05) 1px,transparent 1px),#091f24;background-size:auto,34px 34px,34px 34px;color:#e9f6f4}
.map-island{position:absolute;left:33%;top:7%;width:39%;height:86%;border-radius:47% 53% 48% 52%/28% 34% 66% 72%;background:linear-gradient(160deg,rgba(82,210,198,.28),rgba(82,210,198,.08) 46%,rgba(184,224,76,.06));filter:blur(.2px);transform:rotate(16deg);box-shadow:inset 0 0 70px rgba(82,210,198,.18),0 0 80px rgba(82,210,198,.07)}
.map-grid-lines{position:absolute;inset:0;background:radial-gradient(circle at 50% 50%,transparent 0 28%,rgba(82,210,198,.08) 28.2% 28.4%,transparent 28.6%),radial-gradient(circle at 50% 50%,transparent 0 46%,rgba(82,210,198,.06) 46.2% 46.4%,transparent 46.6%);pointer-events:none}
.map-legend{position:absolute;left:16px;bottom:14px;display:flex;flex-wrap:wrap;gap:8px;z-index:3}.map-legend span{display:inline-flex;align-items:center;gap:5px;padding:6px 8px;border-radius:999px;background:rgba(255,255,255,.08);color:#c5dcdb;font-size:10px;font-weight:850}.map-legend i{width:8px;height:8px;border-radius:50%;background:#8aa}.legend-critical{background:var(--red)!important}.legend-watch{background:var(--amber)!important}.legend-stable{background:var(--cyan)!important}.legend-gap{background:#8a94a1!important}
.map-marker{--party:#7a858b;position:absolute;left:var(--x);top:var(--y);z-index:4;display:flex;align-items:center;gap:7px;max-width:168px;padding:6px 9px 6px 6px;border:1px solid color-mix(in srgb,var(--party),#fff 28%);border-radius:999px;background:rgba(7,20,24,.86);color:#e7f8f6;box-shadow:0 12px 30px rgba(0,0,0,.25),0 0 0 4px color-mix(in srgb,var(--party),transparent 75%);transform:translate(-50%,-50%);transition:transform .16s ease,box-shadow .16s ease,background .16s ease}
.map-marker:hover,.map-marker.is-selected{z-index:8;transform:translate(-50%,-50%) scale(1.08);background:#fff;color:var(--ink);box-shadow:0 18px 42px rgba(0,0,0,.35),0 0 0 5px color-mix(in srgb,var(--party),transparent 64%)}
.marker-photo{width:34px;height:34px;overflow:hidden;border-radius:50%;background:var(--party);flex:0 0 auto}.marker-photo img{width:100%;height:100%;object-fit:cover;object-position:center top}
.marker-copy{display:grid;gap:2px;text-align:left}.marker-copy b{font-size:12px;line-height:1}.marker-copy small{font:850 9px/1.2 ui-monospace,monospace;color:inherit;opacity:.78;white-space:nowrap}
.party-marker-KMT{--party:#1f5fbf}.party-marker-DPP{--party:#16854f}.party-marker-TPP{--party:#20a7b8}.party-marker-IND{--party:#6e7781}.party-marker-OTHER{--party:#8a6f3d}.level-critical{--level:var(--red)}.level-watch{--level:var(--amber)}.level-stable{--level:var(--cyan)}.level-gap{--level:#8a94a1}.map-marker:after{content:"";position:absolute;right:5px;top:5px;width:8px;height:8px;border-radius:50%;background:var(--level);box-shadow:0 0 12px var(--level)}
.map-brief-panel{padding:0;overflow:hidden}.map-brief-card{padding:22px}.map-brief-card header{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:18px}.map-brief-card header strong{font:900 40px/1 ui-monospace,monospace;color:var(--teal)}
.map-leader{display:flex;gap:14px;align-items:center;margin-bottom:16px}.map-leader img{width:82px;height:82px;border-radius:50%;object-fit:cover;object-position:center top;background:#dce4e0}.map-leader h3{margin:0 0 7px;font-size:30px;letter-spacing:-.04em}.map-leader small{display:block;margin-top:8px;color:var(--muted);font-size:11px}
.map-brief-card p{margin:0 0 18px;color:#425257;font-size:14px;line-height:1.75}.map-brief-columns{display:grid;grid-template-columns:1fr 1fr;gap:12px}.map-brief-card section{padding:14px;border:1px solid var(--line);border-radius:12px;background:#f8faf7}.map-brief-card h4{margin:0 0 10px;color:var(--teal);font:900 10px/1 ui-monospace,monospace;letter-spacing:.12em;text-transform:uppercase}.map-brief-card ul{display:grid;gap:8px;margin:0;padding-left:18px;color:var(--muted);font-size:12px;line-height:1.55}.map-signal-mini{margin-top:12px}.map-signal-mini li{display:grid;grid-template-columns:34px 1fr;gap:8px}.map-signal-mini li span{color:var(--teal);font:900 11px/1.5 ui-monospace,monospace}.map-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}.map-actions a{padding:9px 11px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--teal);font-size:12px;font-weight:900}
.map-list-head{display:flex;align-items:center;justify-content:space-between;margin:24px 0 10px}.map-list-head strong{font-size:13px;color:var(--muted)}.map-race-list{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.map-race-item{display:grid;gap:7px;padding:14px;border-left:5px solid var(--level);border-radius:12px;background:#fff;text-align:left;box-shadow:0 8px 22px rgba(16,35,42,.05)}.map-race-item.is-selected{outline:3px solid rgba(82,210,198,.32)}.map-race-item span{color:var(--teal);font:900 9px/1 ui-monospace,monospace;letter-spacing:.1em}.map-race-item strong{font-size:20px}.map-race-item b{font-size:12px}.map-race-item small{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:10px}
@media(max-width:1100px){.map-layout{grid-template-columns:1fr}.taiwan-race-map{min-height:620px}.map-race-list{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.taiwan-race-map{min-height:560px}.map-marker{max-width:46px;padding:5px}.marker-copy{display:none}.map-brief-columns,.map-race-list{grid-template-columns:1fr}.map-leader img{width:66px;height:66px}}

/* National campaign situation-room view. */
.hero{min-height:620px}
.war-room-section{background:linear-gradient(180deg,#f7f4ed 0%,#eef2ed 100%);padding-top:72px}
.war-room-brief{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:18px}
.war-room-brief article{padding:19px;border:1px solid var(--line);border-radius:13px;background:rgba(255,255,255,.78);box-shadow:0 10px 30px rgba(16,35,42,.04)}
.war-room-brief span,.panel-head span,.brief-panel .panel-head>span{display:block;color:var(--teal);font:850 10px/1 ui-monospace,monospace;letter-spacing:.12em;text-transform:uppercase}
.war-room-brief strong{display:block;margin-top:10px;font-size:34px;line-height:1}
.war-room-brief small{display:block;margin-top:10px;color:var(--muted);font-size:11px;line-height:1.5}
.war-room-layout{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(330px,.65fr);gap:18px;align-items:start}
.board-panel,.brief-panel{border:1px solid var(--line);border-radius:17px;background:rgba(255,255,255,.82);box-shadow:0 15px 40px rgba(16,35,42,.06)}
.board-panel{overflow:hidden}
.panel-head{display:flex;align-items:end;justify-content:space-between;gap:18px;padding:18px 20px;border-bottom:1px solid var(--line)}
.panel-head h3{margin:7px 0 0;font-size:20px;letter-spacing:-.02em}
.panel-head small{color:var(--muted);font:750 10px/1.4 ui-monospace,monospace;text-align:right}
.panel-head.compact{display:block;padding:17px 18px 10px;border-bottom:0}
.panel-head.compact h3{font-size:16px}
.race-board{display:grid}
.race-row{display:grid;grid-template-columns:116px minmax(0,1fr) minmax(190px,.42fr) 62px;gap:14px;align-items:center;padding:16px 18px;border-bottom:1px solid var(--line)}
.race-row:last-child{border-bottom:0}
.race-status span{display:inline-flex;padding:6px 8px;border-radius:999px;background:#eef0ed;color:var(--muted);font:850 10px/1 ui-monospace,monospace}
.race-status strong{display:block;margin-top:10px;font-size:22px;line-height:1}
.race-status small{display:block;margin-top:5px;color:var(--muted);font-size:10px}
.race-main h4{margin:0;font-size:17px;line-height:1.35}
.race-main p{margin:7px 0 0;color:var(--muted);font-size:12px;line-height:1.55}
.race-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.race-chips i,.regional-watch i{display:inline-flex;padding:4px 7px;border-radius:999px;background:#edf2ee;color:#3b5f5c;font-size:10px;font-style:normal;font-weight:800}
.race-lineup{display:flex;justify-content:flex-end;gap:8px;min-width:0}
.race-person{display:grid;justify-items:center;width:54px;gap:4px;text-align:center}
.race-person img{width:38px;height:38px;border-radius:50%;object-fit:cover;object-position:center top;background:#dae3df}
.race-person b{max-width:60px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px}
.race-person small{color:var(--muted);font-size:9px}
.race-action{justify-self:end;display:inline-flex;align-items:center;justify-content:center;width:54px;height:38px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--teal);font-size:12px;font-weight:850}
.race-action:hover{border-color:var(--teal);background:#eff7f5}
.risk-danger .race-status span{background:#ffe3df;color:#a43d32}.risk-danger{box-shadow:inset 4px 0 0 var(--red)}
.risk-warning .race-status span{background:#fff2cf;color:#805f1b}.risk-warning{box-shadow:inset 4px 0 0 var(--amber)}
.risk-gap .race-status span,.risk-info .race-status span{background:#dcf3f0;color:#0d6f69}.risk-gap,.risk-info{box-shadow:inset 4px 0 0 var(--cyan)}
.risk-stable .race-status span{background:#eaf4d5;color:#526d14}.risk-stable{box-shadow:inset 4px 0 0 var(--lime)}
.side-stack{display:grid;gap:14px}
.priority-brief,.regional-watch,.credibility-panel{padding:0 18px 18px}
.priority-brief ol{margin:0;padding-left:20px}
.priority-brief li{margin:0 0 13px;color:var(--muted);font-size:12px;line-height:1.55}
.priority-brief li strong{display:block;color:var(--ink);font-size:13px}
.priority-brief li span{display:block;margin-top:2px}
.regional-watch{display:grid;gap:10px}
.regional-watch article{padding:12px;border:1px solid rgba(16,35,42,.1);border-radius:10px;background:#fbfcf9}
.regional-watch span{display:block;color:var(--teal);font:850 9px/1.35 ui-monospace,monospace;letter-spacing:.05em;text-transform:uppercase}
.regional-watch h4{margin:7px 0 5px;font-size:12px;line-height:1.45}
.regional-watch p{display:-webkit-box;overflow:hidden;margin:0;color:var(--muted);font-size:10px;line-height:1.45;-webkit-box-orient:vertical;-webkit-line-clamp:2}
.regional-watch div{display:flex;flex-wrap:wrap;gap:5px;margin-top:9px}
.credibility-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:7px}
.credibility-grid article{padding:11px;border-radius:9px;background:#f0f3ef}
.credibility-grid article.warn{background:#fff4d8}.credibility-grid article.ok{background:#eaf5ef}
.credibility-grid span{display:block;color:var(--muted);font-size:10px}
.credibility-grid strong{display:block;margin-top:7px;font-size:15px}
.credibility-panel p{margin:13px 0 0;color:var(--muted);font-size:11px;line-height:1.55}
@media(max-width:1100px){.war-room-layout{grid-template-columns:1fr}.war-room-brief{grid-template-columns:repeat(2,1fr)}.race-row{grid-template-columns:108px minmax(0,1fr) 58px}.race-lineup{grid-column:1/-1;justify-content:flex-start}.race-action{grid-column:3;grid-row:1/3}}
@media(max-width:700px){.war-room-brief{grid-template-columns:1fr}.race-row{grid-template-columns:1fr}.race-action{grid-column:auto;grid-row:auto;justify-self:start}.race-lineup{grid-column:auto}.credibility-grid{grid-template-columns:1fr}}

/* Committee-facing application shell and responsive safeguards. */
.shell{overflow-x:clip}
.app-view[hidden]{display:none!important}
.app-view.is-active{animation:view-in .18s ease-out}
@keyframes view-in{from{opacity:.45;transform:translateY(6px)}to{opacity:1;transform:none}}
.masthead nav a{position:relative;white-space:nowrap}
.masthead nav a[aria-current=page]{color:var(--teal)}
.masthead nav a[aria-current=page]:after{position:absolute;right:0;bottom:-12px;left:0;height:2px;background:var(--teal);content:""}
.hero-copy{min-width:0}
.hero h1{max-width:12ch;overflow-wrap:anywhere;font-size:clamp(50px,6.8vw,98px);line-height:.94;letter-spacing:-.06em;text-wrap:balance}
.hero-deck{overflow-wrap:anywhere}
.hero-actions{flex-wrap:wrap}
.app-view:not([data-view="overview"]){min-height:calc(100vh - 69px)}

@media(max-width:1100px){
  .masthead{grid-template-columns:minmax(0,1fr) auto;gap:12px}
  .masthead nav{grid-column:1/-1;display:flex;gap:22px;overflow-x:auto;padding:4px 0 1px;scrollbar-width:none}
  .masthead nav::-webkit-scrollbar{display:none}
  .masthead nav a[aria-current=page]:after{bottom:-6px}
  .hero h1{max-width:10ch}
}
@media(max-width:520px){
  .brand small{display:none}
  .hero h1{max-width:9ch;font-size:clamp(38px,10vw,46px);line-height:1}
  .masthead nav{gap:18px}
}
@media(prefers-reduced-motion:reduce){.app-view.is-active{animation:none}}

.probability-section{background:linear-gradient(180deg,#edf1ec,#f7f4ed)}
.model-gate{margin:-12px 0 24px;padding:14px 16px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--muted);font-size:12px;font-weight:750}
.model-gate.caution{border-color:rgba(240,183,74,.55);background:#fff8e9;color:#72521e}.model-gate.blocked{border-color:rgba(228,103,93,.55);background:#fff0ed;color:#8b342d}
.probability-toolbar{display:grid;grid-template-columns:240px 1fr;align-items:end;gap:18px;margin-bottom:22px}.probability-toolbar label{display:grid;gap:7px}.probability-toolbar label span{color:var(--muted);font-size:11px;font-weight:800}.probability-toolbar select{height:46px;padding:0 12px;background:#fff}
.probability-meta{display:flex;justify-content:flex-end;gap:18px;padding-bottom:11px;color:var(--muted);font-size:11px}.probability-meta strong{color:var(--ink);font:850 16px/1 ui-monospace,monospace}
.probability-scenarios{display:grid;gap:14px}.probability-card{padding:22px;border:1px solid var(--line);border-radius:15px;background:#fff;box-shadow:0 12px 34px rgba(16,35,42,.05)}
.probability-card>header{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.probability-card>header span{color:var(--teal);font:800 10px/1 ui-monospace,monospace;letter-spacing:.08em}.probability-card>header h3{margin:8px 0 0;font-size:21px}.grade{padding:7px 9px;border-radius:999px;background:#eef0ed;color:var(--muted);font:800 10px/1 ui-monospace,monospace;white-space:nowrap}.grade-C{background:#fff0c9;color:#805f1b}.grade-D{background:#f4ded8;color:#8a4036}
.probability-context{display:flex;flex-wrap:wrap;gap:8px 18px;margin:18px 0;padding:11px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);color:var(--muted);font-size:10px}
.probability-candidates{display:grid;gap:13px}.probability-candidate{display:grid;grid-template-columns:48px minmax(140px,.6fr) minmax(150px,1fr) minmax(240px,.8fr);align-items:center;gap:13px}.probability-candidate>img{width:48px;height:48px;border-radius:50%;object-fit:cover;object-position:center top;background:#dce5e0}.probability-person strong{display:block;font-size:14px}.probability-person span{display:block;margin-top:3px;color:var(--muted);font-size:10px}.probability-bar{height:11px;overflow:hidden;border-radius:99px;background:#e2e7e2}.probability-bar i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--teal),var(--cyan))}.probability-number{text-align:right}.probability-number>strong{display:block;font:850 25px/1 ui-monospace,monospace}.probability-number>span{display:block;margin-top:5px;color:var(--muted);font-size:9px}
.calibration-panel{display:grid;gap:6px;margin-top:16px;padding:12px 14px;border:1px dashed rgba(22,35,33,.22);border-radius:13px;background:#f6f4ec;color:var(--muted);font-size:10px}.calibration-panel.active{border-style:solid;background:#eef8f4;color:#25423d}.calibration-panel strong{color:var(--ink);font-size:12px}.calibration-panel div{display:flex;flex-wrap:wrap;gap:7px}.calibration-panel div span{padding:5px 8px;border-radius:999px;background:rgba(255,255,255,.72);font:800 10px/1 ui-monospace,monospace;color:var(--ink)}
.probability-foot{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:18px;padding-top:13px;border-top:1px solid var(--line);color:var(--muted);font-size:10px}.probability-foot a{color:var(--teal);font-weight:800}
.model-evidence{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:16px}.model-evidence article{padding:18px;border:1px solid var(--line);border-radius:11px;background:rgba(255,255,255,.72)}.model-evidence span{color:var(--teal);font:800 9px/1 ui-monospace,monospace;letter-spacing:.1em}.model-evidence strong{display:block;margin-top:10px;font-size:22px}.model-evidence p{margin:8px 0 0;color:var(--muted);font-size:10px;line-height:1.55}
.baseline-panel{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:14px}.baseline-panel>article{padding:17px;border:1px solid var(--line);border-radius:10px;background:#f7f7f3}.baseline-panel>article>span{display:block;margin-bottom:13px;color:var(--teal);font:800 9px/1 ui-monospace,monospace;letter-spacing:.09em}.baseline-bars{display:grid;gap:7px}.baseline-row{display:grid;grid-template-columns:62px 1fr 48px;align-items:center;gap:9px;font-size:10px}.baseline-row>div{height:7px;overflow:hidden;border-radius:99px;background:#e1e6e2}.baseline-row i{display:block;height:100%;border-radius:inherit;background:var(--teal)}.baseline-row strong{text-align:right;font:800 10px/1 ui-monospace,monospace}.recall-summary strong{font-size:26px}.recall-summary p{margin:7px 0 0;color:var(--muted);font-size:10px;line-height:1.55}.muted-copy{color:var(--muted);font-size:11px}
@media(max-width:800px){.probability-toolbar{grid-template-columns:1fr}.probability-meta{justify-content:flex-start;flex-wrap:wrap;padding:0}.probability-candidate{grid-template-columns:48px 1fr}.probability-bar{grid-column:1/-1}.probability-number{grid-column:1/-1;text-align:left}.model-evidence,.baseline-panel{grid-template-columns:1fr}}

/* Constituency profile v2: read as voter-pool intelligence, not raw population stats. */
#demographics{background:#1f1a0f;color:#f4f1ea}
#demographics .section-heading>p{max-width:720px;color:#bdb4a4;font-size:17px;line-height:1.9}
.demographic-panel{grid-template-columns:280px 1fr;gap:26px;padding:34px;border-color:rgba(82,210,198,.18);background:#151a1b;color:#edf6f4}
.demographic-panel>label{align-self:start;position:sticky;top:96px;padding:18px;border:1px solid rgba(255,255,255,.12);border-radius:14px;background:#101516}
.demographic-panel>label span{font-size:14px;color:#d5c7ad}.demographic-panel select{height:58px;border-color:rgba(255,255,255,.2);background:#111719;color:#fff;font-size:20px;font-weight:800}
.demographic-metrics{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.demographic-metrics article{min-height:128px;padding:22px;border:1px solid rgba(255,255,255,.08);border-radius:14px;background:#171c13}
.demographic-metrics span{color:#c7b896;font-size:13px;font-weight:900}.demographic-metrics strong{margin-top:16px;color:#f1eee7;font-size:34px;line-height:1.05;letter-spacing:-.03em}.demographic-metrics small{display:block;margin-top:10px;color:#aeb9b6;font-size:13px;line-height:1.45}
.demographic-read{grid-column:2;display:grid;grid-template-columns:minmax(0,1.15fr) minmax(300px,.85fr);gap:14px}
.demographic-read article{padding:22px;border:1px solid rgba(82,210,198,.18);border-radius:15px;background:#0d2a2e}.demographic-read span{color:var(--cyan);font:900 11px/1 ui-monospace,monospace;letter-spacing:.14em}.demographic-read h3{margin:12px 0 10px;font-size:28px;line-height:1.2}.demographic-read p,.demographic-read li{color:#c8dbd8;font-size:16px;line-height:1.75}.demographic-read ul{display:grid;gap:6px;margin:12px 0 0;padding-left:20px}.demographic-read b{color:#fff}
.age-chart{grid-column:1/-1;gap:12px;margin-top:6px;padding:22px;border:1px solid rgba(255,255,255,.09);border-radius:16px;background:#101516}
.age-chart-title{display:flex;align-items:end;justify-content:space-between;gap:14px;margin-bottom:8px}.age-chart-title span{color:var(--cyan);font:900 13px/1 ui-monospace,monospace;letter-spacing:.12em}.age-chart-title strong{color:#d6ccc0;font-size:15px}
.age-row{grid-template-columns:150px 1fr 150px;gap:18px;font-size:16px}.age-row>span b{display:block;color:#fff;font-size:18px}.age-row>span small{display:block;margin-top:4px;color:#94a8a7;font-size:12px;line-height:1.35}.age-track{height:16px;background:#2d3233}.age-track i{background:linear-gradient(90deg,#0d7f78,#52d2c6)}.age-row strong{color:#fff;text-align:right;font-size:18px}.age-row strong small{display:block;margin-top:3px;color:#8fb1b2;font:900 12px/1 ui-monospace,monospace}.age-row.dominant{padding:10px 12px;border-radius:12px;background:rgba(82,210,198,.09)}.age-row.dominant .age-track i{background:linear-gradient(90deg,#f0b74a,#52d2c6)}.age-row.underage{opacity:.62}.age-row.underage .age-track i{background:#6b7475}
.baseline-panel{gap:16px}.baseline-panel>article{padding:22px;border-color:rgba(255,255,255,.11);background:#171c13}.baseline-panel>article>span{font-size:12px;color:var(--cyan)}.baseline-bars{gap:11px}.baseline-row{grid-template-columns:120px 1fr 68px;font-size:14px}.baseline-row>div{height:13px;background:#2d3233}.baseline-row strong{color:#fff;font-size:14px}.recall-summary strong{display:block;color:#fff;font-size:42px}.recall-summary p{color:#b9c5c3;font-size:15px;line-height:1.65}
@media(max-width:1100px){.demographic-panel{grid-template-columns:1fr}.demographic-panel>label{position:static}.demographic-read{grid-column:1;grid-template-columns:1fr}.demographic-metrics{grid-template-columns:repeat(2,1fr)}}
@media(max-width:700px){.demographic-metrics{grid-template-columns:1fr}.age-row{grid-template-columns:1fr}.age-row strong{text-align:left}.baseline-row{grid-template-columns:1fr}}

/* Final war-room density pass: the opening screen must behave like an operating desk, not a poster. */
.hero.section-pad{padding-top:clamp(24px,3.2vw,42px);padding-bottom:clamp(24px,3.2vw,42px)}
.hero{grid-template-columns:minmax(0,.9fr) minmax(300px,.58fr);gap:clamp(24px,4vw,62px);min-height:clamp(330px,48vh,410px)}
.hero h1{max-width:9ch;font-size:clamp(38px,4.2vw,60px);line-height:1.02;letter-spacing:-.052em}
.hero-deck{max-width:540px;margin-top:16px;font-size:14px;line-height:1.58}
.hero-actions{margin-top:18px}
.notice{margin-top:12px;font-size:10.5px}
.radar-card{width:min(100%,350px);justify-self:end;border-radius:18px}
.radar-caption{padding:14px 18px}
.radar-caption strong{font-size:20px}.radar-caption small{font-size:11px}
.metric-strip article{min-height:112px;padding:22px clamp(18px,2.5vw,36px)}
.metric-strip strong{font-size:34px}.metric-strip small{margin-top:7px;font-size:11px}
.war-room-section{padding-top:46px}
.war-room-section .section-heading{margin-bottom:26px}
.war-room-section .section-heading h2{font-size:clamp(34px,4vw,56px)}
.war-room-brief{margin-bottom:14px}
.war-room-brief article{padding:16px}
.war-room-brief strong{font-size:30px}
@media(max-width:1100px){.hero{grid-template-columns:1fr;min-height:auto}.radar-card{justify-self:start;width:min(100%,460px)}}
@media(max-width:520px){.hero h1{font-size:clamp(34px,10vw,44px)}.metric-strip article{min-height:auto}}

/* Issue radar v3: each term is now a clickable intelligence filter. */
.issue-cloud-v2{grid-template-columns:minmax(620px,1fr) 340px;gap:20px;padding:20px;background:#061a1e}
.issue-cloud-stage{min-height:430px;border-color:rgba(82,210,198,.2);background:radial-gradient(circle at 72% 22%,rgba(228,103,93,.11),transparent 20%),radial-gradient(circle at 22% 74%,rgba(82,210,198,.12),transparent 24%),radial-gradient(circle at 50% 50%,rgba(82,210,198,.08),transparent 31%),linear-gradient(rgba(82,210,198,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(82,210,198,.05) 1px,transparent 1px);background-size:auto,auto,auto,36px 36px,36px 36px}
.axis-label{position:absolute;z-index:1;color:#6ca2a0!important;font:900 9px/1 ui-monospace,monospace!important;letter-spacing:.12em;pointer-events:none}.axis-left{left:16px;top:50%}.axis-right{right:16px;top:50%}.axis-top{left:50%;top:15px;transform:translateX(-50%)}.axis-bottom{left:50%;bottom:15px;transform:translateX(-50%)}
.cloud-node{border:0;background:transparent;display:grid;justify-items:center;gap:5px;text-align:center;cursor:pointer;transition:transform .18s ease,filter .18s ease,opacity .18s ease;color:var(--cyan)}
.cloud-node b{display:block;font:950 1em/1 "Noto Sans TC","Microsoft JhengHei",system-ui,sans-serif;letter-spacing:-.05em}
.cloud-node small{display:block;padding:4px 7px;border-radius:999px;background:rgba(0,0,0,.25);color:#8bbfbb;font:850 9px/1 ui-monospace,monospace;letter-spacing:.02em;opacity:0;transition:opacity .18s ease}
.cloud-node:hover,.cloud-node:focus-visible,.cloud-node.is-active{z-index:5;transform:translate(-50%,-50%) scale(1.08);filter:brightness(1.18)}
.cloud-node:hover small,.cloud-node:focus-visible small,.cloud-node.is-active small{opacity:1}
.cloud-node:focus-visible{outline:3px solid rgba(82,210,198,.75);outline-offset:4px}
.cloud-node.is-active:after{inset:-12px;border:1px solid rgba(255,255,255,.38);background:rgba(82,210,198,.16)}
.cloud-node.risk-critical b{color:#ff9b91;text-shadow:0 0 24px rgba(228,103,93,.46)}.cloud-node.risk-high b{color:#ffd27a;text-shadow:0 0 22px rgba(240,183,74,.42)}.cloud-node.risk-warm b{color:#76e6dc}.cloud-node.risk-watch b{color:#52d2c6}
.cloud-node.fresh-fresh:before,.cloud-node.fresh-recent:before{content:"";position:absolute;inset:-13px;border-radius:999px;border:1px solid rgba(82,210,198,.24);animation:pulse-term 2.4s ease-out infinite}.cloud-node.fresh-recent:before{opacity:.45;animation:none}.cloud-node.fresh-stale{opacity:.62}
@keyframes pulse-term{0%{transform:scale(.92);opacity:.65}100%{transform:scale(1.2);opacity:0}}
.cloud-rankings{gap:10px}.cloud-rankings>div{padding:13px;background:rgba(255,255,255,.055)}.cloud-rankings h4{font-size:15px}
.cloud-rankings li{display:block}.cloud-rankings li button{width:100%;display:flex;align-items:center;justify-content:space-between;gap:9px;padding:8px 9px;border:1px solid rgba(82,210,198,.12);border-radius:9px;background:rgba(255,255,255,.045);color:#e8f3f2;text-align:left}.cloud-rankings li button:hover,.cloud-rankings li button.is-active{border-color:rgba(82,210,198,.45);background:rgba(82,210,198,.12)}.cloud-rankings li button b{font-size:12px}.cloud-rankings li button span{color:#8fb1b2!important;font:850 10px/1 ui-monospace,monospace!important;letter-spacing:0!important;white-space:nowrap}
.cloud-selection{padding:14px;border:1px solid rgba(82,210,198,.18);border-radius:14px;background:#0b3037}.cloud-selection h4{margin:8px 0 8px;color:#fff;font-size:18px}.cloud-selection p{margin:0;color:#b8cdca;font-size:12px;line-height:1.65}.cloud-selection small{display:block;margin-top:9px;color:#89aaa8;font-size:11px;line-height:1.5}.cloud-selection button,.signal-filter-banner button{margin-top:12px;padding:8px 10px;border-color:rgba(82,210,198,.35);background:#101b1d;color:var(--cyan);font-size:11px;font-weight:900}.cloud-selection.is-filtering{border-color:rgba(82,210,198,.45);background:#123b40}
.cloud-legend{display:flex;flex-wrap:wrap;align-items:center;gap:8px;color:#91afad;font-size:10px}.cloud-legend i{width:9px;height:9px;border-radius:50%;display:inline-block}.cloud-legend .risk-critical{background:#ff9b91}.cloud-legend .risk-high{background:#ffd27a}.cloud-legend .risk-warm{background:#76e6dc}.cloud-legend .risk-watch{background:#52d2c6}
.signal-filter-banner{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 18px;border:1px solid rgba(13,127,120,.22);border-radius:12px;background:#0b3037;color:#e8f3f2}.signal-filter-banner span{color:var(--cyan);font:900 10px/1 ui-monospace,monospace;letter-spacing:.13em}.signal-filter-banner strong{display:block;margin-top:7px;font-size:24px}.signal-filter-banner small{display:block;margin-top:4px;color:#9fb8b9;font-size:11px}
@media(max-width:1050px){.issue-cloud-v2{grid-template-columns:1fr}.issue-cloud-stage{min-height:360px}}
@media(max-width:600px){.issue-cloud-stage{min-height:330px}.cloud-node small{display:none}.issue-cloud-v2 .cloud-size-5{font-size:40px}.issue-cloud-v2 .cloud-size-4{font-size:32px}.issue-cloud-v2 .cloud-size-3{font-size:26px}}

