:root{--red:#e11d2e;--red-dark:#b3121f;--cream:#fdf6ec;--paper:#fff;--ink:#3a2a22;--ink-soft:#7a6a60;--yellow:#ffd166;--green:#4caf50;--radius:18px;--shadow:0 10px 30px #3a2a2224;--max-width:480px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{height:100%;color:var(--ink);overscroll-behavior:none;background:#eadfd2;margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,Apple SD Gothic Neo,Pretendard,Malgun Gothic,system-ui,sans-serif}body{justify-content:center;display:flex}.app-shell{width:100%;max-width:var(--max-width);background:var(--cream);flex-direction:column;height:100dvh;min-height:100dvh;display:flex;position:relative;overflow:hidden}.screen{flex-direction:column;flex:1;min-height:0;animation:.28s ease-out both fade-in;display:flex}@keyframes fade-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.btn{appearance:none;border-radius:var(--radius);color:#fff;background:linear-gradient(180deg, #f2394b, var(--red));width:100%;box-shadow:0 6px 0 var(--red-dark);cursor:pointer;border:none;padding:16px 20px;font-size:17px;font-weight:800;transition:transform 80ms,box-shadow 80ms,opacity .2s}.btn:active:not(:disabled){box-shadow:0 2px 0 var(--red-dark);transform:translateY(4px)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn--ghost{background:var(--paper);color:var(--ink);border:2px solid #e2d6c8;box-shadow:0 4px #ded0bf}.btn--ghost:active:not(:disabled){box-shadow:0 1px #ded0bf}.card{background:var(--paper);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px}.label{color:var(--ink-soft);margin-bottom:6px;font-size:13px;font-weight:700;display:block}.input{width:100%;color:var(--ink);background:#fffdf9;border:2px solid #e6dacc;border-radius:14px;outline:none;padding:14px 16px;font-size:16px;transition:border-color .15s}.input:focus{border-color:var(--red)}.input[aria-invalid=true]{background:#fff5f5;border-color:#ef5350}.field-error{color:#d32f2f;margin:6px 0 0;font-size:12.5px;font-weight:600}.alert{color:#b3261e;background:#fdecea;border:1px solid #f5c6c0;border-radius:12px;margin-top:14px;padding:12px 14px;font-size:13.5px;font-weight:600}.checkbox-row{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:flex-start;gap:10px;display:flex}.checkbox-row input{width:22px;height:22px;accent-color:var(--red);flex:none;margin:1px 0 0}.consent{flex-direction:column;flex:1;margin-top:16px;display:flex}.consent-box{min-height:128px;color:var(--ink-soft);-webkit-overflow-scrolling:touch;background:#faf4ea;border:1px solid #ece0d0;border-radius:12px;flex:1;margin-top:10px;margin-bottom:0;padding:12px 14px;font-size:12.5px;line-height:1.65;overflow-y:auto}.consent-box dt{color:var(--ink);margin-top:8px;font-weight:800}.consent-box dt:first-child{margin-top:0}.consent-box dd{margin:2px 0 0}.landing{gap:16px;padding:22px 20px 26px;overflow-y:auto}.landing__form{flex-direction:column;flex:1;display:flex}.brand{text-align:center;padding:10px 0 2px}.brand__title{letter-spacing:-.02em;margin:0 0 6px;font-size:30px;font-weight:900;line-height:1.25}.brand__title em{color:var(--red);font-style:normal}.brand__desc{color:var(--ink-soft);margin:0;font-size:14px;line-height:1.6}.loading{text-align:center;background:radial-gradient(circle at 50% 30%, #fff6e6, var(--cream));justify-content:center;align-items:center;gap:22px;padding:24px}.loading__message{place-items:center;min-height:92px;display:grid}.loading__message p{margin:0;font-size:20px;font-weight:800;line-height:1.5;animation:.4s ease-out both fade-in}.loading__message p em{color:var(--red);font-style:normal}.loading__bar{background:#ece0d0;border:2px solid #e0d2c0;border-radius:999px;width:100%;max-width:280px;height:14px;overflow:hidden}.loading__bar div{background:linear-gradient(90deg, var(--yellow), var(--red));border-radius:999px;height:100%;transition:width .2s linear}.loading__percent{color:var(--ink-soft);font-variant-numeric:tabular-nums;font-size:13px;font-weight:700}.cart-spin{font-size:44px;animation:1s ease-in-out infinite bob}@keyframes bob{0%,to{transform:translateY(0)rotate(-3deg)}50%{transform:translateY(-8px)rotate(3deg)}}.game{background:#22252a;flex:1;min-height:0;position:relative}.game canvas{touch-action:none;width:100%;height:100%;display:block}.hud{pointer-events:none;justify-content:space-between;align-items:flex-start;gap:10px;padding:12px 14px;display:flex;position:absolute;top:0;left:0;right:0}.hud__score{background:#ffffffeb;border-radius:14px;padding:7px 14px;box-shadow:0 4px 12px #0000002e}.hud__score small{color:var(--ink-soft);letter-spacing:.06em;font-size:10px;font-weight:700;display:block}.hud__score strong{font-variant-numeric:tabular-nums;letter-spacing:-.01em;font-size:22px}.hud__right{flex-direction:column;align-items:flex-end;gap:6px;display:flex}.hud__lives{filter:drop-shadow(0 2px 3px #0000004d);gap:3px;font-size:19px;display:flex}.hud__lives span{transition:opacity .2s,transform .2s}.hud__lives span[data-lost=true]{opacity:.25;transform:scale(.85)}.hud__combo{background:var(--yellow);color:var(--ink);border-radius:999px;padding:3px 11px;font-size:12px;font-weight:900;animation:.25s ease-out pop;box-shadow:0 3px 8px #0003}@keyframes pop{0%{transform:scale(.7)}to{transform:scale(1)}}.overlay{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);text-align:center;color:#fff;background:#22252a9e;place-items:center;padding:24px;display:grid;position:absolute;inset:0}.overlay__inner{justify-items:center;gap:12px;display:grid}.overlay h2{margin:0;font-size:22px;font-weight:900}.overlay p{opacity:.92;margin:0;font-size:14px;line-height:1.6}.countdown{color:var(--yellow);text-shadow:0 6px #00000040;font-size:74px;font-weight:900;animation:.4s ease-out pop}.tutorial-hand{font-size:40px;animation:1.4s ease-in-out infinite swipe}@keyframes swipe{0%,to{transform:translate(-26px)}50%{transform:translate(26px)}}.result{text-align:center;gap:16px;padding:24px 20px;overflow-y:auto}.result__badge{font-size:46px}.result h1{margin:0;font-size:24px;font-weight:900}.result__score{color:var(--red);font-variant-numeric:tabular-nums;font-size:54px;font-weight:900;line-height:1.1}.result__score small{color:var(--ink-soft);margin-left:4px;font-size:18px}.result__grid{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.result__grid div{background:#faf4ea;border-radius:12px;padding:10px 6px}.result__grid small{color:var(--ink-soft);font-size:11px;font-weight:700;display:block}.result__grid strong{font-variant-numeric:tabular-nums;font-size:16px}.result__note{color:var(--ink-soft);margin:0;font-size:13px;line-height:1.65}.spinner{vertical-align:-3px;border:3px solid #fff6;border-top-color:#fff;border-radius:50%;width:18px;height:18px;animation:.8s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.muted-link{color:var(--ink-soft);cursor:pointer;background:0 0;border:none;padding:4px;font-size:12px;font-weight:600;text-decoration:underline}.admin{width:100%;max-width:1100px;margin:0 auto;padding:24px 18px 60px}.admin h1{margin:0 0 4px;font-size:22px;font-weight:900}.admin__sub{color:var(--ink-soft);margin:0 0 18px;font-size:13px}.admin__stats{grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin-bottom:16px;display:grid}.stat{background:var(--paper);border-radius:14px;padding:14px;box-shadow:0 4px 14px #3a2a2214}.stat small{color:var(--ink-soft);margin-bottom:4px;font-size:11.5px;font-weight:700;display:block}.stat strong{font-variant-numeric:tabular-nums;font-size:22px}.admin__toolbar{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;display:flex}.admin__toolbar .input{flex:200px;width:auto;padding:10px 14px}.btn--sm{width:auto;box-shadow:0 4px 0 var(--red-dark);border-radius:12px;padding:10px 16px;font-size:14px}.btn--sm.btn--ghost{box-shadow:0 4px #ded0bf}.table-wrap{background:var(--paper);border-radius:14px;overflow:auto;box-shadow:0 4px 14px #3a2a2214}table{border-collapse:collapse;width:100%;font-size:13.5px}th,td{text-align:left;white-space:nowrap;border-bottom:1px solid #f0e7dc;padding:11px 12px}th{color:var(--ink-soft);background:#faf4ea;font-size:12px;font-weight:800;position:sticky;top:0}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}tbody tr:hover{background:#fffdf8}.pager{color:var(--ink-soft);justify-content:center;align-items:center;gap:8px;margin-top:14px;font-size:13px;font-weight:600;display:flex}.login-wrap{max-width:340px;margin:18vh auto 0;padding:0 18px}.empty{text-align:center;color:var(--ink-soft);padding:40px 20px;font-size:13.5px}@media (min-width:520px){.app-shell{height:calc(100dvh - 24px);min-height:calc(100dvh - 24px);box-shadow:var(--shadow);border-radius:24px;margin:12px 0}}
