:root{--ink:#232630;--paper:#f6eedd;--accent:#d94f30}*{box-sizing:border-box;margin:0;padding:0}html,body{overscroll-behavior:none;height:100%;overflow:hidden}body{color:var(--ink);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;background:#1a2138;font-family:Fredoka,sans-serif}canvas{touch-action:none;cursor:grab;display:block}canvas.dragging{cursor:grabbing}.hidden{display:none!important}#vignette{pointer-events:none;z-index:5;position:fixed;inset:0;box-shadow:inset 0 0 190px #080c1e80}#hud{pointer-events:none}#placard{top:calc(14px + env(safe-area-inset-top));left:calc(16px + env(safe-area-inset-left));z-index:10;background:var(--paper);border:3px solid var(--ink);min-width:186px;padding:9px 16px 11px;position:fixed;transform:rotate(-1.4deg);box-shadow:5px 5px #1418288c}.plabel{letter-spacing:.22em;color:var(--accent);font:700 10px/1 Fredoka}#psize{margin-top:3px;font-size:40px;font-weight:700;line-height:1.04}.prow{color:#54493a;margin-top:3px;font:500 15px/1.35 Fredoka}#pstage{color:var(--accent);font-weight:600}#bottomStack{left:50%;bottom:calc(14px + env(safe-area-inset-bottom));z-index:10;flex-direction:column;align-items:center;gap:10px;display:flex;position:fixed;transform:translate(-50%)}#meter{background:var(--paper);border:3px solid var(--ink);width:min(400px,74vw);height:20px;position:relative;box-shadow:4px 4px #1418288c}#mfill{background:var(--accent);width:0%;height:100%;transition:width .25s ease-out}#meter i{background:var(--ink);width:3px;position:absolute;top:-3px;bottom:-3px}#meter b{letter-spacing:.08em;opacity:.75;font:700 11px Fredoka;position:absolute;top:50%;right:9px;transform:translateY(-50%)}#combo{color:var(--ink);background:var(--paper);border:3px solid var(--ink);opacity:0;padding:5px 14px 6px;font:600 19px/1 Fredoka;transition:opacity .18s,transform .18s;transform:translateY(8px)scale(.9);box-shadow:3px 3px #1418288c}#combo.on{opacity:1;transform:none}#combo.pop{animation:.18s cubic-bezier(.2,1.6,.4,1) cpop}@keyframes cpop{0%{transform:scale(1.35)}to{transform:scale(1)}}#combo.frenzy{background:var(--accent);color:#fff;animation:.45s ease-in-out infinite alternate fzp}#meltWarning{letter-spacing:.06em;color:#fff;border:3px solid var(--ink);opacity:0;pointer-events:none;background:#d94f30;justify-content:center;align-items:center;gap:9px;padding:9px 18px 10px;font:700 14px/1.25 Fredoka;transition:opacity .18s,transform .18s;display:inline-flex;transform:translateY(8px)scale(.92);box-shadow:3px 3px #1418288c}#meltWarning .meltIcon{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:20px;height:20px}#meltWarning.on{opacity:1;animation:.34s ease-in-out infinite alternate meltPulse;transform:none}@keyframes meltPulse{0%{box-shadow:3px 3px #1418288c,0 0 #ff7e2d00}to{box-shadow:3px 3px #1418288c,0 0 18px #ff7e2da6}}.scoreRow{border-top:1px dashed #54493a40;margin-top:5px;padding-top:3px}#scoreHud{color:var(--accent);font-weight:700}#challengeHud{letter-spacing:.055em;max-width:min(520px,82vw);color:var(--ink);border:2.5px solid var(--ink);opacity:0;pointer-events:none;background:#fff9ec;padding:6px 11px;font:700 12px/1.25 Fredoka;transition:opacity .18s,transform .18s;transform:translateY(7px)scale(.96);box-shadow:3px 3px #14182873}#challengeHud.on{opacity:1;transform:none}#boostMeter{background:var(--paper);border:2.5px solid var(--ink);width:min(340px,68vw);height:20px;position:relative;overflow:hidden;box-shadow:3px 3px #14182873}#boostFill{background:linear-gradient(90deg,#e6a734,#d94f30);width:0%;height:100%;transition:width .12s linear}#boostMeter b{letter-spacing:.08em;color:var(--ink);text-shadow:0 1px #fffc;pointer-events:none;justify-content:center;align-items:center;padding:0 6px;font:700 11px/1 Fredoka;display:flex;position:absolute;inset:0}#boostMeter.ready{animation:.42s ease-in-out infinite alternate boostReady}@keyframes boostReady{0%{transform:scale(1)}to{transform:scale(1.035)}}@keyframes fzp{0%{transform:rotate(-2deg)scale(1)}to{transform:rotate(2deg)scale(1.1)}}#toasts{left:calc(16px + env(safe-area-inset-left));top:calc(140px + env(safe-area-inset-top));z-index:11;flex-direction:column;gap:8px;max-width:min(300px,56vw);display:flex;position:fixed}.toast{background:var(--paper);border:3px solid var(--ink);padding:7px 12px;transition:transform .35s cubic-bezier(.2,1.4,.4,1),opacity .4s;transform:translate(-130%)rotate(-1deg);box-shadow:4px 4px #1418288c}.toast.in{transform:translate(0)rotate(-1deg)}.toast.out{opacity:0;transform:translate(-30%)rotate(-1deg)}.toast b{letter-spacing:.16em;text-transform:uppercase;color:var(--accent);font:700 10px/1.4 Fredoka;display:block}.toast span{color:#2e2a22;font:400 18px/1.25 Schoolbell}#stagecard .cardw{z-index:12;transition:opacity .45s,transform .45s;position:fixed;top:20%;left:50%;transform:translate(-50%,-50%)}#stagecard .cardw.gone{opacity:0;transform:translate(-50%,-56%)rotate(3deg)}.cardin{background:var(--paper);border:4px solid var(--ink);text-align:center;padding:13px 32px 16px;animation:.6s cubic-bezier(.25,1.35,.45,1) both stampin;box-shadow:9px 9px #1418288c}.cardin h2{letter-spacing:.02em;color:var(--ink);white-space:nowrap;font-size:44px;font-weight:700}.cardin p{color:var(--accent);margin-top:2px;font:400 20px/1.2 Schoolbell}@keyframes stampin{0%{opacity:0;transform:scale(2.4)rotate(7deg)}55%{opacity:1}75%{transform:scale(.94)rotate(-3.5deg)}to{opacity:1;transform:scale(1)rotate(-2deg)}}#hint{right:calc(16px + env(safe-area-inset-right));bottom:calc(96px + env(safe-area-inset-bottom));z-index:10;background:var(--paper);border:3px solid var(--ink);color:#5c5344;padding:6px 12px;font:400 16px/1.3 Schoolbell;transition:opacity .8s;position:fixed;transform:rotate(1.2deg);box-shadow:4px 4px #1418288c}#hint.fade{opacity:0}#muteBtn,#pauseBtn,#settingsBtn,#infoBtn{top:calc(14px + env(safe-area-inset-top));z-index:15;background:var(--paper);border:3px solid var(--ink);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;width:46px;height:46px;transition:transform .12s,box-shadow .12s;display:flex;position:fixed;box-shadow:4px 4px #1418288c}#muteBtn{right:calc(16px + env(safe-area-inset-right))}#pauseBtn{right:calc(70px + env(safe-area-inset-right))}#settingsBtn{right:calc(124px + env(safe-area-inset-right))}#infoBtn{right:calc(178px + env(safe-area-inset-right))}#muteBtn:hover,#pauseBtn:hover,#settingsBtn:hover,#infoBtn:hover{transform:translate(-1px,-1px);box-shadow:5px 5px #141828a6,0 0 12px #ffd9ae59}#muteBtn:active,#pauseBtn:active,#settingsBtn:active,#infoBtn:active{transform:translate(2px,2px);box-shadow:2px 2px #1418288c}#fpsBadge{top:calc(14px + env(safe-area-inset-top));z-index:12;background:var(--paper);border:2.5px solid var(--ink);color:var(--ink);pointer-events:none;letter-spacing:.04em;border-radius:4px;padding:3px 10px 4px;font:700 12px Fredoka;position:fixed;left:50%;transform:translate(-50%);box-shadow:3px 3px #14182873}#gfxModal,#infoModal{z-index:35;-webkit-backdrop-filter:blur(6px);background:#0d112285;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}#infoModal{z-index:40}.no-blur #gfxModal,.no-blur #infoModal,.no-blur #menu,.no-blur #winov,.no-blur #gameOverOv,.no-blur #pauseOv,.no-blur #loaderOverlay{-webkit-backdrop-filter:none!important;backdrop-filter:none!important;background:#0d1122eb!important}.infoPanel{-webkit-overflow-scrolling:touch;text-align:center;border:3.5px solid var(--ink);background:#faf4e8;border-radius:12px;width:calc(100vw - 32px);max-width:480px;max-height:90vh;padding:24px 28px;overflow-y:auto;transform:rotate(-.8deg);box-shadow:12px 12px #0a0e1e99,0 0 35px #ffffff1f}.panel.infoPanel{border:3.5px solid var(--ink);background:#faf4e8;width:calc(100vw - 32px);max-width:480px;max-height:90vh;padding:24px 28px;transform:rotate(-.8deg);box-shadow:12px 12px #0a0e1e99,0 0 35px #ffffff1f}.infoModalHeader{justify-content:space-between;align-items:center;display:flex;position:relative}.infoModalEmblem{justify-content:center;align-items:center;width:44px;height:44px;line-height:1;display:inline-flex}.infoModalEmblem svg{fill:none;width:30px;height:30px;stroke:var(--accent);stroke-width:1.9px;stroke-linecap:round;stroke-linejoin:round}.infoClose{color:var(--ink);cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;width:44px;height:44px;padding:0 4px;font-size:32px;font-weight:700;line-height:1;transition:transform .15s,color .15s,background .15s;display:flex}.infoClose:hover{color:var(--accent);transform:scale(1.15)rotate(90deg)}.infoClose:focus-visible,.infoLinkBtn:focus-visible,#infoOkBtn:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.infoCard{border:2.5px solid var(--ink);text-align:left;background:#fff9ec;border-radius:10px;align-items:center;gap:14px;margin-bottom:14px;padding:12px 16px;display:flex;box-shadow:4px 4px #1418284d}.infoAvatarBadge{border:2px solid var(--ink);background:#edf1fa;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:48px;height:48px;line-height:1;display:flex;box-shadow:2px 2px #14182840}.infoAvatarBadge svg{width:34px;height:34px;overflow:visible}.infoProfile{flex:1;min-width:0}.infoRoleBadge{letter-spacing:.18em;color:var(--accent);margin-bottom:4px;font:700 10px/1 Fredoka}.infoName{color:var(--ink);letter-spacing:.02em;font:700 22px/1.2 Fredoka}.infoVersionTag{color:#72624d;letter-spacing:.06em;text-transform:uppercase;background:#fff8ea;border:1.5px solid #23263033;border-radius:6px;margin-top:6px;padding:2px 7px;font:600 11px/1.2 Fredoka;display:inline-block}.infoLinks{flex-direction:column;gap:10px;margin-bottom:14px;display:flex}.infoLinkBtn{border:2.5px solid var(--ink);color:var(--ink);cursor:pointer;background:#fff9ec;border-radius:10px;align-items:center;gap:12px;padding:11px 16px;text-decoration:none;transition:transform .12s,box-shadow .12s,background .15s;display:flex;box-shadow:4px 4px #1418284d}.infoLinkBtn:hover{background:#fff;transform:translate(-2px,-2px);box-shadow:6px 6px #d94f30d9,0 0 16px #d94f3033}.infoLinkBtn:active{transform:translate(2px,2px);box-shadow:1px 1px #d94f30d9}.infoLinkIcon{border:1.5px solid var(--ink);width:32px;height:32px;color:var(--ink);background:#edf1fa;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.infoLinkDetails{text-align:left;flex-direction:column;flex:1;display:flex}.infoLinkLabel{letter-spacing:.15em;color:#726550;text-transform:uppercase;margin-bottom:2px;font:700 10px/1 Fredoka}.infoLinkValue{color:var(--ink);font:600 16px/1.2 Fredoka}.infoLinkArrow{color:var(--accent);justify-content:center;align-items:center;transition:transform .15s;display:inline-flex}.infoLinkArrow svg{fill:none;stroke:currentColor;stroke-width:2.2px;stroke-linecap:round;stroke-linejoin:round;width:18px;height:18px}.infoLinkBtn:hover .infoLinkArrow{transform:translate(3px,-3px)}.infoCozyQuote{color:#6a5c49;margin:6px 0 2px;padding:4px 8px;font:400 16px/1.4 Schoolbell}.gfxPanel{-webkit-overflow-scrolling:touch;text-align:center;width:calc(100vw - 32px);max-width:580px;max-height:90vh;padding:24px 28px;overflow-y:auto}.gfxHeader{justify-content:space-between;align-items:center;display:flex;position:relative}.gfxClose{color:var(--ink);cursor:pointer;background:0 0;border:none;padding:0 4px;font-size:32px;font-weight:700;line-height:1}.gfxSectionTitle{letter-spacing:.2em;color:var(--accent);text-align:left;margin:12px 0 6px;font:700 11px/1.2 Fredoka}.gfxPresetRow{justify-content:center;gap:8px;margin-bottom:4px;display:flex}.gfxPresetBtn{border:2.5px solid var(--ink);cursor:pointer;color:var(--ink);background:#fff9ec;border-radius:3px;flex:1;padding:8px 6px;font:700 14px Fredoka;transition:transform .1s,background .15s,color .15s;box-shadow:3px 3px #14182859}.gfxPresetBtn:hover{transform:translate(-1px,-1px)}.gfxPresetBtn.active{background:var(--accent);color:#fff;box-shadow:3px 3px #14182899}.gfxGrid{border:2.5px solid var(--ink);text-align:left;background:#fff9ec;border-radius:4px;flex-direction:column;gap:8px;padding:10px 12px;display:flex;box-shadow:3px 3px #14182840}.gfxRow{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.gfxLabel{color:#4a3e30;font:600 13px Fredoka}.gfxBtnGroup{gap:4px;display:flex}.gfxOptionBtn{border:2px solid var(--ink);background:var(--paper);color:var(--ink);cursor:pointer;border-radius:3px;padding:4px 8px;font:600 12px Fredoka;transition:background .12s,color .12s,transform .1s;box-shadow:2px 2px #14182840}.gfxOptionBtn:hover{transform:translate(-1px,-1px)}.gfxOptionBtn.active{background:var(--ink);color:var(--paper)}#loaderOverlay{z-index:50;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:radial-gradient(circle,#1a2138e0 0%,#0d1122f5 100%);justify-content:center;align-items:center;transition:opacity .45s ease-out,transform .45s ease-out;display:flex;position:fixed;inset:0}#loaderOverlay.done{opacity:0;pointer-events:none;transform:scale(1.04)}.loadPanel{background:var(--paper);border:4px solid var(--ink);text-align:center;width:calc(100vw - 36px);max-width:520px;padding:34px 44px 30px;transform:rotate(-1deg);box-shadow:12px 12px #0a0e1eb3}.loadEmblem{transform-origin:50% 62%;justify-content:center;align-items:center;width:110px;height:96px;margin-bottom:10px;animation:2.8s cubic-bezier(.4,0,.2,1) infinite loadSpin;display:inline-flex}.loadEmblem svg{width:100%;height:100%;display:block;overflow:visible}.uiButtonIcon{vertical-align:-.14em;fill:none;stroke:currentColor;stroke-width:2.15px;stroke-linecap:round;stroke-linejoin:round;width:1.05em;height:1.05em;margin-right:7px}@keyframes loadSpin{0%{transform:rotate(0)translateY(0)}50%{transform:rotate(180deg)translateY(-6px)}to{transform:rotate(360deg)translateY(0)}}.loadTitle{color:var(--ink);letter-spacing:.02em;font-size:52px;font-weight:700;line-height:1}.loadTitle span{color:var(--accent)}.loadSub{color:#6a5c49;margin:6px 0 16px;font:400 20px/1.3 Schoolbell}.loadTrack{border:3px solid var(--ink);background:#fff9ec;border-radius:3px;width:100%;height:22px;position:relative;overflow:hidden;box-shadow:4px 4px #14182873}.loadFill{background:repeating-linear-gradient(-45deg, var(--accent), var(--accent) 12px, #ea674a 12px, #ea674a 24px);background-size:34px 34px;width:0%;height:100%;transition:width .2s ease-out;animation:1s linear infinite barberpole}@keyframes barberpole{0%{background-position:0 0}to{background-position:34px 0}}.loadRow{color:#5c5040;justify-content:space-between;align-items:center;margin-top:10px;font:600 14px Fredoka;display:flex}#loadStatus{color:var(--accent);text-align:left;font:500 15px Schoolbell}#loadPct{color:var(--ink);text-align:right;min-width:44px;font:700 15px Fredoka}#menu,#winov,#gameOverOv,#pauseOv{z-index:20;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#0d11226b;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.panel{background:var(--paper);border:4px solid var(--ink);text-align:center;width:calc(100vw - 40px);max-width:540px;max-height:88vh;padding:34px 44px 30px;overflow:auto;transform:rotate(-1.2deg);box-shadow:12px 12px #0a0e1e99}.panel h1{color:var(--ink);font-size:60px;font-weight:700;line-height:1}.panel h1 span{color:var(--accent)}.versionBadge{letter-spacing:.06em;color:#fff;background:var(--accent);border:2.5px solid var(--ink);vertical-align:middle;text-transform:uppercase;border-radius:999px;margin-left:8px;padding:2px 9px;font-family:Fredoka,sans-serif;font-size:14px;font-weight:700;line-height:1.3;display:inline-block;transform:translateY(-5px);box-shadow:2px 2px #14182859}.menuVersion{color:#8a7a63;letter-spacing:.05em;text-transform:uppercase;opacity:.85;margin-top:10px;font:600 12px/1.4 Fredoka,sans-serif}.sub{color:#6a5c49;margin:6px 0 20px;font:400 21px/1.3 Schoolbell}.ctr{flex-wrap:wrap;justify-content:center;gap:10px;margin-bottom:16px;display:flex}.chip{border:2.5px solid var(--ink);background:#fff9ec;padding:6px 12px;font:600 13px Fredoka;box-shadow:3px 3px #14182859}.chip b{color:var(--accent)}.note{color:#8a7a63;margin-bottom:14px;font:400 18px/1.5 Schoolbell}#recLine{color:var(--accent);margin-bottom:16px;font:400 18px Schoolbell}.btn{letter-spacing:.06em;background:var(--ink);color:var(--paper);border:3px solid var(--ink);cursor:pointer;padding:14px 32px;font-family:inherit;font-size:19px;font-weight:700;transition:transform .12s,box-shadow .12s;box-shadow:6px 6px #d94f30f2}.btn:hover{transform:translate(-2px,-2px);box-shadow:8px 8px #d94f30f2}.btn:active{transform:translate(3px,3px);box-shadow:1px 1px #d94f30f2}.btnAlt{background:var(--accent);box-shadow:6px 6px #232630e6}.btnAlt:hover{box-shadow:8px 8px #232630e6}.btnAlt:active{box-shadow:1px 1px #232630e6}#stLine{color:#5c5344;margin:4px 0 18px;font:400 20px/1.5 Schoolbell}#stLine b{color:var(--accent)}.cenH{letter-spacing:.2em;color:var(--accent);margin:2px 0 8px;font:700 11px Fredoka}#census{color:#54493a;text-align:left;border-top:2px dashed #d8cdb4;border-bottom:2px dashed #d8cdb4;grid-template-columns:1fr 1fr;gap:2px 18px;max-height:24vh;margin-bottom:12px;padding:8px 4px;font:500 15px/1.5 Fredoka;display:grid;overflow:auto}#census b{color:var(--accent)}.btnRow{flex-wrap:wrap;justify-content:center;gap:12px;display:flex}#joyBase{z-index:14;pointer-events:none;background:#23263040;border:3px solid #f6eeddd9;border-radius:50%;width:104px;height:104px;position:fixed}#joyKnob{background:var(--paper);border:3px solid var(--ink);border-radius:50%;width:46px;height:46px;margin:-23px 0 0 -23px;position:absolute;top:50%;left:50%}@media (width<=760px),(height<=520px){#placard{top:calc(10px + env(safe-area-inset-top));left:calc(10px + env(safe-area-inset-left));min-width:148px;padding:7px 12px 9px}.plabel{font-size:9px}#psize{font-size:27px}.prow{font-size:13px}#toasts{top:calc(106px + env(safe-area-inset-top));max-width:min(250px,60vw)}.toast{padding:6px 10px}.toast span{font-size:16px}.toast b{font-size:9px}#combo{padding:4px 10px 5px;font-size:16px}#challengeHud{max-width:78vw;padding:5px 8px;font-size:10px}#boostMeter{width:min(290px,66vw);height:18px}#boostMeter b{font-size:10px}#meltWarning{padding:7px 14px 8px;font-size:12px}#meter{width:min(320px,74vw);height:18px}#hint{bottom:calc(84px + env(safe-area-inset-bottom));padding:4px 10px;font-size:14px}#stagecard .cardw{top:15%}.cardin{padding:9px 18px 11px}.cardin h2{font-size:26px}.cardin p{font-size:15px}#muteBtn,#pauseBtn,#settingsBtn,#infoBtn{width:40px;height:40px}#pauseBtn{right:calc(60px + env(safe-area-inset-right))}#settingsBtn{right:calc(104px + env(safe-area-inset-right))}#infoBtn{right:calc(148px + env(safe-area-inset-right))}.infoPanel,.panel.infoPanel{max-height:92vh;padding:18px 16px}.infoPanel h1{font-size:28px!important}.infoCard{gap:10px;padding:10px 12px}.infoAvatarBadge{width:42px;height:42px;font-size:26px}.infoName{font-size:19px}.infoLinkBtn{padding:9px 12px}.gfxPanel{max-height:92vh;padding:18px 14px}.gfxPanel h1{font-size:28px!important}.gfxRow{flex-direction:column;align-items:flex-start;gap:4px}.gfxBtnGroup{width:100%;display:flex}.gfxOptionBtn{text-align:center;flex:1;padding:6px 2px;font-size:11px}.panel{padding:22px 16px 20px}.panel h1{font-size:38px}.versionBadge{border-width:1.5px;padding:1px 7px;font-size:11px;transform:translateY(-2px)}.menuVersion{margin-top:8px;font-size:10px}.sub{font-size:17px}.note{font-size:15px}.chip{padding:5px 9px;font-size:11px}#census{font-size:13px}#stLine{font-size:16px}.btn{padding:11px 22px;font-size:16px}}
