@import url("https://fonts.googleapis.com/css2?family=Noto+Sans+Thai:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;600&family=Playfair+Display:wght@600;700&display=swap");:root{--deep:#082631;--ink:#12343a;--teal:#078579;--mint:#9ce6d3;--paper:#f2efe7;--panel:#fbf9f3;--line:#c7d0ca;--orange:#df7540;--muted:#52686c;--code:#061d27}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:"Noto Sans Thai",sans-serif;line-height:1.7}a{color:inherit}.top{position:sticky;top:0;z-index:20;display:flex;justify-content:space-between;padding:14px max(22px,calc((100vw - 1160px)/2));background:rgba(8,38,49,.96);color:white;font-size:13px;font-weight:700}.top a{text-decoration:none}.hero,.section,footer>div{max-width:1160px;margin:auto;padding-left:24px;padding-right:24px}.hero-wrap{background:var(--deep);color:#fff}.hero{display:grid;grid-template-columns:1.2fr .8fr;gap:64px;padding-top:82px;padding-bottom:72px}.eyebrow{margin:0 0 14px;color:var(--teal);font:700 11px "IBM Plex Mono",monospace;letter-spacing:.12em}.hero .eyebrow{color:var(--mint)}h1,h2{font-family:"Playfair Display","Noto Sans Thai",serif}h1{margin:0;font-size:clamp(48px,7vw,78px);line-height:1.03}.hero p:last-child{color:#c5d8db;font-size:17px}.hero aside{align-self:end;padding:25px;border:1px solid #2b535b;background:#0b3340}.hero aside b{display:block;color:var(--mint);font:600 12px "IBM Plex Mono",monospace}.flow{display:grid;grid-template-columns:repeat(5,1fr);border-bottom:1px solid var(--line);background:var(--panel)}.flow div{padding:22px;border-right:1px solid var(--line)}.flow b{color:var(--teal);font:600 11px "IBM Plex Mono",monospace}.flow span{display:block;margin-top:9px;font-size:13px;font-weight:700}.section{padding-top:72px;padding-bottom:72px}.section.alt{max-width:none;padding-left:max(24px,calc((100vw - 1112px)/2));padding-right:max(24px,calc((100vw - 1112px)/2));background:#e2ebe6}.heading{display:grid;grid-template-columns:.8fr 1.2fr;gap:50px;margin-bottom:32px}.heading h2{margin:0;font-size:clamp(32px,4vw,50px);line-height:1.12}.heading p{margin:4px 0;color:var(--muted)}.labs{display:grid;grid-template-columns:1fr 1fr;gap:22px}.lab{border:1px solid var(--line);background:var(--panel);box-shadow:0 12px 28px #12343a10}.lab-head{padding:25px;border-bottom:1px solid var(--line)}.lab-head h3{margin:0;font-size:27px}.tag{display:inline-block;margin-top:9px;padding:4px 8px;border-radius:999px;background:#d7ece5;color:#09675f;font:700 10px "IBM Plex Mono",monospace}.lab-head p{margin:12px 0 0;color:var(--muted);font-size:14px}.actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:20px}.actions button{padding:13px;border:1px solid var(--teal);border-radius:7px;background:var(--teal);color:white;font:700 13px "Noto Sans Thai",sans-serif;cursor:pointer}.actions button:nth-child(2){background:transparent;color:var(--teal)}.actions button:disabled{opacity:.55;cursor:wait}.output{margin:0 20px 20px;border-radius:8px;overflow:hidden;background:var(--code);color:#d9eaec}.output h4{margin:0;padding:10px 14px;border-bottom:1px solid #24434b;color:var(--mint);font:600 10px "IBM Plex Mono",monospace}.output pre{min-height:170px;max-height:330px;margin:0;padding:16px;overflow:auto;white-space:pre-wrap;font:12px/1.65 "IBM Plex Mono",monospace}.result{margin:0 20px 20px;overflow:auto}.result table{width:100%;border-collapse:collapse;background:#fff;font-size:12px}.result th,.result td{padding:9px;border:1px solid var(--line);text-align:left}.result th{background:#dce8e3}.explain{margin:0 20px 24px;padding:16px;border-left:4px solid var(--orange);background:#f3e9df;font-size:13px}.metric{display:flex;justify-content:space-between;margin:0 20px 15px;color:var(--muted);font-size:12px}.sequence{counter-reset:s;display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.sequence article{position:relative;padding:21px 21px 21px 64px;border-top:1px solid var(--line);background:var(--panel)}.sequence article:before{counter-increment:s;content:counter(s,decimal-leading-zero);position:absolute;left:20px;color:var(--teal);font:600 12px "IBM Plex Mono",monospace}.sequence h3{margin:0}.sequence p{margin:6px 0 0;color:var(--muted);font-size:14px}.note{margin-top:25px;padding:22px;border-left:5px solid var(--orange);background:#f1e2d5}.note b{display:block}.links{display:flex;flex-wrap:wrap;gap:10px}.links a{padding:11px 14px;border:1px solid var(--teal);color:var(--teal);text-decoration:none;font-size:13px;font-weight:700}footer{background:var(--deep);color:#b8cdd0}footer>div{display:flex;justify-content:space-between;padding-top:26px;padding-bottom:26px;font-size:12px}footer a{color:var(--mint)}@media(max-width:820px){.hero,.heading,.labs{grid-template-columns:1fr}.flow{grid-template-columns:1fr}.flow div{border-right:0;border-bottom:1px solid var(--line)}.sequence{grid-template-columns:1fr}}@media(max-width:520px){h1{font-size:45px}.hero,.section{padding-top:52px;padding-bottom:52px}.actions{grid-template-columns:1fr}.output{margin-left:12px;margin-right:12px}.result,.explain,.metric{margin-left:12px;margin-right:12px}footer>div{flex-direction:column;gap:10px}}
