/* ============================================================
   SmartFlow Systems — style.css
   โครงสร้าง: 1) Tokens  2) Base  3) ปุ่ม  4) Nav  5) Hero
             6) Section ทั่วไป 7) Demo 8) Services 9) Packages
             10) Portfolio 11) Workflow 12) Policy 13) Reviews
             14) Why 15) Contact 16) Footer 17) FAB/Modal/Toast
             18) Responsive
============================================================ */

/* ---------- 1) TOKENS ---------- */
:root{
  --ink:      #060B22;   /* น้ำเงินเข้มสุด */
  --navy:     #0B1440;   /* Deep Blue */
  --navy-2:   #131E56;
  --blue:     #2E5BFF;   /* Electric Blue */
  --blue-lt:  #12B5FF;   /* ฟ้าสว่าง */
  --violet:   #7B4DFF;   /* Purple */
  --text:     #101736;
  --muted:    #5A6488;
  --mist:     #F4F6FC;   /* Light Gray */
  --line:     #E4E9F5;
  --white:    #FFFFFF;
  --line-green:#06C755;

  --grad: linear-gradient(120deg, var(--blue) 0%, var(--violet) 100%);
  --grad-soft: linear-gradient(120deg, rgba(46,91,255,.10), rgba(123,77,255,.10));

  --r-sm: 10px;
  --r-md: 16px;
  --r-lg: 22px;
  --r-xl: 28px;

  --sh-1: 0 2px 8px rgba(11,20,64,.05);
  --sh-2: 0 10px 30px rgba(11,20,64,.08);
  --sh-3: 0 22px 60px rgba(11,20,64,.14);

  --nav-h: 72px;
  --font-d: 'Anuphan', 'IBM Plex Sans Thai', system-ui, sans-serif;
  --font-b: 'IBM Plex Sans Thai', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --font-m: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
}

/* ---------- 2) BASE ---------- */
*,*::before,*::after{ box-sizing:border-box; }
html{ scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
body{
  margin:0; background:var(--white); color:var(--text);
  font-family:var(--font-b); font-size:16px; line-height:1.75;
  -webkit-font-smoothing:antialiased; overflow-x:hidden;
}
body.is-locked{ overflow:hidden; }
img{ max-width:100%; display:block; }
a{ color:inherit; text-decoration:none; }
ul,ol{ margin:0; padding:0; list-style:none; }
h1,h2,h3{ font-family:var(--font-d); line-height:1.25; margin:0; letter-spacing:-.01em; }
p{ margin:0; }
button{ font-family:inherit; }
:focus-visible{ outline:3px solid var(--blue-lt); outline-offset:3px; border-radius:6px; }

.wrap{ width:min(1180px, 100% - 40px); margin-inline:auto; }

.skip-link{
  position:absolute; left:-999px; top:0; z-index:200;
  background:var(--navy); color:#fff; padding:12px 18px; border-radius:0 0 12px 0;
}
.skip-link:focus{ left:0; }

section[id]{ scroll-margin-top: calc(var(--nav-h) + 12px); }

/* ค่อย ๆ ปรากฏเมื่อเลื่อนถึง */
.reveal{ opacity:0; transform:translateY(18px); transition:opacity .6s ease, transform .6s ease; }
.reveal.in{ opacity:1; transform:none; }

.eyebrow{
  font-family:var(--font-m); font-size:12px; letter-spacing:.18em; text-transform:uppercase;
  color:var(--blue-lt); margin-bottom:14px;
}
.eyebrow--dark{ color:var(--blue); }

.grad{
  background:var(--grad); -webkit-background-clip:text; background-clip:text; color:transparent;
}

/* ---------- 3) BUTTONS ---------- */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  padding:14px 26px; border-radius:999px; border:1px solid transparent;
  font-family:var(--font-d); font-weight:600; font-size:15px; cursor:pointer;
  transition:transform .18s ease, box-shadow .18s ease, background .18s ease, color .18s ease, border-color .18s ease;
  white-space:nowrap;
}
.btn:hover{ transform:translateY(-2px); }
.btn:active{ transform:translateY(0); }
.btn--sm{ padding:10px 18px; font-size:14px; }
.btn--lg{ padding:16px 32px; font-size:16px; }

.btn--primary{ background:var(--grad); color:#fff; box-shadow:0 10px 26px rgba(46,91,255,.35); }
.btn--primary:hover{ box-shadow:0 16px 34px rgba(46,91,255,.45); }

.btn--outline{ border-color:rgba(255,255,255,.35); color:#fff; background:rgba(255,255,255,.04); }
.btn--outline:hover{ border-color:var(--blue-lt); background:rgba(18,181,255,.12); }

.btn--outline-light{ border-color:rgba(255,255,255,.4); color:#fff; }
.btn--outline-light:hover{ background:rgba(255,255,255,.12); }

.btn--ghost{ border-color:var(--line); color:var(--text); background:var(--white); }
.btn--ghost:hover{ border-color:var(--blue); color:var(--blue); }

.btn--line{ background:var(--line-green); color:#fff; box-shadow:0 8px 22px rgba(6,199,85,.3); }
.btn--line:hover{ background:#05b34d; }

.btn--dark{ background:var(--navy); color:#fff; }
.btn--dark:hover{ background:var(--navy-2); }

.btn--text{ padding:14px 6px; color:#cfd8ff; }
.btn--text:hover{ color:#fff; }

.btn--block{ width:100%; }

/* ---------- 4) NAVIGATION ---------- */
.nav{
  position:sticky; top:0; z-index:100;
  background:rgba(255,255,255,.86); backdrop-filter:blur(14px);
  border-bottom:1px solid transparent; transition:box-shadow .25s ease, border-color .25s ease;
}
.nav.is-stuck{ box-shadow:var(--sh-1); border-bottom-color:var(--line); }
.nav__inner{ height:var(--nav-h); display:flex; align-items:center; gap:20px; }

.brand{ display:flex; align-items:center; gap:11px; flex-shrink:0; }
.brand__mark{ display:flex; }
.brand__mark img{ width:34px; height:34px; border-radius:10px; }
.brand__text{ font-family:var(--font-d); font-size:17px; font-weight:500; line-height:1.15; color:var(--navy); }
.brand__text strong{ font-weight:700; }
.brand__text em{
  display:block; font-style:normal; font-family:var(--font-m);
  font-size:9.5px; letter-spacing:.16em; text-transform:uppercase; color:var(--muted);
}

.nav__links{ display:flex; gap:4px; margin-inline:auto; }
.nav__links a{
  position:relative; padding:8px 12px; border-radius:8px;
  font-size:14.5px; font-weight:500; color:var(--muted); transition:color .18s ease, background .18s ease;
}
.nav__links a:hover{ color:var(--navy); background:var(--mist); }
.nav__links a.active{ color:var(--blue); }
.nav__links a.active::after{
  content:""; position:absolute; left:12px; right:12px; bottom:2px; height:2px;
  background:var(--grad); border-radius:2px;
}

.nav__actions{ display:flex; gap:10px; flex-shrink:0; }

.burger{
  display:none; width:44px; height:44px; border:1px solid var(--line); background:var(--white);
  border-radius:12px; cursor:pointer; padding:0; place-items:center; gap:5px;
}
.burger span{ display:block; width:18px; height:2px; background:var(--navy); border-radius:2px; transition:transform .25s ease, opacity .2s ease; }
.burger.is-open span:nth-child(1){ transform:translateY(7px) rotate(45deg); }
.burger.is-open span:nth-child(2){ opacity:0; }
.burger.is-open span:nth-child(3){ transform:translateY(-7px) rotate(-45deg); }

.mobile-menu{
  display:none; flex-direction:column; padding:10px 20px 22px;
  background:var(--white); border-top:1px solid var(--line);
  max-height:calc(100dvh - var(--nav-h)); overflow-y:auto;
}
.mobile-menu a{ padding:13px 4px; font-size:16px; font-weight:500; border-bottom:1px solid var(--mist); }
.mobile-menu a.active{ color:var(--blue); }
.mobile-menu__cta{ display:flex; flex-direction:column; gap:10px; margin-top:18px; }
.mobile-menu__cta a{ border-bottom:none; }

/* ---------- 5) HERO ---------- */
.hero{
  position:relative; overflow:hidden; background:var(--navy); color:#fff;
  padding: clamp(56px, 8vw, 96px) 0 clamp(72px, 9vw, 120px);
}
.hero__grid-bg{
  position:absolute; inset:0;
  background-image:linear-gradient(rgba(255,255,255,.05) 1px, transparent 1px),
                   linear-gradient(90deg, rgba(255,255,255,.05) 1px, transparent 1px);
  background-size:56px 56px;
  mask-image:radial-gradient(ellipse 90% 70% at 50% 20%, #000 40%, transparent 100%);
  -webkit-mask-image:radial-gradient(ellipse 90% 70% at 50% 20%, #000 40%, transparent 100%);
}
.hero__glow{
  position:absolute; top:-220px; right:-140px; width:640px; height:640px; border-radius:50%;
  background:radial-gradient(circle, rgba(123,77,255,.55), rgba(46,91,255,.18) 45%, transparent 70%);
  filter:blur(24px);
}
.hero__inner{ position:relative; display:grid; grid-template-columns:1.05fr .95fr; gap:56px; align-items:center; }

.hero__title{ font-size:clamp(38px, 6.2vw, 62px); font-weight:700; margin-bottom:16px; }
.hero__lead{ font-size:clamp(16px, 2vw, 19px); color:#c3cbf0; max-width:30ch; }

.badges{ display:flex; flex-wrap:wrap; gap:8px; margin:26px 0 32px; }
.badges li{
  font-family:var(--font-m); font-size:12px; letter-spacing:.02em;
  padding:7px 13px; border-radius:999px;
  border:1px solid rgba(255,255,255,.18); background:rgba(255,255,255,.06); color:#dbe3ff;
}

.hero__cta{ display:flex; flex-wrap:wrap; gap:12px; align-items:center; }

.hero__stats{ display:flex; flex-wrap:wrap; gap:12px 34px; margin:38px 0 0; padding-top:28px; border-top:1px solid rgba(255,255,255,.12); }
.hero__stats div{ min-width:120px; }
.hero__stats dt{ font-family:var(--font-m); font-size:11px; letter-spacing:.12em; text-transform:uppercase; color:#8b97cf; }
.hero__stats dd{ margin:2px 0 0; font-family:var(--font-d); font-weight:600; font-size:15px; color:#fff; }

/* --- Mockup Dashboard --- */
.mock{ perspective:1400px; }
.mock__win{
  background:#0F1A4D; border:1px solid rgba(255,255,255,.12); border-radius:var(--r-lg);
  box-shadow:0 30px 70px rgba(0,0,0,.45); overflow:hidden;
  transform:rotateY(-6deg) rotateX(3deg); transform-origin:left center;
}
.mock__bar{
  display:flex; align-items:center; gap:7px; padding:12px 16px;
  background:rgba(255,255,255,.05); border-bottom:1px solid rgba(255,255,255,.09);
}
.dot{ width:9px; height:9px; border-radius:50%; background:#5b67a5; }
.dot--r{ background:#ff5f57; } .dot--y{ background:#ffbd2e; } .dot--g{ background:#28c840; }
.mock__url{ font-family:var(--font-m); font-size:11px; color:#8f9bd6; margin-left:10px; }
.mock__live{ margin-left:auto; display:flex; align-items:center; gap:6px; font-family:var(--font-m); font-size:10px; color:#12B5FF; }
.mock__live i{ width:6px; height:6px; border-radius:50%; background:#12B5FF; animation:blink 1.6s infinite; }
@keyframes blink{ 0%,100%{opacity:1} 50%{opacity:.25} }

.mock__body{ padding:18px; display:grid; gap:14px; }
.mock__stats{ display:grid; grid-template-columns:repeat(3,1fr); gap:10px; }
.stat{ background:rgba(255,255,255,.05); border:1px solid rgba(255,255,255,.08); border-radius:var(--r-sm); padding:12px; }
.stat__label{ display:block; font-size:11px; color:#93a0dc; }
.stat__num{ font-family:var(--font-d); font-size:24px; font-weight:700; color:#fff; }

.mock__chart{ background:rgba(255,255,255,.05); border:1px solid rgba(255,255,255,.08); border-radius:var(--r-sm); padding:14px; }
.chart__head{ display:flex; justify-content:space-between; font-size:11.5px; color:#93a0dc; margin-bottom:12px; }
.chart__up{ color:#3ddc84; font-family:var(--font-m); }
.chart__bars{ display:flex; align-items:flex-end; gap:8px; height:76px; }
.chart__bars i{
  flex:1; height:var(--h); border-radius:5px 5px 2px 2px;
  background:linear-gradient(180deg, var(--blue-lt), var(--blue));
  transform-origin:bottom; animation:grow .9s cubic-bezier(.2,.8,.3,1) backwards;
}
.chart__bars i:nth-child(2){ animation-delay:.07s } .chart__bars i:nth-child(3){ animation-delay:.14s }
.chart__bars i:nth-child(4){ animation-delay:.21s } .chart__bars i:nth-child(5){ animation-delay:.28s }
.chart__bars i:nth-child(6){ animation-delay:.35s; background:linear-gradient(180deg,#a98bff,var(--violet)); }
.chart__bars i:nth-child(7){ animation-delay:.42s }
@keyframes grow{ from{ transform:scaleY(0); opacity:0 } to{ transform:scaleY(1); opacity:1 } }

.flow{ display:flex; align-items:center; gap:6px; }
.flow__node{
  padding:8px 11px; border-radius:8px; font-family:var(--font-m); font-size:10px; white-space:nowrap;
  background:rgba(46,91,255,.18); border:1px solid rgba(46,91,255,.5); color:#cfe0ff;
}
.flow__node--end{ background:rgba(6,199,85,.16); border-color:rgba(6,199,85,.5); color:#b7f2ce; }
.flow__line{ position:relative; flex:1; height:2px; background:rgba(255,255,255,.16); border-radius:2px; overflow:hidden; }
.pulse{
  position:absolute; top:-2px; left:0; width:26px; height:6px; border-radius:3px;
  background:linear-gradient(90deg, transparent, var(--blue-lt));
  animation:slide 2.2s linear infinite;
}
.pulse--delay{ animation-delay:1.1s; }
@keyframes slide{ from{ left:-30px } to{ left:100% } }

.mock__rows{ display:grid; gap:8px; }
.mock__rows li{
  display:flex; align-items:center; gap:9px; font-size:12px; color:#c6cff2;
  background:rgba(255,255,255,.04); border-radius:8px; padding:9px 11px;
}
.tick{ width:8px; height:8px; border-radius:50%; background:#3ddc84; flex-shrink:0; }
.tick--run{ background:var(--blue-lt); } .tick--wait{ background:#ffbd2e; }
.pill{ margin-left:auto; font-style:normal; font-size:10.5px; padding:3px 9px; border-radius:999px; white-space:nowrap; }
.pill--ok{ background:rgba(61,220,132,.16); color:#7bf0b0; }
.pill--run{ background:rgba(18,181,255,.16); color:#8ddcff; }
.pill--wait{ background:rgba(255,189,46,.16); color:#ffd786; }

/* ---------- 6) SECTION ทั่วไป ---------- */
.section{ padding: clamp(64px, 8vw, 108px) 0; }
.section--mist{ background:var(--mist); }

.sec-head{ max-width:640px; margin:0 auto clamp(36px, 5vw, 56px); text-align:center; }
.sec-head h2{ font-size:clamp(27px, 4vw, 40px); font-weight:700; color:var(--navy); }
.sec-sub{ margin-top:14px; color:var(--muted); font-size:16px; }

.note{
  margin-top:28px; text-align:center; font-size:14px; color:var(--muted);
}
.note--warn{
  display:inline-block; margin-inline:auto; padding:10px 18px; border-radius:999px;
  background:#FFF6E5; color:#8a6100; border:1px solid #FFE2A8;
}
#reviews .note--warn{ display:block; width:max-content; max-width:100%; }

/* ---------- 7) DEMO CARDS ---------- */
.cards{ display:grid; grid-template-columns:repeat(3, 1fr); gap:22px; }
.card{
  background:var(--white); border:1px solid var(--line); border-radius:var(--r-lg);
  overflow:hidden; display:flex; flex-direction:column;
  box-shadow:var(--sh-1); transition:transform .25s ease, box-shadow .25s ease, border-color .25s ease;
}
.card:hover{ transform:translateY(-6px); box-shadow:var(--sh-3); border-color:rgba(46,91,255,.35); }

.thumb{ position:relative; aspect-ratio:16/9; background:var(--navy); overflow:hidden; }
.thumb img{ width:100%; height:100%; object-fit:cover; }
.thumb__tag{
  position:absolute; top:12px; left:12px; z-index:2;
  font-family:var(--font-m); font-size:10px; letter-spacing:.08em; text-transform:uppercase;
  background:rgba(255,255,255,.92); color:var(--navy); padding:5px 10px; border-radius:999px;
}
/* ภาพจำลอง (ใช้เมื่อยังไม่ใส่รูปจริง) */
.thumb__mock{ position:absolute; inset:0; padding:16px; display:grid; gap:7px; align-content:start;
  background:linear-gradient(140deg,#0B1440,#1B2A72 55%,#3A2C7A); }
.thumb__mock span{ height:7px; border-radius:4px; background:rgba(255,255,255,.16); }
.thumb__mock span:nth-child(1){ width:42%; background:linear-gradient(90deg,var(--blue-lt),var(--violet)); }
.thumb__mock span:nth-child(2){ width:74%; } .thumb__mock span:nth-child(3){ width:58%; }
.thumb__mock .thumb__mini{ display:flex; gap:7px; margin-top:6px; height:38px; }
.thumb__mock .thumb__mini b{ flex:1; border-radius:6px; background:rgba(255,255,255,.1); border:1px solid rgba(255,255,255,.14); }
.thumb__mock .thumb__mini b:first-child{ background:rgba(46,91,255,.35); }

.card__body{ padding:22px; display:flex; flex-direction:column; flex:1; }
.card__body h3{ font-size:19px; font-weight:600; color:var(--navy); }
.card__desc{ margin-top:8px; color:var(--muted); font-size:14.5px; }
.feat{ margin:16px 0 20px; display:grid; gap:7px; }
.feat li{ position:relative; padding-left:22px; font-size:14px; color:var(--text); }
.feat li::before{
  content:""; position:absolute; left:0; top:9px; width:10px; height:10px; border-radius:3px;
  background:var(--grad-soft); border:1.5px solid var(--blue);
}
.card__foot{ margin-top:auto; display:flex; gap:10px; flex-wrap:wrap; }
.card__foot .btn{ flex:1; min-width:130px; padding:12px 16px; font-size:14px; }

/* ---------- 8) SERVICES ---------- */
.services{ display:grid; grid-template-columns:repeat(auto-fit, minmax(255px, 1fr)); gap:16px; }
.svc{
  background:var(--white); border:1px solid var(--line); border-radius:var(--r-md); padding:24px;
  transition:transform .22s ease, box-shadow .22s ease;
  border-top:3px solid transparent; background-clip:padding-box;
}
.svc:hover{ transform:translateY(-4px); box-shadow:var(--sh-2); border-top-color:var(--blue); }
.svc h3{ font-size:16.5px; font-weight:600; color:var(--navy); }
.svc p{ margin-top:9px; font-size:14.5px; color:var(--muted); }

/* ---------- 9) PACKAGES ---------- */
.pricing{ display:grid; grid-template-columns:repeat(3,1fr); gap:22px; align-items:stretch; }
.plan{
  position:relative; background:var(--white); border:1px solid var(--line); border-radius:var(--r-xl);
  padding:34px 28px; display:flex; flex-direction:column;
  transition:transform .25s ease, box-shadow .25s ease;
}
.plan:hover{ transform:translateY(-6px); box-shadow:var(--sh-3); }
.plan--feature{
  background:linear-gradient(165deg, var(--navy) 0%, #1D2A7A 100%); color:#fff; border-color:transparent;
  box-shadow:var(--sh-3);
}
.plan__badge{
  position:absolute; top:-13px; left:50%; transform:translateX(-50%);
  font-family:var(--font-m); font-size:10.5px; letter-spacing:.14em;
  padding:6px 16px; border-radius:999px; background:var(--grad); color:#fff; white-space:nowrap;
  box-shadow:0 6px 16px rgba(46,91,255,.4);
}
.plan__badge--value{ background:linear-gradient(120deg,#12B5FF,#06C755); box-shadow:0 6px 16px rgba(6,199,85,.35); }
.plan__name{ font-family:var(--font-d); font-size:20px; font-weight:600; color:var(--navy); }
.plan--feature .plan__name{ color:#fff; }
.plan__tag{ margin-top:4px; font-size:13.5px; color:var(--muted); }
.plan--feature .plan__tag{ color:#b4bff0; }
.plan__price{ display:flex; align-items:baseline; gap:6px; margin:18px 0 22px; }
.plan__price b{ font-family:var(--font-d); font-size:40px; font-weight:700; color:var(--navy); line-height:1; }
.plan--feature .plan__price b{ color:#fff; }
.plan__price span{ font-size:14px; color:var(--muted); }
.plan--feature .plan__price span{ color:#b4bff0; }
.plan__list{ display:grid; gap:10px; margin-bottom:26px; }
.plan__list li{ position:relative; padding-left:26px; font-size:14.5px; }
.plan__list li::before{
  content:"✓"; position:absolute; left:0; top:0; width:17px; height:17px; margin-top:5px;
  display:grid; place-items:center; border-radius:50%; font-size:10px; font-weight:700;
  background:rgba(46,91,255,.12); color:var(--blue);
}
.plan--feature .plan__list li::before{ background:rgba(255,255,255,.16); color:#fff; }
.plan .btn{ margin-top:auto; }

/* ---------- 10) PORTFOLIO ---------- */
.folio{ display:grid; grid-template-columns:repeat(3,1fr); gap:22px; }
.fol{
  background:var(--white); border:1px solid var(--line); border-radius:var(--r-lg); overflow:hidden;
  transition:transform .25s ease, box-shadow .25s ease;
}
.fol:hover{ transform:translateY(-6px); box-shadow:var(--sh-3); }
.fol__body{ padding:20px; }
.fol__type{ font-family:var(--font-m); font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:var(--blue); }
.fol__body h3{ font-size:17.5px; font-weight:600; color:var(--navy); margin-top:6px; }
.tech{ display:flex; flex-wrap:wrap; gap:6px; margin:14px 0 18px; }
.tech li{
  font-family:var(--font-m); font-size:10.5px; padding:5px 10px; border-radius:999px;
  background:var(--mist); color:var(--muted); border:1px solid var(--line);
}
.fol .btn{ width:100%; padding:11px 16px; font-size:14px; }

/* ---------- 11) WORKFLOW ---------- */
.timeline{ position:relative; max-width:780px; margin-inline:auto; display:grid; gap:8px; }
.timeline::before{
  content:""; position:absolute; left:23px; top:14px; bottom:14px; width:2px;
  background:linear-gradient(180deg, var(--blue), var(--violet)); border-radius:2px; opacity:.35;
}
.tl{ position:relative; display:flex; gap:20px; align-items:flex-start; padding:14px 0; }
.tl__no{
  position:relative; z-index:1; flex-shrink:0;
  width:48px; height:48px; border-radius:16px; display:grid; place-items:center;
  font-family:var(--font-d); font-weight:700; font-size:17px; color:#fff;
  background:var(--grad); box-shadow:0 8px 20px rgba(46,91,255,.28);
}
.tl h3{ font-size:18px; font-weight:600; color:var(--navy); padding-top:9px; }
.tl p{ margin-top:6px; color:var(--muted); font-size:14.5px; }

/* ---------- 12) POLICY ---------- */
.policy{ display:grid; grid-template-columns:repeat(3,1fr); gap:16px; }
.pol{
  background:var(--white); border:1px solid var(--line); border-radius:var(--r-md); padding:22px;
  transition:transform .22s ease, box-shadow .22s ease;
}
.pol:hover{ transform:translateY(-4px); box-shadow:var(--sh-2); }
.pol h3{ font-size:16px; font-weight:600; color:var(--navy); }
.pol p{ margin-top:8px; font-size:14.5px; color:var(--muted); }

/* ---------- 13) REVIEWS ---------- */
.reviews{ display:grid; grid-template-columns:repeat(3,1fr); gap:20px; }
.rev{
  background:var(--white); border:1px solid var(--line); border-radius:var(--r-lg); padding:26px;
  display:flex; flex-direction:column; box-shadow:var(--sh-1);
}
.rev__stars{ color:#FFB020; font-size:15px; letter-spacing:2px; }
.rev__text{ margin:14px 0 20px; font-size:15px; color:var(--text); }
.rev__meta{ margin-top:auto; padding-top:16px; border-top:1px solid var(--line); }
.rev__who{ font-family:var(--font-d); font-weight:600; font-size:14.5px; color:var(--navy); }
.rev__sys{ font-family:var(--font-m); font-size:11px; color:var(--blue); letter-spacing:.06em; }

/* ---------- 14) WHY ---------- */
.why{ display:grid; grid-template-columns:repeat(3,1fr); gap:18px; }
.why__i{ background:var(--white); border:1px solid var(--line); border-radius:var(--r-md); padding:26px; }
.why__i h3{ font-size:17px; font-weight:600; color:var(--navy); }
.why__i p{ margin-top:9px; font-size:14.5px; color:var(--muted); }

/* ---------- 15) CONTACT ---------- */
.contact{
  position:relative; overflow:hidden; background:var(--ink); color:#fff; text-align:center;
  padding: clamp(70px, 9vw, 118px) 0;
}
.contact__glow{
  position:absolute; left:50%; top:-180px; transform:translateX(-50%);
  width:760px; height:560px; border-radius:50%;
  background:radial-gradient(circle, rgba(46,91,255,.45), rgba(123,77,255,.16) 45%, transparent 70%);
  filter:blur(20px);
}
.contact__inner{ position:relative; }
.contact__title{ font-size:clamp(26px, 4.2vw, 42px); font-weight:700; }
.contact__lead{ margin:18px auto 0; max-width:52ch; color:#b6c0ea; }
.contact__cta{ display:flex; flex-wrap:wrap; gap:12px; justify-content:center; margin-top:34px; }
.contact__list{
  display:flex; flex-wrap:wrap; justify-content:center; gap:14px 36px;
  margin-top:44px; padding-top:30px; border-top:1px solid rgba(255,255,255,.12);
}
.contact__list li{ display:flex; flex-direction:column; gap:2px; min-width:150px; }
.contact__list span{ font-family:var(--font-m); font-size:10.5px; letter-spacing:.14em; text-transform:uppercase; color:#8a96d2; }
.contact__list a{ font-family:var(--font-d); font-weight:600; color:#fff; transition:color .18s ease; }
.contact__list a:hover{ color:var(--blue-lt); }

/* ---------- 16) FOOTER ---------- */
.foot{ background:var(--navy); color:#aeb9e6; padding:44px 0 90px; }
.foot__inner{ display:grid; gap:22px; }
.foot__brand strong{ font-family:var(--font-d); font-size:18px; color:#fff; }
.foot__brand p{ margin-top:8px; font-size:13.5px; line-height:1.9; }
.foot__nav{ display:flex; flex-wrap:wrap; gap:8px 22px; font-size:14px; }
.foot__nav a:hover{ color:#fff; }
.foot__copy{ font-size:12.5px; color:#7f8bc0; padding-top:18px; border-top:1px solid rgba(255,255,255,.1); }

/* ---------- 17) FAB / MODAL / TOAST ---------- */
.fab{
  position:fixed; right:18px; bottom:18px; z-index:90;
  display:none; align-items:center; gap:8px;
  padding:14px 20px; border-radius:999px;
  background:var(--line-green); color:#fff; font-family:var(--font-d); font-weight:600; font-size:15px;
  box-shadow:0 12px 30px rgba(6,199,85,.45);
}
.fab:active{ transform:scale(.97); }

.modal{ position:fixed; inset:0; z-index:150; display:grid; place-items:center; padding:20px; }
.modal[hidden]{ display:none; }
.modal__backdrop{ position:absolute; inset:0; background:rgba(6,11,34,.72); backdrop-filter:blur(4px); }
.modal__box{
  position:relative; width:min(620px, 100%); max-height:86dvh; overflow-y:auto;
  background:var(--white); border-radius:var(--r-xl); padding:34px;
  box-shadow:0 40px 90px rgba(0,0,0,.4); animation:pop .28s cubic-bezier(.2,.9,.3,1);
}
@keyframes pop{ from{ opacity:0; transform:translateY(20px) scale(.97) } to{ opacity:1; transform:none } }
.modal__x{
  position:absolute; top:16px; right:16px; width:38px; height:38px; border-radius:50%;
  border:1px solid var(--line); background:var(--white); color:var(--muted); cursor:pointer; font-size:14px;
}
.modal__x:hover{ background:var(--mist); color:var(--navy); }
.modal__content h3{ font-size:24px; font-weight:700; color:var(--navy); padding-right:40px; }
.modal__eyebrow{ font-family:var(--font-m); font-size:11px; letter-spacing:.12em; text-transform:uppercase; color:var(--blue); margin-bottom:8px; }
.modal__content p{ margin-top:14px; color:var(--muted); font-size:15px; }
.modal__content h4{ margin:24px 0 12px; font-family:var(--font-d); font-size:15px; color:var(--navy); }
.modal__content .feat li{ color:var(--text); }
.modal__foot{ display:flex; gap:10px; flex-wrap:wrap; margin-top:28px; }
.modal__foot .btn{ flex:1; min-width:150px; }

.toast{
  position:fixed; left:50%; bottom:96px; transform:translate(-50%, 20px); z-index:200;
  background:var(--navy); color:#fff; padding:13px 22px; border-radius:999px; font-size:14px;
  box-shadow:var(--sh-3); opacity:0; pointer-events:none; transition:opacity .25s ease, transform .25s ease;
  max-width:calc(100% - 40px); text-align:center;
}
.toast.show{ opacity:1; transform:translate(-50%, 0); }

/* ---------- 18) RESPONSIVE ---------- */
@media (max-width:1080px){
  .nav__links{ display:none; }
  .burger{ display:grid; margin-left:auto; }
  .nav__actions{ display:none; }
  .nav.is-open .mobile-menu{ display:flex; }
  .cards, .folio, .policy, .reviews, .why{ grid-template-columns:repeat(2,1fr); }
  .pricing{ grid-template-columns:1fr; max-width:520px; margin-inline:auto; }
  .hero__inner{ grid-template-columns:1fr; gap:44px; }
  .mock__win{ transform:none; }
  .hero__lead{ max-width:none; }
}

@media (max-width:720px){
  body{ font-size:15.5px; }
  .wrap{ width:min(1180px, 100% - 32px); }
  .cards, .folio, .policy, .reviews, .why, .services{ grid-template-columns:1fr; }
  .fab{ display:inline-flex; }
  .hero{ padding-top:40px; }
  .hero__cta{ gap:10px; }
  .hero__cta .btn{ flex:1 1 100%; }
  .hero__cta .btn--text{ flex:0 0 auto; }
  .hero__stats{ gap:16px 24px; }
  .mock__body{ padding:14px; }
  .mock__stats{ gap:7px; }
  .stat{ padding:9px; }
  .stat__num{ font-size:19px; }
  .flow__node{ font-size:9px; padding:6px 8px; }
  .card__foot .btn{ flex:1 1 100%; }
  .timeline::before{ left:19px; }
  .tl{ gap:14px; }
  .tl__no{ width:40px; height:40px; border-radius:13px; font-size:15px; }
  .tl h3{ padding-top:6px; }
  .modal__box{ padding:26px 22px; }
  .contact__cta .btn{ width:100%; }
  .contact__list{ gap:18px; }
  .foot{ padding-bottom:110px; }
}

@media (max-width:400px){
  .brand__text{ font-size:15px; }
  .flow{ display:none; }
}

/* เคารพการตั้งค่า "ลดการเคลื่อนไหว" ของผู้ใช้ */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{ animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important; }
  html{ scroll-behavior:auto; }
  .reveal{ opacity:1; transform:none; }
}


/* ---------- เพิ่มเติม: หน้า Demo และผลงาน ---------- */

/* ป้ายบอกเมนูในการ์ด Demo */
.card__menu{
  margin-top:12px; display:inline-block; padding:7px 12px; border-radius:9px;
  font-size:12.5px; color:var(--blue);
  background:var(--grad-soft); border:1px solid rgba(46,91,255,.2);
}
.card__menu b{ font-weight:600; }

/* แถบอธิบายว่า Demo มาจากระบบจริง */
.demo-note{
  display:flex; gap:14px; align-items:flex-start;
  max-width:760px; margin:0 auto clamp(28px,4vw,44px);
  padding:16px 20px; border-radius:var(--r-md);
  background:var(--mist); border:1px solid var(--line);
}
.demo-note span{ font-size:20px; line-height:1.4; flex-shrink:0; }
.demo-note p{ font-size:14.5px; color:var(--muted); }
.demo-note b{ color:var(--navy); font-weight:600; }

/* ผลงานเมื่อมี 1-2 รายการ ให้จัดกึ่งกลางแทนการชิดซ้าย */
.folio--few{ grid-template-columns:repeat(auto-fit,minmax(300px,520px)); justify-content:center; }

@media (max-width:720px){
  .demo-note{ padding:14px 16px; }
  .folio--few{ grid-template-columns:1fr; }
}


/* ---------- แถบตัวเลขผลงานจริง ---------- */
.proof{
  display:grid; grid-template-columns:repeat(4,1fr); gap:12px;
  max-width:760px; margin:0 auto 22px;
}
.proof li{
  text-align:center; padding:16px 10px; border-radius:var(--r-md);
  background:var(--white); border:1px solid var(--line); box-shadow:var(--sh-1);
}
.proof b{
  display:block; font-family:var(--font-d); font-size:30px; font-weight:700; line-height:1;
  background:var(--grad); -webkit-background-clip:text; background-clip:text; color:transparent;
}
.proof span{ display:block; margin-top:6px; font-size:12.5px; color:var(--muted); }

.demo-note a{ color:var(--blue); font-weight:600; text-decoration:underline; text-underline-offset:3px; }

/* ---------- บรรทัดประเภทธุรกิจและช่วงเวลาในการ์ดผลงาน ---------- */
.fol__meta{ margin-top:7px; font-size:12.5px; color:var(--muted); }
.modal__meta{
  margin-top:8px !important; font-size:13px !important; color:var(--muted) !important;
  padding-bottom:12px; border-bottom:1px solid var(--line);
}

@media (max-width:720px){
  .proof{ grid-template-columns:repeat(2,1fr); }
  .proof b{ font-size:26px; }
}
