:root{color:#18342e;font-synthesis:none;text-rendering:optimizelegibility;--forest:#163f37;--mint:#68b99d;--cream:#fbfaf5;--ink-muted:#6c7b75;--danger:#bd5b4f;background:#f3f0e8;font-family:Inter,PingFang SC,Microsoft YaHei,system-ui,sans-serif}*{box-sizing:border-box}body{background:radial-gradient(circle at 85% 4%,#dce8d9 0,#0000 28rem),#f3f0e8;min-width:320px;min-height:100vh;margin:0}button,input{font:inherit}button{-webkit-tap-highlight-color:transparent}.app-shell{width:min(100%,760px);min-height:100vh;padding:max(20px, env(safe-area-inset-top)) 18px max(28px, env(safe-area-inset-bottom));margin:0 auto}.site-header{align-items:center;gap:12px;margin-bottom:26px;display:flex}.site-header>div:nth-child(2){flex:1}.site-header p,.site-header h1{margin:0}.site-header p{color:var(--ink-muted);letter-spacing:.12em;font-size:12px}.site-header h1{font-family:Georgia,Songti SC,serif;font-size:clamp(21px,5vw,28px);font-weight:600}.site-header a{color:var(--forest);background:#ffffff80;border-radius:999px;padding:8px 10px;font-size:12px;text-decoration:none}.brand-mark{color:#fff;background:var(--forest);border-radius:50% 50% 44% 56%;place-items:center;width:46px;height:46px;font-family:Georgia,serif;display:grid;box-shadow:0 8px 22px #163f3726}.intro-panel{grid-template-columns:1fr auto;align-items:end;gap:18px;margin-bottom:18px;display:grid}.eyebrow{color:#8b6232;letter-spacing:.08em;margin-bottom:8px;font-size:12px;display:inline-block}.intro-panel h2{letter-spacing:-.02em;max-width:520px;margin:0;font-family:Georgia,Songti SC,serif;font-size:clamp(26px,7vw,42px);font-weight:500;line-height:1.18}.intro-panel p{color:var(--ink-muted);margin:10px 0 0;font-size:14px}.target-input{color:var(--ink-muted);flex-direction:column;gap:7px;font-size:12px;display:flex}.target-input input{width:112px;color:var(--forest);font-variant-numeric:tabular-nums;background:#ffffffa8;border:1px solid #cbd4cd;border-radius:12px;outline:none;padding:10px 12px}.target-input input:focus{border-color:var(--mint);box-shadow:0 0 0 3px #68b99d2e}.recommend-badge{background:#f8faf4aa;border:1px solid #cbd8ce;border-radius:17px;min-width:132px;padding:13px 15px}.recommend-badge span,.recommend-badge strong{display:block}.recommend-badge span{color:var(--ink-muted);margin-bottom:4px;font-size:11px}.recommend-badge strong{font-variant-numeric:tabular-nums;font-size:18px}.tuner-card{background:var(--cream);border:1px solid #d8ddd4;border-radius:28px;overflow:hidden;box-shadow:0 22px 60px #24473a14}.tuner-card__target{color:var(--ink-muted);border-bottom:1px solid #e1e4dd;justify-content:space-between;align-items:center;gap:20px;padding:13px 20px;font-size:13px;display:flex}.target-picker{flex:1;grid-template-columns:minmax(145px,1.25fr) minmax(145px,1fr);gap:5px 10px;min-width:0;display:grid}.target-picker__field{flex-direction:column;gap:4px;min-width:0;display:flex}.target-picker__field>span{color:var(--ink-muted);letter-spacing:.06em;font-size:10px}.target-picker select{width:100%;min-height:36px;color:var(--forest);cursor:pointer;background:#fff;border:1px solid #cad4cd;border-radius:10px;outline:none;padding:7px 30px 7px 10px;font-size:13px;font-weight:650}.target-picker select:focus{border-color:var(--mint);box-shadow:0 0 0 3px #68b99d2e}.target-picker select:disabled{cursor:not-allowed;opacity:.62}.target-picker__meta{color:#84908b;text-overflow:ellipsis;white-space:nowrap;grid-column:1/-1;font-size:9px;overflow:hidden}.tuner-target-frequency{text-align:right;flex:none;min-width:112px}.tuner-target-frequency>span{color:var(--ink-muted);margin-bottom:3px;font-size:10px;display:block}.tuner-target-frequency strong{color:var(--forest);font-variant-numeric:tabular-nums;font-size:20px;display:block}.tuner-target-frequency small{font-size:10px;font-weight:500}.tuner-card__reading{text-align:center;padding:28px 20px 16px;position:relative}.frequency-value{font-variant-numeric:tabular-nums;justify-content:center;align-items:baseline;gap:8px;display:flex}.frequency-value strong{letter-spacing:-.05em;font-family:Georgia,serif;font-size:clamp(62px,18vw,104px);font-weight:400;line-height:.9}.frequency-value span{color:var(--ink-muted);font-size:16px}.note-badge{color:#fff;background:var(--forest);border-radius:999px;place-items:center;min-width:62px;min-height:34px;margin-top:18px;padding:6px 14px;font-size:17px;font-weight:700;display:inline-grid}.accuracy-text{min-height:22px;color:var(--ink-muted);margin:12px 0 0;font-size:14px}.accuracy-text--precise{color:#218565;font-weight:700}.accuracy-text--qualified{color:#5c8c3d}.accuracy-text--close{color:#b1782d}.accuracy-text--far{color:var(--danger)}.pitch-gauge{margin:10px 20px 26px;padding-top:28px;position:relative}.pitch-gauge__zones{border-radius:999px;grid-template-columns:25fr 15fr 20fr 15fr 25fr;height:14px;display:grid;overflow:hidden}.zone--close{background:#eed8a9}.zone--qualified{background:#bddbb6}.zone--precise{background:#64b99b}.pitch-gauge__center{background:var(--forest);width:2px;height:30px;position:absolute;top:20px;left:50%;transform:translate(-1px)}.pitch-gauge__needle{background:var(--danger);width:2px;height:38px;transition:left 80ms linear;position:absolute;top:4px;transform:translate(-1px)}.pitch-gauge__needle span{background:inherit;border-radius:50%;width:12px;height:12px;position:absolute;top:-2px;left:50%;transform:translate(-50%,-50%);box-shadow:0 2px 8px #0002}.pitch-gauge--precise .pitch-gauge__needle{background:#198263}.pitch-gauge__labels{color:#89948f;justify-content:space-between;margin-top:7px;font-size:9px;display:flex}.pitch-gauge__directions{color:var(--ink-muted);grid-template-columns:1fr 1fr 1fr;margin-top:8px;font-size:11px;display:grid}.pitch-gauge__directions span:nth-child(2){text-align:center}.pitch-gauge__directions span:last-child{text-align:right}.metric-grid{background:#f6f5ef;border-top:1px solid #e1e4dd;grid-template-columns:repeat(4,1fr);display:grid}.metric{border-right:1px solid #e1e4dd;padding:16px 14px}.metric:last-child{border-right:0}.metric span{color:var(--ink-muted);margin-bottom:5px;font-size:11px;display:block}.metric strong{font-variant-numeric:tabular-nums;font-size:15px}.mini-bar{background:#dfe4df;border-radius:10px;height:3px;margin-top:9px;overflow:hidden}.mini-bar i{border-radius:inherit;background:var(--mint);height:100%;transition:width .12s;display:block}.control-panel{background:#e7e7dc;border-radius:22px;justify-items:center;gap:13px;margin-top:18px;padding:18px;display:grid}.primary-button{color:#fff;background:var(--forest);cursor:pointer;border:0;border-radius:17px;width:min(100%,360px);min-height:54px;padding:14px 22px;font-weight:700;box-shadow:0 10px 24px #163f3730}.primary-button:disabled{opacity:.6;cursor:wait}.primary-button--stop{background:#7b4b41}.microphone-selector{background:#f7f7f1;border:1px solid #ced4ce;border-radius:14px;grid-template-columns:auto minmax(190px,1fr);align-items:center;gap:5px 10px;width:min(100%,500px);padding:10px 12px;display:grid}.microphone-selector>span{color:var(--forest);font-size:12px;font-weight:700}.microphone-selector select{width:100%;min-width:0;color:var(--forest);background:#fff;border:1px solid #c2ccc4;border-radius:9px;outline:none;padding:8px 30px 8px 10px;font-size:12px}.microphone-selector select:focus{border-color:var(--mint);box-shadow:0 0 0 3px #68b99d2e}.microphone-selector select:disabled{opacity:.6;cursor:wait}.microphone-selector small{color:var(--ink-muted);grid-column:1/-1;font-size:9px;line-height:1.45}.status-pill{color:var(--ink-muted);align-items:center;gap:8px;font-size:12px;display:flex}.status-pill span{background:#a9afa9;border-radius:50%;width:7px;height:7px}.status-pill--active span{background:#25a274;box-shadow:0 0 0 4px #25a2741f}.error-message{color:#8d3b32;background:#f2dcd7;border-radius:10px;margin:0;padding:10px 12px;font-size:13px}.range-warning{color:#815e31;background:#f7edd8;border:1px solid #dccaa9;border-radius:12px;margin:10px 4px 0;padding:10px 12px;font-size:11px;line-height:1.5}.reference-tone{z-index:2;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#f7f6f0e8;border:1px solid #d4dbd5;border-radius:12px;gap:6px;width:112px;padding:7px;display:grid;position:absolute;top:13px;right:13px;box-shadow:0 7px 18px #24473a12}.reference-tone button{min-height:34px;color:var(--forest);white-space:nowrap;cursor:pointer;background:#fff;border:1px solid #b8c5bc;border-radius:9px;padding:7px 8px;font-size:11px;font-weight:700}.reference-tone button:hover{border-color:var(--mint)}.reference-tone button:disabled{opacity:.58;cursor:wait}.reference-tone button.is-playing{color:#fff;background:#9b6847;border-color:#9b6847}.reference-tone label{color:var(--ink-muted);grid-template-columns:auto 1fr;align-items:center;gap:5px;font-size:9px;display:grid}.reference-tone select{width:100%;min-width:0;color:var(--forest);background:#fff;border:1px solid #c9d1ca;border-radius:6px;padding:3px 2px;font-size:9px}.reference-tone__frequency{color:var(--forest);font-variant-numeric:tabular-nums;text-align:center;font-size:9px}.reference-tone input{width:100%;min-width:0;height:12px;accent-color:var(--forest);margin:0}.section-card{background:#faf9f4;border:1px solid #d8ddd4;border-radius:24px;margin-top:18px;padding:22px}.section-heading{justify-content:space-between;align-items:end;gap:14px;margin-bottom:18px;display:flex}.section-heading h2{margin:0;font-family:Georgia,Songti SC,serif;font-size:26px;font-weight:500}.section-heading .eyebrow{margin-bottom:4px}.section-heading>p{color:var(--ink-muted);margin:0;font-size:12px}.auto-button{color:var(--forest);cursor:pointer;background:0 0;border:1px solid #c6cec8;border-radius:999px;padding:9px 12px}.auto-button.is-active{color:#fff;border-color:var(--forest);background:var(--forest)}.meridian-grid{grid-template-columns:repeat(6,1fr);gap:7px;display:grid}.meridian-grid button{min-width:0;color:var(--forest);cursor:pointer;background:#f1f1e9;border:1px solid #d5dad4;border-radius:13px;flex-direction:column;align-items:start;padding:10px;display:flex}.meridian-grid button.is-selected{color:#fff;border-color:var(--forest);background:var(--forest);box-shadow:0 8px 18px #163f3722}.meridian-grid strong{white-space:nowrap;font-size:13px}.meridian-grid span{opacity:.68;margin-top:3px;font-size:10px}.selected-target{border-top:1px solid #dfe2dc;grid-template-columns:170px 1fr;gap:18px;margin-top:18px;padding-top:18px;display:grid}.selected-target>div:first-child span,.selected-target>div:first-child strong,.selected-target>div:first-child small{display:block}.selected-target>div:first-child span{color:var(--ink-muted);font-size:11px}.selected-target>div:first-child strong{margin:5px 0;font-size:15px}.selected-target>div:first-child small{color:#946b3f;font-size:10px;line-height:1.5}.multiplier-control{grid-template-columns:repeat(4,1fr);gap:7px;display:grid}.multiplier-control button{color:var(--forest);cursor:pointer;background:#fff;border:1px solid #d1d7d1;border-radius:12px;padding:8px 4px}.multiplier-control button>*{display:block}.multiplier-control span{color:var(--ink-muted);font-size:10px}.multiplier-control strong{margin-top:3px;font-size:13px}.multiplier-control small{color:var(--ink-muted);font-size:9px}.multiplier-control button.is-selected{color:#fff;background:#4f947d;border-color:#4f947d}.multiplier-control button.is-selected span,.multiplier-control button.is-selected small{color:#eafff7}.range-test-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.range-test-grid>div{background:#edeee6;border-radius:15px;padding:15px}.range-test-grid span,.range-test-grid strong{display:block}.range-test-grid span{color:var(--ink-muted);font-size:11px}.range-test-grid strong{min-height:22px;margin:5px 0 11px;font-size:14px}.range-test-grid button{color:#fff;background:var(--forest);cursor:pointer;border:0;border-radius:10px;width:100%;padding:9px}.range-test-grid button:disabled{opacity:.45;cursor:not-allowed}.section-note{color:var(--ink-muted);margin:12px 0 0;font-size:11px;line-height:1.6}.auto-button:disabled,.meridian-grid button:disabled,.multiplier-control button:disabled{cursor:not-allowed;opacity:.55}.text-button{color:var(--forest);cursor:pointer;background:#fff;border:1px solid #bdcac1;border-radius:999px;padding:9px 12px}.session-control{background:#eaebe4;border-radius:17px;justify-content:space-between;align-items:center;gap:18px;padding:16px 18px;display:flex}.session-control--running{color:#fff;background:var(--forest);box-shadow:0 10px 28px #163f3724}.session-control>div:first-child span,.session-control>div:first-child strong{display:block}.session-control>div:first-child span{opacity:.68;font-size:11px}.session-control>div:first-child strong{font-variant-numeric:tabular-nums;margin-top:3px;font-size:27px}.session-buttons{gap:7px;display:flex}.session-buttons button{min-width:86px;color:var(--forest);cursor:pointer;background:#fff;border:1px solid #bfc8c0;border-radius:11px;padding:10px 13px}.session-buttons button:disabled{opacity:.55;cursor:not-allowed}.session-buttons .session-primary{color:#fff;border-color:var(--forest);background:var(--forest)}.session-control--running .session-buttons button{border-color:#fff5}.session-control--running .session-buttons .session-finish{color:#fff;background:#ffffff20}.empty-records{color:var(--ink-muted);text-align:center;flex-direction:column;align-items:center;gap:4px;padding:28px 12px 12px;display:flex}.empty-records strong{color:var(--forest);font-size:14px}.empty-records span{font-size:11px}.records-list{gap:9px;margin-top:13px;display:grid}.records-list article{background:#fff;border:1px solid #e0e3dd;border-radius:14px;padding:14px}.record-title{justify-content:space-between;align-items:center;margin-bottom:11px;display:flex}.record-title strong{font-size:14px}.record-title time{color:var(--ink-muted);font-size:10px}.record-metrics{grid-template-columns:repeat(5,1fr);gap:7px;display:grid}.record-metrics span{color:var(--ink-muted);font-size:9px}.record-metrics strong{color:var(--forest);font-variant-numeric:tabular-nums;margin-top:3px;font-size:11px;display:block}.clear-button{color:#9a655c;cursor:pointer;background:0 0;border:0;margin:14px auto 0;padding:6px 10px;font-size:10px;display:block}.install-card{color:#fff;background:#9b6847;border-radius:18px;justify-content:space-between;align-items:center;gap:18px;margin-top:18px;padding:16px 18px;display:flex}.install-card strong,.install-card span{display:block}.install-card strong{font-size:14px}.install-card span{opacity:.75;margin-top:4px;font-size:10px;line-height:1.5}.install-card button{color:#744a31;cursor:pointer;background:#fff;border:0;border-radius:10px;flex:none;padding:9px 13px;font-weight:700}.install-card p{max-width:210px;margin:0;font-size:11px;line-height:1.5}footer{color:#75817d;text-align:center;padding:26px 12px 4px;font-size:11px;line-height:1.6}@media (width<=560px){.app-shell{padding-inline:12px}.site-header a{display:none}.intro-panel{grid-template-columns:1fr}.recommend-badge{justify-content:space-between;align-items:center;display:flex}.recommend-badge span{margin:0}.tuner-card{border-radius:22px}.metric-grid{grid-template-columns:repeat(2,1fr)}.metric:nth-child(2){border-right:0}.metric:nth-child(-n+2){border-bottom:1px solid #e1e4dd}.metric{padding:13px 14px}.pitch-gauge{margin-inline:14px}.section-card{padding:17px 14px}.section-heading{align-items:center}.session-control{flex-direction:column;align-items:stretch}.session-buttons{grid-template-columns:1fr 1fr;display:grid}.session-buttons button:only-child{grid-column:1/-1}.meridian-grid{grid-template-columns:repeat(4,1fr)}.selected-target{grid-template-columns:1fr;gap:12px}.range-test-grid{grid-template-columns:1fr}.record-metrics{grid-template-columns:repeat(2,1fr)}.install-card{flex-direction:column;align-items:stretch}.install-card p{max-width:none}.tuner-card__target{flex-direction:column;align-items:stretch;gap:10px;padding:13px 14px}.target-picker{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.target-picker select{font-size:12px}.tuner-target-frequency{text-align:left;border-top:1px solid #e1e4dd;justify-content:space-between;align-items:baseline;min-width:0;padding-top:9px;display:flex}.tuner-target-frequency>span{margin:0}.tuner-target-frequency strong{font-size:19px}.reference-tone{width:106px;padding:6px;top:11px;right:11px}.reference-tone button{font-size:10px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important}}
