:root{color:#fff;background:#112644;--navy-950: #081221;--navy-900: #112644;--navy-700: #24385a;--blue-700: #244e8a;--blue-600: #38629f;--blue-100: #d5e0f0;--copper-600: #ba714c;--copper-400: #d1a389;--white: #ffffff;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;margin:0;background:var(--navy-900)}a{text-decoration:none;color:inherit}button,input{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.54}.app-shell{min-height:100vh;display:flex;flex-direction:column}.topbar{min-height:82px;display:flex;align-items:center;justify-content:space-between;gap:24px;padding:18px 28px;color:var(--white);background:var(--navy-950);border-bottom:4px solid var(--copper-600)}.brand-block{min-width:0;display:flex;align-items:center;gap:14px}.brand-mark{width:52px;height:52px;flex:0 0 52px;display:grid;place-items:center;padding:4px;border:1px solid rgba(255,255,255,.38);border-radius:8px;background:#fff}.brand-logo{width:100%;height:100%;display:block;border-radius:5px;object-fit:contain}.brand-block h1{margin:0;font-size:24px;line-height:1.1;letter-spacing:0}.workspace{width:100%;max-width:1480px;margin:0 auto;padding:24px;display:grid;grid-template-columns:minmax(280px,360px) minmax(0,1fr);gap:18px}.site-footer{width:100%;max-width:1480px;margin:0 auto;padding:0 24px 24px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 18px;color:var(--blue-100);font-size:13px}.site-footer a{color:var(--copper-400);text-decoration:none}.site-footer a:hover{text-decoration:underline}.region-panel,.detail-panel{min-width:0;background:var(--navy-900);border:1px solid var(--navy-700);border-radius:8px;box-shadow:0 10px 24px #0812214d}.region-panel{height:calc(100vh - 130px);min-height:560px;display:flex;flex-direction:column;overflow:hidden}.detail-panel{min-height:calc(100vh - 130px);padding:22px}.summary-strip{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:var(--navy-700);border-bottom:1px solid var(--navy-700)}.summary-item{min-height:72px;padding:12px 14px;display:flex;flex-direction:column;justify-content:center;background:var(--blue-700)}.summary-item span,.metric span{color:var(--blue-100);font-size:12px}.summary-item strong,.metric strong{display:block;margin-top:3px;font-size:24px;line-height:1}.search-box{height:44px;margin:14px;display:flex;align-items:center;gap:9px;padding:0 12px;border:1px solid var(--blue-600);border-radius:8px;color:var(--blue-700);background:var(--white)}.search-box:focus-within{border-color:var(--copper-600);box-shadow:0 0 0 3px #ba714c3d}.search-box input{min-width:0;width:100%;border:0;outline:0;color:var(--navy-900);background:transparent}.region-list{flex:1;overflow:auto;padding:0 8px 10px}.region-row{width:100%;min-height:44px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;margin:2px 0;padding:9px 10px;border:1px solid transparent;border-radius:7px;color:var(--white);background:transparent;text-align:left}.region-row:hover{background:var(--navy-700)}.region-row.active{border-color:var(--blue-100);background:var(--blue-700)}.region-name{min-width:0;overflow-wrap:anywhere}.region-count{min-width:42px;padding:4px 8px;border-radius:999px;color:var(--white);background:var(--blue-600);font-size:12px;text-align:center}.detail-header{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.section-label{margin:0 0 4px;color:var(--copper-400);font-size:12px;text-transform:uppercase}.detail-header h2{margin:0;color:var(--white);font-size:28px;line-height:1.16;letter-spacing:0}.action-row{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.action-row.compact{justify-content:flex-start}.button{min-height:40px;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:0 13px;border:1px solid transparent;border-radius:8px;text-decoration:none;white-space:nowrap}.button.disabled{pointer-events:none;opacity:.54}.button.primary{color:var(--white);background:var(--blue-600)}.button.primary:hover{background:var(--blue-700)}.button.secondary{color:var(--blue-700);border-color:var(--blue-100);background:var(--white)}.button.secondary:hover,.button.ghost:hover{background:var(--blue-100)}.button.ghost{color:var(--blue-700);border-color:var(--blue-100);background:var(--white)}.metrics{display:grid;grid-template-columns:repeat(4,minmax(110px,1fr));gap:10px;margin:22px 0 16px}.metric{min-height:82px;padding:14px;display:flex;flex-direction:column;justify-content:center;border:1px solid var(--navy-700);border-left:5px solid var(--blue-100);border-radius:8px;background:var(--blue-700)}.metric.accent-green{border-left-color:var(--blue-600)}.metric.accent-amber{border-left-color:var(--copper-600)}.metric.accent-blue{border-left-color:var(--blue-100)}.ranking-panel{margin:24px 0 20px;padding:16px;border:1px solid var(--navy-700);border-radius:8px;background:var(--navy-950)}.ranking-heading,.ranking-controls,.ballot-meta{display:flex;align-items:center;justify-content:space-between;gap:14px}.ranking-heading h3,.patriots-title{margin:0;color:var(--white);font-size:20px}.source-links,.source-link{display:inline-flex;align-items:center}.source-links{flex-wrap:wrap;justify-content:flex-end;gap:10px 14px}.source-link{gap:6px;color:var(--copper-400);font-size:14px}.source-link:hover{text-decoration:underline}.ranking-controls{align-items:flex-end;margin-top:16px}.ballot-select{min-width:0;flex:1}.ballot-select span{display:block;margin-bottom:6px;color:var(--blue-100);font-size:12px}.ballot-select select{width:100%;min-height:42px;padding:0 10px;border:1px solid var(--blue-600);border-radius:8px;color:var(--navy-900);background:var(--white)}.mode-switch{display:flex;flex-wrap:wrap;gap:6px}.mode-switch button{min-height:42px;padding:0 12px;border:1px solid var(--blue-600);border-radius:8px;color:var(--blue-100);background:transparent}.mode-switch button.active{color:var(--white);background:var(--blue-700)}.scenario-note,.empty-copy{margin:14px 0 0;color:var(--copper-400);font-size:13px;line-height:1.45}.ballot-meta{justify-content:flex-start;margin-top:14px;color:var(--blue-100);font-size:13px}.ballot-meta strong{padding:4px 8px;border-radius:999px;color:var(--white);background:var(--blue-700);font-size:12px}.ranking-legend{display:flex;flex-wrap:wrap;align-items:center;gap:7px 14px;margin:10px 0 0;color:var(--blue-100);font-size:12px}.ranking-legend-item{display:inline-flex;align-items:center;gap:7px}.ranking-legend-marker{width:9px;height:9px;flex:0 0 9px;border-radius:50%}.ranking-legend-marker.marked{background:var(--copper-600)}.ranking-legend-marker.muted{background:#627085}.ranking-table-wrap{max-height:560px;min-height:0;margin-top:12px}.ranking-table th:first-child,.ranking-table td:first-child{width:84px}.ranking-table th:nth-child(3),.ranking-table td:nth-child(3){width:110px;text-align:right}.ranking-table th:nth-child(4),.ranking-table th:nth-child(5),.ranking-table td:nth-child(4),.ranking-table td:nth-child(5){width:62px}.ranking-table th:nth-child(6),.ranking-table td:nth-child(6){width:150px}.excluded-label{color:#8d341f;font-size:12px;font-weight:700}tbody tr.scenario-excluded-row{color:#08122194;background:#d1a38947}.patriots-title{margin-top:22px}.patriots-note{margin:8px 0 0;color:var(--blue-100);font-size:13px;line-height:1.45}.fallback-bar{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px;border:1px solid var(--blue-600);border-radius:8px;background:var(--navy-700)}.fallback-title{min-width:0;display:flex;align-items:center;gap:9px;color:var(--white)}.fallback-title span{min-width:0;overflow-wrap:anywhere}.status-text,.error-text,.loading-row{color:var(--copper-400)}.status-text{margin:12px 0 0;font-size:14px}.error-text,.loading-row{margin:16px}.loading-row{display:flex;align-items:center;gap:8px}.spin{animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.table-wrap{max-height:calc(100vh - 402px);min-height:260px;margin-top:18px;overflow:auto;border:1px solid var(--navy-700);border-radius:8px}table{width:100%;border-collapse:collapse;color:var(--navy-900);background:var(--white)}th,td{padding:10px 12px;border-bottom:1px solid var(--blue-100);text-align:left;vertical-align:top}th{position:sticky;top:0;z-index:1;color:var(--navy-900);background:var(--blue-100);font-weight:700}.patriot-table th:first-child,.patriot-table th:nth-child(2),.patriot-table td:first-child,.patriot-table td:nth-child(2){width:72px}.patriot-table th:nth-child(4),.patriot-table th:nth-child(5),.patriot-table td:nth-child(4),.patriot-table td:nth-child(5){min-width:170px}tbody tr:nth-child(2n){background:#d5e0f061}.ranking-table tbody tr.unmarked-row td:nth-child(2){color:#627085;font-size:.94em}.ranking-table tbody tr:not(.unmarked-row) td:nth-child(2){font-weight:600}.ranking-table tbody tr:not(.unmarked-row) td:nth-child(2):before{width:7px;height:7px;display:inline-block;margin-right:7px;border-radius:50%;background:var(--copper-600);content:"";vertical-align:middle}tbody tr.both-flags-row{background:#d1a3897a}tbody tr.both-flags-row:nth-child(2n){background:#ba714c52}tbody tr.both-flags-row td:first-child{border-left:5px solid var(--copper-600)}tbody tr.both-flags-row td:first-child,tbody tr.both-flags-row td:nth-child(2){color:var(--navy-900);font-weight:700}.empty-state{min-height:360px;display:grid;place-items:center;gap:8px;color:var(--blue-100);text-align:center}.print-frame{position:fixed;right:0;bottom:0;width:0;height:0;border:0}@media(max-width:960px){.topbar,.detail-header,.fallback-bar,.ranking-controls{align-items:stretch;flex-direction:column}.workspace{grid-template-columns:1fr;padding:14px}.region-panel{height:auto;min-height:0}.region-list{max-height:330px}.detail-panel{min-height:0;padding:16px}.action-row{justify-content:flex-start}.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.table-wrap{max-height:none}}@media(max-width:560px){.topbar{padding:14px}.brand-block h1{font-size:18px}.brand-mark{width:42px;height:42px;flex-basis:42px}.metrics,.summary-strip{grid-template-columns:1fr}.button,.action-row{width:100%}th,td{padding:9px 8px}}
