/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.absolute{position:absolute}.relative{position:relative}.start{inset-inline-start:var(--spacing)}.block{display:block}.hidden{display:none}.inline{display:inline}.table{display:table}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}}:root{--paper:#f1ede4;--card:#fffdf8;--ink:#20241f;--muted:#6b6e65;--line:#d8d1c5;--forest:#1f5948;--forest-dark:#174438;--accent:#d86f49;--accent-soft:#f5d8c9;--gold:#e6b950}*{box-sizing:border-box}html{background:var(--paper)}body{background:radial-gradient(circle at 90% 4%, #ddbe8f2e, transparent 28rem), var(--paper);color:var(--ink);margin:0;font-family:Arial,Helvetica,sans-serif}button{color:inherit;font:inherit;touch-action:manipulation;-webkit-tap-highlight-color:transparent}button:focus-visible{outline-offset:2px;outline:3px solid #d86f4980}.app-shell{height:100vh;overflow:hidden}.brand{font-family:Georgia,Times New Roman,serif;font-size:18px;font-weight:700}.practice-toggle{background:#e4ded2;border-radius:9px;gap:3px;padding:3px;display:flex}.practice-toggle button{cursor:pointer;background:0 0;border:0;border-radius:7px;padding:7px 19px;font-size:11px;font-weight:700}.practice-toggle button.is-active{background:var(--card);box-shadow:0 2px 8px #362e2314}.heading-toggles{flex-wrap:wrap;align-items:center;gap:9px;display:flex}.mic-toggle{border:1px solid var(--line);color:var(--muted);cursor:pointer;background:0 0;border-radius:7px;align-items:center;gap:7px;min-height:32px;padding:6px 12px;font-size:10px;font-weight:700;display:flex}.mic-toggle span{background:#9d9f98;border-radius:50%;width:7px;height:7px}.mic-toggle:disabled{opacity:.65}.mic-toggle.is-live{color:var(--forest);border-color:#4d98788c}.mic-toggle.is-live span{background:#4d9878;box-shadow:0 0 0 4px #4d98781f}.song-workspace{height:100vh;display:flex}.song-view{flex-direction:column;height:100vh;min-height:0;padding:18px clamp(20px,4vw,60px);display:flex}.song-view-heading{flex:none;justify-content:space-between;align-items:center;margin-bottom:14px;display:flex}.close-songs{background:var(--card);border:1px solid var(--line);cursor:pointer;border-radius:8px;min-width:76px;min-height:38px;padding:8px 16px;font-size:12px;font-weight:700}.song-list{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));align-content:start;gap:10px;min-height:0;display:grid;overflow-y:auto}.song-list button{background:var(--card);border:1px solid var(--line);cursor:pointer;text-align:left;border-radius:12px;padding:16px}.song-list button:hover{background:#fffc}.song-list button.is-active{border-color:var(--accent);box-shadow:0 5px 18px #372f2514, inset 0 0 0 1px var(--accent)}.song-list span{font-family:Georgia,Times New Roman,serif;font-size:17px;line-height:1.25;display:block}.song-list small{color:var(--muted);text-transform:uppercase;margin-top:7px;font-size:9px;display:block}.practice-panel{flex-direction:column;flex:1;gap:10px;min-width:0;min-height:0;padding:14px clamp(20px,3vw,44px);display:flex}.song-heading{flex:none;justify-content:space-between;align-items:center;gap:10px;display:flex}.song-button{background:var(--card);border:1px solid var(--line);cursor:pointer;border-radius:8px;align-items:center;gap:8px;min-width:0;min-height:38px;padding:6px 12px;display:flex}.song-button strong{text-overflow:ellipsis;white-space:nowrap;max-width:260px;font-family:Georgia,Times New Roman,serif;font-size:14px;font-weight:600;overflow:hidden}.song-button>span{color:var(--muted);font-size:10px}.game-card{color:#f8f5ed;background:#252922;border:1px solid #363b33;border-radius:14px;flex:auto;grid-template-rows:auto minmax(180px,1fr) 116px;grid-template-columns:minmax(0,1fr);min-height:0;display:grid;overflow:hidden;box-shadow:0 15px 38px #2d261d21}.cue-strip{border-bottom:1px solid #ffffff1c;align-items:stretch;min-height:59px;display:flex}.lyric-cue,.next-chord{flex-direction:column;justify-content:center;padding:10px 18px;display:flex}.lyric-cue{flex:auto;min-width:0}.lyric-cue span,.next-chord span,.cue-mic span{color:#aeb2a8;letter-spacing:.11em;text-transform:uppercase;font-size:8px;font-weight:800}.lyric-cue strong{margin-top:3px;font-family:Georgia,Times New Roman,serif;font-size:20px;font-weight:500}.next-chord{border-left:1px solid #ffffff1c;flex:0 0 250px;grid-template-columns:1fr auto;display:grid}.next-chord span{grid-column:1/-1}.next-chord strong{color:#f1c16a;font-family:Georgia,Times New Roman,serif;font-size:23px;font-weight:500}.next-chord small{color:#bbc0b5;align-self:center;font-size:9px}.cue-mic{border-left:1px solid #ffffff1c;flex-direction:column;flex:0 0 220px;justify-content:center;gap:4px;padding:8px 14px;display:flex}.cue-mic strong{text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:600;overflow:hidden}.match-meter{background:#ffffff29;border-radius:99px;height:4px;overflow:hidden}.match-meter span{border-radius:inherit;background:#7cc89e;height:100%;transition:width .18s;display:block}.runway{background:linear-gradient(#1b1f1a,#2d332b);grid-area:2/1;min-height:0;position:relative;overflow:hidden}.runway:before{content:"";background:linear-gradient(90deg,#0000,#f5d8c90f,#0000);position:absolute;inset:0}.note-field{position:absolute;inset:0 19px}.lane-lines{grid-template-columns:repeat(8,1fr);display:grid;position:absolute;inset:0}.lane-lines span{border-left:1px solid #ffffff13}.lane-lines span:last-child{border-right:1px solid #ffffff13}.strike-line{z-index:5;border-top:2px solid #f2d284;position:absolute;bottom:22%;left:0;right:0}.strike-line:after{content:"";background:#f1c16a2e;height:12px;position:absolute;top:-7px;left:0;right:0}.strike-line span{color:#272a24;letter-spacing:.08em;text-transform:uppercase;background:#f1c16a;border-radius:4px;padding:4px 6px;font-size:8px;font-weight:900;position:absolute;top:6px;right:0}.falling-note{contain:layout paint;will-change:transform;z-index:4;background:linear-gradient(#f29d71,#d86f49);border:1px solid #ffc1a2;border-radius:7px;justify-content:center;align-items:center;width:5.7%;min-width:28px;display:flex;position:absolute;top:0;left:0;transform:translate(-50%,-200px);box-shadow:0 5px 14px #0000004d,inset 0 1px #ffffff5c}.falling-note.is-melody{background:linear-gradient(#ebc967,#d8a837);border-color:#ffe6a5;width:4.7%;min-width:24px}.falling-note.is-hit{background:linear-gradient(#75c99f,#3f8b6a);border-color:#b5eccf}.falling-note span{color:#fff;text-shadow:0 1px 2px #00000047;font-family:Georgia,Times New Roman,serif;font-size:11px;font-weight:700}.count-in{z-index:8;background:#141713c2;flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.count-in span{color:#c5c8c0;letter-spacing:.13em;text-transform:uppercase;font-size:9px;font-weight:800}.count-in strong{color:#f1c16a;margin:4px 0;font-family:Georgia,Times New Roman,serif;font-size:clamp(50px,7vh,78px);font-weight:500;line-height:1}.falling-note.is-step{will-change:auto;transition:bottom .2s,opacity .2s;top:auto;transform:translate(-50%)}.falling-note.is-step.is-melody-target{background:linear-gradient(#ebc967,#d8a837);border-color:#ffe6a5}.falling-note.is-step.is-melody-target.is-hit{background:linear-gradient(#75c99f,#3f8b6a);border-color:#b5eccf}.falling-note.is-step.is-current{box-shadow:0 0 0 2px #f2d284f2,0 8px 18px #0006,inset 0 1px #ffffff5c}.step-complete{color:#f8f5ed;text-align:center;z-index:8;flex-direction:column;justify-content:center;align-items:center;gap:4px;display:flex;position:absolute;inset:0}.step-complete span{color:#aeb2a8;letter-spacing:.13em;text-transform:uppercase;font-size:8px;font-weight:800}.step-complete strong{color:#f1c16a;font-family:Georgia,Times New Roman,serif;font-size:34px;font-weight:500}.step-complete small{color:#bbc0b5;font-size:10px}.step-hint{color:var(--muted);text-align:right;font-size:9px;font-weight:700}.keyboard-row{background:#20231e;border-top:1px solid #ffffff1a;grid-area:3/1;grid-template-columns:minmax(0,1fr);align-items:stretch;padding:10px 14px 12px;display:grid}.keyboard{background:#151713;border:5px solid #151713;border-bottom-width:7px;border-radius:6px 6px 9px 9px;grid-template-columns:repeat(8,1fr);min-height:88px;display:grid;position:relative;overflow:hidden}.white-key{cursor:pointer;background:linear-gradient(#fffef9,#e9e4da);border:0;border-left:1px solid #aaa398;border-radius:0 0 4px 4px;flex-direction:column;justify-content:flex-end;align-items:center;padding:0 0 6px;display:flex}.white-key:first-child{border-left:0}.white-key.in-chord{box-shadow:inset 0 -6px 0 var(--accent);background:linear-gradient(#fffef9 0 48%,#f5c5ad 100%)}.white-key>span{background:0 0;border-radius:50%;width:10px;height:10px;margin-bottom:4px}.white-key.in-chord>span{background:var(--accent);box-shadow:0 0 0 4px #d86f492e}.white-key small{color:#66665f;font-size:8px;font-weight:800}.black-key{cursor:pointer;z-index:2;background:linear-gradient(135deg,#353832,#050605);border:0;border-radius:0 0 3px 3px;width:7.4%;height:55%;position:absolute;top:0;transform:translate(-50%);box-shadow:0 4px 4px #00000073}.black-key.is-target{background:linear-gradient(135deg,#e58a5f,#c85a35);box-shadow:0 4px 10px #d86f4980}.control-bar{background:var(--card);border:1px solid var(--line);border-radius:10px;flex:none;grid-template-columns:auto minmax(160px,1fr) auto;align-items:center;gap:20px;min-height:58px;padding:8px 11px;display:grid}.transport{gap:6px;display:flex}.start-button,.restart-button,.tempo-control button{cursor:pointer;border-radius:7px;min-height:34px;padding:7px 12px;font-size:9px;font-weight:800}.start-button{background:var(--forest);border:1px solid var(--forest);color:#fff;min-width:72px}.start-button:hover{background:var(--forest-dark)}.restart-button,.tempo-control button{border:1px solid var(--line);background:0 0}.position-status{color:var(--muted);text-align:center;gap:6px;font-size:9px;display:grid}.position-status>div{background:#ded8cc;border-radius:99px;height:4px;overflow:hidden}.position-status i{background:var(--accent);border-radius:inherit;height:100%;display:block}.tempo-control{grid-template-columns:1fr auto 1fr;align-items:center;gap:7px;display:grid}.tempo-control strong{text-align:center;min-width:36px;font-size:15px}.tempo-control small{color:var(--muted);font-size:7px;font-weight:400;display:block}@media (height<=820px) and (width>=901px){.practice-panel{gap:7px;padding-top:10px;padding-bottom:8px}.game-card{grid-template-rows:auto minmax(145px,1fr) 102px}.cue-strip{min-height:51px}.lyric-cue strong{font-size:17px}.keyboard-row{padding-top:8px;padding-bottom:8px}.control-bar{min-height:51px}}@media (width<=900px){.app-shell{height:auto;min-height:100vh;overflow:visible}.song-workspace{height:auto;display:block}.song-view{height:auto;min-height:100vh;padding:16px}.practice-panel{min-height:640px;padding:16px}.game-card{grid-template-rows:auto minmax(180px,1fr) auto;grid-template-columns:1fr;min-height:460px}.control-bar{grid-template-columns:1fr}.position-status{order:-1}}@media (width<=560px){.practice-toggle button{padding:7px 10px}.song-list{grid-template-columns:1fr}.song-heading{flex-wrap:wrap;align-items:flex-start}.song-button strong{max-width:170px}.next-chord{flex-basis:120px}.next-chord small{display:none}.cue-mic{flex-basis:140px}.keyboard-row{grid-template-columns:1fr}}@media (orientation:landscape) and (height<=500px){.app-shell{height:100dvh;min-height:0;padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);overflow:hidden}.song-workspace{height:calc(100dvh - env(safe-area-inset-bottom));display:flex}.song-view{height:calc(100dvh - env(safe-area-inset-bottom));padding:10px 14px}.song-view-heading{margin-bottom:8px}.brand{font-size:14px}.close-songs{min-width:64px;min-height:34px}.song-list{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:7px}.song-list button{border-radius:9px;padding:10px 12px}.song-list span{font-size:13px}.song-list small{margin-top:4px;font-size:8px}.practice-panel{gap:6px;min-height:0;padding:6px 10px 8px}.heading-toggles{gap:6px}.song-button{min-height:38px;padding:5px 10px}.song-button strong{max-width:150px;font-size:12px}.practice-toggle button{padding:7px 13px;font-size:12px}.mic-toggle{gap:6px;min-height:38px;padding:6px 12px;font-size:11px}.game-card{border-radius:10px;grid-template-rows:auto minmax(70px,1fr) 76px;min-height:0}.cue-strip{min-height:42px}.lyric-cue,.next-chord{padding:4px 12px}.lyric-cue span,.next-chord span,.cue-mic span{font-size:7px}.lyric-cue strong{margin-top:1px;font-size:17px}.next-chord{flex-basis:112px}.next-chord strong{font-size:17px}.next-chord small{display:none}.cue-mic{flex-basis:180px;gap:3px;padding:4px 12px}.cue-mic strong{font-size:11px}.count-in strong{margin:3px 0;font-size:36px}.count-in span{font-size:8px}.strike-line span{padding:3px 5px;font-size:7px}.note-field{--step-slot:32px;--step-scale:.72}.step-complete strong{font-size:26px}.step-complete small{font-size:9px}.keyboard-row{padding:4px 8px 6px}.keyboard{border-width:4px 4px 5px;min-height:62px}.note-field{left:12px;right:12px}.white-key{padding-bottom:3px}.white-key>span{width:8px;height:8px;margin-bottom:2px}.white-key.in-chord{box-shadow:inset 0 -5px 0 var(--accent)}.white-key small{font-size:9px}.control-bar{grid-template-columns:auto minmax(110px,1fr) auto;gap:10px;min-height:48px;padding:4px 8px}.position-status{order:0;gap:4px;font-size:9px}.start-button,.restart-button,.tempo-control button{min-height:38px;padding:6px 12px;font-size:11px}.start-button{min-width:80px}.tempo-control{gap:6px}.tempo-control strong{min-width:34px;font-size:15px}.tempo-control small{font-size:7px}.step-hint{display:none}}@media (orientation:landscape) and (height<=500px) and (width<=740px){.practice-toggle button{padding:6px 8px;font-size:10px}.mic-toggle{min-height:34px;padding:5px 9px;font-size:10px}.song-button strong{max-width:96px}}@media (prefers-reduced-motion:reduce){.falling-note,.falling-note.is-step,.match-meter span{transition:none}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}
