@import url(https://fonts.googleapis.com/css2?family=Roboto+Slab:wght@400;500;600;700&display=swap);:root{color-scheme:light;--bg:#f5f3ee;--ink:#20242b;--muted:#65707d;--line:#d9d6ce;--panel:#fffdf8;--accent:#0f766e;--accent-dark:#0b514c;--gold:#c78621;--rose:#b14a68;--grid:rgba(32, 36, 43, 0.1);--shadow:0 18px 55px rgba(30, 30, 30, 0.12);--body-font:-apple-system, "system-ui", "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif;--heading-font:"Roboto Slab", Georgia, serif;--control-font:Roboto, "Open Sans", Arial, Helvetica, sans-serif}*{box-sizing:border-box}body{margin:0;min-height:100vh;overflow:hidden;background:linear-gradient(135deg,rgb(15 118 110 / .12),transparent 34%),linear-gradient(315deg,rgb(177 74 104 / .12),transparent 32%),var(--bg);color:var(--ink);font-family:var(--body-font)}button,input{font-family:var(--control-font)}.app-shell{height:100vh;padding:10px}.workspace{width:min(1500px, 100%);height:calc(100vh - 20px);margin:0 auto;display:grid;grid-template-rows:auto minmax(0,1fr);gap:8px;min-height:0}.topbar,.transcript-panel{background:rgb(255 253 248 / .86);border:1px solid var(--line);box-shadow:var(--shadow);backdrop-filter:blur(16px)}.topbar{border-radius:8px;padding:14px 16px 13px;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:12px;background:rgb(255 253 248 / .94)}.topbar-heading{width:100%;min-width:0;display:flex;align-items:flex-end;justify-content:space-between;gap:16px;padding-bottom:2px}.topbar-heading>div{min-width:0}.topbar-heading h1{overflow-wrap:anywhere}.eyebrow{margin:0 0 3px;color:var(--accent);font-size:.68rem;font-weight:850;letter-spacing:.08em;line-height:1;text-transform:uppercase}.intonation-guide-link{color:var(--accent);font-weight:850;text-decoration:underline;text-underline-offset:3px}.intonation-guide{display:block;margin:9px 0 12px;color:var(--muted);font-size:.9rem;font-weight:650;line-height:1.35}.intonation-guide-link{display:inline;color:var(--accent)}.intonation-guide-link:hover,.intonation-guide-link:focus-visible{color:var(--rose)}.topbar-summary{max-width:520px;margin:6px 0 0;color:var(--muted);font-size:.82rem;line-height:1.3;overflow-wrap:anywhere}.label,.version-stamp{margin:0;color:var(--muted);font-size:.75rem;font-weight:700;letter-spacing:0;text-transform:uppercase}.version-stamp{font-size:.7rem;font-weight:600;text-transform:none;white-space:nowrap}.version-number{display:block;font-weight:800}h1,h2{margin:0;letter-spacing:0;font-family:var(--heading-font)}h1{font-size:clamp(1.6rem, 2.4vw, 2.2rem);font-weight:700;line-height:1.1}h2{font-size:1.5rem;font-weight:500;line-height:1.1}.controls{display:flex;align-items:center;gap:10px;width:100%;padding-top:10px;border-top:1px solid rgb(217 214 206 / .85)}.button-controls{min-height:46px;padding:3px;border:1px solid rgb(15 118 110 / .24);border-radius:10px;background:rgb(15 118 110 / .07);display:flex;align-items:center;gap:7px}.button-controls button{min-width:92px;min-height:42px;padding-inline:16px;white-space:nowrap}.volume-wrap{justify-self:center}.sensitivity-wrap{justify-self:end;margin-left:auto}button{min-height:38px;border:1px solid var(--line);border-radius:8px;padding:0 14px;background:#fff;color:var(--ink);display:inline-flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;transition:border-color 140ms ease,background 140ms ease,transform 140ms ease}button:hover:not(:disabled){border-color:rgb(15 118 110 / .6);transform:translateY(-1px)}button:focus-visible,input:focus-visible{outline:3px solid rgb(37 99 235 / .28);outline-offset:2px}button.primary{border-color:var(--accent);background:var(--accent);color:#fff}.button-controls button:not(.primary){border-color:rgb(177 74 104 / .28);background:rgb(255 255 255 / .82);color:var(--rose)}.button-controls button:not(.primary):hover:not(:disabled){border-color:rgb(177 74 104 / .58);background:rgb(177 74 104 / .08)}button:disabled{cursor:not-allowed;opacity:.45}.stop-alert{position:fixed;inset:0;z-index:1001;display:grid;place-items:center;padding:18px;background:rgb(32 36 43 / .42)}.loading-alert{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:18px;background:rgb(32 36 43 / .24)}.loading-alert.hidden{display:none}.loading-alert-card{width:min(360px, 100%);border:1px solid rgb(15 118 110 / .42);border-radius:8px;padding:18px 22px;background:#fffdf8;box-shadow:0 20px 60px rgb(32 36 43 / .2);color:var(--ink);font-size:1.1rem;font-weight:700;text-align:center}.stop-alert.hidden{display:none}.stop-alert-card{width:min(420px, 100%);border:2px solid rgb(177 74 104 / .72);border-radius:8px;padding:24px;background:#fffdf8;box-shadow:0 24px 80px rgb(32 36 43 / .28);text-align:center}.stop-alert-card strong{display:block;color:#991b1b;font-size:clamp(1.45rem, 4vw, 2.1rem);line-height:1.05}.stop-alert-card p{margin:12px 0 18px;color:var(--ink);font-size:1rem;font-weight:700;line-height:1.35}.stop-alert-card button{min-width:92px;border-color:var(--rose);background:var(--rose);color:#fff}.button-icon{width:24px;display:inline-flex;justify-content:center;font-size:1.35rem;font-weight:700;line-height:1}.volume-wrap,.sensitivity-wrap{min-height:46px;width:100%;border:1px solid rgb(217 214 206 / .8);border-radius:8px;padding:7px 11px;display:grid;align-content:center;gap:3px;background:rgb(255 255 255 / .58)}.volume-wrap{width:190px;max-width:190px}.sensitivity-wrap{width:260px;max-width:260px;cursor:pointer}.label-row{display:flex;align-items:center;justify-content:space-between;gap:10px}.label-row strong{color:var(--ink);font-size:.88rem}.volume-meter{height:9px;overflow:hidden;border-radius:999px;background:rgb(32 36 43 / .12)}#volumeFill{display:block;width:0%;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--accent),var(--gold),var(--rose));transition:width 90ms linear}#sensitivityControl{width:100%;accent-color:var(--rose);cursor:ew-resize}.word-key{display:inline-block;width:20px;height:10px;border-radius:999px;border:1px solid rgb(15 118 110 / .78);background:rgb(15 118 110 / .18)}.lower-grid{display:grid;grid-template-rows:minmax(0,1fr);gap:8px;min-height:0}.transcript-panel{border-radius:8px;padding:8px 12px;overflow:hidden;min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr)}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:7px}.panel-heading span{color:var(--muted);font-size:.86rem}.copy-calibration-btn{min-height:30px;border:1px solid rgb(15 118 110 / .22);border-radius:8px;padding:5px 10px;background:rgb(15 118 110 / .08);color:var(--accent-dark);font-size:.74rem;font-weight:800;white-space:nowrap}.debug-toggle{min-height:28px;border:1px solid rgb(37 99 235 / .24);border-radius:8px;padding:4px 8px;display:inline-flex;align-items:center;gap:6px;background:rgb(37 99 235 / .08);color:#1d4ed8;font-size:.74rem;font-weight:800;white-space:nowrap;cursor:pointer}.debug-toggle input{width:14px;min-height:14px;margin:0;accent-color:#2563eb}.loading-spinner{width:13px;height:13px;border:2px solid rgb(15 118 110 / .18);border-top-color:var(--accent);border-radius:50%;animation:recognition-spin 0.8s linear infinite}@keyframes recognition-spin{to{transform:rotate(360deg)}}.loading-word-chip{border-color:rgb(15 118 110 / .42);background:rgb(15 118 110 / .08);color:var(--accent-dark)}.word-chip-loading-body{flex:1;display:grid;place-items:center;width:100%;min-height:52px}.loading-word-chip .loading-spinner{width:28px;height:28px;border-width:3px}.comparison-transcripts{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr);gap:8px;min-height:0;overflow:hidden}.comparison-transcripts.debug-open{grid-template-rows:minmax(0,1fr) minmax(220px,0.8fr)}.json-debug-source.hidden{display:none}.transcript-source{min-width:0;min-height:0;border:1px solid rgb(217 214 206 / .8);border-radius:8px;padding:10px;background:rgb(255 255 255 / .44)}.final-source{min-height:0;display:grid;grid-template-rows:minmax(0,1fr)}.json-debug-source{min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr)}.source-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px;color:var(--muted);font-size:.72rem;font-weight:800;text-transform:uppercase}.source-heading span{display:inline-flex;align-items:center;gap:6px}.source-heading strong{color:var(--ink)}.assembly-source .word-chip.final-chip{border-color:rgb(37 99 235 / .48);background:rgb(37 99 235 / .1)}.assembly-source .word-contour-preview path{stroke:#2563eb}.source-note{min-height:16px;margin-top:5px;color:var(--muted);font-size:.72rem;line-height:1.25;overflow-wrap:anywhere}.source-note.error{color:#991b1b;font-weight:800}.json-debug{min-height:0;margin:0;padding:8px;overflow:auto;border-radius:6px;background:#111827;color:#d1fae5;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.68rem;line-height:1.35;white-space:pre-wrap;overflow-wrap:anywhere}.transcript{min-height:0;max-height:none;overflow:auto;-webkit-overflow-scrolling:touch;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(190px, 100%),190px));grid-auto-flow:row;justify-content:start;align-content:flex-start;align-items:flex-start;gap:10px 9px}.final-transcript{height:100%;padding-right:4px}.word-chip{max-width:100%;min-height:0;border:1px solid rgb(15 118 110 / .22);border-radius:8px;padding:7px 9px;background:rgb(15 118 110 / .08);color:var(--ink);overflow-wrap:anywhere}.word-chip.recognized-chip{border-color:rgb(15 118 110 / .5);background:rgb(15 118 110 / .12)}.word-chip.final-chip{border-color:rgb(177 74 104 / .5);background:rgb(177 74 104 / .1);min-width:0;min-height:130px;padding:12px;display:flex;flex-direction:column;align-items:center;justify-content:space-between;gap:8px;width:100%;overflow:hidden;box-sizing:border-box}.word-chip.provisional-chip{border-style:dashed;opacity:.86}.word-chip.interim-chip{color:rgb(31 41 55 / .72)}.word-chip.recognized-chip:hover,.word-chip.recognized-chip:focus-visible{border-color:rgb(15 118 110 / .78);background:rgb(15 118 110 / .18)}.word-chip:hover,.word-chip:focus-visible{border-color:rgb(177 74 104 / .45);background:rgb(177 74 104 / .1)}.word-chip.selected{border-color:rgb(177 74 104 / .72);background:rgb(177 74 104 / .16)}.word-chip strong{display:flex;align-items:center;gap:8px;font-size:.86rem;line-height:1.1;max-width:100%;text-align:center;white-space:normal;overflow-wrap:anywhere}.word-chip.final-chip strong{justify-content:center;font-size:.96rem}.loading-word-chip strong{font-size:0.8rem!important;white-space:nowrap}.word-contour-preview{width:184px;height:58px;display:block;margin:0 auto;overflow:visible}.word-contour-preview path{fill:none;stroke:#b14a68;stroke-width:4;stroke-linecap:round;stroke-linejoin:round}.word-contour-preview.empty path{stroke:rgb(177 74 104 / .34);stroke-width:2;stroke-dasharray:4 4}.word-chip em{border-radius:999px;padding:3px 7px;background:rgb(101 112 125 / .16);color:#4b5563;font-size:.68rem;font-style:normal;font-weight:800;white-space:nowrap}.word-chip em.trend-rising{background:rgb(15 118 110 / .16);color:var(--accent-dark)}.word-chip em.trend-falling{background:rgb(177 74 104 / .16);color:#8f2949}.word-chip em.trend-rise-fall,.word-chip em.trend-fall-rise{background:rgb(199 134 33 / .18);color:#8a560f}.word-chip em.trend-flat{background:rgb(101 112 125 / .16);color:#4b5563}label{display:grid;gap:6px;color:var(--muted);font-size:.88rem;font-weight:700}input{width:100%;min-height:32px;border:1px solid var(--line);border-radius:8px;padding:0 10px;background:#fff;color:var(--ink)}@media (max-width:840px){body{overflow:auto}.app-shell{height:auto;min-height:100vh;padding:8px}.workspace{height:auto;min-height:calc(100vh - 16px);grid-template-rows:auto auto}.lower-grid{grid-template-rows:auto}.transcript-panel,.comparison-transcripts,.transcript-source,.final-source,.transcript,.final-transcript{height:auto;max-height:none;overflow:visible}.transcript-panel{min-height:420px}.comparison-transcripts,.final-source,.transcript{min-height:0}.volume-wrap,.sensitivity-wrap{min-height:40px;padding:6px 7px;gap:3px}.label-row strong{font-size:.78rem}.volume-wrap .label,.sensitivity-wrap .label{font-size:.58rem;line-height:1.1}.label-row{gap:4px}.volume-meter{height:8px}#sensitivityControl{min-height:22px;padding:0}.topbar{align-items:flex-start;gap:9px;padding:12px}.topbar-heading{display:block;gap:10px}.topbar-heading h1{font-size:1.25rem}.topbar-summary{max-width:250px;font-size:.74rem}.topbar-heading .version-stamp{margin-top:8px;max-width:none;overflow:visible;text-align:left;text-overflow:clip;white-space:normal}.controls{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:6px;padding-top:8px}.button-controls{grid-column:1 / -1;width:100%}.button-controls button{flex:1 1 96px}.volume-wrap{justify-self:stretch;max-width:none}.sensitivity-wrap{justify-self:stretch;max-width:none;margin-left:0}.comparison-transcripts{grid-template-columns:1fr;grid-template-rows:minmax(0,1fr)}.comparison-transcripts.debug-open{grid-template-rows:minmax(0,1fr) minmax(220px,0.8fr)}.transcript{min-height:0;max-height:none;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));row-gap:5px}.word-chip.final-chip{width:100%;flex:none;min-width:0;min-height:76px;padding:2px 6px;gap:4px}.word-chip.final-chip strong{font-size:.82rem}.word-contour-preview{width:164px;height:44px}}@media (max-width:520px){.app-shell{padding:5px}.topbar{padding:11px 10px}.controls{grid-template-columns:1fr}.volume-wrap,.sensitivity-wrap{width:100%}}.word-contour-preview{display:block;width:100%;height:58px}@media (max-width:840px){.word-chip.final-chip{max-width:100%}.word-contour-preview{height:44px}}@media (pointer:coarse){.comparison-transcripts,.transcript-source,.transcript{height:auto;max-height:none;overflow:visible}.transcript{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.word-chip.final-chip{width:100%;min-width:0;max-width:100%}}.intonation-mobile-experience .comparison-transcripts,.intonation-mobile-experience .transcript-source,.intonation-mobile-experience .transcript{height:auto;max-height:none;overflow:visible}.intonation-mobile-experience .transcript{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.intonation-mobile-experience .transcript .word-chip.final-chip{width:100%;min-width:0;max-width:100%;grid-column:auto;flex:none;box-sizing:border-box}@supports (-webkit-touch-callout:none){.transcript{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;grid-auto-flow:row!important}.transcript>.word-chip.final-chip{width:100%!important;min-width:0!important;max-width:100%!important;grid-column:span 1 / span 1!important;grid-row:auto!important;flex:none!important;box-sizing:border-box!important}}html.intonation-controls-docked .controls{position:fixed;z-index:100;top:max(8px, env(safe-area-inset-top));left:50%;width:min(760px, calc(100vw - 20px));transform:translateX(-50%);padding:8px;border:1px solid rgb(15 118 110 / .3);border-radius:10px;background:rgb(255 253 248 / .96);box-shadow:0 12px 30px rgb(32 36 43 / .2);backdrop-filter:blur(14px)}@media (max-width:640px){html.intonation-controls-docked .controls{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:6px}}.intonation-floating-controls{position:fixed!important;z-index:1000!important;top:max(8px, env(safe-area-inset-top));left:50%;width:min(760px, calc(100vw - 20px))!important;transform:translateX(-50%);padding:8px!important;border:1px solid rgb(15 118 110 / .3)!important;border-radius:10px!important;background:rgb(255 253 248 / .96)!important;box-shadow:0 12px 30px rgb(32 36 43 / .2)!important;backdrop-filter:blur(14px);display:flex!important;align-items:center;gap:10px;font-family:var(--body-font)}.intonation-floating-controls .button-controls{min-height:46px;padding:3px;border:1px solid rgb(15 118 110 / .24);border-radius:10px;background:rgb(15 118 110 / .07);display:flex;align-items:center;gap:7px}.intonation-floating-controls button{min-width:92px;min-height:38px;border:1px solid var(--line);border-radius:8px;padding:0 14px;background:#fff;color:var(--ink);display:inline-flex;align-items:center;justify-content:center;gap:8px}.intonation-floating-controls button.primary{border-color:var(--accent);background:var(--accent);color:#fff}.intonation-floating-controls .volume-wrap,.intonation-floating-controls .sensitivity-wrap{min-height:46px;border:1px solid rgb(217 214 206 / .8);border-radius:8px;padding:7px 11px;display:grid;align-content:center;gap:3px;background:rgb(255 255 255 / .58)}.intonation-floating-controls .volume-wrap{width:190px}.intonation-floating-controls .sensitivity-wrap{width:260px}.intonation-floating-controls .label-row{display:flex;justify-content:space-between;gap:10px}.intonation-floating-controls .label{color:var(--muted);font-size:.75rem;font-weight:700;text-transform:uppercase}.intonation-floating-controls .label-row strong{color:var(--ink);font-size:.88rem}.intonation-floating-controls .volume-meter{height:9px;overflow:hidden;border-radius:999px;background:rgb(32 36 43 / .12)}.intonation-floating-controls #volumeFill{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--accent),var(--gold),var(--rose))}.intonation-floating-controls #sensitivityControl{width:100%;accent-color:var(--rose)}@media (max-width:640px){.intonation-floating-controls{display:grid!important;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:6px}.intonation-floating-controls .button-controls{grid-column:1 / -1;width:100%}.intonation-floating-controls .button-controls button{flex:1 1 96px}.intonation-floating-controls .volume-wrap,.intonation-floating-controls .sensitivity-wrap{width:auto;min-width:0;padding:6px 7px}}