:root{
  --blue:#0049AF; --blue-d:#00337C; --green:#7FDA5B; --yellow:#FFC93C; --ink:#0B1B3A;
  --paper:#F4F2ED; --concrete:#DCD8CF; --white:#fff;
  --r:22px; --gut:clamp(16px,4vw,56px);
  --disp:'Kanit',system-ui,sans-serif; --body:'IBM Plex Sans Thai','Kanit',system-ui,sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{font-family:var(--body);color:var(--ink);background:var(--paper);line-height:1.5;overflow-x:hidden}
img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
.ln{display:block;white-space:nowrap}

/* ---------- header ---------- */
.top{position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:clamp(10px,2vw,28px);
  padding:10px var(--gut);background:rgba(255,255,255,.94);backdrop-filter:blur(10px);border-bottom:3px solid var(--blue)}
.brand{display:flex;align-items:center;gap:12px;margin-right:auto}
.brand img{height:clamp(44px,5.4vw,64px);width:auto}
.brand-name{display:flex;flex-direction:column;font-family:var(--disp);line-height:1;color:var(--blue)}
.brand-name b{font-weight:900;font-size:clamp(18px,2vw,26px)}
.brand-name i{font-style:normal;font-weight:700;font-size:clamp(10px,1vw,13px);letter-spacing:.22em;color:var(--ink)}
.nav{display:flex;gap:clamp(14px,2vw,30px);font-family:var(--disp);font-weight:700;font-size:17px}
.nav a{position:relative}
.nav a::after{content:"";position:absolute;left:0;right:100%;bottom:-4px;height:4px;background:var(--green);transition:right .25s}
.nav a:hover::after{right:0}
.lang{display:flex;border:2px solid var(--ink);border-radius:99px;overflow:hidden;font-family:var(--disp);font-weight:700;font-size:13px}
.lang button{padding:5px 10px}
.lang button.on{background:var(--ink);color:#fff}
.call{font-family:var(--disp);font-weight:700;background:var(--blue);color:#fff;padding:10px 18px;border-radius:99px;white-space:nowrap;box-shadow:0 4px 0 var(--ink)}
.call:hover{transform:translateY(-2px)}

/* ---------- stickers / buttons ---------- */
.sticker{display:inline-block;font-family:var(--disp);font-weight:800;font-size:clamp(13px,1.3vw,16px);letter-spacing:.06em;
  padding:8px 16px;border-radius:10px;border:3px solid var(--ink);box-shadow:4px 4px 0 var(--ink);white-space:nowrap}
.s-green{background:var(--green)} .s-yellow{background:var(--yellow)}
.tilt-l{transform:rotate(-3deg)} .tilt-r{transform:rotate(3deg)}
.btn{display:inline-flex;align-items:center;font-family:var(--disp);font-weight:700;font-size:18px;padding:14px 26px;border-radius:99px;
  border:3px solid var(--ink);transition:transform .2s, box-shadow .2s;white-space:nowrap}
.btn-yellow{background:var(--yellow);box-shadow:0 5px 0 var(--ink)}
.btn-line{background:transparent;color:#fff;border-color:#fff}
.btn:hover{transform:translateY(-3px)}

/* ---------- hero ---------- */
.hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);min-height:calc(100svh - 80px);background:var(--blue);color:#fff;position:relative;overflow:hidden}
.hero::before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.14;
  background-image:linear-gradient(#fff 2px,transparent 2px),linear-gradient(90deg,#fff 2px,transparent 2px);background-size:90px 60px}
.hero-text{position:relative;padding:clamp(40px,7vw,100px) var(--gut);display:flex;flex-direction:column;justify-content:center;gap:28px;z-index:1}
.hero h1{font-family:var(--disp);font-weight:900;line-height:1.08;font-size:clamp(40px,5.7vw,96px);letter-spacing:-.01em}
.nw{white-space:nowrap}
.hero h1 .ln-alt{color:var(--green)}
.hero-sub{font-size:clamp(16px,1.5vw,20px);max-width:30em;opacity:.92}
.hero-cta{display:flex;flex-wrap:wrap;gap:14px}
.hero-pics{position:relative;min-height:420px}
.hp{position:absolute;overflow:hidden;border:4px solid var(--ink)}
.hp img{width:100%;height:100%;object-fit:cover}
.hp-main{inset:clamp(24px,4vw,56px) var(--gut) clamp(90px,10vw,140px) 0;border-radius:var(--r);box-shadow:12px 12px 0 var(--ink)}
.hp-main img{animation:kb 18s ease-in-out infinite alternate}
@keyframes kb{to{transform:scale(1.08)}}
.hp-small{width:clamp(160px,18vw,280px);aspect-ratio:4/3;left:clamp(14px,2vw,30px);bottom:clamp(20px,3vw,40px);border-radius:16px;transform:rotate(-4deg);box-shadow:8px 8px 0 var(--ink)}
.badge{position:absolute;right:calc(var(--gut) + 10px);bottom:clamp(30px,4vw,60px);width:clamp(120px,12vw,170px);aspect-ratio:1;border-radius:50%;
  background:var(--yellow);color:var(--ink);border:4px solid var(--ink);display:flex;flex-direction:column;align-items:center;justify-content:center;
  font-family:var(--disp);line-height:1;transform:rotate(8deg);animation:bob 4s ease-in-out infinite}
.badge b{font-size:clamp(48px,5vw,72px);font-weight:900}
.badge span{font-weight:700;font-size:clamp(14px,1.4vw,18px)}
@keyframes bob{50%{transform:rotate(8deg) translateY(-8px)}}

/* ---------- marquee ---------- */
.marquee{background:var(--green);border-block:4px solid var(--ink);overflow:hidden;padding:14px 0}
.mq-track{display:flex;gap:28px;width:max-content;animation:mq 40s linear infinite;font-family:var(--disp);font-weight:800;font-size:clamp(20px,2.4vw,30px);white-space:nowrap}
.mq-track i{font-style:normal;color:var(--blue)}
@keyframes mq{to{transform:translateX(-50%)}}

/* ---------- section heads ---------- */
section{padding:clamp(56px,8vw,120px) var(--gut)}
.sec-head{display:flex;align-items:center;gap:20px;flex-wrap:wrap;margin-bottom:clamp(24px,3vw,40px)}
.sec-head h2{font-family:var(--disp);font-weight:900;font-size:clamp(36px,8vw,120px);line-height:1;color:var(--blue)}
.sec-head.light h2{color:#fff}

/* ---------- work ---------- */
.filters{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:28px}
.chip{font-family:var(--disp);font-weight:700;font-size:16px;padding:8px 18px;border-radius:99px;border:3px solid var(--ink);background:#fff;transition:transform .15s}
.chip:hover{transform:translateY(-2px)}
.chip.on{background:var(--ink);color:#fff}
.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(14px,1.6vw,24px)}
.card{position:relative;display:block;aspect-ratio:4/3;border-radius:var(--r);overflow:hidden;border:4px solid var(--ink);background:var(--concrete);text-align:left;
  box-shadow:6px 6px 0 var(--ink);transition:transform .25s, box-shadow .25s}
.card img{width:100%;height:100%;object-fit:cover;transition:transform .6s}
.card:hover{transform:translate(-3px,-3px);box-shadow:10px 10px 0 var(--ink)}
.card:hover img{transform:scale(1.05)}
.card-big{grid-column:span 2;grid-row:span 2;aspect-ratio:auto}
.grid .card:nth-child(8):last-child.card{grid-column:span 2;aspect-ratio:auto}
.tag,.cnt{position:absolute;top:14px;font-family:var(--disp);font-weight:700;font-size:14px;padding:5px 12px;border-radius:8px;border:2px solid var(--ink)}
.tag{left:14px}
.cnt{right:14px;background:#fff}
.c-blue{background:var(--blue);color:#fff} .c-green{background:var(--green)} .c-yellow{background:var(--yellow)}
.c-ink{background:var(--ink);color:#fff} .c-grey{background:var(--concrete)}
.chip.on.c-blue,.chip.on.c-green,.chip.on.c-yellow,.chip.on.c-ink,.chip.on.c-grey{outline:3px solid var(--ink);outline-offset:2px}
.chip.c-all.on{background:var(--ink)}
.cap{position:absolute;left:0;right:0;bottom:0;padding:44px 18px 16px;background:linear-gradient(transparent,rgba(11,27,58,.88));color:#fff;display:flex;flex-direction:column}
.cap b{font-family:var(--disp);font-weight:800;font-size:clamp(19px,1.8vw,24px);line-height:1.2}
.card-big .cap b{font-size:clamp(24px,3vw,44px)}
.loc{font-size:14px;opacity:.85}

/* ---------- make ---------- */
.make{background:var(--ink);position:relative}
.make::before{content:"";position:absolute;inset:0;opacity:.08;pointer-events:none;background-image:repeating-linear-gradient(45deg,#fff 0 2px,transparent 2px 22px)}
.make-grid{position:relative;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(14px,1.6vw,24px)}
.mk{position:relative;border-radius:var(--r);overflow:hidden;border:4px solid #fff;aspect-ratio:3/4}
.mk img{width:100%;height:100%;object-fit:cover}
.mk figcaption{position:absolute;left:14px;bottom:14px;font-family:var(--disp);font-weight:900;font-size:clamp(26px,3vw,44px);line-height:1;padding:8px 18px;border-radius:12px;border:3px solid var(--ink)}
.mk-blue figcaption{background:var(--blue);color:#fff} .mk-green figcaption{background:var(--green)}
.mk-yellow figcaption{background:var(--yellow)} .mk-ink figcaption{background:#fff}

/* ---------- process ---------- */
.steps{list-style:none;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(14px,1.6vw,24px)}
.st{position:relative;border-radius:var(--r);overflow:hidden;border:4px solid var(--ink);box-shadow:6px 6px 0 var(--ink);aspect-ratio:4/5;display:flex;flex-direction:column;justify-content:flex-end}
.st img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.st .num{position:absolute;top:12px;left:16px;font-family:var(--disp);font-weight:900;font-size:clamp(48px,5vw,76px);line-height:1;color:#fff;-webkit-text-stroke:3px var(--ink);paint-order:stroke fill}
.st b{position:relative;margin:14px;font-family:var(--disp);font-weight:800;font-size:clamp(20px,1.9vw,28px);padding:8px 16px;border-radius:12px;border:3px solid var(--ink);align-self:flex-start;white-space:nowrap}
.st-1 b{background:var(--yellow)} .st-2 b{background:var(--green)} .st-3 b{background:var(--blue);color:#fff} .st-4 b{background:#fff}

/* ---------- contact ---------- */
.contact{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:clamp(28px,4vw,64px);background:var(--blue);color:#fff;position:relative;overflow:hidden}
.contact::after{content:"";position:absolute;right:-120px;top:-120px;width:360px;height:360px;border-radius:50%;background:var(--green);opacity:.9;z-index:0}
.contact > div{position:relative;z-index:1}
.contact h2{font-family:var(--disp);font-weight:900;font-size:clamp(40px,6.4vw,96px);line-height:1.05;margin:22px 0 26px}
.phone{display:block;font-family:var(--disp);font-weight:900;font-size:clamp(36px,5.4vw,80px);line-height:1.1;color:var(--yellow);white-space:nowrap}
.phone-2{font-size:clamp(26px,3.4vw,48px);color:#fff;margin-top:4px}
.phone:hover{text-decoration:underline;text-decoration-thickness:4px}
.ct-links{margin-top:30px}
.ct-right{display:flex;flex-direction:column;gap:18px;justify-content:flex-end}
.addr{background:#fff;color:var(--ink);border:4px solid var(--ink);border-radius:var(--r);padding:20px 24px;box-shadow:8px 8px 0 var(--ink)}
.addr b{font-family:var(--disp);font-weight:800;font-size:15px;letter-spacing:.06em;color:var(--blue)}
.addr p{font-size:18px;font-weight:500}
.map{width:100%;height:clamp(240px,26vw,340px);border:4px solid var(--ink);border-radius:var(--r);box-shadow:8px 8px 0 var(--ink);background:var(--concrete)}

.foot{background:var(--ink);color:#fff;padding:36px var(--gut);display:flex;align-items:center;gap:20px;flex-wrap:wrap}
.foot img{height:52px;width:auto}
.foot p{opacity:.85}

/* ---------- lightbox ---------- */
.lb{position:fixed;inset:0;z-index:100;background:rgba(6,14,32,.96);display:grid;grid-template-rows:1fr auto auto;grid-template-columns:auto 1fr auto;align-items:center;padding:16px}
.lb[hidden]{display:none}
.lb-fig{grid-column:2;grid-row:1;height:100%;min-height:0;display:flex;align-items:center;justify-content:center}
.lb-fig img{max-height:calc(100svh - 200px);max-width:100%;object-fit:contain;border-radius:12px}
.lb-nav{grid-row:1;width:56px;height:56px;border-radius:50%;background:var(--yellow);color:var(--ink);font-size:34px;line-height:1;border:3px solid var(--ink)}
.lb-prev{grid-column:1} .lb-next{grid-column:3}
.lb-x{position:absolute;top:14px;right:14px;width:48px;height:48px;border-radius:50%;background:#fff;color:var(--ink);font-size:30px;line-height:1;z-index:2}
.lb-bar{grid-column:1/-1;display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;color:#fff;padding:12px 4px}
.lb-bar b{font-family:var(--disp);font-weight:800;font-size:22px;margin-right:12px}
.lb-bar span{opacity:.7}
.lb-bar a{font-family:var(--disp);font-weight:700;background:var(--green);color:var(--ink);padding:8px 16px;border-radius:99px}
.lb-thumbs{grid-column:1/-1;display:flex;gap:8px;overflow-x:auto;padding-bottom:4px}
.lb-thumbs button{flex:0 0 auto;width:86px;height:64px;border-radius:8px;overflow:hidden;opacity:.5;border:3px solid transparent}
.lb-thumbs button.on{opacity:1;border-color:var(--yellow)}
.lb-thumbs img{width:100%;height:100%;object-fit:cover}

/* ---------- reveal ---------- */
.rv{opacity:0;transform:translateY(28px);transition:opacity .7s, transform .7s}
.rv.in{opacity:1;transform:none}
.st.rv:nth-child(2),.mk.rv:nth-child(2){transition-delay:.08s}
.st.rv:nth-child(3),.mk.rv:nth-child(3){transition-delay:.16s}
.st.rv:nth-child(4),.mk.rv:nth-child(4){transition-delay:.24s}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.rv{opacity:1;transform:none}}

/* ---------- responsive ---------- */
@media (max-width:1100px){
  .nav{display:none}
}
@media (max-width:900px){
  .hero{grid-template-columns:1fr;min-height:0}
  .hero-pics{min-height:auto;aspect-ratio:4/3.3;margin:0 var(--gut) 40px}
  .hp-main{inset:0 0 50px 0}
  .hp-small{left:-8px;bottom:0;width:42%}
  .badge{right:-4px;bottom:10px}
  .grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .card-big{grid-column:span 2;grid-row:auto;aspect-ratio:4/3}
  .grid .card:nth-child(8):last-child.card{grid-column:auto;aspect-ratio:4/3}
  .make-grid,.steps{grid-template-columns:repeat(2,minmax(0,1fr))}
  .contact{grid-template-columns:1fr}
  .contact::after{width:150px;height:150px;right:-75px;top:-75px}
}
@media (max-width:560px){
  .call{padding:9px 14px;font-size:14px}
  .call span{display:none}
  .brand-name{display:none}
  .grid{grid-template-columns:1fr}
  .card-big{grid-column:auto}
  .tag,.cnt{font-size:12px;top:10px}
  .tag{left:10px} .cnt{right:10px}
  .hero h1{font-size:clamp(40px,13vw,66px)}
  html[lang=en] .hero h1{font-size:clamp(28px,8.6vw,48px)}
  .make-grid,.steps{gap:12px}
  .st b{font-size:15px;padding:6px 10px;margin:8px;border-width:2px}
  .st .num{font-size:38px;top:8px;left:10px;-webkit-text-stroke-width:2px}
  .mk figcaption{font-size:20px;padding:5px 12px;left:8px;bottom:8px;border-width:2px}
  .lb-nav{display:none}
  .lb-fig{grid-column:1/-1}
  .btn{font-size:16px;padding:12px 20px}
}
