/* Domain-only styles; shell, grids, buttons and forms are owned by the 4apps platform. */
.election-live{margin-bottom:1rem;line-height:1.7}.election-live strong{font-size:1.1rem}.election-comparison{margin:.7rem 0}.muted{color:var(--muted)}
.precinct-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(92px,1fr));gap:.65rem;margin:0 0 1rem}.precinct-tile{min-height:82px;border:1px solid var(--border,#d7dce2);border-radius:10px;background:var(--surface,#fff);display:flex;flex-direction:column;align-items:flex-start;justify-content:center;padding:.65rem .75rem;cursor:pointer}.precinct-tile:hover{transform:translateY(-1px)}.precinct-tile.is-complete{border-width:2px;background:color-mix(in srgb,var(--surface,#fff) 84%,var(--accent,#2563eb) 16%);border-color:color-mix(in srgb,var(--border,#d7dce2) 55%,var(--accent,#2563eb) 45%)}.precinct-tile.is-empty{background:var(--surface-muted,#eef0f2);color:var(--muted,#667085);opacity:.82}.precinct-tile.is-selected{outline:2px solid var(--accent,#2563eb);outline-offset:2px;opacity:1}.precinct-no{font-size:1.35rem;font-weight:700}.precinct-tile small{margin-top:.2rem;color:var(--muted)}.precinct-detail{margin-bottom:1rem}.precinct-detail-head{display:flex;justify-content:space-between;align-items:center}.status-pill{border-radius:999px;padding:.25rem .6rem;font-size:.85rem;border:1px solid var(--border,#d7dce2)}.status-pill.ok{font-weight:700}.precinct-compare{display:grid;grid-template-columns:minmax(200px,1.55fr) minmax(82px,.55fr) minmax(76px,.48fr) minmax(82px,.55fr) minmax(76px,.48fr) minmax(90px,.6fr);gap:0;border-top:1px solid var(--border,#ddd);border-left:1px solid var(--border,#ddd);margin-top:.8rem;overflow:auto}.precinct-compare>div{padding:.55rem;border-right:1px solid var(--border,#ddd);border-bottom:1px solid var(--border,#ddd)}.compare-head{font-weight:700}.live-dashboard-grid,.scenario-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin:1rem 0}.result-bar-row{display:grid;grid-template-columns:minmax(140px,1.2fr) minmax(100px,2fr) 80px;gap:.65rem;align-items:center;margin:.55rem 0}.result-bar-track{height:12px;border-radius:999px;background:var(--surface-muted,#e9edf2);overflow:hidden}.result-bar-track i{display:block;height:100%;background:currentColor;opacity:.65}.seat-strip{display:flex;min-height:76px;border:1px solid var(--border,#ddd);border-radius:9px;overflow:hidden;margin:.8rem 0}.seat-segment{min-width:42px;display:flex;flex-direction:column;align-items:center;justify-content:center;border-right:1px solid var(--border,#ddd);padding:.4rem;text-align:center}.seat-segment strong{font-size:1.35rem}.seat-legend{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.45rem .8rem;font-size:.9rem}.seat-legend span{min-width:0;overflow-wrap:anywhere}.seat-legend b{display:inline-block;min-width:1.4rem}.result-bar-row>strong{text-align:right;white-space:nowrap}.live-tools{margin-bottom:1rem}.scenario-wrap{margin-top:1.5rem}.live-editor{margin-top:1.5rem}@media(max-width:850px){.live-dashboard-grid,.scenario-grid{grid-template-columns:1fr}.precinct-compare{grid-template-columns:minmax(170px,1.35fr) minmax(76px,.55fr) minmax(70px,.48fr) minmax(76px,.55fr) minmax(70px,.48fr) minmax(82px,.6fr)}.result-bar-row{grid-template-columns:minmax(110px,1fr) minmax(80px,1.5fr) 72px}}

.inline-live-cell{padding:.35rem!important}.inline-live-input{width:100%;min-width:82px;box-sizing:border-box;padding:.5rem .55rem;border:1px solid var(--border,#cfd5dc);border-radius:7px;background:var(--surface,#fff);color:inherit;font:inherit}.inline-live-input:focus{outline:2px solid currentColor;outline-offset:1px}.inline-edit-note{margin:.25rem 0 .6rem}.comparison-footnote{margin:.65rem 0 0;font-size:.86rem}

.delta-cell{font-weight:700;text-align:right;font-variant-numeric:tabular-nums}.delta-up{background:rgba(22,163,74,var(--delta-alpha,.12));color:#166534}.delta-down{background:rgba(220,38,38,var(--delta-alpha,.12));color:#991b1b}.delta-flat{background:var(--surface-muted,#f3f4f6);color:var(--muted,#667085)}.delta-none{color:var(--muted,#667085);font-weight:400}.delta-head{text-align:right;white-space:nowrap}

/* v0.1.12: one analytical context (whole city / precinct) */
.precinct-tiles{grid-template-columns:repeat(9,minmax(0,1fr))}.context-title{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;margin:.2rem 0 .8rem;font-size:1.05rem}.context-title strong{font-size:1.25rem}.context-title span{color:var(--muted,#667085)}.context-card{margin:1rem 0}.primary-bars .result-bar-row{margin:.65rem 0}.turnout-row{display:grid;grid-template-columns:52px minmax(100px,1fr) 78px 120px;gap:.65rem;align-items:center;margin:.7rem 0}.turnout-track{height:14px;border-radius:999px;background:var(--surface-muted,#e9edf2);overflow:hidden}.turnout-track i{display:block;height:100%;background:currentColor;opacity:.62}.turnout-row>span{text-align:right;font-weight:700}.turnout-row>small{text-align:right;color:var(--muted,#667085)}.ab-row{margin:.8rem 0 1.05rem}.ab-label{display:flex;justify-content:space-between;gap:1rem;margin-bottom:.35rem}.ab-label span{color:var(--muted,#667085);font-variant-numeric:tabular-nums}.ab-track{position:relative;display:flex;width:100%;height:28px;border-radius:7px;overflow:hidden;background:var(--surface-muted,#e9edf2)}.ab-a,.ab-b{display:block;height:100%}.ab-a{background:var(--viz-series-2,#7893a8)}.ab-b{background:var(--viz-series-4,#a88778)}.ab-mid{position:absolute;left:50%;top:0;bottom:0;width:2px;background:var(--surface,#fff);z-index:2}.historical-table{display:grid;grid-template-columns:minmax(220px,1fr) 130px 130px;border-top:1px solid var(--border,#ddd);border-left:1px solid var(--border,#ddd)}.historical-table>div{padding:.55rem;border-right:1px solid var(--border,#ddd);border-bottom:1px solid var(--border,#ddd)}.inline-editor{margin-top:1rem;padding-top:1rem;border-top:1px solid var(--border,#ddd)}.vote-input-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem 1rem;margin:.8rem 0}.vote-input-grid label{display:grid;grid-template-columns:minmax(150px,1fr) 110px;align-items:center;gap:.65rem}.vote-input-grid input,.participation-inputs input{width:100%;box-sizing:border-box}.participation-inputs{margin:.7rem 0 1rem}
@media(max-width:1000px){.precinct-tiles{grid-template-columns:repeat(6,minmax(0,1fr))}}
@media(max-width:700px){.precinct-tiles{grid-template-columns:repeat(3,minmax(0,1fr))}.turnout-row{grid-template-columns:45px minmax(80px,1fr) 72px}.turnout-row small{grid-column:2/4;text-align:right}.vote-input-grid{grid-template-columns:1fr}.historical-table{grid-template-columns:minmax(160px,1fr) 90px 90px}.context-title{align-items:flex-start;flex-direction:column;gap:.2rem}}
/* v0.1.13: responsive election-night context and A/B precinct history */
.precinct-tile{position:relative;overflow:hidden;background:transparent!important;opacity:1!important;isolation:isolate}
.precinct-tile .tile-half{position:absolute;top:0;bottom:0;z-index:-1}.precinct-tile .tile-prev{left:0;width:50%}.precinct-tile .tile-now{right:0;width:50%}
.precinct-tile .tile-half.a,.ab-a{background:#b9d4ea}.precinct-tile .tile-half.b,.ab-b{background:#edc0c0}.precinct-tile .tile-half.neutral{background:#e5e7eb}
.precinct-tile .tile-content{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;position:relative;z-index:1}
.precinct-tile.is-complete{border-color:#94a3b8}.precinct-tile.is-empty{color:var(--text,#111827)}
.ab-a{background:#8eb8da}.ab-b{background:#df9999}
@media(max-width:1200px){.live-dashboard-grid{grid-template-columns:1fr}.precinct-tiles{grid-template-columns:repeat(6,minmax(0,1fr))}.turnout-row{grid-template-columns:52px minmax(90px,1fr) 78px 105px}.ab-label{flex-wrap:wrap}.ab-label span{margin-left:auto}.result-bar-row{grid-template-columns:minmax(130px,1fr) minmax(90px,1.6fr) 72px}}
@media(max-width:900px){.precinct-tiles{grid-template-columns:repeat(4,minmax(0,1fr))}.precinct-compare{font-size:.9rem}.live-dashboard-grid,.scenario-grid{grid-template-columns:1fr}}
@media(max-width:560px){.precinct-tiles{grid-template-columns:repeat(3,minmax(0,1fr))}.result-bar-row{grid-template-columns:1fr 64px}.result-bar-row>span{grid-column:1/3}.turnout-row{grid-template-columns:44px minmax(70px,1fr) 70px}.turnout-row small{grid-column:2/4}.ab-label span{width:100%;margin-left:0}}
/* v0.1.14: orientační ulice v okrscích (rozpis města Krnova 2016) */
.precinct-tile{min-height:138px;justify-content:flex-start;padding:.55rem .6rem}
.precinct-tile .tile-content{justify-content:flex-start;width:100%;height:100%}
.context-title>div{min-width:0}.context-streets{display:block;margin-top:.18rem;color:var(--muted,#667085);font-size:.78rem;line-height:1.35;font-weight:400;max-width:900px}
@media(max-width:1400px){.precinct-tiles{grid-template-columns:repeat(6,minmax(0,1fr))}.precinct-tile{min-height:128px}}
@media(max-width:900px){.precinct-tiles{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:560px){.precinct-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* v0.1.16: compact precinct tiles, responsive mandate legend, 2022/2018 comparison */
.precinct-tile{min-height:82px;padding:.55rem .65rem;justify-content:center}
.precinct-tile .tile-content{justify-content:center;height:auto}
.precinct-tiles{gap:.55rem}
.seat-legend{grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem 1.25rem}
.seat-legend span{display:grid;grid-template-columns:2rem minmax(0,1fr);gap:.35rem;align-items:start}
.seat-legend b{min-width:0}
.historical-compare-table{display:grid;grid-template-columns:minmax(220px,1fr) 130px 130px 130px;border-top:1px solid var(--border,#ddd);border-left:1px solid var(--border,#ddd);overflow:auto}
.historical-compare-table>div{padding:.55rem;border-right:1px solid var(--border,#ddd);border-bottom:1px solid var(--border,#ddd)}
@media(min-width:1500px){.precinct-tiles{grid-template-columns:repeat(9,minmax(0,1fr))}.seat-legend{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:700px){.seat-legend{grid-template-columns:1fr}.historical-compare-table{grid-template-columns:minmax(170px,1fr) 90px 100px 90px}}


/* v0.1.17: inline live entry + historical participation table */
.inline-participation{display:grid;grid-template-columns:minmax(180px,240px) minmax(180px,240px) minmax(150px,1fr);gap:.75rem 1rem;align-items:end;margin:.75rem 0}.inline-participation label{display:grid;gap:.3rem;font-weight:600}.inline-turnout{padding:.55rem 0}.inline-save-actions{margin-top:.75rem}.historical-participation-title{margin:1.25rem 0 .55rem}.participation-history{display:grid;grid-template-columns:80px minmax(150px,1fr) minmax(140px,1fr) 100px;border-top:1px solid var(--border,#ddd);border-left:1px solid var(--border,#ddd);max-width:760px}.participation-history>div{padding:.5rem .6rem;border-right:1px solid var(--border,#ddd);border-bottom:1px solid var(--border,#ddd);font-variant-numeric:tabular-nums}.participation-history>div:nth-child(4n){text-align:right}.precinct-compare .inline-live-cell{display:flex;align-items:center;padding:.3rem!important}@media(max-width:700px){.inline-participation{grid-template-columns:1fr}.participation-history{grid-template-columns:60px minmax(125px,1fr) minmax(115px,1fr) 82px;font-size:.88rem;overflow:auto}}

/* v0.1.18: statistics-only user role, counting order, live model and admin backtest */
.count-order{display:flex;flex-wrap:wrap;gap:.4rem}.count-order span{padding:.3rem .5rem;border:1px solid var(--border,#ddd);border-radius:7px;background:var(--surface-muted,#f3f4f6)}
.model-seats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.35rem .8rem;margin-top:.8rem;padding-top:.7rem;border-top:1px solid var(--border,#ddd)}.model-seats span{display:grid;grid-template-columns:2rem minmax(0,1fr);gap:.3rem}.backtest-table{display:grid;grid-template-columns:80px 110px 170px minmax(300px,1fr);overflow:auto;border-top:1px solid var(--border,#ddd);border-left:1px solid var(--border,#ddd)}.backtest-table>div{padding:.5rem;border-right:1px solid var(--border,#ddd);border-bottom:1px solid var(--border,#ddd)}
@media(max-width:700px){.model-seats{grid-template-columns:1fr}}
/* v0.1.21: visible backtest progress/error state */
.backtest-status{margin:.75rem 0;padding:.65rem .8rem;border:1px solid var(--border,#ddd);border-radius:.45rem;font-weight:600}.backtest-status.is-done{font-weight:500}.backtest-status.is-error{font-weight:700}
.backtest-steps{display:grid;gap:1rem}.backtest-step{border:1px solid var(--border,#ddd);border-radius:.65rem;padding:1rem;background:var(--surface,#fff)}.backtest-step h3{margin:0 0 .8rem}.backtest-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.65rem;margin-bottom:.9rem}.backtest-metrics>div{border:1px solid var(--border,#ddd);border-radius:.5rem;padding:.65rem;display:grid;gap:.15rem}.backtest-metrics span,.backtest-metrics small{color:var(--muted,#666)}.backtest-metrics strong{font-size:1.15rem}.backtest-candidates{display:grid;grid-template-columns:minmax(220px,1.6fr) repeat(4,minmax(100px,.7fr));overflow:auto;border-top:1px solid var(--border,#ddd);border-left:1px solid var(--border,#ddd)}.backtest-candidates>div{padding:.48rem .55rem;border-right:1px solid var(--border,#ddd);border-bottom:1px solid var(--border,#ddd)}.backtest-candidates .is-max-error{font-weight:700}@media(max-width:900px){.backtest-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.backtest-candidates{grid-template-columns:minmax(190px,1.5fr) repeat(4,minmax(95px,.7fr))}}

/* v0.1.30: multi-city model configuration */
.config-year,.transition-block{margin:1rem 0;padding:.8rem 0;border-top:1px solid var(--border,#ddd)}.config-table{display:grid;grid-template-columns:minmax(260px,1fr) 140px;border-top:1px solid var(--border,#ddd);border-left:1px solid var(--border,#ddd)}.config-table>div{padding:.5rem .6rem;border-right:1px solid var(--border,#ddd);border-bottom:1px solid var(--border,#ddd)}.config-head{font-weight:700;background:var(--surface-muted,#f3f4f6)}.transition-row{display:grid;grid-template-columns:minmax(220px,1fr) 24px minmax(220px,1fr) 110px 44px;gap:.5rem;align-items:center;margin:.5rem 0}.transition-row select,.transition-row input{width:100%;box-sizing:border-box}@media(max-width:800px){.transition-row{grid-template-columns:1fr}.transition-row>span{display:none}.config-table{grid-template-columns:minmax(180px,1fr) 100px}}
