#root{width:100%}h1,h2,h3,h4,p,figure{margin-block-start:0}h1,h2,h3,h4{color:#2c1f0e;font-family:Baskerville Old Face,Iowan Old Style,Palatino Linotype,serif;line-height:1.1}p{margin-block-end:0}strong{color:#2c1f0e}:root{--paper:#fdf8ee;--paper-warm:#f5eccc;--paper-mid:#e8d9aa;--ink:#2c1f0e;--ink-mid:#5a4028;--ink-soft:#7a6040;--ink-faint:#573f2738;--ink-border:#573f2761;--accent-gold:#b8860b;--accent-red:#9b1c1c;--battleground:#e65c00;--safe:#2f6e2f;--shadow:0 2px 12px #2c1f0e1f}*,:before,:after{box-sizing:border-box}body{background:var(--paper-mid);color:var(--ink);margin:0;font-family:Iowan Old Style,Palatino Linotype,Georgia,serif;font-size:14px;line-height:1.45;overflow-x:hidden}button,input,select,textarea{font:inherit}.newspaper-shell{max-width:1600px;margin:0 auto}.masthead{text-align:center;margin-bottom:6px}.masthead-rule{border-top:1px solid var(--ink);border-bottom:1px solid var(--ink);height:4px;margin:2px 0}.masthead-inner{flex-wrap:wrap;justify-content:center;align-items:baseline;gap:20px;padding:4px 0 2px;display:flex}.masthead h1{text-transform:uppercase;letter-spacing:.08em;margin:0;font-size:clamp(1.5rem,2.6vw,2.2rem);font-weight:900}.masthead-meta{text-transform:uppercase;letter-spacing:.14em;color:var(--ink-soft);gap:12px;font-size:.78rem;display:flex}.election-countdown{color:var(--ink-mid);font-weight:700}.election-countdown.urgent{color:var(--accent-red);animation:1.2s ease-in-out infinite pulse-text}@keyframes pulse-text{0%,to{opacity:1}50%{opacity:.65}}.panel{border:1px solid var(--ink-border);box-shadow:var(--shadow), inset 0 0 0 1px #fffae666;background:linear-gradient(#fdf8eef7 0%,#f5ecccfc 100%);min-width:0;padding:10px;position:relative}.panel:after{content:"";border:1px solid var(--ink-faint);pointer-events:none;position:absolute;inset:4px}.panel-kicker{letter-spacing:.2em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:3px;font-size:.65rem}.setup-screen{z-index:200;overscroll-behavior:contain;justify-content:center;align-items:flex-start;padding:40px 16px;display:flex;position:fixed;inset:0;overflow-y:auto}.setup-screen.is-splash{background:linear-gradient(160deg,#2c1f0e 0%,#4a3118 40%,#3d2a10 100%)}.setup-screen.is-modal{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0c0602f0}.setup-bg{pointer-events:none;background-image:repeating-linear-gradient(0deg,#ffffff04 0 1px,#0000 1px 24px),repeating-linear-gradient(90deg,#ffffff03 0 1px,#0000 1px 24px);position:fixed;inset:0}.setup-inner{flex-direction:column;gap:24px;width:100%;max-width:900px;margin:auto;display:flex;position:relative}.setup-masthead{text-align:center;padding:8px 0 4px}.setup-rule{border-top:1px solid #f8f0dd40;border-bottom:1px solid #f8f0dd40;height:3px;margin:6px 0}.setup-title{text-transform:uppercase;letter-spacing:.16em;color:#f8f0dd;margin:0;font-size:clamp(2.4rem,6vw,4rem);font-weight:900;line-height:1}.setup-tagline{color:#f8f0dda6;letter-spacing:.04em;margin:6px 0 0;font-size:.92rem;font-style:italic}.setup-body{grid-template-columns:260px 1fr;align-items:start;gap:20px;display:grid}.setup-config{flex-direction:column;gap:16px;display:flex}.setup-section{flex-direction:column;gap:6px;display:flex}.setup-section-label{text-transform:uppercase;letter-spacing:.2em;color:#f8f0dd80;font-size:.62rem;font-weight:700}.ward-count-buttons{grid-template-columns:repeat(4,1fr);gap:4px;display:grid}.ward-count-btn{appearance:none;color:#f8f0ddb3;font:inherit;cursor:pointer;background:#f8f0dd0f;border:1px solid #f8f0dd33;padding:8px 4px;font-size:.9rem;font-weight:700;transition:all .14s}.ward-count-btn:hover{color:#f8f0dd;background:#f8f0dd1f}.ward-count-btn.is-active{color:#2c1f0e;background:#f8f0dd;border-color:#f8f0dd}.setup-hint{color:#f8f0dd73;margin:0;font-size:.72rem;font-style:italic}.setup-town-card{background:#f8f0dd0f;border:1px solid #f8f0dd2e;flex-direction:column;gap:2px;padding:8px 10px;display:flex}.setup-town-card strong{color:#f8f0dd;font-size:.92rem}.setup-town-card span{color:#f8f0dd80;font-size:.72rem}.mode-btn{min-width:110px;padding:8px 12px}.setup-ward-picker{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:6px;display:grid}.setup-ward-btn{appearance:none;color:#f8f0ddb3;font:inherit;cursor:pointer;text-align:left;background:#f8f0dd0f;border:1px solid #f8f0dd33;flex-direction:column;gap:2px;padding:8px 10px;font-size:.78rem;transition:all .14s;display:flex}.setup-ward-btn:hover{color:#f8f0dd;background:#f8f0dd1f}.setup-ward-btn.is-active{color:#2c1f0e;background:#f8f0dd;border-color:#f8f0dd}.ward-btn-name{font-weight:700}.ward-btn-meta{opacity:.7;font-size:.66rem}.setup-ward-btn.is-active .ward-btn-meta{opacity:.6}.setup-politician-name-input{appearance:none;color:#f8f0dd;font:inherit;box-sizing:border-box;background:#f8f0dd0f;border:1px solid #f8f0dd33;width:100%;padding:8px 10px;font-size:.82rem}.setup-politician-name-input::placeholder{color:#f8f0dd59}.setup-actions{flex-direction:column;gap:6px;display:flex}.setup-btn-primary{appearance:none;color:#2c1f0e;font:inherit;text-transform:uppercase;letter-spacing:.12em;cursor:pointer;background:#f8f0dd;border:2px solid #f8f0dd;padding:12px 16px;font-size:.82rem;font-weight:900;transition:all .14s}.setup-btn-primary:hover{background:#fff8ea;border-color:#fff8ea}.setup-btn-secondary{appearance:none;color:#f8f0ddd9;font:inherit;text-transform:uppercase;letter-spacing:.1em;cursor:pointer;background:#f8f0dd14;border:1px solid #f8f0dd66;padding:9px 14px;font-size:.78rem;font-weight:700;transition:all .14s}.setup-btn-secondary:hover{color:#f8f0dd;background:#f8f0dd26}.setup-btn-ghost{appearance:none;color:#f8f0dd66;font:inherit;text-transform:uppercase;letter-spacing:.1em;cursor:pointer;text-align:left;background:0 0;border:none;padding:6px 0;font-size:.74rem;transition:color .14s}.setup-btn-ghost:hover{color:#f8f0ddb3}.setup-parties{scrollbar-width:thin;scrollbar-color:#f8f0dd26 transparent;flex-direction:column;gap:6px;max-height:70vh;padding-right:4px;display:flex;overflow-y:auto}.setup-parties::-webkit-scrollbar{width:4px}.setup-parties::-webkit-scrollbar-thumb{background:#f8f0dd26;border-radius:2px}.setup-party-group{flex-direction:column;gap:4px;display:flex}.setup-party-group.minor{margin-top:2px}.setup-party-card{background:#f8f0dd29;border:1px solid #f8f0dd40;transition:border-color .14s,background .14s;overflow:hidden}.setup-party-card:hover{background:#f8f0dd33;border-color:#f8f0dd66}.setup-party-card.is-selected{background:#f8f0dd38;border-color:#f8f0dda6}.setup-party-card.is-minor{background:#f8f0dd17;border-color:#f8f0dd26}.setup-party-card.is-minor.is-selected{background:#f8f0dd1a;border-color:#f8f0dd73}.setup-party-card.is-minor:hover{background:#f8f0dd14}.setup-party-header{appearance:none;cursor:pointer;text-align:left;color:#f8f0dd;background:0 0;border:none;grid-template-columns:16px 1fr auto 16px;align-items:center;gap:10px;width:100%;padding:10px 12px;display:grid}.setup-party-header:hover{background:#f8f0dd0f}.setup-party-swatch{border:1.5px solid #ffffff40;border-radius:50%;flex-shrink:0;width:14px;height:14px}.setup-party-info{min-width:0}.setup-party-name{color:#f8f0dd;white-space:nowrap;text-overflow:ellipsis;font-size:.88rem;font-weight:700;display:block;overflow:hidden}.setup-party-leader{color:#f8f0dd8c;font-size:.7rem;display:block}.setup-party-meta{align-items:center;gap:5px;display:flex}.setup-party-tier{text-transform:uppercase;letter-spacing:.1em;color:#f8f0dd59;border:1px solid #f8f0dd26;padding:1px 4px;font-size:.58rem}.setup-party-playing{letter-spacing:.1em;color:#f8f0dd;background:#f8f0dd2e;border:1.5px solid #f8f0dd99;padding:1px 5px;font-size:.6rem;font-weight:900}.setup-party-expand{color:#f8f0dd59;font-size:.6rem}.setup-party-ideology{color:#f8f0dd73;margin-top:1px;font-size:.62rem;font-style:italic;display:block}.setup-party-ideology-bar{background:#0000001a;border-top:1px solid #f8f0dd12;padding:6px 12px 8px}.ideology-widget{flex-direction:column;gap:5px;display:flex}.ideology-widget.compact{gap:4px}.ideology-row{grid-template-columns:58px 1fr 58px;align-items:center;gap:6px;display:grid}.ideology-widget.compact .ideology-row{grid-template-columns:52px 1fr 52px;gap:4px}.ideology-pole{color:#f8f0dd59;letter-spacing:.02em;font-size:.62rem;line-height:1.1}.ideology-pole.left{text-align:right}.ideology-pole.right{text-align:left}.ideology-pole.is-dominant{color:#f8f0ddcc;font-weight:700}.ideology-track{align-items:center;height:10px;display:flex;position:relative}.ideology-widget.compact .ideology-track{height:8px}.ideology-track-line{background:#f8f0dd1f;border-radius:1px;height:2px;position:absolute;left:0;right:0}.ideology-track-line:after{content:"";background:#f8f0dd33;width:1px;height:6px;position:absolute;top:-2px;left:50%;transform:translate(-50%)}.ideology-dot{z-index:1;border:1.5px solid #ffffff4d;border-radius:50%;width:10px;height:10px;transition:left .3s;position:absolute;transform:translate(-50%)}.ideology-widget.compact .ideology-dot{width:8px;height:8px}.ideology-widget.light .ideology-pole{color:var(--ink-soft)}.ideology-widget.light .ideology-pole.is-dominant{color:var(--ink);font-weight:700}.ideology-widget.light .ideology-track-line{background:#0000001a}.ideology-widget.light .ideology-track-line:after{background:#00000026}.ward-fit-block{border:1px solid var(--ink-faint);background:#ffffff4d;flex-direction:column;gap:6px;padding:7px 9px;display:flex}.ward-fit-good{background:#2f6e2f0a;border-color:#2f6e2f59}.ward-fit-poor{background:#9b1c1c0a;border-color:#9b1c1c4d}.ward-fit-neutral{background:#b8860b08;border-color:#b8860b40}.ward-fit-axes{flex-direction:column;gap:4px;display:flex}.ward-fit-axis-row{grid-template-columns:56px 1fr 16px;align-items:center;gap:6px;display:grid}.wfa-label{text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft);text-align:right;font-size:.65rem}.wfa-track{background:#0000000f;border-radius:6px;height:12px;position:relative;overflow:visible}.wfa-gap{pointer-events:none;border-radius:3px;height:6px;position:absolute;top:3px}.wfa-gap-close{background:#2f6e2f40}.wfa-gap-moderate{background:#b8860b40}.wfa-gap-far{background:#9b1c1c33}.wfa-dot{border:1.5px solid #ffffff80;border-radius:2px;width:10px;height:10px;position:absolute;top:50%;transform:translate(-50%,-50%)}.wfa-ward{background:var(--ink-mid);width:8px;height:8px;transform:translate(-50%,-50%)rotate(45deg)}.wfa-party{border:2px solid #fff9;border-radius:50%}.wfa-match{text-align:center;font-size:.72rem;font-weight:700}.wfa-match-close{color:var(--safe)}.wfa-match-moderate{color:var(--accent-gold)}.wfa-match-far{color:var(--accent-red)}.ward-fit-legend{color:var(--ink-soft);border-top:1px dotted var(--ink-faint);gap:10px;padding-top:2px;font-size:.65rem;display:flex}.wfl-ward{color:var(--ink-mid)}.wfl-party{font-weight:700}.ward-fit-verdict{color:var(--ink-soft);border-top:1px dotted var(--ink-faint);padding-top:4px;font-size:.76rem;font-style:italic;line-height:1.4}.ward-fit-good .ward-fit-verdict{color:var(--safe)}.ward-fit-poor .ward-fit-verdict{color:var(--accent-red)}.setup-party-edit{background:#00000059;border-top:1px solid #f8f0dd26;grid-template-columns:1fr 1fr auto;gap:8px;padding:10px 12px;display:grid}.setup-edit-field{flex-direction:column;gap:3px;display:flex}.setup-edit-field>span{text-transform:uppercase;letter-spacing:.14em;color:#f8f0dd66;font-size:.6rem}.setup-edit-field input[type=text],.setup-edit-field input:not([type]),.setup-edit-field input[type=color]{color:#f8f0dd;font:inherit;background:#f8f0dd1f;border:1px solid #f8f0dd40;padding:5px 8px;font-size:.8rem}.setup-edit-field input:focus-visible{outline:2px solid var(--ink);outline-offset:2px;background:#f8f0dd1f;border-color:#f8f0dd80}.setup-edit-colour{align-items:flex-start}.setup-edit-colour input[type=color]{cursor:pointer;width:36px;height:32px;padding:2px}.colour-preview{border:1px solid #f8f0dd33;border-radius:2px;width:36px;height:20px}.setup-edit-ideology{flex-direction:column;grid-column:1/-1;gap:4px;padding-top:2px;display:flex}.setup-edit-field-label{text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft);font-size:.62rem}.setup-edit-slider{grid-template-columns:62px 1fr 36px;align-items:center;gap:6px;display:grid}.setup-edit-slider input[type=range]{width:100%;accent-color:var(--ink-mid)}.slider-value{text-align:right;font-size:.68rem;font-weight:600}.setup-minor-group{flex-direction:column;gap:4px;margin-top:6px;display:flex}.setup-minor-label{text-transform:uppercase;letter-spacing:.18em;color:#f8f0dd59;padding:2px 0;font-size:.6rem}.setup-theme-actions{flex-wrap:wrap;gap:8px;margin-top:4px;display:flex}.setup-uk-names-btn{appearance:none;color:#f8f0dd80;font:inherit;text-transform:uppercase;letter-spacing:.08em;cursor:pointer;background:#f8f0dd0d;border:1px dashed #f8f0dd40;padding:7px 10px;font-size:.7rem;font-weight:700;transition:all .14s}.setup-uk-names-btn:hover{color:#f8f0ddcc;background:#f8f0dd1a;border-color:#f8f0dd66}@media (width<=700px){.setup-body{grid-template-columns:1fr;overflow:hidden}.setup-parties{scrollbar-width:thin;scrollbar-color:#f8f0dd33 transparent;-webkit-overflow-scrolling:touch;order:-1;max-height:60vh;padding-right:4px;overflow-y:auto}.setup-config{flex-shrink:0}}.ink-button{appearance:none;border:1px solid var(--ink);color:#f8f0dd;font:inherit;text-transform:uppercase;letter-spacing:.1em;cursor:pointer;white-space:nowrap;background:linear-gradient(#6b4d2a 0%,#4a3118 100%);padding:8px 14px;font-size:.78rem;font-weight:700;transition:opacity .12s}.ink-button:hover{opacity:.85}.ink-button:disabled{opacity:.45;cursor:not-allowed}.ink-button.secondary{color:var(--ink);border-color:var(--ink-border);background:linear-gradient(#eee0c0,#d8c898)}.ink-button.small{padding:5px 10px;font-size:.72rem}.game-topbar{border:1px solid var(--ink-border);background:linear-gradient(#f8f2e0,#ede0b8);flex-wrap:wrap;align-items:center;gap:10px;padding:8px 12px;display:flex}.topbar-party-block{border-left:4px solid #888;flex:1;align-items:center;gap:8px;min-width:160px;padding-left:8px;display:flex}.topbar-party-block strong{font-size:.88rem;display:block}.topbar-party-block small{color:var(--ink-soft);font-size:.72rem;display:block}.topbar-politician small{text-transform:capitalize}.party-initials-badge{color:#fff;border:2px solid #fff6;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;font-size:.75rem;font-weight:900;display:flex}.topbar-ap-block{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.action-week-status{letter-spacing:.04em;text-transform:uppercase;border:1px solid var(--ink-faint);border-radius:3px;padding:3px 8px;font-size:.72rem;font-weight:700}.action-week-status.is-available{color:var(--safe);border-color:var(--safe);background:#1a5c2a0f}.action-week-status.is-used{color:var(--ink-soft);opacity:.85}.ward-candidate-bars{flex-direction:column;gap:1px;margin:8px 0;display:flex}.ward-cand-row{background:0 0;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);align-items:center;min-height:34px;transition:background .12s;display:grid}.ward-cand-row.is-winner{background:#ffffff8c}.ward-cand-row.is-player{background:#7a603012}.ward-cand-row.is-player.is-winner{background:#7a60301f}.ward-cand-identity{border-right:1px solid var(--ink-faint);align-items:center;gap:7px;min-width:0;padding:5px 8px 5px 10px;display:flex}.ward-cand-initials{color:#fff;border:1.5px solid #ffffff4d;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;font-size:.62rem;font-weight:900;display:inline-flex}.ward-cand-names{min-width:0}.ward-cand-name-row{align-items:center;gap:5px;display:flex}.ward-cand-name{white-space:nowrap;text-overflow:ellipsis;font-size:.78rem;font-weight:700;line-height:1.25;display:block;overflow:hidden}.ward-cand-party{color:var(--ink-soft);white-space:nowrap;text-overflow:ellipsis;font-size:.64rem;line-height:1.25;display:block;overflow:hidden}.ward-cand-bar-col{grid-template-columns:1fr 38px;align-items:center;gap:6px;min-width:0;padding:5px 10px 5px 8px;display:grid}.ward-cand-bar-track{background:#00000012;border-radius:5px;height:22px;overflow:hidden}.ward-cand-bar-fill{border-radius:5px;min-width:2px;height:100%;transition:width .35s}.ward-cand-pct{text-align:right;font-size:.82rem;font-weight:700}.pacts-panel{flex-direction:column;gap:12px;display:flex}.pacts-intro{color:var(--ink-soft);margin:0;font-size:.78rem}.pacts-pending{border:1px solid var(--accent-gold);background:#b8860b14;border-radius:4px;padding:10px}.pacts-pending-actions{gap:8px;margin-top:8px;display:flex}.pacts-row{border-bottom:1px solid var(--ink-faint);padding:8px 0}.pacts-row-header{justify-content:space-between;align-items:center;gap:8px;display:flex}.pacts-ward-list{color:var(--ink-soft);margin:4px 0 0;padding:0;font-size:.72rem;list-style:none}.pacts-ward-line{padding:2px 0}.pacts-ward-line strong{color:var(--ink);font-weight:600}.pacts-unilateral{font-style:italic}.pacts-empty{color:var(--ink-soft);margin:0;font-size:.72rem;font-style:italic}.pacts-ally-pick{flex-direction:column;gap:4px;font-size:.72rem;display:flex}.pacts-suggestion{color:var(--ink-soft);font-size:.72rem}.ward-pact-panel .ac-expand-toggle{text-align:left;width:100%}.ward-pact-panel.is-disabled{opacity:.7}.ward-pact-locked-hint{color:var(--ink-soft);margin:0;font-size:.72rem}.ap-label-small{text-transform:uppercase;letter-spacing:.14em;color:var(--ink-soft);font-size:.65rem}.ap-pips-small{gap:4px;display:flex}.ap-pip-small{border:1.5px solid var(--ink-mid);background:#ffffff59;border-radius:2px;width:14px;height:14px;transition:background .2s}.ap-pip-small.filled{background:var(--ink-mid)}.ap-count-small{color:var(--ink-soft);font-size:.72rem}.topbar-countdown{border:1px solid var(--ink-faint);background:#ffffff4d;flex-direction:column;align-items:center;padding:4px 10px;display:flex}.topbar-countdown.urgent{border-color:var(--accent-red);background:#9b1c1c14}.countdown-number{font-size:1.3rem;font-weight:900;line-height:1}.countdown-label{text-transform:uppercase;letter-spacing:.1em;color:var(--ink-soft);font-size:.6rem}.topbar-countdown.urgent .countdown-number{color:var(--accent-red)}.front-page{flex-direction:column;gap:6px;display:flex}.dashboard-layout{grid-template-columns:1fr;grid-template-areas:"seatbar""map""right";align-items:start;gap:10px;display:grid}.map-panel{flex-direction:column;grid-area:map;gap:5px;display:flex}.right-column{flex-direction:column;grid-area:right;gap:6px;display:flex}.topbar-actions{align-items:center;gap:6px;margin-left:auto;display:flex}.seat-bar-row{grid-area:seatbar}.seat-bar-wrap{cursor:pointer;position:relative}.seat-bar-wrap:hover .seat-bar{border-color:var(--ink-soft)}.seat-bar-wrap:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.seat-bar{border:1px solid var(--ink-border);width:100%;color:var(--ink);font:inherit;background:linear-gradient(#fdf8eef7,#f5ecccfc);flex-direction:column;gap:5px;padding:4px 8px 6px;display:flex}.seat-bar-track{border:1px solid var(--ink-faint);border-radius:2px;width:100%;height:28px;display:flex;position:relative;overflow:hidden}.seat-bar-segment{min-width:2px;height:100%;transition:width .4s}.seat-bar-segment.is-player{outline-offset:-2px;outline:2px solid #00000059}.seat-bar-segment.empty{background:#00000012}.seat-bar-majority-marker{pointer-events:none;z-index:1;background:#00000040;width:2px;position:absolute;top:0;bottom:0}.seat-bar-info{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.seat-bar-pol-status{color:var(--safe);text-transform:capitalize;font-size:.66rem;font-weight:600}.seat-bar-gov-label{color:var(--ink);white-space:nowrap;background:#b8860b26;border:1px solid #b8860b4d;border-radius:3px;align-items:center;gap:5px;padding:2px 8px;font-size:.66rem;font-weight:700;display:inline-flex}.seat-bar-gov-dot{background:var(--accent-gold);border-radius:50%;flex-shrink:0;width:7px;height:7px}.seat-bar-meta{color:var(--ink-soft);white-space:nowrap;font-size:.6rem}.seat-bar-actions{gap:4px;margin-left:auto;display:flex}.seat-bar-action-btn{appearance:none;border:1px solid var(--ink-faint);color:var(--ink);font:inherit;cursor:pointer;white-space:nowrap;background:#ffffff80;border-radius:3px;padding:3px 6px;font-size:.6rem;font-weight:700;transition:all .12s}.seat-bar-action-btn:hover{border-color:var(--ink-mid);background:#ffffffbf}.seat-bar-action-btn.is-gov{background:#b8860b14;border-color:#b8860b4d}.seat-bar-action-btn.is-gov:hover{background:#b8860b26}.seat-bar-stats-hint{color:var(--ink-soft);opacity:.7;margin-left:auto;font-size:.66rem}.seat-bar-wrap:hover .seat-bar-stats-hint{opacity:1}.campaign-panel-wrap{overflow:visible}.campaign-panel{flex-direction:column;gap:8px;display:flex}.map-panel-header{justify-content:space-between;align-items:start;gap:8px;display:flex}.map-panel-header h3{margin:0;font-size:1.1rem}.map-mode-row{gap:3px;display:flex}.mode-btn{appearance:none;border:1px solid var(--ink-faint);color:var(--ink-mid);font:inherit;text-transform:uppercase;letter-spacing:.1em;cursor:pointer;background:#fffbeebf;padding:4px 9px;font-size:.7rem;font-weight:700}.mode-btn.is-active{background:var(--ink-mid);color:#f8f0dd;border-color:var(--ink)}.currents-strip{flex-wrap:wrap;gap:4px;display:flex}.current-pill{border:1px solid var(--ink-faint);text-transform:uppercase;letter-spacing:.08em;color:var(--ink-mid);background:#ffffff80;align-items:center;gap:4px;padding:2px 7px;font-size:.7rem;font-weight:600;display:inline-flex}.current-dot{background:var(--accent-gold);border-radius:50%;width:6px;height:6px}.redistrict-toolbar{border-top:1px solid var(--ink-faint);flex-direction:column;gap:6px;padding:7px 0;display:flex}.redistrict-disclaimer{color:var(--accent-red);background:#9b1c1c0f;border:1px solid #9b1c1c33;padding:4px 7px;font-size:.68rem;font-style:italic}.redistrict-controls{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.map-figure{flex-direction:column;gap:3px;margin:0;display:flex}.map-toolbar{color:var(--ink-soft);justify-content:space-between;align-items:center;gap:8px;font-size:.74rem;display:flex}.map-toolbar label{grid-template-columns:auto minmax(100px,160px) auto;align-items:center;gap:4px;display:grid}.map-toolbar input[type=range]{accent-color:var(--ink-mid)}.map-selection-note{text-align:right;color:var(--ink-soft);font-size:.72rem}.map-figure figcaption{color:var(--ink-soft);font-size:.72rem;font-style:italic}.map-svg{border:1px solid var(--ink-border);background:linear-gradient(160deg,#a297791f,#546c771a);width:100%;height:min(66vh,580px);min-height:420px}.sea{fill:#6e828e1a}.landmass-shadow{fill:#2c1f0e14;transform:translate(6px,6px)}.landmass-base{fill:#f8eed0f5}.landmass-outline{fill:none;stroke:var(--ink);stroke-width:2.2px}.constituency-cell{stroke:#2c1f0eb3;stroke-width:1px;cursor:pointer;transition:stroke-width .15s}.constituency-cell:hover{stroke-width:2px}.constituency-cell.is-selected{stroke-width:2.4px;stroke:var(--ink)}.constituency-cell.is-battleground{stroke:var(--battleground);stroke-width:1.8px}.constituency-cell.is-battleground.is-selected{stroke-width:2.8px}.selection-marker{pointer-events:none}.selection-marker-ring{fill:none;stroke:#1e0f00e0;stroke-width:2px;stroke-dasharray:3 3;transform-box:fill-box;transform-origin:50%}.selection-marker-core{fill:var(--paper);stroke:#1e0f00f2;stroke-width:1.5px}.constituency-outline{fill:#fffbf10f;stroke:#2c1f0e4d;stroke-width:1px;pointer-events:none}.constituency-outline.is-selected{stroke:#2c1f0ebf;stroke-width:1.8px}.constituency-outline.is-player-ward{stroke:var(--safe);stroke-width:2px;stroke-dasharray:6 3}.politician-ward-highlight{pointer-events:none;opacity:.8}.tile-mark{stroke:#2c1f0e59;stroke-width:.5px;cursor:pointer;transition:opacity .13s}.tile-mark.is-selected{stroke:#0e0800e6;stroke-width:1.2px}.settlement-ring{fill:none;stroke:#2c1f0e26;stroke-dasharray:3 4}.settlement-core{fill:#2c1f0e61}.constituency-label{text-anchor:middle;fill:#2c1f0eb3;pointer-events:none;letter-spacing:.08em;font-size:10px;font-weight:700}.battleground-ring{fill:none;stroke:var(--battleground);stroke-width:2px;stroke-dasharray:5 3;pointer-events:none;animation:2s linear infinite battleground-dash}@keyframes battleground-dash{to{stroke-dashoffset:-16px}}.history-chart-wrap{flex-direction:column;gap:4px;display:flex}.history-svg{width:100%;height:100px}.history-svg.tall{height:180px}.chart-gridline{stroke:var(--ink-faint);stroke-width:.8px}.chart-axis-label{fill:var(--ink-soft);font-size:9px}.chart-legend{flex-wrap:wrap;gap:8px;display:flex}.legend-item{color:var(--ink-soft);align-items:center;gap:4px;font-size:.7rem;display:inline-flex}.legend-item.is-player{color:var(--ink);font-weight:700}.legend-swatch{border-radius:2px;flex-shrink:0;width:10px;height:10px}.history-empty{color:var(--ink-soft);padding:6px 0;font-size:.78rem;font-style:italic}.focus-ward-poll{border:1px solid var(--ink-faint);background:#ffffff61;flex-direction:column;display:flex;overflow:hidden}.focus-ward-poll.is-battleground{background:#e65c000a;border-color:#e65c004d}.fwp-header{border-bottom:1px solid var(--ink-faint);justify-content:space-between;align-items:baseline;gap:8px;padding:7px 10px 5px;display:flex}.fwp-targeting{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.fwp-targeting-label{text-transform:uppercase;letter-spacing:.14em;color:var(--ink-soft);font-size:.62rem}.fwp-ward-name{color:var(--ink);font-size:.92rem;font-weight:700}.fwp-hint{color:var(--ink-soft);flex-shrink:0;font-size:.62rem;font-style:italic}.fwp-candidate-bars{flex-direction:column;gap:1px;display:flex}.fwp-cand-row{background:0 0;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);align-items:center;min-height:34px;transition:background .12s;display:grid}.fwp-cand-row.is-winner{background:#ffffff8c}.fwp-cand-row.is-player{background:#7a603012}.fwp-cand-row.is-player.is-winner{background:#7a60301f}.fwp-cand-identity{border-right:1px solid var(--ink-faint);align-items:center;gap:7px;min-width:0;padding:5px 8px 5px 10px;display:flex}.fwp-cand-initials{color:#fff;border:1.5px solid #ffffff4d;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;font-size:.62rem;font-weight:900;display:flex}.fwp-cand-names{min-width:0}.fwp-cand-name{white-space:nowrap;text-overflow:ellipsis;font-size:.78rem;font-weight:700;line-height:1.25;display:block;overflow:hidden}.fwp-cand-party{color:var(--ink-soft);white-space:nowrap;text-overflow:ellipsis;font-size:.64rem;line-height:1.25;display:block;overflow:hidden}.fwp-cand-bar-col{grid-template-columns:1fr 38px;align-items:center;gap:6px;padding:5px 10px 5px 8px;display:grid}.fwp-cand-bar-track{background:#00000012;border-radius:5px;height:22px;overflow:hidden}.fwp-cand-bar-fill{border-radius:5px;height:100%;transition:width .35s}.fwp-cand-pct{text-align:right;font-size:.82rem;font-weight:700}.fwp-status{border-top:1px solid var(--ink-faint);background:#ffffff2e;padding:5px 10px;font-size:.74rem}.fwp-margin-leading{color:var(--safe);font-weight:700}.fwp-margin-trailing{color:var(--battleground);font-weight:700}.fwp-auto-status{border-top:1px solid var(--ink-faint);background:#1a5c2a0d;flex-wrap:wrap;align-items:center;gap:5px;padding:4px 8px;font-size:.68rem;display:flex}.fwp-auto-label{color:var(--safe);white-space:nowrap;font-weight:700}.fwp-auto-campaign{color:var(--safe);white-space:nowrap;background:#1a5c2a14;border-radius:2px;padding:1px 5px;font-size:.64rem}.fwp-auto-boost{color:var(--ink-soft);white-space:nowrap;font-size:.65rem}.campaign-no-ward{color:var(--ink-soft);text-align:center;margin:0;padding:10px 0;font-size:.78rem;font-style:italic}.action-cards{flex-direction:column;gap:4px;display:flex}.action-card{appearance:none;border:1px solid var(--ink-faint);cursor:pointer;font:inherit;color:var(--ink);text-align:left;background:#ffffff80;flex-direction:column;padding:0;transition:background .13s,border-color .13s;display:flex}.action-card:not(.is-disabled):hover{border-color:var(--ink-mid);background:#ffffffd1}.action-card.is-disabled{opacity:.42;cursor:not-allowed}.action-card.is-used{opacity:.55}button.action-card{padding:8px 10px}button.action-card .ac-header{justify-content:space-between;align-items:baseline;margin-bottom:2px;display:flex}button.action-card .ac-name{font-size:.82rem;font-weight:700}button.action-card .ac-desc{color:var(--ink-soft);font-size:.72rem}.ac-expand-toggle{appearance:none;cursor:pointer;font:inherit;color:var(--ink);text-align:left;background:0 0;border:none;flex-direction:column;gap:2px;width:100%;padding:8px 10px;display:flex}.ac-expand-toggle .ac-header{justify-content:space-between;align-items:baseline;display:flex}.ac-expand-toggle .ac-name{font-size:.82rem;font-weight:700}.ac-expand-toggle .ac-desc{color:var(--ink-soft);font-size:.72rem}.ac-cost{background:#00000012;border-radius:2px;flex-shrink:0;padding:1px 5px;font-size:.68rem;font-weight:700}.ac-cost.cant-afford{color:var(--accent-red);background:#9b1c1c14}.ac-cost.ac-free{color:var(--safe);background:#2f6e2f1a}.ac-cost.ac-used{color:var(--ink-soft)}.ac-config{border-top:1px solid var(--ink-faint);flex-direction:column;gap:6px;margin-top:2px;padding:7px 10px 9px;display:flex}.ac-select{border:1px solid var(--ink-faint);font:inherit;color:var(--ink);background:#ffffffbf;width:100%;padding:5px 7px;font-size:.78rem}.ap-cost-badge{color:var(--accent-gold);text-transform:uppercase;letter-spacing:.08em;border:1px solid #b8860b4d;align-self:flex-start;padding:0 4px;font-size:.62rem;font-weight:700}.action-card-rally:not(.is-disabled){background:#fff8e699;border-color:#573f2759}.action-card-smear:not(.is-disabled){background:#9b1c1c0a}.week-actions-log{border-top:1px solid var(--ink-faint);flex-direction:column;gap:3px;padding-top:6px;display:flex}.log-label{text-transform:uppercase;letter-spacing:.14em;color:var(--ink-soft);font-size:.6rem}.log-entry{color:var(--ink-soft);font-size:.73rem;line-height:1.3}.log-success{color:var(--safe)}.log-backfire{color:var(--accent-red)}.policy-dir-row{gap:4px;display:flex}.policy-dir-btn{appearance:none;border:1px solid var(--ink-faint);cursor:pointer;font:inherit;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-mid);background:#fffbeeb3;flex:1;padding:5px;font-size:.72rem;font-weight:700}.policy-dir-btn.is-active{background:var(--ink-mid);color:#f8f0dd;border-color:var(--ink)}.event-card{background:linear-gradient(#ffe6b466,#ffdc8c4d);border:1px solid #b8860b66;padding:8px}.event-kicker{text-transform:uppercase;letter-spacing:.16em;color:var(--accent-gold);margin-bottom:2px;font-size:.6rem}.event-headline{margin:0 0 4px;font-size:.88rem;font-weight:700}.event-desc{color:var(--ink-soft);margin:0 0 6px;font-size:.76rem}.event-choices{flex-direction:column;gap:4px;display:flex}.event-choice-btn{appearance:none;border:1px solid var(--ink-faint);text-align:left;cursor:pointer;font:inherit;background:#ffffffa6;flex-direction:column;gap:2px;width:100%;padding:7px 8px;transition:background .15s;display:flex;position:relative}.event-choice-btn:hover:not(.is-disabled){border-color:var(--ink-mid);background:#ffffffe6}.event-choice-btn.is-disabled{opacity:.45;cursor:not-allowed}.event-choice-btn strong{font-size:.8rem}.event-choice-btn span{color:var(--ink-soft);font-size:.72rem}.ward-header-row{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}.candidates-list{flex-direction:column;gap:3px;display:flex}.candidate-info{flex:1;min-width:0}.candidate-info .candidate-name{font-size:.8rem;font-weight:700;display:block}.candidate-info .candidate-party{color:var(--ink-soft);font-size:.68rem;display:block}.constituency-panel{flex-direction:column;gap:7px;font-size:.85rem;display:flex;overflow:visible}.constituency-panel h3{margin:0;font-size:1rem}.constituency-panel h4{text-transform:uppercase;letter-spacing:.1em;color:var(--ink-soft);margin:0 0 4px;font-size:.82rem}.ward-mood{color:var(--ink-soft);margin:0;font-size:.78rem}.ward-history-scroll{border:1px solid var(--ink-faint);scrollbar-width:thin;scrollbar-color:var(--ink-faint) transparent;background:#ffffff40;flex-direction:column;gap:0;max-height:160px;display:flex;overflow-y:auto}.ward-history-scroll::-webkit-scrollbar{width:4px}.ward-history-scroll::-webkit-scrollbar-thumb{background:var(--ink-faint);border-radius:2px}.ward-history-list{flex-direction:column;gap:2px;display:flex}.history-item{border-bottom:1px solid var(--ink-faint);background:0 0;grid-template-columns:38px 10px minmax(0,1fr) 34px minmax(40px,72px) 36px;align-items:center;gap:5px;padding:4px 6px;font-size:.71rem;transition:background .1s;display:grid}.history-badge-slot{justify-content:flex-end;align-items:center;display:flex}.history-item:last-child{border-bottom:none}.history-item:hover{background:#fff6}.history-week{color:var(--ink-soft);white-space:nowrap;font-size:.67rem}.history-swatch{border-radius:50%;flex-shrink:0;width:8px;height:8px}.history-party{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.history-bar-wrap{background:#0000000f;border-radius:3px;height:7px;overflow:hidden}.history-bar-fill{opacity:.75;border-radius:3px;height:100%;transition:width .3s}.history-margin{text-align:right;white-space:nowrap;font-size:.7rem;font-weight:700}.history-change{letter-spacing:.05em;white-space:nowrap;border:1px solid #0000;border-radius:2px;flex-shrink:0;padding:1px 3px;font-size:.6rem;font-weight:700}.history-change.held{color:var(--safe);background:#1a5c2a12;border-color:#1a5c2a66}.history-change.lost{color:var(--accent-red);background:#9b1c1c12;border-color:#9b1c1c66}.history-change.neutral{color:var(--ink-soft);border-color:var(--ink-faint)}.history-tabs{gap:3px;margin-bottom:4px;display:flex}.history-tab{appearance:none;border:1px solid var(--ink-faint);color:var(--ink-mid);font:inherit;cursor:pointer;text-transform:uppercase;letter-spacing:.05em;background:#ffffff4d;flex:1;padding:3px 6px;font-size:.6rem;font-weight:700;transition:all .12s}.history-tab.is-active{background:var(--ink-mid);color:#f8f0dd;border-color:var(--ink)}.rep-row{border-bottom:1px solid var(--ink-faint);align-items:center;gap:5px;padding:4px 6px;font-size:.68rem;transition:background .1s;display:flex}.rep-row:hover{background:#ffffff59}.rep-row:last-child{border-bottom:none}.rep-row.is-current{background:#1a5c2a0f;font-weight:600}.rep-swatch{border-radius:50%;flex-shrink:0;width:10px;height:10px}.rep-name{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.rep-party{color:var(--ink-soft);white-space:nowrap;text-overflow:ellipsis;font-weight:400;overflow:hidden}.rep-terms{color:var(--ink-soft);white-space:nowrap;flex-shrink:0;margin-left:auto;font-size:.62rem}.rep-inc-tag{color:var(--safe);white-space:nowrap;flex-shrink:0;font-size:.52rem;font-weight:700}.rep-empty{color:var(--ink-soft);text-align:center;padding:8px 6px;font-size:.66rem;font-style:italic;display:block}.incumbent-badge{letter-spacing:.08em;border:1.5px solid var(--accent-gold);color:var(--accent-gold);background:#b8860b14;border-radius:2px;flex-shrink:0;align-items:center;padding:1px 4px;font-size:.55rem;font-weight:900;line-height:1.3;display:inline-flex}.fwp-cand-name-row{align-items:center;gap:4px;min-width:0;display:flex}.why-section{border-top:1px solid var(--ink-faint);padding-top:5px}.why-summary{text-transform:uppercase;letter-spacing:.1em;color:var(--ink-soft);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:4px;padding:2px 0 4px;font-size:.72rem;list-style:none;display:flex}.why-summary::-webkit-details-marker{display:none}.why-summary:before{content:"▶";font-size:.5rem;transition:transform .2s}.why-section[open] .why-summary:before{transform:rotate(90deg)}.detail-strip{border-top:1px solid var(--ink-faint);border-bottom:1px solid var(--ink-faint);grid-template-columns:repeat(3,1fr);gap:4px;padding:6px 0;display:grid}.detail-strip-item{flex-direction:column;gap:1px;display:flex}.detail-strip-item .label{text-transform:uppercase;letter-spacing:.12em;color:var(--ink-soft);font-size:.6rem}.detail-strip-item strong{font-size:.82rem}.detail-strip-item small{color:var(--ink-soft);font-size:.68rem}.detail-bullets{color:var(--ink-soft);flex-direction:column;gap:3px;margin:0;padding-left:14px;font-size:.78rem;display:flex}.bloc-list{flex-direction:column;gap:3px;display:flex}.bloc-row{border-bottom:1px dotted var(--ink-faint);align-items:center;gap:6px;padding:3px 0;font-size:.76rem;display:flex}.bloc-bar-wrap{background:#00000012;border-radius:3px;flex:1;height:6px;overflow:hidden}.bloc-bar{border-radius:3px;height:100%}.bloc-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.bloc-label{width:96px;color:var(--ink-mid);flex-shrink:0}.bloc-pct{text-align:right;width:30px;font-size:.74rem;font-weight:700}.ward-polling-section{border:1px solid var(--ink-faint);background:#ffffff47;margin-bottom:8px;padding:7px 8px}.ward-polling-section h4{margin:0 0 6px;font-size:.78rem}.ward-polling-bars{flex-direction:column;gap:4px;display:flex}.ward-poll-row{grid-template-columns:10px 1fr 3fr 38px;align-items:center;gap:5px;font-size:.72rem;display:grid}.ward-poll-row.is-player{font-weight:700}.wp-swatch{border-radius:2px;width:10px;height:10px}.wp-party{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.wp-bar-wrap{background:var(--ink-faint);border-radius:2px;height:12px;overflow:hidden}.wp-bar-fill{border-radius:2px;height:100%;transition:width .2s}.wp-pct{text-align:right;color:var(--ink-mid);font-size:.68rem}.wp-margin{color:var(--ink-soft);margin-top:4px;font-size:.66rem;font-style:italic}.bloc-mix-section{border:1px solid var(--ink-faint);border-left:3px solid var(--ink-faint);background:#ffffff47;padding:7px 8px}.bloc-mix-section h4{margin:0 0 1px}.bloc-mix-explainer{color:var(--ink-soft);margin:0 0 5px;font-size:.68rem;font-style:italic}.ward-campaign-activity{border:1px solid #1a5c2a26;border-left:3px solid var(--safe);background:#1a5c2a0a;flex-wrap:wrap;align-items:center;gap:5px;padding:5px 8px;font-size:.7rem;display:flex}.ward-campaign-label{color:var(--safe);white-space:nowrap;font-weight:700}.ward-campaign-item{color:var(--safe);white-space:nowrap;background:#1a5c2a0f;border-radius:2px;padding:1px 5px;font-size:.66rem}.party-chip{border:1px solid var(--ink-faint);cursor:pointer;background:#fffbee80;grid-template-columns:auto auto 1fr;align-items:center;gap:7px;padding:6px 8px;display:grid}.party-chip input{cursor:pointer;margin:0}.party-chip.is-active{border-color:var(--ink-mid);background:#64482317}.party-chip small{color:var(--ink-soft);font-size:.72rem}.axis-grid{grid-template-columns:repeat(2,1fr);gap:5px 10px;display:grid}.axis-grid label{flex-direction:column;gap:4px;font-size:.78rem;display:flex}.axis-grid label strong{color:var(--ink-soft);font-size:.74rem}input[type=text],input:not([type]),input[type=color]{border:1px solid var(--ink-faint);background:#fffbf1bf;padding:7px 9px}input[type=range]{width:100%;accent-color:var(--ink-mid)}.custom-party-list{flex-direction:column;gap:3px;margin-top:6px;display:flex}.custom-party-item{border:1px solid var(--ink-faint);grid-template-columns:auto 1fr auto;align-items:center;gap:6px;padding:4px 6px;font-size:.8rem;display:grid}.custom-party-item button{cursor:pointer;background:0 0;border:1px solid #573f2747;padding:3px 7px;font-size:.7rem}.swatch{border:1px solid #2c1f0e66;border-radius:50%;flex-shrink:0;width:11px;height:11px;margin-top:.2em}.action-flash{z-index:1000;cursor:pointer;background:linear-gradient(#fdf8ee,#f5eccc);border:2px solid;align-items:flex-start;gap:10px;max-width:340px;padding:12px 14px;animation:.2s forwards slide-in;display:flex;position:fixed;bottom:20px;right:20px;box-shadow:0 4px 20px #0003}@keyframes slide-in{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.action-flash-success{border-color:var(--safe)}.action-flash-backfire{border-color:var(--accent-red)}.action-flash-neutral{border-color:var(--ink-faint)}.flash-outcome-icon{flex-shrink:0;margin-top:1px;font-size:1.2rem;font-weight:900;line-height:1}.action-flash-success .flash-outcome-icon{color:var(--safe)}.action-flash-backfire .flash-outcome-icon{color:var(--accent-red)}.flash-body{flex-direction:column;gap:2px;display:flex}.flash-body strong{text-transform:uppercase;letter-spacing:.1em;font-size:.8rem}.flash-body span{color:var(--ink-soft);font-size:.78rem}.flash-delta{font-size:.75rem;font-weight:700}.flash-delta.positive{color:var(--safe)}.flash-delta.negative{color:var(--accent-red)}.modal-backdrop{z-index:500;background:#140c04b3;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0;overflow-y:auto}.modal{border:2px solid var(--ink-mid);background:linear-gradient(#fdf8ee,#f0e4c4);width:100%;max-width:720px;max-height:90vh;padding:20px 22px;position:relative;overflow-y:auto;box-shadow:0 8px 40px #0006}.modal:after{content:"";border:1px solid var(--ink-faint);pointer-events:none;position:absolute;inset:6px}.modal-header{margin-bottom:14px}.modal-kicker{text-transform:uppercase;letter-spacing:.22em;color:var(--accent-gold);font-size:.62rem}.modal-header h2{margin:2px 0 4px;font-size:1.5rem}.modal-sub{color:var(--ink-soft);margin:0;font-size:.78rem}.victory-modal{text-align:center;max-width:480px}.victory-modal .modal-header{margin-bottom:18px}.victory-modal .modal-kicker{letter-spacing:.3em;font-size:.72rem}.victory-modal h2{margin:6px 0;font-size:1.8rem}.victory-body{margin:16px 0}.victory-headline{margin:0 0 18px;font-family:Georgia,Times New Roman,serif;font-size:1.05rem;line-height:1.5}.victory-stats{justify-content:center;gap:28px;margin:16px 0;display:flex}.victory-stat{flex-direction:column;align-items:center;display:flex}.victory-stat-label{text-transform:uppercase;letter-spacing:.12em;color:var(--ink-soft);font-size:.68rem}.victory-stat-value{font-size:1.3rem;font-weight:700}.victory-footer{margin-top:18px}.victory-footer .btn{padding:8px 24px;font-size:.88rem}.election-night-modal{max-width:780px}.election-night-grid{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:6px;margin-bottom:14px;display:grid}.election-result-card{border:1px solid var(--ink-faint);background:#ffffff80;flex-direction:column;gap:3px;padding:7px 8px;animation:.3s forwards card-appear;display:flex}@keyframes card-appear{0%{opacity:0;transform:scale(.94)}to{opacity:1;transform:scale(1)}}.election-result-card.is-player{border-color:var(--ink-mid);background:#7a60301a}.election-result-card.is-gain{border-color:var(--safe);background:#1a5c2a0f}.election-result-card.is-loss{border-color:var(--accent-red);background:#9b1c1c0d}.election-result-card.is-flip{background:#b8860b0d;border-color:#643c0066}.election-result-card.is-player.is-gain{background:#1a5c2a1a}.election-result-card.is-player.is-loss{background:#9b1c1c14}.pending-card{cursor:pointer;opacity:.75;border-style:dashed;justify-content:center;align-items:center;min-height:80px}.pending-card:hover{opacity:1;border-color:var(--ink-mid)}.pending-reveal{color:var(--ink-soft);text-align:center;font-size:.75rem}.result-card-ward{text-transform:uppercase;letter-spacing:.12em;color:var(--ink-soft);font-size:.62rem}.result-card-winner{border-left:3px solid #0000;align-items:center;gap:5px;padding-left:6px;display:flex}.result-winner-names{flex-direction:column;gap:0;min-width:0;display:flex}.result-candidate-initials{color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:22px;height:22px;font-size:.6rem;font-weight:900;display:flex}.result-candidate-name{white-space:nowrap;text-overflow:ellipsis;font-size:.78rem;font-weight:700;overflow:hidden}.result-party-name{color:var(--ink-soft);white-space:nowrap;text-overflow:ellipsis;font-size:.62rem;overflow:hidden}.result-card-stats{flex-direction:column;gap:2px;display:flex}.result-pct-row{align-items:baseline;gap:6px;display:flex}.result-pct{font-size:.85rem;font-weight:700}.result-margin{color:var(--ink-soft);font-size:.7rem}.result-runnerup{color:var(--ink-soft);font-size:.6rem;line-height:1.3}.result-runnerup-party{font-weight:600}.result-bar{border-radius:3px;flex-direction:column;height:10px;margin-top:2px;display:flex;overflow:hidden}.result-bar-fill{height:100%;transition:width .4s}.result-swing{letter-spacing:.02em;font-size:.68rem;font-weight:700}.swing-up{color:var(--safe)}.swing-down{color:var(--accent-red)}.result-card-change{margin-top:1px;font-size:.68rem}.change-gain{color:var(--safe);font-weight:700}.change-loss{color:var(--accent-red);font-weight:700}.change-flip{color:var(--ink-mid);font-style:italic}.result-votes,.result-turnout{color:var(--ink-soft);font-size:.6rem}.result-close-banner{color:#b8860b;text-transform:uppercase;letter-spacing:.06em;text-align:center;background:#b8860b26;border:1px solid #b8860b4d;padding:2px 4px;font-size:.58rem;font-weight:700}.election-result-card.is-close{border-color:#b8860b}.election-result-card.is-your-ward{border:2px solid var(--safe);box-shadow:0 0 8px #27ae6026}.your-seat-label{color:var(--safe);letter-spacing:.05em;font-size:.58rem;font-weight:900}.en-verdict-stats{color:var(--ink-soft);margin-top:6px;font-size:.66rem;font-weight:400}.election-night-summary{border-top:2px solid var(--ink-mid);flex-direction:column;gap:10px;padding-top:12px;display:flex}.en-before-after{border:1px solid var(--ink-faint);background:#ffffff59;padding:8px 10px}.en-ba-label{text-transform:uppercase;letter-spacing:.14em;color:var(--ink-soft);margin-bottom:6px;font-size:.62rem}.en-ba-rows{flex-direction:column;gap:3px;display:flex}.en-ba-row{grid-template-columns:12px minmax(0,1fr) 22px 14px 22px 30px;align-items:center;gap:5px;font-size:.78rem;display:grid}.en-ba-row.is-player{font-weight:700}.en-ba-swatch{border:1px solid #2c1f0e4d;border-radius:50%;flex-shrink:0;width:12px;height:12px}.en-ba-name{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.en-ba-before{text-align:right;color:var(--ink-soft)}.en-ba-arrow{text-align:center;color:var(--ink-soft);font-size:.7rem}.en-ba-after{text-align:right;font-weight:700}.en-ba-delta{text-align:right;font-size:.72rem;font-weight:700}.en-ba-delta.up{color:var(--safe)}.en-ba-delta.down{color:var(--accent-red)}.en-flips{flex-direction:column;gap:5px;display:flex}.en-flips-section{flex-wrap:wrap;align-items:baseline;gap:4px;display:flex}.en-flips-label{text-transform:uppercase;letter-spacing:.14em;flex-shrink:0;width:70px;font-size:.6rem;font-weight:700}.en-flips-label.gain{color:var(--safe)}.en-flips-label.loss{color:var(--accent-red)}.en-flips-label.flip{color:var(--ink-soft)}.en-flip-pill{border:1px solid;border-radius:2px;padding:2px 6px;font-size:.72rem}.en-flip-pill.gain{color:var(--safe);background:#1a5c2a0f;border-color:#1a5c2a59}.en-flip-pill.loss{color:var(--accent-red);background:#9b1c1c0d;border-color:#9b1c1c59}.en-flip-pill.flip{color:var(--ink-mid);border-color:var(--ink-faint);background:#ffffff4d}.night-standings{flex-direction:column;gap:4px;display:flex}.night-standing{border:1px solid var(--ink-faint);background:#fff6;grid-template-columns:12px 1fr auto auto auto;align-items:center;gap:6px;padding:5px 8px;display:grid}.night-standing.is-player{border-color:var(--ink-mid);background:#7a60301a}.night-party-name{font-size:.82rem}.night-seats{font-size:1.1rem;font-weight:900}.night-seats-label{color:var(--ink-soft);font-size:.7rem}.majority-badge{letter-spacing:.1em;color:var(--safe);border:1.5px solid var(--safe);text-transform:uppercase;padding:1px 5px;font-size:.6rem;font-weight:900}.election-night-verdict{text-align:center;border:2px solid;padding:12px 14px;font-size:1rem;font-weight:700}.verdict-win{border-color:var(--safe);color:var(--safe);background:#1a5c2a14}.verdict-loss{border-color:var(--accent-red);color:var(--accent-red);background:#9b1c1c0f}.verdict-noc{border-color:var(--accent-gold);color:var(--accent-gold);background:#b8860b0f}.copy-results-btn{text-align:center;width:100%;padding:10px;font-size:.82rem;display:block}.governance-choices{flex-direction:column;gap:6px;margin:10px 0;display:flex}.governance-choice-btn{appearance:none;border:1px solid var(--ink-faint);text-align:left;cursor:pointer;background:#fff9;flex-direction:column;gap:3px;padding:10px 12px;transition:background .15s;display:flex}.governance-choice-btn:hover{border-color:var(--ink-mid);background:#ffffffe6}.governance-choice-btn strong{font-size:.88rem}.governance-choice-btn span{color:var(--ink-soft);font-size:.78rem}.governance-choice-btn small{color:var(--accent-gold);font-size:.7rem;font-style:italic}.governance-note{color:var(--ink-soft);margin:4px 0 0;font-size:.78rem}.coalition-modal{max-width:580px}.coalition-list{flex-direction:column;gap:6px;margin:10px 0;display:flex}.coalition-row{border:1px solid var(--ink-faint);background:#fff6;flex-direction:column;gap:6px;padding:8px 10px;transition:border-color .14s;display:flex}.coalition-row.can-majority{border-color:var(--safe)}.coalition-row.is-minority{border-color:var(--accent-gold);background:#b8860b0f}.coalition-row.is-rejected{opacity:.5}.coalition-row-top{align-items:center;gap:8px;display:flex}.coalition-swatch{border:1px solid #2c1f0e4d;border-radius:50%;flex-shrink:0;width:14px;height:14px}.coalition-row-info{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.coalition-row-label{font-size:.84rem;font-weight:700}.coalition-row-desc{color:var(--ink-soft);font-size:.66rem}.coalition-row-compat{white-space:nowrap;font-size:.72rem;font-weight:700}.coalition-rep-note{color:var(--accent-red);font-size:.6rem;font-weight:400}.coalition-result{border:1px solid;padding:4px 6px;font-size:.66rem}.coalition-result.is-rejected{color:var(--accent-red);background:#9b1c1c0a;border-color:#9b1c1c4d}.coalition-row-btn{appearance:none;border:1px solid var(--ink-faint);color:var(--ink);font:inherit;cursor:pointer;text-align:center;background:#ffffff80;width:100%;padding:4px 8px;font-size:.7rem;font-weight:700;transition:all .12s}.coalition-row-btn:hover{border-color:var(--ink-mid);background:#ffffffbf}.coalition-fate{border-top:2px solid var(--ink-faint);flex-direction:column;gap:6px;margin-top:4px;padding-top:8px;display:flex}.coalition-fate p{color:var(--ink-soft);margin:0;font-size:.68rem;line-height:1.4}.budget-modal{max-width:620px}.budget-whip-hint{opacity:.85;margin-top:.35rem}.budget-presets{flex-wrap:wrap;gap:6px;margin:0 0 12px;display:flex}.budget-categories{flex-direction:column;gap:8px;margin:10px 0;display:flex}.budget-row{flex-direction:column;gap:3px;display:flex}.budget-row-label{align-items:center;gap:8px;display:flex}.budget-cat-name{font-size:.78rem;font-weight:700}.budget-cat-blocs{flex-wrap:wrap;gap:3px;display:flex}.budget-bloc-tag{color:var(--ink-soft);text-transform:capitalize;background:#ffffff4d;border-radius:2px;padding:1px 4px;font-size:.55rem}.budget-row-controls{align-items:center;gap:4px;display:flex}.budget-adj-btn{appearance:none;border:1px solid var(--ink-faint);color:var(--ink);font:inherit;cursor:pointer;background:#fff6;padding:1px 5px;font-size:.6rem;font-weight:700}.budget-adj-btn:hover{background:#fff9}.budget-slider{accent-color:var(--ink-mid);flex:1}.budget-value{text-align:right;width:28px;font-size:.72rem;font-weight:700}.budget-bar-wrap{background:#00000014;border-radius:2px;height:4px;overflow:hidden}.budget-bar-fill{border-radius:2px;height:100%;transition:width .2s}.budget-summary{border:1px solid var(--ink-faint);text-align:center;background:#fff6;border-radius:4px;flex-direction:column;gap:6px;padding:10px;display:flex}.budget-summary.is-balanced{border-color:var(--safe);background:#1a5c2a0d}.budget-summary.is-unbalanced{border-color:var(--accent-red);background:#9b1c1c0a}.budget-summary-total{font-size:.8rem;font-weight:700}.budget-summary-delta{color:var(--accent-red);font-size:.68rem}.budget-summary-delta.balanced{color:var(--safe)}.gov-dashboard{max-width:640px}.gd-grid{grid-template-columns:1fr 1fr;gap:8px;margin:10px 0;display:grid}.gd-card{border:1px solid var(--ink-faint);background:#fff6;padding:8px 10px}.gd-card-label{text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft);margin-bottom:6px;font-size:.6rem}.gd-seats{flex-direction:column;gap:2px;display:flex}.gd-seat-row{align-items:center;gap:5px;font-size:.7rem;display:flex}.gd-seat-row.is-player{font-weight:700}.gd-swatch{border-radius:50%;flex-shrink:0;width:10px;height:10px}.gd-party-name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.gd-seat-count{font-weight:700}.gd-majority-line{text-align:right;color:var(--ink-soft);border-top:1px dotted var(--ink-faint);margin-top:3px;padding-top:3px;font-size:.6rem}.gd-budget-list{flex-direction:column;gap:3px;display:flex}.gd-budget-row{align-items:center;gap:5px;font-size:.64rem;display:flex}.gd-budget-name{white-space:nowrap;text-overflow:ellipsis;width:80px;font-size:.6rem;overflow:hidden}.gd-budget-bar-wrap{background:#0000000f;border-radius:3px;flex:1;height:6px;overflow:hidden}.gd-budget-bar{border-radius:3px;height:100%}.gd-budget-val{text-align:right;width:28px;font-size:.62rem;font-weight:700}.gd-decisions{flex-direction:column;gap:3px;max-height:140px;display:flex;overflow-y:auto}.gd-decision-row{gap:5px;font-size:.62rem;display:flex}.gd-decision-week{color:var(--ink-soft);white-space:nowrap}.gd-decision-text{min-width:0}.gd-party-stats{flex-direction:column;gap:4px;display:flex}.gd-stat{justify-content:space-between;font-size:.66rem;display:flex}.gd-stat-label{color:var(--ink-soft)}.gd-stat-value{font-weight:700}.gd-empty{color:var(--ink-soft);font-size:.62rem;font-style:italic}.empty-panel{text-align:center;flex-direction:column;grid-column:1/-1;justify-content:center;align-items:center;min-height:280px;display:flex}.empty-panel h2{margin:0 0 6px;font-size:1.5rem}.empty-panel p{color:var(--ink-soft);margin:0}.politician-actions-panel{flex-direction:column;gap:10px;display:flex}.pol-stats-bar{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.pol-stat{border:1px solid var(--rule);background:var(--paper);flex-direction:column;align-items:center;padding:6px 4px;display:flex}.pol-stat-label{text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft);font-size:.62rem}.pol-stat-value{color:var(--ink);font-size:.92rem;font-weight:700}.pol-stat-value.positive{color:var(--safe)}.pol-stat-value.negative{color:var(--danger,#c0392b)}.pol-traits-bar{border-bottom:1px solid var(--rule);flex-wrap:wrap;gap:6px;padding-bottom:6px;display:flex}.pol-trait-badge{border:1px solid var(--rule);color:var(--ink-mid);cursor:help;background:#0000000a;padding:2px 8px;font-size:.64rem;font-weight:600}.pol-ap-display{color:var(--ink-mid);text-align:center;border-bottom:1px solid var(--rule);padding:4px 0;font-size:.78rem}.pol-ap-display strong{color:var(--ink);font-size:.92rem}.pol-auto-indicator{color:var(--safe);margin-top:2px;font-size:.66rem;display:block}.pol-action-group{border:1px solid var(--rule);background:var(--paper);margin-bottom:8px}.pol-action-group.cat-grassroots{border-left:3px solid #27ae60}.pol-action-group.cat-comms{border-left:3px solid #2980b9}.pol-action-group.cat-political{border-left:3px solid #c0392b}.pol-group-header{text-transform:uppercase;letter-spacing:.08em;color:var(--ink-mid);border-bottom:1px solid var(--rule);padding:5px 10px;font-size:.66rem;font-weight:900}.pol-group-actions{flex-direction:column;display:flex}.pol-action-card{border-bottom:1px solid var(--ink-faint);cursor:pointer;padding:8px 10px;transition:background .12s}.pol-action-card:last-child{border-bottom:none}.pol-action-card:hover{background:#00000005}.pol-action-card.disabled{opacity:.4;cursor:not-allowed;pointer-events:none}.pol-action-card.is-auto{background:#27ae600a}.pol-action-top{align-items:center;gap:6px;display:flex}.pol-action-fire{appearance:none;font:inherit;cursor:pointer;text-align:left;background:0 0;border:none;flex:1;align-items:baseline;gap:6px;padding:0;display:flex}.pol-action-fire:disabled{cursor:not-allowed}.pol-action-name{color:var(--ink);font-size:.8rem;font-weight:700}.pol-action-cost{color:var(--ink-soft);font-size:.68rem}.pol-auto-btn{border:1px solid var(--ink-faint);color:var(--ink-faint);font:inherit;letter-spacing:.08em;text-transform:uppercase;cursor:pointer;background:0 0;border-radius:3px;margin-left:auto;padding:2px 7px;font-size:.58rem;font-weight:700;transition:all .15s}.pol-auto-btn:hover{border-color:var(--ink-soft);color:var(--ink-soft)}.pol-auto-btn.active{background:var(--safe);border-color:var(--safe);color:#fff}.pol-auto-btn.active:hover{opacity:.85}.pol-action-meta{flex-wrap:wrap;gap:8px;margin-top:3px;font-size:.66rem;display:flex}.pol-action-effect{color:var(--safe);font-weight:600}.pol-action-risk{color:var(--danger,#c0392b);font-weight:600}.pol-action-trait{color:#8e44ad;font-weight:600}.pol-result-flash{border:1px solid var(--rule);background:var(--paper);padding:8px 10px;font-size:.78rem}.pol-result-flash.success{border-left:3px solid var(--safe)}.pol-result-flash.backfire{border-left:3px solid var(--danger,#c0392b)}.pol-result-flash p{margin:0 0 4px}.pol-result-deltas{flex-wrap:wrap;gap:8px;display:flex}.pol-result-deltas span{font-size:.7rem;font-weight:600}.delta-pos{color:var(--safe)}.delta-neg{color:var(--danger,#c0392b)}.career-tracker{padding:8px 0}.career-tier-bar{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex;position:relative}.career-tier-bar:before{content:"";background:var(--rule);z-index:0;height:2px;position:absolute;top:50%;left:0;right:0}.career-tier-step{z-index:1;flex-direction:column;align-items:center;gap:4px;display:flex;position:relative}.tier-dot{background:var(--paper);border:2px solid var(--rule);border-radius:50%;width:10px;height:10px}.career-tier-step.achieved .tier-dot{background:var(--safe);border-color:var(--safe)}.career-tier-step.current .tier-dot{box-shadow:0 0 0 3px #1a5c2a40}.tier-label{color:var(--ink-soft);text-align:center;max-width:55px;font-size:.58rem}.career-tier-step.current .tier-label{color:var(--ink);font-weight:700}.career-current{border-bottom:1px solid var(--rule);justify-content:space-between;align-items:baseline;margin-bottom:8px;padding-bottom:8px;display:flex}.career-current strong{font-size:.88rem}.career-terms{color:var(--ink-soft);font-size:.72rem}.career-next-title{color:var(--ink-mid);margin-bottom:6px;font-size:.76rem;font-weight:700}.career-reqs{flex-direction:column;gap:3px;display:flex}.career-req{align-items:center;gap:6px;font-size:.72rem;display:flex}.career-req.met{color:var(--safe)}.career-req:not(.met){color:var(--ink-soft)}.req-check{text-align:center;width:14px;font-weight:700}.req-label{flex:1}.req-progress{font-weight:600}.career-promote-btn{width:100%;margin-top:10px}.career-max{color:var(--safe);text-align:center;padding:8px 0;font-size:.78rem;font-style:italic}.relationships-panel{padding:4px 0}.rel-grid{flex-direction:column;gap:4px;display:flex}.rel-card{border:1px solid var(--rule);background:var(--paper);text-align:left;width:100%;padding:8px 10px;transition:all .14s}.rel-card:hover{background:#00000005}.rel-card-toggle{appearance:none;width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;padding:0;display:block}.rel-card.ally{border-left:3px solid var(--safe)}.rel-card.rival{border-left:3px solid var(--danger,#c0392b)}.rel-card.mentor{border-left:3px solid #8e44ad}.rel-card-header{align-items:center;gap:6px;margin-bottom:4px;display:flex}.rel-name{font-size:.78rem;font-weight:700}.rel-party-dot{border-radius:50%;width:8px;height:8px}.rel-strength-bar{background:var(--rule);width:100%;height:4px;margin-bottom:4px;display:block}.rel-strength-fill{height:100%;transition:width .2s;display:block}.rel-strength-fill.positive{background:var(--safe)}.rel-strength-fill.negative{background:var(--danger,#c0392b)}.rel-meta{justify-content:space-between;align-items:baseline;display:flex}.rel-type-badge{text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft);font-size:.62rem}.rel-strength-num{color:var(--ink-mid);font-size:.68rem;font-weight:600}.rel-history{border-top:1px solid var(--rule);margin-top:6px;padding-top:4px;display:block}.rel-history-item{color:var(--ink-soft);padding:1px 0;font-size:.66rem;display:block}.rel-history-item.is-positive{color:var(--safe)}.rel-history-item.is-negative{color:var(--danger,#c0392b)}.rel-actions{gap:5px;margin-top:6px;display:flex}.rel-actions button{border:1px solid var(--ink-faint);background:var(--paper-warm);color:var(--ink);font:inherit;cursor:pointer;padding:4px 6px;font-size:.63rem}.rel-actions button:disabled{opacity:.4;cursor:not-allowed}.rel-actions .rel-antagonise{color:var(--danger,#c0392b)}.rel-action-result{border-left:3px solid var(--ink-faint);background:var(--paper-warm);color:var(--ink-mid);margin:6px 0 0;padding:5px 6px;font-size:.68rem}.rel-action-result.success{border-color:var(--safe)}.rel-summary{color:var(--ink-soft);margin:0 0 6px;font-size:.66rem}.rel-show-all{border:1px solid var(--ink-faint);width:100%;color:var(--ink-mid);cursor:pointer;font:inherit;background:0 0;margin-top:6px;padding:5px;font-size:.66rem}.council-chamber-modal{max-width:600px;max-height:85vh;padding:24px;overflow-y:auto}.council-chamber-modal h2{overflow-wrap:anywhere;min-width:0;margin:0 0 4px}.council-subtitle{color:var(--ink-soft);margin:0 0 16px;font-size:.78rem}.council-session-kicker{letter-spacing:.04em;text-transform:uppercase;color:var(--ink-mid);margin:-8px 0 14px;font-size:.68rem;font-weight:700}.council-motions{flex-direction:column;gap:12px;display:flex}.council-motion-card{border:1px solid var(--rule);background:var(--paper);padding:12px}.council-motion-card.passed{border-left:3px solid var(--safe)}.council-motion-card.failed{border-left:3px solid var(--danger,#c0392b)}.motion-header{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px 8px;margin-bottom:4px;display:flex}.motion-category{text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft);background:#0000000a;padding:2px 6px;font-size:.62rem}.motion-proposer{color:var(--ink-soft);font-size:.68rem;font-style:italic}.motion-headline{overflow-wrap:anywhere;min-width:0;margin:4px 0;font-size:.92rem;font-weight:700}.motion-stakes{border:1px solid var(--ink-faint);background:#2c1f0e08;margin:8px 0;padding:8px 10px;font-size:.68rem;line-height:1.35}.motion-stakes p{margin:0 0 3px}.motion-stakes p:last-child{margin-bottom:0}.motion-stakes.cost-high{border-left:3px solid var(--danger,#c0392b)}.motion-stakes.cost-medium{border-left:3px solid var(--ink-mid)}.motion-stakes.cost-low{border-left:3px solid var(--safe)}.council-agenda-tabs{grid-template-columns:1fr 1fr;gap:6px;margin:0 0 10px;display:grid}.council-agenda-tab{text-align:left;border:1px solid var(--rule);background:var(--paper);cursor:pointer;min-width:0;padding:6px 8px}.council-agenda-tab.is-active{border-color:var(--ink);background:#2c1f0e0f}.council-agenda-tab:disabled{opacity:.55;cursor:not-allowed}.council-agenda-kicker{letter-spacing:.04em;text-transform:uppercase;color:var(--ink-mid);font-size:.58rem;font-weight:700;display:block}.council-agenda-title{text-overflow:ellipsis;white-space:nowrap;font-size:.7rem;font-weight:600;display:block;overflow:hidden}.final-party-tallies{flex-wrap:wrap;gap:8px;margin:0 0 8px;font-size:.66rem;display:flex}.final-party-tally{align-items:center;gap:4px;display:inline-flex}.motion-description{color:var(--ink-mid);margin:0 0 8px;font-size:.76rem}.motion-whip{margin-bottom:8px}.whip-indicator{border:1px solid var(--rule);padding:2px 8px;font-size:.68rem;font-weight:600}.whip-indicator.aye{color:var(--safe);border-color:var(--safe)}.whip-indicator.nay{color:var(--danger,#c0392b);border-color:var(--danger,#c0392b)}.whip-indicator.free{color:var(--ink-soft)}.motion-lobby{margin-bottom:8px}.lobby-label{color:var(--ink-soft);margin-bottom:4px;font-size:.68rem;display:block}.lobby-targets{flex-wrap:wrap;gap:4px;display:flex}.lobby-btn{appearance:none;border:1px solid var(--rule);background:var(--paper);font:inherit;cursor:pointer;align-items:center;gap:4px;padding:3px 8px;font-size:.68rem;transition:all .1s;display:flex}.lobby-btn:hover{border-color:var(--ink-mid);background:#0000000a}.lobby-dot{border-radius:50%;width:6px;height:6px}.motion-vote-buttons{gap:8px;display:flex}.vote-btn{appearance:none;border:1px solid var(--rule);background:var(--paper);font:inherit;cursor:pointer;padding:6px 16px;font-size:.78rem;font-weight:700;transition:all .14s}.vote-btn.aye:hover{background:var(--safe);color:#fff;border-color:var(--safe)}.vote-btn.nay:hover{background:var(--danger,#c0392b);color:#fff;border-color:var(--danger,#c0392b)}.vote-btn.abstain:hover{background:var(--ink-soft);color:#fff}.motion-your-vote{color:var(--ink-mid);font-size:.78rem}.rebellion-badge{color:var(--danger,#c0392b);border:1px solid var(--danger,#c0392b);text-transform:uppercase;margin-left:8px;padding:1px 5px;font-size:.62rem;font-weight:700;display:inline-block}.motion-result{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.result-badge{padding:2px 8px;font-size:.72rem;font-weight:700}.result-badge.passed{color:var(--safe);border:1px solid var(--safe)}.result-badge.failed{color:var(--danger,#c0392b);border:1px solid var(--danger,#c0392b)}.result-tally{color:var(--ink-soft);font-size:.72rem}.council-propose-section{margin-bottom:12px}.propose-motion-btn{appearance:none;border:1px dashed var(--ink-soft);font:inherit;color:var(--ink-mid);cursor:pointer;background:0 0;width:100%;padding:8px 16px;font-size:.76rem;font-weight:600;transition:all .14s}.propose-motion-btn:hover{border-color:var(--ink);color:var(--ink);background:#00000005}.council-session-summary{border:1px solid var(--danger,#c0392b);background:#c0392b0d;margin-top:12px;padding:8px 10px}.rebellion-summary{color:var(--danger,#c0392b);margin:0;font-size:.78rem;font-weight:600}.council-actions{text-align:center;margin-top:16px}.proposer-dot{vertical-align:middle;border-radius:50%;width:8px;height:8px;margin-right:4px;display:inline-block}.party-whip-row{flex-wrap:wrap;gap:6px;margin:10px 0;display:flex}.party-whip-badge{border:1px solid var(--rule);background:var(--paper);flex-wrap:wrap;align-items:center;gap:4px;min-width:0;max-width:100%;padding:3px 8px;font-size:.64rem;font-weight:600;display:inline-flex}.pwb-reason{color:var(--ink-soft);flex:100%;font-size:.58rem;font-weight:500}.party-whip-badge.whip-aye{border-color:var(--safe)}.party-whip-badge.whip-nay{border-color:var(--danger,#c0392b)}.pwb-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.pwb-name{color:var(--ink-mid);text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.pwb-direction{text-transform:uppercase;text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:900;overflow:hidden}.whip-aye .pwb-direction{color:var(--safe)}.whip-nay .pwb-direction{color:var(--danger,#c0392b)}.whip-free .pwb-direction{color:var(--ink-soft)}.councillor-stance-section{margin:12px 0}.stance-projection{border:1px solid var(--rule);background:#00000005;flex-wrap:wrap;align-items:baseline;gap:8px;margin-bottom:8px;padding:6px 10px;font-size:.74rem;display:flex}.proj-label{color:var(--ink);font-weight:700}.proj-aye{color:var(--safe);font-weight:600}.proj-nay{color:var(--danger,#c0392b);font-weight:600}.proj-undecided{color:var(--ink-soft)}.proj-verdict{color:var(--ink-mid);font-style:italic}.stance-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:6px;display:grid}.stance-card{border:1px solid var(--rule);background:var(--paper);padding:6px 8px;font-size:.7rem}.stance-card.stance-aye{border-left:3px solid var(--safe)}.stance-card.stance-lean_aye{border-left:3px solid #27ae6066}.stance-card.stance-nay{border-left:3px solid var(--danger,#c0392b)}.stance-card.stance-lean_nay{border-left:3px solid #c0392b66}.stance-card.stance-undecided{border-left:3px solid var(--ink-soft)}.stance-card-top{align-items:center;gap:4px;display:flex}.stance-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.stance-name{white-space:nowrap;text-overflow:ellipsis;font-size:.72rem;font-weight:700;overflow:hidden}.stance-card-meta{justify-content:space-between;margin-top:2px;display:flex}.stance-reason{color:var(--ink-soft);margin-top:2px;font-size:.57rem;display:block}.stance-party{color:var(--ink-soft);font-size:.62rem}.stance-prediction{text-transform:uppercase;font-size:.62rem;font-weight:700}.stance-prediction.aye,.stance-prediction.lean_aye{color:var(--safe)}.stance-prediction.nay,.stance-prediction.lean_nay{color:var(--danger,#c0392b)}.stance-prediction.undecided{color:var(--ink-soft)}.stance-rel-bar{background:var(--ink-faint);border-radius:1px;height:3px;margin-top:3px}.stance-rel-fill{border-radius:1px;height:100%}.stance-rel-fill.positive{background:var(--safe)}.stance-rel-fill.negative{background:var(--danger,#c0392b)}.stance-lobby-btn{appearance:none;border:1px solid var(--ink-soft);font:inherit;cursor:pointer;text-transform:uppercase;letter-spacing:.05em;background:0 0;width:100%;margin-top:4px;padding:2px 8px;font-size:.6rem;font-weight:700;transition:all .1s}.stance-lobby-btn:hover{border-color:var(--ink);background:#0000000a}.proposal-form{border:1px solid var(--rule);background:var(--paper);margin-top:12px;padding:12px}.proposal-form h4{margin:0 0 10px;font-size:.88rem}.proposal-field{margin-bottom:8px}.proposal-field label{text-transform:uppercase;letter-spacing:.04em;color:var(--ink-mid);margin-bottom:3px;font-size:.68rem;font-weight:600;display:block}.proposal-field input[type=text],.proposal-field select{box-sizing:border-box;width:100%;font:inherit;border:1px solid var(--rule);background:#fff;padding:6px 8px;font-size:.8rem}.proposal-sliders{flex-direction:column;gap:8px;margin:10px 0;display:flex}.proposal-slider label{color:var(--ink);justify-content:space-between;font-size:.72rem;font-weight:600;display:flex}.slider-val{color:var(--ink-soft);font-weight:400}.proposal-slider input[type=range]{width:100%;margin:3px 0}.slider-labels{color:var(--ink-soft);justify-content:space-between;font-size:.58rem;display:flex}.proposal-actions{gap:8px;margin-top:10px;display:flex}.pol-outcome-modal{text-align:center;max-width:420px;padding:32px 24px}.pol-outcome-modal h2{margin:0 0 12px;font-size:1.3rem}.pol-outcome-modal p{color:var(--ink-mid);margin:0 0 12px;font-size:.88rem}.pol-outcome-modal button{margin-top:12px}.pol-outcome-actions{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.council-composition{border:1px solid var(--ink-border);background:var(--paper-warm);box-shadow:var(--shadow);padding:10px}.council-composition-head{justify-content:space-between;align-items:start;gap:8px;display:flex}.council-composition-head strong{font-size:.78rem;display:block}.council-dots{flex-wrap:wrap;gap:6px;padding:9px 0 7px;display:flex}.council-dot{border:1px solid #00000040;border-radius:50%;width:15px;height:15px;display:block;position:relative;box-shadow:inset 0 0 0 1px #ffffff40}.council-dot--gov{box-shadow:0 0 0 2px #ffffffd9, 0 0 0 3px var(--ink-soft)}.council-dot--player{outline:2px solid var(--accent-gold);outline-offset:2px}@media (hover:hover){.council-dot[data-tooltip]:after{content:attr(data-tooltip);background:var(--paper,#f8f0dd);color:var(--ink,#2c1f0e);border:1px solid var(--ink-mid,#2c1f0e73);white-space:nowrap;pointer-events:none;opacity:0;z-index:5;padding:4px 8px;font-size:.62rem;font-weight:600;line-height:1.25;transition:opacity .12s,transform .12s;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%)translateY(2px);box-shadow:0 2px 6px #2c1f0e1f}.council-dot[data-tooltip]:hover:after,.council-dot[data-tooltip]:focus-visible:after{opacity:1;transform:translate(-50%)translateY(0)}}.council-composition-meta{color:var(--ink-mid);gap:2px;font-size:.66rem;display:grid}.ward-switch-modal{width:min(600px,100vw - 28px);max-height:min(660px,100vh - 28px);overflow:auto}.ward-switch-modal h2{margin:0 0 6px}.ward-switch-modal>p{color:var(--ink-mid);margin:0 0 12px}.ward-switch-list{grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:7px;margin:12px 0;display:grid}.ward-switch-option{text-align:left;border:1px solid var(--ink-border);background:var(--paper);color:var(--ink);cursor:pointer;padding:8px}.ward-switch-option:hover:not(:disabled){border-color:var(--ink);background:var(--paper-warm)}.ward-switch-option:disabled{cursor:default;opacity:.62}.ward-switch-option.is-current{border-left:4px solid var(--accent-gold)}.ward-switch-name,.ward-switch-status,.ward-switch-meta{display:block}.ward-switch-name{font-weight:800}.ward-switch-status{margin-top:2px;font-size:.68rem;font-weight:700}.ward-switch-status.is-open{color:var(--safe)}.ward-switch-status.is-party-seat{color:var(--accent-gold)}.ward-switch-meta{color:var(--ink-soft);margin-top:2px;font-size:.64rem}@media (width<=720px){body{font-size:12.5px}.newspaper-shell{padding:3px}.masthead-inner{flex-direction:column;gap:3px}.masthead h1{font-size:1.2rem}.masthead-meta{gap:8px;font-size:.68rem}.game-topbar{z-index:50;flex-flow:wrap;align-items:center;gap:5px;padding:5px 7px;position:sticky;top:0}.topbar-party-block{border-left:none;flex:100%;padding-left:0}.topbar-party-block strong{font-size:.8rem}.topbar-party-block small{font-size:.65rem}.party-initials-badge{width:26px;height:26px;font-size:.65rem}.topbar-ap-block{flex:auto;gap:4px}.topbar-countdown{flex:auto;padding:2px 6px}.countdown-number{font-size:1rem}.countdown-label{font-size:.52rem}.topbar-actions{justify-content:stretch;gap:4px;width:100%;margin-top:3px}.topbar-actions button{flex:1;padding:7px 8px;font-size:.7rem}.command-overflow>div{left:0;right:auto}.dashboard-layout{gap:5px}.seat-bar{gap:4px;padding:3px 6px 5px}.seat-bar-track{height:18px}.seat-bar-gov-label{padding:1px 6px;font-size:.56rem}.seat-bar-meta{font-size:.52rem}.seat-bar-action-btn{padding:2px 4px;font-size:.55rem}.panel{padding:6px 7px}.panel-kicker{margin-bottom:2px;font-size:.56rem}.map-panel-header h3{font-size:.92rem}.map-svg{height:min(50vw,240px);min-height:180px}.map-mode-row{gap:2px}.mode-btn{padding:3px 6px;font-size:.62rem}.currents-strip{gap:2px}.current-pill{padding:1px 5px;font-size:.62rem}.focus-ward-poll.is-battleground{border-width:1px}.fwp-header{padding:4px 7px 3px}.fwp-targeting-label{font-size:.54rem}.fwp-ward-name{font-size:.78rem}.fwp-hint{font-size:.54rem}.fwp-cand-row{min-height:28px}.fwp-cand-initials{width:20px;height:20px;font-size:.54rem}.fwp-cand-name{font-size:.68rem}.fwp-cand-party{font-size:.56rem}.fwp-cand-bar-col{padding:3px 7px 3px 5px}.fwp-cand-bar-track{height:18px}.fwp-cand-pct{font-size:.7rem}.ward-cand-row{min-height:28px}.ward-cand-initials{width:20px;height:20px;font-size:.54rem}.ward-cand-name{font-size:.68rem}.ward-cand-party{font-size:.56rem}.ward-cand-bar-col{padding:3px 7px 3px 5px}.ward-cand-bar-track{height:18px}.ward-cand-pct{font-size:.7rem}.fwp-status{padding:3px 7px;font-size:.64rem}.campaign-no-ward{padding:6px 0;font-size:.68rem}.action-cards{gap:3px}.action-card{border-width:1px}.ac-expand-toggle{padding:5px 7px}.ac-name{font-size:.72rem}.ac-desc{font-size:.64rem}.ac-cost{font-size:.6rem}.ac-permanent-toggle{padding:2px 6px;font-size:.58rem}button.action-card{padding:5px 7px}button.action-card .ac-name{font-size:.72rem}button.action-card .ac-desc{font-size:.64rem}.ac-config{padding:5px 7px 6px}.ac-select{padding:4px 5px;font-size:.68rem}.event-card{padding:5px 7px}.event-headline{font-size:.76rem}.event-desc{font-size:.66rem}.event-choice-btn{padding:5px 7px}.event-choice-btn strong{font-size:.7rem}.event-choice-btn span{font-size:.64rem}.constituency-panel{gap:5px}.constituency-panel h3{font-size:.85rem}.constituency-panel h4,.ward-mood{font-size:.68rem}.detail-strip{grid-template-columns:1fr;gap:2px;padding:4px 0}.detail-strip-item strong{font-size:.7rem}.detail-strip-item .label{font-size:.52rem}.detail-strip-item small{font-size:.6rem}.bloc-row{padding:2px 0;font-size:.66rem}.bloc-label{width:80px}.bloc-pct{width:26px;font-size:.64rem}.ward-fit-axes{gap:3px}.ward-fit-axis-row{grid-template-columns:48px 1fr 14px;gap:4px}.wfa-label{font-size:.56rem}.history-item{font-size:.62rem}.alliance-pact-row{padding:3px 5px;font-size:.64rem}.alliance-pacts-display{gap:1px}.pact-table-header,.pact-table-row{grid-template-columns:20px 1fr 18px 1fr 44px 44px 28px;gap:2px;padding:2px 4px;font-size:.58rem}.pact-td-gain{font-size:.56rem}.alliance-pact-entries .pact-table-header,.alliance-pact-entries .pact-table-row{grid-template-columns:1fr 18px 1fr 40px 40px}.permanent-drain-notice{gap:4px;padding:3px 6px;font-size:.64rem}.pdn-stop-all{padding:1px 4px;font-size:.56rem}.fwp-auto-status{gap:3px;padding:3px 6px;font-size:.6rem}.fwp-auto-campaign{padding:1px 3px;font-size:.56rem}.fwp-auto-boost{font-size:.58rem}.key-stats-row{grid-template-columns:1fr}.election-night-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}.action-flash{max-width:calc(100vw - 16px);padding:8px 10px;font-size:.68rem;bottom:8px;left:8px;right:8px}.flash-body{min-width:0}.flash-body strong{font-size:.7rem}.flash-body span{word-break:break-word;font-size:.66rem}.npc-proposal-prompt{gap:4px;padding:6px}.npc-proposal-header{font-size:.7rem}.npc-proposal-details{font-size:.64rem}.npc-proposal-actions .ink-button{padding:5px 8px;font-size:.64rem}}@media (width<=600px){.setup-party-edit{grid-template-columns:1fr}.setup-edit-colour{flex-direction:row;align-items:center}}@media (width>=1101px){body{height:100vh;overflow:hidden}.newspaper-shell{flex-direction:column;height:100vh;padding:6px 10px;display:flex;overflow:hidden}.front-page{flex:1;min-height:0;overflow:hidden}.dashboard-layout{flex:1;grid-template:"seatbar seatbar""map right"1fr/minmax(0,1.7fr) minmax(300px,.85fr);gap:6px;min-height:0;overflow:hidden}.map-panel{min-height:0;overflow:hidden}.map-panel .map-svg{flex:1;height:auto;min-height:0}.right-column{scrollbar-width:thin;scrollbar-color:var(--ink-faint) transparent;min-height:0;max-height:100%;padding-right:4px;overflow-y:auto}.right-column::-webkit-scrollbar{width:5px}.right-column::-webkit-scrollbar-thumb{background:var(--ink-faint);border-radius:3px}}.ink-button.advance-week-btn{border:2px solid var(--ink);letter-spacing:.06em;white-space:nowrap;background:linear-gradient(#7a5430 0%,#4a3118 100%);padding:10px 22px;font-size:.95rem;font-weight:900;transition:all .14s;box-shadow:0 3px 10px #2c1f0e59}.ink-button.advance-week-btn:hover{background:linear-gradient(#9a6840 0%,#5c3f1e 100%);transform:translateY(-1px);box-shadow:0 5px 14px #2c1f0e73}.ink-button.save-btn{padding:5px 7px;font-size:.85rem;line-height:1}.ac-permanent-row{border-top:1px solid var(--ink-faint);background:#fff3;padding:4px 10px 6px}.ac-permanent-toggle{appearance:none;border:1px dashed var(--ink-faint);color:var(--ink-soft);font:inherit;letter-spacing:.06em;cursor:pointer;text-transform:uppercase;text-align:left;background:0 0;width:100%;padding:3px 8px;font-size:.66rem;font-weight:700;transition:all .13s}.ac-permanent-toggle:hover{border-color:var(--ink-mid);color:var(--ink-mid);background:#7a603014}.ac-permanent-toggle.is-on{border-style:solid;border-color:var(--safe);color:var(--safe);background:#1a5c2a14}.action-card.is-permanent-active{background:#1a5c2a0a;border-color:#1a5c2a73}.permanent-drain-notice{color:var(--safe);background:#1a5c2a12;border:1px solid #1a5c2a40;align-items:center;gap:6px;padding:5px 8px;font-size:.72rem;display:flex}.pdn-icon{flex-shrink:0;font-size:.9rem}.pdn-text{flex:1;min-width:0;font-weight:600}.pdn-stop-all{appearance:none;color:var(--safe);font:inherit;cursor:pointer;white-space:nowrap;background:#ffffff4d;border:1px solid #1a5c2a4d;flex-shrink:0;padding:2px 6px;font-size:.62rem;font-weight:700;transition:all .12s}.pdn-stop-all:hover{border-color:var(--accent-red);color:var(--accent-red);background:#9b1c1c14}.alliance-pacts-display{flex-direction:column;gap:2px;display:flex}.alliance-pact-row{color:var(--ink-mid);background:#b8860b14;border:1px solid #b8860b40;align-items:center;gap:5px;padding:4px 7px;font-size:.7rem;display:flex}.alliance-pact-indicator{flex-shrink:0;font-size:.85rem}.alliance-pact-text{flex:1;min-width:0;line-height:1.3}.alliance-pact-text strong{color:var(--ink)}.alliance-boost{color:var(--safe);white-space:nowrap;font-size:.65rem;font-weight:600}.alliance-break-btn{appearance:none;border:1px solid var(--ink-faint);color:var(--ink-soft);font:inherit;cursor:pointer;background:#ffffff4d;flex-shrink:0;padding:1px 5px;font-size:.65rem;font-weight:700;line-height:1;transition:all .12s}.alliance-break-btn:hover{border-color:var(--accent-red);color:var(--accent-red);background:#9b1c1c14}.alliance-pact-row.is-npc{opacity:.75;font-size:.65rem}.negotiation-card{border:1px solid var(--ink-faint);background:#fff6;flex-direction:column;gap:8px;padding:8px;display:flex}.neg-header{color:var(--ink-mid);font-size:.7rem;line-height:1.4}.neg-header strong{color:var(--ink)}.neg-no-deal{color:var(--accent-red);background:#9b1c1c0d;border:1px solid #9b1c1c33;padding:6px 8px;font-size:.66rem;line-height:1.4}.neg-list{flex-direction:column;gap:2px;max-height:200px;display:flex;overflow-y:auto}.neg-row{border:1px solid var(--ink-faint);cursor:pointer;background:#ffffff40;align-items:center;gap:6px;padding:4px 6px;font-size:.66rem;transition:background .1s;display:flex}.neg-row:hover{background:#ffffff80}.neg-row.is-checked{border-color:var(--safe);background:#1a5c2a0f}.neg-row.is-rejected{opacity:.7}.neg-chk{align-items:center;display:flex}.neg-chk input{cursor:pointer;margin:0}.neg-ward{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-weight:600;overflow:hidden}.neg-share{color:var(--ink-soft);font-size:.58rem}.neg-gain{color:var(--ink-soft);white-space:nowrap;font-size:.56rem}.neg-accept{white-space:nowrap;margin-left:auto;font-size:.62rem;font-weight:700}.neg-accept.is-reject{color:var(--accent-red)}.neg-summary{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:4px 0;display:flex}.npc-proposal-prompt{background:#b8860b1a;border:1.5px solid #b8860b59;flex-direction:column;gap:6px;padding:8px;display:flex}.npc-proposal-header{align-items:center;gap:6px;font-size:.78rem;display:flex}.npc-proposal-header strong{color:var(--ink)}.npc-proposal-icon{flex-shrink:0;font-size:1rem}.npc-proposal-details{color:var(--ink-soft);font-size:.7rem}.npc-proposal-details em{color:var(--ink-mid);font-style:normal;font-weight:600}.npc-proposal-actions{gap:6px;display:flex}.npc-proposal-actions .ink-button{flex:1}.alliance-no-suggestions{color:var(--ink-soft);padding:4px 0;font-size:.68rem;font-style:italic}.alliance-tabs{gap:3px;margin-bottom:2px;display:flex}.alliance-tab{appearance:none;border:1px solid var(--ink-faint);color:var(--ink-mid);font:inherit;cursor:pointer;text-transform:uppercase;letter-spacing:.04em;background:#ffffff4d;flex:1;padding:4px 6px;font-size:.66rem;font-weight:700;transition:all .12s}.alliance-tab.is-active{background:var(--ink-mid);color:#f8f0dd;border-color:var(--ink)}.pact-table-header{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft);z-index:1;background:#fff3;grid-template-columns:24px 1fr 24px 1fr 52px 52px 32px;align-items:center;gap:4px;padding:3px 6px;font-size:.58rem;display:grid;position:sticky;top:0}.pact-th-chk,.pact-th-arrow{text-align:center}.pact-th-gain{text-align:right}.pact-th-acc{text-align:center}.pact-table-row{border-bottom:1px solid var(--ink-faint);cursor:pointer;background:#ffffff26;grid-template-columns:24px 1fr 24px 1fr 52px 52px 32px;align-items:center;gap:4px;padding:3px 6px;font-size:.66rem;transition:background .1s;display:grid}.pact-table-row:hover{background:#ffffff73}.pact-table-row.is-selected{border-color:var(--safe);background:#1a5c2a0f}.pact-table-row input[type=checkbox]{cursor:pointer;margin:0}.pact-td-chk{text-align:center}.pact-td-ward{flex-direction:column;min-width:0;line-height:1.2;display:flex}.pact-td-ward-name{font-weight:600}.pact-td-ward-share{color:var(--ink-soft);font-size:.56rem}.pact-td-arrow{text-align:center;color:var(--ink-soft);font-size:.75rem}.pact-td-gain{text-align:right;justify-content:flex-end;align-items:center;gap:2px;font-size:.62rem;font-weight:600;display:flex}.pact-td-acc{text-align:center;font-size:.7rem}.alliance-pact-card{background:#b8860b14;border:1px solid #b8860b40}.alliance-pact-summary{align-items:center;gap:5px;padding:4px 7px;display:flex}.alliance-pact-actions{flex-shrink:0;align-items:center;gap:2px;display:flex}.alliance-expand-btn{appearance:none;border:1px solid var(--ink-faint);color:var(--ink-soft);font:inherit;cursor:pointer;background:#ffffff4d;padding:1px 4px;font-size:.55rem;line-height:1}.alliance-expand-btn:hover{background:#fff9}.alliance-break-confirm{flex-wrap:wrap;align-items:center;gap:4px;font-size:.58rem;display:flex}.alliance-break-confirm-text{color:var(--ink-soft)}.alliance-break-btn.is-confirm{border-color:var(--accent-red);color:var(--accent-red);background:#9b1c1c14;padding:1px 5px;font-weight:700}.alliance-break-btn.is-cancel{border-color:var(--ink-faint);color:var(--ink-soft);background:#ffffff4d;padding:1px 5px}.alliance-pact-entries{border-top:1px solid #b8860b33;flex-direction:column;gap:1px;padding:3px 7px;display:flex}.alliance-pact-entries .pact-table-header{background:#ffffff1a;grid-template-columns:1fr 24px 1fr 48px 48px;position:static}.alliance-pact-entries .pact-table-row{cursor:default;background:0 0;grid-template-columns:1fr 24px 1fr 48px 48px}.alliance-pact-entries .pact-table-row:hover{background:#ffffff26}.action-section-label{flex-direction:column;gap:1px;padding:5px 0 2px;display:flex}.asl-kicker{text-transform:uppercase;letter-spacing:.18em;color:var(--safe);font-size:.6rem;font-weight:700}.asl-desc{color:var(--ink-soft);font-size:.72rem;font-style:italic}.action-card-gov:not(.is-disabled):not(.is-permanent-active){background:#f0fff073;border-color:#1a5c2a33}.action-card-gov:not(.is-disabled):hover{background:#f0fff0bf;border-color:#1a5c2a59}.incumbent-ward-badge{letter-spacing:.1em;border:1.5px solid var(--safe);color:var(--safe);text-transform:uppercase;background:#2f6e2f17;border-radius:2px;align-items:center;padding:1px 5px;font-size:.55rem;font-weight:900;display:inline-flex}.battleground-badge{letter-spacing:.1em;border:1.5px solid var(--battleground);color:var(--battleground);text-transform:uppercase;background:#e65c0012;border-radius:2px;align-items:center;padding:1px 5px;font-size:.55rem;font-weight:900;display:inline-flex}.your-ward-badge{letter-spacing:.1em;border:1.5px solid var(--safe);color:var(--safe);text-transform:uppercase;background:#27ae6012;border-radius:2px;align-items:center;padding:1px 5px;font-size:.55rem;font-weight:900;display:inline-flex}.pol-ward-info-strip{color:var(--ink-mid);border-bottom:1px solid var(--rule);flex-wrap:wrap;gap:12px;margin-bottom:4px;padding:4px 0;font-size:.72rem;display:flex}.stats-modal{flex-direction:column;width:calc(100vw - 32px);max-width:1400px;max-height:96vh;padding:10px 16px;display:flex;overflow:hidden}.stats-modal-header{border-bottom:2px solid var(--ink-mid);flex-shrink:0;margin-bottom:6px;padding-bottom:6px}.stats-modal-title-row{justify-content:space-between;align-items:center;gap:12px;display:flex}.stats-modal-title-row h2{margin:0;font-size:1.2rem}.stats-modal-meta{color:var(--ink-soft);flex-wrap:wrap;align-items:center;gap:8px 10px;font-size:.75rem;display:flex}.stats-modal-body{scrollbar-width:thin;scrollbar-color:var(--ink-faint) transparent;flex-direction:column;flex:1;gap:6px;padding-right:4px;display:flex;overflow-y:auto}.stats-modal-body::-webkit-scrollbar{width:5px}.stats-modal-body::-webkit-scrollbar-thumb{background:var(--ink-faint);border-radius:3px}.stats-section{flex-direction:column;gap:3px;display:flex}.stats-section-label{text-transform:uppercase;letter-spacing:.16em;color:var(--ink-soft);font-size:.62rem;font-weight:700}.stats-seat-bar{border:1px solid var(--ink-faint);background:#0000000d;height:24px;display:flex;position:relative;overflow:hidden}.stats-seat-bar-seg{min-width:2px;height:100%;transition:width .4s}.stats-seat-bar-seg.is-player{outline-offset:-2px;outline:2px solid #0000004d}.stats-seat-bar-seg.empty{background:#00000012}.stats-seat-majority{background:var(--ink);z-index:2;width:2px;position:absolute;top:0;bottom:0;transform:translate(-1px)}.stats-two-col{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);align-items:start;gap:6px;display:grid}.stats-standings{flex-direction:column;gap:1px;display:flex}.stats-stand-row{border:1px solid var(--ink-faint);background:#fff6;grid-template-columns:24px 11px minmax(0,1fr) minmax(0,.8fr) 38px 44px 42px;align-items:center;gap:5px;padding:3px 6px;font-size:.76rem;display:grid}.stats-stand-row.is-player{border-color:var(--ink-mid);background:#7a60301a}.stats-stand-row.at-majority{border-color:var(--safe)}.stats-stand-rank{color:var(--ink-soft);font-size:.68rem;font-weight:700}.stats-stand-swatch{border:1px solid #2c1f0e4d;border-radius:50%;flex-shrink:0;width:11px;height:11px}.stats-stand-name{white-space:nowrap;text-overflow:ellipsis;font-weight:700;overflow:hidden}.stats-stand-leader{color:var(--ink-soft);white-space:nowrap;text-overflow:ellipsis;font-size:.68rem;overflow:hidden}.stats-stand-seats{text-align:right;font-weight:700}.stats-stand-share{color:var(--ink-soft);text-align:right;font-size:.76rem}.stats-stand-delta{text-align:right;color:var(--ink-soft);font-variant-numeric:tabular-nums;font-size:.68rem}.stats-stand-delta.up{color:var(--safe)}.stats-stand-delta.down{color:var(--accent-red)}.stats-projection{border:1px solid var(--ink-faint);background:#ffffff59;padding:6px 8px}.stats-proj-header{border-bottom:none;margin-bottom:0;padding-bottom:0}.stats-proj-outcome{align-items:center;gap:6px;margin-bottom:3px;font-size:.82rem;display:flex}.stats-proj-leader-swatch{border:1px solid #2c1f0e4d;border-radius:50%;flex-shrink:0;width:12px;height:12px}.stats-proj-player{color:var(--ink-soft);align-items:center;gap:6px;font-size:.76rem;display:flex}.stats-proj-player-swatch{border:1px solid #2c1f0e4d;border-radius:50%;flex-shrink:0;width:10px;height:10px}.stats-proj-grid{grid-template-columns:1fr 1fr;gap:4px;display:grid}.stats-proj-card{padding:4px 0}.stats-proj-card-label{text-transform:uppercase;letter-spacing:.12em;color:var(--ink-soft);border-bottom:1px dotted var(--ink-faint);margin-bottom:4px;padding-bottom:2px;font-size:.58rem}.stats-trend-row{grid-template-columns:10px minmax(0,1fr) 50px 46px;align-items:center;gap:5px;padding:2px 0;font-size:.74rem;display:grid}.stats-trend-swatch{border:1px solid #2c1f0e40;border-radius:50%;flex-shrink:0;width:10px;height:10px}.stats-trend-name{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.stats-trend-delta{font-size:.74rem;font-weight:700}.stats-trend-delta.up{color:var(--safe)}.stats-trend-delta.down{color:var(--accent-red)}.stats-trend-share{color:var(--ink-soft);text-align:right;font-size:.7rem}.stats-grid-three{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:5px;display:grid}.stats-grid-two{grid-template-columns:1fr 1fr;gap:5px;display:grid}.stats-grid-card{border:1px solid var(--ink-faint);background:#ffffff52;padding:6px 7px}.stats-grid-card-label{text-transform:uppercase;letter-spacing:.14em;color:var(--ink-soft);border-bottom:1px solid var(--ink-faint);margin-bottom:4px;padding-bottom:3px;font-size:.6rem}.stats-seat-list{flex-direction:column;gap:3px;display:flex}.stats-seat-row{border-bottom:1px dotted var(--ink-faint);flex-direction:column;gap:1px;padding:2px 0;font-size:.74rem;display:flex}.stats-seat-row:last-child{border-bottom:none}.stats-seat-row.is-battleground{background:#e65c000a}.stats-seat-top{justify-content:space-between;align-items:baseline;gap:6px;display:flex}.stats-seat-name{white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.stats-seat-margin{color:var(--battleground);flex-shrink:0;font-size:.78rem;font-weight:700}.stats-seat-margin.safe{color:var(--safe)}.stats-seat-bottom{align-items:baseline;gap:8px;display:flex}.stats-seat-leader{font-size:.72rem;font-weight:600}.stats-seat-runnerup{color:var(--ink-soft);font-size:.64rem}.stats-fact-list{grid-template-columns:1fr 1fr;gap:3px;display:grid}.stats-fact{border:1px solid var(--ink-faint);background:#ffffff47;flex-direction:column;align-items:center;padding:4px 3px;display:flex}.stats-fact-num{color:var(--ink);font-size:1.05rem;font-weight:900}.stats-fact-label{text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft);font-size:.58rem}.stats-empty-hint{color:var(--ink-soft);padding:2px 0;font-size:.72rem;font-style:italic}.affinity-summary{flex-direction:column;gap:6px;margin-bottom:14px;display:flex}.affinity-summary-row{cursor:pointer;align-items:center;gap:8px;padding:3px 0;display:flex}.affinity-summary-row:hover{opacity:.8}.affinity-summary-swatch{border-radius:2px;flex-shrink:0;width:10px;height:10px}.affinity-summary-name{min-width:90px;font-size:.78rem}.affinity-summary-bar{background:var(--rule);border-radius:4px;flex:1;height:8px;overflow:hidden}.affinity-summary-fill{background:var(--ink-soft);border-radius:4px;height:100%;transition:width .3s;display:block}.affinity-summary-score{text-align:right;min-width:24px;font-size:.75rem;font-weight:600}.affinity-picker{flex-direction:column;gap:10px;display:flex}.affinity-picker-selects{flex-wrap:wrap;align-items:flex-end;gap:8px;display:flex}.affinity-picker-selects label{flex-direction:column;flex:1;gap:2px;min-width:100px;display:flex}.affinity-picker-label{text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft);font-size:.62rem}.affinity-picker-selects select{border:1px solid var(--rule);background:var(--paper);color:var(--ink);padding:4px 6px;font-family:inherit;font-size:.82rem}.affinity-picker-arrow{color:var(--ink-soft);padding-bottom:4px;font-size:1.1rem}.affinity-result{border:1px solid var(--rule);border-radius:4px;padding:10px 14px}.affinity-result-score{font-variant-numeric:tabular-nums;font-size:1.6rem;font-weight:700}.affinity-result-max{color:var(--ink-soft);font-size:.8rem;font-weight:400}.affinity-result-title{color:var(--ink-soft);margin-bottom:6px;font-size:.78rem}.affinity-result-reasons{margin:0;padding:0;font-size:.78rem;list-style:none}.affinity-result-reasons li{border-top:1px solid var(--rule);padding:2px 0}.affinity-result-reasons li:first-child{border-top:none}.affinity-result.affinity-warm .affinity-result-score{color:var(--safe)}.affinity-result.affinity-cool .affinity-result-score{color:var(--danger,#c0392b)}.affinity-result.affinity-neutral .affinity-result-score{color:var(--ink-soft)}.stats-party-filter{flex-wrap:wrap;gap:3px;margin-bottom:4px;display:flex}.stats-party-chip{appearance:none;border:1.5px solid var(--ink-faint);cursor:pointer;font:inherit;background:#fff6;align-items:center;gap:5px;padding:3px 7px;font-size:.74rem;font-weight:700;transition:background .13s,border-color .13s;display:flex}.stats-party-chip:hover{border-color:var(--ink-mid);background:#ffffffb3}.stats-party-chip.is-active{background:#fffc;border-color:currentColor}.stats-party-chip-swatch{border-radius:50%;flex-shrink:0;width:10px;height:10px}.stats-party-chip-name{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.stats-party-detail{border:1px solid var(--ink-faint);background:#ffffff4d;padding:6px 8px}.stats-party-detail-header{border-bottom:1px solid var(--ink-faint);align-items:center;gap:6px;margin-bottom:5px;padding-bottom:5px;display:flex}.stats-party-detail-swatch{border:1px solid #2c1f0e4d;border-radius:50%;flex-shrink:0;width:14px;height:14px}.stats-party-detail-header strong{font-size:.92rem}.stats-party-detail-leader{color:var(--ink-soft);font-size:.72rem}.stats-party-archetype{color:var(--ink-soft);text-transform:capitalize;margin:0 0 4px;font-size:.68rem}.stats-party-slogan{color:var(--ink-mid);margin:0 0 8px;font-size:.72rem;font-style:italic}.stats-party-metrics{grid-template-columns:1fr 1fr 1fr;gap:3px;margin-bottom:6px;display:grid}.stats-party-metric{border:1px solid var(--ink-faint);background:#ffffff59;flex-direction:column;gap:1px;padding:3px 5px;display:flex}.spm-label{text-transform:uppercase;letter-spacing:.1em;color:var(--ink-soft);font-size:.6rem}.spm-value{color:var(--ink);overflow-wrap:anywhere;min-width:0;font-size:.8rem;font-weight:700}.stats-party-wards-label{text-transform:uppercase;letter-spacing:.12em;color:var(--ink-soft);margin-bottom:3px;font-size:.62rem}.stats-party-wards-list{scrollbar-width:thin;scrollbar-color:var(--ink-faint) transparent;flex-direction:column;gap:1px;max-height:180px;display:flex;overflow-y:auto}.stats-party-wards-list::-webkit-scrollbar{width:4px}.stats-party-wards-list::-webkit-scrollbar-thumb{background:var(--ink-faint);border-radius:2px}.stats-party-ward-row{border-bottom:1px dotted var(--ink-faint);grid-template-columns:minmax(0,1fr) minmax(60px,1fr) 44px auto;align-items:center;gap:5px;padding:2px 4px;font-size:.74rem;display:grid}.stats-party-ward-row.is-leading{background:#2f6e2f0a}.stats-party-ward-row:last-child{border-bottom:none}.spw-name{white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.spw-bar-wrap{background:#0000000f;border-radius:3px;height:6px;overflow:hidden}.spw-bar{border-radius:3px;height:100%;transition:width .35s}.spw-share{text-align:right;font-weight:700}.spw-leading-badge{letter-spacing:.06em;color:var(--safe);text-transform:uppercase;border:1px solid #2f6e2f59;padding:0 3px;font-size:.55rem;font-weight:900}.stats-incumbency-list{flex-direction:column;gap:2px;display:flex}.stats-incumbency-row{border-bottom:1px dotted var(--ink-faint);grid-template-columns:10px 1fr auto;align-items:center;gap:5px;padding:2px 0;font-size:.72rem;display:grid}.stats-incumbency-row:last-child{border-bottom:none}.stats-incumbency-swatch{border:1px solid #2c1f0e40;border-radius:50%;flex-shrink:0;width:10px;height:10px}.stats-incumbency-name{white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.stats-incumbency-ward{color:var(--ink-soft);white-space:nowrap;text-overflow:ellipsis;font-size:.66rem;overflow:hidden}@media (width<=900px){.stats-modal{width:auto;max-width:none;margin:0 2px;padding:6px 8px}.stats-modal-header{margin-bottom:4px;padding-bottom:4px}.stats-modal-title-row{flex-direction:column;align-items:flex-start;gap:4px}.stats-modal-title-row h2{font-size:.95rem}.stats-modal-meta{justify-content:flex-start;gap:4px 8px;width:100%;font-size:.62rem}.stats-modal-body{gap:4px}.stats-modal-meta .ink-button{padding:3px 6px;font-size:.64rem}.stats-section-label{font-size:.6rem}.stats-stand-row{grid-template-columns:20px 10px minmax(0,1fr) 28px 36px 34px;gap:4px;padding:2px 4px;font-size:.64rem}.stats-stand-leader{display:none}.stats-stand-rank{font-size:.58rem}.stats-stand-swatch{width:10px;height:10px}.stats-stand-seats{font-size:.7rem}.stats-stand-share{font-size:.64rem}.stats-stand-delta{font-size:.6rem}.stats-two-col,.stats-grid-three,.stats-grid-two{grid-template-columns:1fr}.stats-seat-bar{height:18px}.stats-grid-card{padding:4px 5px}.stats-grid-card-label{font-size:.6rem}.stats-seat-row{font-size:.64rem}.stats-seat-margin{font-size:.68rem}.stats-party-metrics{grid-template-columns:1fr 1fr}.spm-label{font-size:.6rem}.spm-value{font-size:.68rem}.stats-party-ward-row{font-size:.64rem}.stats-projection{padding:4px 5px}.stats-proj-outcome{font-size:.7rem}}:focus-visible{outline:2px solid var(--ink);outline-offset:2px}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.setup-wizard{max-width:720px}.setup-wizard-panel{background:#2c1f0eb8;border:1px solid #f8f0dd38;padding:clamp(20px,4vw,34px);box-shadow:0 16px 48px #0000003d}.setup-stepper{color:#f8f0dd7a;text-transform:uppercase;letter-spacing:.08em;justify-content:center;gap:14px;font-size:.68rem;display:flex}.setup-step{align-items:center;gap:5px;display:inline-flex}.setup-step b{border:1px solid;border-radius:50%;place-items:center;width:18px;height:18px;font-size:.62rem;display:inline-grid}.setup-step.is-active{color:#f8f0dd;font-weight:800}.setup-step.is-complete{color:#d5b86a}.setup-step-title{color:#f8f0dd;margin:4px 0 8px;font-size:clamp(1.35rem,3vw,1.85rem)}.setup-step-copy{color:#f8f0ddad;max-width:58ch;margin:0 0 18px}.setup-actions-row{flex-flow:wrap}.setup-step-actions{justify-content:space-between;align-items:center;gap:8px;margin-top:22px;display:flex}.setup-step-actions>:last-child{margin-left:auto}.setup-ward-counts{max-width:380px}.setup-mode-picker{grid-template-columns:repeat(2,1fr);gap:10px;margin:10px 0 20px;display:grid}.setup-mode-btn{appearance:none;text-align:left;color:#f8f0dd;cursor:pointer;background:#f8f0dd0f;border:1px solid #f8f0dd3d;padding:12px}.setup-mode-btn strong,.setup-mode-btn span{display:block}.setup-mode-btn strong{font-size:.86rem}.setup-mode-btn span{color:#f8f0dd94;margin-top:3px;font-size:.7rem}.setup-mode-btn.is-active{background:#f8f0dd29;border-color:#f8f0dd}.setup-profile-field{margin:0 0 20px}.setup-screen .setup-politician-name-input{color:#f8f0dd;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;background:#140c05b8;border:1px solid #f8f0dd59;width:100%}.setup-screen .setup-politician-name-input::placeholder{color:#f8f0dd85}.setup-screen .setup-politician-name-input:focus-visible{border-color:#f8f0dd;outline-color:#f8f0dd}.setup-profile-field small{color:#f8f0dd8f;font-size:.68rem}.setup-party-choice-grid{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:7px;margin:8px 0 14px;display:grid}.setup-party-choice{color:#f8f0dd;text-align:left;cursor:pointer;background:#f8f0dd0a;border:1px solid #f8f0dd33;align-items:center;gap:8px;padding:8px;display:flex}.setup-party-choice.is-active{background:#f8f0dd24;border-color:#f8f0dd}.setup-party-choice strong,.setup-party-choice small{display:block}.setup-party-choice small{color:#f8f0dd8c;font-size:.64rem}.setup-party-slogan{opacity:.9;font-style:italic;margin-top:3px!important}.setup-selected-party-edit{margin-top:4px}.setup-review-card{color:#f8f0ddbf;background:#f8f0dd0f;border:1px solid #f8f0dd3d;gap:6px;padding:14px;display:grid}.setup-review-card strong{color:#f8f0dd;font-size:1rem}.setup-review-card i{border-radius:50%;width:9px;height:9px;margin-right:5px;display:inline-block}.current-polling-panel h3{margin:1px 0 0;font-size:1rem}.polling-panel-header{justify-content:space-between;align-items:start;gap:8px;margin-bottom:9px;display:flex}.polling-panel-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.polling-history-btn{appearance:none;color:var(--ink-soft);font:inherit;text-transform:uppercase;letter-spacing:.08em;cursor:pointer;background:#ffffff59;border:1px dashed #2c1f0e47;padding:5px 8px;font-size:.64rem;font-weight:700}.polling-history-btn:hover:not(:disabled){color:var(--ink);background:#ffffff8c;border-color:#2c1f0e80}.polling-history-btn:disabled{opacity:.45;cursor:not-allowed}.ward-history-modal{width:min(92vw,720px);max-width:720px}.ward-history-footer{color:var(--ink-soft);margin:10px 0 12px;font-size:.72rem}.party-share-line-chart{width:100%;position:relative}.current-polling-list{gap:6px;display:grid}.current-polling-row{grid-template-columns:16px 25px minmax(100px,1fr) minmax(50px,1.1fr) 42px;align-items:center;gap:6px;padding:4px;font-size:.7rem;display:grid}.current-polling-row.is-player{background:#b8860b1a;outline:1px solid #b8860b59}.current-polling-rank{color:var(--ink-soft);text-align:center;font-weight:800}.current-polling-initials{color:#fff;border-radius:50%;place-items:center;width:24px;height:24px;font-size:.55rem;font-weight:800;display:grid}.current-polling-person strong,.current-polling-person span{display:block}.current-polling-person strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.current-polling-person span{color:var(--ink-soft);text-overflow:ellipsis;white-space:nowrap;font-size:.62rem;overflow:hidden}.current-polling-person i,.rel-party-name i{border-radius:50%;width:7px;height:7px;margin-right:4px;display:inline-block}.current-polling-bar{background:var(--ink-faint);height:9px;overflow:hidden}.current-polling-bar>div{height:100%}.current-polling-share{text-align:right}.current-polling-summary{color:var(--ink-soft);margin:8px 0 0;font-size:.68rem}.current-polling-tactical{border-top:1px dotted var(--ink-faint);color:var(--ink-soft);flex-direction:column;gap:2px;margin:5px 0 0;padding-top:5px;font-size:.64rem;display:flex}.current-polling-tactical-label{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-mid);font-size:.58rem;font-weight:700}.current-polling-tactical p{margin:0}.current-polling-tactical strong{color:var(--ink);font-weight:700}.rel-party-name{color:var(--ink-soft);margin-top:1px;font-size:.62rem;display:block}@media (width<=600px){.setup-screen{padding:18px 10px}.setup-wizard-panel{padding:18px}.setup-stepper{gap:7px;font-size:.58rem}.setup-mode-picker{grid-template-columns:1fr}.setup-step-actions{flex-wrap:wrap}.setup-step-actions>:last-child{margin-left:0}.current-polling-row{grid-template-columns:15px 23px minmax(90px,1fr) 38px;gap:5px}.current-polling-bar{display:none}}.command-strip{gap:9px;min-height:48px;padding:5px 9px;position:relative}.command-identity{border-left:3px solid;align-items:center;gap:6px;min-width:0;padding-left:6px;display:inline-flex}.command-identity .party-initials-badge{width:25px;height:25px;font-size:.6rem}.command-identity strong{text-overflow:ellipsis;white-space:nowrap;max-width:180px;font-size:.76rem;overflow:hidden}.command-meta{color:var(--ink-soft);white-space:nowrap;gap:7px;font-size:.66rem;display:flex}.command-meta .is-urgent{color:var(--accent-red);font-weight:800}.command-strip .topbar-ap-block{margin-left:auto}.command-strip .ap-count-small{white-space:nowrap;font-size:.62rem;display:inline}.command-strip .ap-pip-small{width:10px;height:10px}.command-strip .ap-pip-small.scheduled{background:repeating-linear-gradient(135deg, var(--accent-gold) 0 2px, transparent 2px 4px);border-color:var(--accent-gold)}.command-overflow{position:relative}.command-overflow summary{cursor:pointer;border:1px solid var(--ink-faint);padding:4px 7px;font-weight:900;list-style:none}.command-overflow summary::-webkit-details-marker{display:none}.command-overflow>div{z-index:60;background:var(--paper);border:1px solid var(--ink-border);min-width:110px;box-shadow:var(--shadow);display:grid;position:absolute;top:calc(100% + 4px);right:0}.command-overflow button{color:var(--ink);text-align:left;cursor:pointer;background:0 0;border:0;padding:7px 9px}.command-overflow button:hover{background:var(--paper-warm)}.command-strip .advance-week-btn{box-shadow:none;border-width:1px;padding:7px 12px;font-size:.75rem}.workspace-tabs{background:var(--paper-mid);border:1px solid var(--ink-border);gap:3px;padding:3px;display:flex;overflow-x:auto}.workspace-tab{appearance:none;color:var(--ink-soft);cursor:pointer;font:inherit;white-space:nowrap;background:0 0;border:0;padding:7px 10px;font-size:.7rem;font-weight:800}.workspace-tab.is-active{color:var(--ink);background:var(--paper);box-shadow:0 1px 2px #2c1f0e1f}.workspace-tab span{background:var(--accent-red);color:#fff;border-radius:50%;place-items:center;width:14px;height:14px;margin-left:4px;font-size:.58rem;display:inline-grid}.workspace-panel{gap:6px;min-width:0;display:grid}.workspace-panel>.panel,.workspace-panel>.council-composition{min-width:0;margin:0}.council-workspace-panel h3{margin:2px 0 5px;font-size:.92rem}.council-workspace-panel p{color:var(--ink-mid);margin:0 0 10px;font-size:.75rem}.council-workspace-panel .ink-button{white-space:normal}.panel.is-locked,.council-workspace-panel.is-locked{opacity:.78}.council-workspace-panel.is-locked h3{color:var(--ink-mid)}.council-queued-motion{border-left:3px solid var(--accent-gold);background:#b8860b14;min-width:0;padding:6px;margin-top:10px!important}.council-queued-motion strong{overflow-wrap:anywhere}.motion-composer-modal{width:min(540px,100vw - 24px);max-height:calc(100vh - 24px);overflow-y:auto}.active-legislation-list{gap:4px;min-width:0;margin-top:5px;display:grid}.active-legislation-row{border-left:3px solid var(--safe);background:#2f6e2f12;flex-wrap:wrap;align-items:center;gap:6px;min-width:0;padding:5px 6px;font-size:.67rem;display:flex}.active-legislation-row strong{overflow-wrap:anywhere;flex:120px;min-width:0}.active-legislation-row small{color:var(--ink-soft)}.active-legislation-category{color:var(--safe);text-transform:uppercase;border:1px solid #2f6e2f4d;flex-shrink:0;padding:1px 4px;font-size:.55rem}.council-register-empty{color:var(--ink-soft);margin:5px 0 0;font-size:.68rem}.council-vote-archive{border-top:1px solid var(--ink-faint);margin-top:9px;padding-top:6px}.council-vote-archive summary{cursor:pointer;color:var(--ink-soft);font-size:.65rem}.council-vote-archive>div{gap:3px;min-width:0;margin-top:6px;display:grid}.council-archive-row{grid-template-columns:auto minmax(0,1fr);gap:3px 6px;min-width:0;font-size:.61rem;display:grid}.council-archive-row>span{color:var(--accent-red)}.council-archive-row.passed>span{color:var(--safe)}.council-archive-row strong{overflow-wrap:anywhere;min-width:0}.council-archive-row small{color:var(--ink-soft);grid-column:2}.map-focus-btn{appearance:none;border:1px solid var(--ink-faint);background:var(--paper);color:var(--ink-mid);font:inherit;cursor:pointer;white-space:nowrap;padding:4px 7px;font-size:.64rem}.map-panel:not(.is-focused) .map-svg{height:clamp(250px,34vh,360px);min-height:0}.map-panel.is-focused .map-svg{height:min(65vh,620px)}.map-panel:not(.is-focused) .map-toolbar{padding:2px 0}.map-toolbar-toggle{appearance:none;border:1px solid var(--ink-faint);background:var(--paper);color:var(--ink-mid);font:inherit;cursor:pointer;padding:3px 6px;font-size:.62rem}@media (width>=900px){.dashboard-layout{grid-template:"seatbar seatbar""map right"minmax(0,1fr)/minmax(0,1.1fr) minmax(350px,.9fr)}.right-column{max-height:min(68vh,650px);padding-right:3px;overflow-y:auto}}@media (width<=899px){.command-strip{z-index:50;position:sticky;top:0}.command-meta{order:3;width:100%}.map-panel:not(.is-focused) .map-svg{height:min(42vh,330px)}.right-column{min-width:0}}@media (width<=600px){.command-meta{font-size:.6rem}.command-identity strong{max-width:110px}.command-strip .topbar-ap-block{margin-left:0}.command-strip .ap-pips-small{gap:2px}.command-strip .advance-week-btn{padding:6px 8px;font-size:.65rem}.workspace-tab{padding:7px 9px}.map-mode-row{flex-wrap:wrap;justify-content:flex-end}.map-focus-btn{font-size:.58rem}}.setup-screen.is-splash .setup-wizard-panel,.setup-screen.is-modal .setup-wizard-panel{color:#f8f0dd}.setup-wizard-panel .setup-section-label{color:#f8f0ddad}.setup-wizard-panel .setup-party-choice{color:#f8f0dd}.setup-wizard-panel .setup-party-choice strong{color:#fffaf0}.setup-wizard-panel .setup-party-choice small{color:#f8f0ddb8}.setup-wizard-panel .setup-party-choice.is-active{background:#f8f0dd33}.workspace-tabs{flex:none;min-height:38px}.right-column{min-height:min-content}@media (width>=900px) and (width<=1100px){.dashboard-layout{grid-template-rows:auto auto}.right-column{max-height:none;overflow:visible}}@media (width>=1101px){.right-column{height:100%;max-height:none;overflow-y:auto}}.personal-policy-config{grid-template-columns:1fr 1fr;gap:5px;margin-top:7px;display:grid}.personal-policy-config label{color:var(--ink-soft);text-transform:uppercase;letter-spacing:.04em;gap:2px;font-size:.6rem;display:grid}.personal-policy-config select{border:1px solid var(--ink-faint);background:var(--paper);width:100%;color:var(--ink);font:inherit;text-transform:none;padding:4px;font-size:.68rem}.colleague-campaign-picker{gap:6px;margin-top:7px;display:grid}.colleague-campaign-selected{gap:5px;display:grid}.colleague-campaign-summary{color:var(--ink-soft);gap:1px;font-size:.66rem;display:grid}.colleague-campaign-summary strong{color:var(--ink);font-size:.74rem}.colleague-battleground{border:1px solid var(--ink-faint);width:fit-content;color:var(--ink);letter-spacing:.04em;text-transform:uppercase;margin-top:2px;padding:1px 5px;font-size:.56rem;display:inline-block}.colleague-change-target{border:1px solid var(--ink-faint);background:var(--paper);width:fit-content;color:var(--ink);font:inherit;cursor:pointer;padding:3px 7px;font-size:.62rem}.colleague-campaign-list{gap:4px;max-height:180px;display:grid;overflow-y:auto}.colleague-campaign-option{text-align:left;border:1px solid var(--ink-faint);background:var(--paper);color:var(--ink);font:inherit;cursor:pointer;gap:2px;padding:5px 7px;display:grid}.colleague-campaign-option.selected,.colleague-campaign-option:hover{border-color:var(--ink-soft);background:#2c1f0e0d}.colleague-option-main{gap:1px;display:grid}.colleague-option-main strong{font-size:.72rem}.colleague-option-main span,.colleague-option-meta{color:var(--ink-soft);font-size:.6rem}.personal-position-values{grid-template-columns:repeat(3,1fr);gap:5px;margin-top:5px;display:grid}.personal-position-values span{background:var(--paper-warm);color:var(--ink-soft);gap:1px;padding:5px;font-size:.62rem;display:grid}.personal-position-values strong{color:var(--ink);font-size:.84rem}.personal-position-summary small{color:var(--ink-soft);margin-top:6px;font-size:.62rem;display:block}.current-polling-list{gap:4px}.current-polling-row{border-left:3px solid #0000;grid-template-columns:15px 24px minmax(110px,1fr) minmax(80px,1.2fr) 44px;gap:5px;padding:3px 4px}.current-polling-row:first-child{border-left-color:var(--ink);background:#2c1f0e0e}.current-polling-row.is-player{border-left-color:var(--accent-gold)}.current-polling-bar{border:1px solid #2c1f0e1f;border-radius:2px;height:18px}.current-polling-bar>div{min-width:2px}.current-polling-share{font-size:.72rem}.rel-grid{gap:3px}.rel-card{min-height:0;padding:5px 7px}.rel-card-header{margin-bottom:1px}.rel-card-header>span{align-items:baseline;gap:6px;width:100%;min-width:0;display:flex}.rel-name{white-space:nowrap;text-overflow:ellipsis;font-size:.72rem;overflow:hidden}.rel-party-name{white-space:nowrap;text-overflow:ellipsis;margin:0;display:inline;overflow:hidden}.rel-strength-bar{height:2px;margin:2px 0}.rel-meta{font-size:.6rem}.rel-type-badge,.rel-strength-num{font-size:.58rem}.rel-history{margin-top:4px;padding-top:3px}@media (width<=600px){.personal-policy-config{grid-template-columns:1fr}.colleague-campaign-list{max-height:150px}.colleague-campaign-option{padding:6px 7px}.current-polling-row{grid-template-rows:auto auto;grid-template-columns:14px 22px minmax(0,1fr) auto;row-gap:2px}.current-polling-share{grid-area:1/4}.current-polling-bar{grid-area:2/3/auto/-1;width:100%;height:14px;display:block}.current-polling-person span{font-size:.56rem}}.final-vote-section{border-top:1px solid var(--ink-faint);margin:12px 0;padding-top:8px}.final-vote-section h4{margin:0 0 6px;font-size:.76rem}.final-vote-columns{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.final-vote-column h5{letter-spacing:.04em;text-transform:uppercase;margin:0 0 4px;font-size:.7rem}.final-vote-column.vote-aye h5{color:var(--safe)}.final-vote-column.vote-nay h5{color:var(--accent-red)}.final-vote-grid{gap:4px;display:grid}.final-vote-row{border-left:3px solid var(--ink-soft);background:#2c1f0e09;grid-template-columns:8px minmax(0,1fr);align-items:center;column-gap:5px;padding:4px 6px;font-size:.64rem;display:grid}.final-vote-row.vote-aye{border-left-color:var(--safe)}.final-vote-row.vote-nay{border-left-color:var(--accent-red)}.final-vote-dot{border-radius:50%;width:7px;height:7px}.final-vote-name{white-space:nowrap;text-overflow:ellipsis;font-weight:700;overflow:hidden}.final-vote-party{color:var(--ink-soft);grid-column:2;font-size:.57rem}.final-vote-note{color:var(--ink-soft);grid-column:2/-1;font-size:.55rem;font-style:italic}.final-vote-empty{color:var(--ink-soft);margin:0;font-size:.62rem;font-style:italic}.motion-contestedness{text-transform:uppercase;letter-spacing:.04em;border:1px solid var(--ink-faint);padding:1px 5px;font-size:.58rem}.motion-contestedness.contested-broad{color:var(--safe);border-color:var(--safe)}.motion-contestedness.contested-divisive{color:var(--accent-red);border-color:var(--accent-red)}.motion-kind-badge{text-transform:uppercase;letter-spacing:.04em;background:#2c1f0e14;padding:1px 5px;font-size:.58rem}.legislation-repeal-btn{border:1px solid var(--ink-soft);cursor:pointer;color:var(--ink);background:0 0;flex-shrink:0;margin-left:auto;padding:2px 8px;font-size:.62rem}.legislation-repeal-btn:hover{border-color:var(--accent-red);color:var(--accent-red)}.council-archive-row.repealed{opacity:.75}.council-gov-status{color:var(--ink-soft);margin:0 0 6px;font-size:.72rem}.council-influence-note{color:var(--ink-soft);margin:6px 0;font-size:.68rem}.proposal-hint{color:var(--ink-soft);margin:0 0 8px;font-size:.68rem}.proposal-suggest-row{flex-wrap:wrap;gap:6px;margin-bottom:8px;display:flex}.proposal-chips{flex-wrap:wrap;gap:4px;margin:4px 0 8px;display:flex}.proposal-chip{border:1px solid var(--ink-faint);background:var(--paper-warm);color:var(--ink);cursor:pointer;padding:3px 7px;font-size:.62rem}.proposal-chip:hover,.proposal-chip.is-active{border-color:var(--ink);background:#2c1f0e0f}.proposal-assembler{border:1px solid var(--ink-faint);background:#2c1f0e08;margin:8px 0;padding:8px}.proposal-assembler summary{cursor:pointer;font-size:.72rem;font-weight:700}.proposal-assembler-fields{gap:6px;margin-top:8px;display:grid}.proposal-contestedness-preview{color:var(--ink-soft);margin:6px 0 0;font-size:.66rem}@media (width<=720px){.council-chamber-modal,.motion-composer-modal{max-height:calc(100vh - 16px);padding:12px 14px}.council-chamber-modal h2,.motion-headline{font-size:.95rem}.motion-vote-buttons{flex-direction:column}.vote-btn{text-align:center;width:100%}.proposal-actions{flex-direction:column}.proposal-actions .ink-button{width:100%}.party-whip-badge{flex:100%;max-width:100%}.council-workspace-panel .ink-button{text-align:center;width:100%;padding:7px 10px;font-size:.68rem}.active-legislation-row{gap:3px 6px;padding:4px 5px;font-size:.62rem}.active-legislation-row strong{flex:100px}.legislation-repeal-btn{margin-left:0}.final-vote-columns{grid-template-columns:1fr}.career-tier-bar{flex-direction:column;align-items:stretch;gap:0;padding-left:14px}.career-tier-bar:before{width:2px;height:auto;inset:8px auto 8px 4px}.career-tier-step{flex-direction:row;justify-content:flex-start;align-items:center;gap:8px;padding:5px 0}.tier-label{text-align:left;max-width:none;font-size:.72rem}.personal-position-values{grid-template-columns:1fr}.stance-grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr))}}
