@font-face{font-family:Space Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/ae822095a172cc5c-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Space Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/3c70c5716f1730b3-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Space Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/fc727f226c737876-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Space Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/77fb5eec12c66d49-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Space Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/281dae1e814de8c6-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Space Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/806de4d605d3ad01-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Space Mono Fallback;src:local("Arial");ascent-override:81.58%;descent-override:26.30%;line-gap-override:0.00%;size-adjust:137.28%}.__className_e8b655{font-family:Space Mono,Space Mono Fallback;font-style:normal}.__variable_e8b655{--font-mono:"Space Mono","Space Mono Fallback"}@font-face{font-family:Bai Jamjuree;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/2dd011bd4b4fc303-s.p.woff2) format("woff2");unicode-range:u+02d7,u+0303,u+0331,u+0e01-0e5b,u+200c-200d,u+25cc}@font-face{font-family:Bai Jamjuree;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/958a711b2e583ad1-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Bai Jamjuree;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/c6a2710c82995c59-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Bai Jamjuree;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/46fe284ea6b208dc-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Bai Jamjuree;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/36eb08c333fd876e-s.p.woff2) format("woff2");unicode-range:u+02d7,u+0303,u+0331,u+0e01-0e5b,u+200c-200d,u+25cc}@font-face{font-family:Bai Jamjuree;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/d3d40dfafe168921-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Bai Jamjuree;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/257a6a4ad8e88015-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Bai Jamjuree;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/dcb7dbe335a6f155-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Bai Jamjuree;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/346ee2e552632e34-s.p.woff2) format("woff2");unicode-range:u+02d7,u+0303,u+0331,u+0e01-0e5b,u+200c-200d,u+25cc}@font-face{font-family:Bai Jamjuree;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/18302be3738c81c5-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Bai Jamjuree;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/f3bb21e89cf2f112-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Bai Jamjuree;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/62f8ef394edf20f4-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Bai Jamjuree;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/c746c9eb8f9978c2-s.p.woff2) format("woff2");unicode-range:u+02d7,u+0303,u+0331,u+0e01-0e5b,u+200c-200d,u+25cc}@font-face{font-family:Bai Jamjuree;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/2b72e4f74070c77f-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Bai Jamjuree;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/87e817c59b3ec25d-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Bai Jamjuree;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/b682ab4e94fdbfaf-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Bai Jamjuree Fallback;src:local("Arial");ascent-override:96.70%;descent-override:24.18%;line-gap-override:0.00%;size-adjust:103.41%}.__className_9d19b4{font-family:Bai Jamjuree,Bai Jamjuree Fallback;font-style:normal}.__variable_9d19b4{--font-thai:"Bai Jamjuree","Bai Jamjuree Fallback"}:root{--font-mono:var(--font-mono,"Space Mono"),"IBM Plex Mono",ui-monospace,monospace;--font-thai:var(--font-thai,"Bai Jamjuree"),"Noto Sans Thai","Sarabun",sans-serif;--bg-deep:#070f0b;--bg-panel:#0d1a13;--bg-panel-raised:#112318;--bg-chassis:#16281e;--bg-canvas:#081410;--phosphor:#33ff99;--phosphor-bright:#8dffca;--phosphor-dim:#1c7e51;--phosphor-glow:rgba(51,255,153,0.55);--phosphor-glow-soft:rgba(51,255,153,0.18);--amber:#ffb200;--amber-bright:#ffd166;--amber-glow:rgba(255,178,0,0.5);--amber-glow-soft:rgba(255,178,0,0.16);--ink:#d8f3e3;--ink-dim:#7fa694;--border-etched:#1b3226;--border-etched-light:rgba(147,255,200,0.08)}*{box-sizing:border-box}body,html{padding:0;margin:0}body{font-family:var(--font-thai);background:radial-gradient(ellipse 900px 500px at 50% -8%,rgba(51,255,153,.07),transparent 60%),repeating-linear-gradient(0deg,rgba(51,255,153,.035),rgba(51,255,153,.035) 1px,transparent 0,transparent 40px),repeating-linear-gradient(90deg,rgba(51,255,153,.035),rgba(51,255,153,.035) 1px,transparent 0,transparent 40px),linear-gradient(180deg,#0a160f,#060b08);background-attachment:fixed;color:var(--ink);line-height:1.6;position:relative;min-height:100vh}body:before{content:"";position:fixed;inset:0;pointer-events:none;background:repeating-linear-gradient(0deg,rgba(0,0,0,.15),rgba(0,0,0,.15) 1px,transparent 0,transparent 3px);opacity:.28;mix-blend-mode:overlay;z-index:999}button{font-family:inherit;cursor:pointer}button:disabled{cursor:not-allowed;opacity:.45}main{max-width:480px;margin:0 auto;padding:20px 16px 48px;display:flex;flex-direction:column;gap:20px;position:relative}@media (min-width:700px){main{max-width:560px;padding-top:28px}}@media (min-width:1024px){main{max-width:980px;padding:36px 32px 72px}}header.app-header{text-align:center;padding:20px 16px 16px;border-bottom:1px solid var(--border-etched);box-shadow:0 1px 0 var(--border-etched-light);max-width:480px;margin:0 auto}@media (min-width:700px){header.app-header{max-width:560px}}@media (min-width:1024px){header.app-header{max-width:980px}}header.app-header h1{font-size:1.4rem;margin:0 0 4px;color:var(--phosphor-bright);text-shadow:0 0 12px var(--phosphor-glow-soft);letter-spacing:.3px;text-wrap:balance}header.app-header p{margin:0 auto;max-width:42ch;color:var(--ink-dim);font-size:.85rem;text-wrap:pretty}.nav-buttons{display:flex;gap:8px;margin-top:14px}.btn,.nav-buttons{justify-content:center}.btn{display:inline-flex;align-items:center;gap:6px;padding:10px 16px;border-radius:8px;border:none;background:var(--bg-panel-raised);color:var(--ink);font-size:.9rem;font-weight:600;border:1px solid var(--border-etched)}.btn.btn-outline{background:transparent;border:1.5px solid var(--phosphor-dim);color:var(--phosphor)}footer.app-footer{text-align:center;padding:24px 16px 8px;font-size:.78rem;color:var(--ink-dim);letter-spacing:.2px}.privacy-banner{display:flex;align-items:flex-start;gap:10px;background:var(--bg-panel);border:1px solid var(--phosphor-dim);border-radius:10px;padding:12px 14px;font-size:.8rem;color:var(--phosphor-bright);box-shadow:inset 0 0 0 1px rgba(0,0,0,.3),0 0 16px var(--phosphor-glow-soft)}.privacy-banner-icon{font-size:1.1rem;line-height:1}.privacy-banner span:last-child{max-width:56ch;text-wrap:pretty}.mode-tabs{display:flex;gap:6px;background:var(--bg-panel);border:1px solid var(--border-etched);border-radius:10px;padding:4px}.mode-tabs button{flex:1 1;border:none;background:transparent;color:var(--ink-dim);padding:10px 6px;border-radius:7px;font-size:.9rem;font-weight:600}.mode-tabs button[aria-pressed=true]{background:var(--bg-panel-raised);color:var(--phosphor-bright);box-shadow:inset 0 0 0 1px var(--phosphor-dim),0 0 10px var(--phosphor-glow-soft)}.mode-tabs button:nth-of-type(2)[aria-pressed=true]{color:var(--amber-bright);box-shadow:inset 0 0 0 1px var(--amber),0 0 10px var(--amber-glow-soft)}.instrument-chassis,.whistle-app{display:flex;flex-direction:column;gap:18px}.instrument-chassis{background:var(--bg-chassis);border:1px solid var(--border-etched);border-radius:18px;padding:18px 16px;box-shadow:inset 0 1px 0 var(--border-etched-light),inset 0 0 32px rgba(0,0,0,.4),0 14px 36px rgba(0,0,0,.45)}@media (min-width:1024px){.instrument-chassis .mode-tabs{max-width:420px}}.instrument-chassis-theremin{border-color:rgba(255,178,0,.28);box-shadow:inset 0 1px 0 var(--border-etched-light),inset 0 0 32px rgba(0,0,0,.4),0 0 26px var(--amber-glow-soft)}.stage-controls,.stage-grid{display:flex;flex-direction:column;align-items:center;gap:16px}.stage-controls{width:100%}.stage-display{display:flex;flex-direction:column;gap:14px;width:100%}.stage-status{font-size:.85rem;color:var(--ink-dim);text-align:center;min-height:1.4em;max-width:40ch;text-wrap:pretty}.stage-status-warn{color:var(--amber-bright)}@media (min-width:1024px){.instrument-chassis{padding:28px 28px 32px;border-radius:22px}.stage-grid{flex-direction:row;align-items:flex-start;gap:32px}.stage-controls{flex:0 0 240px;padding-top:4px}.stage-display{flex:1 1;min-width:0}}.listen-button{position:relative;width:140px;height:140px;border-radius:50%;border:3px solid var(--border-etched);background:radial-gradient(circle at 35% 30%,#123422,#0a1a12 72%);color:var(--phosphor);font-size:.92rem;font-weight:700;display:flex;align-items:center;justify-content:center;text-shadow:0 0 8px var(--phosphor-glow-soft);box-shadow:0 0 0 4px #050a07,0 10px 26px rgba(0,0,0,.6),inset 0 2px 4px rgba(255,255,255,.05),inset 0 -8px 14px rgba(0,0,0,.5);text-align:center;padding:8px}.listen-button:before{content:"";position:absolute;inset:-9px;border-radius:50%;border:2px solid transparent;pointer-events:none}.listen-button-active{background:radial-gradient(circle at 35% 30%,#1c5c39,#0e2b1a 72%);color:var(--phosphor-bright)}.listen-button-active:before{border-color:var(--phosphor);box-shadow:0 0 14px 2px var(--phosphor-glow),inset 0 0 10px var(--phosphor-glow)}.listen-button-theremin.listen-button-active{background:radial-gradient(circle at 35% 30%,#5c4212,#2b1f0a 72%);color:var(--amber-bright)}.listen-button-theremin.listen-button-active:before{border-color:var(--amber);box-shadow:0 0 14px 2px var(--amber-glow),inset 0 0 10px var(--amber-glow)}@media (prefers-reduced-motion:no-preference){.listen-button-active:before{animation:led-pulse 1.6s ease-in-out infinite}}@keyframes led-pulse{0%,to{opacity:1}50%{opacity:.55}}.listen-button:active{transform:scale(.97)}.pitch-trace-canvas{height:140px;display:block;border-radius:10px;background:var(--bg-canvas);box-shadow:inset 0 0 24px rgba(0,0,0,.5)}.pitch-trace-canvas,.recording-progress{width:100%;border:1px solid var(--border-etched)}.recording-progress{height:6px;background:var(--bg-deep);border-radius:3px;overflow:hidden}.recording-progress-fill{height:100%;background:linear-gradient(90deg,var(--phosphor-dim),var(--phosphor));box-shadow:0 0 8px var(--phosphor-glow);transition:width .1s linear}.demo-hint{text-align:center;font-size:.8rem;color:var(--ink-dim)}.demo-hint button{background:none;border:none;color:var(--phosphor);font-weight:600;padding:2px 4px;text-decoration:underline}.results{display:flex;flex-direction:column;gap:10px}.results-heading{font-size:.9rem;color:var(--ink-dim);margin:0;text-align:center}.results-row{display:flex;flex-direction:column;gap:10px}@media (min-width:1024px){.results-row{flex-direction:row;flex-wrap:wrap;align-items:stretch}.results-row .result-card{flex:1 1 220px}}.result-card{background-color:var(--bg-panel);background-image:radial-gradient(var(--phosphor-glow-soft) 1px,transparent 1px);background-size:7px 7px;border:1px solid var(--border-etched);border-radius:10px;padding:12px 14px;display:flex;flex-direction:column;gap:8px;flex:1 1}.result-card-rank1{border-color:var(--phosphor-dim);box-shadow:0 0 16px var(--phosphor-glow-soft)}.result-card-top{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.result-card-name{font-weight:700;font-size:1rem;text-wrap:pretty}.result-card-rank{color:var(--phosphor);letter-spacing:.5px;margin-right:2px}.result-card-confidence,.result-card-rank{font-family:var(--font-mono);font-weight:700}.result-card-confidence{font-size:.8rem;color:var(--phosphor-bright)}.confidence-bar{width:100%;height:9px;background:var(--bg-deep);border:1px solid var(--border-etched);border-radius:3px;overflow:hidden;margin-top:auto}.confidence-bar-fill{height:100%;background-image:linear-gradient(90deg,var(--phosphor-dim),var(--phosphor) 72%,var(--amber) 96%),repeating-linear-gradient(90deg,transparent 0 5px,rgba(6,14,11,.85) 5px 7px);box-shadow:0 0 8px var(--phosphor-glow)}.result-joke{color:var(--ink-dim);margin:0}.result-joke,.theremin-hint{text-align:center;font-size:.82rem}.theremin-hint{color:var(--amber-bright);opacity:.85;margin:0 auto;max-width:40ch;text-wrap:pretty}.method-content{max-width:68ch;margin:0 auto}.method-content h2{font-size:1.05rem;margin-top:28px;color:var(--phosphor-bright);text-wrap:balance}.method-content p{text-wrap:pretty}.method-content ul{padding-left:20px}.method-content strong{color:var(--phosphor);font-weight:700}.tune-list{column-count:2;gap:8px;padding-left:18px;font-size:.88rem}.tune-list li{text-wrap:pretty}@media (max-width:360px){.tune-list{column-count:1}}