:root{color-scheme:light;font-family:Hiragino Maru Gothic ProN,Yu Gothic,system-ui,sans-serif;background:#f4f5f8;color:#1d2433;--primary:#5338c9;--primary-dark:#3d249f;--border:#d7dbe4;--muted:#667085;--surface:#ffffff;--danger:#b42318}*{box-sizing:border-box}html{background:#f4f5f8}body{margin:0;min-width:320px}button,input,select{font:inherit}button,label.file-button{min-height:56px}button{cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible{outline:4px solid #b4a7ff;outline-offset:2px}button:disabled{cursor:not-allowed;opacity:.5}.app-shell{min-height:100dvh;padding:24px clamp(18px,4vw,48px) 48px}.centered{display:grid;place-items:center}.topbar{display:grid;grid-template-columns:56px 1fr 56px;align-items:center;max-width:1180px;margin:0 auto 24px}.topbar h1{margin:0;font-size:clamp(1.35rem,3vw,2rem);text-align:center}.icon-button{border:1px solid var(--border);border-radius:16px;background:var(--surface);font-size:1.5rem}.topbar-spacer{width:56px}.notice{display:flex;align-items:center;justify-content:space-between;gap:16px;max-width:880px;margin:0 auto 20px;padding:12px 16px;border:2px solid #f0b429;border-radius:14px;background:#fffaeb;font-weight:700}.notice button{min-width:44px;min-height:44px;border:0;background:transparent;font-size:1.4rem}.update-notice .secondary{border:2px solid var(--primary);padding:8px 16px;background:#fff;font-size:1rem}.microphone-help{position:relative;max-width:680px;width:100%;margin:0 auto 24px;border:2px solid #f0b429;border-radius:20px;padding:22px clamp(18px,4vw,30px);background:#fffaeb;box-shadow:0 8px 24px rgb(26 34 51/10%)}.microphone-help h2{margin:0 44px 12px 0;color:#633c01;font-size:clamp(1.2rem,3vw,1.5rem)}.microphone-help ol{margin:0 0 18px;padding-left:1.5em;line-height:1.7}.microphone-help li+li{margin-top:8px}.microphone-help .primary{width:100%}.microphone-help-close{position:absolute;top:8px;right:10px;min-width:44px;min-height:44px;border:0;background:transparent;font-size:1.4rem}.file-button,.primary,.secondary{display:inline-flex;min-height:56px;align-items:center;justify-content:center;border-radius:16px;padding:12px 24px;font-weight:800;text-decoration:none}.primary{border:2px solid var(--primary);background:var(--primary);color:#fff;box-shadow:0 5px 0 var(--primary-dark)}.primary:active{transform:translateY(3px);box-shadow:0 2px 0 var(--primary-dark)}.file-button,.secondary{border:2px solid var(--primary);background:#fff;color:var(--primary-dark)}.primary.danger{border-color:var(--danger);background:var(--danger);box-shadow:0 5px 0 #7a271a}.primary.compact{min-width:190px}.text-button{border:0;background:transparent;color:var(--primary-dark);font-weight:800;text-decoration:underline}.home-screen{display:flex;flex-direction:column;background:linear-gradient(180deg,#fff,#f4f5f8 75%)}.hero{display:flex;max-width:760px;width:100%;margin:0 auto;flex:1 1;flex-direction:column;align-items:center;justify-content:center;text-align:center}.brand-mark{display:block;width:clamp(84px,14vw,112px);height:auto;border-radius:50%;box-shadow:0 10px 24px rgb(83 56 201/22%)}.hero h1{margin:12px 0 0;color:#2e2365;font-size:clamp(3.4rem,11vw,6rem);letter-spacing:.08em;line-height:1}.tagline{margin:14px 0 32px;color:#3f4758;font-size:clamp(1.1rem,3vw,1.45rem);font-weight:700}.record-button{display:flex;min-width:min(100%,340px);align-items:center;justify-content:center;gap:14px;border:3px solid #2d1c8c;border-radius:22px;padding:18px 28px;background:var(--primary);box-shadow:0 7px 0 #2d1c8c;color:#fff;font-size:1.35rem;font-weight:900}.record-button span{color:#ffcfcc;font-size:1.8rem}.privacy{margin:26px 0;color:#465467;font-size:.95rem}.home-nav{display:flex;max-width:760px;width:100%;margin:0 auto;justify-content:center;gap:12px}.home-nav button{flex:1 1;border:1px solid var(--border);border-radius:16px;background:#fff;color:#384250;font-weight:800}.home-nav span{display:inline-grid;min-width:28px;height:28px;place-items:center;margin-left:8px;border-radius:99px;background:#ece9ff;color:var(--primary-dark)}.processing,.recording-panel{display:flex;max-width:560px;width:100%;flex-direction:column;align-items:center;gap:20px;text-align:center}.recording-panel{align-items:stretch}.recording-panel>.meter{align-self:center}.eyebrow{margin:0;color:var(--danger);font-weight:900;letter-spacing:.08em}.timer{min-height:1em;font-size:clamp(3rem,12vw,6rem);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:900;line-height:1}.timer-lead-in{color:var(--primary)}.timer-limit{color:var(--muted);font-size:.4em}.meter{overflow:hidden;width:min(100%,440px);height:34px;border:3px solid #26324a;border-radius:99px;background:#e7e9ee}.meter span{display:block;height:100%;border-radius:99px;background:repeating-linear-gradient(90deg,#2e9b62 0 16px,#fff 16px 20px);transition:width .1s linear}.spinner{width:84px;height:84px;border:9px solid #ddd8ff;border-top:9px solid var(--primary);border-radius:50%;animation:spin 1s linear infinite}.processing progress{width:min(100%,460px);height:28px;accent-color:var(--primary)}@keyframes spin{to{transform:rotate(1turn)}}@media (prefers-reduced-motion:reduce){.spinner{animation:none;border-color:var(--primary)}}.card{border:1px solid var(--border);border-radius:24px;background:#fff;box-shadow:0 12px 32px rgb(26 34 51/8%)}.centered-card{display:flex;max-width:620px;margin:10vh auto 0;padding:clamp(24px,6vw,54px);flex-direction:column;align-items:stretch;gap:18px;text-align:center}.centered-card>.success-mark{align-self:center}.centered-card>h2{margin:0}.centered-card>.audio-preview{width:100%;margin-bottom:0}.success-mark{display:grid;width:72px;height:72px;place-items:center;border-radius:50%;background:#dff8e9;color:#087443;font-size:2.5rem;font-weight:900}.audio-preview{width:min(100%,420px);margin-bottom:10px}.score-screen{padding-inline:clamp(10px,3vw,36px);--score-width:1180px}.score-screen>*{max-width:var(--score-width);margin-inline:auto}.score-frame,.score-heading{text-align:center}.score-frame{max-width:1180px;margin:0 auto;border:1px solid var(--border);border-radius:18px;padding:12px;background:#fff;box-shadow:0 5px 24px rgb(26 34 51/7%)}.score-frame .score-canvas{max-width:none;margin:0;border:0;border-radius:0;padding:0;background:transparent;box-shadow:none}.score-frame .score-name{margin-bottom:6px}.score-name{width:min(100%,600px);border:0;border-bottom:2px dashed var(--border);border-radius:0;padding:4px 34px 4px 12px;background:transparent url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23667085'%3E%3Cpath d='M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04a1 1 0 0 0 0-1.41l-2.34-2.34a1 1 0 0 0-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z'/%3E%3C/svg%3E") no-repeat right 8px center /20px;color:#1f2937;font-size:clamp(1.5rem,4vw,2.3rem);font-weight:900;text-align:center}.score-name:hover{border-bottom-color:var(--primary)}.score-name:focus{border-bottom-style:solid;border-bottom-color:var(--primary)}.completion-celebration{display:grid;margin-bottom:8px;place-items:center;text-align:center}.completion-celebration h2{margin:2px 0 8px;color:#2e2365;font-size:clamp(1.2rem,3vw,1.7rem)}.completion-sparkles{color:#d18a00;font-size:clamp(1.5rem,4vw,2.2rem);animation:celebration-pop .6s ease-out both}@keyframes celebration-pop{0%{opacity:0;transform:translateY(8px) scale(.8)}to{opacity:1;transform:translateY(0) scale(1)}}@media (prefers-reduced-motion:reduce){.completion-sparkles{animation:none}}.child-score-actions{display:grid;margin:14px auto 18px;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.experience-button{display:grid;min-height:92px;align-items:center;border:3px solid var(--primary-dark);border-radius:22px;padding:14px 20px;grid-template-columns:auto 1fr;gap:14px;background:#fff;color:var(--primary-dark);text-align:left;box-shadow:0 5px 0 #d6d0f7}.experience-button>span:first-child{font-size:2rem;text-align:center}.experience-button small,.experience-button strong{display:block}.experience-button strong{font-size:clamp(1.2rem,3vw,1.55rem)}.experience-button small{margin-top:3px;color:var(--muted);font-weight:700}.experience-button.listen{background:var(--primary);color:#fff;box-shadow:0 6px 0 var(--primary-dark)}.experience-button.listen small{color:#f0edff}.experience-button:active{transform:translateY(3px);box-shadow:0 2px 0 var(--primary-dark)}.child-range-warning{display:grid;margin:0 auto 18px;border:2px solid #f0b429;border-radius:14px;padding:10px 14px;grid-template-columns:1fr auto;align-items:center;gap:12px;background:#fffaeb;color:#7a4b00;font-weight:800;text-align:left}.child-range-warning p{margin:0}.child-range-warning.eased{border-color:#56a86b;background:#f0faf2;color:#1c6b34}.range-fix-button{min-height:52px;border:2px solid;border-radius:14px;padding:10px 18px;background:#fff;color:inherit;font-weight:800;white-space:nowrap}.score-bottom-actions{display:grid;width:100%;max-width:940px;margin:20px auto 0;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.adult-tools-button{color:var(--primary-dark);text-decoration:underline;grid-column:1/-1;justify-self:center}.adult-tools-button,.history-name{min-height:48px;border:0;background:transparent;font-weight:800}.history-name{width:100%;border-top:1px solid var(--border);border-bottom:2px dashed var(--border);padding:8px 12px;color:#1f2937;font-size:1.15rem}.history-name:hover{border-bottom-color:var(--primary)}.history-name:focus{border-bottom-style:solid;border-bottom-color:var(--primary)}.score-controls{display:grid;margin-bottom:16px;gap:12px}.mode-switch{display:grid;grid-template-columns:repeat(3,1fr);border:2px solid var(--primary);border-radius:16px;padding:4px;gap:4px;background:#fff}.mode-switch button{min-height:48px;border:0;border-radius:12px;padding:8px 12px;background:transparent;color:var(--primary-dark);font-weight:800}.mode-switch button[aria-pressed=true]{background:var(--primary);color:#fff}.score-actions{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);align-items:stretch;gap:12px}.score-actions>*{min-width:0;justify-content:center}.score-actions .primary.compact{min-width:0;padding-inline:12px}.zoom-stepper{display:inline-flex;min-height:56px;align-items:center;overflow:hidden;border:1px solid var(--border);border-radius:14px;background:#fff}.zoom-stepper button{min-width:48px;min-height:54px;border:0;background:transparent;color:var(--primary-dark);font-size:1.3rem;font-weight:900}.zoom-stepper span{flex:1 1;color:var(--muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:800;text-align:center}.info-button{display:inline-flex;min-height:56px;align-items:center;gap:8px;border:1px solid var(--border);border-radius:14px;padding:8px 16px;background:#fff;color:var(--primary-dark);font-weight:800}.info-button.warn{border-color:#f0b429;background:#fffaeb;color:#8a5300}.playback-extras{display:flex;align-items:center;gap:12px;flex-wrap:wrap;color:var(--muted)}.comparison-balance{display:inline-flex;min-height:56px;align-items:center;gap:10px;border:1px solid var(--border);border-radius:14px;padding:8px 16px;background:#fff;font-weight:800}.comparison-balance input[type=range]{width:min(46vw,220px);accent-color:var(--primary)}.toggle{display:inline-flex;min-height:56px;align-items:center;gap:10px;border:1px solid var(--border);border-radius:14px;padding:8px 16px;background:#fff;font-weight:800}.check-row input,.toggle input{width:24px;height:24px;accent-color:var(--primary)}.score-canvas{overflow-x:auto;overflow-y:hidden;overflow-anchor:none;overscroll-behavior-inline:contain;min-height:260px;max-width:1180px;margin:0 auto;border:1px solid var(--border);border-radius:18px;padding:12px;background:#fff;box-shadow:0 5px 24px rgb(26 34 51/7%)}.score-canvas svg{min-width:calc(720px * var(--score-zoom, 1))}.bottom-actions,.sticky-actions{display:flex;max-width:940px;margin:20px auto 0;justify-content:center;gap:12px;flex-wrap:wrap}.score-screen .bottom-actions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));align-items:stretch}.score-screen .bottom-actions>*{min-width:0;padding-inline:12px}.score-dialog,.score-screen>.score-dialog{width:min(94vw,780px);max-width:min(94vw,780px);border:1px solid var(--border);border-radius:24px;padding:0;background:#fff;box-shadow:0 12px 32px rgb(26 34 51/18%);color:inherit}.score-dialog::backdrop{background:rgb(26 34 51/45%)}.score-dialog-body{display:grid;padding:clamp(20px,4vw,30px);gap:16px}.score-dialog h2{margin:0;font-size:1.35rem}.score-dialog h3{margin:0 0 8px;color:var(--muted);font-size:1rem}.score-dialog dl{display:grid;margin:0;grid-template-columns:minmax(8em,max-content) 1fr;gap:10px 18px;overflow-wrap:anywhere}.score-dialog dt{color:var(--muted);font-weight:800}.score-dialog dd{margin:0;font-weight:700}.score-dialog-adult,.score-dialog-source{border-top:1px solid var(--border);padding-top:16px}.score-dialog-source .audio-preview{width:100%;margin:0}.score-dialog-alert{margin:0;border:2px solid #f0b429;border-radius:14px;padding:12px 14px;background:#fffaeb;font-weight:700}.score-tools-dialog{width:min(94vw,720px)}.score-tools-section{display:grid;border-top:1px solid var(--border);padding-top:16px;gap:10px}.score-tools-section>h3{margin:0;color:#374151;font-size:1.05rem}.score-tools-detail-actions,.score-tools-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.score-tools-detail-actions{grid-template-columns:repeat(3,minmax(0,1fr))}.score-tools-detail-actions>*{min-width:0;padding-inline:10px}.score-tools-section>small{color:var(--muted);line-height:1.5}.practice-screen{padding-bottom:20px;background:linear-gradient(180deg,#f8f6ff,#eef0f4)}.practice-layout{display:grid;gap:14px}.practice-layout .child-range-warning{margin:0}.practice-score-area{position:relative;min-width:0}.practice-score-area .score-frame{max-width:none}.practice-score-area .score-canvas{max-width:none;margin:0}.practice-score-area .score-canvas svg{min-width:0}.practice-controls{position:relative;display:grid;border:2px solid #d6d0f7;border-radius:22px;padding:14px 18px;gap:12px;background:rgb(255 255 255/96%);box-shadow:0 10px 28px rgb(46 35 101/12%)}.practice-controls.counting>.practice-button-row,.practice-controls.counting>p{visibility:hidden}.practice-controls>p{margin:0;color:#374151;font-weight:700;line-height:1.65}.practice-button-row{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,1.4fr) minmax(0,1fr);align-items:stretch;gap:12px}.practice-speed{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.practice-speed button{min-height:48px;border:1px solid var(--border);border-radius:12px;padding:8px 10px;background:#fff;color:var(--primary-dark);font-weight:800}.practice-speed button[aria-pressed=true]{border:2px solid var(--primary);background:#ece9ff}.practice-main-button,.practice-restart-button{width:100%}.practice-restart-button.reserved{visibility:hidden}.practice-count-in{position:absolute;z-index:2;inset:0;display:grid;place-items:center;align-content:center;gap:2px;border-radius:20px;background:var(--primary);color:#fff}.practice-count-in small{font-weight:800}.practice-count-in strong{font-size:clamp(2.2rem,7vw,3.4rem);line-height:1}.practice-title{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.practice-title.done{color:#087443;font-size:clamp(1rem,3.6vw,1.8rem)}.history-grid{display:grid;max-width:1000px;margin:0 auto;padding:0;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:18px;list-style:none}.history-card{overflow:hidden;border:1px solid var(--border);border-radius:18px;background:#fff;box-shadow:0 5px 18px rgb(26 34 51/6%)}.history-open{display:flex;width:100%;min-height:148px;border:0;padding:16px;flex-direction:column;align-items:stretch;gap:8px;background:transparent;text-align:left}.history-open span{color:var(--muted)}.preview{width:100%;height:80px;border-radius:10px;background:#f7f6ff}.preview polyline{fill:none;stroke:var(--primary);stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.preview.empty{display:grid;place-items:center;color:var(--muted)}.delete-button{width:100%;min-height:48px;border:0;border-top:1px solid var(--border);background:#fff;color:var(--danger);font-weight:800}.empty-state{margin:16vh auto;text-align:center}.adult-screen{background:#eef0f4}.adult-note{max-width:1000px;margin:0 auto 18px;border-left:5px solid var(--primary);padding:12px 16px;background:#fff}.tune-layout{display:grid;max-width:1180px;margin:0 auto;grid-template-columns:minmax(300px,390px) 1fr;gap:20px;align-items:start}.settings-card{display:flex;border:1px solid var(--border);border-radius:18px;padding:22px;flex-direction:column;gap:22px;background:#fff}.settings-card.wide,.settings-stack{max-width:800px;margin:0 auto}.settings-stack{display:grid;gap:18px}.settings-stack .settings-card.wide{width:100%}.settings-fields{display:contents}.settings-card label:not(.file-button){display:grid;min-height:56px;align-items:center;grid-template-columns:1fr auto;gap:8px;font-weight:700}.settings-card label input[type=range]{grid-column:1/-1;width:100%;accent-color:var(--primary)}.settings-card label small{grid-column:1/-1;color:var(--muted);font-weight:500;line-height:1.5}.settings-card input[type=number]{width:100%}.settings-card input[type=number],.settings-card select{min-height:48px;border:1px solid var(--border);border-radius:10px;padding:6px 10px;background:#fff}.settings-card .check-row{display:flex!important;justify-content:flex-start}.paired-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}.paired-fields label{display:flex!important;align-items:stretch!important;flex-direction:column}.diagnostic-card details{border:1px solid var(--border);border-radius:12px;padding:12px}.diagnostic-card summary{cursor:pointer;font-weight:800}.diagnostic-card dl{display:grid;grid-template-columns:max-content 1fr;gap:8px 14px;overflow-wrap:anywhere}.diagnostic-card dt{font-weight:800}.diagnostic-card dd{margin:0}.tune-preview{position:sticky;top:16px}.sticky-actions{position:sticky;bottom:0;max-width:none;margin-inline:calc(clamp(18px, 4vw, 48px) * -1);padding:16px;background:rgb(244 245 248/96%);box-shadow:0 -3px 16px rgb(26 34 51/8%)}.button-row{display:flex;gap:12px;flex-wrap:wrap}.file-button{position:relative;cursor:pointer}.file-button input{position:absolute;width:1px;height:1px;opacity:0}.trash-list{padding:0;list-style:none}.trash-list li{display:flex;min-height:58px;align-items:center;gap:8px;border-top:1px solid var(--border)}.trash-list span{flex:1 1}.trash-list button{min-height:44px;border:1px solid var(--border);border-radius:10px;background:#fff}.trash-list .danger-link{color:var(--danger)}.license-note{color:var(--muted);font-size:.9rem}@media (max-width:760px){.app-shell{padding:16px 12px 34px}.home-nav{flex-direction:column}.tune-layout{grid-template-columns:1fr}.tune-preview{position:static;order:-1}.bottom-actions>*,.sticky-actions>*{width:100%}.mode-switch button{padding:8px 4px;font-size:.9rem}.score-actions{grid-auto-flow:row;grid-auto-columns:auto}.score-screen .bottom-actions{grid-template-columns:1fr}.playback-extras{align-items:stretch;flex-direction:column}.playback-extras>*{width:100%}.comparison-balance input[type=range]{flex:1 1;width:auto}.trash-list li{padding-block:8px;align-items:stretch;flex-direction:column}.child-score-actions,.paired-fields{grid-template-columns:1fr}.child-score-actions{gap:12px}.child-range-warning{grid-template-columns:1fr;text-align:center}.experience-button{min-height:84px}.score-bottom-actions{grid-template-columns:1fr}.adult-tools-button{grid-column:auto}.score-tools-detail-actions,.score-tools-row{grid-template-columns:1fr}.practice-controls>p{display:none}.practice-button-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.practice-speed{grid-column:1/-1}.practice-speed button{min-height:52px;padding:6px 3px;font-size:.78rem}}.print-overlay{position:fixed;z-index:20;inset:0;display:grid;overflow:hidden;padding:16px;place-items:center;background:rgb(26 34 51/55%)}.print-preview{display:grid;overflow:hidden;width:min(100%,732px);height:min(900px,100%);min-width:0;min-height:0;grid-template-rows:minmax(0,1fr) auto;border-radius:12px;background:#fff;box-shadow:0 16px 40px rgb(26 34 51/30%)}.print-preview-scroll{overflow:auto;min-width:0;min-height:0;overscroll-behavior:contain}.print-preview-page{width:max-content;min-width:100%;background:#fff}.print-sheet{width:700px;padding:18px 16px;background:#fff;color:#111827}.print-sheet .score-canvas{overflow:visible;min-height:0;max-width:none;margin:0;border:0;border-radius:0;padding:0;background:transparent;box-shadow:none}.print-sheet .score-canvas svg{min-width:0}.print-title{margin:0;font-size:1.7rem;font-weight:900;text-align:center}.print-meta{margin:6px 0 14px;color:#4b5563;font-weight:700;text-align:center}.print-actions{position:relative;z-index:1;display:grid;padding:12px;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;border-top:1px solid #d9e0e8;background:#fff;box-shadow:0 -6px 16px rgb(26 34 51/8%)}@page{size:A4 portrait;margin:14mm}@media print{body *{visibility:hidden}.print-sheet,.print-sheet *{visibility:visible}.print-sheet{position:absolute;top:0;left:0;width:100%;padding:0}.print-overlay{position:static;padding:0}.print-overlay,.print-preview{overflow:visible;background:none}.print-preview{display:block;width:auto;height:auto;border-radius:0;box-shadow:none}.print-preview-scroll{overflow:visible}.print-preview-page{width:auto;min-width:0}.print-actions{display:none}}