:root{--bg:#efefef;--surface:#fff;--text:#1d1b1b;--muted:#444;--berry-700:#b3074f;--berry-800:#93013f;--berry-900:#760132;--line:#d7d7d7;--shadow-soft:0 22px 52px rgba(64,14,30,.2);--shadow-card:0 14px 30px rgba(68,17,37,.22);--radius-xl:26px;--radius-pill:999px}body.modal-open{overflow:hidden}.intro{margin:clamp(56px,7vw,88px) auto 0;max-width:760px;text-align:center}.intro p{color:#1e1c1c;font-size:clamp(1.1rem,2.2vw,2.8rem);font-weight:800;line-height:1.2;margin:0}.contestants{margin-top:clamp(48px,7vw,76px)}.grid{display:grid;gap:clamp(28px,4vw,56px) clamp(18px,2.2vw,34px);grid-template-columns:repeat(3,minmax(210px,1fr))}.candidate-card{animation:rise-in .58s ease forwards;animation-delay:calc(var(--i)*75ms + .12s);opacity:0;text-align:center;transform:translateY(18px)}.candidate-image-button{background:transparent;border:0;border-radius:10px;cursor:pointer;margin:0 auto;max-width:230px;padding:0;width:100%}.candidate-image{filter:drop-shadow(0 10px 16px rgba(46,17,25,.3));transition:transform .21s ease,filter .21s ease;width:100%}.candidate-image-button:focus-visible .candidate-image,.candidate-image-button:hover .candidate-image{filter:drop-shadow(0 16px 22px rgba(46,17,25,.34));transform:translateY(-4px) scale(1.012)}.candidate-name{font-size:clamp(1.3rem,1.85vw,1.65rem);font-weight:800;line-height:1.12;margin:14px 0 0}.candidate-city{color:#222;font-size:clamp(1.16rem,1.45vw,1.32rem);line-height:1.12;margin:4px 0 0}.vote-link{background:transparent;border:0;color:var(--berry-700);cursor:pointer;font-family:Nunito Sans,sans-serif;font-size:clamp(1.02rem,1.3vw,1.16rem);font-weight:800;margin:8px 0 0;padding:0}.vote-link:focus-visible,.vote-link:hover{color:var(--berry-900);text-decoration:underline}.modal-backdrop{animation:fade-in .19s ease;background:hsla(0,3%,6%,.42);display:grid;inset:0;padding:20px;place-items:center;position:fixed;z-index:40}.modal-backdrop[hidden]{display:none}.modal-card{background:var(--surface);border-radius:var(--radius-xl);box-shadow:var(--shadow-soft);min-height:min(680px,85vh);overflow:auto;padding:clamp(30px,4vw,54px) clamp(22px,4vw,48px);position:relative;width:min(760px,95vw)}.modal-close{background:#fff;border:1px solid #d4d4d4;border-radius:50%;color:#444;cursor:pointer;font-size:1.3rem;height:38px;line-height:1;position:absolute;right:14px;top:12px;width:38px}.modal-step{display:none;margin:0 auto;max-width:460px;text-align:center}.modal-step.is-active{animation:pop-in .26s ease;display:block}.modal-title{font-size:clamp(1.5rem,2.2vw,2rem);line-height:1.25;margin:10px 0 6px}.modal-lead{color:#2f2c2c;font-size:clamp(1rem,1.3vw,1.12rem);line-height:1.35;margin:0}.selected-finalist{color:var(--berry-700);font-size:1rem;font-weight:800;margin:12px 0 0}.vote-form{margin-top:22px}.vote-form input[type=email],.vote-form input[type=tel],.vote-form input[type=text]{background:#fbfbfb;border:1px solid #cecece;border-radius:var(--radius-pill);font-size:1rem;height:56px;margin-bottom:12px;outline:none;padding:0 22px;width:100%}.vote-form input:focus{border-color:var(--berry-700);box-shadow:0 0 0 3px rgba(179,7,79,.16)}.consent{align-items:flex-start;color:#3e3b3b;display:flex;font-size:.96rem;gap:10px;margin-top:10px;text-align:left}.consent input{margin-top:2px}.consent a{color:#2a2a2a}.primary-btn{background:var(--berry-700);border:0;border-radius:var(--radius-pill);color:#fff;cursor:pointer;font-size:1rem;font-weight:800;height:50px;margin-top:24px;min-width:142px;padding:0 26px;transition:transform .16s ease,background-color .16s ease}.primary-btn:focus-visible,.primary-btn:hover{background:var(--berry-800);transform:translateY(-2px)}.thanks-wrap{display:grid;min-height:420px;place-items:center}.thanks-wrap .modal-title{margin-bottom:10px}@keyframes float-in{0%{opacity:0;transform:translateY(18px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes rise-in{to{opacity:1;transform:translateY(0)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes pop-in{0%{opacity:0;transform:translateY(8px) scale(.99)}to{opacity:1;transform:translateY(0) scale(1)}}@media (max-width:980px){.grid{grid-template-columns:repeat(2,minmax(180px,1fr))}}@media (max-width:680px){.intro{margin-top:44px}.grid{gap:32px;grid-template-columns:1fr}.candidate-image-button{max-width:260px}.modal-card{min-height:min(560px,88vh);padding:24px 16px 28px;width:min(520px,96vw)}.modal-close{right:10px;top:10px}.vote-form input[type=email],.vote-form input[type=tel],.vote-form input[type=text]{font-size:16px;height:52px}.thanks-wrap{min-height:320px}}