:root{--ink:#2b2140;--cream:#fff4e3;--coral:#f2604c;--sun:#ffc23d;--mint:#2fb8a0;--top:env(safe-area-inset-top,0px);--bottom:env(safe-area-inset-bottom,0px);font-family:ui-rounded,SF Pro Rounded,Nunito,system-ui,sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;background:#1f1a2e;margin:0;position:fixed;inset:0;overflow:hidden}body{justify-content:center;display:flex}#stage{background:var(--cream);width:min(100vw,56.25dvh);height:100dvh;position:relative;overflow:hidden}#c{touch-action:none;width:100%;height:100%;display:block;position:absolute;inset:0}#ui{pointer-events:none;color:var(--ink);position:absolute;inset:0;container-type:size}#ui>*{pointer-events:auto}button{font:inherit;color:inherit;cursor:pointer;touch-action:manipulation;background:0 0;border:0}button:focus-visible{outline:3px solid var(--ink);outline-offset:2px}.screen{background:var(--cream);flex-direction:column;display:flex;position:absolute;inset:0}.bar{background:#2b21401f;border-radius:7px;height:7px;overflow:hidden}.bar i{background:var(--coral);border-radius:7px;width:0;height:100%;transition:width .18s ease-out;display:block}.big{background:var(--sun);border-radius:20px;justify-content:center;align-items:center;gap:8px;width:100%;min-height:56px;padding:10px 16px;font-size:clamp(17px,5.2cqw,28px);font-weight:900;transition:transform 80ms,box-shadow 80ms;display:flex;box-shadow:0 5px #b87f10}.big:active{transform:translateY(3px);box-shadow:0 2px #b87f10}.big svg{flex:none;width:1.15em;height:1.15em}.big span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.round{background:#fffffff2;border-radius:50%;flex:none;place-items:center;width:max(44px,11cqw);height:max(44px,11cqw);transition:transform 80ms,box-shadow 80ms;display:grid;box-shadow:0 3px #2b214033}.round:active{transform:translateY(2px);box-shadow:0 1px #2b214033}.round svg{width:56%;height:56%}.loader,.fatal{text-align:center;justify-content:center;align-items:center;gap:16px;padding:24px}.loader h1,.fatal h1{letter-spacing:-.02em;margin:0;font-size:clamp(44px,15cqw,84px);font-weight:900}.loader .bar{width:55cqw;height:10px}.fatal p{max-width:30ch;margin:0;font-size:17px;font-weight:700;line-height:1.35}.intro{padding:calc(max(10px, 3cqw) + var(--top)) max(10px, 3cqw) calc(max(14px, 2.4cqh) + var(--bottom));flex-direction:column;align-items:center;display:flex;position:absolute;inset:0;pointer-events:none!important}.intro>*{pointer-events:none}.intro button{pointer-events:auto}.intro-top{align-self:flex-end}.intro-top .round{box-shadow:none;opacity:.55;background:0 0}.intro-logo{text-align:center;margin-top:7cqh;animation:1s ease-out both settle}.intro-logo h1{letter-spacing:-.015em;margin:0;font-family:ui-serif,New York,Georgia,Noto Serif,serif;font-size:clamp(64px,21cqw,124px);font-weight:400;line-height:1}.intro-logo p{letter-spacing:.01em;opacity:.62;margin:10px 0 0;font-size:clamp(14px,3.8cqw,22px);font-weight:500}.intro-actions{flex-direction:column;align-items:center;gap:4px;margin-top:auto;animation:1s ease-out .2s both settle;display:flex}.play{background:var(--ink);min-width:min(62cqw,340px);min-height:58px;color:var(--cream);letter-spacing:.01em;border-radius:999px;padding:0 32px;font-size:clamp(18px,5cqw,28px);font-weight:700;transition:transform .1s}.play:active{transform:scale(.97)}.intro-link{min-height:44px;padding:0 18px;font-size:clamp(15px,4cqw,22px);font-weight:600}.grid-head{padding:calc(max(14px, 4.5cqw) + var(--top)) 5cqw 10px;align-items:center;gap:12px;display:flex}.grid-title{flex:1;min-width:0}.grid-title h1{letter-spacing:-.02em;margin:0;font-size:clamp(36px,11cqw,64px);font-weight:900;line-height:1}.grid-title p{opacity:.7;margin:5px 0 6px;font-size:clamp(13px,3.6cqw,20px);font-weight:700}.grid{-webkit-overflow-scrolling:touch;overscroll-behavior:contain;flex:1;grid-template-columns:repeat(3,1fr);align-content:start;gap:12px 3.2cqw;min-height:0;padding:8px 5cqw 16px;display:grid;overflow-y:auto}.card{text-align:left;padding:0;transition:transform .1s;display:block;position:relative}.card:active{transform:scale(.95)}.card img{aspect-ratio:1;-webkit-user-drag:none;background:#e8dcc6;border:4px solid #fff;border-radius:20px;width:100%;display:block;box-shadow:0 3px #2b214026}.card span{text-align:center;margin-top:5px;font-size:max(12.5px,3.2cqw);font-weight:800;line-height:1.15;display:block}.card.locked img{filter:saturate(.25)brightness(.82)}.card.locked span{opacity:.55}.card.next img{border-color:var(--coral);animation:1.5s ease-in-out infinite glow}.card.next span{color:#c43d2b}.card.nope{animation:.32s nope}.card em{place-items:center;font-style:normal;display:grid;position:absolute}.card .done{background:var(--mint);border:3px solid #fff;border-radius:50%;width:30px;height:30px;top:-5px;right:-5px}.card .done svg{width:72%;height:72%}.card .lock{aspect-ratio:1;background:#2b2140b8;border-radius:50%;width:36%;margin-top:-26%;top:50%;left:50%;transform:translate(-50%,-50%)}.card .lock svg{width:64%;height:64%}.cta{width:auto;margin:4px 5cqw calc(16px + var(--bottom));flex:none}.toast{left:50%;bottom:calc(92px + var(--bottom));background:var(--ink);color:#fff;text-align:center;border-radius:14px;width:max-content;max-width:88%;padding:10px 16px;font-size:15px;font-weight:700;animation:.2s ease-out both rise;position:absolute;transform:translate(-50%)}.hud{padding:calc(max(10px, 3cqw) + var(--top)) max(10px, 3cqw) 0;align-items:flex-start;gap:8px;display:flex;position:absolute;top:0;left:0;right:0;pointer-events:none!important}.hud>*{pointer-events:auto}.goal{pointer-events:none;background:#fffffff2;border-radius:18px;flex:1;min-width:0;min-height:max(44px,11cqw);padding:7px 12px 8px;box-shadow:0 3px #2b214033}.goal b{font-size:clamp(14.5px,4.2cqw,24px);font-weight:900;line-height:1.15;display:block}.meter{align-items:center;gap:8px;margin-top:5px;display:flex}.meter .bar{flex:1}.meter small{text-align:right;font-variant-numeric:tabular-nums;flex:none;min-width:2.6em;min-height:1em;font-size:12.5px;font-weight:800;line-height:1}.hint{z-index:1;width:0;height:0;position:absolute;pointer-events:none!important}.hint b{filter:drop-shadow(0 3px 2px #2b214055);width:52px;display:block;position:absolute;top:0;left:0}.hint svg{width:100%;display:block}.hint .ring{opacity:0;border:4px solid #fff;border-radius:50%;width:52px;height:52px;position:absolute;top:-26px;left:-26px}.hint.tap b{animation:.9s ease-in-out infinite h-tap}.hint.tap .ring{animation:.9s ease-out infinite h-ring}.hint.hold b{animation:1.5s ease-in-out infinite h-hold}.hint.hold .ring{animation:1.5s ease-out infinite h-ring}.hint.drag b{animation:1.8s ease-in-out infinite h-drag}.hint.down b{animation:1.2s ease-in infinite h-down}.hint.up b{animation:1.2s ease-out infinite h-up}@keyframes h-tap{0%,to{transform:translate(-50%,14px)}50%{transform:translate(-50%)scale(.92)}}@keyframes h-hold{0%,to{transform:translate(-50%,14px)}25%,80%{transform:translate(-50%)scale(.92)}}@keyframes h-ring{0%,30%{opacity:0;transform:scale(.4)}50%{opacity:.9}to{opacity:0;transform:scale(1.5)}}@keyframes h-drag{0%,to{transform:translate(calc(-50% - 44px),10px)}50%{transform:translate(calc(44px - 50%),-16px)}}@keyframes h-down{0%{opacity:0;transform:translate(-50%,-30px)}20%{opacity:1}80%{opacity:1}to{opacity:0;transform:translate(-50%,100px)}}@keyframes h-up{0%{opacity:0;transform:translate(-50%,50px)}20%{opacity:1}80%{opacity:1}to{opacity:0;transform:translate(-50%,-90px)}}.win{padding:0 6cqw calc(8cqh + var(--bottom));background:linear-gradient(#0000 38%,#1f1a2ed9);flex-direction:column;justify-content:flex-end;align-items:center;gap:12px;animation:.25s both fade;display:flex;position:absolute;inset:0}.win h2{color:#fff;letter-spacing:-.02em;text-align:center;text-shadow:0 4px #2b214088;margin:0 0 4px;font-size:clamp(38px,12.5cqw,76px);font-weight:900;animation:.45s cubic-bezier(.2,1.6,.4,1) both pop}.win .row{gap:10px;width:100%;display:flex}.win .row button{background:#fff;border-radius:18px;flex:1;min-height:48px;font-size:clamp(15px,4.4cqw,24px);font-weight:900;box-shadow:0 4px #2b214055}.win .row button:active{transform:translateY(2px);box-shadow:0 2px #2b214055}.curtain{background:var(--cream);z-index:5;transition:opacity .2s;animation:.13s both fade;position:absolute;inset:0}.curtain.out{opacity:0;pointer-events:none}#rotate{z-index:10;background:var(--ink);color:#fff;text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:14px;font-size:18px;font-weight:800;display:none;position:fixed;inset:0}#rotate svg{width:64px;height:64px}@media (orientation:landscape) and (height<=500px){#rotate{display:flex}}@keyframes settle{0%{opacity:0;transform:translateY(8px)}}@keyframes fade{0%{opacity:0}}@keyframes pop{0%{opacity:0;transform:scale(.3)}}@keyframes rise{0%{opacity:0;transform:translate(-50%,10px)}}@keyframes glow{50%{box-shadow:0 0 0 5px #f2604c55,0 3px #2b214026}}@keyframes nope{25%{transform:translate(-5px)}75%{transform:translate(5px)}}@media (prefers-reduced-motion:reduce){.card.next img,.win h2,.intro-logo,.intro-actions{animation:none}.hint b,.hint .ring{animation-duration:3s!important}}
