@font-face{font-family:IBM Plex Sans Thai;font-weight:400;font-display:swap;src:url(/fonts/plex-thai-thai-400.woff2) format("woff2");unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:IBM Plex Sans Thai;font-weight:600;font-display:swap;src:url(/fonts/plex-thai-thai-600.woff2) format("woff2");unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}@font-face{font-family:IBM Plex Sans Thai;font-weight:400;font-display:swap;src:url(/fonts/plex-thai-latin-400.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans Thai;font-weight:600;font-display:swap;src:url(/fonts/plex-thai-latin-600.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg: #EEF3F8;--bg-2: #F7FAFD;--glow: #D3ECF6;--surface: #FFFFFF;--surface-2: #E9F4FA;--line: #CFDAE6;--line-soft: #E1E8F0;--text: #0F1B2D;--muted: #56667D;--faint: #7D8BA0;--accent: #0BA7CB;--accent-2: #07809F;--accent-soft: rgba(11, 167, 203, .1);--accent-ring: rgba(11, 167, 203, .45);--accent-glow: rgba(11, 167, 203, .22);--btn-1: #4FDCF7;--btn-2: #19BCE2;--btn-ink: #03222C;--mark-1: #D6F1FA;--mark-2: #B9E4F2;--core-1: #FFFFFF;--core-2: #E7F2F9;--ic-bg: #E2F4FA;--tick: #C7D3E0;--tick-long: #8C9BB0;--warn: #B86E00;--warn-bg: rgba(255, 181, 71, .14);--warn-line: rgba(214, 140, 20, .35);--warn-text: #6E4A10;--danger: #D93A4C;--danger-bg: rgba(217, 58, 76, .07);--danger-line: rgba(217, 58, 76, .5);--ok: #129A68;--ok-bg: rgba(18, 154, 104, .1);--ok-line: rgba(18, 154, 104, .25);--badge-1: #DDF6EC;--badge-2: #F3FBF8;--knob: #FFFFFF;--switch-off-knob: #FFFFFF;--scrim: rgba(15, 27, 45, .38);--shadow: rgba(30, 50, 80, .14);--r-xl: 28px;--r-lg: 20px;--r-md: 14px;--font: "IBM Plex Sans Thai", "Sukhumvit Set", "Noto Sans Thai", system-ui, sans-serif;color-scheme:light}[data-theme=dark]{--bg: #0A101C;--bg-2: #0E1626;--glow: #12304A;--surface: #131C2E;--surface-2: #1A2539;--line: #24324A;--line-soft: #1C283D;--text: #EAF0F8;--muted: #8C99B0;--faint: #5A6780;--accent: #3DD6F5;--accent-2: #8BEBFF;--accent-soft: rgba(61, 214, 245, .06);--accent-ring: rgba(61, 214, 245, .45);--accent-glow: rgba(61, 214, 245, .28);--btn-1: #8BEBFF;--btn-2: #3DD6F5;--btn-ink: #04212B;--mark-1: #1E4A63;--mark-2: #0F2536;--core-1: #1D3048;--core-2: #101A2B;--ic-bg: #12283A;--tick: #2A3852;--tick-long: #5A6780;--warn: #FFB547;--warn-bg: rgba(255, 181, 71, .07);--warn-line: rgba(255, 181, 71, .25);--warn-text: #F4D9AE;--danger: #FF5D6C;--danger-bg: rgba(255, 93, 108, .08);--danger-line: rgba(255, 93, 108, .55);--ok: #4BE3A3;--ok-bg: rgba(75, 227, 163, .08);--ok-line: rgba(75, 227, 163, .18);--badge-1: #123A33;--badge-2: #0D1E22;--knob: #FFFFFF;--switch-off-knob: #C9D3E3;--scrim: rgba(3, 6, 12, .62);--shadow: rgba(0, 0, 0, .45);color-scheme:dark}*{box-sizing:border-box;margin:0}html,body{height:100%}body{background:radial-gradient(120% 60% at 50% 42%,var(--glow) 0%,var(--bg-2) 45%,var(--bg) 100%) fixed,var(--bg);color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overscroll-behavior:none}button,input,select{font:inherit;color:inherit}button{background:none;border:0;cursor:pointer}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}svg{display:block}.num{font-variant-numeric:tabular-nums}main{position:relative;max-width:480px;min-height:100dvh;margin:0 auto;display:flex;flex-direction:column;padding:calc(20px + env(safe-area-inset-top)) 22px calc(24px + env(safe-area-inset-bottom))}.top{display:flex;align-items:flex-start;justify-content:space-between}.brand{display:flex;gap:10px;align-items:center}.brand .mark{width:34px;height:34px;border-radius:11px;background:linear-gradient(160deg,var(--mark-1),var(--mark-2));display:grid;place-items:center;box-shadow:0 0 0 1px var(--line);color:var(--accent-2)}.brand h1{font-size:22px;font-weight:600;line-height:1.1}.brand p{color:var(--muted);font-size:12.5px;margin-top:2px}.icon-btn{width:48px;height:48px;border-radius:50%;border:1px solid var(--line);background:var(--surface);display:grid;place-items:center;flex:none}.chip{display:inline-flex;align-items:center;gap:6px;padding:5px 11px;border-radius:999px;background:var(--ok-bg);color:var(--ok);font-size:12px;border:1px solid var(--ok-line)}.chip i{width:6px;height:6px;border-radius:50%;background:var(--ok)}.eyebrow{font-size:12px;font-weight:600;color:var(--faint)}.btn{min-height:64px;border-radius:var(--r-lg);font-weight:600;font-size:18px;width:100%;display:flex;align-items:center;justify-content:center;gap:10px;padding:0 16px}.btn-primary{background:linear-gradient(180deg,var(--btn-1),var(--btn-2));color:var(--btn-ink);box-shadow:0 10px 30px var(--accent-glow)}.btn-ghost{background:var(--surface);border:1px solid var(--line)}.btn-stop{background:var(--danger-bg);color:var(--danger);border:1.5px solid var(--danger-line);min-height:72px;font-size:20px}.btn:disabled{opacity:.38;box-shadow:none;cursor:not-allowed}.toast{position:fixed;left:50%;top:calc(12px + env(safe-area-inset-top));transform:translate(-50%);z-index:20;max-width:calc(100% - 32px);padding:12px 18px;border-radius:999px;background:var(--surface-2);border:1px solid var(--line);font-size:14px;box-shadow:0 10px 30px var(--shadow)}.status{margin-top:14px;min-height:28px}.dial-wrap{flex:1;display:grid;place-items:center;padding:16px 0}.dial{width:272px;height:272px;position:relative;display:grid;place-items:center;border-radius:50%}.dial>svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.dial .core{width:192px;height:192px;border-radius:50%;background:radial-gradient(circle at 50% 30%,var(--core-1),var(--core-2) 70%);box-shadow:0 0 0 1px var(--line),0 0 0 8px var(--accent-soft),0 18px 50px var(--shadow),0 0 60px var(--accent-glow);display:grid;place-items:center;text-align:center;transition:transform .15s ease}.dial:active .core{transform:scale(.97)}.dial .core b{display:block;font-size:40px;font-weight:600;color:var(--accent-2);line-height:1.2}.dial .core span{display:block;font-size:13px;color:var(--muted);margin-top:4px}.modes{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:6px;background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--r-lg);margin-top:10px}.mode{min-height:64px;border-radius:var(--r-md);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:var(--muted)}.mode b{font-size:17px;font-weight:600;color:var(--text)}.mode small{font-size:11.5px}.mode[aria-pressed=true]{background:var(--surface-2);box-shadow:0 0 0 1px var(--accent-ring) inset}.mode[aria-pressed=true] b{color:var(--accent-2)}.note{margin-top:16px;display:flex;gap:10px;align-items:flex-start;color:var(--muted);font-size:12.5px;line-height:1.55}.note svg{flex:none;margin-top:2px}.note button{color:var(--accent);white-space:nowrap;padding:0;font-size:inherit}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--scrim);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);z-index:10}.sheet{position:fixed;left:50%;bottom:0;transform:translate(-50%);width:100%;max-width:480px;z-index:11;background:var(--bg-2);border-radius:var(--r-xl) var(--r-xl) 0 0;border-top:1px solid var(--line);padding:12px 22px calc(24px + env(safe-area-inset-bottom));animation:rise .22s ease-out;max-height:92dvh;overflow-y:auto}@keyframes rise{0%{transform:translate(-50%,24px);opacity:0}}.grab{width:40px;height:5px;border-radius:3px;background:var(--line);margin:0 auto 18px}.sheet h2{font-size:22px;font-weight:600}.sheet .sub{color:var(--muted);font-size:14px;margin:4px 0 18px}.steps{display:grid;gap:10px;margin-bottom:18px;list-style:none;padding:0}.step{display:flex;gap:14px;align-items:center;padding:14px;border-radius:var(--r-md);background:var(--surface);border:1px solid var(--line-soft)}.step .ic{width:44px;height:44px;border-radius:12px;background:var(--ic-bg);color:var(--accent);display:grid;place-items:center;flex:none}.step b{font-size:15.5px;font-weight:600;display:block}.step small{color:var(--muted);font-size:12.5px}.check{display:flex;gap:10px;align-items:center;color:var(--muted);font-size:14px;margin:0 0 16px 2px;min-height:44px;cursor:pointer}.check input{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:22px;height:22px;border-radius:7px;border:1.5px solid var(--line);display:grid;place-items:center;flex:none}.check input:checked{background:var(--accent);border-color:var(--accent)}.check input:checked:after{content:"";width:10px;height:5px;border:2px solid var(--btn-ink);border-top:0;border-right:0;transform:rotate(-45deg) translate(1px,-1px)}.link-btn{width:100%;min-height:48px;color:var(--muted);font-size:15px;margin-top:6px}.run-top{display:flex;align-items:center;min-height:48px}.run{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;padding:16px 0}.ring{width:280px;height:280px;position:relative;display:grid;place-items:center}.ring svg{position:absolute;top:0;right:0;bottom:0;left:0;transform:rotate(-90deg)}.ring .track-c{fill:none;stroke:var(--line-soft);stroke-width:10}.ring .arc{fill:none;stroke:var(--accent);stroke-width:10;stroke-linecap:round;stroke-dasharray:791.7;filter:drop-shadow(0 0 8px var(--accent-glow))}.ring .pct{font-size:64px;font-weight:600;line-height:1;text-align:center}.ring .pct sup{font-size:24px;color:var(--muted);margin-left:2px;vertical-align:28px}.ring .left{font-size:13px;color:var(--muted);margin-top:8px;text-align:center}.readout{display:flex;gap:10px}.cell{min-width:136px;padding:12px 16px;border-radius:var(--r-md);background:var(--surface);border:1px solid var(--line-soft);text-align:center}.cell .eyebrow{display:block;margin-bottom:4px}.cell b{font-size:26px;font-weight:400}.cell b small{font-size:14px;color:var(--muted)}.cell.phase b{font-size:20px;font-weight:600;color:var(--accent-2)}.steps-track{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;width:100%;list-style:none;padding:0}.steps-track li{text-align:center;font-size:12px;color:var(--faint)}.steps-track li:before{content:"";display:block;height:4px;border-radius:2px;background:var(--line);margin-bottom:8px;transition:background .3s}.steps-track .done{color:var(--muted)}.steps-track .done:before{background:var(--accent-ring)}.steps-track .now{color:var(--accent-2);font-weight:600}.steps-track .now:before{background:var(--accent);box-shadow:0 0 12px var(--accent-glow)}.result{flex:1;display:flex;flex-direction:column;justify-content:center;gap:12px}.badge{width:88px;height:88px;border-radius:50%;display:grid;place-items:center;margin:0 auto 10px;background:radial-gradient(circle,var(--badge-1),var(--badge-2));box-shadow:0 0 0 1px var(--ok-line),0 0 50px var(--ok-bg);color:var(--ok)}.result h2{text-align:center;font-size:28px;font-weight:600}.result>p{text-align:center;color:var(--muted);font-size:16px;margin-bottom:18px}.choice{display:flex;align-items:center;gap:14px;padding:18px;border-radius:var(--r-lg);background:var(--surface);border:1px solid var(--line);min-height:76px;width:100%;text-align:left}.choice .ic{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;flex:none}.choice b{font-size:18px;font-weight:600;display:block}.choice small{color:var(--muted);font-size:13px}.choice.good .ic{background:var(--ok-bg);color:var(--ok)}.choice.bad .ic{background:var(--warn-bg);color:var(--warn)}.tips{list-style:none;padding:0;display:grid;gap:8px;margin-bottom:8px;color:var(--muted);font-size:14px;line-height:1.5}.tips li{padding-left:18px;position:relative}.tips li:before{content:"";position:absolute;left:4px;top:.6em;width:6px;height:6px;border-radius:50%;background:var(--warn)}.foot{text-align:center;font-size:12px;color:var(--faint);margin-top:8px}.nav{display:flex;align-items:center;gap:12px;margin-bottom:18px}.nav h2{font-size:22px;font-weight:600}.group{margin-bottom:18px}.group>.eyebrow{margin:0 0 8px 6px;display:block}.list{background:var(--surface);border:1px solid var(--line-soft);border-radius:var(--r-lg);overflow:hidden}.row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:56px;padding:12px 16px;border-top:1px solid var(--line-soft);font-size:15.5px;width:100%;text-align:left}.row:first-child{border-top:0}.row small{color:var(--muted);font-size:13px;display:block}.row .val{color:var(--muted);font-size:14px}.row select{background:transparent;border:0;color:var(--muted);font-size:15px;text-align:right;padding:8px 0}.row select option{background:var(--surface);color:var(--text)}.switch{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:50px;height:30px;border-radius:15px;background:var(--line);position:relative;flex:none;cursor:pointer;transition:background .2s}.switch:after{content:"";position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:var(--switch-off-knob);box-shadow:0 1px 3px var(--shadow);transition:left .2s}.switch:checked{background:var(--accent)}.switch:checked:after{left:23px;background:var(--knob)}.warnbox{padding:14px 16px;border-radius:var(--r-md);background:var(--warn-bg);border:1px solid var(--warn-line);color:var(--warn-text);font-size:13.5px;line-height:1.6}.warnbox b{display:block;margin-top:6px}details.list summary{list-style:none}details.list summary::-webkit-details-marker{display:none}details[open] .chev{transform:rotate(90deg)}.chev{transition:transform .2s;color:var(--muted)}.inspect{padding:0 16px 14px 34px;color:var(--muted);font-size:13.5px;line-height:1.7}.params{flex:1}.param{padding:14px 16px;border-top:1px solid var(--line-soft)}.param:first-child{border-top:0}.param .hd{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;font-size:15px}.param .hd:last-child{margin-bottom:0}.param input[type=number],.param input[type=text],.param select{font-size:15px;padding:7px 10px;border-radius:9px;background:var(--bg);border:1px solid var(--line);width:110px;text-align:right;font-variant-numeric:tabular-nums}.param input[type=text]{width:170px}.param.invalid input[type=number],.param.invalid input[type=text]{border-color:var(--danger);color:var(--danger)}.param input[type=range]{width:100%;height:28px;background:transparent;-moz-appearance:none;appearance:none;-webkit-appearance:none}.param input[type=range]::-webkit-slider-runnable-track{height:6px;border-radius:3px;background:linear-gradient(to right,var(--accent) var(--fill, 0%),var(--line) var(--fill, 0%))}.param input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:22px;height:22px;margin-top:-8px;border-radius:50%;background:var(--knob);box-shadow:0 2px 8px var(--shadow),0 0 0 1px var(--line)}.param input[type=range]::-moz-range-track{height:6px;border-radius:3px;background:var(--line)}.param input[type=range]::-moz-range-progress{height:6px;border-radius:3px;background:var(--accent)}.param input[type=range]::-moz-range-thumb{width:22px;height:22px;border:0;border-radius:50%;background:var(--knob)}.param.invalid input[type=range]::-webkit-slider-runnable-track{background:var(--danger)}.err{color:var(--danger);font-size:12.5px;margin-top:8px}.err:empty{display:none}.labbar{position:sticky;bottom:0;display:grid;grid-template-columns:1fr 2fr;gap:10px;padding-top:14px;background:linear-gradient(to top,var(--bg) 70%,transparent)}.labbar .btn-ghost{font-size:15px}.unsupported{flex:1;display:grid;place-content:center;text-align:center;gap:12px;color:var(--muted)}.unsupported h1{color:var(--text)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important;transition:none!important}}.top-actions{display:flex;gap:8px}body{transition:background-color .25s ease}
