:root{
  --bg:#eaf0f6;--panel:#fff;--ink:#17212b;--muted:#687586;--border:#cbd5df;
  --navy:#0f2742;--blue:#164e7a;--blue2:#0b6aa2;--danger:#a52a2a;--shadow:0 10px 28px rgba(18,35,52,.12)
}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:Inter,Segoe UI,Arial,sans-serif;color:var(--ink);background:var(--bg)}
button,input,select{font:inherit}button{border:1px solid var(--border);background:#fff;color:var(--ink);border-radius:10px;padding:.62rem .9rem;cursor:pointer}button:hover{background:#f4f7fa}button:disabled{opacity:.45;cursor:not-allowed}.primary{background:var(--navy);color:#fff;border-color:var(--navy)}.primary:hover{background:#173957}.danger-ghost{color:var(--danger)}.large{width:100%;padding:.85rem}
.app-shell{min-height:100vh}.topbar{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:14px 22px;background:var(--navy);color:#fff;position:sticky;top:0;z-index:20}.brand{display:flex;align-items:center;gap:.75rem}.brand-mark{width:44px;height:44px;border-radius:12px;background:#fff;color:var(--navy);display:grid;place-items:center;font-weight:800}.brand h1{font-size:1.15rem;margin:0}.brand p{margin:.1rem 0 0;color:#b9c6d5;font-size:.82rem}.save-tools{display:flex;align-items:end;gap:.5rem;flex-wrap:wrap}.save-tools button,.save-tools select{background:#173957;color:#fff;border-color:#46617b}.compact-label{font-size:.74rem;color:#c7d3df;display:grid;gap:.25rem}.compact-label select{min-width:210px;padding:.6rem}
.status-strip{display:grid;grid-template-columns:repeat(8,minmax(110px,1fr));gap:1px;background:#b9c5d1;border-bottom:1px solid #aebac5}.status-item{background:#f8fafc;padding:.65rem .8rem;min-width:0}.status-item span{display:block;color:var(--muted);font-size:.72rem}.status-item strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:.15rem}.save-indicator strong{color:#1d6c3b}
.tabs{display:flex;gap:.35rem;padding:12px 22px 0;overflow-x:auto}.tab{border-bottom-left-radius:0;border-bottom-right-radius:0;padding:.72rem 1rem}.tab.active{background:var(--panel);border-bottom-color:var(--panel);font-weight:700}
main{padding:0 22px 28px}.panel{display:none}.panel.active{display:block}.card{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:16px;box-shadow:var(--shadow);margin-top:14px}.card h2{margin:0;font-size:1.02rem}.card p{color:var(--muted);margin:.35rem 0 0;line-height:1.45}.card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}.dashboard-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(260px,.8fr);gap:14px}.turn-controls{display:flex;gap:.5rem;flex-wrap:wrap}.badge,.infinity-pill{display:inline-flex;align-items:center;border-radius:999px;padding:.34rem .65rem;background:#e2edf6;color:#174d75;font-size:.76rem;font-weight:700}.infinity-pill{background:#e7f4eb;color:#1c6b39}
.standings{margin-top:14px}.party-row{display:grid;grid-template-columns:minmax(150px,1.2fr) minmax(180px,2.4fr) 62px;align-items:center;gap:.75rem;padding:.62rem 0;border-top:1px solid #edf1f4}.party-label{display:flex;align-items:center;gap:.55rem;min-width:0}.party-swatch{width:12px;height:12px;border-radius:3px;flex:none}.party-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bar-track{height:11px;border-radius:999px;background:#edf1f4;overflow:hidden}.bar-fill{height:100%;border-radius:999px}.party-value{text-align:right;font-variant-numeric:tabular-nums}.player-tag{font-size:.65rem;padding:.18rem .35rem;border-radius:5px;background:#152f4a;color:#fff}
.news-list{display:grid;gap:.75rem;margin-top:12px;max-height:440px;overflow:auto}.news-item{border-left:4px solid #8096aa;padding:.55rem .7rem;background:#f7f9fb;border-radius:0 9px 9px 0}.news-item strong{font-size:.86rem}.news-item p{font-size:.8rem;margin-top:.2rem}.news-date{display:block;color:var(--muted);font-size:.7rem;margin-top:.25rem}
.metrics-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.metric-card{background:#fff;border:1px solid var(--border);border-radius:14px;padding:14px;margin-top:14px}.metric-card span,.metric-card small{display:block;color:var(--muted)}.metric-card strong{font-size:1.55rem;display:block;margin:.25rem 0}.metric-card small{font-size:.75rem}
.action-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:14px}.action-card{border:1px solid var(--border);border-radius:12px;padding:13px;background:#fbfcfd;display:grid;gap:.65rem}.action-card h3{margin:0;font-size:.95rem}.action-card p{font-size:.8rem;margin:0}.action-meta{display:flex;justify-content:space-between;font-size:.72rem;color:var(--muted)}.action-card button{width:100%}.timeline{display:grid;gap:.65rem;margin-top:12px;max-height:330px;overflow:auto}.timeline-item{padding:.65rem;border-left:3px solid #2a638d;background:#f7f9fb}.timeline-item p{font-size:.82rem;margin:.15rem 0}.timeline-item time{font-size:.7rem;color:var(--muted)}
.poll-layout{display:grid;grid-template-columns:290px minmax(0,1fr);gap:14px}.poll-control-card label,.settings-grid label,.modal-card label{display:grid;gap:.35rem;margin-top:.9rem;color:var(--muted);font-size:.82rem}.poll-control-card select,.settings-grid input,.settings-grid select,.modal-card input,.modal-card select{width:100%;padding:.68rem;border:1px solid var(--border);border-radius:9px;background:#fff;color:var(--ink)}.latest-poll{margin-top:14px;border:1px solid var(--border);border-radius:10px;padding:11px}.latest-poll.empty,.latest-election.empty{color:var(--muted)}.latest-results{display:grid;gap:.42rem;margin-top:.6rem}.latest-result{display:flex;justify-content:space-between;gap:1rem}.chart-card{min-width:0}.chart-actions{display:flex;gap:.4rem}.legend{display:flex;gap:.75rem;flex-wrap:wrap;margin:12px 0}.legend-item{display:flex;gap:.35rem;align-items:center;font-size:.75rem}.legend-line{width:22px;height:3px;border-radius:3px}.chart-wrap{position:relative;min-height:410px;overflow:hidden;border:1px solid #dbe2e8;border-radius:10px;background:#fff}.chart-wrap svg{display:block;width:100%;height:auto;touch-action:none}.chart-tooltip{position:absolute;background:#17212b;color:#fff;border-radius:8px;padding:.5rem .65rem;font-size:.76rem;pointer-events:none;box-shadow:var(--shadow);z-index:4}.table-wrap{overflow:auto;margin-top:12px;max-height:420px}table{border-collapse:collapse;width:100%;font-size:.78rem}th,td{padding:.58rem;border-bottom:1px solid #e5eaef;text-align:right;white-space:nowrap}th:first-child,td:first-child{text-align:left}thead{position:sticky;top:0;background:#f8fafc;z-index:2}
.election-control{display:flex;justify-content:space-between;align-items:center;gap:1rem}.latest-election h3{margin:.2rem 0}.seat-grid{display:grid;gap:.55rem;margin-top:12px}.seat-row{display:grid;grid-template-columns:minmax(130px,1fr) 2fr 70px;gap:.7rem;align-items:center}.election-history{display:grid;gap:10px;margin-top:12px}.election-entry{border:1px solid var(--border);border-radius:10px;padding:10px}.election-entry summary{cursor:pointer;font-weight:700}
.settings-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.settings-grid .card{display:flex;flex-direction:column}.settings-grid button{margin-top:.9rem}.button-stack{display:grid;gap:.55rem;margin-top:.8rem}.file-button{display:block;text-align:center;border:1px solid var(--border);border-radius:10px;padding:.62rem .9rem;color:var(--ink)!important;cursor:pointer}.rule-row{display:flex;justify-content:space-between;padding:.7rem 0;border-bottom:1px solid #e7ecf0}.rule-row strong{color:#1a6b3b}.settings-grid output{color:var(--ink);font-weight:700}
.modal[hidden]{display:none!important}.modal{position:fixed;inset:0;background:rgba(5,15,25,.6);z-index:50;display:grid;place-items:center;padding:18px}.modal-card{width:min(760px,100%);max-height:90vh;overflow:auto;background:#fff;border-radius:15px;padding:18px;box-shadow:0 25px 70px rgba(0,0,0,.3)}.modal-card.small{width:min(430px,100%)}.modal-head{display:flex;justify-content:space-between;align-items:center}.modal-head h2{margin:0}.modal-head button{font-size:1.5rem;border:0;padding:.2rem .55rem}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.modal-actions{display:flex;justify-content:flex-end;gap:.55rem;margin-top:18px}.toast{position:fixed;right:20px;bottom:20px;background:#17212b;color:#fff;padding:.75rem 1rem;border-radius:10px;z-index:80;box-shadow:var(--shadow)}
@media(max-width:1000px){.status-strip{grid-template-columns:repeat(4,1fr)}.dashboard-grid,.poll-layout,.settings-grid{grid-template-columns:1fr}.action-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:680px){.topbar{align-items:flex-start;flex-direction:column}.save-tools{width:100%}.compact-label{flex:1}.compact-label select{min-width:0;width:100%}.status-strip{grid-template-columns:repeat(2,1fr)}main{padding:0 10px 20px}.tabs{padding-left:10px}.metrics-grid,.action-grid,.form-grid{grid-template-columns:1fr}.card-head,.election-control{flex-direction:column}.turn-controls{width:100%}.turn-controls button{flex:1}.seat-row{grid-template-columns:1fr 1.5fr 55px}}

/* Versione 2: partiti, governi, coalizioni e legislatura quadriennale */
.status-strip-nine{grid-template-columns:repeat(9,minmax(105px,1fr))}
.metrics-grid-five{grid-template-columns:repeat(5,1fr)}
.government-tag,.opposition-tag{font-size:.62rem;padding:.18rem .36rem;border-radius:5px;font-weight:800;white-space:nowrap}
.government-tag{background:#dcefe2;color:#196439}.opposition-tag{background:#edf1f5;color:#596777}
.party-manager{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:14px}
.party-manage-card{border:1px solid var(--border);border-radius:12px;padding:13px;background:#fbfcfd;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center}
.party-manage-main{display:flex;align-items:center;gap:.75rem;min-width:0}.party-large-swatch{width:34px;height:34px;border-radius:9px;flex:none}.party-manage-main h3{margin:0;font-size:.95rem}.party-manage-main h3 small{color:var(--muted);font-weight:600}.party-manage-main p{font-size:.78rem;margin:.2rem 0 0}.party-badges{display:flex;gap:.35rem;justify-content:flex-end;align-items:center}.party-manage-actions{grid-column:1/-1;display:flex;justify-content:flex-end;gap:.45rem;border-top:1px solid #e7ecf0;padding-top:10px}
.government-grid{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(280px,.8fr);gap:14px}
.stability-block{margin-top:16px}.stability-label{display:flex;justify-content:space-between;gap:1rem;font-size:.84rem}.stability-track{height:13px;background:#edf1f4;border-radius:999px;overflow:hidden;margin-top:7px}.stability-track>div{height:100%;background:linear-gradient(90deg,#a52a2a,#d2a51f,#24834d);border-radius:999px}
.coalition-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:15px}.coalition-member{display:flex;align-items:center;gap:.6rem;border:1px solid #e2e8ee;border-radius:10px;padding:10px;background:#fafcfd}.coalition-member strong,.coalition-member small{display:block}.coalition-member small{color:var(--muted);font-size:.72rem;margin-top:.15rem}.government-note{border-top:1px solid #e5eaef;padding-top:12px;margin-top:14px!important}
.probability-list{display:grid;gap:10px;margin-top:14px}.probability-list>div{display:flex;justify-content:space-between;gap:1rem;padding:.75rem;border:1px solid #e5eaef;border-radius:10px}.probability-list span{color:var(--muted)}
.government-history{display:grid;gap:9px;margin-top:12px}.government-history-item{display:flex;justify-content:space-between;align-items:center;gap:1rem;border:1px solid var(--border);border-radius:10px;padding:11px}.government-history-item p{font-size:.78rem;margin:.22rem 0 0}
.poll-control-card .rule-row{font-size:.8rem}
@media(max-width:1200px){.status-strip-nine{grid-template-columns:repeat(5,1fr)}.metrics-grid-five{grid-template-columns:repeat(3,1fr)}}
@media(max-width:1000px){.party-manager,.government-grid{grid-template-columns:1fr}.coalition-list{grid-template-columns:1fr}}
@media(max-width:680px){.status-strip-nine{grid-template-columns:repeat(2,1fr)}.metrics-grid-five{grid-template-columns:1fr}.party-manage-card{grid-template-columns:1fr}.party-badges{justify-content:flex-start}.coalition-list{grid-template-columns:1fr}}
