body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.5;margin:0;padding:1rem;padding-left:max(1rem,env(safe-area-inset-left));padding-right:max(1rem,env(safe-area-inset-right));padding-bottom:max(1rem,env(safe-area-inset-bottom));background:#f9f9f9;color:#333}main{max-width:100%;padding:1rem}h1{text-align:center;margin-bottom:1rem;font-weight:600}.poll-tabs{display:flex;justify-content:center;gap:0;margin-bottom:1.25rem;border:1px solid #ddd;border-radius:8px;overflow:hidden;width:fit-content;margin-left:auto;margin-right:auto}.poll-tab{font-family:inherit;font-size:.95rem;font-weight:500;padding:10px 20px;border:none;background:#fff;color:#555;cursor:pointer;transition:background .15s ease,color .15s ease;-webkit-tap-highlight-color:transparent;position:relative}.poll-tab:not(:last-child){border-right:1px solid #ddd}.poll-tab:hover:not(.active){background:#f0f0f0;color:#333}.poll-tab:focus-visible{outline:2px solid #4a90d9;outline-offset:-2px;z-index:1}.poll-tab.active{background:#333;color:#fff;font-weight:600}.loading-overlay{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;padding:3rem 1rem;color:#888;font-size:.95rem}.loading-spinner{width:28px;height:28px;border:3px solid #e0e0e0;border-top-color:#666;border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.error-state{text-align:center;padding:2.5rem 1rem;color:#666}.error-state p{margin:0 0 1rem;font-size:.95rem}.retry-btn{font-family:inherit;font-size:.9rem;padding:8px 20px;border:1px solid #ccc;border-radius:6px;background:#fff;color:#333;cursor:pointer;transition:background .15s ease}.retry-btn:hover{background:#f0f0f0}.retry-btn:focus-visible{outline:2px solid #4a90d9;outline-offset:2px}#chartContainer{position:relative;width:100%;height:400px;margin-bottom:2rem;display:flex;justify-content:center;align-items:center;-webkit-user-select:none;user-select:none}#chart{width:100%!important;height:100%!important;display:block;touch-action:manipulation;-webkit-tap-highlight-color:transparent}#pollTableContainer{display:flex;justify-content:center;align-items:flex-start}.table-container{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;scroll-snap-type:x proximity;overscroll-behavior-x:contain;margin-bottom:1rem;position:relative}.table-title{font-size:1.2rem;font-weight:600;margin-bottom:1rem;color:#333;text-align:left}.poll-table{width:100%;min-width:800px;max-width:1200px;margin:1rem auto 0;border-collapse:collapse;background:#fff;border-radius:8px;overflow:hidden;box-shadow:0 2px 8px #0000001a}.poll-table th,.poll-table td{border:1px solid #e5e5e5;padding:12px 8px;text-align:center;vertical-align:middle}.poll-table th{background:#f8f9fa;font-weight:600;color:#495057}.poll-table th.party-header{position:relative;cursor:pointer;white-space:nowrap}.poll-table th.party-header:after{content:attr(data-hover-text);position:absolute;top:100%;left:50%;transform:translate(-50%);background:#000000e6;color:#fff;padding:8px 12px;font-size:.75rem;font-weight:400;border-radius:6px;white-space:normal;max-width:300px;text-align:center;opacity:0;visibility:hidden;transition:opacity .2s ease,visibility .2s ease;z-index:10;word-wrap:break-word;margin-top:8px;box-shadow:0 4px 12px #00000026}.poll-table th.party-header:hover:after{opacity:1;visibility:visible}.poll-table td{white-space:nowrap;min-width:60px}.institute-cell{text-align:left;white-space:nowrap;min-width:150px}.institute-info{display:flex;flex-direction:column}.poll-date{font-size:.85em;color:#6c757d;margin-top:4px}.poll-table tbody tr:nth-child(odd){background-color:#f4f5f7}.poll-table tbody tr:nth-child(2n){background-color:#fff}.poll-table tbody tr:hover{background:#e8f0fe;transition:background .15s ease}@media (max-width: 767px){body{padding:.5rem}main{padding:.5rem}#chartContainer{height:300px}h1{font-size:1.25rem;margin-bottom:.75rem}.poll-tab{padding:8px 14px;font-size:.85rem}.poll-table th,.poll-table td{padding:8px 4px;font-size:.85em}.institute-cell{min-width:120px}}@media (min-width: 768px){.table-title{text-align:center;font-size:1.4rem}}@media (min-width: 1024px){.poll-table{width:90%;max-width:none}.poll-table th,.poll-table td{padding:12px 10px}.institute-cell{min-width:200px}}#accuracyContainer{max-width:680px;margin:2.5rem auto 0;padding:0 1rem}.accuracy-title{font-size:1.2rem;font-weight:600;margin-bottom:.5rem;color:#333;text-align:left}.accuracy-subtitle{font-size:.85rem;color:#888;margin:0 0 1.25rem;line-height:1.5}.accuracy-table-wrap{width:100%}.accuracy-table{width:100%;border-collapse:collapse;background:#fff;border-radius:8px;overflow:hidden;box-shadow:0 1px 4px #0000000f}.accuracy-table th{background:#f8f9fa;font-weight:600;font-size:.8rem;color:#888;text-transform:uppercase;letter-spacing:.03em;padding:10px 12px;text-align:left;border-bottom:1px solid #e5e5e5}.accuracy-table th.col-rank{width:36px;text-align:center}.accuracy-table th.col-mae{text-align:right}.accuracy-table th.col-toggle{width:36px}.accuracy-row{cursor:pointer;transition:background .1s ease}.accuracy-row:hover{background:#f8f9fb}.accuracy-row td{padding:12px;border-bottom:1px solid #f0f0f0;vertical-align:middle}.accuracy-rank{text-align:center;font-weight:600;color:#aaa;font-size:.85rem}.accuracy-institute{display:flex;flex-direction:column;gap:2px}.accuracy-name{font-weight:500;color:#333;font-size:.95rem}.accuracy-date{font-size:.8rem;color:#999}.accuracy-mae{text-align:right;font-weight:600;font-variant-numeric:tabular-nums;font-size:.95rem;color:#333}.accuracy-toggle{text-align:center}.expand-btn{background:none;border:none;cursor:pointer;font-size:1rem;color:#aaa;padding:4px 8px;transition:color .1s ease;font-family:inherit}.expand-btn:hover{color:#555}.expand-btn:focus-visible{outline:2px solid #4a90d9;outline-offset:2px;border-radius:3px}.accuracy-detail-container td{padding:0 12px 12px;border-bottom:1px solid #e5e5e5}.detail-table{width:100%;border-collapse:collapse;font-size:.85rem;margin-top:4px}.detail-table th{font-weight:500;color:#999;font-size:.75rem;text-transform:uppercase;letter-spacing:.03em;padding:6px 8px;text-align:right;border-bottom:1px solid #f0f0f0}.detail-table th:first-child{text-align:left}.detail-row td{padding:5px 8px;border-bottom:1px solid #f8f8f8}.detail-party{font-weight:500;color:#555;text-align:left}.detail-num{text-align:right;font-variant-numeric:tabular-nums;color:#555}.diff-small{color:#4a9}.diff-medium{color:#c90}.diff-large{color:#c44}.accuracy-row td{cursor:pointer}@media (max-width: 767px){#accuracyContainer{padding:0 .5rem;margin-top:2rem}.accuracy-title{font-size:1.1rem}.accuracy-table th,.accuracy-row td{padding:10px 8px}.accuracy-name{font-size:.88rem}}@media (min-width: 768px){.accuracy-title{text-align:center;font-size:1.4rem}.accuracy-subtitle{text-align:center}}
