@font-face{font-family:Nunito;src:url('./assets/fonts/Nunito-Variable.ttf') format('truetype');font-weight:200 1000;font-display:swap}
@font-face{font-family:Bangers;src:url('./assets/fonts/Bangers-Regular.ttf') format('truetype');font-weight:400;font-display:swap}
:root{
  --paper:#fff9ed;--ink:#11182d;--muted:#394154;--line:#11182d30;--accent:#217ecb;--orange:#e9592d;
  --cyan:#65e4ed;--yellow:#ffdf61;--surface:#a2edf0;
  font-family:Nunito,ui-rounded,-apple-system,BlinkMacSystemFont,sans-serif;font-weight:750;color:var(--ink);background:var(--paper);font-synthesis:none;-webkit-text-size-adjust:100%;
}
*{box-sizing:border-box}body{margin:0;background:#eee9df}button,input,select{font:inherit;color:inherit}button{min-height:44px;border:0;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}button:disabled{cursor:default;opacity:.5}button:focus-visible,select:focus-visible,input:focus-visible,a:focus-visible{outline:3px solid #2279d1;outline-offset:4px}a{color:inherit}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:Bangers,Nunito,sans-serif;font-weight:400;letter-spacing:.035em}h1{font-size:43px;line-height:1.03}h2{font-size:29px;line-height:1.1}h3{font-size:25px;line-height:1.1}p{line-height:1.5}svg{display:block;max-width:100%}.muted{color:var(--muted)}.hidden{display:none!important}

/* OONOTE manga: inked panels, paper gutters and the original blue mascot. */
.app-shell,.game-shell,.multi-shell{position:relative;isolation:isolate;width:100%;max-width:520px;min-height:100dvh;margin:auto;background:var(--paper)}
.app-shell::before,.game-shell::before{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(#11182d18 .65px,transparent .85px) 0 0/6px 6px;mask-image:linear-gradient(#0008,transparent 600px)}
.app-shell{padding:0 20px calc(110px + env(safe-area-inset-bottom))}
.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:calc(14px + env(safe-area-inset-top)) 0 17px}
.brand-lockup{text-align:center}.brand-logo{display:block;width:154px;height:auto;aspect-ratio:228/99;overflow:hidden;border-radius:12px;transform:rotate(-3deg);box-shadow:3px 3px 0 var(--ink)}
.brand-sub{font-size:8px;font-weight:1000;letter-spacing:1.6px;margin-top:8px;text-transform:uppercase}
.home-brand{padding-bottom:16px}.home-brand .brand-logo{width:169px}.home-brand .avatar{width:46px;height:46px}
.avatar,.round-button{display:grid;place-items:center;flex-shrink:0;width:46px;height:46px;background:var(--yellow);border:2.5px solid var(--ink);border-radius:50%;box-shadow:3px 3px 0 var(--ink)}
.avatar svg,.round-button svg{width:22px;height:22px}.avatar:active,.round-button:active{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--ink)}
.eyebrow{font-size:10px;line-height:1.4;letter-spacing:.8px;font-weight:1000;text-transform:uppercase;color:var(--ink)}
.brand-ribbon{display:flex;align-items:center;justify-content:center;gap:10px;padding:calc(12px + env(safe-area-inset-top)) 0 4px}
.brand-logo-small{width:95px;border-radius:6px;box-shadow:2px 2px 0 var(--ink)}.brand-ribbon>span{font-size:9px;font-weight:900;letter-spacing:.5px}
.back-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:15px 0 23px}.back-row>.eyebrow{text-align:center}.pill{font-size:9px;font-weight:1000;background:var(--yellow);border:2px solid var(--ink);border-radius:7px;padding:7px 9px;white-space:nowrap;box-shadow:2px 2px 0 var(--ink)}

.bottom-nav{position:fixed;bottom:calc(10px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);width:min(calc(100% - 32px),430px);display:flex;align-items:stretch;gap:6px;padding:6px;border:2px solid var(--ink);border-radius:20px;background:var(--ink);box-shadow:3px 4px 0 #11182d35;z-index:30}
.nav-item{flex:1;min-width:0;display:flex;align-items:center;justify-content:center;gap:5px;height:53px;padding:6px;border:2px solid transparent;border-radius:14px;background:transparent;color:#fff9ed;transition:background .15s,transform .15s}
.nav-item.active{background:var(--yellow);color:var(--ink);border-color:var(--paper);box-shadow:0 2px 0 #000}
.nav-item:active{transform:translateY(2px)}.nav-card-illustration{display:block;width:21px;height:24px}.nav-card-illustration svg{height:100%;width:100%;stroke-width:2.3}.nav-label{font-family:Bangers,sans-serif;font-size:19px;letter-spacing:.6px}

.oonote-intro{position:relative;isolation:isolate;display:flex;align-items:center;min-height:215px;margin:0 0 17px;padding:29px 13px 20px;border:3px solid var(--ink);border-radius:10px 26px 10px 25px;background:#71e3ef;box-shadow:5px 5px 0 var(--ink)}
.oonote-intro::before{content:'';position:absolute;inset:0;z-index:-1;border-radius:inherit;background:repeating-conic-gradient(from 10deg at 75% 52%,transparent 0deg 11deg,#fff9ed8c 11.3deg 12deg,transparent 12.3deg 22deg),radial-gradient(#11182d2a .8px,transparent 1px) 0 0/5px 5px}
.oonote-intro::after{content:'';position:absolute;right:14px;bottom:13px;width:82px;height:4px;background:var(--ink);box-shadow:8px -8px 0 -1px var(--ink);transform:rotate(-13deg);z-index:-1}
.intro-copy{position:relative;z-index:2;width:54%;align-self:center}.intro-kicker{display:block;position:relative;z-index:2;font-size:8px;font-weight:1000;line-height:1.5;letter-spacing:.8px;margin:0 0 8px 1px}
.intro-bubble{position:relative;padding:14px 10px 13px;border:2.5px solid var(--ink);border-radius:45% 43% 40% 38%/30% 40% 30% 35%;background:var(--paper);transform:rotate(-7deg);box-shadow:2px 3px 0 var(--ink)}
.intro-bubble::after{content:'';position:absolute;right:4px;bottom:4px;width:17px;height:19px;transform:translate(10px,7px) skewY(30deg) rotate(-15deg);background:var(--paper);border-right:2.5px solid var(--ink);border-bottom:2.5px solid var(--ink)}
.oonote-intro h1{font-size:34px;line-height:.96;text-align:center;position:relative;z-index:1}.intro-tagline{margin:13px 0 0 7px;font-size:12px;font-weight:1000}
.brand-character{position:absolute;right:-5px;bottom:5px;width:53%;transform:rotate(7deg);z-index:1}.brand-mascot{display:block;width:100%;height:auto;object-fit:contain;border:0;border-radius:0;filter:drop-shadow(2px 3px 0 #11182d30)}
.mascot-orbit{position:absolute;top:3px;right:10px;font-family:Bangers,sans-serif;font-size:25px;transform:rotate(12deg);color:var(--yellow);-webkit-text-stroke:1px var(--ink)}
.daily{display:flex;align-items:center;gap:10px;width:100%;padding:10px 13px;position:relative;overflow:hidden;border:2.5px solid var(--ink);border-radius:9px;background:var(--yellow);box-shadow:3px 3px 0 var(--ink);text-align:left}
.daily::after{content:'';position:absolute;right:-15px;top:0;width:80px;height:100%;background:repeating-linear-gradient(-60deg,transparent 0 7px,#11182d13 7px 9px);pointer-events:none}
.daily-emblem{font-size:35px;line-height:1;font-family:Georgia,serif;transform:rotate(-12deg)}.daily-copy{min-width:0;flex:1}.daily .eyebrow{display:block;font-size:8px;letter-spacing:1px}.daily-title{display:block;font-family:Bangers,sans-serif;font-size:23px;letter-spacing:.6px;margin-top:2px}.daily-count{font-family:Bangers,sans-serif;font-size:29px;white-space:nowrap;z-index:1}.daily-count span{font-family:Nunito,sans-serif;font-size:10px;font-weight:1000}.daily .tiny-arrow{font-size:23px;z-index:1}
.section-title{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:28px 0 14px}.section-title h2{font-size:27px}.section-title>span{font-size:8px;font-weight:1000;background:var(--ink);color:var(--paper);padding:5px 7px;transform:rotate(-3deg)}
.mode-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 13px}
.mode-card{--card-light:#82e6f0;position:relative;isolation:isolate;overflow:hidden;display:flex;flex-direction:column;width:100%;min-height:232px;padding:0;border:2.5px solid var(--ink);border-radius:8px;background:var(--paper);box-shadow:4px 4px 0 var(--ink);text-align:left;transition:transform .15s,box-shadow .15s}
.mode-card:nth-child(2){--card-light:#ffdc67}.mode-card:nth-child(3){--card-light:#cab4ee}.mode-card:nth-child(4){--card-light:#ffa194}.mode-card:nth-child(5){--card-light:#ffe477}.mode-card:nth-child(6){--card-light:#82e6f0}
.mode-card:active{transform:translate(3px,3px);box-shadow:1px 1px 0 var(--ink)}
.mode-corner{position:absolute;top:8px;left:8px;z-index:2;display:flex;align-items:center;gap:3px;font-family:Bangers,sans-serif;font-size:20px;line-height:1;transform:rotate(-8deg);padding:3px 5px;border:1.5px solid var(--ink);border-radius:6px;background:var(--paper);box-shadow:1px 2px 0 var(--ink)}.mode-corner small{font:13px Georgia,serif}
.mode-picture{position:relative;isolation:isolate;display:flex;align-items:center;justify-content:center;height:106px;width:100%;margin:0;border-bottom:2.5px solid var(--ink);background:var(--card-light);overflow:hidden}
.mode-picture::before{content:'';position:absolute;inset:0;z-index:-1;background:repeating-conic-gradient(from 4deg at 60% 57%,transparent 0deg 17deg,#fff9ed99 17.2deg 19deg,transparent 19.3deg 32deg),radial-gradient(#11182d30 .6px,transparent .8px) 0 0/4px 4px}
.mode-picture>.card-staff{width:100%;margin-top:10px;transform:rotate(-8deg)}.mode-picture>.brand-mascot{width:95px;height:100px;margin-left:15px;margin-top:9px}.voice-syllable{position:absolute;left:7px;top:36px;font-family:Bangers,sans-serif;font-size:24px;transform:rotate(-12deg);z-index:2;color:var(--paper);-webkit-text-stroke:.7px var(--ink)}.mode-picture>svg:not(.card-staff):not(.brand-mascot){height:130px;width:auto;margin-top:26px;transform:rotate(8deg)}
.mascot-pair{display:flex;align-items:center;width:100%;padding-left:12px}.mascot-pair .brand-mascot{width:60%;flex-shrink:0;transform:rotate(-13deg)}.mascot-pair .mascot-right{margin-left:-20%;transform:rotate(14deg) translateY(10px)}
.mode-copy{display:block;min-width:0;width:100%;flex:1;padding:10px 10px 1px}.mode-card h3{font-size:25px;line-height:1.02;margin-bottom:6px}.mode-card p{font-size:10px;line-height:1.35;font-weight:800}.card-index{display:flex;align-items:center;justify-content:space-between;gap:3px;width:100%;padding:7px 10px;font-size:7px;font-weight:1000;letter-spacing:.6px}.mode-tag{padding:3px 5px;background:var(--card-light);border:1px solid var(--ink);border-radius:3px}.mode-go{font-size:20px;line-height:1}

/* Setup panels and speech bubbles. */
.setup-heading{display:flex;align-items:center;gap:18px}.setup-heading h1{font-size:38px;min-width:0;flex:1;transform:rotate(-2deg)}
.setup-art{--hue:0deg;position:relative;isolation:isolate;overflow:hidden;display:grid;place-items:center;width:100px;min-width:100px;height:124px;border:2.5px solid var(--ink);border-radius:13px;transform:rotate(-7deg);box-shadow:0 4px 0 var(--ink)}.setup-art>.card-staff{width:130px;max-width:none}.setup-art>.brand-mascot{width:84px}.setup-art>svg:not(.card-staff):not(.brand-mascot){height:111px;width:100%}.setup-art .mascot-pair{width:90px}.setup-art .voice-syllable{left:4px;top:7px}.setup-art .mascot-singing{margin-top:16px}
[data-mode=scroll] .setup-art{--hue:200deg}[data-mode=sing] .setup-art{--hue:65deg}[data-mode=song] .setup-art{--hue:145deg}[data-mode=arcade] .setup-art{--hue:184deg}[data-mode=multi] .setup-art{--hue:285deg}
.lead{font-size:13px;font-weight:800;line-height:1.6;margin:22px 0}.panel{--hue:0deg;position:relative;isolation:isolate;overflow:hidden;border:2.5px solid var(--ink);border-radius:16px 20px 15px 18px;padding:20px 17px;background:#8beaf0;box-shadow:1px 5px 0 var(--ink);margin:24px 0;transform:rotate(-.7deg)}
.panel::before{opacity:.65}.panel h3{margin-bottom:12px}.panel p{font-size:12px;line-height:1.55;font-weight:800}.panel-level,.panel-players{--hue:200deg;background:#ffe070}.panel-sound{--hue:0deg}.panel-piano{--hue:200deg;background:#ffe070;transform:rotate(1deg)}.panel-voice{--hue:65deg;background:#d2b0ff}.panel-install{--hue:285deg;background:#aff18e;transform:rotate(1deg)}.panel-privacy{--hue:200deg;background:#ffe070}.panel-records{--hue:65deg;background:#ceaff8}
.level-picker{display:flex;gap:10px;margin:17px 0 18px}.level-button{flex:1;min-width:0;padding:12px 3px 10px;border:2px solid var(--ink);background:#fff5be;border-radius:10px;box-shadow:0 3px 0 var(--ink);font-size:9px;font-weight:1000;line-height:1.5;transform:rotate(-3deg)}.level-button:nth-child(2){transform:rotate(2deg)}.level-button:nth-child(3){transform:rotate(-1deg)}.level-button b{display:block;font-family:Bangers,sans-serif;font-size:42px;font-weight:400;line-height:1.1}.level-button.selected{background:#61e2ed;box-shadow:0 4px 0 var(--ink),inset 0 0 0 3px #e2fcf5;transform:translateY(-4px) rotate(-3deg)}.level-button.selected:nth-child(2){transform:translateY(-4px) rotate(2deg)}.level-button.selected:nth-child(3){transform:translateY(-4px) rotate(-1deg)}
.primary,.secondary{display:flex;align-items:center;justify-content:center;gap:12px;width:100%;position:relative;min-height:58px;padding:13px 15px;margin:20px 0;border:2.5px solid var(--ink);border-radius:18px 23px 16px 22px;box-shadow:0 5px 0 var(--ink),inset 0 2px 0 #ffffff85;background:#ffe168;color:var(--ink);font-family:Bangers,Nunito,sans-serif;font-weight:400;font-size:25px;line-height:1.1;letter-spacing:.6px;transform:rotate(-1deg);transition:transform .13s,box-shadow .13s}
.primary.orange{background:#ffe168}.primary>span{font-size:28px}.secondary{background:#80e3ee;min-height:48px;font-size:21px;transform:rotate(.6deg);box-shadow:0 4px 0 var(--ink)}.primary svg,.secondary svg{width:21px;height:21px;flex-shrink:0}.primary:active,.secondary:active{transform:translateY(4px) rotate(0);box-shadow:0 1px 0 var(--ink)}
.fineprint{font-size:10px;line-height:1.6;text-align:center;margin:17px 0;font-weight:800}.field{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 0;border-bottom:1.5px dashed #14234f60}.field:last-child{border:0}.field label{font-size:12px;font-weight:1000}.field small{display:block;font-size:10px;line-height:1.4;font-weight:750;margin-top:5px}.field select,.field input[type=number]{min-height:44px;max-width:133px;padding:8px;border:2px solid var(--ink);border-radius:10px;background:#fff5bc;font-size:12px;font-weight:900;box-shadow:0 2px 0 var(--ink)}.field input[type=checkbox]{width:24px;height:24px;flex-shrink:0;margin:10px;accent-color:var(--ink)}.name-label{display:block;font-family:Bangers,sans-serif;font-size:17px;letter-spacing:.6px;margin-top:13px}.name-input{width:100%;min-height:46px;padding:10px 13px;margin:4px 0;border:2px solid var(--ink);border-radius:10px;background:#fff6c4;font-size:16px;font-weight:800;box-shadow:0 2px 0 var(--ink)}
.help-note{padding:14px 16px;border:2px dashed var(--ink);border-radius:13px;background:#ffc484;font-size:12px;font-weight:850;line-height:1.6;margin:22px 0;transform:rotate(.7deg)}.error{background:#ffe7bd;color:#792613;border:2px solid #792613;padding:15px;border-radius:12px;font-size:13px;line-height:1.5;margin:15px 0}.error:empty{display:none}.install-steps{padding-left:19px;font-size:12px;line-height:1.7}.install-steps li{padding:4px 0}.privacy-copy{font-size:12px;line-height:1.7}.audio-credit,.build-label{text-align:center;font-size:10px;line-height:1.7;margin:25px 0 0}.audio-credit a{text-underline-offset:3px}
.sound-lab{display:grid;grid-template-columns:repeat(4,1fr);gap:10px 8px;margin:18px 0 4px}.sound-lab button:nth-child(n+5){position:relative;left:50%}

/* Notes retain the seven colours from the OONOTE reference cards. */
.note-key,.sound-lab button{--key:#ef594d;--key-label:#14234f;background:var(--key);color:var(--key-label);position:relative;min-height:61px;border:2.5px solid var(--ink);border-radius:18px 16px 20px 17px;box-shadow:0 4px 0 var(--ink),inset 0 3px 0 #ffffff70;font-family:Bangers,sans-serif;font-weight:400;font-size:30px;letter-spacing:.7px;transition:transform .13s,box-shadow .13s}
.note-key:nth-child(2),.sound-lab button:nth-child(2){--key:#7fc757}.note-key:nth-child(3),.sound-lab button:nth-child(3){--key:#65ddeb}.note-key:nth-child(4),.sound-lab button:nth-child(4){--key:#2872d4;--key-label:white}.note-key:nth-child(5),.sound-lab button:nth-child(5){--key:#8955b9;--key-label:white}.note-key:nth-child(6),.sound-lab button:nth-child(6){--key:#946021;--key-label:white}.note-key:nth-child(7),.sound-lab button:nth-child(7){--key:#f5a05d}
.note-key::after,.sound-lab button::after{content:'';position:absolute;inset:4px;border:1px solid #ffffff50;border-radius:11px 9px 13px 10px;pointer-events:none}.note-key:active,.note-key.pressed,.sound-lab button:active{transform:translateY(3px) scale(.97);box-shadow:0 1px 0 var(--ink)}.sound-lab button{min-height:49px;font-size:23px;border-radius:13px 11px 15px 12px}

/* Musical notation remains clear inside white inked panels. */
.game-shell{padding:0 21px calc(19px + env(safe-area-inset-bottom));display:flex;flex-direction:column}.game-header{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 0 18px}.game-header h2{font-size:22px;letter-spacing:.6px}.game-header .eyebrow{font-size:8px;margin-bottom:3px}.game-header .round-button{width:41px;height:41px}.game-metrics{display:flex;align-items:center;gap:8px}.metric-chip{padding:8px 9px;background:#7ce4ed;border:2px solid var(--ink);border-radius:10px;box-shadow:0 2px 0 var(--ink);font-size:11px;font-weight:1000;white-space:nowrap;transform:rotate(3deg)}
.progress-track{height:11px;background:#ffdb7d;border:2px solid var(--ink);border-radius:8px;overflow:hidden}.progress-fill{height:100%;width:0;background:#227dc9;transition:width .2s}.game-status{display:flex;align-items:center;justify-content:space-between;gap:6px;font-size:10px;font-weight:1000;margin:13px 0}.game-question{font-size:34px;text-align:center;line-height:1.1;margin:16px 0 8px;transform:rotate(-1deg)}.game-hint{text-align:center;font-size:11px;line-height:1.5;min-height:17px;font-weight:850}
.staff-card,.score-window{--hue:0deg;position:relative;isolation:isolate;overflow:hidden;margin:22px 0 15px;border:3px solid var(--ink);border-radius:18px 22px 17px 21px;background:#94e8f3;box-shadow:1px 6px 0 var(--ink)}.staff-card::before,.score-window::before{opacity:.72}.staff-card svg{width:100%;height:auto;max-height:231px}.countdown-bar{height:7px;background:#14234f;position:absolute;bottom:0;left:0;width:100%;transform-origin:left}.feedback{min-height:47px;padding:4px 0;margin-bottom:10px;display:flex;align-items:center;justify-content:center;text-align:center;font-size:12px;font-weight:950;line-height:1.4}.feedback.good{color:#123f27}.feedback.bad{color:#651c23}.note-keyboard{display:grid;grid-template-columns:repeat(4,1fr);gap:12px 9px;margin-top:auto;padding:12px 0 4px}.note-key:nth-child(n+5){left:50%}.game-footer{text-align:center;font-size:9px;font-weight:900;letter-spacing:.5px;margin-top:19px}
.score-window{margin-top:22px}.score-window svg{width:100%;height:auto;max-height:230px}.timing-hint{display:flex;align-items:center;justify-content:center;gap:7px;font-size:10px;margin:3px 0 15px;font-weight:900}.timing-hint i{height:13px;width:3px;background:var(--orange);border-radius:2px}.beat-dots{display:flex;justify-content:center;gap:11px;margin:9px}.beat-dot{height:11px;width:11px;border:2px solid var(--ink);border-radius:50%;background:#ffc991}.beat-dot.active{background:#62e5ed;box-shadow:0 0 0 3px #14234f25}
.microphone-panel{--hue:65deg;position:relative;isolation:isolate;overflow:hidden;background:#c9a6ef;border:2.5px solid var(--ink);border-radius:19px 24px 17px 21px;box-shadow:0 5px 0 var(--ink);padding:18px;margin-top:auto;text-align:center}.microphone-panel::before{opacity:.55}.mic-top{display:flex;align-items:center;justify-content:center;gap:9px;font-size:9px;font-weight:1000;letter-spacing:.6px}.mic-dot{width:9px;height:9px;border:1.5px solid var(--ink);border-radius:50%;background:#76ed79;box-shadow:0 0 0 4px #14234f18}.pitch-reading{font-family:Bangers,sans-serif;font-size:38px;min-height:40px;margin:10px 0;letter-spacing:.7px}.pitch-reading small{font-family:Nunito,sans-serif;font-size:12px;letter-spacing:0;font-weight:850}.tuner{position:relative;height:11px;border:1.5px solid var(--ink);border-radius:10px;background:#ffe69e;margin:18px 5px 9px}.tuner::before{content:'';position:absolute;left:42%;width:16%;height:100%;background:#65d794}.tuner::after{content:'';position:absolute;left:50%;top:-4px;height:16px;width:1.5px;background:var(--ink)}.tuner-needle{position:absolute;left:50%;top:-6px;height:20px;width:4px;background:var(--ink);border-radius:3px;transform:translateX(-50%);transition:left .08s;z-index:1}.tuner-labels{display:flex;justify-content:space-between;font-size:9px;font-weight:900;margin:0 5px}.sound-actions{display:flex;gap:10px;margin:16px 0 8px}.sound-actions .secondary{flex:1;font-size:17px;min-height:47px;padding:10px 6px;margin:0}

/* Intermissions and scores. */
.overlay{position:fixed;inset:0;z-index:100;background:#14234f8c;backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:24px}.modal{--hue:200deg;position:relative;isolation:isolate;overflow:hidden;background:#ffde65;border:3px solid var(--ink);border-radius:20px;padding:19px 24px;width:min(100%,365px);text-align:center;box-shadow:3px 8px 0 var(--ink);transform:rotate(-2deg)}.modal::before{opacity:.65}.modal .brand-ribbon{padding:0}.modal h2{font-size:38px}.modal p{font-size:12px;font-weight:850;margin:14px 0 20px}.modal .primary,.modal .secondary{font-size:22px}.mascot-reaction{width:126px;margin:15px auto;transform:rotate(7deg)}.modal .mascot-reaction{width:110px;margin:14px auto 16px}
.count-in{position:fixed;inset:0;z-index:80;display:flex;align-items:center;justify-content:center;background:repeating-conic-gradient(from 10deg at 50% 50%,#65e4ed 0deg 13deg,#a8f4ed 13deg 15deg);font-family:Bangers,sans-serif;font-size:155px;line-height:1;color:#ffe46e;-webkit-text-stroke:3px var(--ink);text-shadow:5px 7px 0 var(--ink);pointer-events:none}.toast{position:fixed;bottom:calc(112px + env(safe-area-inset-bottom));left:50%;transform:translate(-50%,10px) rotate(-1deg);opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;z-index:200;max-width:90%;width:max-content;border:2px solid var(--ink);background:#ffdf70;color:var(--ink);box-shadow:0 4px 0 var(--ink);border-radius:13px;padding:14px 17px;font-size:12px;line-height:1.5;text-align:center;font-weight:900}.toast.visible{opacity:1;transform:translate(-50%,0) rotate(-1deg)}
.page-title{display:flex;align-items:center;gap:6px}.page-title h1{font-size:38px;min-width:0}.page-title .mascot-reaction{width:102px;min-width:102px;margin:0}.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px 15px;margin:28px 0}.stat-box{--hue:200deg;position:relative;isolation:isolate;overflow:hidden;border:2.5px solid var(--ink);border-radius:15px;padding:18px 13px;background:#ffe575;box-shadow:0 4px 0 var(--ink);transform:rotate(-2deg)}.stat-box::before{opacity:.7}.stat-box:nth-child(2){--hue:0deg;background:#81edf3;transform:rotate(2deg)}.stat-box:nth-child(3){--hue:65deg;background:#c6a1fa;transform:rotate(1deg)}.stat-box:nth-child(4){--hue:285deg;background:#a2ee9c;transform:rotate(-2deg)}.stat-box b{display:block;font-family:Bangers,sans-serif;font-size:44px;font-weight:400;line-height:1.1;letter-spacing:1px}.stat-box span{display:block;margin-top:7px;font-size:11px;font-weight:900;line-height:1.4}.progress-ring{position:relative;width:138px;height:138px;border:3px solid var(--ink);border-radius:50%;display:grid;place-items:center;margin:25px auto;background:conic-gradient(#168ac7 var(--angle),#ffdb63 0);box-shadow:0 5px 0 var(--ink)}.progress-ring::before{content:'';position:absolute;inset:10px;border:2px solid var(--ink);background:#85e8f0;border-radius:50%}.progress-ring div{position:relative;text-align:center;font-family:Bangers,sans-serif;font-size:39px;letter-spacing:.7px}.progress-ring small{display:block;font-family:Nunito,sans-serif;font-size:10px;font-weight:1000;margin-top:3px;letter-spacing:0}.empty-state{padding:19px 0;text-align:center}.record-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 0;border-bottom:1.5px dashed var(--line);font-size:12px}.record-row:last-child{border:0}.record-row b{white-space:nowrap;font-weight:1000}.result-screen{text-align:center}.result-screen>.mascot-reaction{width:145px;margin:6px auto 22px}.result-screen .lead{max-width:300px;margin:16px auto}.result-stars{font-size:38px;letter-spacing:8px;color:#ffe567;-webkit-text-stroke:1.5px var(--ink);text-shadow:0 3px 0 var(--ink);transform:rotate(-3deg);margin:24px 0}.result-screen .stat-box{text-align:left}

/* Anime concert stage. */
.arcade-stage{--hue:65deg;position:relative;isolation:isolate;height:clamp(270px,47dvh,430px);overflow:hidden;border:3px solid var(--ink);border-radius:20px;background:#9ae3f1;box-shadow:0 5px 0 var(--ink);margin:15px 0 12px}.arcade-stage::before{opacity:.7}.arcade-stage::after{content:'';position:absolute;bottom:0;left:0;right:0;height:38px;background:#ffe279;border-top:2px solid var(--ink);transform:rotate(-2deg);transform-origin:bottom left}.hero-character{position:absolute;width:140px;height:157px;bottom:-5px;left:50%;transform:translateX(-50%);z-index:4}.hero-character.hit{filter:sepia(1) saturate(3)}.hero-character.shielded::before{content:'';position:absolute;inset:-6px;border:3px solid #65eff2;border-radius:50%;box-shadow:0 0 0 2px var(--ink),0 0 20px #65eff2}.falling-note{position:absolute;top:0;left:0;display:flex;align-items:center;justify-content:center;min-width:54px;height:51px;background:#ffdf69;border:2.5px solid var(--ink);border-radius:11px 14px 10px 13px;box-shadow:0 3px 0 var(--ink);font-family:Bangers,sans-serif;font-size:27px;will-change:transform;z-index:5}.falling-note.staff-falling{width:90px;height:70px;padding:0;background:#a4f1f0;border-radius:12px}.falling-note svg{width:88px;height:68px}.arcade-hud{position:absolute;top:12px;left:13px;right:13px;display:flex;align-items:center;justify-content:space-between;font-size:12px;font-weight:1000;z-index:7}.hearts{color:#ee5648;-webkit-text-stroke:1px var(--ink);letter-spacing:3px;font-size:22px}.arcade-combo{position:absolute;top:44px;left:13px;font-size:10px;font-weight:1000;z-index:7}.guitar-broken .guitar-neck{transform:rotate(35deg);transform-origin:130px 80px}.guitar-broken .guitar-body{transform:translate(-8px,9px) rotate(-15deg);transform-origin:center}

/* Shared manga treatment, applied before the dedicated black multiplayer stage. */
.setup-title-group{flex:1;min-width:0;position:relative;padding-right:3px}.setup-title-group h1{font-size:37px}.setup-mascot{width:54px;float:right;margin:5px 0 -7px 5px}
.setup-art{border-radius:8px;transform:rotate(-5deg);background:var(--cyan);box-shadow:4px 4px 0 var(--ink)}
[data-mode=scroll] .setup-art,[data-mode=arcade] .setup-art{background:var(--yellow)}[data-mode=sing] .setup-art{background:#cab4ee}[data-mode=song] .setup-art{background:#ffa194}
.panel{border-radius:10px;background:var(--paper);box-shadow:4px 4px 0 var(--ink);transform:none;padding-top:23px}.panel::before{opacity:.3}.panel h3{display:table;position:relative;background:var(--yellow);border:2px solid var(--ink);padding:5px 11px;margin:-10px 0 16px -6px;transform:rotate(-2deg);box-shadow:2px 2px 0 var(--ink);font-size:24px}
.panel-voice h3,.panel-records h3{background:#cab4ee}.panel-sound h3{background:var(--cyan)}.panel-install h3{background:#addd92}.panel-players .multi-level-title{margin-top:22px}
.level-button{background:#fff9ed;border-radius:7px}.level-button.selected{background:var(--cyan);box-shadow:3px 4px 0 var(--ink)}
.primary,.secondary{border-radius:12px 20px 12px 20px;box-shadow:4px 4px 0 var(--ink);transform:none}.primary.orange{background:var(--yellow)}.secondary{background:#fff9ed;box-shadow:3px 3px 0 var(--ink)}
.help-note{position:relative;border:2px solid var(--ink);background:#fff9ed;border-radius:20px 20px 20px 5px;box-shadow:3px 3px 0 var(--ink);transform:none}
.name-input,.field select{background:#fff9ed;border-radius:6px}.field input[type=checkbox]{accent-color:#2079cf}
.note-key,.sound-lab button{border-radius:12px;box-shadow:3px 4px 0 var(--ink),inset 0 3px 0 #ffffff60}.note-key::after,.sound-lab button::after{border-radius:6px}
.game-header{gap:8px}.game-header>div:first-of-type{flex:1;min-width:0}.game-mascot{width:46px;flex-shrink:0;margin-right:-4px}.game-header h2{font-size:22px}.metric-chip{background:var(--yellow);border-radius:6px;transform:rotate(3deg)}
.staff-card,.score-window{background:#fffef7;border-radius:10px;box-shadow:4px 5px 0 var(--ink)}.staff-card::before,.score-window::before{display:none}
.microphone-panel{background:#e6daf8;border-radius:12px;box-shadow:4px 4px 0 var(--ink)}.microphone-panel::before{opacity:.4}
.game-question{font-size:34px}.game-hint{font-weight:800}.progress-track{background:#fff9ed}.progress-fill{background:#2baed9}
.modal{background:#fff9ed;border-radius:16px;box-shadow:5px 7px 0 var(--ink);transform:rotate(-1deg)}.modal::before{opacity:.4}.modal .mascot-reaction{width:118px}
.settings-title{justify-content:space-between;margin-bottom:25px}.settings-title .mascot-reaction{width:86px;min-width:86px}.page-title h1{font-size:39px}.page-title .mascot-reaction{transform:rotate(5deg)}
.stat-box{border-radius:9px;box-shadow:4px 4px 0 var(--ink);background:var(--yellow);transform:rotate(-1deg)}.stat-box:nth-child(2){background:var(--cyan);transform:rotate(1deg)}.stat-box:nth-child(3){background:#cab4ee;transform:rotate(1deg)}.stat-box:nth-child(4){background:#ffa194;transform:rotate(-1deg)}.stat-box::before{opacity:.4}
.progress-ring{border-width:3px;box-shadow:4px 5px 0 var(--ink)}.progress-ring::before{background:var(--paper)}.result-screen>.mascot-reaction{width:160px}.result-stars{margin:15px 0}
.arcade-stage{background:#a8e6f0;border-radius:10px;box-shadow:4px 5px 0 var(--ink)}.arcade-stage::before{opacity:1;background:repeating-conic-gradient(from 11deg at 50% 95%,transparent 0deg 18deg,#fff9ed88 18deg 20deg,transparent 20deg 35deg),radial-gradient(#11182d26 .8px,transparent 1px) 0 0/5px 5px}.arcade-stage::after{background:repeating-linear-gradient(90deg,var(--ink) 0 42px,#253555 43px 45px);height:30px;border-top:3px solid var(--ink)}.falling-note{background:var(--yellow);border-radius:7px;box-shadow:3px 3px 0 var(--ink)}

/* Multiplayer: an uncluttered black stage facing the active player. */
.multi-level-title{margin-top:20px}
.multi-shell.screen-game{position:fixed;inset:0;z-index:40;width:100vw;max-width:none;height:100dvh;min-height:0;padding:0;margin:0;overflow:hidden;background:#000;color:#f3faff;box-shadow:none}
.multi-shell.screen-game::before{display:none}
.multi-turn{--rotation:0deg;--multi-safe:max(14px,env(safe-area-inset-top),env(safe-area-inset-bottom),env(safe-area-inset-left),env(safe-area-inset-right));position:absolute;left:50%;top:50%;width:100vw;height:100dvh;padding:var(--multi-safe);display:flex;flex-direction:column;gap:10px;background:#000;color:#f3faff;transform:translate(-50%,-50%) rotate(var(--rotation));overflow:hidden}
.multi-turn.sideways{width:100dvh;height:100vw;gap:7px}
.multi-top{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-shrink:0;padding-bottom:6px;border-bottom:1px solid #ffffff30}
.multi-player{min-width:0}.multi-player>span{font-size:9px;font-weight:1000;letter-spacing:1.4px;color:#65dfef}.multi-player h1{font-size:32px;line-height:1.05;letter-spacing:1px;overflow-wrap:anywhere;margin-top:4px}
.multi-top .round-button{color:#85e9f4;background:#07171b;border:2px solid #65ddeb;box-shadow:none;width:44px;height:44px;transform:none}
.multi-status{display:flex;align-items:center;justify-content:center;min-height:17px;font-size:11px;font-weight:900;flex-shrink:0;color:#ffdf70;text-align:center}
.multi-answer-body{display:grid;grid-template-rows:minmax(0,1.6fr) minmax(90px,1fr);gap:6px;min-height:0;flex:1}
.multi-score-area{min-width:0;min-height:0;display:flex;flex-direction:column;text-align:center}
.multi-target-staff{flex:1;min-height:0;display:flex;align-items:center;justify-content:center}
.multi-target-staff svg{width:100%;height:100%;max-height:none;min-height:0}
.multi-target-staff svg>g:first-child{opacity:.65;stroke-width:1.7}
.multi-voice-panel{display:flex;align-items:center;justify-content:center;min-width:0;min-height:0;padding:0;border:0;border-radius:0;background:#000;text-align:center}
#multi-heard-note{font-family:Bangers,sans-serif;font-size:clamp(84px,min(30vw,20dvh),180px);line-height:1;letter-spacing:1px;font-weight:400;white-space:nowrap;color:#65ddeb}
.multi-voice-panel[data-status=wrong] #multi-heard-note,.multi-voice-panel[data-status=unstable] #multi-heard-note,.multi-answer-body.is-miss #multi-heard-note{color:#ff9b85}
.multi-voice-panel[data-status=holding] #multi-heard-note,.multi-answer-body.is-good #multi-heard-note{color:#6bea9a}
.multi-direction{display:flex;align-items:center;justify-content:center;flex-shrink:0;height:46px;color:#65ddeb;pointer-events:none}
.multi-direction svg{display:block;width:46px;height:46px;overflow:visible}
.multi-turn[data-phase=answer] .multi-direction{animation:multi-direction-blink 1s steps(2,end) infinite}
@keyframes multi-direction-blink{0%,100%{opacity:1}50%{opacity:.18}}
.multi-scores{display:flex;align-items:center;justify-content:center;gap:6px;flex-wrap:wrap;flex-shrink:0;padding-top:2px}
.multi-score{display:flex;align-items:center;justify-content:space-between;gap:6px;min-width:0;flex:1;padding:7px 8px;border:1px solid #ffffff33;border-radius:9px;font-size:9px;color:#a8bcc2}
.multi-score span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.multi-score b{font-family:Bangers,sans-serif;font-size:22px;font-weight:400;color:white}.multi-score.active{border-color:#65ddeb;color:#8feaf2;background:#072229}.multi-limit{font-size:8px;color:#96aab0;flex-basis:100%;text-align:center;margin-top:2px}
.multi-turn.sideways .multi-player h1{font-size:24px}.multi-turn.sideways .multi-top{padding-bottom:4px}.multi-turn.sideways .multi-player>span{font-size:8px}
.multi-turn.sideways .multi-answer-body{grid-template-columns:minmax(0,1.65fr) minmax(0,1fr);grid-template-rows:minmax(0,1fr);gap:16px}
.multi-turn.sideways #multi-heard-note{font-size:clamp(80px,min(30vw,15dvh),152px)}
.multi-turn.sideways .multi-direction,.multi-turn.sideways .multi-direction svg{height:32px}.multi-turn.sideways .multi-direction svg{width:32px}
.multi-turn.sideways .multi-scores{padding-top:0;flex-wrap:nowrap}.multi-turn.sideways .multi-limit{flex-basis:auto;margin:0 0 0 5px;white-space:nowrap}.multi-turn.sideways .multi-score{flex:0 1 145px;padding:4px 8px}
.multi-pause{background:#000c}.multi-pause .modal{background:#071115;color:#f3faff;border-color:#65ddeb;box-shadow:0 5px 0 #247d8c}.multi-pause .modal::before{display:none}.multi-pause .modal p{color:#c4d7de}.multi-pause .modal .mascot-reaction{display:none}.multi-pause .modal .brand-ribbon{margin-bottom:22px}.multi-pause .modal .primary,.multi-pause .modal .secondary{color:var(--ink)}
.screen-result[data-mode=multi]{background:#000;color:#f3faff}.screen-result[data-mode=multi]::before{display:none}.screen-result[data-mode=multi] .back-row .eyebrow{color:#b3c9d1}.screen-result[data-mode=multi] .pill,.screen-result[data-mode=multi] .round-button,.screen-result[data-mode=multi] .panel{color:var(--ink)}
.multi-leaderboard{display:flex;justify-content:space-between;gap:12px;padding:14px 0;border-bottom:1.5px dashed var(--line);font-size:13px}.multi-leaderboard:last-child{border:0}.multi-leaderboard.winner{font-weight:1000}
@media(max-width:359px){.multi-turn{--multi-safe:max(10px,env(safe-area-inset-top),env(safe-area-inset-bottom),env(safe-area-inset-left),env(safe-area-inset-right));gap:8px}.multi-player h1{font-size:27px}.multi-status{font-size:10px}.multi-turn.sideways{gap:5px}.multi-turn.sideways .multi-top{padding-bottom:3px}.multi-score{font-size:8px;padding:5px}.multi-direction,.multi-direction svg{height:40px}.multi-direction svg{width:40px}}
@media(orientation:landscape){
.multi-turn:not(.sideways){gap:7px}.multi-turn:not(.sideways) .multi-top{padding-bottom:4px}.multi-turn:not(.sideways) .multi-player h1{font-size:24px}.multi-turn:not(.sideways) .multi-answer-body{grid-template-columns:minmax(0,1.65fr) minmax(0,1fr);grid-template-rows:minmax(0,1fr);gap:16px}.multi-turn:not(.sideways) #multi-heard-note{font-size:clamp(80px,min(15vw,30dvh),152px)}.multi-turn:not(.sideways) .multi-direction,.multi-turn:not(.sideways) .multi-direction svg{height:32px}.multi-turn:not(.sideways) .multi-direction svg{width:32px}.multi-turn:not(.sideways) .multi-scores{flex-wrap:nowrap}.multi-turn:not(.sideways) .multi-limit{flex-basis:auto;margin-left:5px;white-space:nowrap}.multi-turn:not(.sideways) .multi-score{padding:4px 8px}
.multi-turn.sideways .multi-answer-body{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1.6fr) minmax(90px,1fr);gap:6px}.multi-turn.sideways #multi-heard-note{font-size:clamp(84px,min(30dvh,20vw),180px)}.multi-turn.sideways .multi-direction,.multi-turn.sideways .multi-direction svg{height:46px}.multi-turn.sideways .multi-direction svg{width:46px}.multi-turn.sideways .multi-scores{flex-wrap:wrap}.multi-turn.sideways .multi-score{flex:1;padding:7px 8px}.multi-turn.sideways .multi-limit{flex-basis:100%;margin:2px 0 0}
}
@media(prefers-reduced-motion:reduce){.multi-turn[data-phase=answer] .multi-direction{animation:none;opacity:1}}

.multi-turn h2,.result-screen h1{overflow-wrap:anywhere}.multi-leaderboard>span{min-width:0;overflow-wrap:anywhere}.multi-leaderboard>b{flex-shrink:0}
@media(min-width:700px){.app-shell,.game-shell{box-shadow:0 0 0 1px #11182d25,10px 0 45px #11182d18}.app-shell{padding-left:28px;padding-right:28px}.oonote-intro{min-height:255px}.oonote-intro h1{font-size:42px}.brand-character{width:51%}.mode-card{min-height:250px}.mode-picture{height:126px}.mode-card h3{font-size:30px}.mode-card p{font-size:12px}}
@media(max-width:359px){.app-shell{padding-left:15px;padding-right:15px}.home-brand .brand-logo{width:149px}.oonote-intro{min-height:195px;padding-left:9px}.oonote-intro h1{font-size:29px}.intro-kicker{font-size:7px;letter-spacing:.4px}.intro-tagline{font-size:10px}.brand-character{width:52%;right:-3px}.section-title h2{font-size:24px}.section-title>span{font-size:7px}.mode-grid{gap:14px 11px}.mode-card{min-height:221px}.mode-card h3{font-size:23px}.mode-card p{font-size:9px}.mode-copy{padding:9px 8px 1px}.mode-picture{height:97px}.card-index{font-size:6px;padding:7px 8px;letter-spacing:.3px}.daily{gap:8px;padding:10px}.daily-emblem{font-size:29px}.daily-title{font-size:21px}.daily-count{font-size:25px}.daily .tiny-arrow{display:none}.setup-heading{gap:14px}.setup-art{width:82px;min-width:82px;height:110px}.setup-title-group h1{font-size:31px}.panel{padding:20px 13px}.field{gap:8px}.field select{max-width:112px;font-size:11px}.game-shell{padding-left:15px;padding-right:15px}.game-mascot{width:31px}.game-header h2{font-size:19px}.game-question{font-size:29px}.metric-chip{font-size:10px;padding:7px}.note-key{font-size:27px}.page-title h1{font-size:32px}.page-title .mascot-reaction{width:85px;min-width:85px}.bottom-nav{width:calc(100% - 24px);gap:3px;padding:5px}.nav-label{font-size:17px}.nav-card-illustration{width:18px}.nav-item{gap:4px;padding:4px}}
@media(max-height:740px){.game-shell .brand-ribbon{padding-top:calc(7px + env(safe-area-inset-top));padding-bottom:0}.game-shell .brand-logo-small{width:85px}.game-header{padding-bottom:12px}.game-question{margin-top:7px}.staff-card{margin-top:15px}.staff-card svg{max-height:168px}.note-key{min-height:52px}.game-footer{margin-top:13px}.feedback{min-height:35px;margin-bottom:5px}.microphone-panel{padding:13px}.score-window{margin-top:15px}.arcade-stage{height:36dvh;min-height:235px}.modal .mascot-reaction{width:83px}.modal .brand-ribbon{padding:0}.modal{padding:17px 22px}.modal h2{font-size:34px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

.avatar .avatar-mascot{width:42px;height:42px;max-width:none;transform:rotate(8deg)}
.game-heading{display:flex;align-items:center;justify-content:space-between;gap:4px}.game-heading-copy{min-width:0}
.intro-bubble .intro-tagline{margin:8px 0 0;text-align:center;font-size:11px}
@media(max-width:359px){.intro-bubble .intro-tagline{font-size:9px}.game-heading{gap:2px}}

/* Screentones stay behind the illustrations and outside the musical staves. */
.panel::before,.stat-box::before,.setup-art::before,.microphone-panel::before,.modal::before,.arcade-stage::before{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;border-radius:inherit}
.panel::before,.stat-box::before,.setup-art::before,.microphone-panel::before,.modal::before{background:radial-gradient(#11182d25 .7px,transparent .9px) 0 0/5px 5px}
