:root{
 --bg:#f4f5f0;--paper:#fffefa;--card:#fff;--ink:#283c32;--muted:#788176;--line:#e4e8df;
 --pine:#2b4e3e;--pine-dark:#163a2c;--sage:#dfe8d6;--sage-ink:#59754d;--soft:#ecefe6;
 --orange:#bc7644;--amber-bg:#f7eee0;--danger:#b95143;--radius:26px;--glass-alpha:.78;
 --shadow:0 5px 30px rgba(47,64,42,.045),0 1px 3px rgba(47,64,42,.025);
 --glass-color:249,251,244;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);
 color-scheme:light;
 font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
 -webkit-font-smoothing:antialiased;font-synthesis:none;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
body{margin:0;background:var(--bg);color:var(--ink);font-size:15px;line-height:1.55;min-height:100dvh;overflow-x:hidden}
body.dark{--bg:#171f1b;--paper:#212b24;--card:#243129;--ink:#edf0e7;--muted:#a4afa0;--line:#354238;--pine:#cee6b7;--pine-dark:#d7eabe;--sage:#334633;--sage-ink:#bdcfae;--soft:#2b382d;--orange:#e4ad75;--amber-bg:#423529;--danger:#f09f91;--glass-color:36,47,38;color-scheme:dark}
button,input,select{font:inherit}button,a{-webkit-touch-callout:none}button{cursor:pointer;border:0;background:none;color:inherit;touch-action:manipulation}button:disabled{opacity:.42;cursor:default}button:active:not(:disabled){transform:scale(.97)}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #789b68;outline-offset:4px}button{transition:transform .18s ease,background .2s,color .2s,box-shadow .2s}a{color:var(--pine)}h1,h2,h3,p{margin:0}h1,h2,h3{font-weight:650}h1{font-size:30px;line-height:1.3;letter-spacing:-1.2px}h2{font-size:21px;line-height:1.4;letter-spacing:-.55px}h3{font-size:16px;letter-spacing:-.2px}small{font-size:12px}svg{display:block;flex-shrink:0}input[type=range]{width:100%;accent-color:var(--pine);height:30px;cursor:pointer;touch-action:pan-y}input[type=search],input[type=text],select,input[type=number]{width:100%;color:var(--ink);background:var(--soft);border:1px solid transparent;padding:13px 14px;border-radius:14px;font-size:16px;min-height:48px;outline-offset:2px}select{appearance:auto}a,button,label{user-select:none}.icon{width:22px;height:22px;flex-shrink:0}.icon.sm{width:18px;height:18px}.icon.lg{width:28px;height:28px}
.ambient{position:fixed;inset:0;pointer-events:none;z-index:-1;overflow:hidden}.ambient i{position:absolute;border-radius:50%;filter:blur(65px);opacity:.42}.ambient i:first-child{width:380px;height:470px;background:#dee8cb;top:-200px;right:-150px}.ambient i:last-child{width:290px;height:340px;background:#f1e8d7;left:-180px;top:470px;opacity:.5}.dark .ambient{opacity:.14}
.site-layout{max-width:1120px;margin:0 auto}.app-shell{width:100%;max-width:560px;margin:auto;padding:0 22px calc(112px + var(--safe-bottom));position:relative}.app-header{padding-top:max(18px,var(--safe-top));height:calc(74px + var(--safe-top));display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.brand{display:flex;align-items:center;gap:8px}.brand-mark{width:35px;height:35px;color:var(--pine)}.brand-name{font-size:22px;letter-spacing:-.9px;font-weight:650}.brand-wordmark{margin-left:4px;font-size:9px;letter-spacing:2.1px;color:var(--muted);align-self:center;padding-top:4px}.header-right{display:flex;gap:9px;align-items:center}.header-status{font-size:10px;color:var(--muted);display:flex;align-items:center;gap:5px}.status-dot{width:5px;height:5px;border-radius:50%;background:var(--muted)}.header-status.live{color:var(--pine)}.header-status.live .status-dot{background:#7b9f5e;box-shadow:0 0 0 3px #7b9f5e22}.icon-button{width:44px;height:44px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:rgba(255,255,255,.65);border:1px solid rgba(255,255,255,.85);box-shadow:0 2px 9px #30482a04}.dark .icon-button{background:var(--card);border-color:var(--line)}
.view{animation:view-in .36s cubic-bezier(.2,.7,.2,1)}.page-intro{margin-bottom:23px}.eyebrow{display:block;font-size:10px;letter-spacing:1.7px;color:var(--muted);font-weight:600;text-transform:uppercase;margin-bottom:9px}.page-intro p{font-size:13px;color:var(--muted);margin-top:8px;line-height:1.6}.intro-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.intro-row .icon-button{background:var(--pine);color:var(--bg);border:0;width:46px;height:46px}.intro-row .icon-button .icon{width:25px;height:25px}.section-title{display:flex;align-items:center;justify-content:space-between;margin:26px 0 13px;gap:10px}.section-title h2{font-size:18px}.subtle-link{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:3px;min-height:36px;padding:0 2px}.subtle-link .icon{width:15px;height:15px}
.song-strip{width:100%;text-align:left;display:flex;align-items:center;gap:14px;background:var(--card);padding:13px 15px 13px 13px;border-radius:22px;box-shadow:var(--shadow);border:1px solid #ffffff80;margin-bottom:22px}.song-strip-info{flex:1;min-width:0}.song-strip-info .eyebrow{font-size:9px;letter-spacing:1.25px;margin-bottom:4px}.song-strip-info h2{font-size:19px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.song-strip-info p{font-size:11px;color:var(--muted);margin-top:4px}.song-strip>.icon{color:var(--muted);width:17px}.album{width:63px;height:69px;position:relative;flex:none;border-radius:13px;background:linear-gradient(150deg,#b7c9a7 0%,#819b75 55%,#546f53 100%);overflow:hidden;box-shadow:inset 0 0 0 1px #ffffff45}.album:before,.album:after,.album i{content:'';position:absolute;width:75px;height:75px;border:1px solid #f9ffe7aa;border-radius:50%;left:7px;top:9px;box-shadow:0 0 0 7px #f8ffdf08,0 0 0 14px #f8ffdf0a,0 0 0 21px #f8ffdf0a}.album:after{width:48px;height:48px;left:20px;top:22px}.album i{width:25px;height:25px;left:31px;top:34px;border-color:#e3efc799;background:#f8ffdf08}.album b{position:absolute;color:#fffde8;left:12px;top:9px;font-size:23px;line-height:1;letter-spacing:-3px;font-weight:350}.album.sand{background:linear-gradient(150deg,#dfc5a1,#baa889 55%,#837362)}.album.blue{background:linear-gradient(150deg,#c3d6d7,#98aeb4 55%,#607c89)}.album.large{width:100%;height:auto;aspect-ratio:1.08;border-radius:19px}.album.large:before{width:180px;height:180px;left:28%;top:12%;box-shadow:0 0 0 16px #ffffff09,0 0 0 32px #ffffff09,0 0 0 48px #ffffff09}.album.large:after{width:125px;height:125px;left:44%;top:27%}.album.large i{width:70px;height:70px;left:61%;top:43%}.album.large b{font-size:55px;left:19px;top:16px}.album.large .album-caption{position:absolute;bottom:16px;left:18px;color:#fffce9;z-index:2;font-size:9px;letter-spacing:1.8px;font-weight:500}
.segmented{display:flex;gap:3px;background:#e6eae04f;border:1px solid #d9dfd333;padding:4px;border-radius:15px;margin-bottom:20px}.segmented button{flex:1;min-height:38px;border-radius:11px;font-size:13px;color:var(--muted);font-weight:500}.segmented button.active{color:var(--ink);background:var(--card);box-shadow:0 2px 7px #3142260b}.dark .segmented{background:var(--soft)}
.phrase-heading{display:flex;align-items:center;justify-content:space-between;margin:0 1px 13px;gap:10px}.phrase-heading h3{font-size:14px;font-weight:600}.phrase-heading .subtle-link{min-height:30px}.phrase-dots{display:flex;gap:4px;margin-left:auto;margin-right:9px;max-width:84px;overflow:hidden}.phrase-dots i{width:5px;height:5px;background:var(--line);border-radius:9px;flex:none}.phrase-dots i.active{width:14px;background:var(--pine)}.practice-stage{background:var(--card);border:1px solid #ffffff80;box-shadow:var(--shadow);border-radius:var(--radius);overflow:hidden;padding:19px 18px 16px;position:relative}.plot-legend{display:flex;align-items:center;justify-content:space-between;font-size:10px;color:var(--muted)}.legend-label{display:flex;gap:6px;align-items:center}.legend-label i{width:14px;height:4px;background:#b2c59c;border-radius:5px}.legend-label.voice i{background:var(--pine);height:2px;width:13px}.legend-label .live-dot{width:5px;height:5px;background:var(--pine);border-radius:50%}.plot-wrap{position:relative;height:165px;margin:12px 0 0}canvas.pitch-canvas{display:block;width:100%;height:100%}.plot-time{position:absolute;bottom:1px;left:31px;right:0;display:flex;justify-content:space-between;font-size:9px;color:var(--muted);font-variant-numeric:tabular-nums;pointer-events:none}.count-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:color-mix(in srgb,var(--card),transparent 13%);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);pointer-events:none;z-index:2}.count-overlay b{font-weight:400;font-size:58px;line-height:1.2;font-variant-numeric:tabular-nums}.count-overlay small{color:var(--muted);font-size:11px}.feedback{display:flex;align-items:center;justify-content:space-between;gap:8px;border-top:1px solid var(--line);padding-top:12px;margin-top:7px;min-height:49px}.feedback-main{display:flex;flex-direction:column;gap:2px}.feedback-title{font-size:13px;font-weight:550}.feedback-detail{font-size:10px;color:var(--muted)}.feedback-reading{font-size:23px;font-weight:400;letter-spacing:-.8px;font-variant-numeric:tabular-nums;white-space:nowrap}.feedback-reading small{font-size:10px;letter-spacing:0;color:var(--muted);padding-left:2px}.feedback.good .feedback-title,.feedback.good .feedback-reading{color:var(--sage-ink)}.feedback.off .feedback-title,.feedback.off .feedback-reading{color:var(--orange)}.idle-wave{display:flex;align-items:center;gap:3px;height:24px}.idle-wave i{width:3px;height:7px;border-radius:2px;background:#b5c0ae}.idle-wave i:nth-child(2),.idle-wave i:nth-child(4){height:14px}.idle-wave i:nth-child(3){height:22px}.live .idle-wave i{animation:wave .7s ease-in-out infinite alternate}.live .idle-wave i:nth-child(2){animation-delay:.2s}.live .idle-wave i:nth-child(3){animation-delay:.4s}.live .idle-wave i:nth-child(4){animation-delay:.1s}
.transport{display:grid;grid-template-columns:1fr 1.58fr;gap:10px;margin-top:17px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:50px;padding:12px 17px;border-radius:17px;font-size:14px;font-weight:600;line-height:1.35}.btn .icon{width:20px;height:20px}.btn-primary{background:var(--pine);color:var(--bg);box-shadow:0 4px 12px #233e2515}.btn-secondary{background:var(--card);color:var(--ink);border:1px solid var(--line)}.btn-soft{background:var(--soft);color:var(--pine)}.btn-danger{background:var(--amber-bg);color:var(--danger)}.btn.full{width:100%}.btn.small{min-height:43px;border-radius:13px;font-size:12px;padding:10px 13px}.btn.running{background:var(--orange);color:#fff}.tools-row{display:flex;align-items:center;justify-content:space-between;gap:4px;margin-top:9px}.tool-button{display:flex;align-items:center;justify-content:center;gap:5px;font-size:11px;color:var(--muted);min-height:44px;padding:0 5px;white-space:nowrap}.tool-button .icon{width:15px;height:15px}.tool-button.active{color:var(--pine);font-weight:600}.tool-button.active .icon{color:var(--pine)}.tool-button.round{width:40px;flex:none}.coach-note{display:flex;align-items:flex-start;gap:8px;font-size:11px;line-height:1.7;color:var(--muted);padding:10px 2px 0}.coach-note .icon{width:15px;height:15px;margin-top:2px}.coach-note p{flex:1}.coach-note button{font-size:11px;color:var(--pine);min-height:28px;white-space:nowrap}.tip-card{background:#e9eee18a;border-radius:18px;padding:15px 16px;margin-top:24px;display:flex;gap:12px;align-items:center}.tip-card .tip-number{font-size:28px;font-weight:300;color:var(--sage-ink);line-height:1}.tip-card h3{font-size:12px;margin-bottom:3px}.tip-card p{font-size:11px;line-height:1.6;color:var(--muted)}
.single-target{display:flex;align-items:center;justify-content:center;gap:29px;margin:8px 0 12px}.target-note{font-size:38px;font-weight:400;letter-spacing:-1.5px;line-height:1.1;text-align:center}.target-note small{display:block;font-size:10px;letter-spacing:0;color:var(--muted);margin-top:5px}.single-target .icon-button{background:var(--soft);box-shadow:none;border:0;width:38px;height:44px;border-radius:14px}.single .plot-wrap{height:133px}.target-caption{text-align:center;font-size:10px;color:var(--muted);margin-top:7px}
.glass{background:rgba(var(--glass-color),var(--glass-alpha));border:1px solid #ffffffb0;box-shadow:inset 0 1px 0 #fff9,0 8px 36px #33462b12,0 1px 3px #33462b08;backdrop-filter:blur(24px) saturate(1.45);-webkit-backdrop-filter:blur(24px) saturate(1.45)}.dark .glass{border-color:#ffffff1a;box-shadow:inset 0 1px 0 #ffffff15,0 8px 36px #0003}.bottom-nav{position:fixed;bottom:calc(15px + var(--safe-bottom));left:50%;transform:translateX(-50%);width:calc(100% - 38px);max-width:522px;height:67px;border-radius:29px;z-index:20;padding:6px;display:flex;align-items:stretch;gap:3px}.bottom-nav:before{content:'';position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:linear-gradient(130deg,#ffffff50,transparent 45%,#ffffff30);opacity:.6}.nav-button{position:relative;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--muted);border-radius:23px;font-size:10px;letter-spacing:.3px}.nav-button .icon{width:21px;height:21px;transition:transform .3s cubic-bezier(.2,.7,.3,1)}.nav-button.active{background:linear-gradient(150deg,#dce6d999,#d2dfca55);color:var(--pine);box-shadow:inset 0 1px 0 #ffffff80}.nav-button.active .icon{transform:translateY(-1px)}.dark .nav-button.active{background:#efffcc16}.nav-button span{font-weight:550}
.import-card{width:100%;display:flex;gap:15px;text-align:left;align-items:center;padding:21px;background:linear-gradient(135deg,#e7eee1,#e0e8d8);border:1px solid #d3dec9;border-radius:23px;color:#2e4a37}.import-card .import-icon{width:45px;height:49px;border-radius:15px;background:#fff9;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px #50633e08}.import-card .import-copy{flex:1}.import-card h3{font-size:15px;font-weight:600}.import-card p{font-size:10px;color:#6c7e60;margin-top:4px}.import-card>.icon{width:18px}.dark .import-card{background:var(--soft);border-color:var(--line);color:var(--ink)}.dark .import-card p{color:var(--muted)}.dark .import-icon{background:var(--card)}.format-link{margin:6px 0 0 auto;justify-content:flex-end}.library-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px 16px}.library-item{min-width:0;position:relative}.library-item>button:first-child{padding:0;text-align:left;width:100%}.library-item h3{font-size:14px;margin:11px 0 3px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.library-item p{font-size:10px;color:var(--muted)}.library-item .album b{font-family:ui-serif,"Songti SC",serif;font-style:italic}.song-menu{position:absolute;right:2px;bottom:-2px;width:34px;height:38px;color:var(--muted);display:flex;align-items:center;justify-content:center}.song-menu .icon{width:19px}.empty{padding:29px 22px;text-align:center;border:1px dashed var(--line);border-radius:21px;color:var(--muted);font-size:12px}.empty .icon{margin:0 auto 10px;width:29px;height:29px;opacity:.6}.empty h3{font-size:14px;color:var(--ink);margin-bottom:6px}.empty p{line-height:1.7}.library-foot{margin-top:28px;color:var(--muted);font-size:11px;text-align:center}.library-foot .icon{display:inline-block;vertical-align:middle;width:13px;height:13px;margin-right:3px}
.ear-hero{position:relative;overflow:hidden;background:#284a3a;color:#f5f7ed;padding:25px 22px 23px;border-radius:28px;min-height:291px}.ear-hero .eyebrow{color:#b5c5a6;font-size:9px}.ear-hero h2{font-size:26px;letter-spacing:-.8px;line-height:1.4;position:relative;z-index:1}.ear-hero p{font-size:12px;color:#c0cdb6;max-width:210px;margin-top:10px;position:relative;z-index:1}.ear-hero .btn{margin-top:65px;background:#e2eace;color:#294231;border:1px solid #f7ffe180;width:100%;position:relative;z-index:1}.ear-orbit{position:absolute;right:-5px;top:61px;width:165px;height:165px;transform:rotate(-20deg)}.ear-orbit i{position:absolute;inset:0;border:1px solid #deeebd33;border-radius:50%;box-shadow:0 0 0 15px #deeebd08,0 0 0 31px #deeebd06}.ear-orbit i:nth-child(2){inset:28px;border-color:#e5eab544;box-shadow:none}.ear-orbit i:nth-child(3){inset:55px;box-shadow:0 0 22px #e1edb62a;background:#e1edb61c;border-color:#f1ffdc77}.ear-orbit b{position:absolute;background:#eef4c8;width:12px;height:12px;top:21px;left:23px;border-radius:50%;box-shadow:0 0 13px #edfbbb30}.ear-orbit span{position:absolute;background:#eef4c8;width:7px;height:7px;bottom:37px;right:43px;border-radius:50%}.ear-detail{display:flex;align-items:center;gap:13px;background:var(--card);padding:18px;border-radius:22px;margin-top:15px;box-shadow:var(--shadow);width:100%;text-align:left}.ear-detail .detail-icon{width:43px;height:43px;border-radius:14px;background:var(--amber-bg);color:var(--orange);display:flex;align-items:center;justify-content:center}.ear-detail h3{font-size:14px}.ear-detail p{font-size:11px;color:var(--muted);margin-top:4px}.ear-detail>.icon{margin-left:auto;width:16px;color:var(--muted)}.learning-note{padding:22px 8px 0;font-size:12px;color:var(--muted);line-height:1.85}.learning-note strong{font-weight:500;color:var(--ink)}
.stat-grid{display:grid;grid-template-columns:repeat(3,1fr);background:var(--card);border-radius:23px;padding:22px 4px;box-shadow:var(--shadow);margin-bottom:22px}.stat{text-align:center}.stat+.stat{border-left:1px solid var(--line)}.stat b{display:block;font-size:27px;letter-spacing:-1px;font-weight:400;line-height:1.1;font-variant-numeric:tabular-nums}.stat b small{font-size:10px;letter-spacing:0;margin-left:3px;color:var(--muted)}.stat>span{font-size:10px;color:var(--muted);margin-top:7px;display:block}.settings-group{background:var(--card);border-radius:22px;padding:0 17px;box-shadow:var(--shadow);margin-bottom:17px;overflow:hidden}.settings-row{display:flex;align-items:center;gap:12px;min-height:63px;text-align:left;width:100%;padding:12px 0}.settings-row+.settings-row{border-top:1px solid var(--line)}.settings-row>.icon{width:19px;height:19px;color:var(--muted)}.settings-row .row-copy{flex:1}.settings-row h3{font-size:13px;font-weight:550}.settings-row p{font-size:10px;color:var(--muted);margin-top:3px}.settings-row .row-right{font-size:11px;color:var(--muted);display:flex;align-items:center;gap:4px}.settings-row .row-right .icon{width:14px;height:14px}.toggle{width:43px;height:26px;background:var(--line);border-radius:20px;position:relative;display:block;flex:none;transition:background .2s}.toggle:after{content:'';position:absolute;left:3px;top:3px;width:20px;height:20px;background:#fff;border-radius:50%;box-shadow:0 1px 3px #0002;transition:transform .23s cubic-bezier(.2,.8,.3,1)}.toggle.on{background:var(--pine)}.toggle.on:after{transform:translateX(17px)}.dark .toggle.on:after{background:#203225}.privacy-card{padding:15px 11px 0;text-align:center;color:var(--muted);font-size:10px;line-height:1.9}.privacy-card .icon{width:18px;height:18px;margin:0 auto 8px}.privacy-card strong{display:block;font-size:12px;color:var(--ink);font-weight:500;margin-bottom:3px}.version{font-size:9px;letter-spacing:1.3px;color:var(--muted);text-align:center;margin-top:17px;opacity:.8}
.sheet-backdrop{position:fixed;inset:0;background:#17251c45;backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px);z-index:40;display:flex;align-items:flex-end;justify-content:center;animation:fade-in .22s ease}.sheet{background:var(--paper);width:100%;max-width:560px;border-radius:30px 30px 0 0;padding:10px 23px calc(25px + var(--safe-bottom));max-height:91dvh;overflow-y:auto;overscroll-behavior:contain;box-shadow:0 -12px 50px #20302212;animation:sheet-in .38s cubic-bezier(.16,1,.3,1);scrollbar-width:thin}.sheet-handle{width:34px;height:4px;background:#a3ab9c77;border-radius:10px;margin:0 auto 18px}.sheet-head{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:19px}.sheet-head h2{font-size:22px}.sheet-head .icon-button{background:var(--soft);border:0;box-shadow:none;width:34px;height:44px;border-radius:15px}.sheet-head .icon{width:18px;height:18px}.sheet-intro{font-size:13px;color:var(--muted);line-height:1.8;margin-top:-8px;margin-bottom:20px}.sheet-intro strong{color:var(--ink);font-weight:500}.sheet-actions{display:flex;gap:10px;margin-top:20px}.sheet-actions .btn{flex:1}.setting-block{margin:18px 0 24px}.setting-label{display:flex;justify-content:space-between;align-items:center;font-size:13px;margin-bottom:11px;gap:8px}.setting-label b{font-size:12px;color:var(--pine);font-weight:500}.setting-help{font-size:11px;color:var(--muted);line-height:1.75;margin-top:8px}.choices{display:flex;gap:6px;flex-wrap:wrap}.choice{font-size:12px;background:var(--soft);border:1px solid transparent;min-height:42px;padding:9px 14px;border-radius:13px;flex:1;white-space:nowrap;text-align:center}.choice.active{background:var(--sage);color:var(--pine);border-color:color-mix(in srgb,var(--pine),transparent 78%)}.mini-divider{border:0;border-top:1px solid var(--line);margin:22px 0}.notice{background:var(--soft);border-radius:15px;padding:13px 14px;font-size:11px;line-height:1.8;color:var(--muted)}.notice.warn{background:var(--amber-bg);color:var(--orange)}.notice strong{color:var(--ink);font-weight:550}.field-label{display:block;font-size:12px;margin:15px 0 7px;color:var(--muted)}.two-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}.phrase-list{display:flex;flex-direction:column;gap:8px}.phrase-item{background:var(--soft);border:1px solid transparent;border-radius:16px;display:flex;align-items:center;gap:12px;padding:11px 12px;text-align:left;min-height:63px;width:100%}.phrase-item.active{background:var(--sage);border-color:#b4c6a250}.phrase-index{width:27px;height:27px;background:var(--card);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;color:var(--muted);flex:none}.phrase-item h3{font-size:13px}.phrase-item p{font-size:10px;color:var(--muted);margin-top:3px}.phrase-item>.icon{margin-left:auto;width:17px}.phrase-item .phrase-row-main{flex:1;min-width:0}.phrase-edit{width:44px;height:44px;display:flex;align-items:center;justify-content:center;color:var(--muted)}.phrase-edit .icon{width:17px;height:17px}.phrase-select{flex:1;text-align:left;display:flex;align-items:center;gap:12px;padding:0;min-width:0}.notes-preview{display:flex;gap:6px;overflow:auto;padding:8px 0 14px}.note-chip{flex:none;font-size:10px;background:var(--soft);border-radius:9px;padding:8px 9px;min-width:37px;text-align:center}.note-chip small{display:block;opacity:.6;font-size:9px}.select-track{width:100%;text-align:left;border:1px solid var(--line);border-radius:17px;display:flex;align-items:center;gap:13px;padding:16px;margin:10px 0;background:var(--card)}.select-track>.icon{color:var(--sage-ink)}.select-track h3{font-size:14px}.select-track p{font-size:11px;color:var(--muted);margin-top:4px}.select-track:disabled{opacity:.55}.track-badge{font-size:10px;color:var(--orange);margin-top:3px;display:block}
.mic-hero{text-align:center;padding:10px 0 20px}.mic-orb{width:88px;height:88px;border-radius:50%;background:var(--sage);color:var(--pine);display:flex;align-items:center;justify-content:center;margin:0 auto 20px;box-shadow:0 0 0 12px #b6c5a311,0 0 0 24px #b6c5a308}.mic-orb .icon{width:33px;height:33px}.mic-hero h3{font-size:18px;margin-bottom:6px}.mic-hero p{font-size:12px;line-height:1.75;color:var(--muted);max-width:275px;margin:auto}.meter{height:8px;background:var(--line);border-radius:9px;overflow:hidden;margin:19px 0 7px}.meter-fill{height:100%;width:0;background:var(--sage-ink);border-radius:9px;transition:width .09s}.meter-label{display:flex;justify-content:space-between;font-size:9px;color:var(--muted)}.check-results{display:flex;flex-direction:column;gap:10px;margin:20px 0}.check-result{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px;padding-bottom:10px;border-bottom:1px solid var(--line)}.check-result span{color:var(--muted)}.check-result strong{font-size:12px;font-weight:550}.check-result .ok{color:var(--sage-ink)}.check-result .warn{color:var(--orange)}.check-timer{font-size:40px;letter-spacing:-1px;font-weight:300;margin:14px 0 4px;text-align:center}
.ear-session-top{display:flex;align-items:center;justify-content:space-between;font-size:11px;color:var(--muted);margin-bottom:20px}.ear-progress{width:100%;height:3px;border-radius:5px;background:var(--line);overflow:hidden;margin:-9px 0 26px}.ear-progress i{height:100%;background:var(--pine);display:block;transition:width .3s}.ear-visual{height:132px;display:flex;align-items:center;justify-content:center;gap:45px;position:relative}.ear-note{height:69px;width:69px;border-radius:50%;border:1px solid var(--line);background:var(--card);display:flex;align-items:center;justify-content:center;font-size:28px;font-weight:300;color:var(--muted);box-shadow:var(--shadow);transition:transform .25s,background .25s}.ear-note.playing{background:var(--sage);border-color:#b7c6a6;transform:scale(1.09);color:var(--pine);box-shadow:0 0 0 9px #b6c7a21a}.ear-between{color:var(--muted);font-size:18px;position:absolute;top:51px;left:calc(50% - 5px);opacity:.5}.ear-question{text-align:center;font-size:18px;font-weight:550;margin:17px 0 8px}.ear-question-sub{text-align:center;font-size:12px;color:var(--muted);margin-bottom:23px}.ear-answers{display:grid;grid-template-columns:1fr 1fr 1fr;gap:9px;margin-top:19px}.ear-answer{background:var(--soft);border:1px solid transparent;display:flex;flex-direction:column;align-items:center;gap:9px;border-radius:18px;padding:17px 6px;font-size:12px;min-height:86px}.ear-answer .icon{width:22px;height:22px}.ear-answer.selected{border-color:var(--pine);background:var(--sage)}.ear-answer.wrong{border-color:var(--orange);background:var(--amber-bg)}.ear-result{text-align:center;padding:17px 0 0;font-size:12px;line-height:1.8}.ear-result strong{display:block;font-size:16px;margin-bottom:5px;font-weight:550}.ear-score{font-size:65px;text-align:center;font-weight:300;letter-spacing:-3px;margin:15px 0 5px}.ear-score small{font-size:17px;color:var(--muted);letter-spacing:0}.match-stage{height:180px;position:relative;margin:15px 0;background:var(--soft);border-radius:20px;overflow:hidden}.match-line{position:absolute;left:25px;right:25px;top:50%;border-top:1px dashed #9aa88b}.match-label{position:absolute;right:14px;top:calc(50% - 22px);color:var(--muted);font-size:10px}.match-dot{position:absolute;left:calc(50% - 15px);top:calc(50% - 15px);width:30px;height:30px;border-radius:50%;background:var(--pine);box-shadow:0 0 0 9px #8395741c;transition:transform .15s}.match-stage.hidden-target .match-line,.match-stage.hidden-target .match-label{opacity:0}.match-end-labels{display:flex;justify-content:space-between;color:var(--muted);font-size:10px}
.result-top{text-align:center;padding:3px 0 17px}.result-emblem{width:52px;height:52px;border-radius:50%;background:var(--sage);display:flex;align-items:center;justify-content:center;color:var(--pine);margin:0 auto 13px}.result-top h3{font-size:22px;font-weight:550;letter-spacing:-.6px}.result-top p{font-size:12px;line-height:1.8;color:var(--muted);margin-top:7px}.result-metrics{display:grid;grid-template-columns:1fr 1fr;background:var(--soft);border-radius:20px;padding:19px 5px;margin:10px 0 17px}.result-metrics .stat b{font-size:28px}.result-notes{display:flex;flex-direction:column;gap:6px}.result-note{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:12px;background:var(--card);font-size:12px;width:100%;text-align:left;border:1px solid var(--line);min-height:45px}.result-note .note-no{font-size:10px;color:var(--muted);width:17px}.result-note .note-pitch{font-size:12px;font-weight:550;min-width:31px}.result-note .note-status{flex:1;font-size:11px;color:var(--muted)}.result-note .note-value{font-size:11px;color:var(--orange);font-variant-numeric:tabular-nums}.result-note.good .note-value{color:var(--sage-ink)}.result-note>.icon{width:13px;height:13px;color:var(--muted)}.result-record{display:flex;gap:8px;margin:18px 0 0}.result-record .btn{flex:1}.session-item{width:100%;display:flex;align-items:center;gap:12px;text-align:left;padding:14px 0;border-bottom:1px solid var(--line)}.session-item .session-badge{width:40px;height:40px;background:var(--sage);border-radius:13px;display:flex;align-items:center;justify-content:center;color:var(--sage-ink)}.session-item h3{font-size:13px}.session-item p{font-size:10px;color:var(--muted);margin-top:3px}.session-item .session-value{margin-left:auto;font-size:18px;letter-spacing:-.5px}.session-item .session-value small{display:block;font-size:9px;color:var(--muted);letter-spacing:0;text-align:right}.session-item>.icon{width:15px;color:var(--muted)}
.toast{position:fixed;left:50%;bottom:calc(98px + var(--safe-bottom));transform:translate(-50%,12px);max-width:calc(100% - 40px);width:max-content;padding:12px 18px;font-size:12px;line-height:1.65;border-radius:18px;z-index:80;pointer-events:none;opacity:0;transition:opacity .2s,transform .25s;color:var(--ink)}.toast.show{transform:translate(-50%,0);opacity:1}.loading-screen{padding:90px 0;text-align:center;color:var(--muted);font-size:13px}.loading-dot{display:block;width:12px;height:12px;background:var(--sage-ink);border-radius:50%;margin:0 auto 20px;animation:breathe 1s infinite alternate}.skip-link{position:fixed;top:-80px;left:10px;z-index:100;padding:10px;background:var(--card)}.skip-link:focus{top:10px}.noscript{padding:40px;text-align:center}.desktop-aside{display:none}.legal{font-size:11px;color:var(--muted);line-height:1.85}.legal p+p{margin-top:12px}.legal h3{font-size:13px;color:var(--ink);margin:18px 0 6px}.plain-links{display:flex;gap:15px;flex-wrap:wrap;margin-top:15px}.plain-links a{font-size:11px}.small-print{font-size:10px;line-height:1.8;color:var(--muted);margin-top:12px}.error-screen{padding:40px 0}.error-screen h2{margin-bottom:12px}.error-screen p{color:var(--muted);font-size:13px;margin-bottom:20px}.invisible{visibility:hidden}.hidden{display:none!important}.no-scroll{overflow:hidden}
@keyframes view-in{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}@keyframes sheet-in{from{transform:translateY(70px);opacity:0}to{transform:none;opacity:1}}@keyframes fade-in{from{opacity:0}to{opacity:1}}@keyframes wave{to{transform:scaleY(.45);opacity:.7}}@keyframes breathe{to{transform:scale(.7);opacity:.4}}
@media(min-width:760px){.app-shell{padding-top:10px}.sheet{margin-bottom:24px;border-radius:29px;max-height:86dvh}.sheet-backdrop{align-items:center}.app-header{margin-bottom:26px}h1{font-size:34px}.plot-wrap{height:200px}.ear-hero{min-height:320px}.ear-orbit{right:15px;top:68px;width:185px;height:185px}.ear-hero .btn{margin-top:76px}.bottom-nav{bottom:24px}.song-strip{padding:15px}.album{width:68px;height:74px}}
@media(min-width:1060px){.site-layout{display:grid;grid-template-columns:560px 1fr;gap:84px;align-items:start}.app-shell{margin:0;padding-left:26px;padding-right:26px}.bottom-nav{left:calc(50% - 280px);max-width:510px}.desktop-aside{display:block;position:sticky;top:170px;padding-top:170px}.aside-eyebrow{font-size:9px;letter-spacing:2.1px;color:var(--muted)}.desktop-aside h2{font-size:43px;line-height:1.48;letter-spacing:-1.8px;font-weight:400;margin-top:25px}.desktop-aside h2 em{font-style:normal;color:#819275}.desktop-aside p{font-size:12px;color:var(--muted);line-height:1.9;margin-top:27px}.aside-privacy{margin-top:23px;font-size:10px;letter-spacing:1px;color:var(--muted)}.aside-art{height:125px;width:260px;position:relative;margin-top:17px;overflow:hidden}.aside-art i{position:absolute;width:150px;height:150px;border:1px solid #a4b58d88;border-radius:50%;top:14px;left:12px;transform:rotate(-25deg) scaleY(.56)}.aside-art i:nth-child(2){left:56px;top:1px}.aside-art i:nth-child(3){left:100px;top:-12px}.aside-art span{position:absolute;width:12px;height:12px;background:#66815e;border-radius:50%;left:167px;top:81px;box-shadow:0 0 0 6px #bac9a733}.ambient i:first-child{right:10%;top:-50px;width:600px;height:600px;opacity:.35}.ambient i:last-child{left:4%;top:350px;width:480px;height:400px;opacity:.6}}
@media(max-width:365px){.app-shell{padding-left:17px;padding-right:17px}h1{font-size:27px}.brand-wordmark{display:none}.tool-button{font-size:10px;padding:0 3px}.practice-stage{padding-left:15px;padding-right:15px}.transport{grid-template-columns:1fr 1.45fr}.btn{font-size:13px;padding-left:11px;padding-right:11px}.sheet{padding-left:19px;padding-right:19px}.ear-answers{gap:6px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
body.reduce-motion *,body.reduce-motion *:before,body.reduce-motion *:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
@supports not (backdrop-filter:blur(1px)){.glass{background:var(--paper)}.sheet-backdrop{background:#17251c85}}
/* The primary action must remain above the dock on an actual phone viewport. */
@media(max-width:759px){
 .app-header{height:calc(66px + var(--safe-top));margin-bottom:12px;padding-top:max(12px,var(--safe-top))}
 .view-studio .page-intro{margin-bottom:18px}
 .view-studio .page-intro .eyebrow,.view-studio .page-intro p{display:none}
 .view-studio .song-strip{padding:11px;margin-bottom:17px}
 .view-studio .album{width:58px;height:61px}
 .view-studio .segmented{margin-bottom:12px}
 .view-studio .phrase-heading{margin-bottom:8px}
 .view-studio .plot-wrap{height:135px}
 .view-studio .single .plot-wrap{height:106px}
 .view-studio .transport{margin-top:14px}
 .view-studio .tip-card{margin-top:19px}
}
@media(max-width:759px) and (max-height:760px){
 .app-header{height:calc(55px + var(--safe-top));margin-bottom:8px;padding-top:max(6px,var(--safe-top))}
 .view-studio .page-intro{margin-bottom:13px}
 .view-studio h1{font-size:26px}
 .view-studio .song-strip{margin-bottom:13px;padding:9px 11px}
 .view-studio .album{width:51px;height:53px}
 .view-studio .segmented{margin-bottom:7px}
 .view-studio .segmented button{min-height:34px}
 .view-studio .practice-stage{padding-top:15px;padding-bottom:13px}
 .view-studio .plot-wrap{height:129px;margin-top:7px}
 .view-studio .single .plot-wrap{height:88px}
 .view-studio .single-target{gap:26px;margin:5px 0 8px}
 .view-studio .target-note{font-size:32px}
 .view-studio .transport{margin-top:12px}
 .view-studio .coach-note{padding-top:3px}
 .view-studio .tip-card{margin-top:13px}
}

@media(max-width:759px) and (max-height:700px){
 .view-studio .plot-wrap{height:99px}
 .view-studio .single .plot-wrap{height:80px}
 .view-studio .song-strip{margin-bottom:10px}
 .view-studio .transport{margin-top:10px}
}

.view-studio.is-single .song-strip{display:none}
