@import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Roboto+Mono:wght@400;600;700&family=Noto+Sans+Thai:wght@400;500;600;700&display=swap";:root{--color-primary:#48c7bf;--color-accent:#ff4f66;--color-mint:#0fc;--color-bg:#0a0a12;--color-bg-panel:#0f111b;--color-bg-ink:#050507;--color-text:#f9fafb;--color-text-soft:#e5e7eb;--color-text-muted:#9ca3af;--color-danger:#fca5a5;--color-border-subtle:#2f3748;--color-panel-glass:#111827c7;--color-text-04:#ffffff0a;--color-text-08:#ffffff14;--color-text-10:#ffffff1a;--color-text-12:#ffffff1f;--color-text-20:#fff3;--color-primary-12:#48c7bf1f;--color-primary-20:#48c7bf33;--color-primary-30:#48c7bf4d;--color-mint-08:#00ffcc14;--color-accent-12:#ff4f661f;--color-black-45:#00000073;--gradient-signature:linear-gradient(120deg, #ff4e65, #fdb487 35%, #6ed7b4 80%, #3dc2c1);--font-sans:"Inter", "Noto Sans Thai", "Segoe UI", system-ui, sans-serif;--font-mono:"Roboto Mono", "Noto Sans Thai", monospace;font-family:var(--font-sans);color:var(--color-text);background:var(--color-bg);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-synthesis:none;font-weight:400}*{box-sizing:border-box}body{background:radial-gradient(circle at 15% 20%, #ea516c24, transparent 32%), radial-gradient(circle at 80% 10%, #7af9cd26, transparent 36%), radial-gradient(circle at 60% 70%, #ffffff0a, transparent 30%), var(--color-bg);-webkit-font-smoothing:antialiased;background-attachment:fixed;min-width:320px;margin:0}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer;transition:background .2s,transform .2s}button:disabled{cursor:wait;opacity:.5}button:not(:disabled):active{transform:translateY(1px)}button:focus-visible,a:focus-visible{outline:3px solid var(--color-mint);outline-offset:5px}a{color:inherit}h1,h2,p{margin:0}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.app-shell{flex-direction:column;max-width:560px;min-height:100svh;margin:auto;padding:0 16px;display:flex}.site-header{border-bottom:1px solid var(--color-border-subtle);justify-content:space-between;align-items:center;gap:16px;height:72px;display:flex}.logo-placeholder{border:1px dashed var(--color-text-20);background:var(--color-text-04);width:108px;height:40px;color:var(--color-text-muted);font-family:var(--font-mono);letter-spacing:2.2px;border-radius:10px;place-items:center;font-size:11px;display:grid}.header-actions{align-items:center;gap:12px;display:flex}.language-switch{border:1px solid var(--color-border-subtle);background:var(--color-text-04);border-radius:25px;gap:3px;padding:4px;display:flex}.language-switch button{color:var(--color-text-muted);background:0 0;border:0;border-radius:20px;min-width:43px;padding:6px 13px;font-size:12px}.language-switch button[aria-pressed=true]{background:var(--color-primary);color:var(--color-bg-ink);font-weight:700}main{flex-direction:column;flex:1;justify-content:center;padding:28px 0;display:flex}h1{letter-spacing:-.5px;font-size:clamp(26px,7vw,36px);font-weight:700;line-height:1.3}h2{font-weight:500;line-height:1.45}.eyebrow{letter-spacing:2.3px;text-transform:uppercase;color:var(--color-primary);font-size:10px;font-weight:600;font-family:var(--font-mono);margin-bottom:14px;display:block}.panel{background:var(--color-panel-glass);border:1px solid var(--color-text-10);width:100%;box-shadow:0 24px 60px var(--color-black-45);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:22px;padding:28px 22px}.intro{color:var(--color-text-muted);margin-top:14px;font-size:14px;line-height:1.8}.primary-button{background:var(--gradient-signature);color:var(--color-bg-ink);border:0;border-radius:14px;justify-content:center;align-items:center;gap:12px;min-height:54px;padding:16px 22px;font-size:15px;font-weight:700;display:inline-flex}.primary-button:hover{filter:brightness(1.08);box-shadow:0 8px 24px var(--color-primary-12)}.primary-button.wide{width:100%;margin-top:26px}.text-button{color:var(--color-primary);background:0 0;border:0;align-items:center;gap:8px;padding:10px 0;font-size:13px;display:inline-flex}.text-button.back{margin:-8px 0 12px}.inline-error{background:var(--color-accent-12);color:var(--color-danger);border-radius:9px;align-items:flex-start;gap:9px;margin-top:20px;padding:14px;font-size:13px;line-height:1.65;display:flex}.inline-error svg{flex-shrink:0;margin-top:2px}.loading-state{text-align:center;min-height:300px;color:var(--color-text-muted);flex-direction:column;justify-content:center;align-items:center;gap:18px;display:flex}.spinner{border:2px solid var(--color-primary-20);border-top-color:var(--color-primary);border-radius:50%;width:28px;height:28px;animation:.8s linear infinite spin;display:inline-block}.result-card{text-align:center;width:100%;box-shadow:0 24px 60px var(--color-black-45);border:2px solid;border-radius:22px;flex-direction:column;align-items:center;gap:10px;padding:36px 22px 24px;display:flex}.result-card.is-success{border-color:var(--color-primary);background:var(--color-primary-12)}.result-card.is-failure{border-color:var(--color-accent);background:var(--color-accent-12)}.result-icon{width:104px;height:104px;color:var(--color-bg-ink);border-radius:50%;place-items:center;margin-bottom:10px;display:grid}.is-success .result-icon{background:var(--color-primary)}.is-failure .result-icon{background:var(--color-accent)}.result-guest{font-size:20px;font-weight:600}.result-progress{font-family:var(--font-mono);font-size:18px;font-weight:700}.is-success .result-progress{color:var(--color-primary)}.is-failure .result-progress{color:var(--color-danger)}.result-meta{color:var(--color-text-muted);font-size:13px}.result-actions{flex-direction:column;align-items:center;gap:6px;width:100%;display:flex}.countdown{color:var(--color-text-muted);font-size:12px}.powered-by{padding:18px 0 max(22px, env(safe-area-inset-bottom));color:var(--color-text-muted);letter-spacing:1px;justify-content:center;align-items:center;gap:10px;font-size:11px;display:flex}.powered-by img{width:auto;height:22px}@media (width>=720px){.panel{padding:40px 36px}}.panel.center{text-align:center;flex-direction:column;align-items:center;display:flex}.panel-icon{color:var(--color-primary);margin-bottom:14px}form{gap:16px;margin-top:22px;display:grid}form .primary-button.wide{margin-top:6px}.field{color:var(--color-text-soft);gap:8px;font-size:13px;display:grid}.field input,.input-with-icon{border:1px solid var(--color-text-10);background:var(--color-text-04);width:100%;min-height:52px;color:var(--color-text);border-radius:12px;outline:none;padding:0 14px;font-size:16px}.input-with-icon{color:var(--color-text-muted);align-items:center;gap:12px;display:flex}.input-with-icon input{background:0 0;border:0;flex:1;min-width:0;min-height:50px;padding:0}.field input:focus,.input-with-icon:focus-within{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-12)}.field input::placeholder{color:var(--color-text-muted)}.code-input{font-family:var(--font-mono);letter-spacing:12px;text-align:center;font-size:28px!important}.link-row{flex-wrap:wrap;justify-content:space-between;gap:8px 16px;margin-top:14px;display:flex}.secondary-button{border:1px solid var(--color-primary-30);background:var(--color-primary-12);min-height:54px;color:var(--color-primary);border-radius:14px;justify-content:center;align-items:center;gap:12px;padding:16px 22px;font-size:15px;font-weight:700;display:inline-flex}.secondary-button.wide{width:100%;margin-top:12px}.guest-name{color:var(--color-text-soft);margin-top:6px;font-size:15px}.sign-out-row{color:var(--color-text-muted);text-align:center;margin-top:18px;font-size:12px}.sign-out-row .text-button{padding:4px 0;font-size:12px}.progress{width:100%;margin-top:20px}.progress-label{font-family:var(--font-mono);color:var(--color-primary);justify-content:space-between;margin-bottom:8px;font-size:14px;display:flex}.progress-track{background:var(--color-text-08);border-radius:10px;height:10px;overflow:hidden}.progress-track span{background:var(--gradient-signature);border-radius:10px;height:100%;transition:width .4s;display:block}.stamp-grid{grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:12px;margin:22px 0 6px;padding:0;list-style:none;display:grid}.stamp-cell{border:1px dashed var(--color-text-20);background:var(--color-text-04);text-align:center;border-radius:16px;flex-direction:column;align-items:center;gap:8px;padding:14px 6px 12px;display:flex}.stamp-mark{border:2px dashed var(--color-text-20);width:52px;height:52px;color:var(--color-text-muted);border-radius:50%;place-items:center;display:grid}.stamp-cell.is-stamped{border-style:solid;border-color:var(--color-primary-30);background:var(--color-primary-12)}.stamp-cell.is-stamped .stamp-mark{background:var(--gradient-signature);color:var(--color-bg-ink);border:0}.stamp-name{color:var(--color-text-soft);overflow-wrap:anywhere;font-size:12px;line-height:1.35}.ready-text{color:var(--color-primary);text-align:center;margin-top:18px;font-size:14px;line-height:1.6}.redeemed-badge{border:1px solid var(--color-primary-30);background:var(--color-mint-08);color:var(--color-primary);border-radius:14px;justify-content:center;align-items:center;gap:10px;margin-top:20px;padding:14px;font-weight:700;display:flex}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.qr-panel .back{align-self:flex-start}.qr-panel h1{font-size:clamp(22px,6vw,30px)}.qr-frame{aspect-ratio:1;background:var(--color-text);width:min(78vw,340px);box-shadow:0 0 0 4px var(--color-primary-30), 0 20px 50px var(--color-black-45);border-radius:20px;place-items:center;margin:22px auto 4px;padding:12px;display:grid}.qr-frame img{width:100%;height:100%;image-rendering:pixelated}.consent{color:var(--color-text-soft);align-items:flex-start;gap:12px;font-size:13px;line-height:1.6;display:flex}.consent input{width:20px;height:20px;accent-color:var(--color-primary);flex-shrink:0;margin:2px 0 0}.ended-badge{border:1px solid var(--color-accent);background:var(--color-accent-12);color:var(--color-danger);border-radius:20px;margin-top:12px;padding:6px 12px;font-size:13px;font-weight:700;display:inline-block}.app-shell{max-width:640px;padding-inline:clamp(18px,5vw,32px)}.site-header{border:0;height:88px}.logo-placeholder{letter-spacing:1px;border-color:var(--color-primary-30);border-radius:16px;width:48px;height:48px;font-size:9px}.language-switch button{min-height:36px}main{padding:20px 0 28px}.panel{box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0;border:0;padding:22px 4px}.eyebrow{font-family:var(--font-sans);letter-spacing:.02em;text-transform:none;overflow-wrap:anywhere;font-size:14px;line-height:1.6}h1{letter-spacing:-.035em;font-size:clamp(30px,7.8vw,44px);font-weight:800}.intro{font-size:15px}.primary-button,.secondary-button{border-radius:18px;min-height:58px;font-size:16px}.powered-by{opacity:.8}.field input,.input-with-icon{border-radius:16px;min-height:58px}.field{gap:10px}.onboarding-steps{gap:7px;margin:0 0 26px;padding:0;list-style:none;display:flex}.onboarding-steps li{border-top:3px solid var(--color-text-10);color:var(--color-text-muted);flex:1;padding-top:10px;font-size:11px}.onboarding-steps li.is-done,.onboarding-steps li[aria-current=step]{border-color:var(--color-primary);color:var(--color-primary)}.onboarding-steps li[aria-current=step]{font-weight:700}.registration-symbol{border:1px solid var(--color-primary-30);background:var(--color-primary-12);width:56px;height:56px;color:var(--color-primary);border-radius:18px;place-items:center;margin-bottom:24px;display:grid}.guest-card{padding-top:0}.card-heading{justify-content:space-between;align-items:center;gap:12px;margin-bottom:24px;display:flex}.card-heading .eyebrow{margin-bottom:8px;font-size:18px;font-weight:600}.card-heading .rally-art{flex:0 0 84px;width:84px;margin:0 -10px 0 0}.guest-name{color:var(--color-text-muted);font-size:14px}.passport{border:1px solid var(--color-primary-30);background:linear-gradient(145deg, var(--color-primary-12), transparent 65%), var(--color-bg-panel);box-shadow:0 24px 60px var(--color-black-45);border-radius:28px;padding:clamp(20px,5vw,32px);position:relative;overflow:hidden}.passport-label{color:var(--color-text-muted);font-family:var(--font-mono);letter-spacing:.12em;justify-content:space-between;align-items:center;font-size:11px;display:flex}.passport .progress-label{font-family:var(--font-sans);color:var(--color-text);letter-spacing:-.025em;font-size:clamp(23px,6vw,32px)}.progress-track{height:7px}.remaining-copy{color:var(--color-primary);margin-top:12px;font-size:14px;line-height:1.6}.stamp-grid{border-top:1px dashed var(--color-text-20);grid-template-columns:repeat(3,minmax(0,1fr));gap:16px 10px;margin:28px 0 0;padding-top:26px}.stamp-cell,.stamp-cell.is-stamped{background:0 0;border:0;gap:10px;padding:4px 0}.stamp-mark{border:1px dashed var(--color-text-20);background:var(--color-text-04);width:clamp(54px,15vw,76px);height:clamp(54px,15vw,76px);font-family:var(--font-mono);font-size:18px}.stamp-cell.is-stamped .stamp-mark{background:var(--color-primary-12);color:var(--color-primary);border:1px solid var(--color-primary);box-shadow:inset 0 0 0 5px var(--color-bg-panel), inset 0 0 0 6px var(--color-primary-30);transform:rotate(-9deg)}.stamp-cell:nth-child(2n).is-stamped .stamp-mark{transform:rotate(7deg)}.stamp-status{color:var(--color-text-muted);font-size:10px}.is-stamped .stamp-status{color:var(--color-primary)}.card-actions-dock{z-index:2;padding:10px 0 max(12px, env(safe-area-inset-bottom));background:linear-gradient(transparent, var(--color-bg) 20%);margin-top:12px;position:sticky;bottom:0}.card-actions-dock .primary-button.wide{margin-top:8px}.reward-callout{border:1px solid var(--color-primary-30);color:var(--color-primary);background:var(--color-primary-12);border-radius:18px;align-items:center;gap:12px;margin-top:18px;padding:18px;font-size:14px;line-height:1.6;display:flex}.reward-callout svg{flex-shrink:0}.qr-panel{padding-top:0}.qr-panel .eyebrow{margin-top:4px}.qr-frame{width:min(100%,340px);box-shadow:0 0 0 1px var(--color-primary-30), 0 24px 60px var(--color-black-45);border-radius:28px;margin:28px auto 12px;padding:16px}.qr-panel .progress{max-width:340px}.qr-active .site-header{height:64px}.qr-active main{padding:8px 0}.qr-active .qr-panel{padding-bottom:8px}.qr-active .qr-panel .eyebrow{margin:0 0 10px}.qr-active .qr-panel .intro{margin-top:10px}.qr-active .qr-panel .progress{margin-top:12px}.qr-active .qr-frame{width:min(78vw,36dvh,320px);margin-top:18px}.qr-active .powered-by{padding-block:14px}.connection-status{color:var(--color-primary);flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;margin-top:18px;font-size:12px;line-height:1.6;display:flex}.connection-status:before{content:"";background:currentColor;border-radius:50%;flex-shrink:0;width:6px;height:6px}.connection-status.is-delayed{color:var(--color-danger)}.connection-status .text-button{color:inherit;min-height:44px}.result-card{box-shadow:none;border:0;gap:16px;padding:16px 4px;background:0 0!important}.result-card h1{font-size:clamp(30px,8vw,44px)}.result-card .primary-button{max-width:360px}.result-progress{background:var(--color-primary-12);border-radius:30px;padding:10px 20px;font-size:17px}.rally-art{isolation:isolate;width:min(100%,300px);margin:0 auto;position:relative}.rally-art svg{width:100%;height:auto;display:block;position:relative;overflow:visible}.art-halo{background:var(--color-primary-12);filter:blur(30px);z-index:-1;border-radius:50%;position:absolute;inset:12%}.art-stamper{transform-origin:145px 120px;transform:rotate(-10deg)}.art-paper{transform-origin:50%;transform:rotate(-5deg)}.art-impression{opacity:.8}.is-celebrating .art-stamper{animation:1.2s cubic-bezier(.2,.8,.2,1) both stamp-press}.is-celebrating .art-impression{animation:1.2s both stamp-reveal}.is-celebrating .art-gift-lid{transform-origin:140px 100px;animation:1.4s cubic-bezier(.2,.8,.2,1) both gift-open}.is-celebrating .art-sparkles{transform-origin:50%;animation:1.4s both spark-reveal}@keyframes stamp-press{0%{transform:translate(20px,-25px)rotate(-12deg)}45%,60%{transform:translate(30px,25px)rotate(-5deg)}to{transform:translateY(-8px)rotate(-12deg)}}@keyframes stamp-reveal{0%,44%{opacity:0}60%,to{opacity:1}}@keyframes gift-open{0%{transform:none}55%,to{transform:translate(-5px,-25px)rotate(-8deg)}}@keyframes spark-reveal{0%,40%{opacity:0;transform:scale(.6)}to{opacity:1;transform:scale(1)}}@media (width<=359px){.card-heading .rally-art{flex-basis:72px;width:72px}.passport{padding:18px}}@media (height<=560px) and (width>=600px){.qr-active.app-shell{max-width:820px}.qr-active .site-header{height:60px}.qr-active main{padding:0}.qr-active .panel.qr-panel{text-align:left;grid-template-columns:1fr auto;align-content:center;gap:4px 24px;display:grid}.qr-active .qr-panel>:not(.qr-frame){grid-column:1}.qr-active .qr-panel h1{font-size:24px}.qr-active .qr-panel .qr-frame{grid-area:1/2/7;width:min(32vw,58dvh,270px);margin:0}.qr-active .qr-panel .back,.qr-active .qr-panel .eyebrow{margin:0}.qr-active .qr-panel .intro{font-size:12px}.qr-active .connection-status{justify-content:flex-start;margin-top:4px;font-size:11px}.qr-active .powered-by{padding-block:8px}.result-card .rally-art{max-width:180px}}@media (prefers-reduced-motion:reduce){.rally-art *,.progress-track span{transition:none!important;animation:none!important}.art-impression{opacity:1}}html,body,#root{height:100%;overflow:hidden}.app-shell{height:100dvh;min-height:0;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}.app-shell .site-header{flex:0 0 64px;height:64px}.app-shell main{flex:1;min-height:0;padding:8px 0}.app-shell .powered-by{flex:0 0 40px;min-height:0;padding:8px 0;font-size:10px}.powered-by img{height:19px}.fit-frame{flex:1;width:100%;height:100%;min-height:0;position:relative}.fit-stage{width:100%;transform:translateY(-50%) scale(var(--screen-scale,1));transform-origin:50%;display:flow-root;position:absolute;top:50%;left:0}.fit-frame.is-fill .fit-stage{height:100%;position:relative;top:0;transform:none}.page-controls{justify-content:center;align-items:center;gap:18px;margin-top:10px;display:flex}.page-controls button{border:1px solid var(--color-primary-30);background:var(--color-primary-12);width:44px;height:40px;color:var(--color-primary);border-radius:12px;place-items:center;display:grid}.page-controls span{font-size:12px;font-family:var(--font-mono);color:var(--color-text-muted)}.page-controls button:disabled{cursor:default;opacity:.3}.panel{padding:10px 0}.intro,.sign-out-row,.result-guest,.result-meta{overflow-wrap:anywhere}.onboarding-steps{margin-bottom:16px}.registration-symbol{width:44px;height:44px;margin-bottom:12px}.card-heading{margin-bottom:14px}.card-heading h1{font-size:clamp(24px,6vw,34px)}.card-heading .eyebrow{margin-bottom:4px;font-size:15px}.passport{border-radius:22px;padding:clamp(14px,3vw,22px)}.passport .progress{margin-top:10px}.passport .progress-label{font-size:clamp(22px,5vw,28px)}.remaining-copy{margin-top:8px;font-size:13px}.stamp-grid{gap:10px;margin-top:14px;padding-top:14px}.stamp-cell,.stamp-cell.is-stamped{gap:5px;padding:0}.stamp-mark{width:clamp(42px,12vw,62px);height:clamp(42px,12vw,62px)}.stamp-name{font-size:12px;line-height:1.4}.stamp-status{font-size:9px}.stamp-pages{min-width:0}.stamp-slides{scroll-snap-type:x mandatory;overscroll-behavior-x:contain;scrollbar-width:none;border-top:1px dashed var(--color-text-20);margin-top:14px;display:flex;overflow:auto hidden}.stamp-slides::-webkit-scrollbar{display:none}.stamp-slides .stamp-grid{scroll-snap-align:start;scroll-snap-stop:always;border:0;flex:0 0 100%;align-content:start;min-width:0;margin:0;padding:14px 0 3px}.has-slides .stamp-grid{grid-template-rows:repeat(2,1fr)}.stamp-slides .stamp-name{-webkit-line-clamp:2;-webkit-box-orient:vertical;min-height:2.8em;display:-webkit-box;overflow:hidden}.stamp-dots{justify-content:center;margin-top:4px;display:flex}.stamp-dots button{width:32px;height:32px;color:var(--color-primary);background:0 0;border:0;border-radius:50%;place-items:center;padding:0;display:grid}.stamp-slides:focus-visible,.stamp-dots button:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}.swipe-hint{text-align:center;color:var(--color-text-muted);margin:0;font-size:10px;line-height:1.5}.swipe-hint.is-dismissed{visibility:hidden}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.card-actions-dock{background:0 0;margin-top:8px;padding:0;position:static}.card-actions-dock .primary-button,.card-actions-dock .secondary-button{min-height:48px;margin-top:8px;padding:12px 16px}.reward-callout{margin-top:10px;padding:10px 14px;font-size:12px}.redeemed-badge{margin-top:10px;padding:10px}.sign-out-row{margin-top:12px;font-size:11px}.result-card{gap:10px;padding:8px 0}.result-card>.rally-art{width:min(240px,30dvh)}.result-card .primary-button.wide{margin-top:12px}.qr-active .qr-frame{width:min(72vw,32dvh,300px);margin-block:12px 6px}.qr-active .connection-status{margin-top:10px}.qr-active .qr-panel .intro{font-size:13px}@media (height<=700px){.app-shell .site-header{flex-basis:52px;height:52px}.app-shell .powered-by{flex-basis:30px;padding-block:4px}.logo-placeholder{border-radius:12px;width:38px;height:38px}.card-heading .rally-art{flex-basis:60px;width:60px}.card-heading h1{font-size:25px}.card-heading{margin-bottom:10px}.guest-name{font-size:12px}.stamp-mark{width:42px;height:42px}.stamp-grid{gap:8px;margin-top:10px;padding-top:10px}.passport .progress-label{font-size:22px}.registration-symbol{display:none}.panel h1,.result-card h1{font-size:28px}form{gap:12px;margin-top:14px}.field input,.input-with-icon{min-height:46px}.input-with-icon input{min-height:44px}.intro{margin-top:8px;font-size:13px;line-height:1.6}.primary-button{min-height:48px;padding:12px 18px}.consent{font-size:12px}.onboarding-steps{margin-bottom:10px}}@media (height<=500px) and (width>=600px){.app-shell{max-width:920px}.guest-card{grid-template-columns:.85fr 1.15fr;align-items:center;gap:8px 22px;display:grid}.guest-card .card-heading{grid-column:1;margin:0}.guest-card .passport{grid-area:1/2/5}.guest-card .card-actions-dock,.guest-card .reward-callout,.guest-card>.redeemed-badge,.guest-card .sign-out-row{grid-column:1;margin:0}.guest-card .card-heading .rally-art{display:none}.stamp-status{font-size:9px}.guest-card .page-controls{margin-top:4px}.guest-card .page-controls button{height:32px}.guest-card .stamp-mark{width:34px;height:34px}.result-card{grid-template-columns:220px 1fr;align-items:center;gap:8px 22px;display:grid}.result-card>.rally-art{grid-area:1/1/7;width:200px}.result-card>:not(.rally-art){grid-column:2;margin:0}}.stamp-dots svg{pointer-events:none;display:block}.primary-button,.secondary-button{color:#fff}.app-shell{isolation:isolate;position:relative}.ambient-light{z-index:-1;pointer-events:none;position:fixed;inset:0;overflow:hidden}.ambient-light:before,.ambient-light:after{content:"";opacity:.7;border-radius:50%;width:min(100vmax,1000px);height:min(100vmax,1000px);animation:18s ease-in-out infinite alternate ambient-drift;position:absolute}.ambient-light:before{background:radial-gradient(circle, var(--color-primary-12), transparent 65%);top:-50%;right:-40%}.ambient-light:after{background:radial-gradient(circle, var(--color-accent-12), transparent 65%);animation-direction:alternate-reverse;animation-delay:-9s;bottom:-55%;left:-40%}@keyframes ambient-drift{0%{opacity:.45;transform:translate(-3%,-2%)scale(.94)}to{opacity:.85;transform:translate(5%,5%)scale(1.06)}}.screen-content{animation:.36s cubic-bezier(.2,.7,.3,1) both screen-enter;display:flow-root}@keyframes screen-enter{0%{opacity:.25;transform:translateY(6px)}to{opacity:1;transform:none}}.stamp-cell{animation:.35s ease-out both slot-enter;animation-delay:calc(80ms + var(--slot-index,0) * 55ms)}@keyframes slot-enter{0%{opacity:0;transform:translateY(5px)scale(.96)}to{opacity:1;transform:none}}.stamp-cell{--stamp-tilt:-9deg}.stamp-cell:nth-child(2n){--stamp-tilt:7deg}.stamp-cell.is-fresh .stamp-mark{animation:.65s cubic-bezier(.2,.8,.3,1) .38s both stamp-arrive}@keyframes stamp-arrive{0%{opacity:0;transform:rotate(var(--stamp-tilt)) scale(1.25)}55%{opacity:1;transform:rotate(var(--stamp-tilt)) scale(.92)}78%{transform:rotate(var(--stamp-tilt)) scale(1.05)}to{opacity:1;transform:rotate(var(--stamp-tilt)) scale(1)}}.progress-track span{transform-origin:0;transition:width .6s cubic-bezier(.2,.7,.3,1);animation:.7s cubic-bezier(.2,.7,.3,1) both progress-reveal}@keyframes progress-reveal{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.is-reward-ready .card-heading .gift-art>svg{transform-origin:50% 85%;animation:3.6s ease-in-out infinite gift-shake}.is-reward-ready .reward-callout>svg{transform-origin:50% 85%;animation:3.6s ease-in-out .3s infinite gift-shake}@keyframes gift-shake{0%,32%,to{transform:rotate(0)}5%,15%{transform:translate(-2px)rotate(-7deg)}10%,20%{transform:translate(2px)rotate(7deg)}25%{transform:rotate(-3deg)}}.gift-art.is-redeemed{opacity:.72}.gift-art.is-redeemed .art-halo{opacity:.3}.gift-art.is-redeemed .art-gift-lid{transform-origin:140px 100px;transform:translate(-5px,-25px)rotate(-8deg)}.reward-callout{position:relative}.reward-callout:after{content:"";border-radius:inherit;box-shadow:0 0 18px var(--color-primary-30);pointer-events:none;animation:3.6s ease-in-out infinite reward-glow;position:absolute;inset:0}@keyframes reward-glow{0%,to{opacity:.15}45%{opacity:.7}}.app-shell button{transition:transform .14s ease-out,background-color .18s ease-out,border-color .18s ease-out}.app-shell button:active:not(:disabled){transform:scale(.97)}.qr-active .screen-content,.qr-active .progress-track span{animation:none}.qr-active .ambient-light:before,.qr-active .ambient-light:after{animation-play-state:paused}.app-shell[data-page-hidden] *,.app-shell[data-page-hidden] :before,.app-shell[data-page-hidden] :after{animation-play-state:paused!important}@media (prefers-reduced-motion:reduce){.app-shell *,.app-shell :before,.app-shell :after{transition:none!important;animation:none!important}.app-shell button:active{transform:none}}
