@font-face{font-family:GeistSans;src:url(/_next/static/media/0b78ff376f6b9734-s.p.woff2) format("woff2");font-display:swap;font-weight:100 900}@font-face{font-family:GeistSans Fallback;src:local("Arial");ascent-override:94.56%;descent-override:27.76%;line-gap-override:0.00%;size-adjust:106.28%}.__className_8adcd2{font-family:GeistSans,GeistSans Fallback}.__variable_8adcd2{--font-geist-sans:"GeistSans","GeistSans Fallback"}@font-face{font-family:GeistMono;src:url(/_next/static/media/723e11e5093b8e80.p.woff2) format("woff2");font-display:swap;font-weight:100 900}.__className_46451f{font-family:GeistMono,ui-monospace,SFMono-Regular,Roboto Mono,Menlo,Monaco,Liberation Mono,DejaVu Sans Mono,Courier New,monospace}.__variable_46451f{--font-geist-mono:"GeistMono",ui-monospace,SFMono-Regular,Roboto Mono,Menlo,Monaco,Liberation Mono,DejaVu Sans Mono,Courier New,monospace}

/*! tailwindcss v4.3.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)))){*,::backdrop,:after,:before{--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial}}}@layer theme{:host,:root{--font-sans:var(--font-geist-sans),-apple-system,"Hiragino Kaku Gothic ProN","Noto Sans JP",sans-serif;--font-mono:var(--font-geist-mono),ui-monospace,monospace;--text-xs:12px;--text-sm:13px;--text-base:14px;--text-lg:18px;--text-xl:22px;--text-2xl:28px;--radius-sm:6px;--radius-md:9px;--radius-lg:12px;--shadow-sm:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-screen:#0b0d10;--color-panel:#14181c;--color-panel-2:#1b2127;--color-inset:#080a0c;--color-hair:#b8d6e012;--color-line:#b8d6e021;--color-line-strong:#b8d6e038;--color-lit:#dcf4f80d;--color-fg:#eef2f4;--color-fg-2:#c2ccd2;--color-fg-3:#93a0a8;--color-signal:#38d6c4;--color-signal-hi:#61e8d8;--color-signal-soft:#38d6c421;--color-signal-line:#38d6c46b;--color-tune:#86dd66;--color-drift:#f0b748;--color-miss:#f0685a;--color-paper:#f1ece0;--text-2xs:11px;--text-md:16px;--text-display:40px}}@layer base{*,::backdrop,:after,:before{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}:host,html{-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;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{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}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,optgroup,select,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,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-second-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,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.fixed{position:fixed}.relative{position:relative}.static{position:static}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-flex{display:inline-flex}.w-full{width:100%}.resize{resize:both}.flex-col{flex-direction:column}.items-center{align-items:center}.rounded{border-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}}:root{--shadow:0 4px 14px -8px #0000008c,0 1px 2px #0006;--shadow-sm:0 1px 2px #00000073;--ease:cubic-bezier(.22,.61,.36,1)}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{min-height:100dvh;font-family:var(--font-sans);background-color:var(--color-screen);color:var(--color-fg);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;background-image:radial-gradient(900px 380px at 50% -12%,#38d6c40d,#0000 62%);background-repeat:no-repeat;background-attachment:fixed;margin:0}:where(a,button,input,select,textarea,[role=button],[tabindex]:not([tabindex="-1"])):focus-visible{outline:2px solid var(--color-signal);outline-offset:2px;border-radius:inherit}[tabindex="-1"]:focus{outline:none}.appbar{z-index:40;background:#0b0d10c7;align-items:center;gap:24px;padding:13px 26px;display:flex;position:sticky;top:0}@supports (color:color-mix(in lab,red,red)){.appbar{background:color-mix(in srgb,var(--color-screen) 78%,transparent)}}.appbar{-webkit-backdrop-filter:saturate(140%)blur(14px);backdrop-filter:saturate(140%)blur(14px);border-bottom:1px solid var(--color-hair)}.brand{font-weight:600;font-size:var(--text-lg);letter-spacing:-.01em;white-space:nowrap;color:inherit;text-decoration:none}.brand .dot{color:var(--color-signal)}.nav{gap:2px;display:flex}.nav-item{color:var(--color-fg-3);cursor:pointer;font-size:var(--text-sm);transition:color .18s var(--ease),background .18s var(--ease);background:0 0;border:0;border-radius:999px;padding:8px 15px;font-weight:500}.nav-item.active,.nav-item:hover{color:var(--color-fg)}.nav-item.active{background:var(--color-panel);box-shadow:inset 0 1px 0 var(--color-lit)}.appbar-right{align-items:center;gap:12px;margin-left:auto;display:flex}.guide-btn{border:1px solid var(--color-line);color:var(--color-fg-3);font-size:var(--text-xs);cursor:pointer;white-space:nowrap;transition:color .18s var(--ease),border-color .18s var(--ease);background:0 0;border-radius:999px;padding:7px 12px}.guide-btn:hover{color:var(--color-fg);border-color:var(--color-line-strong)}.chip{cursor:pointer;background:var(--color-panel);color:var(--color-fg-2);border:1px solid var(--color-line);font-size:var(--text-xs);box-shadow:inset 0 1px 0 var(--color-lit);border-radius:999px;align-items:center;gap:8px;padding:8px 15px;font-weight:500;display:inline-flex}.chip:hover{background:var(--color-panel-2);color:var(--color-fg)}.chip .ic{width:14px;height:14px;color:var(--color-signal)}.chip b{color:var(--color-fg);font-family:var(--font-mono);font-weight:500}.ic{flex:none;width:15px;height:15px}.view{flex-direction:column;align-items:center;width:100%;padding-top:24px;padding-bottom:72px;display:flex}.view--center{justify-content:center;min-height:calc(100dvh - 54px);padding-top:0;padding-bottom:48px}.view-head{text-align:left;padding:6px 2px 16px}.view-head h2{font-weight:600;font-size:var(--text-xl);letter-spacing:-.01em;margin:0}.view-head p{color:var(--color-fg-2);font-size:var(--text-base);max-width:620px;margin:8px 0 0;line-height:1.75}.session{flex-direction:column;width:min(980px,96vw);margin:0 auto;display:flex}.session-bar{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;padding:4px 2px 14px;display:flex}.session-left{align-items:flex-start;gap:8px;min-width:0}.session-left,.session-right{flex-direction:column;display:flex}.session-right{text-align:right;align-items:flex-end;gap:4px}.ex-title{cursor:pointer;border-radius:var(--radius-sm);font-weight:600;font-size:var(--text-lg);color:var(--color-fg);background:0 0;border:0;align-items:center;gap:6px;margin-left:-8px;padding:5px 8px;display:inline-flex}.ex-title:hover{background:var(--color-panel)}.ex-title .chev{width:16px;height:16px;color:var(--color-fg-3)}.exInfo,.keyInfo{color:var(--color-fg-2);font-size:var(--text-sm)}.keyInfo b{color:var(--color-fg);font-family:var(--font-mono);font-weight:500}.keyInfo .ki-note{font-size:var(--text-2xs);color:var(--color-fg-3)}.progress{font-size:var(--text-xs);color:var(--color-fg-3)}.progress b{color:var(--color-signal);font-family:var(--font-mono)}.console{background:var(--color-panel);border:1px solid var(--color-line-strong);border-radius:var(--radius-md);width:min(980px,96vw);box-shadow:var(--shadow),inset 0 1px 0 var(--color-lit);align-items:stretch;margin:2px auto 7px;display:flex;overflow:hidden}.console-score{border-right:1px solid var(--color-hair);flex-direction:column;justify-content:center;align-items:center;min-width:132px;padding:12px 26px;display:flex}.console-score .v{font-family:var(--font-mono);font-weight:500;font-size:var(--text-display);color:var(--color-signal);font-variant-numeric:tabular-nums;letter-spacing:-.02em;line-height:1}.console-score .l{font-size:var(--text-2xs);color:var(--color-fg-3);text-transform:uppercase;letter-spacing:.12em;margin-top:8px}.console-main{flex-direction:column;flex:1;justify-content:center;gap:7px;min-width:0;padding:12px 22px;display:flex}.readouts{gap:26px;display:flex}.readouts span{align-items:baseline;gap:6px;display:inline-flex}.readouts em{font-style:normal;font-family:var(--font-mono);font-weight:500;font-size:var(--text-lg);color:var(--color-fg);font-variant-numeric:tabular-nums}.readouts i{font-style:normal;font-size:var(--text-2xs);color:var(--color-fg-3);letter-spacing:.06em}.console .tuner-scale{padding:0 1px 1px}.console .tuner-track{height:30px}.console .vol{width:100%;margin:3px 0 0}.tuner-scale{font-size:var(--text-2xs);color:var(--color-fg-3);letter-spacing:.06em;justify-content:space-between;padding:0 2px 6px;display:flex}.tuner-scale .c{color:var(--color-tune);font-family:var(--font-mono)}.tuner-track{background:var(--color-inset);border:1px solid var(--color-line);border-radius:11px;height:36px;position:relative;overflow:hidden;box-shadow:inset 0 1px 3px #00000080}.tuner-zone{background:#86dd6638;position:absolute;inset:0 29.2%}@supports (color:color-mix(in lab,red,red)){.tuner-zone{background:color-mix(in srgb,var(--color-tune) 22%,transparent)}}.tuner-zone{border-left:1px solid #86dd664d}@supports (color:color-mix(in lab,red,red)){.tuner-zone{border-left:1px solid color-mix(in srgb,var(--color-tune) 30%,transparent)}}.tuner-zone{border-right:1px solid #86dd664d}@supports (color:color-mix(in lab,red,red)){.tuner-zone{border-right:1px solid color-mix(in srgb,var(--color-tune) 30%,transparent)}}@media (max-width:600px){.console{flex-direction:column}.console-score{border-right:none;border-bottom:1px solid var(--color-hair);flex-direction:row;align-items:baseline;gap:10px;min-width:0;padding:10px 16px}.console-score .v{font-size:var(--text-2xl)}.console-main{padding:12px 16px}.readouts{flex-wrap:wrap;gap:16px}}.tuner-tick{background:var(--color-hair);width:1px;height:56%;position:absolute;top:22%}.tuner-center{background:#e9eef173;width:2px;position:absolute;top:5px;bottom:5px;left:50%;transform:translate(-1px)}.tuner-needle{background:var(--color-fg-3);opacity:.45;width:3px;transition:left 70ms linear,background .12s var(--ease),opacity .2s;border-radius:2px;position:absolute;top:3px;bottom:3px;left:50%;transform:translate(-1.5px)}.vol{align-self:center;align-items:center;gap:9px;width:min(440px,92vw);margin:-4px auto 18px;display:flex}.vol-label{font-size:var(--text-2xs);color:var(--color-fg-3);letter-spacing:.06em}.vol-track{background:var(--color-inset);border:1px solid var(--color-line);border-radius:999px;flex:1;height:9px;position:relative;box-shadow:inset 0 1px 2px #0006}.vol-fill{background:linear-gradient(90deg,var(--color-tune),var(--color-signal));border-radius:999px;width:0;transition:width 60ms linear;position:absolute;top:0;bottom:0;left:0}.vol-target{background:var(--color-fg);border-radius:2px;width:3px;position:absolute;top:-3px;bottom:-3px;transform:translate(-1.5px);box-shadow:0 0 6px #e9eef199}.vol-target.hidden{display:none}.stage{border-radius:var(--radius-md);width:min(980px,96vw);box-shadow:var(--shadow);margin:4px auto;position:relative}.staff{background:var(--color-paper);border-radius:var(--radius-md) var(--radius-md) 0 0;border:1px solid var(--color-line-strong);border-bottom:none;min-height:168px;overflow:hidden}.staff.hidden{display:none}.roll{border-radius:0 0 var(--radius-md) var(--radius-md);background:#0d1114;border:1px solid var(--color-line-strong);border-top:none;overflow-x:hidden}.roll.review{cursor:grab;overflow-x:auto}.roll.review::-webkit-scrollbar{height:10px}.roll.review::-webkit-scrollbar-thumb{background:var(--color-line-strong);border-radius:5px}.stage.no-staff .roll{border-top:1px solid var(--color-line-strong);border-radius:var(--radius-md)}.stage canvas{background:#0d1114;width:100%;height:clamp(440px,62vh,720px);display:block}.review-hint{text-align:center;color:var(--color-fg-3);font-size:var(--text-xs);padding:8px 0 0}.review-hint.hidden{display:none}.legend{flex-wrap:wrap;justify-content:flex-end;align-self:center;gap:15px;width:min(980px,96vw);padding:9px 4px 0;display:flex}.legend span{color:var(--color-fg-3);font-size:var(--text-2xs);align-items:center;gap:6px;display:inline-flex}.legend i{border-radius:2px;width:14px;height:4px;display:inline-block}.btn{background:var(--color-signal);color:#062420;border-radius:var(--radius-sm);font-size:var(--text-sm);cursor:pointer;box-shadow:inset 0 1px 0 #dcfffa4d,var(--shadow-sm);transition:background .16s var(--ease),border-color .16s,transform 60ms;border:1px solid #0000;justify-content:center;align-items:center;gap:8px;padding:10px 18px;font-weight:600;line-height:1;text-decoration:none;display:inline-flex}.btn:hover{background:var(--color-signal-hi)}.btn:active{transform:translateY(1px)}.btn.secondary{background:var(--color-panel);color:var(--color-fg);border-color:var(--color-line-strong);box-shadow:inset 0 1px 0 var(--color-lit)}.btn.secondary:hover{background:var(--color-panel-2)}.btn.is-running{background:var(--color-panel);color:var(--color-fg);border-color:var(--color-line-strong);box-shadow:inset 0 1px 0 var(--color-lit)}.btn:disabled{opacity:.4;cursor:not-allowed}.controls{z-index:40;flex-wrap:wrap;justify-content:space-between;align-self:center;align-items:center;gap:16px;width:min(980px,96vw);margin:0 auto 12px;padding:2px 4px;display:flex;position:relative}.controls .play{min-width:136px}.controls-left{gap:10px}.controls-left,.controls-mid{align-items:center;display:flex}.controls-mid{flex:1;justify-content:center;min-width:0;padding:0 8px}.controls .result{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--color-fg-2);text-align:center;white-space:nowrap;text-overflow:ellipsis;max-width:100%;overflow:hidden}.controls-right{align-items:center;gap:12px;display:flex}.linkbtn{color:var(--color-fg-3);font-size:var(--text-xs);cursor:pointer;transition:color .18s var(--ease);white-space:nowrap;background:0 0;border:none;border-radius:8px;padding:6px}.linkbtn.on,.linkbtn:hover{color:var(--color-fg)}.tempo-field,.toggle{color:var(--color-fg-2);font-size:var(--text-sm);align-items:center;gap:8px;display:inline-flex}.toggle input[type=checkbox]{accent-color:var(--color-signal);width:15px;height:15px}input[type=range]{accent-color:var(--color-signal);vertical-align:middle;width:120px}.tempoVal{font-family:var(--font-mono);text-align:right;min-width:22px}.tempoVal,select.sel{color:var(--color-fg)}select.sel{appearance:none;background-color:var(--color-inset);border:1px solid var(--color-line-strong);border-radius:var(--radius-sm);font-size:var(--text-sm);box-shadow:inset 0 1px 0 var(--color-lit);cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2393a0a8' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-position:right 10px center;background-repeat:no-repeat;padding:8px 30px 8px 11px}select.sel:hover{border-color:var(--color-signal-soft)}select.sel:disabled{opacity:.45;cursor:not-allowed}.settings-wrap{display:inline-flex;position:relative}.popover{z-index:30;background:var(--color-panel-2);border:1px solid var(--color-line-strong);border-radius:var(--radius-md);box-shadow:var(--shadow),inset 0 1px 0 var(--color-lit);text-align:left;flex-direction:column;gap:12px;min-width:230px;padding:14px 16px;display:flex;position:absolute;top:calc(100% + 8px);right:0}.popover.hidden{display:none}.popover .pop-row{color:var(--color-fg-2);font-size:var(--text-sm);justify-content:space-between;align-items:center;gap:12px;display:flex}.popover hr{border:0;border-top:1px solid var(--color-hair);margin:2px 0}.choice{justify-content:center;align-items:center;gap:12px;padding:20px 12px 8px;display:flex}.choice .result{font-weight:600;font-size:var(--text-md)}.hint{color:var(--color-fg-3);font-size:var(--text-xs);text-align:center;align-self:center;max-width:600px;padding:16px 16px 48px;line-height:1.8}.hint strong{color:var(--color-fg-2);font-weight:600}.modal{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:50;background:#040608a8;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal.hidden{display:none}.modal-card{background:var(--color-panel-2);border:1px solid var(--color-line-strong);border-radius:var(--radius-lg);text-align:center;width:min(460px,92vw);box-shadow:var(--shadow),inset 0 1px 0 var(--color-lit);padding:26px 30px}.modal-card.wide{width:min(540px,94vw)}.modal-card h2{font-weight:600;font-size:var(--text-xl);letter-spacing:-.01em;margin:0 0 6px}.modal-actions{flex-wrap:wrap;justify-content:center;gap:10px;margin-top:16px;display:flex}.menu-card{text-align:left;max-height:86vh;overflow-y:auto}.menu-card h2{text-align:center}.menu-section{margin-top:18px}.menu-label{font-size:var(--text-xs);color:var(--color-fg-3);justify-content:space-between;margin-bottom:9px;display:flex}.menu-label span{opacity:.8;font-size:var(--text-2xs)}.menu-note{font-size:var(--text-sm);color:var(--color-fg-2);margin:-2px 0 12px;padding-left:14px;line-height:1.6}.menu-note b{color:var(--color-fg);font-weight:600}.menu-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.menu-item{cursor:pointer;background:var(--color-inset);border:1px solid var(--color-hair);border-radius:var(--radius-md);text-align:left;box-shadow:inset 0 1px 0 var(--color-lit);flex-direction:column;align-items:flex-start;gap:2px;padding:11px 14px;display:flex}.menu-item:hover{border-color:var(--color-signal-line);background:var(--color-panel-2)}.menu-item.current{border-color:var(--color-signal)}.menu-item .t{font-weight:600;font-size:var(--text-md);color:var(--color-fg)}.menu-item .d{font-size:var(--text-sm);color:var(--color-fg-2);margin-top:3px;line-height:1.6}.course-list{flex-direction:column;gap:9px;display:flex}.course-row{background:var(--color-inset);border:1px solid var(--color-hair);border-radius:var(--radius-md);box-shadow:inset 0 1px 0 var(--color-lit);align-items:center;gap:16px;padding:14px 16px;display:flex}.course-row.locked{opacity:.42}.course-row.cleared{border-color:#86dd664d}@supports (color:color-mix(in lab,red,red)){.course-row.cleared{border-color:color-mix(in srgb,var(--color-tune) 30%,transparent)}}.course-row.current{border-color:var(--color-signal)}.course-num{font-family:var(--font-mono);font-size:var(--text-xl);color:var(--color-signal);text-align:center;flex:none;width:30px;font-weight:500}.course-info{flex:1;min-width:0}.course-info .t{font-weight:600;font-size:var(--text-md);align-items:center;gap:8px;display:inline-flex}.course-info .t .adv-badge{font-size:var(--text-2xs);color:var(--color-drift);background:#f0b74824;font-weight:600}@supports (color:color-mix(in lab,red,red)){.course-info .t .adv-badge{background:color-mix(in srgb,var(--color-drift) 14%,transparent)}}.course-info .t .adv-badge{border:1px solid #f0b74866}@supports (color:color-mix(in lab,red,red)){.course-info .t .adv-badge{border:1px solid color-mix(in srgb,var(--color-drift) 40%,transparent)}}.course-info .t .adv-badge{white-space:nowrap;border-radius:999px;padding:2px 8px}.course-info .d{font-size:var(--text-sm);color:var(--color-fg-2);margin-top:3px;line-height:1.6}.course-status{font-size:var(--text-xs);color:var(--color-fg-2);font-family:var(--font-mono);text-align:right;flex:none;min-width:56px}.course-status .star{color:var(--color-tune)}.course-status .medal{font-family:var(--font-sans);margin-right:2px}.course-row button{font-size:var(--text-xs);flex:none;padding:7px 15px}#dgInstr{color:var(--color-fg-2);font-size:var(--text-base);min-height:46px;line-height:1.7}#dgInstr b{color:var(--color-signal)}#dgPitch{font-family:var(--font-mono);font-size:var(--text-display);color:var(--color-tune);margin:10px 0;font-weight:500}#dgBar{background:var(--color-inset);border-radius:999px;height:6px;margin:16px 0;overflow:hidden}#dgBarFill{background:var(--color-signal);width:0;height:100%;transition:width .1s linear}#dgResult{font-size:var(--text-base);min-height:24px;margin:8px 0;line-height:1.6}#dgResult b{color:var(--color-tune)}.view.ear-view{padding:24px 0 72px}.today-wrap{width:min(980px,96vw);margin:0 auto}.today-head{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:22px;display:flex}.today-title{font-size:var(--text-2xl);letter-spacing:-.01em;margin:0;font-weight:600}.today-sub{font-size:var(--text-base);color:var(--color-fg-2);margin:6px 0 0;line-height:1.75}.today-streak{background:var(--color-panel);border:1px solid var(--color-line);white-space:nowrap;box-shadow:inset 0 1px 0 var(--color-lit);border-radius:999px;align-items:baseline;gap:4px;padding:8px 14px;display:flex}.today-streak .fire{font-size:var(--text-md);position:relative;top:1px}.today-streak b{font-family:var(--font-mono);font-size:var(--text-lg);color:var(--color-fg);font-variant-numeric:tabular-nums;font-weight:500}.today-streak i{font-size:var(--text-2xs);color:var(--color-fg-3);font-style:normal}.today-steps{flex-direction:column;gap:12px;display:flex}.today-step{background:var(--color-panel);border:1px solid var(--color-line-strong);border-radius:var(--radius-lg);box-shadow:inset 0 1px 0 var(--color-lit);align-items:center;gap:16px;padding:18px 20px;display:flex}.today-step.done{opacity:.72}.ts-mark{width:36px;height:36px;font-family:var(--font-mono);font-weight:600;font-size:var(--text-md);background:var(--color-inset);border:1px solid var(--color-line-strong);color:var(--color-fg-2);border-radius:50%;flex:none;justify-content:center;align-items:center;display:flex}.today-step.done .ts-mark{background:var(--color-tune);border-color:var(--color-tune);color:#062420}.ts-body{text-align:left;flex:1;min-width:0}.ts-title{font-weight:600;font-size:var(--text-md)}.ts-desc{font-size:var(--text-sm);color:var(--color-fg-2);margin-top:3px;line-height:1.6}.today-step .btn{flex:none}.today-done{text-align:center;font-size:var(--text-base);color:var(--color-fg-2);background:var(--color-signal-soft);border:1px solid var(--color-line);border-radius:var(--radius-md);animation:ptPop .3s var(--ease) both;margin-top:18px;padding:14px}.today-done b{color:var(--color-tune);font-family:var(--font-mono)}.today-foot{text-align:center;margin-top:20px}.today-more{margin-top:30px}.kicker{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.12em;align-items:center;gap:8px;margin-bottom:8px;display:inline-flex}.kicker .tick{background:var(--color-signal);border-radius:1px;width:10px;height:2px}.kicker .kc{color:var(--color-signal);font-weight:600}.kicker .kl{color:var(--color-fg-2);letter-spacing:.08em}.menu-label,.today-more-label{letter-spacing:.06em;padding-left:14px;position:relative}.menu-label:before,.today-more-label:before{content:"";background:var(--color-signal);border-radius:1px;width:8px;height:2px;position:absolute;top:.5em;left:0}.today-more-label{font-size:var(--text-xs);color:var(--color-fg-3);margin-bottom:10px}.more-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.more-link{background:var(--color-panel);border:1px solid var(--color-line);border-radius:var(--radius-md);color:inherit;box-shadow:inset 0 1px 0 var(--color-lit);transition:border-color .16s var(--ease),background .16s var(--ease);justify-content:space-between;align-items:center;gap:10px;padding:13px 15px;text-decoration:none;display:flex}.more-link:hover{border-color:var(--color-line-strong);background:var(--color-panel-2)}.ml-title{font-weight:600;font-size:var(--text-md)}.ml-desc{font-size:var(--text-sm);color:var(--color-fg-2);margin-top:3px;line-height:1.6}.ml-chev{width:16px;height:16px;color:var(--color-fg-3);flex:none}.pro-card{text-align:left;cursor:pointer;background:var(--color-panel);border:1px solid var(--color-line-strong);border-left:2px solid var(--color-signal);border-radius:var(--radius-lg);width:100%;box-shadow:inset 0 1px 0 var(--color-lit);transition:border-color .16s var(--ease),transform 60ms;align-items:center;gap:16px;margin-top:14px;padding:18px 20px 18px 22px;display:flex}.pro-card:hover{border-color:var(--color-signal-line);border-left-color:var(--color-signal)}.chip:active,.guide-btn:active,.more-link:active,.nav-item:active,.pro-card:active{transform:translateY(1px)}.pro-card-main{flex:1;min-width:0}.pro-card-title{font-weight:600;font-size:var(--text-md);margin-top:8px}.pro-card-title b{color:var(--color-signal-hi)}.pro-card-desc{font-size:var(--text-sm);color:var(--color-fg-2);margin-top:5px;line-height:1.7}.pro-card-cta{font-weight:600;font-size:var(--text-sm);white-space:nowrap;flex:none}.pro-badge,.pro-card-cta{color:var(--color-signal-hi)}.pro-badge{font-size:var(--text-2xs);letter-spacing:.04em;background:var(--color-signal-soft);border-radius:999px;align-items:center;gap:6px;padding:4px 10px;font-weight:700;display:inline-flex}.pro-badge span{color:var(--color-fg-2);letter-spacing:0;font-weight:600}.pro-modal{text-align:left}.modal-card.pro-modal h2{margin:16px 0;line-height:1.4}.pro-modal .pro-badge{margin-bottom:6px}.pro-benefits{flex-direction:column;gap:9px;margin:0 0 16px;padding:0;list-style:none;display:flex}.pro-benefits li{font-size:var(--text-sm);color:var(--color-fg-2);padding-left:22px;line-height:1.5;position:relative}.pro-benefits li:before{content:"✓";color:var(--color-tune);font-weight:700;position:absolute;left:0}.pro-benefits b{color:var(--color-fg);font-weight:600}.pro-form{gap:8px;display:flex}.pro-form input{background:var(--color-inset);min-width:0;color:var(--color-fg);border:1px solid var(--color-line-strong);border-radius:var(--radius-sm);font-size:var(--text-base);flex:1;padding:11px 13px;box-shadow:inset 0 1px 2px #0006}.pro-form input:focus{border-color:var(--color-signal);box-shadow:0 0 0 3px var(--color-signal-soft);outline:none}.pro-form .btn{flex:none}.pro-thanks{font-size:var(--text-base);color:var(--color-fg-2);line-height:1.7}.pro-err{color:var(--color-miss)}.pro-err,.pro-note{font-size:var(--text-xs);margin:8px 0 0}.pro-note{color:var(--color-drift)}.pro-fine{font-size:var(--text-2xs);color:var(--color-fg-3);margin:10px 0 0}.modal-card.round-result{text-align:center;width:min(420px,92vw)}.round-result h2{font-size:var(--text-2xl);margin:8px 0 0}.round-result .rr-emoji{font-size:44px;line-height:1}.round-result .rr-sub{font-size:var(--text-sm);color:var(--color-fg-3);margin:6px 0 0}.round-result .rr-score{flex-direction:column;align-items:center;gap:4px;margin:20px 0 8px;display:flex}.round-result .rr-score b{font-family:var(--font-mono);font-weight:500;font-size:var(--text-display);color:var(--color-signal);font-variant-numeric:tabular-nums;line-height:1}.round-result .rr-score i{font-style:normal;font-size:var(--text-xs);color:var(--color-fg-3)}.round-result .rr-grade{font-size:var(--text-md);color:var(--color-fg)}.round-result .rr-best{color:var(--color-drift);font-size:var(--text-sm);margin-left:8px}.round-result .rr-course{border-top:1px solid var(--color-line);flex-direction:column;gap:8px;margin-top:16px;padding-top:14px;display:flex}.round-result .rr-rank{font-size:var(--text-md);color:var(--color-fg)}.round-result .rr-rank.dim{color:var(--color-fg-2);font-size:var(--text-sm)}.round-result .rr-rank .medal{font-size:var(--text-lg)}.round-result .rr-rank b{color:var(--color-drift);font-family:var(--font-mono)}.round-result .rr-clear{font-size:var(--text-sm);color:var(--color-tune);font-weight:600}.ear-wrap{width:min(720px,94vw);margin:0 auto}.ear-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:2px 2px 14px;display:flex}.ear-tabs{background:var(--color-inset);border:1px solid var(--color-line);border-radius:999px;gap:4px;padding:4px;display:inline-flex;position:relative}.ear-tab-ind{background:var(--color-signal);width:0;transition:transform .3s var(--ease),width .3s var(--ease);z-index:0;pointer-events:none;border-radius:999px;position:absolute;top:4px;bottom:4px;left:0;box-shadow:inset 0 1px #dcfffa4d}.ear-session{width:min(980px,96vw)}.ear-controls{width:100%}.ear-diff{color:var(--color-fg-2);align-items:center;gap:8px;display:inline-flex}.ear-diff,.ear-progress{font-size:var(--text-sm)}.ear-progress{color:var(--color-fg-3)}.ear-progress b{color:var(--color-signal);font-family:var(--font-mono)}.ear-panel{background:var(--color-panel);border:1px solid var(--color-line-strong);border-radius:var(--radius-lg);min-height:400px;box-shadow:inset 0 1px 0 var(--color-lit);text-align:center;flex-direction:column;justify-content:flex-start;align-items:stretch;padding:32px;display:flex}.ear-panel #earInstr{font-size:var(--text-md);margin:0 0 6px;line-height:1.6}.ear-panel .ear-answers{width:100%;max-width:500px;margin:20px auto 6px}.ear-actions{justify-content:center;padding:18px 0 0;display:flex}.tab{z-index:1;color:var(--color-fg-3);font-size:var(--text-sm);cursor:pointer;transition:color .2s var(--ease);background:0 0;border:0;border-radius:999px;padding:8px 18px;font-weight:500;position:relative}.tab.active{color:#062420}.tab:hover:not(.active){color:var(--color-fg)}.ear-settings{flex-wrap:wrap;justify-content:center;align-items:center;gap:16px;margin-bottom:12px;display:flex}.ear-settings.hidden{display:none}.ear-help-btn{border:1px solid var(--color-line-strong);background:var(--color-inset);width:22px;height:22px;color:var(--color-fg-3);font-size:var(--text-xs);cursor:pointer;border-radius:50%;margin-left:-8px;line-height:1}.ear-help-btn.on,.ear-help-btn:hover{color:var(--color-fg);border-color:var(--color-signal-soft)}.modal-card.ear-help-modal{text-align:left;width:min(480px,92vw);position:relative}.ear-help-modal h2{font-size:var(--text-lg);text-align:left;margin:0 0 14px}.ear-help-close{width:30px;height:30px;color:var(--color-fg-3);font-size:var(--text-xl);cursor:pointer;background:0 0;border:none;border-radius:8px;line-height:1;position:absolute;top:12px;right:12px}.ear-help-close:hover{color:var(--color-fg);background:var(--color-inset)}.ear-help-h{font-size:var(--text-xs);color:var(--color-signal);letter-spacing:.06em;margin-bottom:7px;font-weight:600}.ear-help-h:not(:first-child){border-top:1px solid var(--color-line);margin-top:16px;padding-top:16px}.ear-help p{font-size:var(--text-sm);color:var(--color-fg-2);margin:5px 0;line-height:1.85}.ear-help p.note{color:var(--color-fg-3)}.ear-help b{color:var(--color-fg);font-weight:600}.pop-head{font-size:var(--text-xs);color:var(--color-signal);letter-spacing:.04em;font-weight:600}.stepper{align-items:center;gap:4px;display:inline-flex}.stepper button{border:1px solid var(--color-line-strong);background:var(--color-inset);width:26px;height:26px;color:var(--color-fg);font-size:var(--text-md);cursor:pointer;box-shadow:inset 0 1px 0 var(--color-lit);transition:background .15s var(--ease),opacity .15s var(--ease);border-radius:8px;line-height:1}.stepper button:hover:not(:disabled){background:var(--color-panel)}.stepper button:disabled{opacity:.32;cursor:not-allowed}.stepper b{text-align:center;min-width:30px;font-family:var(--font-mono);color:var(--color-fg);font-weight:500}.pop-note{font-size:var(--text-xs);color:var(--color-fg-3);line-height:1.6}.pop-note b{color:var(--color-fg-2);font-weight:600}.chip-ext{color:var(--color-drift);font-size:var(--text-2xs);font-family:var(--font-mono);margin-left:2px}.modal-card.welcome-card{text-align:left;width:min(620px,94vw);padding:28px 30px;position:relative}.welcome-card h2{font-size:var(--text-xl);text-align:left;margin:0 0 4px}.welcome-lead{font-size:var(--text-sm);color:var(--color-fg-2);margin:0 0 18px;line-height:1.7}.welcome-lead b{color:var(--color-fg)}.welcome-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}.welcome-item{background:var(--color-panel);border:1px solid var(--color-line);border-radius:var(--radius-md);box-shadow:inset 0 1px 0 var(--color-lit);padding:14px 16px}.wi-h{font-size:var(--text-md);color:var(--color-fg);margin-bottom:6px;font-weight:600}.welcome-item p{font-size:var(--text-xs);color:var(--color-fg-2);margin:0;line-height:1.75}.welcome-item b{color:var(--color-fg);font-weight:600}.welcome-tip{font-size:var(--text-xs);color:var(--color-fg-3);margin:16px 0 0;line-height:1.7}.welcome-tip b{color:var(--color-fg-2)}.ear-settings label{font-size:var(--text-xs);color:var(--color-fg-3);align-items:center;gap:6px;display:inline-flex}.ear-settings select{background:var(--color-inset);color:var(--color-fg);border:1px solid var(--color-line-strong);border-radius:var(--radius-sm);font-size:var(--text-xs);padding:6px 9px}.ear-settings select:disabled{opacity:.45;cursor:not-allowed}#earInstr{color:var(--color-fg-2);font-size:var(--text-base);text-align:center}#earInstr b{color:var(--color-signal)}.ear-answers{grid-template-columns:repeat(4,1fr);gap:9px;margin:16px 0;display:grid}.ear-entry{justify-content:center;align-items:center;gap:8px;margin:10px 0 2px;display:flex}.ear-entry .lbl{font-size:var(--text-2xs);color:var(--color-fg-3)}.ear-entry .slot{background:var(--color-inset);border:1px solid var(--color-line);border-radius:var(--radius-sm);min-width:34px;height:30px;font-weight:600;font-size:var(--text-md);color:var(--color-fg);justify-content:center;align-items:center;padding:0 8px;display:inline-flex}.ear-entry .slot.filled{border-color:var(--color-signal-soft);color:var(--color-signal)}.ear-clear{color:var(--color-fg-3);font-size:var(--text-2xs);cursor:pointer;background:0 0;border:none;margin-left:6px;text-decoration:underline}.ear-clear:hover{color:var(--color-fg)}.ear-start{justify-content:center;margin:22px 0;display:flex}.ear-start .btn{font-size:var(--text-md);padding:12px 40px}.ear-answer{background:var(--color-inset);color:var(--color-fg);border:1px solid var(--color-line);border-radius:var(--radius-sm);font-size:var(--text-md);cursor:pointer;box-shadow:inset 0 1px 0 var(--color-lit);justify-content:center;align-items:center;gap:6px;padding:14px 4px;font-weight:600;display:flex}.ear-answer.with-sign{flex-direction:column;gap:7px;padding:10px 4px}.ear-answer .hand{background:var(--color-paper);border-radius:9px;justify-content:center;align-items:center;width:50px;height:50px;display:flex;overflow:hidden;box-shadow:inset 0 0 0 1px #0000000f}.ear-answer .hand img{object-fit:contain;width:46px;height:46px;display:block}.ear-answer:hover:not(:disabled){background:var(--color-panel-2);border-color:var(--color-signal-line)}.ear-answer.correct{background:var(--color-tune);color:#0c1808;border-color:var(--color-tune)}.ear-answer.wrong{background:var(--color-miss);color:#1c0a08;border-color:var(--color-miss)}.ear-answer.correct .hand,.ear-answer.wrong .hand{color:inherit}.ear-answer:disabled{cursor:default;opacity:.92}#earFeedback{min-height:26px;font-size:var(--text-md);text-align:center;font-weight:600}#earFeedback.ear-ok{color:var(--color-tune)}#earFeedback.ear-ng{color:var(--color-miss)}.ear-song{font-size:var(--text-xs);margin-top:6px;font-weight:500;display:block}#earScore,.ear-song{color:var(--color-fg-3)}#earScore{font-size:var(--text-sm);text-align:right;margin:0}#earScore b{color:var(--color-fg);font-family:var(--font-mono)}.ear-result{text-align:center}.ear-result-head{font-size:var(--text-xs);letter-spacing:.1em;color:var(--color-fg-3);text-transform:uppercase}.ear-result-main{font-size:var(--text-lg);margin:6px 0 4px}.ear-result-main b{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--color-fg);font-weight:500}.ear-result .ear-sub{font-size:var(--text-xs);color:var(--color-fg-3);text-align:left;margin:18px 0 8px}.ear-bars{flex-direction:column;gap:7px;display:flex}.ear-bar-row{grid-template-columns:62px 1fr 70px;align-items:center;gap:10px;display:grid}.ear-bar-row .lbl{font-size:var(--text-sm);text-align:left;color:var(--color-fg-2)}.ear-bar-row .bar{background:var(--color-inset);border-radius:999px;height:8px;overflow:hidden}.ear-bar-row .fill{background:var(--color-signal);border-radius:999px;height:100%;transition:width .3s;display:block}.ear-bar-row .fill.weak{background:var(--color-miss)}.ear-bar-row .fill.good{background:var(--color-tune)}.ear-bar-row .num{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--color-fg-2);text-align:right}.ear-bar-row .num em{font-style:normal}.ear-bar-row .num .ct,.ear-bar-row .num em{color:var(--color-fg-3);font-size:var(--text-2xs)}.ear-bar-row .num .ct{margin-left:4px}.ear-graph{width:100%;height:auto;display:block}.ear-graph .g{stroke:var(--color-line);stroke-width:1px}.ear-graph .gl{fill:var(--color-fg-3);font-size:var(--text-2xs);font-family:var(--font-mono)}.ear-graph .ln{fill:none;stroke:var(--color-signal);stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.ear-graph circle{fill:var(--color-signal)}.ear-graph-empty{color:var(--color-fg-3);font-size:var(--text-xs);padding:22px 0}.ear-reset{color:var(--color-fg-3);font-size:var(--text-2xs);cursor:pointer;background:0 0;border:none;margin-top:16px;text-decoration:underline}.ear-reset:hover{color:var(--color-miss)}.view.hist{align-items:stretch;width:min(980px,96vw)}.hist-grid{flex-direction:column;gap:18px;margin:8px 0 48px;display:flex}.hist-tiles{grid-template-columns:repeat(4,1fr);gap:12px;display:grid}.hist-tile{background:var(--color-panel);border:1px solid var(--color-line);border-radius:var(--radius-md);text-align:center;box-shadow:inset 0 1px 0 var(--color-lit);padding:16px 12px}.hist-tile .lbl{font-size:var(--text-xs);color:var(--color-fg-3)}.hist-tile .val{font-family:var(--font-mono);font-size:var(--text-2xl);color:var(--color-fg);margin-top:4px;line-height:1.1}.hist-tile .val .unit{font-size:var(--text-sm);color:var(--color-fg-3);margin-left:3px}.hist-card{background:var(--color-panel);border:1px solid var(--color-line-strong);border-radius:var(--radius-lg);box-shadow:inset 0 1px 0 var(--color-lit);padding:18px 20px}.hist-card h3{font-size:var(--text-base);justify-content:space-between;align-items:baseline;margin:0 0 14px;display:flex}.hist-card h3 span{font-size:var(--text-2xs);color:var(--color-fg-3);font-weight:500}.hist-line{width:100%;height:auto;display:block}.hist-line .g{stroke:var(--color-line);stroke-width:1px}.hist-line .gl{fill:var(--color-fg-3);font-size:var(--text-2xs);font-family:var(--font-mono)}.hist-line .ln{fill:none;stroke:var(--color-signal);stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.hist-line circle{fill:var(--color-signal)}.hist-chart-empty{color:var(--color-fg-3);font-size:var(--text-xs);text-align:center;padding:22px 0}.hist-heat-wrap{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:28px;display:flex}.hist-cal{flex-direction:column;gap:5px;min-width:0;display:flex}.hist-cal-months{gap:4px;padding-left:22px;display:flex}.hist-cal-months span{width:14px;font-size:var(--text-2xs);color:var(--color-fg-3);white-space:nowrap;flex:none;line-height:1}.hist-cal-body{gap:6px;display:flex}.hist-cal-wd{flex-direction:column;gap:4px;width:16px;display:flex}.hist-cal-wd span{height:14px;line-height:14px;font-size:var(--text-2xs);color:var(--color-fg-3);text-align:right}.hist-heat,.hist-heat-col{gap:4px;display:flex}.hist-heat-col{flex-direction:column}.hist-cell{background:#b8d6e00f;border-radius:3px;width:14px;height:14px;display:inline-block}.hist-cell.lvl1{background:#38d6c447}@supports (color:color-mix(in lab,red,red)){.hist-cell.lvl1{background:color-mix(in srgb,var(--color-signal) 28%,transparent)}}.hist-cell.lvl2{background:#38d6c494}@supports (color:color-mix(in lab,red,red)){.hist-cell.lvl2{background:color-mix(in srgb,var(--color-signal) 58%,transparent)}}.hist-cell.lvl3{background:var(--color-signal)}.hist-cell.future{background:0 0}.hist-heat-side{align-items:flex-start;gap:16px}.hist-heat-side,.hist-heat-stat{flex-direction:column;display:flex}.hist-heat-stat b{font-family:var(--font-mono);font-weight:500;font-size:var(--text-2xl);color:var(--color-fg);font-variant-numeric:tabular-nums;line-height:1}.hist-heat-stat i{font-style:normal;font-size:var(--text-2xs);color:var(--color-fg-3);flex-direction:column;gap:1px;margin-top:5px;display:flex}.hist-heat-stat i span{color:var(--color-fg-3);opacity:.7}.hist-heat-legend{font-size:var(--text-2xs);color:var(--color-fg-3);align-items:center;gap:4px;display:flex}.hist-heat-legend .hist-cell{width:11px;height:11px}.hist-course{flex-direction:column;gap:8px;display:flex}.hist-course-row{grid-template-columns:26px 92px 1fr 56px;align-items:center;gap:10px;display:grid}.hist-course-row .n{background:var(--color-inset);border:1px solid var(--color-line);width:24px;height:24px;font-size:var(--text-xs);font-family:var(--font-mono);color:var(--color-fg-3);border-radius:50%;justify-content:center;align-items:center;display:flex}.hist-course-row.cleared .n{background:var(--color-tune);color:#0c1808;border-color:var(--color-tune)}.hist-course-row .lbl{font-size:var(--text-sm);color:var(--color-fg-2);text-align:left}.hist-course-row .bar{background:var(--color-inset);border-radius:999px;height:8px;overflow:hidden}.hist-course-row .fill{background:var(--color-signal);border-radius:999px;height:100%;display:block}.hist-course-row.cleared .fill{background:var(--color-tune)}.hist-course-row .best{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-fg-3);text-align:right}.hist-ear{grid-template-columns:repeat(3,1fr);gap:12px;display:grid}.hist-ear-card{background:var(--color-inset);border:1px solid var(--color-line);border-radius:var(--radius-md);padding:12px 12px 8px}.hist-ear-card .hd{justify-content:space-between;align-items:baseline;display:flex}.hist-ear-card .hd .lbl{font-size:var(--text-xs);color:var(--color-fg-2);align-items:center;gap:6px;display:inline-flex}.hist-ear-card .hd .lbl .diff{font-style:normal;font-size:var(--text-2xs);color:var(--color-fg-3);border:1px solid var(--color-line);border-radius:999px;padding:1px 7px}.hist-ear-card .hd .cnt{font-size:var(--text-2xs);color:var(--color-fg-3);font-family:var(--font-mono);flex:none}.hist-ear-empty{font-size:var(--text-sm);color:var(--color-fg-3);grid-column:1/-1;padding:8px 2px;line-height:1.7}.hist-ear-card .big{font-family:var(--font-mono);font-size:var(--text-xl);color:var(--color-signal);margin:6px 0 8px}.hist-ear-card .big em{font-style:normal;margin-left:6px}.hist-ear-card .big em,.hist-ear-card .sub{font-size:var(--text-2xs);color:var(--color-fg-3)}.hist-ear-card .sub{margin:-4px 0 8px}.hist-empty{text-align:center;color:var(--color-fg-2);flex-direction:column;gap:18px;padding:40px 0;display:flex}.hist-empty .btn{margin:0 5px}@media (max-width:560px){.hist-tiles{grid-template-columns:repeat(2,1fr)}.hist-ear{grid-template-columns:1fr}}.ear-sing{flex-direction:column;align-items:center;gap:14px;margin:16px 0;display:flex}.sing-meter{width:min(360px,82vw)}.sing-meter .track{background:var(--color-inset);border:1px solid var(--color-line);border-radius:10px;height:32px;position:relative;box-shadow:inset 0 1px 2px #00000080}.sing-meter .zone{background:#86dd6629;position:absolute;inset:0 20%}@supports (color:color-mix(in lab,red,red)){.sing-meter .zone{background:color-mix(in srgb,var(--color-tune) 16%,transparent)}}.sing-meter .center{background:#e9eef173;width:2px;position:absolute;top:5px;bottom:5px;left:50%;transform:translate(-1px)}.sing-meter .needle{background:var(--color-fg-3);opacity:.5;border-radius:2px;width:3px;transition:left 70ms linear,background .12s;position:absolute;top:3px;bottom:3px;left:50%;transform:translate(-1.5px)}.sing-live{font-family:var(--font-mono);font-size:var(--text-xl);color:var(--color-fg-2);min-height:30px}.sing-live.listening{color:var(--color-tune)}.sing-btn{font-size:var(--text-md);background:var(--color-signal);color:#062420;border-radius:var(--radius-sm);cursor:pointer;border:0;padding:13px 28px;font-weight:600}.sing-phrase{flex-wrap:wrap;justify-content:center;gap:8px;margin-bottom:4px;display:flex}.ph-note{border:1px solid var(--color-line-strong);border-radius:var(--radius-sm);background:var(--color-inset);min-width:40px;color:var(--color-fg-3);font-weight:600;font-size:var(--text-md);box-shadow:inset 0 1px 0 var(--color-lit);transition:color .18s var(--ease),background .18s var(--ease),border-color .18s var(--ease);padding:7px 10px}.ph-note.hit{color:#062420;background:var(--color-tune);border-color:var(--color-tune)}.ph-note.miss{color:var(--color-miss);border-color:#f0685a80}@supports (color:color-mix(in lab,red,red)){.ph-note.miss{border-color:color-mix(in srgb,var(--color-miss) 50%,transparent)}}.ph-ok{color:var(--color-tune)}.ph-bad,.ph-ok{font-weight:700}.ph-bad{color:var(--color-miss)}@keyframes ptFadeUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes ptFade{0%{opacity:0}to{opacity:1}}@keyframes ptPop{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:none}}.console,.ear-head,.ear-panel,.hist-card,.hist-tiles,.session-bar,.stage,.today-head,.today-step,.view-head{animation:ptFadeUp .42s var(--ease) both}.today-step:nth-child(2){animation-delay:60ms}.controls,.ear-actions,.ear-settings,.legend{animation:ptFade .5s var(--ease) both}.modal{animation:ptFade .16s var(--ease) both}.modal-card{animation:ptPop .22s var(--ease) both}.ear-result{animation:ptFadeUp .32s var(--ease) both}#earFeedback.ear-ng,#earFeedback.ear-ok{animation:ptPop .2s var(--ease) both}.ear-answers .ear-answer{animation:ptPop .28s var(--ease) both;transition:background .16s var(--ease),border-color .16s var(--ease),transform 80ms var(--ease)}.ear-answers .ear-answer:active:not(:disabled){transform:translateY(1px)}.ear-answers .ear-answer:first-child{animation-delay:20ms}.ear-answers .ear-answer:nth-child(2){animation-delay:50ms}.ear-answers .ear-answer:nth-child(3){animation-delay:80ms}.ear-answers .ear-answer:nth-child(4){animation-delay:.11s}.ear-answers .ear-answer:nth-child(5){animation-delay:.14s}.ear-answers .ear-answer:nth-child(6){animation-delay:.17s}.ear-answers .ear-answer:nth-child(7){animation-delay:.2s}.ear-answers .ear-answer:nth-child(n+8){animation-delay:.22s}.hist-card:nth-child(2){animation-delay:50ms}.hist-card:nth-child(3){animation-delay:.1s}.hist-card:nth-child(4){animation-delay:.15s}.hist-card:nth-child(5){animation-delay:.2s}.course-row{animation:ptFadeUp .3s var(--ease) both}.course-row:nth-child(2){animation-delay:40ms}.course-row:nth-child(3){animation-delay:80ms}.course-row:nth-child(4){animation-delay:.12s}.course-row:nth-child(5){animation-delay:.16s}.course-row:nth-child(6){animation-delay:.2s}.course-row:nth-child(n+7){animation-delay:.24s}@media (prefers-reduced-motion:reduce){*,:after,:before{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-delay:0s!important}}@media (max-width:680px){.appbar{gap:10px;padding:10px 14px}.brand{font-size:var(--text-md)}.nav{gap:0}.nav-item{padding:7px 10px}.chip,.nav-item{font-size:var(--text-xs)}.chip{padding:7px 11px}.appbar-right{gap:8px}.guide-btn{font-size:var(--text-xs);padding:6px 9px}.today-wrap{width:94vw}.today-title{font-size:var(--text-xl)}.today-step{gap:12px;padding:14px}.today-step .btn{padding:9px 14px}.ts-title{font-size:var(--text-base)}.more-grid{grid-template-columns:1fr}.pro-card{flex-direction:column;align-items:flex-start;gap:10px}.welcome-grid{grid-template-columns:1fr}.welcome-card h2{font-size:var(--text-lg)}.view{padding-top:16px}.session-bar{gap:8px;padding:2px 2px 10px}.session-right{text-align:left;align-items:flex-start}.keyInfo,.progress{font-size:var(--text-xs)}.ex-title{font-size:var(--text-md)}.controls{flex-direction:column;align-items:center;gap:12px;padding:12px 2px 6px}.controls-left,.controls-mid,.controls-right{justify-content:center}.controls-mid{width:100%}.tempo-field{white-space:nowrap}.controls-right{gap:10px}.hint{font-size:var(--text-xs);padding:14px 12px 36px}.console-score{min-width:0}.ear-wrap{width:94vw}.ear-panel{min-height:340px;padding:22px 16px}.ear-tabs{padding:3px}.tab{font-size:var(--text-xs);padding:7px 11px}.ear-answers{gap:7px}.ear-panel .ear-answers{margin:16px auto 4px}.ear-panel #earInstr{font-size:var(--text-md)}.modal-card{padding:22px 18px}.ear-help-modal h2{font-size:var(--text-md)}.popover{min-width:min(230px,84vw);max-width:90vw}.menu-card{padding:22px 18px}}@media (max-width:440px){.brand{font-size:var(--text-base)}.nav-item{font-size:var(--text-xs);padding:6px 8px}.chip span{display:none}.chip{padding:8px}.ear-head,.ear-tabs{justify-content:center}.ear-tabs{width:100%}.ear-progress{text-align:center;width:100%}.hist-tiles{grid-template-columns:repeat(2,1fr)}.hist-course-row{grid-template-columns:24px 1fr 52px}.hist-course-row .bar{display:none}}.voice-wrap{width:min(980px,96vw);animation:ptFadeUp .42s var(--ease) both;margin:4px auto 0}.voice-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;padding:4px 2px 16px;display:flex}.voice-title h2{font-weight:600;font-size:var(--text-xl);margin:0}.voice-title p{color:var(--color-fg-3);font-size:var(--text-sm);margin:8px 0 0;line-height:1.6}.voice-title b{color:var(--color-fg-2)}.voice-stage{background:var(--color-panel);border:1px solid var(--color-line-strong);border-radius:var(--radius-lg);box-shadow:var(--shadow),inset 0 1px 0 var(--color-lit);padding:20px}.voice-spec{position:relative}.voice-spec canvas{background:var(--color-inset);border:1px solid var(--color-line);border-radius:var(--radius-md);width:100%;height:clamp(220px,38vh,360px);display:block}.voice-spec-axis{font-size:var(--text-2xs);color:var(--color-fg-3);letter-spacing:.04em;justify-content:space-between;padding:6px 4px 0;display:flex}.voice-spec-axis .ring{color:var(--color-tune)}.voice-ring{margin-top:18px}.ring-head{justify-content:space-between;align-items:baseline;display:flex}.ring-head span{font-size:var(--text-xs);color:var(--color-fg-3);letter-spacing:.04em}.ring-now{font-family:var(--font-mono);font-size:var(--text-display);color:var(--color-signal);font-variant-numeric:tabular-nums;line-height:1}.ring-bar{background:var(--color-inset);border:1px solid var(--color-line);border-radius:999px;height:14px;margin:8px 0 6px;position:relative;overflow:hidden}.ring-fill{background:linear-gradient(90deg,var(--color-signal),var(--color-tune));border-radius:999px;width:0;transition:width 80ms linear;top:0;bottom:0}.ring-fill,.ring-peak{position:absolute;left:0}.ring-peak{background:var(--color-fg);width:3px;transition:left .2s var(--ease);border-radius:2px;top:-3px;bottom:-3px;transform:translate(-1.5px);box-shadow:0 0 6px #e9eef199}.ring-foot{font-size:var(--text-xs);color:var(--color-fg-3);text-align:right}.ring-foot b{color:var(--color-fg);font-family:var(--font-mono)}.voice-error{color:var(--color-miss);font-size:var(--text-sm);text-align:center;margin:14px 0 0}.voice-tips{background:var(--color-panel-2);border:1px solid var(--color-line);border-radius:var(--radius-md);margin-top:18px;padding:16px 18px}.voice-tips p{font-size:var(--text-sm);color:var(--color-fg-2);margin:5px 0;line-height:1.8}.voice-tips b{color:var(--color-fg);font-weight:600}@media (max-width:680px){.voice-wrap{width:94vw}.voice-stage{padding:14px}.voice-head{padding-bottom:12px}.voice-head .play{width:100%}}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}