:root{--bg:#0f1220;--card:#1a1f36;--accent:#6ea8ff;--accent2:#b98bff;--text:#f0f2ff;--muted:#9aa3c7}.auth-loading,.login-page{place-items:center;min-height:100vh;padding:1.25rem;display:grid}.auth-loading{color:var(--muted)}.login-card{background:#1a1f36f5;border:1px solid #ffffff14;border-radius:22px;width:min(100%,420px);padding:2rem;box-shadow:0 20px 60px #00000061}.login-card h1,.login-card>p{text-align:center}.login-card h1{margin:.8rem 0 0}.login-card>p{color:var(--muted);margin:.4rem 0 1.5rem}.login-egg{background:linear-gradient(145deg,#fffdf2 12%,#e7dcbf 76%);border-radius:50% 50% 46% 46%/58% 58% 42% 42%;width:48px;height:60px;margin:0 auto;box-shadow:inset -6px -8px 12px #70522a2e,0 6px 12px #0000004d}.login-card form{gap:.5rem;display:grid}.login-card label{margin-top:.4rem;font-size:.85rem;font-weight:700}.login-card input{width:100%;min-height:46px;color:var(--text);font:inherit;background:#11162a;border:1px solid #ffffff24;border-radius:11px;outline:none;padding:.75rem .85rem}.login-card input:focus{border-color:var(--accent);box-shadow:0 0 0 3px #6ea8ff29}.login-primary,.google-login{min-height:46px;font:inherit;cursor:pointer;border:0;border-radius:11px;font-weight:800}.login-primary{background:linear-gradient(90deg, var(--accent), var(--accent2));color:#0f1220;margin-top:.8rem}.google-login{color:#20243a;background:#f7f8ff;width:100%}.login-primary:disabled,.google-login:disabled,.forgot-password:disabled{cursor:wait;opacity:.65}.forgot-password{color:var(--accent);cursor:pointer;background:0 0;border:0;margin:.75rem auto 0;padding:.25rem;display:block}.login-divider{color:var(--muted);align-items:center;gap:.8rem;margin:1rem 0;font-size:.8rem;display:flex}.login-divider:before,.login-divider:after{content:"";background:#ffffff1a;flex:1;height:1px}.auth-message{color:#ffd18b;text-align:center;margin-top:1rem;font-size:.88rem}.auth-session{max-width:1100px;color:var(--muted);justify-content:flex-end;align-items:center;gap:.65rem;margin:0 auto;padding:.75rem 1.25rem 0;font-size:.8rem;display:flex}.auth-session button{min-height:34px;color:var(--text);cursor:pointer;background:0 0;border:1px solid #ffffff24;border-radius:9px;padding:.35rem .7rem}*{box-sizing:border-box}body{background:radial-gradient(ellipse at top, #1e2440 0%, var(--bg) 70%);color:var(--text);min-height:100vh;margin:0;font-family:system-ui,-apple-system,sans-serif}.app{max-width:1100px;margin:0 auto;padding:2rem 1.25rem 4rem}header{text-align:center;margin-bottom:2rem}header h1{margin:0;font-size:2rem}header p{color:var(--muted);margin:.35rem 0 0}.year-picker{text-align:left;gap:.35rem;width:min(100%,340px);margin:1rem auto 0;display:grid}.year-picker label{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-size:.76rem;font-weight:700}.year-picker select{width:100%;min-height:42px;color:var(--text);font:inherit;background:#171c31;border:1px solid #ffffff24;border-radius:10px;padding:.6rem 2.25rem .6rem .75rem}.year-picker select:disabled{opacity:.65}.year-error{color:#ff9b9b;font-size:.78rem}.data-mode{color:var(--muted);margin-top:.45rem;font-size:.72rem}.display-state,.live-warning,.live-error{text-align:center;border-radius:12px;max-width:720px;margin:1rem auto;padding:1rem}.display-state{color:var(--muted)}.live-warning{color:#ffd18b;background:#ffd18b14;border:1px solid #ffd18b33}.live-error{color:#ff9b9b;background:#ff9b9b14;border:1px solid #ff9b9b33}.grid{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:1.25rem;display:grid}.card{background:var(--card);text-align:center;border:1px solid #ffffff0f;border-radius:18px;padding:1.1rem;box-shadow:0 8px 30px #00000040}.card-head{text-align:left;justify-content:space-between;align-items:flex-start;margin-bottom:.5rem;display:flex}.name{font-size:1.02rem;font-weight:700}.room{color:var(--muted);font-size:.8rem}.points{color:var(--accent);white-space:nowrap;font-weight:800}.egg{transform-origin:50% 80%;background:linear-gradient(145deg,#fffdf2 12%,#e7dcbf 76%);border-radius:50% 50% 46% 46%/58% 58% 42% 42%;width:66px;height:82px;position:relative;box-shadow:inset -8px -10px 16px #70522a2e,0 8px 14px #00000057}.egg-shine{background:#ffffffb8;border-radius:50%;width:15px;height:28px;position:absolute;top:13px;left:13px;transform:rotate(22deg)}.egg-spot{background:#b98bff3d;border-radius:50%;position:absolute}.egg-spot-one{width:13px;height:9px;top:29px;right:12px;transform:rotate(-18deg)}.egg-spot-two{width:10px;height:14px;bottom:15px;left:22px;transform:rotate(25deg)}.creature{width:104px;height:104px;position:relative}.creature:before{content:"";background:radial-gradient(circle,#b98bff47,#0000 70%);border-radius:50%;position:absolute;inset:10px}.particle{background:var(--accent2);border-radius:50%;width:10px;height:10px;position:absolute;top:50%;left:50%}.progress-track{background:#ffffff14;border-radius:999px;height:10px;margin-top:.4rem;overflow:hidden}.progress-fill{background:linear-gradient(90deg, var(--accent), var(--accent2));border-radius:999px;height:100%}.progress-label{color:var(--muted);margin:.35rem 0 .75rem;font-size:.78rem}.give{background:linear-gradient(90deg, var(--accent), var(--accent2));color:#0f1220;cursor:pointer;border:none;border-radius:12px;width:100%;padding:.65rem;font-size:.95rem;font-weight:800;transition:transform .1s,filter .1s}.give:hover{filter:brightness(1.08)}.give:active{transform:scale(.96)}.collection{border-top:1px solid #ffffff0f;flex-wrap:wrap;justify-content:center;gap:.35rem;margin-top:.85rem;padding-top:.75rem;display:flex}.collected{font-size:1.4rem}.pet-stage{justify-content:center;align-items:center;height:110px;display:flex;position:relative}.pet{transform-origin:50% 80%}.stage-label{text-transform:capitalize;color:var(--accent2);margin-top:.15rem;font-size:.85rem;font-weight:700}.point-controls{grid-template-columns:1fr 1fr;gap:.5rem;margin-top:.75rem;display:grid}.point-controls button{min-height:40px;color:var(--text);font:inherit;cursor:pointer;background:#ffffff0d;border:1px solid #ffffff24;border-radius:10px;font-weight:800}.point-controls button:last-child{background:linear-gradient(90deg, var(--accent), var(--accent2));color:#0f1220;border:0}.point-controls button:disabled{cursor:wait;opacity:.45}.everyone-bar{background:#1a1f36e0;border:1px solid #ffffff14;border-radius:16px;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.25rem;padding:.9rem 1rem;display:flex;box-shadow:0 8px 24px #0003}.everyone-bar>div:first-child{text-align:left;gap:.12rem;display:grid}.everyone-bar strong{font-size:1rem}.everyone-bar span{color:var(--muted);font-size:.75rem}.everyone-controls{grid-template-columns:repeat(2,minmax(92px,1fr));margin-top:0}.btn-row{gap:.5rem;display:flex}.btn-row .give{flex:2}.take{color:#ff8b8b;cursor:pointer;background:0 0;border:1px solid #ffffff26;border-radius:12px;flex:1;padding:.65rem;font-weight:800}.take:hover{background:#ff8b8b1a}.take:active{transform:scale(.96)}.room-section{margin-bottom:2.25rem}.room-bar{justify-content:space-between;align-items:center;margin-bottom:.9rem;display:flex}.room-bar h2{margin:0;font-size:1.15rem}.room-actions{gap:.5rem;display:flex}.room-actions button{padding:.45rem .9rem}.room-actions .give{flex:none;width:auto}.sprite{z-index:1;background-repeat:no-repeat;background-size:calc(var(--frames) * 104px) 104px;image-rendering:auto;contain:strict;background-position-y:50%;width:104px;height:104px;animation-name:sprite-play;animation-timing-function:steps(24,end);animation-iteration-count:infinite;position:relative}.sprite:not(.sprite-paused){will-change:background-position}.sprite-paused{animation-play-state:paused}@keyframes sprite-play{0%{background-position-x:0}to{background-position-x:var(--sprite-end)}}@media (width<=600px){.login-card{padding:1.4rem}.auth-session{padding-inline:.85rem}.app{padding:1rem .85rem 2rem}header{margin-bottom:1.25rem}header h1{font-size:1.65rem}header p{max-width:320px;margin:.35rem auto 0;font-size:.9rem}.everyone-bar{flex-direction:column;align-items:stretch}.everyone-controls{width:100%}.room-bar{flex-wrap:wrap;gap:.75rem}.room-actions{margin-left:auto}.room-actions button,.btn-row button{min-height:44px}.grid{grid-template-columns:minmax(0,1fr);gap:.85rem}.card{padding:1rem}}@media (prefers-reduced-motion:reduce){.sprite{animation-play-state:paused}}
