:root{
  --ink:#1f2b3a; --ink-soft:#4a5b68; --muted:#5d6d78;
  --green:#0b7a5a; --green-hover:#096549; --green-bright:#2bc296;
  --tint:#eef7f3; --paper:#fbfcfb; --line:#dbe6e1; --warn:#9a5b0a; --warn-bg:#fff4dc;
  --radius:10px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:88px}
body{margin:0;font-family:"IBM Plex Sans Thai","Noto Sans Thai",system-ui,sans-serif;color:var(--ink);background:var(--paper);line-height:1.7;font-size:16px;-webkit-text-size-adjust:100%}
img{max-width:100%;height:auto;display:block}
html,body{overflow-x:clip}
.section{overflow-x:clip}
a{color:inherit}
h1,h2,h3{line-height:1.35;margin:0;font-weight:600;letter-spacing:0}
p{margin:0}
:focus-visible{outline:3px solid #f0a020;outline-offset:3px;border-radius:4px}
.skip{position:absolute;left:-999px;top:8px;background:#fff;padding:10px 14px;z-index:100}
.skip:focus{left:8px}
.wrap{max-width:1160px;margin:0 auto;padding:0 24px}
.muted{color:var(--muted);font-size:14px}

/* nav */
.nav{position:sticky;top:0;z-index:50;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:20px;padding:8px max(20px,calc((100vw - 1160px)/2 + 24px));min-height:76px}
.brand{margin-right:auto}.brand img{height:62px;width:auto}
#menu{display:flex;align-items:center;gap:26px;font-size:15px;font-weight:500}
#menu a:not(.btn){text-decoration:none;padding:6px 0;border-bottom:2px solid transparent}
#menu a:not(.btn):hover{border-color:var(--green)}
.menu-btn{display:none;background:none;border:1px solid var(--line);border-radius:8px;width:46px;height:46px;cursor:pointer;flex-direction:column;justify-content:center;align-items:center;gap:5px}
.menu-btn span{width:20px;height:2px;background:var(--ink);display:block}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:10px 22px;border-radius:var(--radius);font:inherit;font-weight:600;text-decoration:none;cursor:pointer;border:1.5px solid transparent}
.btn-primary{background:var(--green);color:#fff}
.btn-primary:hover{background:var(--green-hover)}
.btn-ghost{background:#fff;color:var(--ink);border-color:#b7c9c1}
.btn-ghost:hover{border-color:var(--green);color:var(--green)}
.nav-cta{min-height:44px;padding:8px 18px}

/* hero */
.hero{background:linear-gradient(180deg,var(--tint),var(--paper));padding:64px 0 72px;overflow:hidden}
.hero-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:56px;align-items:center}
.hero h1{font-size:clamp(30px,4.2vw,50px);line-height:1.3;font-weight:700}
.lead{font-size:18px;color:var(--ink-soft);margin-top:22px;max-width:34em}
.actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:30px}
.hero-proof{margin-top:26px;padding-left:14px;border-left:3px solid var(--green-bright);font-size:14px;color:var(--muted);max-width:32em}


/* sections */
.section{padding:84px 0}
.section-tint{background:var(--tint)}
.section-head{margin-bottom:40px;max-width:40em}
.section-head h2{font-size:clamp(26px,3.2vw,36px)}
.section-head p{color:var(--ink-soft);margin-top:12px;font-size:17px}

/* pain */
.pain-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.pain-list li{display:grid;grid-template-columns:1fr 1fr;border-bottom:1px solid var(--line)}
.pain-list li>div{padding:20px 22px;display:flex;flex-direction:column;gap:2px}
.p-now{color:var(--ink-soft)}
.p-then{background:var(--tint);font-weight:500}
.p-tag{font-size:13px;font-weight:600}
.p-now .p-tag{color:var(--warn)}
.p-then .p-tag{color:var(--green)}

/* solutions */
.sol-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:0;border-top:2px solid var(--ink)}
.sol{padding:26px 26px 30px 0;border-bottom:1px solid var(--line)}
.sol:nth-child(3n+2),.sol:nth-child(3n){padding-left:26px;border-left:1px solid var(--line)}
.sol h3{font-size:19px}
.sol-pain{font-size:14px;color:var(--warn);margin:6px 0 12px}
.sol ul{margin:0;padding-left:18px;color:var(--ink-soft)}
.sol li{margin:4px 0}
.sol-custom h3{color:var(--green)}
.text-link{display:inline-block;margin-top:14px;font-weight:600;color:var(--green);text-underline-offset:4px}

/* reference */
.case{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:44px;align-items:center;padding:36px 0;border-top:1px solid var(--line)}
.case-flip{grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr)}
.case-flip .case-text{order:2}
.case h3{font-size:24px;margin-bottom:14px}
.case dt{font-weight:600;color:var(--green);margin-top:12px}
.case dd{margin:2px 0 0;color:var(--ink-soft)}
.case-shot img{border:1px solid var(--line);border-radius:8px;box-shadow:0 12px 32px rgba(31,43,58,.12);background:#fff}
.chips{list-style:none;padding:0;margin:18px 0 0;display:flex;flex-wrap:wrap;gap:8px}
.chips li{font-size:13px;padding:3px 12px;border:1px solid #b7d3c8;border-radius:99px;color:#0a5f46;background:#fff}
.more-work{border-top:1px solid var(--line);padding-top:28px}
.more-work h3{font-size:18px;margin-bottom:10px}
.more-work ul{margin:0 0 10px;padding-left:18px;color:var(--ink-soft)}
.more-work li{margin:6px 0}
.more-work b{color:var(--ink)}
.more-work b::after{content:" — ";font-weight:400}

/* process */
.process-grid{display:grid;grid-template-columns:minmax(0,.7fr) minmax(0,1.3fr);gap:56px}
.steps{list-style:none;margin:0;padding:0;counter-reset:s}
.steps li{counter-increment:s;position:relative;padding:0 0 28px 60px}
.steps li::before{content:counter(s);position:absolute;left:0;top:0;width:40px;height:40px;border-radius:50%;background:var(--green);color:#fff;font-weight:700;display:grid;place-items:center}
.steps li:not(:last-child)::after{content:"";position:absolute;left:19px;top:44px;bottom:4px;width:2px;background:#b7d3c8}
.steps h3{font-size:18px}
.steps p{color:var(--ink-soft);margin-top:2px}

/* faq */
.faq-wrap{max-width:820px}
.faq details{border-bottom:1px solid var(--line)}
.faq details:first-child{border-top:1px solid var(--line)}
.faq summary{cursor:pointer;padding:18px 34px 18px 0;font-weight:600;list-style:none;position:relative}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";position:absolute;right:6px;top:50%;transform:translateY(-50%);font-size:22px;color:var(--green)}
.faq details[open] summary::after{content:"–"}
.faq p{padding:0 0 20px;color:var(--ink-soft)}

/* contact */
.contact-section{background:var(--ink);color:#fff}
.contact-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:56px;align-items:start}
.contact-info h2{font-size:clamp(28px,3.4vw,38px)}
.contact-info>p{margin-top:12px;color:#d3dfda}
.contact-list{list-style:none;margin:26px 0;padding:0}
.contact-list li{display:grid;grid-template-columns:120px 1fr;gap:12px;padding:12px 0;border-bottom:1px solid rgba(255,255,255,.16);color:#d3dfda}
.contact-list b{color:#fff}
.contact-list a{color:#fff;font-weight:600;font-size:20px}
.qr{display:flex;gap:16px;align-items:center;background:#fff;color:var(--ink);padding:14px;border-radius:12px;max-width:340px}
.qr img{width:110px;height:110px;object-fit:contain}
.form{background:#fff;color:var(--ink);padding:30px;border-radius:14px;display:grid;gap:14px}
.form h3{font-size:20px}
.form label{display:grid;gap:4px;font-size:14px;font-weight:500}
.form input:not([type=checkbox]),.form select,.form textarea{width:100%;font:inherit;padding:11px 12px;border:1.5px solid #b9cbc3;border-radius:8px;background:#fff;color:var(--ink)}
.form input[aria-invalid=true]{border-color:#b3261e}
.form .consent{display:flex;gap:10px;align-items:flex-start;font-weight:400;font-size:13px;color:var(--ink-soft)}
.form .consent input{margin-top:5px;width:18px;height:18px;flex:none}
.hp{position:absolute;left:-9999px;opacity:0}
.form-status{min-height:1.4em;font-size:14px}
.form-status.ok{color:var(--green)} .form-status.err{color:#b3261e}

footer{background:#f1f6f4;border-top:1px solid var(--line);padding:40px 0 48px}
.foot{display:flex;gap:22px;align-items:flex-start}
.foot img{height:62px;width:auto}
.foot p{color:var(--ink-soft);margin-top:4px}
.foot .muted{font-size:13px}

.mobile-cta{display:none}

@media (max-width:960px){
  .hero-grid,.case,.case-flip,.process-grid,.contact-grid{grid-template-columns:1fr}
  .case-flip .case-text{order:0}
  .hero{padding-top:40px}
  .sol-grid{grid-template-columns:1fr 1fr}
  .sol,.sol:nth-child(3n+2),.sol:nth-child(3n){padding:24px 20px 26px 0;border-left:0}
  .sol:nth-child(even){padding-left:22px;border-left:1px solid var(--line)}
  .menu-btn{display:flex}
  #menu{display:none;position:absolute;top:100%;left:0;right:0;background:#fff;flex-direction:column;align-items:stretch;gap:0;padding:8px 20px 20px;border-bottom:1px solid var(--line)}
  #menu.open{display:flex}
  #menu a:not(.btn){padding:14px 0;border-bottom:1px solid var(--line)}
  .nav-cta{margin-top:14px}
}
@media (max-width:640px){
  body{padding-bottom:76px}
  .wrap{padding:0 18px}
  .section{padding:60px 0}
  .pain-list li{grid-template-columns:1fr}
  .sol-grid{grid-template-columns:1fr}
  .sol:nth-child(even){padding-left:0;border-left:0}
  .contact-list li{grid-template-columns:1fr;gap:2px}
  .actions .btn{width:100%}
  .foot{flex-direction:column}
  .mobile-cta{display:grid;grid-template-columns:1fr 2fr;gap:10px;position:fixed;left:0;right:0;bottom:0;padding:10px 14px calc(10px + env(safe-area-inset-bottom));background:#fff;border-top:1px solid var(--line);z-index:40}
}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

/* language switch */
.lang{display:inline-flex;border:1.5px solid #b7c9c1;border-radius:99px;padding:2px;background:#fff;flex:none}
.lang button{font:inherit;font-size:14px;font-weight:600;min-width:44px;min-height:40px;padding:0 10px;border:0;border-radius:99px;background:transparent;color:var(--ink-soft);cursor:pointer}
.lang button:hover{color:var(--green)}
.lang button[aria-pressed=true]{background:var(--green);color:#fff}
@media (max-width:960px){.lang{margin-left:auto}.brand{margin-right:0}.nav{gap:12px}}

/* ===================== 3D HERO SCENE ===================== */
.scene{position:relative;overflow:visible;perspective:1400px;perspective-origin:60% 40%;padding:28px 0 64px}
.scene-grid{position:absolute;inset:-10% -6%;pointer-events:none;
  background:
    repeating-linear-gradient(30deg,rgba(11,122,90,.10) 0 1px,transparent 1px 34px),
    repeating-linear-gradient(-30deg,rgba(11,122,90,.10) 0 1px,transparent 1px 34px);
  -webkit-mask:radial-gradient(ellipse 60% 60% at 55% 50%,#000 20%,transparent 75%);mask:radial-gradient(ellipse 60% 60% at 55% 50%,#000 20%,transparent 75%);
  animation:gridDrift 28s linear infinite}
@keyframes gridDrift{to{background-position:59px 34px,-59px 34px}}
.scene-inner{position:relative;aspect-ratio:5/4;transform-style:preserve-3d;transform:rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));transition:transform .2s ease-out}
.card3d{position:absolute;transform-style:preserve-3d}
.card3d .float{transform-style:preserve-3d}
.card3d img{display:block;width:100%;height:auto;border-radius:10px;border:1px solid var(--line);background:#fff}
.card-paper{left:0;top:0;width:56%;transform:translateZ(-70px) rotateY(16deg) rotateX(5deg)}
.card-paper img{box-shadow:0 10px 28px rgba(31,43,58,.14)}
.card-paper .float{animation:floatA 7s ease-in-out infinite}
.card-dash{right:0;bottom:0;width:74%;transform:translateZ(90px) rotateY(-11deg) rotateX(5deg)}
.card-dash img{box-shadow:0 30px 60px rgba(31,43,58,.26),0 0 0 1px rgba(11,122,90,.08)}
.card-dash .float{animation:floatB 7s ease-in-out infinite .8s}
@keyframes floatA{0%,100%{translate:0 0}50%{translate:0 -6px}}
@keyframes floatB{0%,100%{translate:0 0}50%{translate:0 -10px}}
.label3d{position:absolute;left:14px;bottom:-16px;max-width:calc(100% - 28px);overflow:hidden;text-overflow:ellipsis;display:inline-flex;gap:8px;align-items:baseline;background:#fff;border:1px solid var(--line);border-radius:99px;padding:6px 14px;font-size:13px;color:var(--muted);box-shadow:0 8px 20px rgba(31,43,58,.12);white-space:nowrap;transform:translateZ(30px)}
.label3d b{font-size:12px}
.label-before b{color:var(--warn)}.label-after{left:auto;right:14px}.label-after b{color:var(--green)}
.flow{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;transform:translateZ(40px);overflow:visible}
.flow-track{fill:none;stroke:#b7d3c8;stroke-width:.9;vector-effect:non-scaling-stroke}
.flow-dash{fill:none;stroke:var(--green);stroke-width:2;stroke-linecap:round;stroke-dasharray:6 10;vector-effect:non-scaling-stroke;animation:dashMove 1.6s linear infinite}
@keyframes dashMove{to{stroke-dashoffset:-16}}
.chips3d{position:absolute;inset:0;pointer-events:none;transform:translateZ(120px)}
.chip3d{left:0;top:0;margin:-19px 0 0 -19px}
.chip3d{position:absolute;width:38px;height:38px;border-radius:12px;background:#fff;box-shadow:0 10px 24px rgba(11,122,90,.25),0 0 0 1px rgba(11,122,90,.12);display:grid;place-items:center;opacity:0;will-change:left,top,opacity,transform}
.chip3d svg{width:22px;height:22px}
.pill3d{position:absolute;display:inline-flex;align-items:center;gap:8px;background:#fff;border-radius:14px;padding:10px 14px;font-size:13px;font-weight:600;color:var(--ink);box-shadow:0 18px 40px rgba(31,43,58,.18),0 0 0 1px rgba(31,43,58,.06);transform:translateZ(160px)}
.pill3d i{width:10px;height:10px;border-radius:50%;background:var(--green-bright);box-shadow:0 0 0 0 rgba(43,194,150,.6);animation:pulse 2.2s ease-out infinite}
@keyframes pulse{70%{box-shadow:0 0 0 10px rgba(43,194,150,0)}100%{box-shadow:0 0 0 0 rgba(43,194,150,0)}}
.pill3d b{font-size:22px;color:var(--green);line-height:1}
.pill3d span{color:var(--ink-soft);font-weight:500}
.pill-a{right:0;top:38%;animation:floatA 6s ease-in-out infinite 1.2s}
.pill-b{left:2%;bottom:10%;animation:floatB 6s ease-in-out infinite .4s}

/* ===================== ISOMETRIC ART ===================== */
.sol{position:relative}
.sol-art{width:100px;height:80px;margin-bottom:12px}
.sol-art svg{width:100%;height:100%;overflow:visible;filter:drop-shadow(0 6px 10px rgba(31,43,58,.10))}
.sol-art .lift{transition:transform .5s cubic-bezier(.2,.8,.2,1)}
.sol:hover .sol-art .lift{transform:translateY(-7px)}
.sol:hover .sol-art .lift-far{transform:translateY(-12px) translateX(2px)}
.process-art{margin-top:30px;max-width:420px}
.process-art svg{width:100%;height:auto;overflow:visible;filter:drop-shadow(0 10px 16px rgba(31,43,58,.12))}
.case-shot{perspective:1200px}
.case-shot img{transition:transform .9s cubic-bezier(.2,.8,.2,1),box-shadow .9s}
.case-shot:hover img{transform:translateY(-4px) rotateX(1.5deg)}

/* ===================== SCROLL REVEAL ===================== */
.pre{opacity:0;transform:translateY(22px);transition:opacity .7s ease,transform .8s cubic-bezier(.2,.8,.2,1)}
.pre.case-shot{transform:perspective(1200px) rotateY(-14deg) translateX(24px)}
.case-flip .pre.case-shot{transform:perspective(1200px) rotateY(14deg) translateX(-24px)}
.pre.in{opacity:1;transform:none}
.sol.pre:nth-child(2),.steps li.pre:nth-child(2){transition-delay:.08s}
.sol.pre:nth-child(3),.steps li.pre:nth-child(3){transition-delay:.16s}
.sol.pre:nth-child(4),.steps li.pre:nth-child(4){transition-delay:.24s}
.sol.pre:nth-child(5),.steps li.pre:nth-child(5){transition-delay:.32s}
.sol.pre:nth-child(6){transition-delay:.4s}

@media (max-width:960px){
  .scene{padding:18px 0 54px;perspective:1000px}
  .scene-inner{aspect-ratio:4/3}
  .card-paper{transform:translateZ(-40px) rotateY(10deg) rotateX(3deg)}
  .card-dash{transform:translateZ(50px) rotateY(-7deg) rotateX(3deg)}
}
@media (max-width:640px){
  .scene{padding:10px 0 40px}
  .scene-inner{aspect-ratio:1/1}
  .card-paper{width:62%;top:0}
  .card-dash{width:82%}
  .pill3d{padding:8px 11px;font-size:12px}.pill3d b{font-size:18px}
  .pill-a{right:0;top:40%}.pill-b{left:0;bottom:6%}
  .label3d{font-size:12px;padding:5px 11px;bottom:-14px}
  .chip3d{width:30px;height:30px}.chip3d svg{width:18px;height:18px}
}
@media (prefers-reduced-motion:reduce){
  .scene-grid,.card3d .float,.pill3d,.flow-dash,.pill3d i{animation:none}
  .chip3d{display:none}
  .pre{opacity:1;transform:none;transition:none}
  .scene-inner{transition:none}
}
