body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.App{background:linear-gradient(135deg,#f5f7fa,#c3cfe2);min-height:100vh;padding:20px;text-align:center}.App-logo{height:40vmin;pointer-events:none}@media (prefers-reduced-motion:no-preference){.App-logo{animation:App-logo-spin 20s linear infinite}}.App-header{margin:0 auto;max-width:1200px;padding:40px 20px}.App-header h1{color:#2c3e50;font-size:2.5rem;font-weight:700;margin-bottom:30px;text-shadow:2px 2px 4px #0000001a}@media (max-width:768px){.App-header{padding:20px 10px}.App-header h1{font-size:2rem}}.App-link{color:#61dafb}@keyframes App-logo-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.ai-disclaimer{color:#3498db;font-size:1.2rem;font-weight:500;margin:10px 0}.prediction-disclaimer{color:#666;font-size:.9rem;font-style:italic;line-height:1.5;margin:0 auto 20px;max-width:600px}.electorate-search{margin:0 auto;max-width:1000px;padding:0 20px}.electorate-search h2{color:#2c3e50;font-size:2.5rem;font-weight:600;margin-bottom:30px;text-align:center}.search-container{display:flex;justify-content:center;margin-bottom:30px;width:100%}.search-input{background-color:#fff;border:2px solid #e0e0e0;border-radius:12px;box-shadow:0 2px 8px #0000000d;color:#2c3e50;font-size:1.2rem;max-width:600px;outline:none;padding:20px 25px;transition:all .3s ease;width:100%}.search-input::placeholder{color:#94a3b8;opacity:.8}.search-input:focus{border-color:#3498db;box-shadow:0 0 0 3px #3498db1a}.loading{background-color:#e3f2fd;color:#1976d2}.error,.loading{border-radius:4px;margin:20px 0;padding:20px}.error{background-color:#ffebee;color:#d32f2f}.results-container{background:#fff;border-radius:8px;box-shadow:0 2px 10px #0000001a;margin-bottom:30px;overflow:hidden}.results-container h3{background:#f8f9fa;border-bottom:1px solid #e0e0e0;color:#2c3e50;font-size:1.2rem;font-weight:600;margin:0;padding:20px}.results-list{list-style:none;margin:0;padding:0}.result-item{border-bottom:1px solid #e0e0e0;color:#2c3e50;cursor:pointer;font-size:1.1rem;padding:15px 20px;transition:all .2s ease}.result-item:last-child{border-bottom:none}.result-item:hover{background:#f8f9fa;color:#3498db}.electorate-details{background-color:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-top:20px;padding:20px}.electorate-details h3{color:#2c3e50;font-size:1.8rem;font-weight:600;margin-bottom:25px}.details-grid{box-sizing:border-box;display:flex;flex-direction:column;gap:20px;margin:0;padding:0;width:100%}.detail-item{background-color:#f8f9fa;border-radius:4px;padding:15px}.detail-item.full-width{word-wrap:break-word;background-color:#fff;border:1px solid #e0e0e0;border-radius:12px;box-sizing:border-box;-webkit-hyphens:auto;hyphens:auto;margin:0;overflow-wrap:break-word;padding:25px;text-align:left;width:100%}.detail-item.full-width strong{color:#2c3e50;display:block;font-size:1.3rem;font-weight:600;margin-bottom:20px;text-align:center}.detail-item.full-width p{box-sizing:border-box;margin:0;padding:0;width:100%}.detail-item strong{color:#666;display:block;font-size:1.1rem;margin-bottom:8px;text-align:center}.detail-item p{color:#2c3e50;font-size:1.3rem;font-weight:500;margin:0;text-align:center}.detail-item .description-content{color:#34495e;line-height:1.6}.detail-item .description-content p{margin-bottom:12px}.detail-item .description-content ul{display:block;list-style:none;margin:0;padding:0}.detail-item .description-content li{background:none;border:none;color:#2c3e50;display:inline;font-size:.95rem;margin:0;padding:0;transition:none}.detail-item .description-content li:not(:last-child):after{content:", "}.detail-item .description-content li:hover{background:none;box-shadow:none;transform:none}.detail-item .description-content em{color:#666;font-style:italic}.suburbs-section{margin-top:15px}.suburbs-section h4{color:#2c3e50;font-size:1.1rem;font-weight:600;margin-bottom:12px}.suburbs-section ul{column-count:3;column-gap:20px;list-style:none;margin:10px 0;padding:0}.suburbs-section li{break-inside:avoid;margin-bottom:5px;page-break-inside:avoid}.candidates-list{margin-top:15px}.candidate-item{align-items:center;background-color:#f8f9fa;border:1px solid #dee2e6;border-radius:4px;display:flex;justify-content:space-between;margin:8px 0;padding:12px}.candidate-item.elected{background-color:#e3f2fd;border-color:#90caf9}.candidate-info{display:flex;flex-direction:column;gap:4px}.candidate-name{color:#212529}.candidate-party{color:#6c757d;font-size:.9em}.candidate-votes{align-items:flex-end;display:flex;flex-direction:column;gap:4px}.votes-count{color:#212529;font-weight:500}.votes-percentage{color:#6c757d;font-size:.9em}.vote-bars{background:#fff;border-radius:6px;box-shadow:0 2px 4px #0000000d;margin:20px 0;padding:20px}.tcp-results{grid-gap:20px;display:grid;gap:20px;grid-template-columns:1fr 1fr;margin-top:20px}.tcp-candidate{background-color:#f8f9fa;border-radius:4px;padding:15px;text-align:center}.tcp-candidate.elected{border-left:4px solid #28a745}.tcp-candidate h4{color:#495057;font-size:1.2rem;font-weight:600;margin:0 0 10px;text-align:center}.tcp-candidate p{margin:5px 0;text-align:center}.electorate-prediction{grid-gap:20px;background:none!important;box-shadow:none!important;display:grid;grid-column:1/-1;grid-template-columns:repeat(3,1fr);margin:0!important;padding:0!important}.prediction-header{gap:15px;grid-column:1/-1;justify-content:flex-start}.prediction-analysis{grid-column:1/-1}@media (max-width:768px){.electorate-details{padding:20px}.details-grid,.tcp-results{grid-template-columns:1fr}}.results-section{border-bottom:1px solid #e0e0e0}.results-section:last-child{border-bottom:none}.results-section h3{background:#f8f9fa;border-bottom:1px solid #e0e0e0;color:#2c3e50;font-size:1.2rem;font-weight:600;margin:0;padding:20px}.suburb-item{align-items:center;display:flex;justify-content:space-between}.suburb-name{color:#2c3e50;font-weight:500}.electorate-name{color:#666;font-size:.95rem}.prediction-content{word-wrap:break-word;box-sizing:border-box;-webkit-hyphens:auto;hyphens:auto;margin:0;overflow-wrap:break-word;padding:0;width:100%}.basic-details{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));margin-bottom:20px;width:100%}.vote-bar-container{margin:10px 0;width:100%}.vote-bar-wrapper{background-color:#f0f0f0;border-radius:4px;height:40px;overflow:hidden}.vote-bar,.vote-bar-wrapper{position:relative;width:100%}.vote-bar{height:100%}.vote-bar-fills{display:flex;height:100%;width:100%}.vote-bar-fill{align-items:center;display:flex;height:100%;justify-content:center;position:relative;transition:width .3s ease}.vote-bar-fill:first-child{border-bottom-left-radius:8px;border-top-left-radius:8px}.vote-bar-fill:last-child{border-bottom-right-radius:8px;border-top-right-radius:8px}.tick-mark{background-color:#000;height:100%;top:0;width:2px}.tick-mark,.tick-mark:after{left:50%;position:absolute;transform:translateX(-50%)}.tick-mark:after{color:#666;content:"50%";font-size:12px;top:-20px}.vote-percentage{color:#fff;font-weight:700;text-shadow:0 0 2px #00000080}.vote-info{display:flex;font-size:.9em;justify-content:space-between;margin-top:5px}.party-info{align-items:center;display:flex;gap:8px}.party-code{font-weight:700}.vote-count{color:#666}@media (max-width:768px){.vote-info{flex-direction:column;gap:10px}.party-info{justify-content:center}}.electorate-prediction{box-sizing:border-box;display:flex;flex-direction:column;gap:20px;margin:0;padding:0;width:100%}.prediction-analysis{word-wrap:break-word;background-color:#f8f9fa;border-left:4px solid #007bff;border-radius:8px;box-sizing:border-box;color:#495057;font-size:1rem;-webkit-hyphens:auto;hyphens:auto;line-height:1.6;margin:0;overflow-wrap:break-word;padding:20px;width:100%}.prediction-details{grid-gap:20px;box-sizing:border-box;display:grid;gap:20px;grid-template-columns:1fr;margin:20px 0 0;padding:0;width:100%}@media (min-width:768px){.prediction-details{grid-template-columns:repeat(3,1fr)}}.prediction-meta{background-color:#f8f9fa;border-radius:8px;box-sizing:border-box;padding:20px;width:100%}.prediction-meta h3{color:#2c3e50;font-size:1.2rem;font-weight:600;margin:0 0 15px}.prediction-header{display:flex;flex-direction:column;gap:8px}.confidence-indicator{color:#fff}.confidence-indicator,.swing-indicator{border-radius:4px;font-weight:700;padding:6px 12px;text-align:center}.swing-indicator{background-color:#e9ecef}.predicted-result{background-color:#f8f9fa;border-radius:4px;padding:15px}.predicted-result h4{color:#495057;font-size:1rem;margin:0 0 15px}.candidates-list{background-color:#f8f9fa;border-radius:4px;padding:15px}.candidates-list h4{color:#495057;font-size:1rem;margin:0 0 15px}.candidate{align-items:center;border-bottom:1px solid #eee;display:flex;flex-wrap:wrap;gap:8px;justify-content:space-between;padding:8px 0}@media (max-width:480px){.candidate{align-items:flex-start;flex-direction:column}.candidate-name,.candidate-party{width:100%}}.candidate:last-child{border-bottom:none}.candidate-name{flex:2 1;font-weight:500}.candidate-party{flex:1 1;font-weight:700;text-align:center}.projected-votes{color:#333;flex:1 1;font-weight:500;text-align:right}.incumbent-tag{background-color:#e9ecef;border-radius:3px;color:#495057;font-size:.8em;font-weight:400;padding:2px 6px;white-space:nowrap}.election-prediction{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin:20px auto;max-width:800px;padding:20px}.election-prediction h2{color:#333;margin-bottom:15px}.prediction-summary{margin-bottom:25px;text-align:center}.prediction-title{color:#666;font-size:1.2em;font-weight:500}.seats-visualization{display:flex;flex-direction:column;gap:10px}.seat-bar{gap:10px;height:30px}.seat-bar,.seat-fill{align-items:center;display:flex}.seat-fill{border-radius:4px;height:100%;justify-content:flex-end;min-width:40px;padding-right:8px;position:relative;transition:width .5s ease-in-out}.seat-count{color:#fff;font-weight:700;text-shadow:0 1px 2px #0000004d}.party-name{color:#333;font-size:.9em;min-width:200px}@media (max-width:600px){.election-prediction{margin:10px;padding:15px}.party-name{font-size:.8em;min-width:150px}}.electorate-list-container{background-color:#fff;border:1px solid #ddd;border-radius:4px;margin-top:1rem}.list-header{align-items:center;border-bottom:1px solid #ddd;display:flex;justify-content:space-between;padding:1rem}.toggle-button{background:none;border:none;color:#333;cursor:pointer;font-size:1rem;padding:.5rem}.toggle-button:hover{color:#000}.party-filter{border:1px solid #ddd;border-radius:4px;font-size:.9rem;padding:.5rem}.electorate-list{max-height:400px;overflow-y:auto}.electorate-item{align-items:center;border-bottom:1px solid #eee;cursor:pointer;display:flex;padding:.75rem 1rem;transition:background-color .2s}.electorate-item:hover{background-color:#f5f5f5}.electorate-item.selected{background-color:#e6f3ff}.electorate-name{flex:1 1;font-size:.9rem}.electorate-2pp{flex:2 1;padding-left:1rem}.filter-section{align-items:center;display:flex;gap:.5rem}.filter-label{color:#333;font-size:.9rem;white-space:nowrap}
/*# sourceMappingURL=main.a07be4f9.css.map*/