.vote-page { min-height:100vh; background:var(--bg-1,#FCFBFA); color:var(--fg-1,#1d1d1c); }
.vote-page [hidden] { display:none !important; }
.vote-page .announcement-banner-label { display:none; }
.vote-page .announcement-banner { min-height:110px; padding:16px; }
.vote-page .announcement-banner-body { justify-content:center; }
.vote-page .ann-countdown { margin:0; }
.vote-open-message { margin:0; padding:24px 16px; text-align:center; font-size:22px; font-weight:700; background:linear-gradient(110deg,#a8d4d8,#fda2c5); }
.vote-main { width:min(100% - 40px,920px); margin:0 auto; text-align:center; padding:30px 0 64px; }
.vote-main h1 { font-family:var(--font-body); font-size:18px; font-weight:600; letter-spacing:.03em; margin:0 0 20px; }
.vote-logo { display:block; width:min(100%,400px); height:auto; margin:0 auto 22px; }
.vote-actions { max-width:440px; margin:0 auto; }
.vote-button {
 display:flex; align-items:center; justify-content:center; gap:14px; width:100%; min-height:78px;
 padding:12px 22px; border:2px solid; border-bottom-width:5px; border-radius:18px;
 font:800 21px var(--font-body); text-decoration:none; cursor:pointer;
 box-shadow:0 5px 12px rgb(0 0 0 / .12),inset 0 1px 0 rgb(255 255 255 / .4);
 transition:transform .15s,box-shadow .15s,filter .15s;
}
.vote-button:hover:not(:disabled) { transform:translateY(-2px); filter:brightness(1.04); box-shadow:0 8px 16px rgb(0 0 0 / .18),inset 0 1px 0 rgb(255 255 255 / .4); }
.vote-button:active:not(:disabled) { transform:translateY(2px); box-shadow:0 1px 4px rgb(0 0 0 / .15); }
.vote-text { background:linear-gradient(#fff,#e8faed); color:#14532d; border-color:#198448; }
.vote-tiktok { background:linear-gradient(#333338,#17171a); color:#fff; border-color:#08080a; }
.vote-app-icon { display:inline-flex; align-items:center; justify-content:center; width:46px; height:46px; border-radius:11px; flex:0 0 46px; box-shadow:inset 0 0 0 1px rgb(255 255 255 / .22); }
.vote-app-icon svg { display:block; width:38px; height:38px; }
.vote-messages-icon { background:linear-gradient(#60f46a,#0ac837); }
.vote-tiktok-icon { background:#08080a; }
.vote-tiktok-icon svg { width:34px; height:34px; }
.vote-button:disabled { opacity:.45; cursor:not-allowed; transform:none; box-shadow:none; }
@media (prefers-reduced-motion:reduce) { .vote-button { transition:none; } }
.vote-text-instructions { margin:10px 0 0; font-size:13px; overflow-wrap:anywhere; line-height:1.6; }
.vote-plus { font:400 58px/1 var(--font-body); color:#625dc7; margin:10px 0 14px; }
.vote-section { margin:36px auto 0; padding:26px 0 0; border-top:1px solid var(--border,#dedbd7); }
.vote-section h2 { font:400 32px/1.15 var(--font-display); margin:0 0 14px; }
.vote-section > p { font-size:15px; line-height:1.7; margin:0 auto 18px; max-width:64ch; }
.vote-notes { white-space:pre-wrap; }
.vote-download-button { display:inline-flex; align-items:center; justify-content:center; min-height:46px; border:1px solid var(--border,#dedbd7); border-radius:10px; padding:10px 18px; color:var(--fg-1); text-decoration:none; background:var(--bg-2); font-weight:600; font-size:14px; }
.vote-downloads { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr)); gap:24px; max-width:740px; margin:22px auto 0; }
.vote-downloads figure { margin:0; padding:20px; border:1px solid var(--border); border-radius:16px; background:var(--bg-2); }
.vote-downloads img { width:100%; max-width:300px; height:auto; display:block; margin:0 auto; object-fit:contain; }
.vote-downloads figcaption p { font-size:15px; margin:16px 0 8px; }
.vote-downloads small { display:block; margin:0 0 12px; color:var(--fg-2); }
.vote-download-button { margin-top:8px; background:var(--bg-1); }
.vote-page a:focus-visible { outline:3px solid #625dc7; outline-offset:4px; }
@media(max-width:600px) {
 .vote-page .announcement-banner { min-height:100px; }
 .vote-main { width:calc(100% - 32px); padding-top:24px; }
 .vote-main h1 { font-size:15px; margin-bottom:18px; }
 .vote-logo { width:min(100%,290px); margin-bottom:18px; }
 .vote-button { font-size:19px; min-height:74px; padding:11px 16px; gap:12px; }
 .vote-app-icon { width:42px; height:42px; flex-basis:42px; }
 .vote-app-icon svg { width:35px; height:35px; }
 .vote-tiktok-icon svg { width:31px; height:31px; }
 .vote-section { margin-top:28px; padding-top:22px; }
 .vote-section h2 { font-size:28px; }
}

.vote-image-actions { display:flex; align-items:center; justify-content:center; gap:10px; margin-top:12px; }
.vote-image-actions .vote-download-button { margin:0; gap:9px; }
.vote-image-actions svg { width:20px; height:20px; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
.vote-share-button { display:inline-flex; align-items:center; justify-content:center; width:46px; height:46px; border:1px solid var(--border,#dedbd7); border-radius:10px; background:var(--bg-1); color:var(--fg-1); cursor:pointer; }
.vote-share-button:hover { border-color:var(--fg-1); }
.vote-share-button:disabled { opacity:.5; cursor:wait; }
.vote-share-button:focus-visible { outline:3px solid #625dc7; outline-offset:4px; }
.vote-share-status { white-space:pre-wrap; font-size:13px; line-height:1.5; margin:10px 0 0; }
.vote-share-status:empty { display:none; }

.vote-step { display:block; margin:0 0 10px; color:#625dc7; font:800 15px/1.4 var(--font-body); letter-spacing:.09em; text-transform:uppercase; }

/* Desktop refinements; the approved mobile layout keeps its existing flow. */
.vote-share-label, .vote-back-link { display:none; }
@media (min-width:601px) {
 .vote-sticker-caption { display:none; }
 .vote-share-label { display:inline; }
 .vote-share-button { width:auto; gap:9px; padding:10px 18px; font:600 14px var(--font-body); }
 .vote-back-link { display:block; margin:32px 0 0; }
 .vote-back-link a { display:inline-flex; align-items:center; min-height:44px; color:#625dc7; font-size:14px; text-underline-offset:3px; }
}

.vote-howto { max-width:440px; margin:14px auto 0; padding:14px 16px; border:1px solid var(--border,#dedbd7); border-radius:10px; background:var(--bg-2); text-align:left; }
.vote-howto h2 { margin:0 0 6px; font:700 15px/1.4 var(--font-body); }
.vote-howto p { margin:0; color:var(--fg-2); font-size:14px; line-height:1.6; white-space:pre-wrap; overflow-wrap:anywhere; }

.vote-social-icons { display:flex; align-items:center; justify-content:center; flex-wrap:wrap; gap:8px; margin:24px auto 0; }
.vote-social-icons a { display:inline-flex; align-items:center; justify-content:center; width:44px; height:44px; color:var(--fg-1); opacity:.8; }
.vote-social-icons a:hover { color:#625dc7; opacity:1; }
.vote-social-icons span, .vote-social-icons svg { display:block; width:26px; height:26px; }

.vote-share-intro { white-space:pre-wrap; }

.vote-howto h2, .vote-share-intro, .vote-image-actions span { overflow-wrap:anywhere; }
.vote-image-actions a, .vote-image-actions button, .vote-image-actions span { min-width:0; }
.vote-image-actions svg { flex-shrink:0; }

#vote:empty { display:none; }
.home-vote-content { min-height:0; background:transparent; }
.home-vote-content .vote-main { padding:40px 0; }
.home-vote-heading { font:600 18px var(--font-body); margin:0 0 22px; }
.home-vote-link { margin:24px 0 0; }
.home-vote-link a { display:inline-flex; align-items:center; min-height:44px; color:#625dc7; font-weight:600; }

#vote { padding:0; background:var(--bm-cool, #edf4f4); }
