:root{--navy-900:#17233c;--navy-800:#1d2f52;--navy-700:#29436f;--navy-100:#eef2f8;--navy-50:#f6f8fb;--border:#e3e8f0;--text:#17233c;--muted:#6f7b8f;--white:#fff;color:var(--text);background:var(--white);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Apple SD Gothic Neo,Malgun Gothic,sans-serif;font-size:16px;line-height:1.5}*{box-sizing:border-box}body{background:var(--white);min-width:320px;min-height:100vh;color:var(--text);margin:0}#root{min-height:100vh}h1,h2,h3,p{margin:0}button,a,input,textarea{font:inherit}a{color:inherit;text-decoration:none}button{border:0}.admin-page{text-align:left;width:min(1080px,100% - 32px);margin:0 auto;padding:40px 0 80px}.admin-page-centered{justify-content:center;align-items:center;min-height:100vh;padding:24px 0;display:flex}.admin-loading{color:#6f7b8f;text-align:center;padding:80px 0;font-size:15px}.admin-login{background:#fff;border:1px solid #e3e8f0;border-radius:16px;flex-direction:column;gap:12px;width:min(420px,100%);padding:32px;display:flex;box-shadow:0 8px 30px #17233c12}.admin-login h1{letter-spacing:-.02em;margin:0;font-size:24px;font-weight:800}.admin-login-description{color:#6f7b8f;margin:0 0 4px;font-size:14px;line-height:1.6}.admin-login input{border:1px solid #d7dee8;border-radius:10px;padding:12px 14px;font-size:15px}.admin-login input:focus{border-color:#29436f;outline:none}.back-button{color:#29436f;background:#fff;border:1px solid #d7dee8;border-radius:8px;align-items:center;width:fit-content;padding:8px 12px;font-size:13px;font-weight:700;text-decoration:none;display:inline-flex}.admin-header{border-bottom:1px solid #e3e8f0;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:20px;padding-bottom:24px;display:flex}.admin-eyebrow,.section-kicker{color:#29436f;letter-spacing:.1em;text-transform:uppercase;margin:0 0 8px;font-size:12px;font-weight:800}.admin-header h1{letter-spacing:-.03em;margin:0;font-size:clamp(24px,3vw,34px);font-weight:800}.admin-description{color:#6f7b8f;margin:10px 0 0;font-size:14px;line-height:1.65}.admin-header-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.link-button{color:#29436f;cursor:pointer;background:#fff;border:1px solid #e3e8f0;border-radius:8px;align-items:center;padding:8px 12px;font-size:13px;font-weight:700;display:inline-flex}.link-button:hover:not(:disabled){background:#f6f8fb}.link-button:disabled{opacity:.5;cursor:default}.connection-badge{color:#6b7280;background:#eef1f5;border-radius:999px;align-items:center;gap:6px;padding:8px 12px;font-size:12px;font-weight:700;display:inline-flex}.admin-error,.admin-notice,.info-panel{border-radius:10px;margin-top:16px;padding:13px 16px;font-size:13px;line-height:1.6}.admin-error{color:#b33a3a;background:#fff4f4}.admin-notice{color:#16713d;background:#eef8f1}.info-panel{color:#4e5b70;background:#f6f8fb}.admin-section{margin-top:36px}.section-heading{justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:16px;display:flex}.section-heading h2{letter-spacing:-.02em;margin:0;font-size:19px;font-weight:800}.section-count{color:#6f7b8f;font-size:13px;font-weight:700}.empty-panel{color:#6f7b8f;text-align:center;border:1px dashed #d7dee8;border-radius:12px;padding:28px;font-size:14px}.session-list{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:12px;display:grid}.session-card{cursor:pointer;text-align:left;background:#fff;border:1px solid #e3e8f0;border-radius:12px;flex-direction:column;align-items:flex-start;gap:7px;padding:16px;transition:border-color .15s,box-shadow .15s;display:flex}.session-card:hover{border-color:#b9c6da}.session-card.selected{border-color:#17233c;box-shadow:0 0 0 2px #17233c1f}.session-year{font-variant-numeric:tabular-nums;letter-spacing:-.02em;font-size:22px;font-weight:800}.session-status{border-radius:999px;padding:4px 9px;font-size:12px;font-weight:700}.session-status.waiting{color:#566172;background:#eef1f5}.session-status.open{color:#14713c;background:#e7f7ed}.session-status.closed{color:#a92f2f;background:#fdecec}.session-meta{color:#6f7b8f;font-size:12px;font-weight:600}.current-label{color:#fff;background:#17233c;border-radius:999px;padding:3px 8px;font-size:11px;font-weight:800}.control-card{background:#f6f8fb;border:1px solid #e3e8f0;border-radius:14px;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:24px;margin-top:36px;padding:24px;display:flex}.control-info h2{margin:0;font-size:20px;font-weight:800}.control-description{color:#4e5b70;margin:10px 0 0;font-size:14px;line-height:1.6}.control-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.primary-button,.secondary-button{cursor:pointer;border:1px solid #0000;border-radius:9px;padding:11px 17px;font-size:14px;font-weight:700;transition:background .15s}.primary-button{color:#fff;background:#17233c}.primary-button:hover:not(:disabled){background:#1d2f52}.primary-button.danger-button{background:#b33a3a}.primary-button.danger-button:hover:not(:disabled){background:#9c3030}.secondary-button{color:#29436f;background:#fff;border-color:#d7dee8}.secondary-button:hover:not(:disabled){background:#eef2f8}.secondary-button.danger-button{color:#b33a3a;border-color:#f0cccc}.secondary-button.danger-button:hover:not(:disabled){background:#fff4f4}.primary-button:disabled,.secondary-button:disabled{opacity:.5;cursor:default}.question-form{background:#fff;border:1px solid #e3e8f0;border-radius:12px;padding:18px}.question-form textarea{width:100%;font:inherit;resize:vertical;box-sizing:border-box;border:1px solid #d7dee8;border-radius:10px;padding:12px 14px;font-size:15px;line-height:1.55}.question-form textarea:focus{border-color:#29436f;outline:none}.question-form-footer{justify-content:space-between;align-items:center;gap:12px;margin-top:12px;display:flex}.question-counter{color:#8a94a6;font-variant-numeric:tabular-nums;font-size:12px}.tally-list{background:#fff;border:1px solid #e3e8f0;border-radius:12px;flex-direction:column;gap:12px;padding:18px;display:flex}.tally-row{grid-template-columns:minmax(90px,1.3fr) 3fr auto;align-items:center;gap:14px;display:grid}.tally-label{text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:700;overflow:hidden}.tally-bar{background:#eef1f5;border-radius:999px;height:10px;overflow:hidden}.tally-fill{border-radius:inherit;background:#29436f;height:100%;transition:width .4s;display:block}.tally-value{color:#4e5b70;font-variant-numeric:tabular-nums;white-space:nowrap;font-size:13px;font-weight:700}.option-form{gap:8px;margin-bottom:14px;display:flex}.option-form input{border:1px solid #d7dee8;border-radius:9px;flex:1;padding:11px 14px;font-size:14px}.option-form input:focus{border-color:#29436f;outline:none}.option-form input:disabled{background:#f6f8fb}.option-list{flex-direction:column;gap:8px;display:flex}.option-row{background:#fff;border:1px solid #e3e8f0;border-radius:10px;align-items:center;gap:12px;padding:13px 16px;display:flex}.option-number{color:#29436f;background:#eef2f8;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;font-size:12px;font-weight:800;display:inline-flex}.option-label{flex:1;font-size:14px;font-weight:600}.option-edit-input{border:1px solid #29436f;border-radius:8px;flex:1;padding:8px 11px;font-size:14px}.option-edit-input:focus{outline:none}.option-actions{flex-shrink:0;gap:4px;display:flex}.text-button{color:#6f7b8f;cursor:pointer;background:0 0;border:0;border-radius:7px;padding:6px 10px;font-size:13px;font-weight:700}.text-button:hover:not(:disabled){color:#29436f;background:#f0f3f8}.text-button.save{color:#16713d}.text-button.danger{color:#b33a3a}.text-button:disabled{opacity:.4;cursor:default}@media (width<=720px){.control-card{flex-direction:column}.tally-row{grid-template-columns:1fr;gap:6px}}.landing-page{justify-content:center;align-items:center;min-height:100vh;padding:40px 20px;display:flex}.landing-inner{width:min(900px,100%)}.landing-badge{color:var(--navy-700);letter-spacing:.12em;margin-bottom:10px;font-size:12px;font-weight:800}.landing-title{letter-spacing:-.03em;font-size:clamp(28px,5vw,46px);font-weight:800;line-height:1.1}.landing-description{max-width:620px;color:var(--muted);margin-top:16px;font-size:15px;line-height:1.7}.landing-links{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px;margin-top:36px;display:grid}.landing-card{border:1px solid var(--border);background:var(--white);border-radius:14px;flex-direction:column;gap:6px;padding:22px;transition:border-color .15s,transform .15s;display:flex}.landing-card:hover{border-color:#b9c6da;transform:translateY(-2px)}.landing-card-primary{border-color:var(--navy-900);background:var(--navy-900);color:var(--white)}.landing-card-primary:hover{border-color:var(--navy-900)}.landing-card-title{letter-spacing:-.02em;font-size:17px;font-weight:800}.landing-card-path{color:var(--navy-700);font-family:ui-monospace,Consolas,monospace;font-size:12px;font-weight:700}.landing-card-primary .landing-card-path{color:#b9c6da}.landing-card-description{color:var(--muted);margin-top:4px;font-size:13px;line-height:1.6}.landing-card-primary .landing-card-description{color:#ccd6e5}.participant-page{justify-content:center;align-items:center;min-height:100vh;padding:24px 16px;display:flex}.back-button{border:1px solid var(--border);background:var(--white);width:fit-content;color:var(--navy-700);border-radius:8px;align-items:center;margin-bottom:18px;padding:8px 12px;font-size:13px;font-weight:700;text-decoration:none;display:inline-flex}.participant-card{border:1px solid var(--border);background:var(--white);text-align:left;border-radius:18px;width:min(520px,100%);padding:28px 24px 32px;box-shadow:0 8px 30px #17233c0f}.participant-loading{color:var(--muted);text-align:center;padding:24px 0;font-size:15px}.participant-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.participant-badge{color:var(--navy-700);letter-spacing:.12em;font-size:11px;font-weight:800}.status-badge{white-space:nowrap;border-radius:999px;padding:6px 11px;font-size:12px;font-weight:700}.status-badge.status-waiting{color:#566172;background:#eef1f5}.status-badge.status-open{color:#14713c;background:#e7f7ed}.status-badge.status-closed{color:#a92f2f;background:#fdecec}.participant-year{font-variant-numeric:tabular-nums;letter-spacing:-.03em;margin-top:14px;font-size:30px;font-weight:800}.participant-question{color:#33405a;margin-top:8px;font-size:17px;font-weight:700;line-height:1.45}.participant-state{text-align:center;padding:32px 0 8px}.state-icon{background:var(--navy-50);border-radius:50%;justify-content:center;align-items:center;width:54px;height:54px;margin:0 auto 14px;font-size:26px;display:flex}.state-icon.success{color:#14713c;background:#e7f7ed}.state-icon.locked{background:#fdecec}.participant-state h1{letter-spacing:-.02em;font-size:20px;font-weight:800}.participant-state p{color:var(--muted);margin-top:8px;font-size:14px;line-height:1.6}.locked-message{background:var(--navy-50);color:#4e5b70;border-radius:10px;margin-top:18px;padding:12px 14px;font-size:13px;line-height:1.6}.vote-area{margin-top:22px}.state-heading h1{letter-spacing:-.02em;font-size:19px;font-weight:800}.state-heading p{color:var(--muted);margin-top:7px;font-size:13px}.option-list{flex-direction:column;gap:10px;margin-top:18px;display:flex}.option-button{border:1.5px solid var(--border);background:var(--white);width:100%;color:var(--text);text-align:left;cursor:pointer;border-radius:12px;align-items:center;gap:12px;padding:16px 18px;font-size:15px;font-weight:600;line-height:1.45;transition:border-color .15s,background .15s;display:flex}.option-button:hover:not(:disabled){border-color:#b9c6da}.option-button.selected{border-color:var(--navy-900);background:var(--navy-50)}.option-button:disabled{opacity:.6;cursor:default}.option-radio{border:2px solid #c6d0e0;border-radius:50%;flex-shrink:0;width:20px;height:20px;transition:border-color .15s}.option-button.selected .option-radio{border-color:var(--navy-900);border-width:6px}.empty-options{color:var(--muted);text-align:center;border:1px dashed #d7dee8;border-radius:12px;margin-top:18px;padding:22px;font-size:14px}.participant-error{color:#b33a3a;background:#fff4f4;border-radius:10px;margin-top:14px;padding:12px 14px;font-size:13px;line-height:1.6}.vote-submit{background:var(--navy-900);width:100%;color:var(--white);cursor:pointer;border-radius:12px;margin-top:20px;padding:16px;font-size:16px;font-weight:800;transition:background .15s}.vote-submit:hover:not(:disabled){background:var(--navy-800)}.vote-submit:disabled{cursor:default;background:#b9c6da}.result-page{box-sizing:border-box;background:#0e1117;justify-content:center;align-items:center;min-height:100vh;padding:clamp(20px,3vw,56px);display:flex}.back-button{color:#374151;background:#fff;border:1px solid #d3d8e0;border-radius:999px;align-items:center;width:fit-content;margin-bottom:20px;padding:8px 12px;font-size:clamp(12px,.9vw,17px);font-weight:700;text-decoration:none;display:inline-flex}.back-button:hover{background:#eef1f5}.result-stage{box-sizing:border-box;background:#f7f8fa;border-radius:clamp(16px,1.5vw,28px);width:min(1600px,100%);padding:clamp(24px,3vw,56px)}.result-page.is-fullscreen .result-stage{flex-direction:column;justify-content:center;width:100%;height:100%;display:flex}.result-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:20px;display:flex}.result-badge{color:#6b7280;letter-spacing:.14em;margin-bottom:6px;font-size:clamp(11px,.9vw,16px);font-weight:800;display:inline-block}.result-title{color:#111827;letter-spacing:-.03em;margin:0;font-size:clamp(30px,4vw,76px);font-weight:800;line-height:1.05}.result-year{font-variant-numeric:tabular-nums}.result-header-meta{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.status-pill,.connection-badge{white-space:nowrap;border-radius:999px;align-items:center;gap:7px;padding:clamp(6px,.6vw,11px) clamp(11px,1vw,18px);font-size:clamp(12px,1vw,19px);font-weight:700;display:inline-flex}.status-pill.status-waiting{color:#566172;background:#eef1f5}.status-pill.status-open{color:#14713c;background:#e7f7ed}.status-pill.status-closed{color:#a92f2f;background:#fdecec}.connection-badge{color:#6b7280;background:#eef1f5}.connection-badge.connected{color:#14713c;background:#e7f7ed}.connection-dot{background:currentColor;border-radius:50%;width:8px;height:8px}.connection-badge.connected .connection-dot{animation:1.8s ease-in-out infinite pulse}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}.fullscreen-button{color:#374151;cursor:pointer;background:#fff;border:1px solid #d3d8e0;border-radius:999px;padding:clamp(6px,.6vw,11px) clamp(11px,1vw,18px);font-size:clamp(12px,.9vw,17px);font-weight:700}.fullscreen-button:hover{background:#eef1f5}.result-question{color:#1f2937;letter-spacing:-.02em;margin:clamp(14px,1.6vw,28px) 0 0;font-size:clamp(20px,2.6vw,50px);font-weight:700;line-height:1.3}.vote-rate-list{flex-direction:column;gap:clamp(14px,1.6vw,30px);margin-top:clamp(20px,2vw,36px);display:flex}.vote-rate-item{flex-direction:column;gap:clamp(6px,.7vw,12px);display:flex}.vote-rate-header{justify-content:space-between;align-items:baseline;gap:16px;display:flex}.vote-rate-label{color:#111827;letter-spacing:-.02em;align-items:center;gap:10px;font-size:clamp(16px,1.7vw,34px);font-weight:700;line-height:1.25;display:flex}.winner-tag{color:#fff;white-space:nowrap;background:#111827;border-radius:999px;padding:3px 9px;font-size:clamp(10px,.8vw,15px);font-weight:800}.vote-rate-percent{font-variant-numeric:tabular-nums;letter-spacing:-.02em;flex-shrink:0;font-size:clamp(18px,2vw,40px);font-weight:800}.vote-rate-track{background:#e3e6eb;border-radius:clamp(6px,.6vw,12px);align-items:center;width:100%;height:clamp(34px,4.4vw,84px);display:flex;position:relative;overflow:hidden}.vote-rate-fill{border-radius:inherit;box-sizing:border-box;justify-content:flex-end;align-items:center;height:100%;padding-right:clamp(10px,1vw,20px);transition:none;display:flex}.vote-rate-count{color:#fff;font-variant-numeric:tabular-nums;text-shadow:0 1px 2px #0000002e;white-space:nowrap;font-size:clamp(18px,2.4vw,46px);font-weight:800;line-height:1}.vote-rate-count.outside{text-shadow:none;margin-left:clamp(10px,1vw,20px)}.vote-rate-item.is-winner .vote-rate-track{outline-offset:clamp(2px, .3vw, 5px);outline:clamp(2px,.25vw,4px) solid #111827}.result-placeholder{color:#6b7280;margin:clamp(16px,2vw,32px) 0 0;font-size:clamp(15px,1.4vw,28px);font-weight:600}.result-error{color:#a92f2f;margin:12px 0 0;font-size:clamp(13px,1.1vw,20px)}.result-error-panel{color:#a92f2f;background:#fdecec;border-radius:12px;margin-top:clamp(16px,2vw,30px);padding:clamp(14px,1.4vw,24px)}.result-error-panel p{margin:0 0 12px;font-size:clamp(13px,1.1vw,20px);font-weight:600}.result-error-panel button{color:#fff;cursor:pointer;background:#a92f2f;border:0;border-radius:8px;padding:9px 16px;font-size:clamp(13px,1vw,17px);font-weight:700}@media (width<=560px){.result-header{flex-direction:column;gap:12px}.vote-rate-header{flex-direction:column;align-items:flex-start;gap:4px}}
