:root{--font-display: "Fredoka", "Nunito", system-ui, sans-serif;--font-body: "Nunito", system-ui, -apple-system, "Segoe UI", sans-serif;--font-serif: "Instrument Serif", Georgia, serif;--font-retro: "Shrikhand", "Fredoka", cursive;--font-type: "Courier Prime", ui-monospace, monospace;--bg: #fff4ee;--bg-2: #ffe9f0;--surface: #ffffff;--surface-2: #fff8f3;--ink: #3b2233;--ink-soft: #6f5364;--muted: #9a8290;--line: #f1d9df;--accent: #ff5c8a;--accent-2: #ff8fb1;--accent-ink: #ffffff;--accent-shadow: #d63d6c;--lav: #c9b6ff;--mint: #a8e6c1;--peach: #ffcf9e;--butter: #ffe7a0;--sky: #9fd8ff;--radius: 22px;--radius-sm: 14px;--shadow: 0 1px 0 rgba(59, 34, 51, .04), 0 10px 30px -12px rgba(120, 50, 80, .25);--shadow-lg: 0 30px 60px -25px rgba(120, 50, 80, .35);--focus: 0 0 0 3px #fff, 0 0 0 6px var(--accent);--ease-bounce: cubic-bezier(.34, 1.56, .64, 1);--ease-out: cubic-bezier(.22, 1, .36, 1);color-scheme:light}.theme-night{--bg: #140a1c;--bg-2: #1f0f2b;--surface: rgba(255, 255, 255, .06);--surface-2: rgba(255, 255, 255, .1);--ink: #fbe9f2;--ink-soft: #d9bcd0;--muted: #a88aa2;--line: rgba(255, 210, 235, .16);--accent: #ff4f8b;--accent-2: #ff9ac2;--accent-ink: #fff;--accent-shadow: #a8144a;--shadow: 0 20px 50px -20px rgba(0, 0, 0, .7);--focus: 0 0 0 3px #140a1c, 0 0 0 6px #ff9ac2;color-scheme:dark}.theme-booth{--bg: #f6ecd9;--bg-2: #efe0c3;--surface: #fffaf0;--surface-2: #fbf1dc;--ink: #2b1a14;--ink-soft: #5c4032;--muted: #8c705c;--line: #e2cfae;--accent: #c8252f;--accent-2: #e8564c;--accent-ink: #fff8ec;--accent-shadow: #7e1219;--radius: 10px;--radius-sm: 6px;--shadow: 0 2px 0 rgba(43, 26, 20, .08), 0 14px 30px -18px rgba(60, 30, 10, .45);--focus: 0 0 0 3px #f6ecd9, 0 0 0 6px #c8252f}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-body);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overflow-x:hidden}img,svg{display:block;max-width:100%}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:none;box-shadow:var(--focus);border-radius:12px}h1,h2,h3{font-family:var(--font-display);line-height:1.1;margin:0;letter-spacing:-.01em;text-wrap:balance}p{margin:0;text-wrap:pretty}a{color:inherit}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.app-shell{min-height:100dvh;background:var(--bg);color:var(--ink);display:flex;flex-direction:column}.container{width:100%;max-width:1120px;margin:0 auto;padding:0 20px}@media (max-width: 520px){.container{padding:0 16px}}.btn{--b-bg: var(--surface);--b-ink: var(--ink);--b-shadow: var(--line);position:relative;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:10px 20px;border:0;border-radius:999px;background:var(--b-bg);color:var(--b-ink);font-family:var(--font-display);font-weight:600;font-size:17px;letter-spacing:.01em;box-shadow:0 4px 0 var(--b-shadow);transform:translateY(0);transition:transform .15s var(--ease-out),box-shadow .15s var(--ease-out),filter .2s;text-decoration:none;user-select:none;white-space:nowrap}.btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 0 var(--b-shadow)}.btn:active:not(:disabled){transform:translateY(3px);box-shadow:0 1px 0 var(--b-shadow)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{--b-bg: var(--accent);--b-ink: var(--accent-ink);--b-shadow: var(--accent-shadow)}.btn-soft{--b-bg: var(--bg-2);--b-shadow: color-mix(in srgb, var(--bg-2) 60%, var(--ink) 18%)}.btn-ghost{--b-bg: transparent;box-shadow:none;border:2px solid var(--line)}.btn-ghost:hover:not(:disabled){box-shadow:none;border-color:var(--accent-2)}.btn-sm{min-height:38px;padding:6px 14px;font-size:15px}.btn-lg{min-height:58px;padding:14px 30px;font-size:20px}.btn-block{width:100%}.icon-btn{display:inline-grid;place-items:center;width:44px;height:44px;border-radius:50%;border:0;background:var(--surface);box-shadow:var(--shadow);font-size:20px;transition:transform .2s var(--ease-bounce)}.icon-btn:hover{transform:scale(1.08) rotate(-4deg)}.card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid var(--line)}.chip{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:999px;background:var(--bg-2);font-size:14px;font-weight:700;color:var(--ink-soft)}.eyebrow{font-family:var(--font-display);font-weight:600;font-size:14px;letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}.input{width:100%;min-height:48px;padding:10px 16px;border-radius:var(--radius-sm);border:2px solid var(--line);background:var(--surface);font-size:16px;transition:border-color .2s}.input:focus{outline:none;border-color:var(--accent)}.label{display:block;font-weight:800;font-size:14px;margin-bottom:6px;color:var(--ink-soft)}.topbar{position:sticky;top:0;z-index:40;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);background:color-mix(in srgb,var(--bg) 78%,transparent);border-bottom:1px solid color-mix(in srgb,var(--line) 60%,transparent)}.topbar-inner{display:flex;align-items:center;justify-content:space-between;gap:12px;height:64px}.logo{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-display);font-weight:700;font-size:24px;text-decoration:none;color:var(--ink)}.logo-heart{display:inline-block;color:var(--accent);animation:heartbeat 1.8s var(--ease-out) infinite}.profile-pill{display:inline-flex;align-items:center;gap:8px;padding:4px 14px 4px 4px;border-radius:999px;background:var(--surface);box-shadow:var(--shadow);text-decoration:none;font-weight:800;font-size:15px;max-width:180px}.profile-pill span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.toasts{position:fixed;z-index:100;left:50%;bottom:max(20px,env(safe-area-inset-bottom));transform:translate(-50%);display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none;width:min(92vw,420px)}.toast{padding:12px 18px;border-radius:16px;background:#3b2233;color:#fff;font-weight:700;box-shadow:0 16px 40px -12px #0006;text-align:center}.reaction-bar{display:flex;gap:4px;padding:6px;border-radius:999px;background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow)}.reaction-bar button{width:40px;height:40px;border:0;border-radius:50%;background:transparent;font-size:22px;transition:transform .2s var(--ease-bounce),background .2s}.reaction-bar button:hover{transform:scale(1.25);background:var(--bg-2)}.reaction-float{position:fixed;z-index:90;bottom:90px;font-size:44px;pointer-events:none;filter:drop-shadow(0 6px 10px rgba(0,0,0,.15))}.modal-backdrop{position:fixed;inset:0;z-index:80;display:grid;place-items:center;padding:16px;background:#28122273;backdrop-filter:blur(4px)}.modal{width:min(100%,460px);max-height:calc(100dvh - 32px);overflow:auto;padding:24px;border-radius:28px;background:var(--surface);color:var(--ink);box-shadow:var(--shadow-lg)}.theme-night .modal{background:#251433;border:1px solid var(--line)}.critter{overflow:visible}.critter .blink{transform-box:fill-box;transform-origin:center;animation:blink 5s infinite}.critter.bob{transform-origin:50% 95%;animation:chibi-idle 2.8s ease-in-out infinite}.critter .emote{transform-box:fill-box;transform-origin:50% 100%}.emote-pop{animation:emote-pop 1.4s var(--ease-bounce) both}.emote-drip{animation:emote-drip 1.6s ease-in both}.emote-float{animation:emote-float 1.8s ease-out both}.chibi-heart-eye{transform-box:fill-box;transform-origin:center;animation:heart-eye .9s ease-in-out infinite}@keyframes heartbeat{0%,to{transform:scale(1)}12%{transform:scale(1.22)}24%{transform:scale(1)}36%{transform:scale(1.14)}48%{transform:scale(1)}}@keyframes blink{0%,92%,to{transform:scaleY(1)}95%{transform:scaleY(.1)}}@keyframes bob{0%,to{transform:translateY(0)}50%{transform:translateY(-6%)}}@keyframes chibi-idle{0%,60%,to{transform:translateY(0) scale(1)}68%{transform:translateY(0) scale(1.06,.92)}76%{transform:translateY(-7%) scale(.96,1.05)}86%{transform:translateY(0) scale(1.04,.96)}92%{transform:translateY(0) scale(1)}}@keyframes emote-pop{0%{opacity:0;transform:scale(.2) rotate(-20deg)}25%{opacity:1;transform:scale(1.25) rotate(8deg)}45%{transform:scale(1) rotate(0)}80%{opacity:1}to{opacity:0;transform:scale(.9)}}@keyframes emote-drip{0%{opacity:0;transform:translateY(-6px) scale(.6)}20%{opacity:1;transform:translateY(0) scale(1)}75%{opacity:1;transform:translateY(8px)}to{opacity:0;transform:translateY(14px)}}@keyframes emote-float{0%{opacity:0;transform:translateY(6px) scale(.5)}25%{opacity:1;transform:translateY(0) scale(1.15)}80%{opacity:1}to{opacity:0;transform:translateY(-14px) scale(1)}}@keyframes heart-eye{0%,to{transform:scale(1)}50%{transform:scale(1.15)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse-ring{0%{box-shadow:0 0 color-mix(in srgb,var(--accent) 50%,transparent)}to{box-shadow:0 0 0 16px transparent}}.spinner{width:28px;height:28px;border-radius:50%;border:3px solid var(--line);border-top-color:var(--accent);animation:spin .8s linear infinite}.center-screen{flex:1;display:grid;place-items:center;padding:40px 16px;text-align:center}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}.st-blink{transform-box:fill-box;transform-origin:center;animation:blink 4.6s infinite}.st-heart-eyes{transform-box:fill-box;transform-origin:center;animation:heart-eye .9s ease-in-out infinite}.st-wag{transform-box:fill-box;transform-origin:100% 100%;animation:st-wag .6s ease-in-out infinite alternate}@keyframes st-wag{0%{transform:rotate(-10deg)}to{transform:rotate(12deg)}}.home{background:radial-gradient(900px 500px at 85% -10%,#ffe0ec 0%,transparent 60%),radial-gradient(700px 500px at -10% 30%,#fff0d9 0%,transparent 60%),var(--bg)}.hero{display:grid;grid-template-columns:1.1fr 1fr;align-items:center;gap:32px;padding-top:56px;padding-bottom:40px}.hero h1{font-size:clamp(44px,6.2vw,76px);font-weight:700;margin:10px 0 18px;letter-spacing:-.03em}.hero-squiggle{color:var(--accent);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 12'%3E%3Cpath d='M2 8 Q 12 0 22 8 T 42 8 T 62 8 T 82 8 T 102 8 T 122 8' fill='none' stroke='%23ffb3c7' stroke-width='4' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:repeat-x;background-size:60px 10px;background-position:0 100%;padding-bottom:10px}.hero-sub{font-size:19px;color:var(--ink-soft);max-width:34ch}.hero-actions{display:flex;flex-wrap:wrap;gap:14px;margin-top:28px;align-items:center}.join-form{display:flex;gap:8px}.join-form .input{width:170px;border-radius:999px;text-transform:uppercase;letter-spacing:.12em;font-weight:800}.join-form .input::placeholder{letter-spacing:0;text-transform:none;font-weight:600}.hero-stage{position:relative;aspect-ratio:1.15;display:grid;place-items:center}.stage-blob{position:absolute;inset:8% 4%;border-radius:46% 54% 42% 58%/55% 45%;background:linear-gradient(135deg,#ffd6e4,#ffe6cc 60%,#e6dcff);animation:morph 12s ease-in-out infinite;box-shadow:inset 0 -20px 40px #ffffff80}@keyframes morph{0%,to{border-radius:46% 54% 42% 58%/55% 45%;transform:rotate(0)}50%{border-radius:58% 42% 55% 45%/45% 58% 42% 55%;transform:rotate(4deg)}}.stage-couple{position:absolute;left:50%;bottom:12%;transform:translate(-50%)}.couple-scene{display:block;max-width:92vw;height:auto;filter:drop-shadow(0 10px 14px rgba(150,60,100,.14))}.stage-heart{position:absolute;top:2%;left:84%;translate:-50% 0;width:84px;height:84px;border:0;border-radius:50%;background:#fff;font-size:44px;box-shadow:0 14px 30px -10px #d63d6c80;animation:pulse-ring 1.8s ease-out infinite}.stage-hint{position:absolute;bottom:9%;font-family:var(--font-display);color:var(--ink-soft);font-size:15px}.games-section{padding-top:48px;padding-bottom:32px;scroll-margin-top:70px}.section-head{margin-bottom:26px}.section-head h2{font-size:clamp(32px,4.5vw,48px);margin-top:6px}.game-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;perspective:1200px}.gc{--rx: 0deg;--ry: 0deg;position:relative;display:flex;flex-direction:column;border-radius:28px;overflow:hidden;text-decoration:none;color:var(--ink);transform:rotateX(var(--rx)) rotateY(var(--ry));transform-style:preserve-3d;transition:transform .35s var(--ease-out),box-shadow .35s;box-shadow:var(--shadow);isolation:isolate}.gc:hover{box-shadow:var(--shadow-lg)}.gc-shine{position:absolute;inset:0;pointer-events:none;background:radial-gradient(400px circle at var(--gx, 50%) var(--gy, 0%),rgba(255,255,255,.35),transparent 40%);opacity:0;transition:opacity .3s;z-index:3}.gc:hover .gc-shine{opacity:1}.gc-art{position:relative;height:190px;overflow:hidden}.gc-body{padding:20px 22px 70px;flex:1}.gc-body h3{font-size:26px;margin-bottom:8px}.gc-body p{font-size:16px;opacity:.85}.gc-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px}.gc-cta{position:absolute;left:22px;bottom:20px;font-family:var(--font-display);font-weight:600;font-size:17px;padding:8px 18px;border-radius:999px;transition:transform .3s var(--ease-bounce)}.gc:hover .gc-cta{transform:translate(6px)}.gc-sweet{background:#fff}.gc-sweet .gc-cta{background:var(--accent);color:#fff}.sweet-art{background:linear-gradient(160deg,#ffe0ea,#fff1d6);display:grid;place-items:center}.mini-board{position:relative;display:flex;gap:6px;transform:rotateX(28deg) rotate(-8deg)}.mini-tile{width:52px;height:64px;display:grid;place-items:center;font-size:24px;background:#fff;border-radius:10px;box-shadow:0 5px #f3cdd8;border-top:12px solid;border-top-color:hsl(calc(340 + var(--i) * 30) 90% 80%)}.mini-token{position:absolute;top:-18px;left:14px;width:24px;height:24px;border-radius:50%;background:var(--accent);border:3px solid #fff;box-shadow:0 4px 10px #d63d6c66;animation:token-hop 3.2s var(--ease-out) infinite}@keyframes token-hop{0%,8%{transform:translate(0)}14%{transform:translate(29px,-14px)}20%,28%{transform:translate(58px)}34%{transform:translate(87px,-14px)}40%,48%{transform:translate(116px)}54%{transform:translate(145px,-14px)}60%,88%{transform:translate(174px)}to{transform:translate(0)}}.mini-dice{position:absolute;right:18px;bottom:14px;display:flex;gap:4px;font-size:34px;color:var(--accent)}.mini-dice span:nth-child(2){transform:rotate(14deg)}.gc-dark{background:#1b0d25;color:#fbe9f2}.gc-dark .chip{background:#ffffff14;color:#f5cde0}.gc-dark .gc-cta{background:#ff4f8b;color:#fff}.gc-dark h3{font-family:var(--font-serif);font-weight:400;font-style:italic;font-size:34px}.dark-art{background:radial-gradient(260px 160px at 30% 90%,rgba(255,150,80,.35),transparent 70%),linear-gradient(180deg,#2a1238,#1b0d25)}.candle{position:absolute;left:22%;bottom:0;width:30px;height:70px;border-radius:6px 6px 0 0;background:linear-gradient(90deg,#f7e1c9,#fff4e6 50%,#e8cdb0)}.flame{position:absolute;left:50%;top:-34px;width:18px;height:32px;margin-left:-9px;border-radius:50%/60% 60% 40% 40%;background:radial-gradient(circle at 50% 70%,#fff7c2,#ffb347 55%,#ff6a3d 80%,transparent 82%);filter:drop-shadow(0 0 14px rgba(255,170,80,.9));animation:flicker 1.4s ease-in-out infinite alternate;transform-origin:50% 100%}@keyframes flicker{0%{transform:scale(1) rotate(-2deg)}40%{transform:scale(.94,1.06) rotate(2deg)}to{transform:scale(1.04,.96) rotate(-1deg)}}.dark-cards{position:absolute;right:16%;top:30px;display:flex}.dcard{width:78px;height:110px;display:grid;place-items:center;border-radius:10px;font-family:var(--font-serif);font-style:italic;font-size:22px;background:linear-gradient(160deg,#3b1a4d,#24112f);border:1px solid rgba(255,170,210,.35);color:#ffc4dd;box-shadow:0 10px 30px #00000080;transform:rotate(-8deg);transition:transform .4s var(--ease-bounce)}.dcard.dare{margin-left:-20px;transform:rotate(8deg) translateY(10px);background:linear-gradient(160deg,#6b1640,#3a0c26)}.gc-dark:hover .dcard{transform:rotate(-14deg) translate(-8px)}.gc-dark:hover .dcard.dare{transform:rotate(14deg) translate(8px,6px)}.heat-dots{position:absolute;left:50%;bottom:14px;display:flex;gap:8px;font-size:18px;opacity:.9}.gc-booth{background:#fffaf0}.gc-booth h3{font-family:var(--font-retro);font-weight:400;color:#c8252f;font-size:30px}.gc-booth .chip{background:#f3e3c5;color:#5c4032;font-family:var(--font-type)}.gc-booth .gc-cta{background:#c8252f;color:#fff8ec;border-radius:6px}.booth-art{background:#f1e2c4}.curtain{position:absolute;inset:0 0 auto;height:46px;background:repeating-linear-gradient(90deg,#a3121c 0 14px,#c8252f 14px 22px,#8d0f18 22px 30px);border-bottom:5px solid #e9b949;box-shadow:0 6px 12px #0003}.mini-strip{position:absolute;left:50%;top:40px;width:74px;margin-left:-37px;padding:6px 6px 16px;background:#fff;display:flex;flex-direction:column;gap:5px;box-shadow:0 10px 20px #3c1e0a4d;transform-origin:50% 0;animation:sway 3.4s ease-in-out infinite}.mini-strip span{height:38px;background:linear-gradient(135deg,#ffd1dc,#ffe7b3)}.mini-strip span:nth-child(2){background:linear-gradient(135deg,#c9e7ff,#ffd1dc)}.mini-strip span:nth-child(3){background:linear-gradient(135deg,#d8f3dc,#fff1b8)}@keyframes sway{0%,to{transform:rotate(-4deg)}50%{transform:rotate(4deg)}}.bulbs{position:absolute;left:10px;right:10px;bottom:12px;display:flex;justify-content:space-between}.bulbs i{width:10px;height:10px;border-radius:50%;background:#ffd76a;box-shadow:0 0 10px #ffc53d;animation:bulb 1.35s steps(2) infinite}@keyframes bulb{50%{background:#8a6a2a;box-shadow:none}}.how{padding-top:48px;padding-bottom:48px}.how-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.how-step{padding:24px}.how-emoji{font-size:34px;margin-bottom:10px}.how-step h3{font-size:21px;margin-bottom:6px}.how-step p{color:var(--ink-soft)}.footer{padding:24px 20px 40px;color:var(--muted);text-align:center;font-weight:700}@media (max-width: 900px){.hero{grid-template-columns:1fr;padding-top:28px;gap:8px}.hero-stage{max-width:460px;width:100%;margin:0 auto;grid-row:1}.game-grid,.how-grid{grid-template-columns:1fr}}@media (max-width: 520px){.stage-couple{bottom:10%}.stage-heart{width:58px;height:58px;font-size:30px;top:0;left:92%}.stage-hint{bottom:-2%}.hero-sub{font-size:17px}.hero-actions{flex-direction:column;align-items:stretch}.join-form .input{flex:1;width:auto}}.couple-scene .cs-hop{transform-box:fill-box;transform-origin:50% 100%;animation:cs-hop .6s ease-out}.couple-scene .cs-breathe{transform-box:fill-box;transform-origin:50% 100%;animation:cs-breathe 3.2s ease-in-out infinite}.couple-scene .cs-hearts text{animation:cs-heart-rise 2.2s ease-out infinite;opacity:0}@keyframes cs-hop{0%{transform:scale(1) translateY(0)}25%{transform:scale(1.1,.86) translateY(0)}60%{transform:scale(.95,1.08) translateY(-12px)}to{transform:scale(1) translateY(0)}}@keyframes cs-breathe{0%,to{transform:scale(1)}50%{transform:scale(1.015,1.03)}}@keyframes cs-heart-rise{0%{opacity:0;transform:translateY(0) scale(.6)}20%{opacity:1}to{opacity:0;transform:translateY(-60px) scale(1.1)}}.couple-scene .cs-sparkles path{transform-box:fill-box;transform-origin:center;animation:cs-twinkle 1.6s ease-in-out infinite}@keyframes cs-twinkle{0%,to{opacity:0;transform:scale(.4) rotate(0)}50%{opacity:1;transform:scale(1) rotate(45deg)}}
