:root{--paper:#fbf7ef;--linen:#f3ede3;--espresso:#2b2019;--roast:#5a463a;--roast-soft:#6b5446;--leaf-green:#3f5e3a;--crema-gold:#e3b873;--night:#1e1610;--wood:#c9a877;--font-mincho:"Zen Old Mincho", "Hiragino Mincho ProN", serif;--font-maru:"Zen Maru Gothic", "Hiragino Maru Gothic ProN", sans-serif;--font-latin:"Fraunces", Georgia, serif}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--night);overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation;font-family:var(--font-maru);color:var(--espresso);overflow:hidden}img{-webkit-user-drag:none}.viewport{position:fixed;inset:0;overflow:hidden}.stage{transform-origin:50%;background:var(--wood);position:absolute;top:50%;left:50%;overflow:hidden}.screen{position:absolute;inset:0;overflow:hidden}.table-wood{background-position:50%;background-repeat:no-repeat;background-size:cover;position:absolute;inset:0}.standby{width:100%;height:100%;font:inherit;color:inherit;text-align:left;cursor:pointer;background:#e9d9c8;border:0;padding:0;display:block}.standby-cup{width:667px;height:1000px;position:absolute}.standby-cup-shadow{mix-blend-mode:multiply}[data-orientation=landscape] .standby-cup{top:-144px;left:497px}[data-orientation=portrait] .standby-cup{top:-114px;left:107px}.logo-coaster{background:var(--paper);border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;transform:rotate(-6deg);box-shadow:0 26px 50px -18px #3c26128c,0 3px 10px #3c261226}[data-orientation=landscape] .logo-coaster{width:340px;height:340px;top:240px;left:104px}[data-orientation=portrait] .logo-coaster{width:290px;height:290px;top:648px;left:72px}.logo-coaster-image{object-fit:contain;width:93%;height:93%}.service-card{background:var(--paper);border-radius:16px;align-items:center;gap:20px;padding:20px 30px 20px 22px;display:flex;position:absolute;left:50%;transform:translate(-50%)rotate(2deg);box-shadow:0 22px 44px -16px #3c261280,0 3px 10px #3c261224}[data-orientation=landscape] .service-card{bottom:48px}[data-orientation=portrait] .service-card{bottom:64px}.service-card-icon{flex-shrink:0;width:72px;height:72px;position:relative}.service-card-disc{background:var(--leaf-green);width:72px;height:72px;color:var(--paper);border-radius:50%;justify-content:center;align-items:center;display:flex;position:relative}.service-card-disc:after{content:"";border:2px solid var(--leaf-green);border-radius:50%;animation:2.4s ease-out infinite tap-ring;position:absolute;inset:0}.service-card-coin{border:3px solid var(--paper);background:var(--crema-gold);width:32px;height:32px;font-family:var(--font-latin);color:var(--espresso);border-radius:50%;justify-content:center;align-items:center;font-size:15px;font-weight:700;line-height:1;display:flex;position:absolute;bottom:-4px;right:-6px}.service-card-text{flex-direction:column;gap:4px;display:flex}.service-card-title{font-family:var(--font-mincho);white-space:nowrap;font-size:28px;font-weight:700;line-height:1.3}.service-card-hint{color:var(--roast-soft);font-size:16px;font-weight:500}.leaf-shadows{pointer-events:none;opacity:.2;filter:blur(5px);animation:9s ease-in-out infinite alternate leaf-drift;position:absolute;overflow:visible}[data-orientation=landscape] .leaf-shadows{width:560px;height:656px;top:-30px;left:-30px}[data-orientation=portrait] .leaf-shadows{width:480px;height:562px;top:440px;left:-60px}.leaf-branch{transform-box:view-box;animation-name:leaf-sway;animation-timing-function:ease-in-out;animation-iteration-count:infinite;animation-direction:alternate}.leaf-stem{fill:none;stroke:#2a1a0e;stroke-width:4px;stroke-linecap:round}.leaf-blades{fill:#2a1a0e}.camera-feed{object-fit:cover;width:100%;height:100%;position:absolute;inset:0;transform:scaleX(-1)}.simulated-feed{filter:blur(3px);background-position:50%;background-size:cover;transform:scale(1.04)}.scan-overlay{width:100%;height:100%;position:absolute;inset:0}.scan-dim{fill:var(--night);fill-opacity:.6}.scan-arc{fill:none;stroke:var(--crema-gold);stroke-width:6px;stroke-linecap:round;transition:stroke-dasharray .12s linear}.scan-arc-busy{animation:1.1s ease-in-out infinite alternate arc-pulse}.scan-oval{fill:none;stroke:#f3ede3e6;stroke-width:3px}.scan-silhouette{fill:none;stroke:#f3ede399;stroke-width:2.5px;stroke-dasharray:7 9;stroke-linecap:round}.scan-cancel{height:52px;color:var(--linen);font-family:var(--font-maru);cursor:pointer;background:#1e161073;border:1px solid #f3ede34d;border-radius:999px;align-items:center;gap:8px;padding:0 24px;font-size:17px;font-weight:700;display:flex;position:absolute;top:36px;right:40px}[data-orientation=portrait] .scan-cancel{top:40px}.scan-title{text-align:center;font-family:var(--font-mincho);letter-spacing:.04em;color:var(--linen);text-shadow:0 2px 12px #00000059;margin:0;font-size:32px;font-weight:700;line-height:1.35;position:absolute;bottom:64px;left:0;right:0}[data-orientation=portrait] .scan-title{font-size:34px;bottom:120px}.scan-debug{color:#fff;background:#0009;border-radius:8px;margin:0;padding:10px 14px;font:14px/1.5 ui-monospace,Menlo,monospace;position:absolute;top:24px;left:24px}.awarded-dish{filter:drop-shadow(10px 18px 20px #3c28144d)drop-shadow(2px 4px 4px #3c28142e);height:auto;position:absolute}[data-orientation=landscape] .awarded-dish{width:600px;top:200px;left:640px}[data-orientation=portrait] .awarded-dish{width:640px;top:110px;left:90px}.awarded-glow{filter:blur(80px);background:#fbf7ef99;border-radius:50%;position:absolute}[data-orientation=landscape] .awarded-glow{width:660px;height:560px;top:130px;left:-10px}[data-orientation=portrait] .awarded-glow{width:700px;height:560px;top:500px;left:60px}.awarded-stack{flex-direction:column;align-items:center;gap:18px;display:flex;position:absolute}[data-orientation=landscape] .awarded-stack{justify-content:center;width:640px;top:0;bottom:0;left:0}[data-orientation=portrait] .awarded-stack{top:600px;left:0;right:0}.point-stamp{width:220px;height:220px;margin-bottom:14px;position:relative}.point-stamp-disc{background:var(--leaf-green);color:var(--paper);border-radius:50%;flex-direction:column;justify-content:center;align-items:center;gap:6px;animation:.55s cubic-bezier(.3,1.45,.5,1) .1s both stamp-in;display:flex;position:absolute;inset:0;transform:rotate(-8deg);box-shadow:0 22px 44px -16px #2b201980}.point-stamp-ring{border:2px dashed #fbf7ef73;border-radius:50%;position:absolute;inset:14px}.point-stamp-word{font-family:var(--font-latin);letter-spacing:.18em;font-size:28px;font-weight:700;line-height:1.1}.point-stamp-check{border:4px solid var(--paper);background:var(--crema-gold);width:62px;height:62px;color:var(--espresso);border-radius:50%;justify-content:center;align-items:center;animation:.35s cubic-bezier(.3,1.6,.5,1) .55s both pop-in;display:flex;position:absolute;top:6px;right:0}.awarded-title{font-family:var(--font-mincho);letter-spacing:.04em;white-space:nowrap;margin:0;font-size:46px;font-weight:700;line-height:1.3;animation:.5s ease-out .45s both rise-in}.awarded-thanks{color:var(--roast);margin:0;font-size:24px;font-weight:500;line-height:1.6;animation:.5s ease-out .6s both rise-in}.countdown-track{background:#2b201933;border-radius:999px;width:200px;height:5px;position:absolute;bottom:56px;left:calc(50% - 100px);overflow:hidden}.countdown-fill{background:var(--leaf-green);border-radius:999px;height:100%;animation-name:countdown;animation-timing-function:linear;animation-fill-mode:both}.confetti{pointer-events:none;position:absolute;inset:0}.confetti-piece{transform:translate(-50%, -50%) rotate(var(--rot));border-radius:50%;justify-content:center;align-items:center;animation-name:confetti-burst,confetti-float;animation-duration:.9s,3.4s;animation-timing-function:cubic-bezier(.2,.8,.3,1),ease-in-out;animation-iteration-count:1,infinite;animation-direction:normal,alternate;animation-fill-mode:both,none;display:flex;position:absolute}.confetti-bean{background:#8a5a3b}.bean-crease{background:#2b201999;border-radius:999px;width:2px;height:66%}.confetti-leaf{background:#5e8c4e}.confetti-spark{background:#c9963f;border-radius:0}.error-veil{background:#1e16108c;position:absolute;inset:0}.error-stack{color:var(--paper);flex-direction:column;justify-content:center;align-items:center;gap:12px;display:flex;position:absolute;inset:0}.error-title{font-family:var(--font-mincho);margin:0;font-size:38px;font-weight:700}.error-hint{opacity:.85;margin:0;font-size:20px}[data-orientation=landscape] .countdown-track{left:220px}@keyframes leaf-sway{0%{transform:rotate(-2.4deg)}to{transform:rotate(2.8deg)}}@keyframes leaf-drift{0%{transform:translate(0)}to{transform:translate(8px,5px)}}@keyframes tap-ring{0%{opacity:.55;transform:scale(1)}to{opacity:0;transform:scale(1.55)}}@keyframes arc-pulse{0%{stroke-opacity:1}to{stroke-opacity:.45}}@keyframes stamp-in{0%{opacity:0;transform:scale(1.7)rotate(-24deg)}to{opacity:1;transform:scale(1)rotate(-8deg)}}@keyframes pop-in{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes rise-in{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes countdown{0%{width:0%}to{width:100%}}@keyframes confetti-burst{0%{opacity:0;transform:translate(calc(-50% + var(--from-x)), calc(-50% + var(--from-y))) rotate(0deg) scale(.3)}40%{opacity:1}to{opacity:1;transform:translate(-50%, -50%) rotate(var(--rot)) scale(1)}}@keyframes confetti-float{0%{transform:translate(-50%, -50%) rotate(var(--rot))}to{transform:translate(-50%, calc(-50% - 7px)) rotate(calc(var(--rot) + 10deg))}}@media (prefers-reduced-motion:reduce){.leaf-shadows,.leaf-branch,.service-card-disc:after,.confetti-piece{animation:none}}
