:root{--cream:#fffff8;--wine:#91354b;--ink:#75283c;--line:#d9b9bd;color:var(--ink);background:var(--cream);font-family:Georgia,'Times New Roman',serif;font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button{cursor:pointer;min-height:48px}button:disabled{cursor:default}button:focus,input:focus,[tabindex]:focus{outline:none}button:focus-visible,input:focus-visible,[tabindex]:focus-visible{outline:none}button.primary{border:1px solid var(--wine);background:var(--wine);color:var(--cream);padding:14px 32px;border-radius:3px;font:16px Arial,sans-serif;letter-spacing:.03em;min-width:190px}button.primary:hover:not(:disabled){background:#77273b}.back{position:fixed;top:max(16px,env(safe-area-inset-top));left:max(16px,env(safe-area-inset-left));width:48px;border:1px solid var(--line);background:var(--cream);color:var(--wine);border-radius:50%;font:26px Arial;z-index:10}.screen{min-height:100svh;min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:85px max(24px,env(safe-area-inset-right)) max(32px,env(safe-area-inset-bottom));text-align:center}.landing{padding-top:24px;gap:0}.landing img{display:block;width:min(420px,86vw);max-height:72svh;object-fit:contain}.landing .primary{margin:8px 0 20px;background:transparent;color:var(--wine)}.landing .primary:hover{color:var(--cream)}.eyebrow{font:12px Arial,sans-serif;letter-spacing:.19em;text-transform:uppercase;margin:0 0 36px}h1{font-weight:400;font-size:clamp(32px,6vw,54px);line-height:1.13;margin:0 0 24px;max-width:660px}h1:focus{outline:none}p{font-size:18px;line-height:1.6}form{width:min(100%,340px);text-align:left;margin-top:14px}label{display:block;font:16px Arial;margin-bottom:12px}input{display:block;width:100%;height:54px;border:1px solid var(--line);background:transparent;padding:12px;color:var(--ink);border-radius:3px;font-size:18px}form .primary{width:100%;margin-top:12px}.error{min-height:44px;margin:8px 0 0;font:14px/1.5 Arial;color:#9b2338}.rule{width:48px;height:1px;background:var(--wine);margin:8px 0 28px}.track{position:relative;width:min(460px,100%);height:102px;border:1px solid var(--line);border-radius:8px;margin:34px 0 18px;background:#f4efe7;isolation:isolate}.track:before{content:'';position:absolute;top:50%;left:32px;right:32px;border-top:2px dashed #c8b8ab;z-index:-1}.plane{position:absolute;top:19px;left:8px;width:62px;height:62px;display:grid;place-items:center;border:1px solid var(--wine);border-radius:50%;background:var(--cream);color:var(--wine);touch-action:none;user-select:none;transition:transform .3s ease;z-index:2}.plane.dragging{transition:none}.plane svg{width:38px;height:38px}.building{position:absolute;right:14px;bottom:17px;width:49px;height:68px;color:#8c716c}.impact{position:absolute;right:0;top:6px;background:#ffe251;color:#552533;font:bold 19px Arial;padding:16px 9px;transform:rotate(-12deg);clip-path:polygon(0 22%,25% 24%,31% 0,52% 18%,79% 0,80% 25%,100% 34%,85% 60%,100% 85%,68% 82%,50% 100%,36% 79%,5% 92%,14% 60%);z-index:3;animation:pop .35s both}.keyboard-note{font:14px/1.6 Arial;color:#795c60;max-width:330px}.status{font-size:22px;min-height:36px;margin:12px 0}.promo{background:#fff4c9;color:#342148;font-family:Arial,sans-serif;gap:0}.banner{font-size:12px;letter-spacing:.12em;font-weight:800;background:#342148;color:#fff4c9;padding:12px 20px;border-radius:30px;margin-bottom:20px}.promo h1{font:bold clamp(29px,5vw,44px)/1.07 Arial;max-width:500px;margin-bottom:24px}.wheel-wrap{width:min(440px,100%);position:relative;aspect-ratio:1;filter:drop-shadow(0 8px 0 #34214820)}.wheel{width:100%;height:100%;display:block;transform:rotate(0deg);overflow:visible}.pointer{position:absolute;z-index:3;top:-13px;left:calc(50% - 15px);width:30px;height:39px;background:#342148;clip-path:polygon(0 0,100% 0,50% 100%)}.wheel text{font:bold 16px Arial;fill:#302040;text-anchor:middle}.wheel .winning{stroke:#fff;stroke-width:5;filter:brightness(1.12)}.spin{background:#342148;color:white;border:3px solid #342148;border-radius:50px;font:bold 20px Arial;letter-spacing:.09em;padding:14px 48px;margin-top:26px;box-shadow:0 4px 0 #d094ba}.spin:disabled{opacity:.65}.promo .status{font:bold 16px/1.4 Arial;margin-top:20px;min-height:44px;max-width:340px}.reveal{position:relative;overflow:hidden}.reveal h1{font-size:clamp(40px,7vw,76px);max-width:750px}.reveal .message{max-width:430px;margin-top:4px}.reveal .ornament{font-size:40px;margin-bottom:26px}.reveal .entrance{display:flex;align-items:center;flex-direction:column;animation:entrance 1s ease both}.confetti{position:absolute;top:-20px;width:8px;height:15px;background:var(--wine);pointer-events:none;animation:fall 3s ease-out forwards}.signature{margin-top:36px;font-style:italic;font-size:17px}@keyframes entrance{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes pop{from{transform:scale(.2) rotate(-12deg)}to{transform:scale(1) rotate(-12deg)}}@keyframes fall{to{transform:translate(var(--drift),110vh) rotate(650deg);opacity:0}}@media(max-width:380px){.screen{padding-left:20px;padding-right:20px}.promo{padding-top:80px}.banner{font-size:11px;padding:10px 12px}.wheel text{font-size:17px}.promo h1{font-size:29px}.landing{padding-top:20px}.eyebrow{margin-bottom:25px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}.confetti{display:none}}
/* Keep segment copy legible at the minimum supported viewport. */
.wheel text{font-size:20px}
@media(max-width:380px){.wheel text{font-size:20px}}
/* Cartoon verification aftermath. */
.complete .building{transform-origin:bottom;animation:collapse .4s ease-in forwards}.complete .plane{opacity:0;transition:transform .2s,opacity .15s .15s}.impact{right:-8px;top:-43px;padding:23px 18px;font-size:18px}.ruins{position:absolute;width:86px;height:40px;right:0;bottom:15px;animation:entrance .3s both}.smoke{position:absolute;right:16px;bottom:34px;width:60px;height:60px;pointer-events:none}.smoke i{position:absolute;bottom:0;left:18px;width:32px;height:32px;border-radius:50%;background:#ada7a1;animation:smoke 1.8s ease-out both}.smoke i:nth-child(2){animation-delay:.2s;left:0}.smoke i:nth-child(3){animation-delay:.4s;left:30px}.smoke i:nth-child(4){animation-delay:.6s;left:15px}@keyframes smoke{0%{opacity:0;transform:translateY(0) scale(.4)}20%{opacity:.7}100%{opacity:0;transform:translateY(-110px) scale(2)}}@keyframes collapse{to{transform:scaleY(.12) rotate(12deg);opacity:0}}
/* Shameless discount-store energy. */
.promo{background:radial-gradient(ellipse at 50% 45%,#ffb523 0,transparent 60%),#ff471b;color:#391746;padding-top:76px;padding-bottom:30px}.promo-brand{font:900 16px Arial;letter-spacing:.16em;color:white;margin-bottom:18px}.promo .banner{background:#fcff62;color:#3e1943;box-shadow:3px 3px 0 #9f2414;border-radius:3px;transform:rotate(-2deg);margin-bottom:18px}.promo h1{font:900 clamp(34px,5vw,58px)/.98 Arial;letter-spacing:-.05em;color:white;text-shadow:3px 3px 0 #b82539;margin-bottom:12px}.promo-copy{font:15px/1.5 Arial;color:#fff;margin:0 0 26px}.promo .wheel-wrap{width:min(390px,100%);border-radius:50%;box-shadow:0 0 0 7px #fff38a,0 0 0 13px #e72755,0 12px 0 13px #a82428;filter:none}.promo .pointer{background:#fff;filter:drop-shadow(0 3px 0 #45224a);top:-17px}.promo .spin{background:#dbff59;color:#321347;border:3px solid #321347;box-shadow:0 6px 0 #321347;margin-top:26px;min-width:220px;transition:transform .15s}.promo .spin:hover:not(:disabled){transform:translateY(-2px)}.promo .spin:disabled{opacity:.75}.promo .status{color:#fff;font-weight:700;margin-bottom:0}.promo-footnote{font:12px/1.4 Arial;color:#fff;margin:8px 0 0}.prize-ticket{width:min(390px,100%);background:#fffbea;border:2px dashed #462143;padding:20px 16px 0;margin-top:26px;box-shadow:5px 6px 0 #9d283c;animation:entrance .4s both}.prize-ticket[hidden]{display:none}.prize-ticket strong{display:block;font:900 clamp(23px,5vw,32px) Arial;margin:10px 0}.prize-ticket>span{display:block;font:16px/1.4 Arial}.prize-ticket .ticket-label{font-size:10px;letter-spacing:.06em;font-weight:800}.bonus{background:#d8ff59;border-top:2px dashed #462143;margin:18px -16px 0;padding:14px 4px;font:bold 16px Arial}
/* A celebratory poster, with a deliberately separate name line. */
.reveal{background:radial-gradient(ellipse at 15% 10%,#624fbb,transparent 55%),radial-gradient(ellipse at 90% 95%,#512972,transparent 60%),#241d4a;color:#fff7e9}.reveal .eyebrow{color:#d6fd79;font-weight:bold;letter-spacing:.25em}.reveal .ornament{color:#ff9dce;font-size:64px;line-height:1;margin-bottom:24px}.reveal h1{max-width:none;width:100%;font-family:Georgia,serif}.reveal-name{display:block;font-style:italic;font-size:clamp(70px,12vw,150px);line-height:1.1;color:#d8ff79;margin-bottom:18px;letter-spacing:-.06em}.reveal-question{display:block;font:700 clamp(70px,12vw,150px)/1.05 Arial;letter-spacing:-.045em;white-space:normal;overflow-wrap:break-word}.reveal .rule{background:#ff9dce;margin-top:20px}.reveal .message{font:18px/1.6 Arial;max-width:440px;color:#e3dcef}.reveal .signature{color:#ffbddd}.reveal .entrance{width:100%;max-width:1150px}.reveal h1:focus-visible{outline:none}@media(prefers-reduced-motion:reduce){.smoke{display:none}.complete .building{opacity:0}}
/* Rotating SVG bounds must not widen the page on narrow screens. */
.promo{overflow-x:clip}

.verify .status{max-width:440px;line-height:1.4}.verify-continue{margin-top:18px}
/* Unashamedly tacky, slow pulses rather than flashing. */
.promo .banner{animation:deal-glow 1.8s ease-in-out infinite alternate}
.promo .spin:not(:disabled){animation:spin-pulse 1.3s ease-in-out infinite alternate}
.promo .wheel-wrap{animation:wheel-glow 2s ease-in-out infinite alternate}
.promo .bonus{animation:bonus-glow 1.4s ease-in-out infinite alternate}
@keyframes deal-glow{to{box-shadow:3px 3px 0 #9f2414,0 0 28px #fff86b;transform:rotate(2deg) scale(1.03)}}
@keyframes spin-pulse{to{transform:scale(1.06);box-shadow:0 6px 0 #321347,0 0 20px 8px #dfff7299}}
@keyframes wheel-glow{to{box-shadow:0 0 0 7px #fff38a,0 0 0 13px #e72755,0 12px 0 13px #a82428,0 0 36px 18px #ffed8c}}
@keyframes bonus-glow{to{background:#ffed67;text-shadow:0 0 12px #fff;box-shadow:0 0 20px #ddff67}}
@media(prefers-reduced-motion:reduce){.promo .banner,.promo .spin:not(:disabled),.promo .wheel-wrap,.promo .bonus{animation:none}}
/* Glow travels with the wheel, independently of its rotation animation. */
.promo .wheel{animation:wheel-face-glow 1.6s ease-in-out infinite alternate}
@keyframes wheel-face-glow{from{filter:drop-shadow(0 0 4px #fff270)}to{filter:brightness(1.12) drop-shadow(0 0 15px #fff270) drop-shadow(0 0 25px #ff72da)}}
/* Shared reveal typography at 80% of the previous size. */
.reveal-name,.reveal-question{font-family:Georgia,'Times New Roman',serif;font-size:clamp(56px,9.6vw,120px);font-weight:400;font-style:italic;line-height:1.1;letter-spacing:-.06em;color:#d8ff79}
@media(prefers-reduced-motion:reduce){.promo .wheel{animation:none}}
/* Keep the large question and its supporting message together. */
.reveal{padding-top:max(70px,env(safe-area-inset-top));padding-bottom:max(24px,env(safe-area-inset-bottom))}
.reveal .eyebrow{margin-bottom:clamp(14px,3dvh,28px)}
.reveal .ornament{font-size:clamp(30px,6dvh,48px);margin-bottom:clamp(12px,2dvh,20px)}
.reveal-name,.reveal-question{font-size:clamp(34px,min(7.5vw,8dvh),92px);line-height:1.06}
.reveal-name{margin-bottom:12px}
.reveal h1{margin-bottom:12px}
.reveal .rule{margin:12px 0 18px}
.reveal .message{font-size:clamp(16px,2.4dvh,18px);line-height:1.45;margin:0;max-width:440px}
.reveal .signature{margin:clamp(16px,3dvh,30px) 0 0}
@media(max-height:650px){
 .reveal .ornament{display:none}
 .reveal .eyebrow{margin-bottom:16px}
}
/* Prize results sit over the unchanged wheel. */
.prize-dialog{position:fixed;inset:0;margin:auto;width:min(430px,calc(100vw - 32px));max-height:calc(100dvh - 40px);padding:40px 24px 28px;border:3px solid #391746;border-radius:16px;background:#fffbea;color:#391746;text-align:center;box-shadow:0 12px 0 #391746,0 0 45px #ffe74388;overflow:auto;font-family:Arial,sans-serif}
.prize-dialog::backdrop{background:#321347aa;backdrop-filter:blur(4px)}
.prize-dialog[open]{animation:entrance .25s ease both}
.prize-dialog .prize-ticket{width:100%;margin:0;padding:0;border:0;box-shadow:none;background:transparent;animation:none}
.prize-dialog .prize-ticket h2{font:900 clamp(26px,6vw,36px)/1.1 Arial;margin:16px 0;color:#391746}
.prize-dialog .bonus{margin:22px -24px 0;padding:16px 4px}
.prize-dialog .status{color:#391746;margin:18px 0 0;min-height:0;font-size:16px}
.prize-dialog .spin{margin-top:22px;min-width:0;width:100%;font-size:20px}
.prize-dialog .dialog-close{position:absolute;right:4px;top:4px;width:44px;height:44px;border:0;background:transparent;color:#391746;font:28px Arial}
.prize-dialog .mystery-icon{display:block;font-size:52px;margin:4px 0 12px}
@media(prefers-reduced-motion:reduce){.prize-dialog[open]{animation:none}}
.prize-dialog .status:empty{display:none}
/* A paper scrapbook: image files, colours and aspect ratios stay untouched. */
.reveal{background:#f6f0e5;color:#293b43;overflow:clip;padding:76px 32px 32px}
.reveal .scrapbook-layout{display:grid;grid-template-columns:minmax(240px,.85fr) minmax(0,1.35fr);gap:clamp(28px,4vw,64px);align-items:center;width:100%;max-width:1220px}
.reveal-note{text-align:left;min-width:0}
.reveal-name,.reveal-question{color:#293b43;font-family:Georgia,'Times New Roman',serif;font-size:clamp(34px,4.2vw,60px);line-height:1.08;letter-spacing:-.04em;font-style:normal}
.reveal-name{color:#a75136;margin-bottom:12px;font-style:italic}
.reveal .rule{display:block;width:44px;background:#a75136;margin:24px 0}
.reveal .message{color:#43535b;font-size:17px;max-width:350px;line-height:1.55}
.reveal .signature{color:#a75136;font-size:19px;margin-top:22px}
.scrapbook{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px 12px;align-items:center;padding:8px}
.photo-card{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:0;width:100%;padding:7px 7px 5px;border:1px solid #e3dacb;background:#fffdf8;box-shadow:0 3px 9px #40301e22;transform:rotate(var(--tilt));transition:transform .2s,box-shadow .2s;border-radius:1px;position:relative}
.photo-card img{display:block;width:100%;height:clamp(72px,12dvh,125px);object-fit:contain;filter:none}
.photo-card span{font:11px Georgia,serif;color:#8b7b66;margin:6px 0 1px}
.photo-card:hover{transform:rotate(0deg) translateY(-3px);box-shadow:0 7px 18px #40301e33;z-index:1}
.photo-viewer{position:fixed;inset:0;margin:auto;padding:54px 18px 12px;border:1px solid #e3dacb;border-radius:6px;background:#fffdf8;color:#293b43;width:min(1000px,calc(100vw - 28px));max-width:calc(100vw - 28px);max-height:calc(100dvh - 28px);box-shadow:0 20px 80px #0005;overflow:auto}
.photo-viewer::backdrop{background:#19282ed9;backdrop-filter:blur(5px)}
.photo-viewer img{display:block;width:100%;height:calc(100dvh - 150px);max-height:800px;object-fit:contain;filter:none}
.photo-close{position:absolute;top:5px;right:7px;width:44px;height:44px;background:transparent;color:#293b43;border:0;font:30px Arial;cursor:pointer}
.photo-count{margin:9px 0 0;text-align:center;font:13px Arial;color:#736953}
body:has(.photo-viewer[open]){overflow:hidden}
@media(max-width:760px){
 .reveal{padding:74px 20px 30px}
 .reveal .scrapbook-layout{grid-template-columns:1fr;gap:26px;max-width:560px}
 .reveal-note{text-align:center}
 .reveal-name,.reveal-question{font-size:clamp(32px,6vw,42px)}
 .reveal-name{margin-bottom:6px}
 .reveal .rule{margin:16px auto}
 .reveal .message{margin:auto;font-size:16px;max-width:390px}
 .reveal .signature{margin-top:14px;font-size:17px}
 .scrapbook{gap:12px 8px}
 .photo-card{padding:5px 5px 3px}
 .photo-card img{height:clamp(62px,18vw,105px)}
}
@media(prefers-reduced-motion:reduce){.photo-card{transition:none}}
.photo-card{padding-bottom:7px}
.photo-navigation{display:flex;align-items:center;justify-content:center;gap:24px;margin-top:10px}
.photo-navigation button{width:48px;height:48px;min-height:48px;border:1px solid #d6ccbc;border-radius:50%;background:#f6f0e5;color:#293b43;font:24px Arial;cursor:pointer}
.photo-navigation button:hover{background:#e9dfcf}
.photo-navigation .photo-count{margin:0;min-width:52px}
.photo-viewer img{height:calc(100dvh - 190px)}
/* Laptop scrapbook: scattered photographs surround a clear central note. */
@media(min-width:900px){
 .reveal{padding:16px}
 .reveal .scrapbook-layout{display:block;position:relative;width:100%;max-width:1440px;height:calc(100dvh - 32px);min-height:620px}
 .reveal-note{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:46%;max-width:610px;text-align:center;z-index:2}
 .reveal-name,.reveal-question{font-size:clamp(36px,3.7vw,56px);line-height:1.1}
 .reveal .rule{margin:20px auto}
 .reveal .message{margin:0 auto;max-width:390px}
 .reveal .signature{margin-top:20px}
 .scrapbook{display:block;position:absolute;inset:0;padding:0;pointer-events:none}
 .photo-card{position:absolute;left:var(--photo-x);top:var(--photo-y);width:clamp(105px,12vw,165px);padding:7px 7px 11px;transform:translate(-50%,-50%) rotate(var(--tilt));pointer-events:auto}
 .photo-card img{height:clamp(82px,15dvh,140px);width:100%;object-fit:contain}
 .photo-card:hover{transform:translate(-50%,-50%) rotate(0deg) scale(1.06);z-index:3}
}
