:root{--ink:#102b32;--navy:#071a2b;--paper:#f2f0e9;--card:#e8ebe6;--mint:#bce9df;--teal:#168b84;--orange:#df7448;--blue:#4275a8;--line:#bdc7c3}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:"Noto Sans Thai","IBM Plex Sans Thai",system-ui,sans-serif;line-height:1.65}.sitebar{height:56px;background:#061522;color:#d8e6e8;display:flex;align-items:center;justify-content:space-between;padding:0 max(5vw,24px);position:sticky;top:0;z-index:20;border-bottom:1px solid #24414c}.sitebar a{color:inherit;text-decoration:none;font-size:.82rem}.hero{min-height:480px;padding:90px max(7vw,28px);background:radial-gradient(circle at 80% 25%,#153e45,transparent 34%),linear-gradient(125deg,#061626,#0a3138);color:#f1f3ed;display:grid;grid-template-columns:minmax(0,1.6fr) minmax(220px,.5fr);gap:8vw;align-items:end}.hero h1{font-family:Georgia,"Noto Serif Thai",serif;font-size:clamp(2.5rem,5.5vw,5.5rem);line-height:1.02;max-width:1100px;margin:.25rem 0 1.5rem;letter-spacing:-.04em}.hero p{max-width:850px;color:#c9d8d5;font-size:1.06rem}.hero aside{border-left:1px solid #4d7676;padding-left:24px;display:grid}.hero aside b{font:3rem Georgia}.hero aside small{color:#a9c3c0}.eyebrow{font-size:.69rem;letter-spacing:.15em;font-weight:800;color:#63d2c4}.eyebrow.dark{color:#147e78}.steps{display:grid;grid-template-columns:repeat(6,1fr);max-width:1200px;margin:-1px auto 0;border:1px solid var(--line);background:#e5e8e3}.steps a{padding:18px 12px;color:var(--ink);text-decoration:none;border-right:1px solid var(--line);font-size:.78rem}.steps b{display:block;color:var(--teal);font-size:.66rem}.lesson,.movement,.sql{max-width:1200px;margin:auto;padding:88px 24px}.lesson header,.movement header{display:grid;grid-template-columns:1fr 1fr;gap:7vw;align-items:end;margin-bottom:32px}.lesson h2,.movement h2,.sql h2{font:700 clamp(1.8rem,3.5vw,3.3rem)/1.12 Georgia,"Noto Serif Thai",serif;margin:.3rem 0}.two{display:grid;grid-template-columns:1.4fr .8fr;gap:34px}.contract{background:var(--navy);color:#e9f0ec;padding:28px;display:grid;gap:14px;border-top:5px solid var(--teal)}.contract code{color:#9ce5da}.contract small{color:#b9c6c5}.workbench{max-width:1200px;margin:auto;background:#dfe5df;border:1px solid var(--line);padding:28px}.controls{display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:16px;align-items:end}.controls label{font-size:.75rem;font-weight:800}.controls select,.controls input{width:100%;display:block;margin-top:7px;border:1px solid #aab8b3;background:#f7f6f1;color:var(--ink);padding:13px;font:inherit}.controls button{border:0;background:var(--navy);color:white;padding:15px 20px;font-weight:800;cursor:pointer}.formula{display:flex;gap:12px;flex-wrap:wrap;margin-top:20px}.formula span{border:1px solid #aec0ba;background:#edf0ec;padding:6px 10px;font:12px ui-monospace,monospace}.results{max-width:1200px;margin:24px auto 0;padding:0 24px;display:grid;grid-template-columns:repeat(3,1fr) 1.35fr;gap:12px}.metric,.segment{min-height:220px;padding:24px;background:var(--card);border-top:5px solid var(--teal);display:flex;flex-direction:column}.metric small,.segment small{font-size:.65rem;letter-spacing:.08em;font-weight:800}.metric strong{font:4.2rem Georgia;color:var(--navy);line-height:1;margin-top:auto}.metric span{font-size:.78rem}.metric i{font-style:normal;font-weight:800;margin-top:16px}.metric.f{border-color:var(--blue)}.metric.m{border-color:var(--orange)}.segment{background:#0a2835;color:#eef4ef;border-color:#63d2c4}.segment strong{font:2.2rem Georgia;margin-top:auto}.segment span{color:#86ded3}.segment p{font-size:.82rem;color:#bdcfcc}.movement{padding-top:100px}.chart{background:#e7eae5;border:1px solid var(--line);padding:20px}#chart{width:100%;height:auto}.grid{stroke:#bdc7c3;stroke-width:1}.axis-text{font-size:12px;fill:#587078}.line-r{stroke:var(--orange)}.line-f{stroke:var(--blue)}.line-m{stroke:var(--teal)}.series{fill:none;stroke-width:4}.dot{stroke:#f2f0e9;stroke-width:3}.legend{display:flex;gap:20px;font-size:.74rem}.legend span:before{content:"";display:inline-block;width:16px;height:3px;margin-right:7px;vertical-align:middle}.lr:before{background:var(--orange)}.lf:before{background:var(--blue)}.lm:before{background:var(--teal)}.slopes{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:12px}.slopes article{padding:22px;background:#e1e5df;border:1px solid var(--line)}.slopes b{font:2rem Georgia}.slopes p{font-size:.8rem}.signal{max-width:1200px;margin:0 auto 80px;padding:42px;background:linear-gradient(110deg,#082332,#16434a);color:white;display:grid;grid-template-columns:1fr 220px;gap:40px;align-items:center}.signal h2{font:2.6rem Georgia;margin:.4rem 0}.signal p{color:#c4d7d4}.gauge{position:relative;background:#e8eee9;color:var(--navy);height:180px;display:flex;align-items:center;justify-content:center}.gauge span{font:4.5rem Georgia}.gauge i{position:absolute;left:0;bottom:0;height:8px;background:var(--orange);width:0;transition:width .5s}.actions{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.actions article{background:#e5e8e3;padding:24px;border-top:4px solid var(--teal)}.actions h3{font:1.4rem Georgia;margin:.2rem 0}.actions p{font-size:.86rem}.note{margin-top:28px;border-left:5px solid var(--orange);padding:20px 28px;background:#e8e3da}.sql{background:#dfe4df}.sql pre{background:#071b29;color:#c9eee7;padding:28px;overflow:auto;line-height:1.6}.sql>p:last-child{max-width:850px}footer{background:#061522;color:#b7c8c9;padding:34px max(7vw,28px);display:flex;justify-content:space-between;font-size:.75rem}footer a{color:#7bd5c9}@media(max-width:800px){.hero{grid-template-columns:1fr;padding-top:68px}.hero aside{display:none}.steps{overflow:auto;grid-template-columns:repeat(6,130px);margin:0}.lesson header,.movement header,.two{grid-template-columns:1fr}.controls{grid-template-columns:1fr 1fr}.controls button{grid-column:1/-1}.results{grid-template-columns:1fr 1fr}.segment{grid-column:1/-1}.slopes,.actions{grid-template-columns:1fr}.signal{grid-template-columns:1fr}.gauge{height:120px}.lesson,.movement,.sql{padding:62px 20px}footer{display:grid;gap:12px}}@media(max-width:480px){.controls,.results{grid-template-columns:1fr}.segment{grid-column:auto}.metric,.segment{min-height:180px}.hero h1{font-size:2.55rem}}
