:root{--ink: #1a0f0c;--cream: #fff7f2;--blush: #f3c4b4;--cocoa: #5c2e24;--gold: #d4a24c;--teal: #1f9e95;--red: #e0453a;--blue: #2f7fd1;--orange: #ef7a28;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);color-scheme:light}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;min-height:100%}body{font-family:Manrope,system-ui,sans-serif;color:var(--ink);background:var(--ink);overflow-x:hidden}button{font:inherit;cursor:pointer;border:0;background:none;color:inherit}.atmosphere{position:fixed;inset:0;z-index:0;pointer-events:none}.atmosphere__photo{position:absolute;inset:-8%;background:url(/cakes.jpg) center / cover no-repeat;filter:saturate(1.05) contrast(1.05);transform:scale(1.08);animation:drift 22s ease-in-out infinite alternate}.atmosphere__veil{position:absolute;inset:0;background:radial-gradient(ellipse 80% 55% at 50% 18%,rgba(255,247,242,.88),transparent 70%),linear-gradient(180deg,#1a0f0c59,#1a0f0cb8 42%,#1a0f0ceb)}@keyframes drift{0%{transform:scale(1.08) translateZ(0)}to{transform:scale(1.14) translate3d(-2%,1.5%,0)}}.stage{position:relative;z-index:1;width:min(100%,430px);margin:0 auto;min-height:100svh;padding:calc(1.1rem + var(--safe-top)) 1.15rem calc(1.5rem + var(--safe-bottom));display:flex;flex-direction:column;align-items:center;gap:1rem}.brand{text-align:center;color:var(--cream);animation:rise .7s ease both}.brand__mark{margin:0;font-family:Fraunces,Georgia,serif;font-size:clamp(1.55rem,6.4vw,2rem);font-weight:700;letter-spacing:-.02em;line-height:1.1;text-shadow:0 2px 18px rgba(0,0,0,.35)}.brand__title{margin:.35rem 0 0;font-family:Manrope,sans-serif;font-size:.78rem;font-weight:800;letter-spacing:.28em;text-transform:uppercase;color:var(--gold)}.brand__sub{margin:.45rem 0 0;font-size:.92rem;font-weight:500;opacity:.88}.brand__order{display:inline-block;margin-top:.75rem;color:#fff;font-weight:800;text-decoration:none;border-bottom:1px solid rgba(255,255,255,.55)}.review{width:100%;display:grid;justify-items:center;gap:.45rem;padding:.85rem 1rem .95rem;border-radius:1.15rem;background:#fff7f2f0;box-shadow:0 10px 30px #0000002e;animation:rise .7s ease .08s both}.review__ring{width:4.4rem;height:4.4rem;border-radius:50%;display:grid;place-items:center;background:conic-gradient(#4285f4 0 25%,#ea4335 0 50%,#fbbc05 0 75%,#34a853 0 100%);padding:.22rem;transition:transform .25s ease}.review__ring:hover,.review__ring:focus-visible{transform:scale(1.04)}.review__logo{width:100%;height:100%;border-radius:50%;display:grid;place-items:center;background:#fff;font-family:Manrope,sans-serif;font-weight:800;font-size:1.55rem;background-image:linear-gradient(120deg,#4285f4,#ea4335 40%,#fbbc05 70%,#34a853);-webkit-background-clip:text;background-clip:text;color:transparent}.review__stars{display:flex;gap:.2rem}.star{font-size:1.45rem;line-height:1;color:#c9c2bc;transition:color .15s ease,transform .15s ease}.star.is-active,.star.is-preview{color:#f4b400;transform:translateY(-1px) scale(1.05)}.wheel-block{width:100%;display:grid;justify-items:center;gap:.85rem;animation:rise .7s ease .16s both}.wheel-meta{width:100%;display:flex;justify-content:flex-end;padding-right:.35rem}.timer{font-size:.95rem;font-weight:800;color:#ff4d3d;text-shadow:0 1px 0 rgba(255,255,255,.35);font-variant-numeric:tabular-nums}.wheel-frame{position:relative;width:min(86vw,340px);aspect-ratio:1;display:grid;place-items:center}.pointer{position:absolute;top:-.15rem;left:50%;z-index:3;width:0;height:0;border-left:.72rem solid transparent;border-right:.72rem solid transparent;border-top:1.35rem solid #e11d2e;transform:translate(-50%);filter:drop-shadow(0 2px 2px rgba(0,0,0,.35))}#wheel{width:100%;height:100%;border-radius:50%;box-shadow:0 0 0 8px #1f1a18,0 0 0 12px #f0c14b,0 18px 40px #00000059;transition:transform 0s;will-change:transform}.wheel-hub{position:absolute;width:14%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff2d8,#e0a84a 55%,#9a6a1d);box-shadow:inset 0 2px 4px #ffffff8c,0 2px 8px #00000059;z-index:2;pointer-events:none}.spin-btn{width:min(100%,340px);margin-top:.15rem;border-radius:999px;padding:1rem 1.25rem;color:#fff;font-weight:800;letter-spacing:.08em;text-transform:uppercase;background:linear-gradient(90deg,#ef6a1f,#e83b2f);box-shadow:0 10px 24px #e83b2f61,inset 0 1px #ffffff47;transition:transform .18s ease,filter .18s ease,opacity .18s ease;position:relative;overflow:hidden}.spin-btn:after{content:"";position:absolute;inset:0;background:linear-gradient(120deg,transparent 30%,rgba(255,255,255,.28) 50%,transparent 70%);transform:translate(-120%);animation:sheen 2.8s ease-in-out infinite}.spin-btn:hover:not(:disabled),.spin-btn:focus-visible:not(:disabled){transform:translateY(-1px) scale(1.01);filter:brightness(1.05)}.spin-btn:active:not(:disabled){transform:scale(.985)}.spin-btn:disabled{opacity:.72;cursor:not-allowed}.spin-btn__label{position:relative;z-index:1}.modal[hidden]{display:none}.modal{position:fixed;inset:0;z-index:20;display:grid;place-items:center;padding:1.25rem}.modal__backdrop{position:absolute;inset:0;background:#0c07059e;backdrop-filter:blur(4px)}.modal__card{position:relative;width:min(100%,360px);border-radius:1.35rem;padding:1.6rem 1.35rem 1.3rem;background:linear-gradient(180deg,#fffaf6,#ffe8dc);text-align:center;box-shadow:0 24px 50px #00000059;animation:pop .35s cubic-bezier(.2,.9,.25,1.2) both}.modal__eyebrow{margin:0;font-size:.75rem;font-weight:800;letter-spacing:.22em;text-transform:uppercase;color:var(--cocoa);opacity:.7}.modal__title{margin:.55rem 0 0;font-family:Fraunces,Georgia,serif;font-size:1.8rem;line-height:1.15;color:var(--ink)}.modal__copy{margin:.7rem 0 0;font-size:.95rem;line-height:1.45;color:#1a0f0cc7}.modal__btn{margin-top:1.2rem;width:100%;border-radius:999px;padding:.9rem 1rem;color:#fff;font-weight:800;letter-spacing:.06em;text-transform:uppercase;background:linear-gradient(90deg,#ef6a1f,#e83b2f)}@keyframes rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes sheen{0%,55%{transform:translate(-120%)}75%,to{transform:translate(120%)}}@keyframes pop{0%{opacity:0;transform:translateY(16px) scale(.94)}to{opacity:1;transform:translateY(0) scale(1)}}@media(min-width:720px){.stage{padding-top:2rem}.wheel-frame{width:360px}}@media(prefers-reduced-motion:reduce){.atmosphere__photo,.spin-btn:after,.brand,.review,.wheel-block,.modal__card{animation:none!important}}
