:root{--ink:#3b2f4a;--cream:#fffaf2}*{box-sizing:border-box}html,body{background:#ffe2c4;height:100%;margin:0;overflow:hidden}#game{position:fixed;inset:0}.hud{color:var(--ink);pointer-events:none;flex-wrap:wrap;align-items:center;gap:12px;font-family:"Baloo 2",system-ui,sans-serif;display:flex;position:fixed;top:16px;left:16px;right:16px}.hud h1{letter-spacing:.5px;color:var(--cream);text-shadow:0 3px #3b2f4a59;margin:0;font-size:34px;font-weight:800}.meter{flex-direction:column;align-items:flex-end;margin-left:auto;line-height:1;display:flex}.meter-height{color:var(--cream);text-shadow:0 3px #3b2f4a59;font-size:44px;font-weight:800}.meter-best{color:var(--cream);text-shadow:0 2px #3b2f4a66;font-size:16px;font-weight:700}.fps{color:var(--ink);opacity:.7;pointer-events:none;font:700 12px system-ui,sans-serif;position:fixed;top:2px;right:16px}.help{color:var(--ink);pointer-events:none;text-align:center;background:#fffaf2b8;border-radius:16px;padding:8px 18px;font-family:"Baloo 2",system-ui,sans-serif;font-size:14px;font-weight:600;position:fixed;bottom:14px;left:50%;transform:translate(-50%);box-shadow:0 3px #3b2f4a26}.help p{margin:0}.card{z-index:5;background:var(--cream);width:min(420px,100vw - 32px);color:var(--ink);text-align:center;border-radius:28px;padding:22px 26px 24px;font-family:"Baloo 2",system-ui,sans-serif;animation:.35s cubic-bezier(.34,1.56,.64,1) card-in;position:fixed;left:50%;box-shadow:0 6px #3b2f4a2e,0 18px 40px #3b2f4a2e}.card-center{top:50%;transform:translate(-50%,-50%)}.card-top{padding:14px 20px 16px;top:84px;transform:translate(-50%)}.card[hidden]{display:none}.card h2{color:var(--player-a);margin:0 0 4px;font-size:40px;font-weight:800;line-height:1.05}.card h3{margin:0;font-size:22px;font-weight:800;line-height:1.2}.card p{opacity:.85;margin:6px 0 0;font-size:17px;font-weight:600}.card p.small{opacity:.7;margin-top:14px;font-size:14px}.card a{color:inherit;font-weight:800}.card button{cursor:pointer;color:var(--cream);background:var(--player-a);border:0;border-radius:999px;margin-top:16px;padding:10px 28px;font:800 20px "Baloo 2",system-ui,sans-serif;transition:transform 80ms,box-shadow 80ms;box-shadow:0 5px #3b2f4a47}.card button:hover{transform:translateY(-1px)}.card button:active{transform:translateY(4px);box-shadow:0 1px #3b2f4a47}.choices{flex-wrap:wrap;justify-content:center;gap:12px;display:flex}.choices button+button{background:var(--player-b)}.link-row{align-items:center;gap:8px;margin-top:10px;display:flex}.link-row input{min-width:0;color:var(--ink);background:#fff;border:2px solid #3b2f4a24;border-radius:999px;flex:1;padding:9px 14px;font:600 15px "Baloo 2",system-ui,sans-serif}.link-row button{background:var(--player-b);margin-top:0;padding:8px 18px;font-size:16px}@keyframes card-in{0%{opacity:0;scale:.9}}.partner-dot{opacity:.75;align-items:center;gap:6px;margin-top:4px;font-size:14px;font-weight:700;display:flex}.partner-dot:before{content:"";border:3px solid var(--player-b);box-sizing:border-box;border-radius:50%;width:12px;height:12px}.partner-dot.on{opacity:1}.partner-dot.on:before{background:var(--player-b)}.bubble{z-index:4;pointer-events:none;color:var(--ink);background:var(--cream);white-space:nowrap;transform-origin:50% 100%;border-radius:999px;padding:4px 14px;font:800 20px "Baloo 2",system-ui,sans-serif;animation:1.8s ease-out forwards bubble-life;position:fixed;top:0;left:0;translate:-50% -100%;box-shadow:0 4px #3b2f4a33}.bubble[hidden]{display:none}.bubble-0{border:3px solid var(--player-a)}.bubble-1{border:3px solid var(--player-b)}.bubble.heart{color:#ff5c8a;font-size:24px}.hrt{color:#ff5c8a;font-family:system-ui,sans-serif}@keyframes bubble-life{0%{opacity:0;scale:.4}12%{opacity:1;scale:1.15}20%{scale:1}80%{opacity:1}to{opacity:0}}.bubble.saved{font-size:24px}.talk{z-index:6;pointer-events:none;text-align:center;width:max-content;max-width:240px;color:var(--ink);background:var(--cream);transform-origin:50% 100%;border-radius:18px;padding:6px 14px;font:700 17px/1.2 "Baloo 2",system-ui,sans-serif;transition:opacity .25s;animation:.3s cubic-bezier(.34,1.56,.64,1) talk-in;position:fixed;top:0;left:0;translate:-50% -100%;box-shadow:0 4px #3b2f4a33}.talk[hidden]{display:none}.talk.out{opacity:0}.talk:after{content:"";left:clamp(16px, calc(50% + var(--tail-dx,0px)), calc(100% - 16px));background:var(--cream);border-radius:0 0 4px;width:14px;height:14px;position:absolute;bottom:-11px;translate:-50%;rotate:45deg}.talk-0{border:3px solid var(--player-a)}.talk-1{border:3px solid var(--player-b)}.talk-0:after{border:solid var(--player-a);border-width:0 3px 3px 0}.talk-1:after{border:solid var(--player-b);border-width:0 3px 3px 0}@keyframes talk-in{0%{opacity:0;scale:.5}}.talk-big{border-radius:24px;max-width:336px;padding:8px 20px;font-size:24px}.talk-big:after{left:clamp(24px, calc(50% + var(--tail-dx,0px)), calc(100% - 24px));width:20px;height:20px;bottom:-15px}.talk-tiny{border-width:2px;border-radius:12px;max-width:150px;padding:3px 9px 4px;font-size:10.2px}.talk-tiny:after{left:clamp(12px, calc(50% + var(--tail-dx,0px)), calc(100% - 12px));border-width:0 2px 2px 0;width:9px;height:9px;bottom:-7px}.scene-card{z-index:5;pointer-events:none;text-align:center;width:min(640px,100vw - 48px);color:var(--cream);text-shadow:0 2px #3b2f4a73,0 6px 28px #3b2f4a8c;font:800 clamp(26px,4.4vw,44px)/1.25 "Baloo 2",system-ui,sans-serif;animation:.6s ease-out scene-in;position:fixed;top:50%;left:50%;translate:-50% -50%}.scene-card[hidden]{display:none}.scene-card-top{width:max(240px,min(520px,100vw - 360px));font-size:clamp(20px,2.8vw,30px);top:11vh;translate:-50%}@keyframes scene-in{0%{opacity:0}}.scene-hint{z-index:5;pointer-events:none;color:var(--cream);opacity:.6;text-shadow:0 1px #3b2f4a80;font:700 14px "Baloo 2",system-ui,sans-serif;position:fixed;bottom:20px;left:50%;translate:-50%}.scene-hint[hidden]{display:none}body:has(.scene-hint:not([hidden])) .help{visibility:hidden}.toast{z-index:4;pointer-events:none;background:var(--ink);color:var(--cream);border-radius:999px;padding:5px 18px;font:800 16px "Baloo 2",system-ui,sans-serif;animation:.3s cubic-bezier(.34,1.56,.64,1) tip-in;position:fixed;top:74px;left:50%;transform:translate(-50%);box-shadow:0 3px #00000040}.toast[hidden]{display:none}.meter-hearts{color:var(--cream);text-shadow:0 2px #3b2f4a66;margin-top:6px;font-size:22px;font-weight:800}.tip{z-index:4;text-align:center;max-width:calc(100vw - 32px);color:var(--ink);background:var(--cream);pointer-events:none;border-radius:999px;padding:8px 22px;font:800 19px "Baloo 2",system-ui,sans-serif;animation:.3s cubic-bezier(.34,1.56,.64,1) tip-in;position:fixed;top:22px;left:50%;transform:translate(-50%);box-shadow:0 4px #3b2f4a33}.tip[hidden]{display:none}@keyframes tip-in{0%{opacity:0;translate:0 -12px}}.camp{pointer-events:none}.card .camp-time{opacity:.65;margin-top:0;font-size:15px}.camp ul,.results ul{text-align:left;margin:12px 0 0;padding:0;list-style:none}.camp li,.results li{align-items:baseline;gap:10px;margin-top:6px;font-size:16px;font-weight:600;line-height:1.3;display:flex}.camp li b,.results li b{font-weight:800}.card p.results-numbers{margin-top:10px;font-size:18px;font-weight:800}.card p.results-best{opacity:.65;margin-top:2px;font-size:15px}.camp-who{flex:none;gap:3px;display:inline-flex}.who{vertical-align:-1px;border-radius:50%;width:12px;height:12px;display:inline-block}.who-0{background:var(--player-a)}.who-1{background:var(--player-b)}.card p.camp-hearts{white-space:pre;margin-top:12px;font-size:16px;font-weight:800}.prompt{z-index:4;pointer-events:none;white-space:nowrap;color:var(--ink);background:var(--cream);border-radius:999px;align-items:center;gap:8px;padding:4px 14px 4px 5px;font:800 19px "Baloo 2",system-ui,sans-serif;display:flex;position:fixed;top:0;left:0;translate:-50% calc(-100% - 6px);box-shadow:0 4px #3b2f4a33}.prompt[hidden]{display:none}.prompt-0{border:3px solid var(--player-a)}.prompt-1{border:3px solid var(--player-b)}.prompt kbd{text-align:center;min-width:30px;color:var(--cream);background:var(--ink);border-radius:10px;padding:0 8px;font:800 20px/30px "Baloo 2",system-ui,sans-serif;animation:.9s ease-in-out infinite key-press;box-shadow:0 3px #00000059}@keyframes key-press{0%,60%,to{transform:translateY(0);box-shadow:0 3px #00000059}75%{transform:translateY(2px);box-shadow:0 1px #00000059}}.listen{color:var(--ink);padding:28px 16px 40px;font-family:"Baloo 2",system-ui,sans-serif;position:fixed;inset:0;overflow-y:auto}.listen-col{max-width:760px;margin:0 auto}.listen h1{color:var(--cream);text-shadow:0 3px #3b2f4a59;margin:0;font-size:40px;font-weight:800}.listen h2{margin:26px 0 8px;font-size:22px;font-weight:800}.listen-how{opacity:.85;margin-top:4px;font-size:16px;font-weight:600}.listen-muted{background:var(--player-a);color:var(--cream);border-radius:999px;margin:8px 0 0;padding:4px 16px;font-weight:800;display:inline-block}.listen-muted[hidden]{display:none}.listen-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.listen-row{background:var(--cream);border-radius:20px;align-items:center;gap:14px;padding:10px 14px;display:flex;box-shadow:0 4px #3b2f4a24}.listen-what{flex-direction:column;flex:1;min-width:0;line-height:1.25;display:flex}.listen-what b{font-size:18px;font-weight:800}.listen-what span{opacity:.8;font-size:15px;font-weight:600}.listen-source{opacity:.6;overflow-wrap:anywhere;font-size:13px;font-weight:700}.listen button{cursor:pointer;width:44px;height:44px;color:var(--cream);background:var(--player-b);border:0;border-radius:50%;flex:none;font:800 20px "Baloo 2",system-ui,sans-serif;transition:transform 80ms,box-shadow 80ms;box-shadow:0 4px #3b2f4a40}.listen button:active{transform:translateY(3px);box-shadow:0 1px #3b2f4a40}.listen button:disabled{opacity:.35;cursor:default}.listen-marks{gap:8px;display:flex}.listen .listen-mark{color:var(--ink);background:#3b2f4a1f}.listen .listen-ok[aria-pressed=true]{color:var(--cream);background:#4fbf7a}.listen .listen-no[aria-pressed=true]{color:var(--cream);background:#e0566f}.listen-count{text-align:center;margin-top:22px;font-size:18px;font-weight:800}@media (width<=520px){.listen-row{flex-wrap:wrap}.listen-what{flex-basis:calc(100% - 58px)}.listen-marks{margin-left:58px}}
