*,::after,::before{box-sizing:border-box;margin:0;padding:0}:root{--bg:#f4f5f7;--surface:#ffffff;--border:#e2e5ea;--border-hover:#c0c8d8;--accent:#3b6ef6;--accent-light:#eef2ff;--accent-dark:#2450d4;--text:#1a1d23;--muted:#6b7280;--success:#16a34a;--success-bg:#f0fdf4;--error:#dc2626;--radius:12px;--shadow:0 1px 3px rgba(0,0,0,.06),0 4px 12px rgba(0,0,0,.05);--shadow-hover:0 2px 8px rgba(0,0,0,.08),0 8px 24px rgba(0,0,0,.08)}body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;background:var(--bg);color:var(--text);min-height:100vh;padding:2rem 1rem 4rem;line-height:1.5}.container{max-width:860px;margin:0 auto}header{text-align:center;margin-bottom:2.5rem}header h1{font-size:2rem;font-weight:700;letter-spacing:-.02em;color:var(--text)}header p{margin-top:.5rem;color:var(--muted);font-size:.95rem}.tabs{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.75rem}.tab{padding:.4rem .9rem;border-radius:999px;border:1.5px solid var(--border);background:var(--surface);color:var(--muted);font-size:.875rem;font-weight:500;cursor:pointer;transition:border-color .15s,color .15s,background .15s;user-select:none}.tab:hover{border-color:var(--accent);color:var(--accent)}.tab.active{border-color:var(--accent);background:var(--accent-light);color:var(--accent)}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1rem;margin-bottom:2rem}.card{background:var(--surface);border:2px solid var(--border);border-radius:var(--radius);padding:1.25rem 1.25rem 1rem;cursor:pointer;transition:border-color .15s,box-shadow .15s,transform .1s;box-shadow:var(--shadow);position:relative;user-select:none}.card:hover{border-color:var(--border-hover);box-shadow:var(--shadow-hover);transform:translateY(-2px)}.card.selected{border-color:var(--accent);background:var(--accent-light);box-shadow:0 0 0 4px rgba(59,110,246,.12),var(--shadow)}.card.selected .checkmark{opacity:1;transform:scale(1)}.card.hidden{display:none}.card-top{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:.75rem}.badge{font-size:.75rem;font-weight:700;letter-spacing:.04em;background:var(--bg);border:1.5px solid var(--border);color:var(--muted);padding:.2rem .55rem;border-radius:6px}.card.selected .badge{background:rgba(59,110,246,.1);border-color:rgba(59,110,246,.3);color:var(--accent)}.checkmark{width:22px;height:22px;border-radius:50%;background:var(--accent);display:flex;align-items:center;justify-content:center;opacity:0;transform:scale(.6);transition:opacity .15s,transform .2s cubic-bezier(.34,1.56,.64,1);flex-shrink:0}.checkmark svg{width:12px;height:12px;stroke:#fff;fill:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}.card-name{font-size:1.05rem;font-weight:600;color:var(--text);margin-bottom:.25rem}.card-category{font-size:.8rem;color:var(--muted)}.submit-area{text-align:center;padding-top:1rem}.hint{font-size:.875rem;color:var(--muted);margin-bottom:1rem;min-height:1.25rem}.hint.selected-hint{color:var(--accent);font-weight:500}button[type=submit]{padding:.75rem 2.5rem;background:var(--accent);color:#fff;border:none;border-radius:999px;font-size:1rem;font-weight:600;cursor:pointer;transition:background .15s,transform .1s,opacity .15s;letter-spacing:.01em;box-shadow:0 2px 8px rgba(59,110,246,.3)}button[type=submit]:hover:not(:disabled){background:var(--accent-dark);transform:translateY(-1px)}button[type=submit]:active:not(:disabled){transform:translateY(0)}button[type=submit]:disabled{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none}.state{display:none;text-align:center;padding:3rem 1.5rem}.state.active{display:block}.state-icon{width:64px;height:64px;border-radius:50%;margin:0 auto 1.25rem;display:flex;align-items:center;justify-content:center}.state-icon.success{background:var(--success-bg)}.state-icon.success svg{width:32px;height:32px;stroke:var(--success);fill:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}.state-icon.error{background:#fef2f2}.state-icon.error svg{width:32px;height:32px;stroke:var(--error);fill:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}.state h2{font-size:1.3rem;font-weight:700;margin-bottom:.5rem}.state p{color:var(--muted);font-size:.95rem}.state .sub{margin-top:1.5rem;font-size:.875rem;color:var(--muted)}.state .sub a{color:var(--accent);text-decoration:none;font-weight:500}.state .sub a:hover{text-decoration:underline}.spinner{width:40px;height:40px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite;margin:0 auto 1.25rem}@keyframes spin{to{transform:rotate(360deg)}}.results-list{display:flex;flex-direction:column;gap:.75rem;margin-bottom:2rem}.result-row{background:var(--surface);border:1.5px solid var(--border);border-radius:var(--radius);padding:1rem 1.25rem;box-shadow:var(--shadow)}.result-row.first{border-color:#fbbf24;box-shadow:0 0 0 2px rgba(251,191,36,.2),var(--shadow)}.result-meta{display:flex;align-items:center;gap:.75rem;margin-bottom:.6rem}.result-rank{font-size:.8rem;font-weight:700;color:var(--muted);min-width:1.5rem}.result-row.first .result-rank{color:#d97706}.result-name{font-weight:600;flex:1}.result-votes{font-size:.875rem;color:var(--muted)}.result-votes strong{color:var(--text)}.bar-track{height:6px;background:var(--bg);border-radius:999px;overflow:hidden}.bar-fill{height:100%;background:var(--accent);border-radius:999px;transition:width .6s ease}.result-row.first .bar-fill{background:#f59e0b}.total-badge{display:inline-block;background:var(--surface);border:1.5px solid var(--border);border-radius:999px;padding:.3rem .9rem;font-size:.875rem;color:var(--muted);margin-top:.25rem}.total-badge strong{color:var(--text)}.results-header{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:.5rem;margin-bottom:1.5rem}.back-link{font-size:.875rem;color:var(--accent);text-decoration:none;font-weight:500}.back-link:hover{text-decoration:underline}.toggle-voting-btn{font-size:.875rem;font-weight:600;padding:.35rem .85rem;border:none;border-radius:6px;cursor:pointer;transition:opacity .15s}.toggle-voting-btn:hover{opacity:.85}.toggle-voting-btn.open{background:#fee2e2;color:#b91c1c}.toggle-voting-btn.closed{background:#dcfce7;color:#15803d}@media (max-width:500px){header h1{font-size:1.6rem}.grid{grid-template-columns:1fr}}.card-title{font-size:.8rem;color:var(--muted);margin-bottom:.2rem;line-height:1.4}.verify-badge{display:inline-flex;align-items:center;gap:.45rem;padding:.3rem .8rem;border-radius:999px;border:1.5px solid var(--border);background:var(--surface);font-size:.8rem;font-weight:500;color:var(--muted);margin-bottom:.9rem;transition:border-color .3s,color .3s,background .3s}.verify-badge[data-state=ok]{border-color:var(--success);color:var(--success);background:var(--success-bg)}.verify-badge[data-state=fail]{border-color:var(--error);color:var(--error);background:#fef2f2}.verify-dot{width:7px;height:7px;border-radius:50%;background:var(--muted);flex-shrink:0;transition:background .3s}.verify-badge[data-state=pending] .verify-dot{background:var(--accent);animation:pulse 1.1s ease-in-out infinite}.verify-badge[data-state=ok] .verify-dot{background:var(--success)}.verify-badge[data-state=fail] .verify-dot{background:var(--error)}@keyframes pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.7)}}.card-title{font-size:.95rem;font-weight:600;color:var(--text);margin-bottom:.3rem;line-height:1.35}.card-name{font-size:.78rem;font-weight:400;color:var(--muted);margin-bottom:.2rem}.login-wrap{min-height:80vh;display:flex;align-items:center;justify-content:center}.login-card{background:var(--surface);border:1.5px solid var(--border);border-radius:var(--radius);padding:2.5rem 2rem;width:100%;max-width:340px;box-shadow:var(--shadow);text-align:center}.login-icon{width:52px;height:52px;border-radius:50%;background:var(--accent-light);display:flex;align-items:center;justify-content:center;margin:0 auto 1.25rem;color:var(--accent)}.login-icon svg{width:24px;height:24px}.login-card h1{font-size:1.4rem;font-weight:700;margin-bottom:.3rem}.login-card>p{color:var(--muted);font-size:.875rem;margin-bottom:1.5rem}.login-form{display:flex;flex-direction:column;gap:.75rem}.field input{width:100%;padding:.65rem .9rem;border:1.5px solid var(--border);border-radius:8px;font-size:.95rem;outline:0;transition:border-color .15s;background:var(--bg);color:var(--text)}.field input:focus{border-color:var(--accent);background:var(--surface)}.field-error input{border-color:var(--error)}.field-msg{display:block;font-size:.8rem;color:var(--error);margin-top:.3rem;text-align:left}.login-btn{padding:.7rem;background:var(--accent);color:#fff;border:none;border-radius:8px;font-size:.95rem;font-weight:600;cursor:pointer;transition:background .15s,transform .1s}.login-btn:hover{background:var(--accent-dark);transform:translateY(-1px)}.result-row{opacity:0;transform:translateY(14px);animation:row-in .38s ease forwards}@keyframes row-in{to{opacity:1;transform:translateY(0)}}.bar-fill{width:0!important;transition:width .85s cubic-bezier(.4, 0, .2, 1)}.result-info{flex:1;min-width:0}.result-title{font-weight:600;font-size:.95rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.result-author{font-size:.78rem;color:var(--muted);margin-top:.1rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.result-ts{opacity:.7}.vote-pct{font-size:.78rem;color:var(--muted);margin-left:.2rem}.empty-msg{color:var(--muted);text-align:center;padding:2rem 0}.chart-card{background:var(--surface);border:1.5px solid var(--border);border-radius:var(--radius);padding:1.25rem 1.25rem 1rem;box-shadow:var(--shadow);margin-bottom:1.75rem}.chart-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.chart-title{font-weight:600;font-size:.95rem;color:var(--text)}.chart-wrap{position:relative;height:300px}.replay-btn{display:inline-flex;align-items:center;gap:.35rem;padding:.3rem .75rem;border:1.5px solid var(--border);border-radius:999px;background:var(--surface);color:var(--muted);font-size:.8rem;font-weight:500;cursor:pointer;transition:border-color .15s,color .15s}.replay-btn svg{width:13px;height:13px}.replay-btn:hover{border-color:var(--accent);color:var(--accent)}.result-num-inline{display:inline-block;font-size:.7rem;font-weight:700;letter-spacing:.04em;background:var(--bg);border:1.5px solid var(--border);color:var(--muted);padding:.1rem .4rem;border-radius:5px;margin-right:.4rem;vertical-align:middle;white-space:nowrap;flex-shrink:0}.result-row.first .result-num-inline{background:rgba(245,158,11,.1);border-color:rgba(245,158,11,.4);color:#d97706}