.ph-app{--ph-ink:#2e2340;--ph-pink:#e2487a;--ph-gold:#ffc93c;--ph-green:#3fbf6a;--ph-amber:#f29a2e;overflow:hidden;touch-action:none;-moz-user-select:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;height:100dvh;background:#7fb35a}.ph-app.shake{animation:ph-shake .45s linear}@keyframes ph-shake{0%,to{transform:none}20%{transform:translate(-7px,3px)}40%{transform:translate(7px,-3px)}60%{transform:translate(-4px,-2px)}80%{transform:translate(4px,2px)}}.ph-scene{width:100%;height:100%;display:block;z-index:0}.ph-scene,.ph-zone{position:absolute;inset:0}.ph-zone{z-index:2;touch-action:none;cursor:pointer}.ph-app:not([data-phase=play]):not([data-phase=inspect]) .ph-zone{pointer-events:none}.ph-app:not([data-phase=play]):not([data-phase=inspect]):not([data-phase=verdict]):not([data-phase=paused]) :is(.ph-head,.ph-keys,.ph-pause-btn,.ph-rings,.ph-focus,.ph-pops,.ph-toast,.ph-say,.ph-ghost){display:none}.ph-app:not([data-phase=play]) :is(.ph-rings,.ph-focus,.ph-keys){display:none}.ph-pops,.ph-rings{position:absolute;inset:0;z-index:3;pointer-events:none}.ph-ring{position:absolute;left:0;top:0;width:72px;height:72px;margin:-36px 0 0 -36px;border-radius:50%;display:grid;place-items:center;box-sizing:border-box;border:4px dashed rgba(255,255,255,.9);background:rgba(46,35,64,.25);opacity:0;transition:opacity .15s,background .15s,border-color .15s,scale .15s}.ph-ring-icon{font-size:26px;line-height:1;filter:drop-shadow(0 2px 0 rgba(0,0,0,.3))}.ph-ring-count{position:absolute;right:-6px;bottom:-4px;min-width:22px;padding:1px 5px;border-radius:9px;font:800 12px/1.3 Playful,sans-serif;color:#fff;background:var(--ph-ink);text-align:center;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.ph-rings.carrying .ph-ring.legal{opacity:1;border-color:#d9ffe0;background:rgba(63,191,106,.55);border-style:solid}.ph-rings.carrying .ph-ring.legal.warn{border-color:#fff0c8;background:rgba(242,154,46,.7)}.ph-rings.carrying .ph-ring.no{opacity:.35;transform-origin:center;scale:.7}.ph-ring.over .ph-ring-count{background:#c8252f;animation:ph-wobble .18s linear infinite}.ph-ring.hot{scale:1.2}.ph-rings:not(.carrying) .ph-ring.poster{opacity:1;scale:.78;border-style:solid;border-color:#f0dcff;background:rgba(140,80,200,.7)}.ph-rings:not(.carrying) .ph-ring.poster:after{content:"🎸 poster";position:absolute;top:-22px;white-space:nowrap;font:800 13px/1 Playful,sans-serif;color:#fff;background:rgba(110,60,160,.92);padding:3px 7px;border-radius:8px}.ph-rings:not(.carrying) .ph-ring.poster .ph-ring-count{display:none}@keyframes ph-wobble{50%{transform:rotate(-8deg) scale(1.1)}}.ph-focus{position:absolute;z-index:3;left:0;top:0;--s:72px;width:var(--s);height:var(--s);margin:calc(var(--s) / -2) 0 0 calc(var(--s) / -2);border-radius:50%;border:4px solid var(--ph-gold);box-shadow:0 0 0 3px rgba(46,35,64,.6);pointer-events:none;opacity:0;transition:opacity .12s}.ph-focus.show{opacity:1;animation:ph-breathe .9s ease-in-out infinite}@keyframes ph-breathe{50%{box-shadow:0 0 0 8px rgba(255,201,60,.35)}}.ph-pop{position:absolute;left:0;top:0;margin:-54px 0 0 -26px;width:52px;height:40px;display:grid;place-items:center;font:800 24px/1 Playful,sans-serif;color:#fff;background:#d8262c;border:3px solid #fff;border-radius:14px;box-shadow:0 3px 0 rgba(0,0,0,.35);animation:ph-pop 1.8s ease-out forwards}@keyframes ph-pop{0%{scale:.2}12%{scale:1.25}22%{scale:1}80%{opacity:1}to{opacity:0;translate:0 -16px}}.ph-say{z-index:3;top:30%;transform:translate(-50%,-115%) scale(.8);transform-origin:50% 100%;opacity:0;pointer-events:none;max-width:min(64vw,280px);width:max-content;padding:6px 12px;border-radius:14px;color:var(--ph-ink);border:3px solid var(--ph-ink);font:800 18px/1.15 Playful,sans-serif;box-shadow:0 3px 0 rgba(46,35,64,.3);transition:opacity .12s,transform .12s}.ph-say,.ph-say:after{position:absolute;left:50%;background:#fff}.ph-say:after{content:"";bottom:-10px;width:14px;height:14px;margin-left:-7px;border-right:3px solid var(--ph-ink);border-bottom:3px solid var(--ph-ink);transform:rotate(45deg)}.ph-say.show{opacity:1;transform:translate(-50%,-115%) scale(1)}.ph-head{position:absolute;z-index:4;left:0;right:0;top:0;pointer-events:none;gap:8px;padding:calc(env(safe-area-inset-top, 0px) + 8px) 108px 0 10px}.ph-clock,.ph-head,.ph-mess{box-sizing:border-box;display:flex;align-items:center}.ph-clock,.ph-mess{gap:6px;padding:4px 11px;border-radius:14px;height:44px;background:var(--play-paper);border:3px solid #fff;box-shadow:0 3px 0 rgba(0,0,0,.3);color:var(--ph-ink)}.ph-clock-icon{font-size:20px}.ph-clock b{font:800 28px/1 Playful,sans-serif;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--ph-ink)}.ph-clock.urgent{background:#ffe0dc;animation:ph-throb .5s ease-in-out infinite}.ph-clock.urgent b{color:#c8252f}.ph-clock.frozen b{color:#8a7fa0}@keyframes ph-throb{50%{transform:scale(1.06)}}.ph-mess b{font:800 24px/1 Playful,sans-serif;color:var(--ph-pink);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.ph-mess span{font:800 13px/1.05 Playful,sans-serif;color:#6a5a80;max-width:52px}.ph-mess[data-mode=clean] b{color:var(--ph-green)}.ph-mess.hit{animation:ph-hit .4s ease-out}.ph-mess.hit b{color:#d8262c}@keyframes ph-hit{0%{transform:scale(1.18);background:#ffd0c8}}.ph-mini{position:absolute;z-index:4;right:10px;top:calc(env(safe-area-inset-top, 0px) + 58px);width:120px;height:80px;border:3px solid #fff;border-radius:12px;box-shadow:0 3px 0 rgba(0,0,0,.3);pointer-events:none;display:none;transition:width .3s,height .3s}.ph-mini.show{display:block}.ph-mini.big{width:160px;height:110px;border-color:var(--ph-gold)}.ph-mini-dist{position:absolute;left:4px;bottom:4px;font:800 13px/1 Playful,sans-serif;color:#fff;background:rgba(46,35,64,.8);padding:3px 6px;border-radius:7px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.ph-mini.big .ph-mini-dist{background:#c8252f}.ph-banner{position:absolute;z-index:6;pointer-events:none;left:50%;top:26%;transform:translate(-50%,-50%) scale(.85);font:800 clamp(30px,9vw,58px)/1 Playful,sans-serif;color:#fff;text-align:center;width:max-content;max-width:90vw;-webkit-text-stroke:3px var(--ph-ink);paint-order:stroke fill;text-shadow:0 5px 0 rgba(0,0,0,.35);opacity:0;transition:opacity .18s,transform .18s}.ph-banner.show{opacity:1;transform:translate(-50%,-50%) scale(1)}.ph-banner.red{color:#ffe1dc;-webkit-text-stroke-color:#9c1d10}.ph-banner.gold{color:#fff3c4;-webkit-text-stroke-color:#8a5a00}.ph-banner.green{color:#e3ffd9;-webkit-text-stroke-color:#2f6b2a}.ph-banner.small{font-size:clamp(24px,7vw,40px)}.ph-toast{position:absolute;z-index:6;pointer-events:none;left:50%;bottom:calc(env(safe-area-inset-bottom, 0px) + 54px);transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:4px}.ph-toast-item{font:800 16px/1.15 Playful,sans-serif;color:#fff;padding:6px 11px;border-radius:10px;background:rgba(46,35,64,.85);animation:ph-toast 1.1s ease-out forwards;max-width:88vw;text-align:center}.ph-toast-item.red{background:rgba(190,40,30,.92)}.ph-toast-item.amber{background:rgba(200,110,20,.94)}.ph-toast-item.green{background:rgba(40,140,70,.94)}.ph-toast-item.purple{background:rgba(110,70,160,.94)}.ph-toast-item.grey{background:rgba(80,80,90,.92)}@keyframes ph-toast{0%{opacity:0;transform:translateY(8px)}12%{opacity:1;transform:none}80%{opacity:1}to{opacity:0;transform:translateY(-14px)}}.ph-ghost{position:absolute;z-index:5;left:0;top:0;pointer-events:none;opacity:0;transition:opacity .2s;--fx:0px;--fy:-80px}.ph-ghost.show{opacity:1}.ph-ghost-hand{position:absolute;left:-12px;top:-4px;font-size:48px;filter:drop-shadow(0 3px 0 rgba(0,0,0,.35))}.ph-ghost.tap .ph-ghost-hand{animation:ph-tap 1s ease-in-out infinite}.ph-ghost.flick .ph-ghost-hand{animation:ph-flick 1.1s ease-in infinite}.ph-ghost-text{position:absolute;left:0;top:64px;transform:translateX(-50%);white-space:nowrap;font:800 17px/1.1 Playful,sans-serif;color:#fff;background:rgba(46,35,64,.92);padding:6px 12px;border-radius:12px}@keyframes ph-tap{0%,to{transform:translateY(10px)}45%{transform:translateY(-8px)}60%{transform:translateY(6px) scale(.9)}}@keyframes ph-flick{0%,15%{transform:none;opacity:1}70%{transform:translate(var(--fx),var(--fy));opacity:1}to{transform:translate(var(--fx),var(--fy));opacity:0}}.ph-ff{position:absolute;z-index:5;left:50%;bottom:calc(env(safe-area-inset-bottom, 0px) + 18px);transform:translateX(-50%);pointer-events:none;font:800 15px/1 Playful,sans-serif;color:#fff;background:rgba(46,35,64,.75);padding:8px 14px;border-radius:12px;display:none;white-space:nowrap}.ph-app[data-phase=inspect] .ph-ff{display:block}.ph-ff.on{background:var(--ph-pink)}.ph-keys{position:absolute;z-index:4;left:50%;bottom:calc(env(safe-area-inset-bottom, 0px) + 6px);transform:translateX(-50%);font:700 13px/1 Playful,sans-serif;color:#fff;background:rgba(46,35,64,.65);padding:5px 12px;border-radius:10px;pointer-events:none;white-space:nowrap}@media (hover:none),(max-width:760px),(pointer:coarse){.ph-keys{display:none}}.ph-corner{position:absolute;z-index:7;top:calc(env(safe-area-inset-top, 0px) + 8px);right:10px;display:flex;gap:6px}.ph-icon-btn{width:44px;height:44px;padding:0;border-radius:12px;border:2px solid #fff;display:grid;place-items:center;background:rgba(255,251,237,.92);color:var(--ph-ink);cursor:pointer}.ph-icon-btn .off,.ph-icon-btn[aria-pressed=true] .on{display:none}.ph-icon-btn[aria-pressed=true] .off{display:inline}.ph-app:has(.overlay.show:not(.ph-menu)) .ph-corner{display:none}.playful-game .ph-menu{background:linear-gradient(90deg,rgba(46,35,64,0) 35%,rgba(46,35,64,.7) 65%);-webkit-backdrop-filter:none;backdrop-filter:none;align-items:flex-end;padding-right:max(5vw,24px)}.ph-card{width:min(420px,100%);background:var(--play-paper);border:4px solid #fff;border-radius:28px;box-shadow:0 8px 0 #b0487a;padding:22px 22px 18px;display:flex;flex-direction:column;gap:10px;color:var(--ph-ink)}.ph-card,.ph-card>*{flex-shrink:0}.ph-kicker{font:800 13px/1.2 Playful,sans-serif;letter-spacing:.06em;color:var(--ph-pink)}.ph-title{margin:0;font:800 clamp(40px,6.5vw,60px)/.95 Playful,sans-serif;color:#ffe3ef;letter-spacing:-.5px;transform:rotate(-3deg);-webkit-text-stroke:2.5px var(--ph-ink);paint-order:stroke fill;text-shadow:0 5px 0 var(--ph-pink)}.ph-pitch{margin:0;font-size:15px;line-height:1.45}.ph-pitch b{color:var(--ph-pink)}.ph-rules{list-style:none;margin:0;padding:0;display:grid;grid-gap:6px;gap:6px}.ph-rules li{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:700;line-height:1.25;background:#fff;border-radius:12px;padding:6px 10px}.ph-rules span{font-size:20px}.ph-best{margin:0;text-align:center;font-weight:800;color:#a0487a;min-height:1.2em}.ph-link-btn{background:none;border:0;color:var(--play-accent);font:800 17px/1.2 Playful,sans-serif;padding:8px;min-height:44px;cursor:pointer}.playful-game .ph-pause,.playful-game .ph-results{align-items:center;background:rgba(46,35,64,.66)}.ph-small-card{width:min(390px,100%);align-items:stretch;text-align:center}.ph-small-card .ph-title{font-size:40px}.ph-result-title{margin:0;font:800 clamp(34px,9vw,52px)/1 Playful,sans-serif;color:#ffe1dc;transform:rotate(-3deg);-webkit-text-stroke:3px #9c1d10;paint-order:stroke fill;text-shadow:0 5px 0 rgba(156,29,16,.35)}.ph-results[data-verdict=talk] .ph-result-title{color:#fff3c4;-webkit-text-stroke-color:#8a5a00;text-shadow:0 5px 0 rgba(138,90,0,.3)}.ph-results[data-verdict=best] .ph-result-title{color:#e3ffd9;-webkit-text-stroke-color:#2f6b2a;text-shadow:0 5px 0 rgba(47,107,42,.35)}.ph-result-line{margin:0;font-size:16px;font-weight:700}.ph-result-big{display:flex;align-items:baseline;justify-content:center;gap:8px}.ph-result-big b{font:800 54px/1 Playful,sans-serif;color:var(--ph-pink);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.ph-result-big span{font-weight:800;color:#6a5a80}.ph-result-list{margin:0;display:grid;grid-template-columns:1fr 1fr;grid-gap:6px;gap:6px}.ph-result-list>div{display:flex;justify-content:space-between;gap:6px;background:#fff;border-radius:12px;padding:7px 10px}.ph-result-list dt{color:#6a5a80;font-weight:700;font-size:14px}.ph-result-list dd{margin:0;font-weight:800;color:var(--ph-pink);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;text-align:right}.ph-result-list .ph-result-gave{grid-column:span 2;background:#ffe7ef}.ph-result-list .ph-result-score{background:#fff1c8}@media (max-aspect-ratio:4/5),(max-width:700px){.playful-game .ph-menu{align-items:center;justify-content:flex-end;padding:0 12px calc(env(safe-area-inset-bottom, 0px) + 12px);background:linear-gradient(180deg,rgba(46,35,64,0) 35%,rgba(46,35,64,.75) 60%)}.ph-menu .ph-card{max-height:62dvh;overflow-y:auto;gap:8px;padding:16px 16px 12px}.ph-menu .ph-pitch{font-size:14px}.ph-menu .ph-rules{display:none}.ph-menu #ph-start{position:-webkit-sticky;position:sticky;bottom:0;z-index:1}.ph-title{font-size:40px}.ph-results .ph-card{gap:8px;padding:16px}.ph-clock b{font-size:24px}}@media (max-height:560px){.playful-game .ph-menu{padding-top:12px;padding-bottom:12px}.ph-menu .ph-card{max-height:calc(100dvh - 24px);overflow-y:auto}.ph-menu .ph-rules{display:none}}@media (prefers-reduced-motion:reduce){.ph-app.shake,.ph-clock.urgent,.ph-focus.show,.ph-ghost .ph-ghost-hand,.ph-ring.over .ph-ring-count{animation:none}}