:root{--bg: #0b1f3a;--bg-2: #13325c;--accent: #ffc83d;--text: #ffffff;--muted: #9fb3d1}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;width:100%}body{font-family:Segoe UI,system-ui,-apple-system,sans-serif;background:radial-gradient(circle at top,var(--bg-2),var(--bg));color:var(--text);overflow:hidden;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.kiosk{height:100vh;width:100vw;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2vh;text-align:center;padding:4vh}.kiosk__title{font-size:clamp(1.5rem,4vw,3rem);font-weight:700;letter-spacing:.5px}.kiosk__subtitle{font-size:clamp(.9rem,2vw,1.3rem);color:var(--muted)}.qr-card{background:#fff;padding:clamp(16px,3vw,40px);border-radius:24px;box-shadow:0 20px 60px #00000073;display:flex;align-items:center;justify-content:center;position:relative}.qr-card--stale{opacity:.35;filter:grayscale(1);transition:opacity .3s ease}.countdown{display:flex;flex-direction:column;align-items:center;gap:8px}.countdown__ring{--size: clamp(70px, 9vw, 110px);width:var(--size);height:var(--size);border-radius:50%;display:grid;place-items:center;font-size:clamp(1.4rem,3vw,2.2rem);font-weight:700;background:conic-gradient(var(--accent) calc(var(--progress) * 1%),rgba(255,255,255,.12) 0);transition:background .95s linear}.countdown__ring-inner{width:78%;height:78%;border-radius:50%;background:var(--bg);display:grid;place-items:center}.countdown__label{color:var(--muted);font-size:clamp(.8rem,1.6vw,1rem)}.status{font-size:clamp(.8rem,1.6vw,1rem);color:var(--muted)}.status--error{color:#ff8a8a}.birthday{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:grid;place-items:center;background:radial-gradient(circle at 50% 40%,#13325cf5,#0b1f3afa);overflow:hidden;animation:birthday-fade .4s ease-out;cursor:pointer}@keyframes birthday-fade{0%{opacity:0}to{opacity:1}}.birthday__card{position:relative;z-index:2;text-align:center;padding:clamp(24px,5vw,56px);animation:birthday-pop .6s cubic-bezier(.18,.89,.32,1.28)}@keyframes birthday-pop{0%{transform:scale(.6);opacity:0}to{transform:scale(1);opacity:1}}.birthday__emoji{font-size:clamp(3rem,10vw,6rem);line-height:1;animation:birthday-bounce 1.6s ease-in-out infinite}@keyframes birthday-bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-14px)}}.birthday__greeting{margin-top:18px;font-size:clamp(1.6rem,5vw,3rem);font-weight:700;color:var(--accent)}.birthday__name{margin-top:10px;font-size:clamp(2.2rem,7vw,4.5rem);font-weight:800;color:var(--text)}.birthday__sub{margin-top:14px;font-size:clamp(1rem,2.6vw,1.6rem);color:var(--muted)}.birthday__confetti{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:none}.birthday__piece{position:absolute;top:-5%;border-radius:2px;opacity:.9;animation-name:birthday-fall;animation-timing-function:linear;animation-iteration-count:infinite}@keyframes birthday-fall{0%{transform:translateY(-10vh) rotate(0);opacity:1}to{transform:translateY(110vh) rotate(540deg);opacity:.6}}.scanok{position:fixed;top:0;right:0;bottom:0;left:0;z-index:90;display:grid;place-items:center;background:#0b1f3aed;animation:scanok-fade .2s ease-out;cursor:pointer}@keyframes scanok-fade{0%{opacity:0}to{opacity:1}}.scanok__card{text-align:center;animation:scanok-pop .4s cubic-bezier(.18,.89,.32,1.28)}@keyframes scanok-pop{0%{transform:scale(.7);opacity:0}to{transform:scale(1);opacity:1}}.scanok__svg{width:clamp(110px,22vw,180px);height:clamp(110px,22vw,180px)}.scanok__circle{stroke:#2fbf71;stroke-width:3;stroke-dasharray:151;stroke-dashoffset:151;animation:scanok-circle .5s ease-out forwards}.scanok__tick{stroke:#2fbf71;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:48;stroke-dashoffset:48;animation:scanok-tick .35s .4s ease-out forwards}@keyframes scanok-circle{to{stroke-dashoffset:0}}@keyframes scanok-tick{to{stroke-dashoffset:0}}.scanok__title{margin-top:20px;font-size:clamp(1.8rem,5.5vw,3.4rem);font-weight:800;color:#43d98a}.scanok__name{margin-top:10px;font-size:clamp(1.3rem,3.6vw,2.2rem);color:var(--text)}
