/* ===========================================================================
   NAL Home — EXPERIMENTAL PROTOTYPE
   Thu nghiem: human imagery + subtle motion + video storytelling.
   KHONG dung o production. Design token lay nguyen tu Home.dc.html hien tai.
   =========================================================================== */

:root {
  /* --- token mau: do truc tiep tu Home.dc.html, khong tu che them mau moi --- */
  --navy:        #102A43;
  --navy-deep:   #0B2036;
  --navy-ink:    #0E2740;
  --blue:        #1B6FB3;
  --blue-mid:    #2C7FC0;
  --blue-pale:   #8FC9F5;
  --amber:       #F2B705;
  --orange:      #E8722C;
  --green:       #3EA874;
  --ink:         #2E2E2E;
  --muted:       #5A6B7C;
  --line:        #E2E8EE;
  --surface:     #F7F9FB;
  --white:       #FFFFFF;

  /* --- sac xam: truoc day 5 sac nam rai rac duoi dang hex tho trong css va
     412 lan trong html cac trang khac. Dat ten theo VAI TRO de sau nay doi
     tong xam chi phai sua mot cho. Gia tri giu NGUYEN -> 0 thay doi thi giac. */
  --line-strong:   #DCE4EC;   /* vien the / panel / dropdown */
  --line-soft:     #E8EDF2;   /* ke manh trong menu */
  --surface-2:     #F4F7FA;   /* nen rat nhat sau anh */
  --surface-3:     #F0F4F7;   /* nen muc menu mobile */
  --on-dark-muted: #C6D3E0;   /* chu phu tren nen navy (footer) */
  --on-dark-soft:  #D2DEEA;   /* chu dan tren nen navy (CTA) */
  --navy-mid:      #17486F;   /* nac navy giua, dung cho day so lieu */

  --lime:       #6FA92C;   /* cham thu 3 khoi 課題 */

  --maxw: 1240px;
  --gutter: 32px;

  /* --- duong cong chuyen dong: 1 bo duy nhat cho ca trang --- */
  --ease-out:  cubic-bezier(0.22, 0.61, 0.36, 1);
  --ease-soft: cubic-bezier(0.40, 0.00, 0.20, 1);
  --dur-1: 0.55s;   /* Level 1 — vao trang, hien chu */
  --dur-2: 0.95s;   /* Level 2 — ke chuyen: anh, video */
  --dur-3: 0.25s;   /* Level 3 — tuong tac: hover, nut */

  /* --- thang khoang trang: gan theo TUNG CHUYEN TIEP, khong theo section.
     Do duoc truoc khi sua: moi section deu 86px tren + 86px duoi => 172px
     giua MOI cap, tong 1.720px khoang trang = 18,5% chieu dai trang. --- */
  --sp-hair:  clamp(16px, 1.8vw, 26px); /* mot mach lien tuc: 4+4 the, cum chung minh */
  --sp-tight: clamp(24px, 2.6vw, 38px); /* noi mach: 2 khoi la mot y */
  --sp-base:  clamp(40px, 4.2vw, 60px); /* mac dinh */
  --sp-open:  clamp(60px, 6.8vw, 100px);/* truoc/sau mot visual nang */

  /* --- chieu cao 2 thanh DINH o dinh trang. Ba cho phu thuoc vao cap so nay:
     .lnav{top}, [id]{scroll-margin-top} va .hero{margin-top/padding-top}.
     Truoc day .hero chi tru 76px (quen .lnav) => header bi cat ngang boi mot
     dai trang 41px o dinh trang. Khai mot cho de ba cho khong the lech nhau. */
  --hdr-h:  76px;   /* .hdr__in height */
  --lnav-h: 41px;   /* .lnav__in 40px + border-bottom 1px */
}

* { box-sizing: border-box; }

html { scroll-behavior: smooth; }

body {
  margin: 0;
  background: var(--white);
  color: var(--ink);
  font-family: 'Zen Kaku Gothic New', 'Noto Sans JP', sans-serif;
  -webkit-text-size-adjust: 100%;
  overflow-x: hidden;           /* chan tran ngang do lop chong nhau */

  /* --- NGAT DONG TIENG NHAT -----------------------------------------------
     Mac dinh trinh duyet ngat tieng Nhat o gan nhu MOI ky tu, nen do duoc
     nhung cho rat xau: tach giua mot tu katakana (マーケ|ティング,
     シームレ|ス), va te hon la day ky tu nho xuong dau dong (ネイテ|ィブ,
     アーキテクチ|ャ) — cai nay vi pham kinsoku, doc ra la loi chu khong phai
     ngat dong.
     - auto-phrase: ngat theo CUM TU (文節) thay vi tuy tien giua tu. Trinh
       duyet chua ho tro se khong nhan gia tri nay va ve mac dinh, khong hong.
     - line-break: strict: ap kinsoku chat — ー, ぁぃぅっゃゅょ, 、。 khong
       duoc dung dau dong.
     Dat o body de phu ca trang; voi chu latin hai thuoc tinh nay khong doi gi. */
  word-break: auto-phrase;
  line-break: strict;
  /* VAN AN TOAN — bat buoc phai co khi dung auto-phrase: o man hep, mot cum tu
     dai hon be ngang kha dung thi auto-phrase KHONG chiu cat, chu tran ra ngoai
     va ca trang cuon ngang. Do duoc o 360px: scrollWidth 416/360 truoc khi them
     dong nay. "anywhere" cho phep cat khi bat kha khang, "break-word" KHONG du
     (do lai van 416px).                                                        */
  overflow-wrap: anywhere;
}

img { display: block; max-width: 100%; }

/* header dinh (76px) + thanh nhan prototype => neo trong trang phai chua cho,
   neu khong bam link o nav se nhay den cho tieu de bi header che. */
/* MAC DINH (27/28 trang, KHONG co .lnav): chi tru header + thoang 7px.
   .lnav CHI ton tai o index.html (xem home-motion.js localNav()) -> dung
   :has() de tu dong CONG THEM chieu cao .lnav duy nhat cho trang do, thay vi
   moi trang moi phai tu nho cong/khong cong dung cong thuc (Key Insight #5,
   phase-01-global-shell-and-contact.md). */
[id] { scroll-margin-top: calc(var(--hdr-h) + 7px); }
@media (max-width: 767px) { [id] { scroll-margin-top: calc(var(--hdr-h) - 1px); } }
body:has(.lnav) [id] { scroll-margin-top: calc(var(--hdr-h) + var(--lnav-h) + 7px); }
@media (max-width: 767px) { body:has(.lnav) [id] { scroll-margin-top: calc(var(--hdr-h) + var(--lnav-h) - 1px); } }

a { color: var(--navy); }

.wrap {
  max-width: var(--maxw);
  margin: 0 auto;
  padding-left: var(--gutter);
  padding-right: var(--gutter);
}

.sec { padding-top: var(--pt, var(--sp-base)); padding-bottom: var(--pb, var(--sp-base)); }
.sec--tint { background: var(--surface); border-top: 1px solid var(--line); }
.sec--line { border-top: 1px solid var(--line); }
.sec--dark { background: var(--navy); color: var(--white); }   /* dark band: Solutions コンセプト, ServicesModernization 背景 */

.eyebrow {
  margin: 0 0 14px;
  font-size: 14px;   /* dong bo Home goc (proto dang 13px) */
  font-weight: 700;
  letter-spacing: 0.24em;
  color: var(--blue);
}
.eyebrow--onDark { color: var(--blue-pale); }

.h2 {
  margin: 0;
  font-size: clamp(23px, 2.6vw, 34px);
  line-height: 1.6;
  font-weight: 700;
  color: var(--navy);
}

/* Moi tieu de deu can deu dong: balance chia chu deu cho cac dong nen khong
   con dong cuoi tro loi 1-2 chu (do duoc: 6 khoi mo coi -> 0). Gom mot rule
   thay vi rai vao 6 khai bao h3 khac nhau trong file.                        */
.h2, h2, h3 { text-wrap: balance; }

/* --- THANG H2 CUA BAN HOME GOC ---------------------------------------------
   Ban goc CO Y dung 5 co h2 khac nhau cho 8 section (do bang computed style
   @1440px, gia tri clamp chep nguyen tu Home.dc.html). Prototype truoc day san
   phang tat ca ve 34px nen 課題 va CTA doc ngang hang voi section phu, con
   サービス紹介 lai to qua so voi vai tro cua no.                              */
.h2--sm   { font-size: clamp(19px, 2vw, 26px); line-height: 1.65; }   /* サービス紹介 */
.h2--bold { font-weight: 900; }                              /* アプローチ: giu 34px, chi doi do dam */

.lead {
  font-family: 'Noto Sans JP', sans-serif;
  font-size: 16px;
  line-height: 2;
  color: var(--muted);
  text-wrap: pretty;
}

.btn {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  padding: 16px 30px;
  border-radius: 999px;
  border: 2px solid var(--white);
  background: var(--white);
  color: var(--navy);
  font-size: 16px;
  font-weight: 700;
  text-decoration: none;
  letter-spacing: 0.04em;
  transition: background var(--dur-3) var(--ease-soft),
              border-color var(--dur-3) var(--ease-soft),
              transform var(--dur-3) var(--ease-out);
}
.btn:hover { background: var(--amber); border-color: var(--amber); transform: translateY(-2px); }
.btn--ghost { background: transparent; color: var(--white); }
.btn--ghost:hover { background: var(--white); color: var(--navy); border-color: var(--white); }

/* =========================================================================
   MOTION — 8 co che. Moi co che deu tat sach o cuoi file khi reduced-motion.
   ========================================================================= */

/* --- [L1] #8 text reveal theo dong: chu truot len tu sau mat na --------- */
.lines > span {
  display: block;
  overflow: hidden;
}
.lines > span > i {
  display: block;
  font-style: normal;
  transform: translateY(108%);
  transition: transform var(--dur-1) var(--ease-out);
  transition-delay: calc(var(--i, 0) * 90ms);
}
.is-in .lines > span > i,
.lines.is-in > span > i { transform: translateY(0); }

/* --- [L1] #2 curtain reveal: tam rem truot khoi anh, thay vi fade -------
   KHONG dung clip-path lam trang thai an ban dau: phan tu bi clip co dien
   tich giao = 0 nen IntersectionObserver khong bao gio bao "da vao khung
   nhin" -> anh ket vinh vien o trang thai an. Rem la mot phan tu con che
   len, nen phan tu cha van "nhin thay duoc" voi observer.
   --curtain phai bang mau NEN dang dat anh, neu khong se thay khoi mau la. */
[data-reveal] { position: relative; }
[data-reveal]::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 4;
  background: var(--curtain, var(--surface));
  transform: scaleX(1);
  transform-origin: right;
  transition: transform var(--dur-2) var(--ease-out);
  pointer-events: none;
}
[data-reveal="left"]::before { transform-origin: left; }
[data-reveal].is-in::before  { transform: scaleX(0); }

/* --- [L1] khoi noi dung: truot len nhe, dung chung cho card/doan -------- */
/* VAN AN TOAN (2026-09-26): truoc day [data-rise] an vo dieu kien -> JS tat
   hoac home-motion.js loi thi 51 khoi noi dung cua Home bien mat. Nay chi an
   khi class .js-motion co mat, va class do do CHINH script dat vao + co co che
   tu go sau khi trang load neu motion khong khoi dong duoc. */
.js-motion [data-rise] {
  opacity: 0;
  transform: translateY(22px);
  transition: opacity var(--dur-1) var(--ease-soft),
              transform var(--dur-1) var(--ease-out);
  transition-delay: calc(var(--i, 0) * 80ms);
}
.js-motion [data-rise].is-in { opacity: 1; transform: none; }

/* --- [L2] #3 duotone -> mau that khi anh vao khung nhin -----------------
   Ly do ton tai: bo anh NAL chenh nhau ve chat luong/anh sang. Lop duotone
   navy keo tat ca ve mot he mau thuong hieu, roi nha ra mau that khi doc den.
   Vua giai quyet "trong nhu stock photo", vua thanh mot cu chi ke chuyen.  */
.photo { position: relative; overflow: hidden; background: var(--navy-deep); }
.photo > img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: grayscale(1) contrast(1.06) brightness(0.96);
  transition: filter 1.2s var(--ease-soft);
}
.photo::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, var(--navy) 0%, var(--blue) 100%);
  mix-blend-mode: color;
  opacity: 1;
  transition: opacity 1.2s var(--ease-soft);
  pointer-events: none;
}
.photo.is-in > img { filter: none; }
.photo.is-in::after { opacity: 0; }
/* Bien the cho anh CO CHU DE LEN: giu MAU THAT cua nguoi, chi ha sang va
   phu mot lop gradient navy. Ban truoc dung grayscale + phu navy 0.85 lam
   mat nguoi bi khu mau -> trong lanh va so. Khu mau hop voi anh truu tuong,
   khong hop voi chan dung. */
.photo--warm > img { filter: brightness(0.62) saturate(0.92); }
.photo--warm.is-in > img { filter: brightness(0.62) saturate(0.92); }
.photo--warm::after {
  background: linear-gradient(100deg,
    rgba(9,28,49,0.94) 0%, rgba(9,28,49,0.82) 38%,
    rgba(9,28,49,0.52) 72%, rgba(9,28,49,0.34) 100%);
  mix-blend-mode: normal;
  opacity: 1;
}
.photo--warm.is-in::after { opacity: 1; }

/* --- [L2] #4 parallax trong khung ti le co dinh -------------------------
   Anh cao hon khung 18%, JS day --py trong khoang +-9%. Khung khong doi.
   Kem "image scale": anh vao khung o 1.06 roi ve 1.0 — MOT cu chi duy nhat
   di cung rem, khong chong them hieu ung thu hai. */
.parallax { overflow: hidden; }
.parallax > img {
  height: 118%;
  transform: translate3d(0, var(--py, -9%), 0) scale(var(--ps, 1.06));
  transition: transform 1.4s var(--ease-out);
  will-change: transform;
}
.parallax.is-in > img { --ps: 1; }

/* --- .photo--slides: slideshow trong khung .photo (banner 私たちの取り組み) ----
   Slide = <img> con truc tiep, xep chong absolute, chi crossfade opacity (parallax
   da dung transform, khong chong Ken Burns thu hai). ::before (rem data-reveal,
   z-index 4 san) va ::after (duotone) phai nam TREN cac img absolute -> z-index. */
.photo--slides > img {
  position: absolute; inset: 0;
  z-index: 1;
  opacity: 0;
  transition: opacity 1.4s var(--ease-soft), transform 1.4s var(--ease-out), filter 1.2s var(--ease-soft);
}
.photo--slides > img.is-on { opacity: 1; }
.photo--slides::after { z-index: 2; }
/* banner 私たちの取り組み: 21:9 desktop; mobile 16:9 (21:9 @335px chi cao 144px, mat nguoi ~8px) */
.photo--banner { aspect-ratio: 21 / 9; }

/* Vung bam doc VIEN trai/phai de chuyen anh — mui ten mo, ro dan khi re chuot.
   Chi hien khi thiet bi co con tro that (hover: hover); tren cam ung da co vuot. */
/* Dai mep dieu huong anh — DUNG CHUNG cho hero va cac khoi .photo.
   Gop hai cho lam mot (2026-09-26) de ca trang chi noi MOT thu tieng: truoc do
   hero dung nut tron kinh mo, banner dung dai mep -> hai carousel tren cung
   mot trang nhin nhu hai he khac nhau. */
.photo__edge, .hero__edge {
  position: absolute; top: 0; bottom: 0;
  z-index: 3;                       /* tren img (1) + duotone (2), duoi rem reveal (4) */
  width: clamp(48px, 6%, 72px);
  display: grid; place-items: center;
  padding: 0; border: 0;
  color: var(--white);
  cursor: pointer;
  opacity: 0.55;                    /* 0.38 qua chim tren anh sang (code-review 2026-09-25) */
  transition: opacity var(--dur-3), background var(--dur-3);
}
/* vet toi dam toi 70% be rong nut roi moi nhat -> icon (o giua nut) luon nam tren nen toi */
/* Rieng hero: dai chay tu DUOI header + thanh chi muc xuong day khoi,
   khong phu len logo. Hai so nay da khai o :root nen khong the lech. */
.hero__edge { top: calc(var(--hdr-h) + var(--lnav-h)); }

.photo__edge--prev, .hero__edge--prev { left: 0;  background: linear-gradient(to right, rgba(9,28,49,0.58) 0%, rgba(9,28,49,0.42) 70%, rgba(9,28,49,0) 100%); }
.photo__edge--next, .hero__edge--next { right: 0; background: linear-gradient(to left,  rgba(9,28,49,0.58) 0%, rgba(9,28,49,0.42) 70%, rgba(9,28,49,0) 100%); }
.photo__edge svg { width: 26px; height: 26px; display: block; filter: drop-shadow(0 1px 3px rgba(9,28,49,0.55)); }

/* HERO nang rieng (2026-09-26, do 2A): banner NALKATHON la anh SANG nen lop phu
   toi o mep tao duoc tuong phan. Hero thi nen da la navy #0B2036 san -> phu toi
   len nen toi = khong tao them gi, mui ten 26px net 1.75 nam sat mep man 1440px
   thanh ra khong ai thay. Nang KICH THUOC va DO DAM, khong doi vi tri. */
.hero__edge svg { width: 36px; height: 36px; display: block;
  filter: drop-shadow(0 2px 6px rgba(9,28,49,0.85)); stroke-width: 2.25; }
.hero__edge { opacity: 0.85; width: clamp(56px, 6.5%, 84px); }
.hero__edge:hover { opacity: 1; }
.photo__edge:hover, .hero__edge:hover { opacity: 1; }
.photo__edge--prev:hover, .hero__edge--prev:hover { background: linear-gradient(to right, rgba(9,28,49,0.72) 0%, rgba(9,28,49,0.52) 70%, rgba(9,28,49,0) 100%); }
.photo__edge--next:hover, .hero__edge--next:hover { background: linear-gradient(to left,  rgba(9,28,49,0.72) 0%, rgba(9,28,49,0.52) 70%, rgba(9,28,49,0) 100%); }
.photo__edge:focus-visible, .hero__edge:focus-visible { opacity: 1; outline: 2px solid var(--white); outline-offset: -4px; }
@media (max-width: 767px) { .photo__edge { width: 44px; opacity: 0.62; } .photo__edge svg, .hero__edge svg { width: 22px; height: 22px; } }

/* MOBILE: BO HAN dai mep o hero (do 2026-09-26: chong len chu tieu de 24px).
   Man 360px chi rong 360 ma hai dai an 88 -> vua che chu vua an dat.
   Bo di KHONG mat chuc nang nao: hero van tu doi anh 4 giay/lan, van vuot
   ngang duoc (data-swipe-scope="hero"), va 6 cham o duoi van bam duoc
   (34x44px moi cham — dat chuan vung cham 44px).
   Khoi .photo (banner NALKATHON) KHONG co chu de len anh nen van giu dai mep. */
@media (max-width: 767px) { .hero__edge { display: none; } }
@media (max-width: 767px) { .photo--banner { aspect-ratio: 16 / 9; } }

/* =========================================================================
   HEADER — dung chung 28 trang qua partials/site-nav.html (stamp-partials.py).
   Mac dinh TRANG SOLID (khop SiteNav goc, an toan tren moi trang). Home dung
   them modifier .hdr--home (trong suot tren hero, nen mo dan khi cuon).
   ========================================================================= */
.hdr {
  position: sticky;
  top: 0;
  z-index: 50;
  background: var(--white);
  border-bottom: 1px solid var(--line);
}
.hdr__in { display: flex; align-items: center; justify-content: space-between; gap: 24px; height: var(--hdr-h); position: relative; }
.hdr__logo-link { display: flex; align-items: center; flex: 0 0 auto; min-height: 44px; }
.hdr__logo { height: 43.7px; width: auto; display: block; }
@media (max-width: 360px) {
  .hdr__logo { height: 30px; }
}

.hdr__nav { flex: 1 1 auto; display: flex; align-items: center; justify-content: flex-end; gap: clamp(14px, 2vw, 28px); }
.hdr__nav > a, .hdr__drop > a {
  position: relative;
  color: var(--ink);
  font-size: 15px;
  font-weight: 700;
  text-decoration: none;
  padding: 6px 0;
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  white-space: nowrap;
}
/* [L3] gach chan chay ra tu trai — chi o hover, khong tu dong */
.hdr__nav > a::after {
  content: "";
  position: absolute;
  left: 0; bottom: 0;
  width: 100%; height: 2px;
  background: var(--amber);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform var(--dur-3) var(--ease-out);
}
.hdr__nav > a:hover { color: var(--blue); }
.hdr__nav > a:hover::after { transform: scaleX(1); }
.hdr__drop-arrow { font-size: 12px; color: var(--muted); }

.hdr__cta {
  padding: 11px 22px;
  font-size: 15px;
  border-radius: 999px;
  border: 2px solid var(--navy);
  background: var(--navy);
  color: var(--white);
  text-decoration: none;
  font-weight: 700;
  white-space: nowrap;
  transition: background var(--dur-3), border-color var(--dur-3);
}
.hdr__cta:hover { background: var(--blue); border-color: var(--blue); }

/* --- dropdown ソリューション/サービス: thuan CSS :hover/:focus-within, khong JS --- */
.hdr__drop { position: relative; display: flex; align-items: center; }
.hdr__drop-panel {
  position: absolute; top: 100%; left: 50%; transform: translateX(-50%);
  padding-top: 18px; min-width: 360px; z-index: 70;
  opacity: 0; visibility: hidden;
  transition: opacity var(--dur-3) var(--ease-out);
}
.hdr__drop-panel--wide { min-width: 400px; }
.hdr__drop:hover .hdr__drop-panel, .hdr__drop:focus-within .hdr__drop-panel { opacity: 1; visibility: visible; }
.hdr__drop-panel { background: var(--white); border: 1px solid var(--line-strong); box-shadow: 0 12px 32px rgba(16, 42, 67, 0.12); padding: 10px 0; border-radius: 4px; }
.hdr__drop-item { display: flex; gap: 14px; align-items: flex-start; padding: 14px 26px; text-decoration: none; }
.hdr__drop-item:hover { background: var(--surface); }
.hdr__drop-item--rule { border-top: 1px solid var(--line-soft); }
.hdr__drop-item--compact { align-items: center; padding: 11px 26px; font-family: 'Noto Sans JP', sans-serif; font-size: 14px; color: var(--ink); gap: 14px; }
.hdr__drop-dot { width: 6px; height: 6px; flex: 0 0 auto; margin-top: 8px; }
.hdr__drop-dot--sm { background: #9BB0C4; margin-top: 0; }
.hdr__drop-txt { display: flex; flex-direction: column; gap: 5px; }
.hdr__drop-name { font-size: 15px; font-weight: 900; letter-spacing: 0.03em; color: var(--navy); }
.hdr__drop-desc { font-family: 'Noto Sans JP', sans-serif; font-size: 14px; line-height: 1.7; color: var(--muted); }
.hdr__drop-sub { border-top: 1px solid var(--line-soft); margin-top: 8px; padding: 16px 26px 8px; font-size: 14px; font-weight: 700; letter-spacing: 0.18em; color: #7E93A8; }

/* --- menu mobile: <details> native, khong JS --- */
.hdr__mobile { display: none; }
.hdr__toggle { display: none; align-items: center; justify-content: center; min-width: 48px; min-height: 48px; padding: 0 14px; border: 1px solid var(--line); border-radius: 8px; cursor: pointer; list-style: none; }
.hdr__toggle::-webkit-details-marker { display: none; }
.hdr__toggle-icon { width: 20px; height: 12px; position: relative; display: block; }
.hdr__toggle-icon::before, .hdr__toggle-icon::after { content: ""; position: absolute; left: 0; right: 0; height: 2px; background: var(--navy); top: 0; transition: transform var(--dur-3); }
.hdr__toggle-icon::after { top: auto; bottom: 0; }
.hdr__mobile[open] .hdr__toggle-icon::before { transform: translateY(5px) rotate(45deg); }
.hdr__mobile[open] .hdr__toggle-icon::after { transform: translateY(-5px) rotate(-45deg); }
.hdr__mobile-panel { position: absolute; left: 0; right: 0; top: 100%; background: var(--white); border-top: 1px solid var(--line); max-height: calc(100vh - 64px); max-height: calc(100dvh - 64px); overflow-y: auto; -webkit-overflow-scrolling: touch; }
.hdr__m-link { display: flex; align-items: center; min-height: 48px; padding: 0 20px; font-size: 16px; font-weight: 500; color: var(--ink); text-decoration: none; border-bottom: 1px solid var(--surface-3); }
.hdr__m-link:active { background: var(--surface); }
.hdr__m-head { display: block; padding: 18px 20px 8px; font-size: 14px; font-weight: 700; letter-spacing: 0.18em; color: #7E93A8; background: var(--surface); }
.hdr__m-sub { display: flex; flex-direction: column; justify-content: center; gap: 3px; min-height: 56px; padding: 8px 20px 8px 32px; text-decoration: none; border-bottom: 1px solid var(--surface-3); }
.hdr__m-sub-name { font-size: 15px; font-weight: 700; letter-spacing: 0.03em; }
.hdr__m-sub-desc { font-family: 'Noto Sans JP', sans-serif; font-size: 14px; line-height: 1.6; color: var(--muted); }
.hdr__m-cta { display: flex; align-items: center; justify-content: center; min-height: 52px; margin: 20px; background: var(--navy); color: var(--white); font-size: 16px; font-weight: 700; text-decoration: none; border-radius: 999px; }

@media (max-width: 899px) {
  .hdr__nav { display: none; }
  .hdr__toggle { display: inline-flex; }
  .hdr__mobile { display: block; }
}

/* --- .hdr--home: bien the CHI danh cho index.html — trong suot tren anh hero,
   nen mo dan khi cuon (is-stuck, dieu khien boi [data-hdr] trong home-motion.js).
   Cac trang khac dung nguyen ban .hdr trang o tren, khong can modifier nay. --- */
.hdr--home { background: rgba(11, 32, 54, 0); border-bottom-color: transparent; transition: background var(--dur-3) var(--ease-soft), backdrop-filter var(--dur-3) var(--ease-soft), border-color var(--dur-3); }
.hdr--home.is-stuck { background: rgba(11, 32, 54, 0.92); backdrop-filter: blur(10px); }
.hdr--home .hdr__logo { content: url('assets/logo-dark.webp'); height: 30px; }
/* [Phase 7] 2 file logo LECH TY LE: logo-light 144x72 (2.00) · logo-dark 274x90 (3.04).
   `content: url()` doi anh thi `width:auto` tinh theo kich thuoc NOI TAI cua anh moi,
   khong theo width/height khai o the <img>. Hau qua: cung height 30px nhung Home rong
   91px trong khi 27 trang kia 60px -> day nut menu ra ngoai mep, TRAN +27px o kho 320.
   Vá o day: kho <=360px ha chieu cao logo Home xuong 20px (rong ~61px, bang cac trang khac).
   Goc re that su la 2 file logo khong cung ty le -> ghi no N11, tra o stack that. */
@media (max-width: 360px) {
  .hdr--home .hdr__logo { height: 20px; }
}
.hdr--home .hdr__nav > a, .hdr--home .hdr__drop > a { color: rgba(255, 255, 255, 0.86); }
.hdr--home .hdr__nav > a:hover, .hdr--home .hdr__drop > a:hover { color: var(--white); }
.hdr--home .hdr__cta { background: transparent; border-color: rgba(255, 255, 255, 0.5); color: var(--white); }
.hdr--home .hdr__cta:hover { background: var(--amber); color: var(--navy); border-color: var(--amber); }
.hdr--home .hdr__toggle { border-color: rgba(255, 255, 255, 0.5); }
.hdr--home .hdr__toggle-icon::before, .hdr--home .hdr__toggle-icon::after { background: var(--white); }

/* =========================================================================
   LOCAL NAV (ローカルナビ) — chi muc TRONG TRANG, dinh ngay duoi header.
   Khac tang voi header: header noi "dang o trang nao", thanh nay noi "dang o
   doan nao". Nho gon hon han header (40px vs 76px, chu 13px vs 15px) va CHI
   hien sau khi roi hero => khong bao gio doc ra thanh "header thu hai".
   ========================================================================= */
.lnav {
  position: sticky;
  top: var(--hdr-h);             /* dung day header */
  z-index: 45;                   /* duoi header (50) */
  background: rgba(255,255,255,0.94);
  backdrop-filter: blur(8px);
  border-bottom: 1px solid var(--line);
  opacity: 0; visibility: hidden;
  transform: translateY(-6px);
  transition: opacity var(--dur-3) var(--ease-soft),
              transform var(--dur-3) var(--ease-out),
              visibility var(--dur-3);
}
.lnav.is-on { opacity: 1; visibility: visible; transform: none; }
.lnav__in {
  position: relative;            /* moc toa do cho vach chi bao */
  display: flex;
  align-items: center;
  gap: clamp(14px, 1.6vw, 26px);
  height: 40px;
  overflow-x: auto;              /* man hep: cuon ngang TRONG thanh, khong lam
                                    tran ca trang */
  scrollbar-width: none;
  -webkit-overflow-scrolling: touch;
}
.lnav__in::-webkit-scrollbar { display: none; }
.lnav a {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  height: 100%;
  font-size: 13px;
  font-weight: 700;
  text-decoration: none;
  white-space: nowrap;
  color: var(--muted);
  transition: color var(--dur-3);
}
.lnav__no {
  font-size: 10px;
  letter-spacing: 0.08em;
  font-variant-numeric: tabular-nums;
  opacity: 0.6;
  transition: opacity var(--dur-3), color var(--dur-3);
}
.lnav a:hover { color: var(--navy); }
.lnav a[aria-current="true"] { color: var(--navy); }
.lnav a[aria-current="true"] .lnav__no { opacity: 1; color: var(--blue); }
/* Vach chi bao: MOT phan tu duy nhat, khong tao lai node. Chay kieu FILL DON
   — neo o mep trai, be dai keo toi het muc dang xem (xem moveMark() trong
   home-motion.js) => nhin be dai vach la biet da di qua bao nhieu muc.
   Day la chi bao DUY NHAT tren trang: vach tien do doc mau ho phach o mep duoi
   header da duoc go (2 vach cach nhau 41px doc ra thanh mot cum, gay roi).
   Chi width doi nen transition dat o width, khong phai transform.            */
.lnav__mark {
  position: absolute;
  left: 0; bottom: 0;
  height: 2px;
  width: var(--mw, 0px);
  background: var(--blue);
  transform: translateX(var(--mx, 0px));
  opacity: 0;
  transition: transform 0.38s var(--ease-out), width 0.38s var(--ease-out),
              opacity var(--dur-3);
}
.lnav.is-active .lnav__mark { opacity: 1; }
@media (prefers-reduced-motion: reduce) {
  .lnav, .lnav a, .lnav__no, .lnav__mark { transition: none !important; }
}

/* =========================================================================
   HERO — #1 letterform mask song
   ========================================================================= */
.hero {
  position: relative;
  margin-top: -76px;          /* keo len duoi header trong suot */
  padding-top: 76px;
  background:
    radial-gradient(120% 90% at 78% 18%, rgba(27, 111, 179, 0.34) 0%, rgba(11, 32, 54, 0) 62%),
    var(--navy-deep);
  color: var(--white);
  overflow: hidden;
}
.hero__in {
  display: grid;
  grid-template-columns: minmax(0, 1.02fr) minmax(0, 0.98fr);
  align-items: center;
  gap: clamp(32px, 4vw, 64px);
  padding-top: clamp(48px, 5vw, 76px);
  padding-bottom: clamp(56px, 6vw, 92px);
}
.hero h1 {
  margin: 0;
  font-size: clamp(27px, 3.1vw, 40px);
  line-height: 1.5;
  font-weight: 900;
  letter-spacing: 0.01em;
}
.hero__sub {
  margin: 20px 0 0;
  display: inline-block;
  border-left: 4px solid #4AA3E0;
  padding-left: 16px;
  font-size: clamp(16px, 1.6vw, 21px);   /* dong bo Home goc */
  line-height: 1.55;
  font-weight: 700;
  letter-spacing: 0.06em;
  color: var(--blue-pale);
}
.hero__lead { margin: 24px 0 0; color: #D2DEEA; max-width: 46em; }





/* =========================================================================
   HERO — nen la SLIDESHOW anh lam viec (ban goc dung 1 anh tinh
   hero-network.png). Lop .hero__veil giu Y NGUYEN gradient navy cua ban
   goc, nen chu luon doc duoc bat ke anh nao dang chay.
   ========================================================================= */
.hero {
  position: relative;
  /* keo len duoi CA HAI thanh dinh (header + thanh chi muc), khong chi header:
     .lnav nam trong luong giua header va <main> nen cung chiem cho that. */
  margin-top: calc(-1 * (var(--hdr-h) + var(--lnav-h)));
  padding-top: calc(var(--hdr-h) + var(--lnav-h));
  background: var(--navy-deep);
  color: var(--white);
  overflow: hidden;
}
.hero__slides { position: absolute; inset: 0; }
.hero__slide {
  position: absolute;
  inset: 0;
  opacity: 0;
  transition: opacity 1.4s var(--ease-soft);
}
.hero__slide.is-on { opacity: 1; }
.hero__slide > img {
  width: 100%; height: 100%;
  object-fit: cover;
  object-position: center right;
  /* Ken Burns rat nhe: anh bo ra 4% roi tro ve, 1 vong bang 1 luot slide */
  transform: scale(1.04);
  transition: transform 7.5s linear;
}
.hero__slide.is-on > img { transform: scale(1.0); }
/* gradient navy — sao chep dung ti le cua Home.dc.html ban goc */
.hero__veil {
  position: absolute; inset: 0;
  /* Ban goc phu rat day (0.97 -> 0.62) vi anh nen la do hoa truu tuong.
     Gio nen la ANH NGUOI THAT va muc dich la de NHIN THAY no, nen ben phai
     nha ra nhieu hon. Ben trai van du day cho chu trang dat AA. */
  background: linear-gradient(90deg,
    rgba(9,28,49,0.96) 0%, rgba(9,28,49,0.92) 42%,
    rgba(9,28,49,0.72) 70%, rgba(9,28,49,0.42) 100%);
}
/* quang toi rieng sau chu NAL — de net chu khong bi anh phia sau an di */
.hero__art { position: relative; }
.hero__art::before {
  content: "";
  position: absolute;
  inset: -12% -8%;
  background: radial-gradient(58% 58% at 50% 50%, rgba(9,28,49,0.62) 0%, rgba(9,28,49,0) 72%);
  pointer-events: none;
}
.hero__art img { position: relative; }
.hero__in {
  position: relative;
  z-index: 2;
  display: grid;
  grid-template-columns: minmax(0, 1.02fr) minmax(0, 0.98fr);
  align-items: center;
  gap: clamp(32px, 4vw, 64px);
  padding-top: clamp(48px, 5vw, 76px);
  padding-bottom: clamp(56px, 6vw, 92px);
}
.hero h1 {
  margin: 0;
  font-size: clamp(27px, 3.1vw, 40px);
  line-height: 1.5;
  font-weight: 900;
  letter-spacing: 0.01em;
}
.hero__sub {
  margin: 20px 0 0;
  display: inline-block;
  border-left: 4px solid #4AA3E0;
  padding-left: 16px;
  font-size: clamp(16px, 1.6vw, 21px);   /* dong bo Home goc */
  line-height: 1.55;
  font-weight: 700;
  letter-spacing: 0.06em;
  color: var(--blue-pale);
}
.hero__lead { margin: 24px 0 0; color: #D2DEEA; max-width: 46em; }
/* chu NAL ghep anh — anh GOC nal-team-lettering, nhung khong dat nhu mot
   <img> thuong: mo ra bang rem khi vao trang, roi troi cham + mo dan khi
   hero cuon qua (bien --nal do JS day). Y tuong tu Motion Sites #34/#80:
   wordmark thuong hieu la mot lop thi giac, khong phai mot buc anh. */
.hero__art { display: flex; align-items: center; justify-content: center; position: relative; }

/* MAGNETIC — lop rieng giu transform, xem chu thich o index.html.
   TUYET DOI khong dat transform nay len .hero__art: no mang data-rise va
   "[data-rise].is-in { transform: none }" (0,2,0) se de bet (0,1,0). */
.hero__magnet {
  display: flex; justify-content: center;
  width: 100%;
  transform: perspective(760px)
             translate3d(var(--mag-x, 0px), var(--mag-y, 0px), 0)
             rotateX(var(--mag-rx, 0deg)) rotateY(var(--mag-ry, 0deg));
  transform-style: preserve-3d;
  will-change: transform;
}
.hero__art img {
  width: 100%; max-width: 620px; height: auto;
  clip-path: inset(0 100% 0 0);
  transition: clip-path 1.25s var(--ease-out) 0.35s;
  transform: translate3d(0, calc(var(--nal, 0) * -42px), 0);
  opacity: calc(1 - var(--nal, 0) * 0.55);
  will-change: transform, opacity;
}
.hero__in.is-in .hero__art img { clip-path: inset(0 0 0 0); }

/* cum dieu khien slideshow hero: [<] cham [>] — bam duoc, co vien focus.
   2026-09-24: them mui ten prev/next (nut tron 40px, vien 1px trang 30%, nen navy
   mo + blur, chevron net 1.5px) va nang VUNG BAM cua thanh vang len 34x44px
   (thanh 4px ve bang ::before) — truoc do 34x4px qua kho bam. */
.hero__ctrl {
  position: absolute;
  z-index: 3;
  left: 0; right: 0; bottom: 24px;
  display: flex; align-items: center; justify-content: center;
  /* gap 14px da bo: truoc day dung de tach [<] cham [>]; gio trong nay
     chi con hang cham nen gap khong con tac dung. */
}
.hero__dots { display: flex; align-items: center; gap: 10px; }
.hero__dots button {
  position: relative;
  width: 34px; height: 44px;
  padding: 0;
  border: 0; border-radius: 4px;
  background: transparent;
  cursor: pointer;
}
.hero__dots button::before {
  content: "";
  position: absolute; left: 0; right: 0; top: 50%; height: 4px; margin-top: -2px;
  border-radius: 2px;
  background: rgba(255,255,255,0.45);   /* >=3:1 tren veil navy (WCAG 1.4.11); truoc .32 ~2.5:1 */
  transition: background var(--dur-3);
}
.hero__dots button:hover::before { background: rgba(255,255,255,0.62); }
.hero__dots button[aria-current="true"]::before { background: var(--amber); }
.hero__dots button:focus-visible { outline: 2px solid var(--white); outline-offset: 2px; }
/* .hero__arrow da BO (2026-09-26) — xem ghi chu o index.html phan hero.
   Do la cho duy nhat dung backdrop-filter kieu TRANG TRI (nut noi tren anh).
   Hai cho con lai (.hdr--home.is-stuck, .lnav) van giu: thanh dinh dang de len
   noi dung dang cuon thi lam mo nen la cach tach lop dung chuc nang, khong
   phai trang tri. Dung nham hai thu nay la bo ca cai can giu. */
@media (max-width: 767px) {
  .hero__ctrl { gap: 10px; bottom: 12px; }
  .hero__dots { gap: 8px; }
  .hero__dots button { width: 24px; }          /* 6 cham x 24 + 2 nut 36 = ~290px, vua man 375 */
  .hero__arrow { width: 36px; height: 36px; }
  .hero__arrow::before { content: ""; position: absolute; inset: -4px; }   /* hinh 36, vung bam 44 */
  .hero__arrow svg { width: 20px; height: 20px; }
}

/* =========================================================================
   THE AVATAR — sao chep thiet ke o cua ban goc (anh 168px tren nen var(--surface-2))
   [2026-09-27] Home KHONG con dung .avcard (chuyen sang .solcard, xem khoi
   "HOME — 4 MUC"); .avcard con lai cho hub Solutions.html + 3 trang con.
   ========================================================================= */
/* Ti le LAY LAI DUNG ban Home cu (do bang computed style, khong uoc luong):
   o anh 168px · than the 28/26/32 · gap 12px · gap luoi 24px · h2 40px/900.
   Hieu ung ben duoi la phan THEM VAO, khong duoc lam xe dich mot so nao o tren.
   Moi the tu khai mau san pham cua no qua --acc (dat inline trong HTML),
   nen 4 hieu ung hover deu chay dung mau thuong hieu cua tung san pham.       */
.avcard {
  --acc: var(--blue);
  display: flex;
  flex-direction: column;
  /* The la <a> -> gach chan mac dinh cua trinh duyet VE XUYEN xuong moi dong chu
     ben trong (con dat text-decoration:none cung khong tat duoc, phai tat o day).
     Do 2026-09-25: thieu dong nay thi ca 4 the o Home lan Solutions.html deu bi
     gach chan toan bo noi dung.                                                */
  text-decoration: none;
  border: 1px solid var(--line-strong);
  background: var(--white);
  box-shadow: 0 12px 32px rgba(16, 42, 67, 0.08);
  /* PHAI ke ca opacity + transform o day: rule nay dung do dam dac voi
     [data-rise] nhung dung SAU trong file nen ghi de toan bo transition cua
     no. Thieu opacity la the hien GIAT ra thay vi mo dan, va mat luon
     stagger --i (moi the le nhau 80ms).                                      */
  transition: opacity var(--dur-1) var(--ease-soft),
              transform var(--dur-1) var(--ease-out),
              box-shadow var(--dur-3) var(--ease-soft);
  transition-delay: calc(var(--i, 0) * 80ms);
}
/* [L3] tuong tac: nang the + bong sau hon. Doi lai nhip nhanh va bo delay vao
   trang, neu khong the se tre 240ms moi nhuc nhich khi tro chuot toi.
   [2026-09-26] BOC trong @media (hover:hover) and (pointer:fine): tren dien
   thoai, :hover dinh lai sau khi cham -- the cu nang len mai khong ha xuong.  */
@media (hover: hover) and (pointer: fine) {
  .avcard:hover {
    transform: translateY(-4px);
    box-shadow: 0 20px 44px rgba(16, 42, 67, 0.16);
    transition: transform var(--dur-3) var(--ease-out),
                box-shadow var(--dur-3) var(--ease-soft);
    transition-delay: 0s;
  }
}
.avcard__fig {
  position: relative;
  aspect-ratio: 4 / 3;
  border-bottom: 1px solid var(--line-soft);
  display: flex; align-items: center; justify-content: center;
  overflow: hidden;
}
/* [L3] o anh nhuom mau thuong hieu khi hover. Dung lop phu ::before thay vi
   doi background that: re hon, va khong lam nhay vien duoi cua o anh.
   [2026-10-11] Anh key-visual moi co nen rieng (khong trong suot) va phu kin
   o (object-fit: cover) -> lop phu phai nam TREN anh (z-index cao hon) moi
   thay duoc, khac voi truoc day khi anh trong suot thi phu o DUOI cung duoc. */
.avcard__fig::before {
  content: "";
  position: absolute; inset: 0;
  z-index: 2;
  background: var(--acc);
  opacity: 0;
  transition: opacity var(--dur-3) var(--ease-soft);
  pointer-events: none;
}
@media (hover: hover) and (pointer: fine) {
  .avcard:hover .avcard__fig::before { opacity: 0.06; }
}
.avcard__fig img {
  position: relative; z-index: 1;
  width: 100%; height: 100%; object-fit: cover;
  /* [L2] anh lo dan tu DUOI LEN khi the vao khung nhin. An toan voi
     IntersectionObserver vi nguoi bi quan sat la ca THE (data-io), khong phai
     anh — the van co dien tich > 0 nen observer luon bao duoc.                */
  clip-path: inset(100% 0 0 0);
  transition: clip-path var(--dur-2) var(--ease-out),
              transform var(--dur-2) var(--ease-out);
  transition-delay: calc(var(--i, 0) * 80ms + 140ms);
}
.avcard.is-in .avcard__fig img { clip-path: inset(0 0 0 0); }
@media (hover: hover) and (pointer: fine) {
  .avcard:hover .avcard__fig img { transform: scale(1.05); transition-delay: 0s; }
}
/* flex:1 -> than the CAO BANG THE. Thieu dong nay thi than the chi cao bang
   noi dung, moi the mot khac -> mui ten (margin-top:auto) treo o 4 do cao
   khac nhau (do 2026-09-26: lech 128px @1440, 224px @1100). Loi nay co tu
   truoc, hoi con dong chu "詳しく見る"; bo chu roi thi mui ten tro thanh
   thu duy nhat o tang do -> lech nhin thay ngay.                         */
.avcard__body { padding: 28px 26px 32px; display: flex; flex-direction: column; gap: 12px; flex: 1; }
.avcard__body h3 {
  position: relative;
  align-self: flex-start;        /* bo rong bang chu, de gach chan khong keo dai */
  margin: 0; padding-bottom: 5px;
  font-size: 19px; font-weight: 900; letter-spacing: 0.03em;
  color: var(--acc);
}
/* [L3] gach chan mau thuong hieu ve ra tu trai khi hover */
.avcard__body h3::after {
  content: "";
  position: absolute; left: 0; bottom: 0;
  width: 100%; height: 2px;
  background: var(--acc);
  transform: scaleX(0); transform-origin: left;
  transition: transform var(--dur-3) var(--ease-out);
}
@media (hover: hover) and (pointer: fine) {
  .avcard:hover .avcard__body h3::after { transform: scaleX(1); }
}
/* Phu de: "AI営業基盤" 1 dong, nhung "AI駆動開発のためのコンテキスト基盤" va
   "人とAIが協働するSmart Workspace" xuong 2 dong -> mo ta lech 21px. Khoa 2 dong. */
.avcard__sub { margin: 0; font-size: 15px; font-weight: 700; line-height: 1.6;
  color: var(--acc); min-height: 3.2em; }
.avcard__body .lead { margin: 0; }
/* [Phase 6] .avcard la THE BAM DUOC -- dung o ca hub Solutions.html lan khoi
   #solution cua Home (Phase 2 noi 4 the nay ra 4 trang con). Dong "doc them"
   day xuong day nho margin-top:auto (than the da la flex column qua
   .avcard__body).
   [2026-09-26] Chu "詳しく見る" bo di, chi con MUI TEN -- van phai HIEN SAN
   (khong cho hien khi hover): dien thoai khong co re chuot, tin hieu "bam
   duoc" ma an di thi tren cam ung khong ai thay.                           */
.avcard__more {
  margin: auto 0 0; padding-top: 18px;
  color: var(--acc);
}
@media (hover: hover) and (pointer: fine) {
  .avcard:hover .avcard__more { transform: translateX(4px); }
}
/* Link THAT nam trong <h3>. Khong boc ca the trong <a>: lam vay thi trinh doc
   man hinh doc TOAN BO noi dung the thanh mot ten lien ket dai, va khong boi
   den duoc chu. Ca the van bam duoc -- xu ly o home-motion.js.              */
.avcard__link { color: inherit; text-decoration: none; }
/* No rong vung cham len >=44px ma KHONG day cac tang ben duoi xuong:
   padding no ra bao nhieu thi margin am keo vao bay nhieu.                  */
.avcard__link, .solcard__link, .svcol__link {
  display: inline-block;
  padding-block: 10px; margin-block: -10px;
}
/* Grid 4 the AVATAR tren hub Solutions.html -- dung lai .grid.grid--4 (cung
   cong thuc grid-template-columns voi ban goc), chi ép gap co dinh 24px
   giong Home (#solution .grid--4) thay vi gap fluid mac dinh cua .grid--4. */
section[data-screen-label="AVATARシリーズ一覧"] .grid--4 { gap: 24px; }


/* =========================================================================
   CUM TIN NHIEM — logo khach + chung chi + giai thuong        (2026-09-27)

   Van de do duoc trươc khi sua: khoang cach GIUA cac nhom (44px) gan bang
   khoang cach TRONG nhom (37px) -> ty le 1,19. Mat nguoi gom do vat theo
   khoang cach; duoi ~2x thi nao KHONG nhan ra ranh gioi nhom, nen 9 huy hieu
   troi thanh mot dam. Day la nguyen nhan chinh cua cam giac "roi mat",
   khong phai mau me.

   Cach chua: khoa 2 bien nhip, giua-nhom / trong-nhom = 2,5 lan.
   ========================================================================= */
:root {
  --gap-trong: clamp(20px, 2.2vw, 32px);   /* giua cac o TRONG mot nhom     */
  --gap-nhom:  clamp(44px, 5vw, 72px);     /* TONG khoang giua hai NHOM.
                                              72/32 = 2,25 lan — du de mat
                                              nhan ra ranh gioi (nguong ~2x) */
  /* 7 logo mot hang thi hang gan kin be ngang (1003/1176px) -> logo nao
     cung phai nho. Phong chot 2026-09-27: cho XUONG 2 HANG 4+3 de logo to
     len ~50%. Doi lai dai logo cao 84px -> 224px.                          */
  /* 81px = co Phong da duyet o ban 2 hang. Bang chay khong bi be ngang trang
     rang buoc nua nen giu nguyen duoc. San 50px (khong phai 36) de chu
     TOSHIBA — he so --k thap nhat 0,40 — con >=20px tren dien thoai.       */
  --logo-co:   clamp(50px, 5.6vw, 81px);
  --khe-logo:  clamp(40px, 4.4vw, 72px);   /* khe giua 2 logo trong bang chay */   /* co goc hang logo. San 40px vi
                                              Toshiba he so 0.50 -> 20px, duoi
                                              muc do la chu nhoe tren dien thoai */
}

/* DA THU dai nen xam nhat de gom 3 phan -> HONG: 9 anh huy hieu deu co nen
   TRANG san trong file, dat len nen xam thi moi cai lo ra mot hop trang to
   nho khac nhau. Thanh 9 hop trang troi tren nen xam, roi hon truoc.
   Chot: giu nen trang. Viec gom da do NHIP KHOANG CACH lam (giua nhom / trong
   nhom = 2,3 lan) cong mot duong ke manh o dau cum.                        */
.sec--proof-dau { border-top: 1px solid var(--line); }   /* --line nhu 8 section khac, khong dung --line-soft */
.sec--proof + .sec--proof { border-top: 0; }

/* Ba nhan cum tin nhiem dung DUNG .eyebrow nhu moi nhan khac tren Home
   (14px / gian chu 0,24em / mau --blue). Ban truoc ha xuong 12px + xam cho
   "diu" -> do computed style toan trang: lech ca 3 thuoc tinh so voi 7 nhan
   con lai. Phong chot 2026-09-27: khop voi trang quan trong hon.          */

/* Khoang giua nhom chung chi va nhom giai thuong + DUY NHAT mot duong ke
   manh. Ke quanh tung o se roi them.                                       */
.proof__groups { display: flex; flex-direction: column; gap: 0; }
/* Duong ke nam GIUA hai nhom -> khoang cach chia doi deu hai ben, tong dung
   bang --gap-nhom. De ca gap lan padding cung = --gap-nhom la cong doi
   thanh 160px (bay da sap 2026-09-27).                                     */
.proof__groups > * + * {
  border-top: 1px solid var(--line-soft);
  margin-top: calc(var(--gap-nhom) / 2);
  padding-top: calc(var(--gap-nhom) / 2);
}

/* Dong nam cua giai thuong: thay doan van xam bang mot dong nho gon.       */
.awards .meta {
  margin: 0; font-size: 13px; line-height: 1.6;
  color: var(--muted); text-align: center;
}

/* Huy hieu hien MAU DAY tu dau. Ban truoc ha bao hoa 62% + tra mau khi re
   chuot; Phong chot 2026-09-27 bo han — hieu ung do khong can thiet.      */


/* Link gach chan "詳しく見る →" — Contact.html dung (Home da chuyen sang .svc__more). */
.link-underline {
  font-size: 16px; font-weight: 700;
  color: var(--navy); text-decoration: none;
  border-bottom: 2px solid var(--navy);
  padding-bottom: 4px;
  white-space: nowrap;
  min-height: 44px;
  display: inline-flex; align-items: center;
  transition: color var(--dur-3), border-color var(--dur-3);
}
.link-underline:hover { color: var(--blue); border-bottom-color: var(--blue); }

/* =========================================================================
   HOME — 4 MUC ソリューション / サービス / アプローチ / 選ぶ理由   (2026-09-27)
   Theo canvas "NAL Home Redesign" ban v6 + 3 chot cua Phong:
     (1) mo ta AVATAR nam NGAY DUOI h2 nhu ban cu
     (2) phu de san pham ("AI駆動のデータ活用基盤"…) mang MAU SAN PHAM nhu ban cu
     (3) nut o the AVATAR = vong tron mui ten DONG BO voi 4 cot サービス
   Class moi, KHONG sua .avcard: .avcard van song o 4 trang Solutions*.
   Link THAT nam trong <h3>; ca the/cot bam duoc qua home-motion.js
   (clickableCards) — giu dung luat a11y cua site, khong boc ca the trong <a>.
   ========================================================================= */

/* --- tieu de 4 muc: nhip chu cua ban thiet ke (700 + palt), 3 co ---------- */
.hx { font-weight: 700; letter-spacing: 0.04em; font-feature-settings: 'palt'; }
.hx--44 { font-size: clamp(28px, 3.06vw, 44px); line-height: 1.45; }
.hx--40 { font-size: clamp(25px, 2.78vw, 40px); line-height: 1.55; }
.hx--30 { font-size: clamp(22px, 2.08vw, 30px); line-height: 1.6; }
.sol .eyebrow, .svc .eyebrow, .apb .eyebrow, .rsn .eyebrow { margin-bottom: 18px; }
.hx-lead {
  margin: 16px 0 0;
  max-width: 58em;                 /* dong dai nhu ban cu, khong keo het 1176px */
  font-family: 'Noto Sans JP', sans-serif;
  font-size: 16px; line-height: 30px; letter-spacing: 0.02em;
  color: var(--muted);
  text-wrap: pretty;
}

/* --- VONG MUI TEN — dung chung the AVATAR + cot サービス ------------------
   Hover: vong do mau, mui ten TRUOT XUYEN qua vong (ra mep phai, vao lai tu
   mep trai). overflow:hidden cat phan mui ten nam ngoai vong.
   Mac dinh navy (cot サービス). The AVATAR doi sang MAU SAN PHAM (Phong chot
   2026-09-27) — vong la ky hieu giao dien, can >=3:1 (WCAG 1.4.11): 4 mau
   san pham do duoc 4.9-5.8:1 tren nen trang, chu trang tren 4 mau cung vay.
   (Accent cam/vang cu cua サービス chi 3.05 / 1.82:1 -> cot サービス giu navy.) */
.go-ring {
  flex: 0 0 auto;
  display: flex; align-items: center; justify-content: center;
  width: 44px; height: 44px;
  border: 1px solid var(--navy); border-radius: 50%;
  color: var(--navy);
  overflow: hidden;
  transition: background-color var(--dur-3) var(--ease-soft), color var(--dur-3) var(--ease-soft);
}
.go-ring svg { display: block; }
@keyframes go-through {
  0%   { transform: translateX(0); }
  45%  { transform: translateX(30px); }
  46%  { transform: translateX(-30px); }
  100% { transform: translateX(0); }
}
.solcard .go-ring { border-color: var(--acc); color: var(--acc); }
@media (hover: hover) and (pointer: fine) {
  .svcol:hover .go-ring { background: var(--navy); color: var(--white); }
  .solcard:hover .go-ring { background: var(--acc); color: var(--white); }
  .solcard:hover .go-ring svg, .svcol:hover .go-ring svg { animation: go-through 0.52s var(--ease-out); }
}
/* Tab ban phim toi link -> vong cung do navy: nguoi dung phim co cung phan hoi. */
.svcol:has(.svcol__link:focus-visible) .go-ring { background: var(--navy); color: var(--white); }
.solcard:has(.solcard__link:focus-visible) .go-ring { background: var(--acc); color: var(--white); }

/* =========================================================================
   ソリューション — 4 the AVATAR
   ========================================================================= */
.sol__grid {
  margin-top: 48px;
  display: grid; gap: 24px;
  grid-template-columns: repeat(4, minmax(0, 1fr));
}
.solcard {
  --acc: var(--blue);
  position: relative;
  display: flex; flex-direction: column;
  background: var(--white);
  border: 1px solid var(--line-strong);
  /* Vien = BONG MEM nhu the AVATAR ban cu (Phong chot 2026-09-27: dep hon duong
     ke navy manh). Hover thi bong dam + sau hon, vien ke van xam nhat.       */
  box-shadow: 0 12px 32px rgba(16, 42, 67, 0.08);
}
/* Cung do dac hieu voi ".js-motion [data-rise]" va dung SAU no trong file ->
   phai ke lai opacity + transform (cua hieu ung vao trang) cung box-shadow.
   Delay tach tung thuoc tinh: stagger --i chi cho luc vao trang, hover thi
   bong doi NGAY (the thu 4 khong bi tre 240ms).                             */
.solcard[data-rise] {
  transition: opacity var(--dur-1) var(--ease-soft),
              transform var(--dur-1) var(--ease-out),
              box-shadow var(--dur-3) var(--ease-soft);
  transition-delay: calc(var(--i, 0) * 80ms), calc(var(--i, 0) * 80ms), 0s;
}
/* [L1] VACH MAU SAN PHAM chay o mep tren khi the vao khung nhin — dung hieu
   ung "vach chay khi lan xuong" cua 4 the サービス ban cu (.svcard::before:
   ke tu trai, --dur-2, moi the tre 110ms). Phong chot 2026-09-27 dua ve cho
   ソリューション. De len vien 1px o mep tren (top/left/right -1px).          */
.solcard::before {
  content: "";
  position: absolute; top: -1px; left: -1px; right: -1px; z-index: 3;
  height: 4px;
  background: var(--acc);
  transform-origin: left;
  transition: transform var(--dur-2) var(--ease-out);
  transition-delay: calc(var(--i, 0) * 110ms);
}
.js-motion .solcard::before { transform: scaleX(0); }
.js-motion .solcard.is-in::before { transform: scaleX(1); }
.solcard__fig {
  position: relative;
  aspect-ratio: 4 / 3;
  border-bottom: 1px solid var(--line);
  display: flex; align-items: center; justify-content: center;
  overflow: hidden;
}
/* lop nhuom mau san pham luc hover (phu ::before, khong doi nen that).
   [2026-10-11] anh key-visual moi co nen rieng + phu kin o (cover) -> lop phu
   phai z-index cao hon anh moi thay duoc (truoc day anh trong suot nen phu o
   duoi cung duoc). */
.solcard__fig::before {
  content: "";
  position: absolute; inset: 0;
  z-index: 2;
  background: var(--acc);
  opacity: 0;
  transition: opacity var(--dur-3) var(--ease-soft);
  pointer-events: none;
}
.solcard__fig img {
  position: relative; z-index: 1;
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform var(--dur-2) var(--ease-out), clip-path var(--dur-2) var(--ease-out);
}
.solcard__body {
  flex: 1;                         /* than the cao bang the -> vong mui ten cung mot day */
  display: flex; flex-direction: column;
  padding: 24px clamp(16px, 1.77vw, 22px) 20px;
}
.solcard__name {
  position: relative;
  align-self: flex-start;          /* rong bang chu -> gach chan khong keo het the */
  margin: 0; padding-bottom: 5px;
  display: flex; align-items: center; gap: 10px;
  font-size: clamp(16px, 1.53vw, 19px); line-height: 1.4; font-weight: 700; letter-spacing: 0.03em;
  white-space: nowrap;
  color: var(--acc);
}
/* cham mau san pham truoc ten */
.solcard__name::before {
  content: "";
  flex: 0 0 8px; width: 8px; height: 8px; border-radius: 50%;
  background: var(--acc);
  transition: transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
  transition-delay: calc(var(--i, 0) * 80ms + 420ms);
}
/* [L3] gach chan mau san pham KE RA tu trai khi hover — khoi phuc tu ban cu.
   Lan chuot qua trang thi the truot duoi con tro nen gach tu chay theo tung
   the: day chinh la "vach chay khi lan xuong" Phong muon giu. Bat dau duoi
   CHU (18px = cham 8 + khe 10), khong ke duoi cham mau.                     */
.solcard__name::after {
  content: "";
  position: absolute; left: 18px; right: 0; bottom: 0;
  height: 2px;
  background: var(--acc);
  transform: scaleX(0); transform-origin: left;
  transition: transform var(--dur-3) var(--ease-out);
}
.solcard__link { color: inherit; text-decoration: none; }
/* Phu de mang mau san pham (chot 2026-09-27: "dong mau giong ban cu").
   Khoa 2 dong: "AI営業基盤" 1 dong, 2 phu de kia xuong 2 dong -> mo ta ben
   duoi van bat dau cung mot do cao o ca 4 the.                              */
.solcard__sub {
  margin: 4px 0 0;                 /* 8px cua ban thiet ke, tru 5px padding duoi cua gach chan */
  min-height: 48px;
  font-size: 15px; line-height: 24px; font-weight: 700; letter-spacing: 0.04em;
  color: var(--acc);
}
.solcard__sub span { display: inline-block; }   /* "Smart Workspace" khong bi tach 2 dong */
.solcard__txt {
  margin: 12px 0 20px;
  font-family: 'Noto Sans JP', sans-serif;
  font-size: 14px; line-height: 26px; letter-spacing: 0.02em;
  color: var(--ink);
  text-wrap: pretty;
}
.solcard .go-ring { margin-top: auto; align-self: flex-end; }
@media (hover: hover) and (pointer: fine) {
  .solcard:hover { box-shadow: 0 20px 44px rgba(16, 42, 67, 0.16); }
  .solcard:hover .solcard__name::after { transform: scaleX(1); }
  .solcard:hover .solcard__fig::before { opacity: 0.06; }
  .solcard:hover .solcard__fig img { transform: scale(1.05); }
}
/* Tab ban phim: gach chan cung chay, nguoi dung phim co cung tin hieu */
.solcard:has(.solcard__link:focus-visible) .solcard__name::after { transform: scaleX(1); }
/* [L2] vao trang: anh lo tu DUOI LEN sau khi the noi len, roi cham mau "bat"
   ra (lo nhe) — nhac nguoi xem moi san pham mot mau. Chi an khi co .js-motion. */
.js-motion .solcard__fig img {
  clip-path: inset(100% 0 0 0);
  transition-delay: 0s, calc(var(--i, 0) * 80ms + 140ms);
}
.js-motion .solcard.is-in .solcard__fig img { clip-path: inset(0 0 0 0); }
.js-motion .solcard__name::before { transform: scale(0); }
.js-motion .solcard.is-in .solcard__name::before { transform: scale(1); }

/* =========================================================================
   サービス紹介 — 4 cot ke vach
   ========================================================================= */
.svc__in {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  grid-template-areas: "head more" "list list";
  column-gap: 24px;
  align-items: end;
}
.svc__head { grid-area: head; }
.svc__head .hx-lead { margin-top: 12px; }
.svc__more {
  grid-area: more; justify-self: end;
  display: inline-flex; align-items: center; gap: 10px;
  min-height: 44px; padding-bottom: 2px;
  border-bottom: 2px solid var(--navy);
  font-size: 15px; line-height: 1; font-weight: 700; letter-spacing: 0.08em;
  color: var(--navy); text-decoration: none; white-space: nowrap;
}
.svc__more[data-rise] {
  transition: opacity var(--dur-1) var(--ease-soft), transform var(--dur-1) var(--ease-out),
              color var(--dur-3), border-color var(--dur-3);
  transition-delay: calc(var(--i, 0) * 80ms), calc(var(--i, 0) * 80ms), 0s, 0s;
}
.svc__more svg { transition: transform var(--dur-3) var(--ease-out); }
@media (hover: hover) and (pointer: fine) {
  .svc__more:hover { color: var(--blue); border-bottom-color: var(--blue); }
  .svc__more:hover svg { transform: translateX(4px); }
}
.svc__list {
  grid-area: list;
  position: relative;
  margin: 40px 0 0; padding: 2px 0 0;   /* 2px = cho vach navy o tren */
  list-style: none;
  display: grid; grid-template-columns: repeat(4, minmax(0, 1fr));
  border-bottom: 1px solid var(--line-strong);
}
/* vach navy dau danh sach: KE RA tu trai khi danh sach vao khung nhin */
.svc__list::before, .reasons::before {
  content: "";
  position: absolute; top: 0; left: 0; right: 0; height: 2px;
  background: var(--navy);
  transform-origin: left;
  transition: transform var(--dur-2) var(--ease-out);
}
.js-motion .svc__list::before, .js-motion .reasons::before { transform: scaleX(0); }
.js-motion .svc__list.is-in::before, .js-motion .reasons.is-in::before { transform: scaleX(1); }
.svcol {
  position: relative;
  display: flex; flex-direction: column;
  padding: 28px clamp(18px, 1.77vw, 24px) 24px;
  border-left: 1px solid var(--line-strong);
  background: var(--white);
}
.svcol:first-child { border-left: 0; }
.svcol[data-rise] {
  transition: opacity var(--dur-1) var(--ease-soft), transform var(--dur-1) var(--ease-out),
              background-color var(--dur-3) var(--ease-soft);
  transition-delay: calc(var(--i, 0) * 80ms), calc(var(--i, 0) * 80ms), 0s;
}
.svcol__no {
  font-size: 16px; line-height: 24px; font-weight: 700; letter-spacing: 0.06em;
  font-variant-numeric: tabular-nums;
  color: var(--blue);
}
.svcol__fig {
  margin-top: 14px;
  height: 150px;
  display: flex; align-items: center; justify-content: center;
  background: var(--surface-2);
}
/* anh svc* nen TRANG san trong file -> multiply de hoa vao o nen xam nhat */
.svcol__fig img {
  width: auto; height: 118px; max-width: 80%;
  object-fit: contain;
  mix-blend-mode: multiply;
  transition: transform var(--dur-2) var(--ease-out);
}
/* khoa 2 dong (2 x 26px): 01 xuong 2 dong, 02-04 mot dong -> mo ta van ngang hang */
.svcol__name {
  margin: 22px 0 0;
  min-height: 52px;
  font-size: 17px; line-height: 26px; font-weight: 700; letter-spacing: 0.02em;
  font-feature-settings: 'palt';
  color: var(--navy);
}
.svcol__name span { display: inline-block; }   /* ngat dong dung cum: "AWS/GCP" | "クラウド導入・構築" */
.svcol__link { color: inherit; text-decoration: none; }
.svcol__txt {
  margin: 10px 0 20px;
  font-family: 'Noto Sans JP', sans-serif;
  font-size: 14px; line-height: 26px; letter-spacing: 0.02em;
  color: var(--muted);
  text-wrap: pretty;
}
.svcol .go-ring { margin-top: auto; align-self: flex-end; }
@media (hover: hover) and (pointer: fine) {
  .svcol:hover { background: var(--surface); }
  .svcol:hover .svcol__fig img { transform: translateY(-4px) scale(1.04); }
}

/* =========================================================================
   アプローチ — dai nen navy, 3 o trang noi bang dau ×
   ========================================================================= */
.apb { background: var(--navy-deep); }
.apb .h2 { color: var(--white); }
.apb__x { color: var(--blue-pale); }
/* h2 tach 2 dong <span> cho mobile ("AI駆動 × 成果約束" / "× アジャイル思考");
   tu 768px noi lai thanh 1 dong. */
@media (min-width: 768px) { .apb__h2 > span { display: inline-block; } }
.apb__lead { max-width: 44em; color: var(--on-dark-muted); }
.apb__row {
  margin-top: 56px;
  display: grid;
  grid-template-columns: minmax(0, 1fr) 64px minmax(0, 1fr) 64px minmax(0, 1fr);
  align-items: stretch;
}
.apcard {
  display: flex; flex-direction: column;
  background: var(--white);
  padding: 32px 32px 36px;
}
.apcard__fig { height: 150px; display: flex; align-items: center; }
.apcard__fig img { width: auto; height: 100%; max-width: 100%; object-fit: contain; }
.apcard__name {
  margin: 24px 0 0;
  display: flex; align-items: baseline; gap: 12px;
  font-size: 24px; line-height: 1.4; font-weight: 700; letter-spacing: 0.04em;
  color: var(--navy);
}
.apcard__no {
  flex: none;
  font-size: 14px; letter-spacing: 0.06em;
  font-variant-numeric: tabular-nums;
  color: var(--blue);
}
.apcard__txt {
  margin: 12px 0 0;
  font-family: 'Noto Sans JP', sans-serif;
  font-size: 15px; line-height: 28px; letter-spacing: 0.02em;
  color: var(--ink);
  text-wrap: pretty;
}
.apb__cross {
  display: flex; align-items: center; justify-content: center;
  font-size: 44px; line-height: 1; font-weight: 300;
  color: var(--blue-pale);
}
/* [L1] ke chuyen "ghep 3 yeu to": o trang noi len theo thu tu 1-2-3, dau ×
   XOAY 90 do vao cho SAU hai o ben canh (delay theo --i 1/3). Tren h2, hai
   dau × cung xoay vao sau khi dong chu truot len xong.                      */
.js-motion .apb__cross {
  opacity: 0;
  transform: scale(0.4) rotate(-90deg);
  transition: opacity var(--dur-1) var(--ease-soft),
              transform 0.7s cubic-bezier(0.34, 1.56, 0.64, 1);
  transition-delay: calc(var(--i, 0) * 80ms + 260ms);
}
.js-motion .apb__cross.is-in { opacity: 1; transform: none; }
.apb__h2 .apb__x { display: inline-block; }
.js-motion .apb__h2 .apb__x {
  transform: rotate(-90deg) scale(0.6);
  transition: transform 0.7s cubic-bezier(0.34, 1.56, 0.64, 1) 0.42s;
}
.js-motion .apb__h2.is-in .apb__x { transform: none; }

/* =========================================================================
   選ぶ理由 — moi ly do mot hang: so | tieu de | noi dung | minh hoa
   ========================================================================= */
.reasons {
  position: relative;
  margin: 48px 0 0; padding: 2px 0 0;
  list-style: none;
}
.reason {
  position: relative;
  display: grid;
  /* ban thiet ke 100 | 340 | 1fr | 220, khe 40 @1440. Cac cot co dinh co
     gian theo vw de o 1024px cot noi dung van con ~370px (khong bi bop). */
  grid-template-columns: clamp(64px, 7vw, 100px) clamp(240px, 23.6vw, 340px) minmax(0, 1fr) clamp(180px, 15.3vw, 220px);
  grid-template-areas: "no name txt fig";
  column-gap: clamp(24px, 2.8vw, 40px);
  align-items: start;
  padding: 40px 0;
}
/* vach duoi moi hang ke ra tu trai khi hang vao khung nhin */
.reason::after {
  content: "";
  position: absolute; left: 0; right: 0; bottom: 0; height: 1px;
  background: var(--line-strong);
  transform-origin: left;
  transition: transform var(--dur-2) var(--ease-out);
}
.reason__no {
  grid-area: no;
  display: block; overflow: hidden;   /* mat na cho so truot len */
  font-size: 56px; line-height: 1; font-weight: 700; letter-spacing: 0.02em;
  font-variant-numeric: tabular-nums;
  color: var(--navy);
}
.reason__no > span { display: block; transition: transform var(--dur-1) var(--ease-out); }
.reason__name {
  grid-area: name;
  margin: 0; padding-top: 6px;
  font-size: clamp(19px, 1.53vw, 22px); line-height: 1.6; font-weight: 700; letter-spacing: 0.04em;
  font-feature-settings: 'palt';
  color: var(--navy);
}
.reason__name span { display: inline-block; }   /* ngat dong dung cum nhu ban thiet ke */
.reason__txt {
  grid-area: txt;
  margin: 0; padding-top: 6px;
  font-family: 'Noto Sans JP', sans-serif;
  font-size: 16px; line-height: 30px; letter-spacing: 0.02em;
  color: var(--ink);
  text-wrap: pretty;
}
.reason__fig {
  grid-area: fig;
  height: 150px;
  display: flex; align-items: center; justify-content: center;
  background: var(--surface-2);
}
.reason__fig img { width: 204px; max-width: 92%; height: 136px; object-fit: contain; }
.reason__fig--tall img { width: 171px; height: 140px; }   /* icon 03 cao hon (ti le 385x315) */
/* [L1] hang vao khung nhin: vach duoi ke ra -> so truot len tu mat na ->
   tieu de, noi dung noi len so le -> o minh hoa mo tu trai, icon noi len.
   Nguoi duoc quan sat la ca HANG (li co dien tich), nen clip-path cua o
   minh hoa khong lam IntersectionObserver "mu".                           */
.js-motion .reason::after { transform: scaleX(0); }
.js-motion .reason.is-in::after { transform: scaleX(1); }
.js-motion .reason__no > span { transform: translateY(105%); }
.js-motion .reason.is-in .reason__no > span { transform: none; }
.js-motion .reason__name, .js-motion .reason__txt {
  opacity: 0; transform: translateY(14px);
  transition: opacity var(--dur-1) var(--ease-soft), transform var(--dur-1) var(--ease-out);
}
.js-motion .reason__name { transition-delay: 90ms; }
.js-motion .reason__txt { transition-delay: 170ms; }
.js-motion .reason.is-in .reason__name, .js-motion .reason.is-in .reason__txt { opacity: 1; transform: none; }
.js-motion .reason__fig { clip-path: inset(0 100% 0 0); transition: clip-path var(--dur-2) var(--ease-out) 0.12s; }
.js-motion .reason.is-in .reason__fig { clip-path: inset(0 0 0 0); }
.js-motion .reason__fig img {
  opacity: 0; transform: translateY(10px) scale(0.96);
  transition: opacity var(--dur-2) var(--ease-soft) 0.32s, transform var(--dur-2) var(--ease-out) 0.32s;
}
.js-motion .reason.is-in .reason__fig img { opacity: 1; transform: none; }

/* =========================================================================
   4 muc — TABLET (768–1023) va MOBILE (<=767) theo artboard Mobile 390
   ========================================================================= */
/* 選ぶ理由: 4 cot (so | ten | noi dung | minh hoa) can >=1200px. Hep hon, cot ten
   ~241px lam "AIエンジニア集団による開発力" gay giua cum ("集団に|よる") -> doi sang
   3 cot: ten va noi dung xep chong o cot giua.                               */
@media (max-width: 1199px) {
  .reason {
    grid-template-columns: 64px minmax(0, 1fr) 180px;
    grid-template-areas: "no name fig" "no txt fig";
    column-gap: 24px; row-gap: 6px;
    padding: 32px 0;
  }
  .reason__no { font-size: 44px; }
  .reason__fig { height: 130px; }
  .reason__fig img { width: 164px; height: 110px; }
  .reason__fig--tall img { width: 138px; height: 113px; }
}

@media (max-width: 1023px) {
  .sol__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .solcard__name { font-size: 19px; }
  .svc__list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .svcol:nth-child(odd) { border-left: 0; }
  .svcol:nth-child(-n+2) { border-bottom: 1px solid var(--line-strong); }
  .apb__row { margin-top: 40px; grid-template-columns: minmax(0, 1fr) 40px minmax(0, 1fr) 40px minmax(0, 1fr); }
  .apcard { padding: 24px 20px 28px; }
  .apcard__fig { height: 110px; }
  .apcard__name { font-size: 18px; gap: 8px; }   /* 20px: "アジャイル思考" vo 170/168px o 768 -> gay "思|考" */
  .apb__cross { font-size: 34px; }
}

@media (max-width: 767px) {
  .sol .eyebrow, .svc .eyebrow, .apb .eyebrow, .rsn .eyebrow { margin-bottom: 14px; }
  .hx--44 { line-height: 1.5; }
  .hx--40 { line-height: 1.6; }
  .hx-lead { margin-top: 14px; font-size: 15px; line-height: 27px; }

  .sol__grid { margin-top: 28px; grid-template-columns: 1fr; gap: 16px; }
  .solcard__body { padding: 24px 20px 20px; }
  .solcard__name { font-size: 20px; letter-spacing: 0.04em; }
  .solcard__sub { margin-top: 2px; min-height: 0; line-height: 1.6; }
  .solcard__txt { font-size: 15px; line-height: 27px; margin-bottom: 16px; }

  /* サービス: hang ngang [anh | so + ten | vong], mo ta keo het be ngang ben duoi.
     Nut "詳しく見る" xuong CUOI danh sach (DOM cung nam sau danh sach). */
  .svc__in { grid-template-columns: minmax(0, 1fr); grid-template-areas: "head" "list" "more"; }
  .svc__head .hx-lead { margin-top: 10px; }
  .svc__more { justify-self: start; margin-top: 20px; }
  .svc__list { margin-top: 24px; grid-template-columns: 1fr; border-bottom: 0; }
  .svcol, .svcol:nth-child(-n+2) {
    display: grid;
    grid-template-columns: 72px minmax(0, 1fr) 32px;
    grid-template-areas: "fig no ring" "fig name ring" "txt txt txt";
    column-gap: 12px;
    padding: 22px 0;
    border-left: 0; border-bottom: 1px solid var(--line-strong);
  }
  .svcol__no { grid-area: no; align-self: end; font-size: 13px; line-height: 18px; }
  .svcol__fig { grid-area: fig; margin: 0; width: 72px; height: 54px; }
  .svcol__fig img { height: 50px; }
  .svcol__name { grid-area: name; align-self: start; margin: 2px 0 0; min-height: 0; font-size: 16px; line-height: 1.5; }
  .svcol__txt { grid-area: txt; margin: 14px 0 0; font-size: 15px; line-height: 27px; }
  .svcol .go-ring { grid-area: ring; align-self: center; margin: 0; width: 32px; height: 32px; }
  .svcol .go-ring svg { width: 14px; height: 14px; }

  .apb__row { margin-top: 32px; grid-template-columns: 1fr; }
  .apb__cross { height: 44px; font-size: 32px; }
  .apcard { padding: 24px 22px 26px; }
  .apcard__fig { height: 120px; }
  .apcard__name { margin-top: 18px; gap: 10px; font-size: 20px; }
  .apcard__no { font-size: 13px; }
  .apcard__txt { margin-top: 10px; font-size: 15px; line-height: 27px; }

  .reasons { margin-top: 24px; }
  .reason {
    grid-template-columns: minmax(0, 1fr) 150px;
    grid-template-areas: "no fig" "name name" "txt txt";
    column-gap: 16px; row-gap: 0;
    align-items: end;
    padding: 28px 0;
  }
  .reason__no { font-size: 36px; }
  .reason__fig { width: 150px; height: 100px; }
  .reason__fig img { width: 140px; height: 93px; }
  .reason__fig--tall img { width: 115px; height: 94px; }
  .reason__name { align-self: start; margin-top: 16px; padding-top: 0; font-size: 19px; }
  .reason__txt { align-self: start; margin-top: 10px; padding-top: 0; font-size: 15px; line-height: 27px; }
}
/* 320px: cot ten サービス chi con 152px < "AIモダナイゼーション" 166px -> vo "ショ|ン" */
@media (max-width: 359px) {
  .svcol, .svcol:nth-child(-n+2) { grid-template-columns: 56px minmax(0, 1fr) 32px; }
  .svcol__fig { width: 56px; height: 44px; }
  .svcol__fig img { height: 40px; }
  .svcol__name { font-size: 15px; }
}


/* =========================================================================
   MUI TEN "DI TIEP" — gach ngang dai, manh nhu soi toc, dau co moc cheo nho.
   Nguyen tac hoc tu tdse.jp (ty le ~4:1, net 1px): mui ten KY TU "→" cua font
   qua map va qua ngan, dung canh chu Nhat trong thanh mot dau cham to. Ve
   bang hinh thi kiem soat duoc do day va chieu dai.
   Ve bang mask + background-color:currentColor -> TU AN theo mau chu cua the,
   khong phai khai lai mau cho tung san pham.                                */
:root {
  --arrow-go: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 34 10'%3E%3Cpath d='M0 8.5H32M25.5 2 32 8.5' fill='none' stroke='%23000' stroke-width='1.2' stroke-linecap='round'/%3E%3C/svg%3E");
}
.avcard__more {
  display: flex; justify-content: flex-end; align-items: center;
  font-size: 0; line-height: 0;            /* the rong, hinh ve o ::after */
  /* KHOA chieu cao: mui ten cheo (the ra ngoai) cao 17px, mui ten ngang chi
     10px. Khong khoa thi day thang nhung DINH lech 7px -> hong can hang
     theo tang. Do 2026-09-27.                                              */
  height: 20px;
  transition: transform var(--dur-3) var(--ease-out);
}
.avcard__more::after {
  content: "";
  width: 34px; height: 10px;
  background-color: currentColor;
  -webkit-mask: var(--arrow-go) no-repeat right center / contain;
          mask: var(--arrow-go) no-repeat right center / contain;
}

/* =========================================================================
   THE BAM DUOC — phan dung chung cho .avcard, .solcard, .svcol   (2026-09-26)
   ========================================================================= */
.avcard, .solcard, .svcol {
  cursor: pointer;
  /* iOS/Android to mot o xanh len ca the khi cham. Tat di VI DA CO phan hoi
     rieng o :active ben duoi -- tat ma khong thay the thi nguoi dung cham
     xong khong biet may co nhan hay khong.                                 */
  -webkit-tap-highlight-color: transparent;
}
/* Phan hoi khi CHAM: lun nhe + nen xam. iOS chi chay :active cho the thuong
   khi trang co listener 'touchstart' -- da gan o home-motion.js.           */
.avcard:active, .solcard:active { transform: scale(0.988); }
/* cot サービス nam trong luoi ke vach: lun lai se ho khe voi vach -> doi nen */
.svcol:active { background: var(--surface-3); }
.avcard:active, .solcard:active { box-shadow: 0 8px 20px rgba(16, 42, 67, 0.10); }
/* Tab toi link trong the -> vien sang bao CA THE, khong phai moi dong chu. */
.avcard:has(.avcard__link:focus-visible),
.solcard:has(.solcard__link:focus-visible),
.svcol:has(.svcol__link:focus-visible) {
  outline: 2px solid var(--blue);
  outline-offset: 3px;
}
.avcard__link:focus-visible, .solcard__link:focus-visible, .svcol__link:focus-visible { outline: none; }
/* Chu danh rieng cho trinh doc man hinh -- mat khong thay, may van doc. */
.sr-only {
  position: absolute; width: 1px; height: 1px;
  margin: -1px; padding: 0; border: 0;
  clip-path: inset(50%); overflow: hidden; white-space: nowrap;
}

/* =========================================================================
   CERTIFICATIONS — sao chep ban goc
   ========================================================================= */
.certs { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, max(20%, 180px)), 1fr)); gap: var(--gap-trong); }
.certs figure { margin: 0; display: grid; grid-template-rows: subgrid; grid-row: span 2; row-gap: 10px; justify-items: center; align-items: start; text-align: center; }
/* 2026-09-24 (critique #1): hang anh / caption / mo ta cua cac the CANH NHAU nho subgrid,
   bo min-height du phong (tao lo trong 60-120px khi caption ngan). Fallback duoi. */
.certs__fig { height: clamp(84px, 8.4vw, 110px); display: flex; align-items: center; justify-content: center; }
.certs__fig img { max-width: 100%; max-height: 100%; object-fit: contain; }
.certs figcaption { font-size: 16px; font-weight: 700; line-height: 1.6; color: var(--navy); text-wrap: pretty; }   /* (min-height 4.8em chi con trong fallback @supports not subgrid) reserve 3 dong: PSM/PSPO wrap toi 3 dong o 320-375px, 3.2em (2 dong) cu bi lech */
.certs .lead { margin: 0; font-size: 15px; line-height: 1.85; }

/* =========================================================================
   課題 / 取り組み / サービス — luoi noi dung
   ========================================================================= */
.grid { display: grid; gap: clamp(26px, 3.2vw, 48px); }
.grid--2 { grid-template-columns: repeat(auto-fit, minmax(min(100%, max(42%, 280px)), 1fr)); }
.grid--3 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)); }
.grid--4 {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, max(22%, 180px)), 1fr));
  gap: clamp(20px, 2vw, 28px);   /* gap chung qua rong se an mat cot thu 4 */
}
/* luoi rieng cho khoi so lieu 実績 — ban goc dung 20%/150px */
.grid--stats { grid-template-columns: repeat(auto-fit, minmax(min(100%, max(20%, 150px)), 1fr)); }

.issue { display: flex; gap: 18px; align-items: flex-start; }
.issue__dot {
  flex: 0 0 auto;
  width: 10px; height: 10px;
  margin-top: 9px;
  transform: rotate(45deg);
}
.issue h3 { margin: 0 0 10px; font-size: 19px; font-weight: 700; color: var(--navy); }
.issue p  { margin: 0; }

.step__no {
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.2em;
  color: var(--blue);
}
.step h3 { margin: 12px 0 14px; font-size: 21px;   /* dong bo Home goc */ line-height: 1.6; font-weight: 700; color: var(--navy); }
.step p  { margin: 0; }
.step__rule {
  width: 100%; height: 2px;
  margin: 18px 0 0;
  background: var(--line);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform var(--dur-2) var(--ease-out);
  transition-delay: calc(var(--i, 0) * 120ms);
}
.is-in .step__rule { transform: scaleX(1); background: var(--blue); }

/* --- the dich vu / AVATAR: [L3] nang nhe khi hover --------------------- */
.card {
  display: block;
  padding: clamp(24px, 2.6vw, 34px);
  background: var(--white);
  border: 1px solid var(--line);
  border-radius: 4px;
  text-decoration: none;
  transition: transform var(--dur-3) var(--ease-out),
              box-shadow var(--dur-3) var(--ease-soft),
              border-color var(--dur-3);
}
.card:hover {
  transform: translateY(-4px);
  box-shadow: 0 14px 34px rgba(16, 42, 67, 0.12);
  border-color: #C9D6E2;
}
.card h3 { margin: 0 0 6px; font-size: 19px; font-weight: 700; color: var(--navy); }
.card__tag { margin: 0 0 14px; font-size: 13px; font-weight: 700; letter-spacing: 0.08em; color: var(--blue); }
.card p { margin: 0; }
.card__no {
  margin: 0 0 12px;
  font-size: 30px; font-weight: 900; line-height: 1;
  color: #CBD6E1;
}

/* =========================================================================
   #7 VIDEO — facade: KHONG nhung iframe cho toi khi nguoi dung bam
   ========================================================================= */
.video {
  position: relative;
  /* khop khung noi dung nhu moi section khac — KHONG tran man */
  aspect-ratio: 21 / 9;
  overflow: hidden;
  border-radius: 6px;
  background: var(--navy-deep);
  transform: scale(var(--vs, 0.94));
  transition: transform 1.1s var(--ease-out);
}
.video.is-in { --vs: 1; }
/* ghi chu nam san trong .wrap roi — khong can tu canh lai nua (truoc day phai
   bu vi video tran man) */
.video__poster { width: 100%; height: 100%; object-fit: cover; }
.video__scrim {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(11, 32, 54, 0.30) 0%, rgba(11, 32, 54, 0.70) 100%);
}
/* [2026-09-25] Nut play TRON, khong chu — theo dung kieu dang o nal.vn (user gui
   anh chup man hinh). Tam giac lech phai 3px vi trong tam thi giac cua hinh tam
   giac khong trung tam hinh hoc: canh giua tuyet doi se thay no "tut" sang trai. */
.video__play {
  position: absolute;
  left: 50%; top: 50%;
  transform: translate(-50%, -50%);
  display: flex;
  align-items: center;
  justify-content: center;
  width: clamp(64px, 7vw, 88px);
  aspect-ratio: 1;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.95);
  color: var(--navy);
  cursor: pointer;
  box-shadow: 0 8px 28px rgba(11, 32, 54, 0.28);
  transition: background var(--dur-3), transform var(--dur-3) var(--ease-out);
}
.video__play:hover { background: var(--white); transform: translate(-50%, -50%) scale(1.07); }
.video__play svg { flex: 0 0 auto; margin-left: 3px; width: 30%; height: auto; }
.video__label {
  position: absolute;
  left: clamp(20px, 3vw, 36px);
  bottom: clamp(20px, 3vw, 36px);
  right: clamp(20px, 3vw, 36px);
  color: var(--white);
}
.video__label p { margin: 0; font-size: clamp(16px, 1.8vw, 21px); font-weight: 700; line-height: 1.6; }
.video iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }


/* =========================================================================
   #5 CUM AVATAR — con so 200+ engineers gan voi nguoi that
   ========================================================================= */
.stat { display: flex; flex-direction: column; gap: 14px; }
.stat__k { margin: 0; font-size: 14px;   /* dong bo Home goc */ font-weight: 700; letter-spacing: 0.2em; color: var(--muted); }
.stat__v {
  margin: 0;
  display: flex; align-items: baseline; gap: 2px;
  font-size: clamp(44px, 5.4vw, 68px);   /* dong bo Home goc */
  font-weight: 900; line-height: 0.95;
  color: var(--navy-ink);
}
.stat__v span:last-child { font-size: 0.5em; font-weight: 700; }
.stat__rule { width: 36px; height: 3px; background: var(--navy-ink); }
.stat p:last-of-type { margin: 0; font-family: 'Noto Sans JP', sans-serif; font-size: 15px; line-height: 1.85; color: var(--muted); }
/* ^ :last-of-type chu khong phai :last-child — o ENGINEERS con cum avatar nam
   SAU dong mo ta, :last-child truot mat -> dong "200名以上のエンジニア" an margin
   mac dinh 16px + mau chu dam, lech tang voi 3 o ben canh (sua 2026-09-27). */

/* [L1] 実績 vao khung nhin (2026-09-27): so DEM tu 0 (home-motion.js countUp)
   -> vach mau ngan KE RA tu trai. Dau "+" / "%+" KHONG con hieu ung nao.
   Nhip theo --i cua tung o (80ms, trung stagger cua [data-rise]).          */
.stat__rule {
  transform-origin: left;
  transition: transform var(--dur-2) var(--ease-out) calc(var(--i, 0) * 80ms + 250ms);
}
.js-motion .stat__rule { transform: scaleX(0); }
.js-motion .stat.is-in .stat__rule { transform: scaleX(1); }
/* Dau "+" / "%+" HIEN SUOT, khong an roi bat ra. Ban truoc cho no opacity:0 +
   thu nho 60% roi hien sau 1,05s -> suot luc dem, ca 4 o deu MAT DAU; nguoi
   xem doc ra la loi hien thi chu khong phai hieu ung. Phong bao 2026-09-28. */
.stat__v > span:last-child { display: inline-block; }

/* Cum avatar chong mep + vong dem "+195" duoi o ENGINEERS (2026-09-25).
   Vien 2px lay dung mau nen section (--surface) de cho chong nhau doc ro.
   Re chuot -> cac avatar gian ra (margin am bot lai). */
.avstack {
  display: flex; align-items: center; margin-top: 2px;
  /* co fluid: o stat chi ~154px o mobile va ~157px o 768 (luoi 4 cot) -> avatar
     phai thu theo be rong man, neu khong 6 vong tron se tran khoi o. */
  --av: clamp(30px, 2.6vw, 40px);
}
.avstack > * + * { margin-left: calc(var(--av) * -0.3); transition: margin-left var(--dur-3) var(--ease-out); }
.avstack:hover > * + * { margin-left: calc(var(--av) * -0.1); }
.avstack__face, .avstack__more {
  width: var(--av); height: var(--av); flex: 0 0 auto;
  border-radius: 50%;
  box-shadow: 0 0 0 2px var(--surface);
}
.avstack__face { display: block; object-fit: cover; background: var(--line); }
.avstack__more {
  display: grid; place-items: center;
  background: #17486F; color: var(--white);
  font-size: calc(var(--av) * 0.3); font-weight: 700; letter-spacing: 0.01em;
}
/* [L1] 5 avatar TRUOT vao lan luot tu trai (moi cai tre 70ms), "+195" bat ra
   cuoi cung. Ke lai margin-left (delay 0) de hieu ung gian ra khi re chuot o
   tren van tuc thi.                                                         */
.avstack > * {
  transition: opacity 0.45s var(--ease-soft), transform 0.6s var(--ease-out), margin-left var(--dur-3) var(--ease-out);
  transition-delay: calc(var(--i, 0) * 80ms + 420ms + var(--n, 0) * 70ms),
                    calc(var(--i, 0) * 80ms + 420ms + var(--n, 0) * 70ms), 0s;
}
.avstack > :nth-child(2) { --n: 1; }
.avstack > :nth-child(3) { --n: 2; }
.avstack > :nth-child(4) { --n: 3; }
.avstack > :nth-child(5) { --n: 4; }
.avstack > :nth-child(6) { --n: 5.6; }
.avstack__more { transition-timing-function: var(--ease-soft), cubic-bezier(0.34, 1.56, 0.64, 1), var(--ease-out); }
.js-motion .avstack > * { opacity: 0; transform: translateX(-14px); }
.js-motion .avstack > .avstack__more { transform: scale(0.5); }
.js-motion .stat.is-in .avstack > * { opacity: 1; transform: none; }


/* =========================================================================
   Logo khach hang / giai thuong
   ========================================================================= */
/* Luoi 6 cot DEU NHAU la goc re cua cam giac lon nhon: 6 logo co ty le tu
   1,7:1 (IIJ) toi 6,9:1 (SoftBank). Cung mot o thi chu manh nhu SoftBank
   "nhe" hon han khoi dac nhu Toshiba.
   Do 2026-09-27 bang cach dem diem anh co muc x do dam: luong muc chenh 2,60
   lan. Chinh chieu cao RIENG tung logo (he so --k) -> con 1,24 lan.
   He so tinh tu phep do, khong phai uoc luong bang mat.                    */
.logos {
  /* CUA SO nhin cua bang chay. Nam trong .wrap nen be rong = 1176px, thang le
     voi moi khoi khac tren trang (do: mep trai trung khit 「CERTIFICATIONS」).  */
  overflow: hidden;
  /* Hai mep mo dan -> logo TAN RA chu khong bi chem ngang. Thieu cai nay thi
     bang chay trong nhu bi cat bang dao.                                     */
  -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 4%, #000 96%, transparent 100%);
          mask-image: linear-gradient(90deg, transparent 0, #000 4%, #000 96%, transparent 100%);
}

/* Bang chay. Chua DUNG 2 bo logo giong het nhau -> dich di 50% la vua tron mot
   bo, diem noi trung khit, mat khong thay cho lap.
   width: max-content de bang dai bang tong noi dung, khong bi ep ve 1176px.   */
.logos__bang {
  display: flex;
  width: max-content;
  animation: logos-troi 55s linear infinite;
  will-change: transform;
}
/* linear la DUNG o day: chi thu troi vo han (marquee, spinner) moi dung linear.
   Vat the di vao/ra man thi phai dung ease.                                   */
@keyframes logos-troi { from { transform: translate3d(0,0,0); } to { transform: translate3d(-50%,0,0); } }

/* padding-right = dung mot khe: neu khong, logo cuoi bo 1 dinh sat logo dau
   bo 2 o diem noi, nhin ra ngay cho lap.                                      */
.logos__bo {
  display: flex;
  align-items: center;
  gap: var(--khe-logo);
  padding-right: var(--khe-logo);
}
.logos__bo > div { flex: 0 0 auto; display: flex; align-items: center; justify-content: center; }

/* Chieu cao quyet dinh luong muc nen phai thang; be rong tu tinh.
   KHONG lam xam logo khach: xam hoa logo cua ho la cach trinh bay ho co the
   khong dong y.                                                              */
.logos img {
  height: calc(var(--logo-co) * var(--k, 1));
  width: auto; max-width: none;
  object-fit: contain;
}

/* Phong chot 2026-09-27: bang chay LIEN TUC, KHONG dung khi re chuot.
   Chi con 2 cho dung, deu khong phai lua chon tham my:
     - khuat tam nhin -> do tot may, nguoi dung khong thay
     - "giam chuyen dong" -> nguoi chong mat tien dinh dung that           */
/* Khoi ra khoi tam nhin -> dung cho do ton may. Dung lai co che [data-io] san
   co cua site (no go .is-in khi khoi roi khung nhin), khong them JS moi.      */
.logos:not(.is-in) .logos__bang { animation-play-state: paused; }

/* Nguoi bat "giam chuyen dong" (chong mat tien dinh) -> bang DUNG HAN, doi
   thanh hang cuon tay. Bo ban nhan doi di cho khoi doc ra 14 logo.            */
@media (prefers-reduced-motion: reduce) {
  .logos { overflow-x: auto; }
  .logos__bang { animation: none; width: auto; }
  .logos__bo[aria-hidden="true"] { display: none; }
}

.awards { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 150px), 1fr)); gap: var(--gap-trong); }
.awards figure { margin: 0; display: grid; grid-template-rows: subgrid; grid-row: span 3; row-gap: 9px; justify-items: center; align-items: start; text-align: center; }
.awards img { height: clamp(58px, 6vw, 78px); width: auto; object-fit: contain; }
.awards figcaption { font-size: 15px; font-weight: 700; color: var(--navy); line-height: 1.6; text-wrap: pretty; }   /* (min-height 6.4em chi con trong fallback) reserve 4 dong: "Top 10 National Digital Transformation Solutions" wrap toi 4 dong o 320px */
.awards .lead { margin: 0; font-size: 15px; line-height: 1.8; }   /* dong bo Home goc */
@supports not (grid-template-rows: subgrid) {
  .certs figure, .awards figure { display: flex; flex-direction: column; align-items: center; }
  .certs figure { gap: 10px; }  .awards figure { gap: 9px; }
  .certs figcaption { min-height: 4.8em; }  .awards figcaption { min-height: 6.4em; }
}

/* =========================================================================
   CTA — anh tap the full-bleed, giu duotone de chu doc duoc
   ========================================================================= */
.cta { position: relative; color: var(--white); overflow: hidden; }
.cta__bg { position: absolute; inset: 0; }
.cta__bg .photo { height: 100%; }
/* padding-BLOCK, khong dung dang rut gon: `padding: X 0` se ghi de luon
   padding-left/right cua .wrap ve 0 => chu CTA lech trai 32px so voi moi
   section khac (do duoc: 20 vs 52 o kho 1280px). */
.cta__in { position: relative; z-index: 2; padding-block: clamp(64px, 7vw, 116px); }
.cta h2 {
  margin: 0;
  max-width: 22em;
  font-size: clamp(21px, 2.4vw, 30px);   /* dong bo Home goc */
  line-height: 1.55;
  font-weight: 900;
  text-wrap: pretty;
}
.cta p { margin: 22px 0 0; max-width: 42em; color: #D2DEEA; }

/* =========================================================================
   FOOTER — dung chung 28 trang qua partials/site-footer.html (stamp-partials.py).
   Noi dung dung SiteFooter.dc.html, thiet ke theo token & class prototype nay.
   ========================================================================= */
.ftr { background: var(--navy-deep); color: rgba(255, 255, 255, 0.72); font-family: 'Zen Kaku Gothic New', 'Noto Sans JP', sans-serif; }
.ftr a { display: inline-flex; align-items: center; min-height: 44px; text-decoration: none; }

/* .ftr__grid / .ftr__bottom-in di chung .wrap: chi dat padding-block. Shorthand
   "padding: X 0" de mat gutter trai/phai cua .wrap -> footer dinh mep tu 1240px tro xuong. */
.ftr__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, max(20%, 170px)), 1fr)); gap: clamp(20px, 2.4vw, 36px); padding-block: clamp(52px, 5.4vw, 80px) clamp(32px, 3.4vw, 48px); }
.ftr__col { display: flex; flex-direction: column; gap: 6px; }
.ftr__col--brand { gap: 22px; }
.ftr__logo { height: 30px; width: auto; display: block; align-self: flex-start; }
.ftr__desc { margin: 0; font-family: 'Noto Sans JP', sans-serif; font-size: 15px; line-height: 2; color: var(--on-dark-muted); max-width: 340px; text-wrap: pretty; }
.ftr__certs { display: flex; align-items: center; gap: 20px; flex-wrap: wrap; min-height: 0; }
.ftr__certs img { height: 40px; width: auto; object-fit: contain; }
.ftr__copy-sm { margin: 0; font-size: 14px; color: #7E93A8; }

.ftr__head { margin: 0 0 6px; font-size: 14px; font-weight: 700; letter-spacing: 0.16em; color: #7E93A8; }
.ftr__col > a { font-size: 16px; color: #E4EBF2; }
.ftr__col > a:hover { color: var(--amber); }

.ftr__eco { border-bottom: 1px solid #22405C; }
.ftr__eco summary { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 44px; padding: 12px 0; cursor: pointer; font-size: 16px; color: #E4EBF2; list-style: none; }
.ftr__eco summary::-webkit-details-marker { display: none; }
.ftr__eco summary:hover { color: var(--amber); }
.ftr__eco summary::after { content: "▼"; font-size: 12px; color: #7E93A8; }
.ftr__eco[open] summary::after { content: "▲"; }
.ftr__eco-panel { padding: 2px 0 16px; display: flex; flex-direction: column; gap: 8px; }
.ftr__eco-panel p { margin: 0; font-family: 'Noto Sans JP', sans-serif; font-size: 14px; line-height: 1.9; color: var(--on-dark-muted); }
.ftr__eco-panel a { min-height: 0; font-size: 14px; color: #8FB8DC; }
.ftr__eco-panel a:hover { color: var(--amber); }

.ftr__office { display: flex; flex-direction: column; gap: 5px; }
.ftr__office-name { font-size: 15px; font-weight: 700; color: var(--white); }
.ftr__office-addr { font-size: 14px; line-height: 1.85; color: var(--on-dark-muted); }
.ftr__office a { min-height: 0; font-size: 14px; color: var(--on-dark-muted); }
.ftr__office a:hover { color: var(--amber); }
.ftr__social { display: flex; gap: 10px; margin-top: 4px; }
.ftr__social a { min-height: 34px; height: 34px; width: 34px; justify-content: center; border: 1px solid #35506B; color: var(--on-dark-muted); font-size: 14px; font-weight: 700; letter-spacing: 0.04em; }
.ftr__social a:hover { border-color: var(--amber); color: var(--amber); }

.ftr__bottom { border-top: 1px solid #22405C; }
.ftr__bottom-in { padding-block: 20px; display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.ftr__bottom-in span { font-size: 14px; color: #7E93A8; }
.ftr__bottom-in a { min-height: 0; font-size: 14px; color: var(--on-dark-muted); letter-spacing: 0.04em; }
.ftr__bottom-in a:hover { color: var(--amber); }

/* =========================================================================
   SUB-PAGE HERO + BREADCRUMB — dung chung cho MOI trang KHONG PHAI Home
   (About/Blog/Contact/Services*/Solutions*/Cases*). Home dung .hero rieng
   (dark + slideshow, khai o tren); cac trang con lai sang mau, khong anh,
   chi kicker + h1 + lead. Contact.html la trang dau tien dung khoi nay.
   ========================================================================= */
.bcrumb { padding-top: 22px; font-family: 'Noto Sans JP', sans-serif; font-size: 14px; color: #7E93A8; }

.subhero { padding: clamp(32px, 3.4vw, 48px) 0 clamp(32px, 3.4vw, 44px); }
.subhero__in { max-width: 820px; }
.subhero__in .eyebrow { margin-bottom: 20px; }
.subhero__h1 { margin: 0 0 24px; font-size: clamp(24px, 3vw, 38px); line-height: 1.45; font-weight: 900; color: var(--navy); text-wrap: pretty; }
.subhero__in .lead { margin: 0; }

/* =========================================================================
   CONTACT — お問い合わせの流れ (4 STEP card) + form + aside lien he
   ========================================================================= */
.flow { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, max(20%, 220px)), 1fr)); gap: 20px; }
.flow__card { background: var(--white); border: 1px solid var(--line-strong); border-top: 3px solid var(--blue); padding: 24px 26px; display: flex; flex-direction: column; gap: 10px; }
.flow__no { font-size: 14px; font-weight: 700; letter-spacing: 0.18em; color: var(--blue); }
.flow__title { font-size: 17px; font-weight: 700; color: var(--navy); }
.flow__desc { font-family: 'Noto Sans JP', sans-serif; font-size: 15px; line-height: 1.9; color: var(--muted); }

.cform { display: grid; grid-template-columns: 1fr; gap: clamp(32px, 4vw, 64px); align-items: start; }
@media (min-width: 900px) { .cform { grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr); } }
.cform__title { margin: 0 0 clamp(24px, 2.6vw, 36px); font-size: clamp(20px, 2.2vw, 28px); line-height: 1.5; font-weight: 700; color: var(--navy); }
.cform__fields { display: flex; flex-direction: column; gap: 28px; }

/* --- 1 field = label (+ badge bat buoc/tuy chon) + control -------------- */
.cf { display: flex; flex-direction: column; gap: 10px; }
.cf__label { display: flex; align-items: center; gap: 10px; font-size: 15px; font-weight: 700; color: var(--navy); }
.cf__req, .cf__opt { font-size: 14px; font-weight: 700; padding: 2px 8px; letter-spacing: 0.08em; }
.cf__req { color: var(--white); background: #C0392B; }
.cf__opt { color: var(--muted); background: var(--surface); }
.cf__input, .cf__select, .cf__textarea {
  width: 100%; box-sizing: border-box; min-height: 52px; padding: 14px 16px;
  font-family: 'Noto Sans JP', sans-serif; font-size: 16px; line-height: 1.7; color: var(--ink);
  background: var(--white); border: 1px solid var(--on-dark-muted); border-radius: 4px;
}
.cf__textarea { min-height: 176px; resize: vertical; }
.cf__input:focus, .cf__select:focus, .cf__textarea:focus { outline: 2px solid var(--blue); outline-offset: 1px; border-color: var(--blue); }
.cf__hint { font-family: 'Noto Sans JP', sans-serif; font-size: 14px; line-height: 1.8; color: #7E93A8; }

.cf__check { display: flex; align-items: flex-start; gap: 12px; padding: 20px; background: var(--surface); border: 1px solid var(--line-strong); }
.cf__check input { width: 28px; height: 28px; min-width: 44px; min-height: 44px; margin: 0; flex: 0 0 auto; accent-color: var(--blue); }
.cf__check label { font-family: 'Noto Sans JP', sans-serif; font-size: 15px; line-height: 1.9; color: var(--ink); }
.cf__check a { display: inline-flex; align-items: center; min-height: 44px; color: var(--blue); text-decoration: underline; }

/* nut submit KHONG noi backend o phase nay (B7) — xem onclick trong Contact.html */
.cf__submit {
  display: inline-flex; align-items: center; justify-content: center; gap: 12px;
  min-height: 56px; padding: 0 44px; background: var(--navy); color: var(--white);
  font-family: 'Zen Kaku Gothic New', 'Noto Sans JP', sans-serif; font-size: 17px; font-weight: 700;
  letter-spacing: 0.04em; border: 2px solid var(--navy); border-radius: 999px; cursor: pointer;
}
.cf__submit:hover { background: var(--blue); border-color: var(--blue); }
.cf__note { margin: 16px 0 0; font-family: 'Noto Sans JP', sans-serif; font-size: 14px; line-height: 1.8; color: #7E93A8; }

.cform__aside { background: var(--surface); border: 1px solid var(--line-strong); padding: clamp(28px, 3vw, 36px); display: flex; flex-direction: column; gap: 28px; }
.cform__aside-block { display: flex; flex-direction: column; gap: 12px; }
.cform__aside-block + .cform__aside-block { border-top: 1px solid var(--line-strong); padding-top: 24px; }
.cform__aside-kicker { font-size: 14px; font-weight: 700; letter-spacing: 0.18em; color: var(--blue); }
.cform__aside-office { font-size: 15px; font-weight: 700; color: var(--navy); }
.cform__aside-tel { font-size: 20px; font-weight: 900; color: var(--navy); text-decoration: none; letter-spacing: 0.02em; }
.cform__aside-certs { display: flex; gap: 20px; align-items: center; flex-wrap: wrap; }
.cform__aside-certs img { height: 56px; width: auto; object-fit: contain; }

@media (max-width: 767px) {
  .flow { grid-template-columns: 1fr; }
}

/* =========================================================================
   RESPONSIVE
   ========================================================================= */
@media (max-width: 1023px) {
  .hero__in { grid-template-columns: 1fr; }
  .hero__art img { max-width: 460px; }
  .grid--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }  /* the noi dung: 2 cot cho de doc */
}

@media (max-width: 767px) {
  :root { --gutter: 20px; --dur-2: 0.7s; }   /* mobile: rut ngan nhip ke chuyen */
  /* anh nen hero o mobile: doi sang giua, neu khong chu de len mat nguoi */
  .hero__slide > img { object-position: center center; }
  /* huy override 2 cot cua tablet: o mobile the noi dung phai 1 cot */
  .grid--4 { grid-template-columns: 1fr; }
  .hero__art img { max-width: 340px; }
  /* o anh giu nguyen 168px nhu ban Home cu: o mobile the chiem het be ngang
     nen 168px van con thua cho hai ben, khong can bop lai.                  */
  .certs { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .awards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .hdr__nav { display: none; }
  .hero__in { padding-bottom: 88px; }   /* 2026-09-24: cho cum [<] cham [>] (bottom 12 + cao 44) khong de len chu NAL */
  .video { aspect-ratio: 16 / 9; }   /* 21:9 o 390px chi cao 167px, qua mong */
  .video__play { top: 42%; }   /* 42%: chua cho caption duoi (critique #6) */
  .video__label p { font-size: 14px; }
  .stat__k { font-size: 12px; letter-spacing: 0.12em; white-space: nowrap; }   /* critique #5: "CLIENT RETENTION" 14px/.2em ~180px > o 157px -> wrap */
  /* parallax tat han duoi 768px — xem home-motion.js; reset gia tri o day */
  .parallax > img { height: 100%; transform: none; }
  /* 4 con so xep 1 cot tren mobile lam doan nay dai le te -> ep 2x2.
     CHI ap cho khoi so lieu; the solution/service van 1 cot cho de doc. */
  .grid--stats { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(26px, 7vw, 36px); }
  .stat__v { font-size: clamp(34px, 11vw, 46px); }
}

/* =========================================================================
   REDUCED MOTION — tat toan bo 8 co che, giu nguyen trang thai CUOI
   (noi dung phai doc duoc day du khi khong co chuyen dong nao)
   ========================================================================= */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    transition-delay: 0ms !important;
  }
  .lines > span > i { transform: none !important; }
  [data-reveal]::before { transform: scaleX(0) !important; }
  [data-rise] { opacity: 1 !important; transform: none !important; }
  .photo > img { filter: none !important; }
  .photo::after { opacity: 0 !important; }
  .photo--hold > img { filter: grayscale(1) brightness(0.72) !important; }
  .photo--hold::after { opacity: 0.85 !important; }
  /* .photo--warm (CTA co chu de len anh): trang thai cuoi = ha sang + gradient
     navy, KHONG phai anh goc. Neu de 2 rule .photo o tren thang, chu CTA nam
     tren anh sang -> khong doc duoc khi reduced-motion. Cung pattern .photo--hold. */
  .photo--warm > img { filter: brightness(0.62) saturate(0.92) !important; }
  .photo--warm::after { opacity: 1 !important; }
  .parallax > img { height: 100% !important; transform: none !important; }
  .video { transform: none !important; }
  .hero__slide > img { transform: none !important; }
  .hero__slide { transition: none !important; }
  .hero__art img { clip-path: none !important; transform: none !important; opacity: 1 !important; }
  .hero__magnet { transform: none !important; }
  .parallax > img { --ps: 1 !important; }
  /* anh trong the AVATAR: bo mat na clip-path, neu khong anh se ket o trang
     thai an khi .is-in khong bao gio duoc gan.                              */
  .avcard__fig img { clip-path: none !important; transform: none !important; }
  .avcard:hover { transform: none !important; }
  .avcard:hover .avcard__fig img { transform: none !important; }
  .avcard:hover .avcard__more { transform: none !important; }
  .avcard:active, .solcard:active { transform: none !important; }
  /* 4 muc Home (2026-09-27): ep trang thai CUOI cua moi hieu ung vao trang */
  .solcard__fig img, .reason__fig { clip-path: none !important; }
  .solcard::before { transform: none !important; }
  .solcard:hover .solcard__fig img, .svcol:hover .svcol__fig img { transform: none !important; }
  .solcard__name::before, .reason__no > span, .reason__name, .reason__txt, .reason__fig img,
  .apb__cross, .apb__h2 .apb__x { opacity: 1 !important; transform: none !important; }
  .svc__list::before, .reasons::before, .reason::after { transform: none !important; }
  .stat__rule, .avstack > * { opacity: 1 !important; transform: none !important; }
  .step__rule { transform: scaleX(1) !important; }
}

/* =========================================================================
   CASES — component dung chung cho ho trang Cases (Phase 3), tai dung o
   Services/Solutions (5, 6). Nguon noi dung: khoi <style> 61 dong
   byte-identical o ca 10 design-source/CasesXxx.dc.html (sinh boi
   .claude/state/nal-web/gen-case-pages.py). GIU NGUYEN ten class de khop 1-1
   voi HTML da duyet (dc-fig/dc-list/dc-tech/dc-meta/dc-ui*).
   3 rule KHONG mang qua vi da co ban toan site tuong duong hoac khong con
   khop co che moi (xem phase-03-cases-family.md muc 2 da doi chieu):
     - body{margin:0;background:#FFF;...} -> trung `body` global o dau file.
     - a{color:#102A43} -> trung `a{color:var(--navy)}` o dau file.
     - [id]{scroll-margin-top:92px} -> da co co che chung dung hon o dau file
       (bien --hdr-h + body:has(.lnav)), Cases khong co .lnav nen tu nhan
       cong thuc dung, KHONG duoc ghi de o day.
   ACCENT/ACCENT_BG cua ban goc -> var(--blue)/var(--navy)/var(--ink)/
   var(--muted)/var(--line)/var(--surface) khi trung token co san, hex truc
   tiep khi khong co token (dong bo cach Contact.html da lam).
   ========================================================================= */
.dc-fig { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.dc-fig > svg { min-width: 1080px; }
.dc-fig-hint { display: none; margin: 0 0 14px; font-family: 'Noto Sans JP', sans-serif; font-size: 14px; color: #7E93A8; }
@media (max-width: 1200px) { .dc-fig-hint { display: block; } }
.dc-flow { stroke-dasharray: 400; stroke-dashoffset: 400; animation: dc-draw 900ms ease-out forwards; }
@keyframes dc-draw { to { stroke-dashoffset: 0; } }
@media (prefers-reduced-motion: reduce) { .dc-flow { animation: none; stroke-dashoffset: 0; } }

/* khung bao chung: sơ đồ (--fig, co shadow+padding) va bang cong nghe (--tech, co scroll-x) */
.dc-panel { border: 1px solid var(--line-strong); background: var(--white); }
.dc-panel--fig { box-shadow: 0 12px 32px rgba(16,42,67,0.08); padding: clamp(24px, 3vw, 40px); }
.dc-panel--tech { overflow-x: auto; }

/* Panel man hinh -- HINH MINH HOA CHUC NANG, khong phai anh chup (画面イメージ
   o CasesWorkspace). BAT BUOC kem caption mien tru o .dc-ui-cap. */
.dc-ui { border: 1px solid var(--line-strong); background: var(--white); box-shadow: 0 12px 32px rgba(16,42,67,0.08); overflow: hidden; }
.dc-ui-bar { display: flex; align-items: center; gap: 8px; padding: 12px 18px; background: var(--navy); }
.dc-ui-bar i { width: 10px; height: 10px; border-radius: 50%; background: #3D566E; }
.dc-ui-bar b { margin-left: 8px; font-size: 13px; font-weight: 700; letter-spacing: 0.14em; color: #8FA8BF; }
.dc-ui-body { display: grid; grid-template-columns: 200px 1fr; }
.dc-ui-rail { border-right: 1px solid var(--line); background: var(--surface); padding: 20px 16px; }
.dc-ui-rail p { margin: 0 0 12px; font-size: 12px; font-weight: 700; letter-spacing: 0.16em; color: #7E93A8; }
.dc-ui-rail span { display: block; padding: 9px 12px; font-size: 13px; line-height: 1.6; color: var(--muted); }
.dc-ui-rail span.is-on { background: var(--white); font-weight: 700; color: var(--navy); border-left: 3px solid var(--acc, var(--blue)); }
.dc-ui-rail p + p { margin-top: 20px; }   /* SolutionsSales: rail co 2 nhom (MENU / パイプライン) */
.dc-ui-main { padding: 22px 24px; min-width: 0; }
.dc-ui-hint { display: none; margin: 0 0 10px; font-family: 'Noto Sans JP', sans-serif; font-size: 13px; color: #7E93A8; }
@media (max-width: 760px) { .dc-ui-hint { display: block; } .dc-ui-body { grid-template-columns: 1fr; } .dc-ui-rail { border-right: 0; border-bottom: 1px solid var(--line); } }
.dc-ui-head { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; margin: 0 0 16px; }
.dc-ui-head b { font-size: 16px; font-weight: 700; color: var(--navy); }
.dc-ui-head span { font-size: 12px; font-weight: 700; letter-spacing: 0.06em; color: var(--acc, var(--blue)); background: #EAF2FA; padding: 3px 10px; }
.dc-ui-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.dc-ui-grid { border-collapse: collapse; width: 100%; min-width: 560px; font-size: 13px; }
.dc-ui-grid th { padding: 9px 10px; text-align: left; white-space: nowrap; background: var(--surface-2); border: 1px solid var(--line); font-size: 12px; font-weight: 700; color: #7E93A8; }
.dc-ui-grid td { padding: 9px 10px; border: 1px solid #EDF1F5; line-height: 1.6; color: var(--ink); white-space: nowrap; }
.dc-ui-grid td.free { color: #7E93A8; }
.dc-ui-grid td.busy { background: #EAF2FA; font-weight: 700; color: var(--navy); }
.dc-ui-steps { display: flex; gap: 10px; margin: 18px 0 0; flex-wrap: wrap; }
.dc-ui-steps span { flex: 1 1 130px; border: 1px solid var(--line-strong); border-top: 3px solid var(--blue); padding: 12px 14px; font-family: 'Noto Sans JP', sans-serif; font-size: 13px; line-height: 1.7; color: var(--ink); }
.dc-ui-cap { margin: 14px 0 0; font-family: 'Noto Sans JP', sans-serif; font-size: 13px; line-height: 1.9; color: #7E93A8; }

/* =========================================================================
   PHASE 6 SOLUTIONS -- primitive TAB (画面イメージ, .dc-ui-tabs/.dc-ui-tab)
   + bang gia .dc-ui-table (khac .dc-ui-grid: chu duoc XUONG DONG binh thuong,
   khong nowrap -- noi dung Solutions dai hon nhan CasesWorkspace). Mau "dang
   chon" lay tu --acc (dat inline tren .dc-ui, xem gen-solutions-pages.py) --
   fallback var(--blue) khi khong khai bao (CasesWorkspace khong dat --acc,
   render giu nguyen nhu truoc).
   Khong-JS: .dc-ui-panel nam trong luong tai lieu binh thuong -> CA HAI
   panel hien du (cung cong thuc voi .faq__panel -- xem home-motion.js). */
.dc-ui-tabs { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 18px; }
.dc-ui-tab { min-height: 44px; border: 1px solid var(--line-strong); background: var(--white); padding: 9px 16px; font-family: 'Zen Kaku Gothic New','Noto Sans JP',sans-serif; font-size: 13px; font-weight: 700; color: var(--muted); cursor: pointer; }
.dc-ui-tab.is-on { background: var(--acc, var(--blue)); border-color: var(--acc, var(--blue)); color: var(--white); }
.dc-ui-tab:focus-visible { outline: 2px solid var(--navy); outline-offset: 2px; }
html.js .dc-ui-panel { display: none; }
html.js .dc-ui-panel.is-active { display: block; }
.dc-ui-q { display: flex; align-items: center; gap: 10px; margin: 0 0 16px; border: 1px solid var(--line-strong); background: var(--surface); padding: 13px 15px; font-size: 14px; line-height: 1.6; color: var(--navy); }
.dc-ui-q em { font-style: normal; font-size: 12px; font-weight: 700; letter-spacing: 0.1em; color: var(--acc, var(--blue)); }
.dc-ui-table { border-collapse: collapse; width: 100%; min-width: 440px; font-size: 13px; }
.dc-ui-table th { padding: 10px 12px; text-align: left; white-space: nowrap; background: var(--surface-2); border-bottom: 1px solid var(--line-strong); font-size: 12px; font-weight: 700; letter-spacing: 0.08em; color: #7E93A8; }
.dc-ui-table td { padding: 11px 12px; border-bottom: 1px solid #EDF1F5; line-height: 1.7; color: var(--ink); }
.dc-ui-code { margin: 0; padding: 15px 16px; background: var(--navy); color: #CFE4F7; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 13px; line-height: 1.9; overflow-x: auto; }
.dc-ui-note { margin: 14px 0 0; font-family: 'Noto Sans JP', sans-serif; font-size: 14px; line-height: 1.9; color: var(--muted); }

/* SolutionsSales gian doan -- .dc-ui-flow (7 mieng pipeline mau rieng, giu
   nguyen mau tung mieng theo nguon) + .dc-ui-step (danh sach buoc auto-run). */
.dc-ui-flow { display: flex; margin: 0 0 18px; min-width: 760px; }
.dc-ui-flow > div { flex: 1 1 0; padding: 12px 10px 12px 22px; clip-path: polygon(0 0, calc(100% - 12px) 0, 100% 50%, calc(100% - 12px) 100%, 0 100%, 12px 50%); }
.dc-ui-flow > div:first-child { clip-path: polygon(0 0, calc(100% - 12px) 0, 100% 50%, calc(100% - 12px) 100%, 0 100%); padding-left: 14px; }
.dc-ui-flow > div:last-child { clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%, 12px 50%); }
.dc-ui-flow strong { display: block; font-size: 17px; font-weight: 900; line-height: 1.3; }
.dc-ui-flow em { display: block; font-style: normal; margin-top: 3px; font-size: 11px; line-height: 1.4; white-space: nowrap; }
.dc-ui-step { display: flex; gap: 14px; padding: 14px 0; border-bottom: 1px solid #EDF1F5; }
.dc-ui-step > b { flex: 0 0 76px; font-size: 12px; font-weight: 700; letter-spacing: 0.08em; color: var(--acc, var(--blue)); }
.dc-ui-step > div { min-width: 0; }
.dc-ui-step h4 { margin: 0 0 4px; font-size: 14px; font-weight: 700; line-height: 1.6; color: var(--navy); }
.dc-ui-step p { margin: 0; font-family: 'Noto Sans JP', sans-serif; font-size: 13px; line-height: 1.8; color: var(--muted); }

/* Bang thuoc tinh du an (業種/規模/体制/担当範囲) -- 1 cot o kho hep, 2 cot tu tablet */
.dc-meta { margin: 0; display: grid; grid-template-columns: 1fr; gap: 0; border-top: 1px solid var(--line-strong); }
.dc-meta > div { display: grid; grid-template-columns: 120px 1fr; gap: 16px; padding: 14px 0; border-bottom: 1px solid var(--line-strong); }
.dc-meta dt { margin: 0; font-family: 'Noto Sans JP', sans-serif; font-size: 13px; font-weight: 700; line-height: 1.85; color: #7E93A8; }
.dc-meta dd { margin: 0; font-family: 'Noto Sans JP', sans-serif; font-size: 15px; line-height: 1.85; color: var(--ink); }
@media (min-width: 900px) { .dc-meta { grid-template-columns: 1fr 1fr; column-gap: 40px; } }

/* Danh sach co cham vuong -- dung cho 課題 / 取り組み / 成果 */
.dc-list { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 14px; }
.dc-list li { position: relative; padding-left: 22px; font-family: 'Noto Sans JP', sans-serif; font-size: 16px; line-height: 2; color: var(--muted); }
.dc-list li::before { content: ''; position: absolute; left: 0; top: 13px; width: 9px; height: 9px; background: var(--blue); }
.dc-list li b { color: var(--navy); }

/* Bang cong nghe (技術スタック) */
.dc-tech { width: 100%; border-collapse: collapse; }
.dc-tech th, .dc-tech td { padding: 14px 16px; text-align: left; vertical-align: top; border-bottom: 1px solid #EDF1F5; font-family: 'Noto Sans JP', sans-serif; line-height: 1.85; }
.dc-tech th { width: 200px; font-size: 13px; font-weight: 700; letter-spacing: 0.04em; color: #7E93A8; background: var(--surface); white-space: normal; }
.dc-tech td { font-size: 15px; color: var(--ink); }
@media (max-width: 680px) { .dc-tech th, .dc-tech td { display: block; width: auto; border-bottom: 0; } .dc-tech td { padding-top: 0; border-bottom: 1px solid #EDF1F5; } }

/* Breadcrumb link (Cases* dung <a>+separator, Contact chi dung chu tinh) */
.bcrumb a { color: #7E93A8; text-decoration: none; }
.bcrumb a:hover { color: var(--blue); }

/* Hero 1 cot + <dl class="dc-meta"> cho 10 trang case chi tiet; hero to hon
   danh cho trang hub (Cases.html), dung lai duoc cho Services/Solutions hub. */
.hero--meta .subhero__in { max-width: 960px; }
.hero--meta .dc-meta { max-width: 920px; margin-top: clamp(28px, 3vw, 40px); }
.subhero--hub { padding: clamp(48px, 5vw, 72px) 0 clamp(36px, 3.6vw, 52px); }
.subhero--hub .subhero__in { max-width: 960px; }
.subhero--hub .subhero__h1 { font-size: clamp(24px, 3.2vw, 42px); }

/* CTA band -- navy full-bleed, h2 + 1 nut .btn. Byte-identical 24/24 trang,
   stamp qua partials/cta-band.html giong nav/footer (xem stamp-partials.py). */
.cta-band { background: var(--navy); color: var(--white); }
.cta-band__in { display: flex; align-items: center; justify-content: space-between; gap: 28px; flex-wrap: wrap; padding-block: clamp(36px, 3.6vw, 52px); }
.cta-band__h2 { margin: 0; font-size: clamp(19px, 2.1vw, 26px); line-height: 1.6; font-weight: 700; }

/* Related-links 3-up (関連リンク), dung o 22/24 trang */
.rel3 { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, max(30%, 240px)), 1fr)); gap: 24px; }
.rel3__card { background: var(--white); border: 1px solid var(--line-strong); padding: 28px 26px; text-decoration: none; display: flex; flex-direction: column; gap: 10px; transition: box-shadow var(--dur-3) var(--ease-soft); }
.rel3__card:hover { box-shadow: 0 12px 32px rgba(16,42,67,0.08); }
.rel3__tag { font-size: 14px; font-weight: 700; letter-spacing: 0.18em; color: var(--blue); }
.rel3__label { font-size: 18px; font-weight: 700; line-height: 1.6; color: var(--navy); }

/* Link mui ten nho (詳細資料 va link trong .dc-case), gach chan mo bang box-shadow */
.dc-link { display: inline-flex; align-items: center; min-height: 44px; gap: 8px; font-size: 15px; font-weight: 700; color: var(--blue); text-decoration: none; box-shadow: inset 0 -1px 0 var(--on-dark-muted); }
.dc-link:hover { color: var(--navy); }
.dc-link--lg { gap: 10px; font-size: 16px; }

/* The case (Cases.html hub, muc 事例一覧) -- nhan linh vuc + dl thuoc tinh + ul thanh qua */
.grid--cases { grid-template-columns: repeat(auto-fit, minmax(min(100%, max(30%, 330px)), 1fr)); }
.dc-case { border: 1px solid var(--line-strong); background: var(--white); box-shadow: 0 12px 32px rgba(16,42,67,0.08); padding: 28px 26px; display: flex; flex-direction: column; gap: 14px; }
.dc-case-tag { align-self: flex-start; font-size: 12px; font-weight: 700; letter-spacing: 0.1em; color: var(--blue); background: #EAF2FA; padding: 5px 12px; }
.dc-case h3 { margin: 0; font-size: 18px; font-weight: 700; line-height: 1.6; color: var(--navy); }
.dc-case p { margin: 0; font-family: 'Noto Sans JP', sans-serif; font-size: 15px; line-height: 1.95; color: var(--muted); }
.dc-case dl { margin: 0; display: grid; grid-template-columns: auto 1fr; gap: 6px 14px; font-family: 'Noto Sans JP', sans-serif; font-size: 13px; line-height: 1.8; }
.dc-case dt { margin: 0; font-weight: 700; color: #7E93A8; white-space: nowrap; }
.dc-case dd { margin: 0; color: var(--ink); }
.dc-case ul { margin: 0; padding: 16px 0 0; list-style: none; border-top: 1px solid #EDF1F5; display: flex; flex-direction: column; gap: 8px; }
.dc-case li { position: relative; padding-left: 18px; font-family: 'Noto Sans JP', sans-serif; font-size: 14px; line-height: 1.85; color: var(--ink); }
.dc-case li::before { content: ''; position: absolute; left: 0; top: 10px; width: 8px; height: 8px; background: var(--blue); }

/* =========================================================================
   ABOUT (会社概要) — Phase 4. Nguon: design-source/About.dc.html.
   Hero 2 cot + 会社概要 dl-anh dung lai .grid.grid--2; 3つの組織文化 +
   エコシステム dung lai .grid.grid--3 / .grid--4. Chi rieng .culture-card /
   .co-profile / .bod-* / .eco-col la moi, vi khong co utility co san khop.
   ========================================================================= */

/* 3つの組織文化 — 3 the vien. O anh: 2026-09-24 doi tu ICON 104px canh trai sang
   ANH CHUP THAT (culture-learning 700x525 / culture-amoeba 700x467 /
   culture-agile 700x933). Khung 4:3 full be rong the + cover/center de 3 the
   cung chieu cao du ty le file goc khac nhau; 4:3 khop cac anh khac o About
   (office-team-meeting, expo-japan-booth-*). Chi About.html dung class nay. */
.culture-card { border: 1px solid var(--line-strong); background: var(--white); padding: 32px 28px; }
.culture-card__fig { aspect-ratio: 4 / 3; margin-bottom: 20px; overflow: hidden; }
.culture-card__fig img { width: 100%; height: 100%; object-fit: cover; object-position: center; display: block; }
.culture-card h3 { margin: 0 0 14px; font-size: 19px; font-weight: 700; color: var(--navy); }
.culture-card p { margin: 0; font-family: 'Noto Sans JP', sans-serif; font-size: 16px; line-height: 2.05; color: var(--muted); }

/* 会社概要 — dl 8 dong nhan/gia tri, LUON 1 cot (khac .dc-meta cua Cases: khong
   chia 2 cot o >=900px, day la bang thong tin cong ty co dinh, khong phai
   thuoc tinh du an). border-bottom dat tren chinh .co-profile de dong bang
   duoi cung, khong can :last-of-type rieng cho dt/dd. */
.co-profile { margin: 0; display: grid; grid-template-columns: minmax(110px, 150px) 1fr; font-family: 'Noto Sans JP', sans-serif; font-size: 16px; line-height: 2; border-bottom: 1px solid var(--line); }
.co-profile dt { padding: 16px 0; border-top: 1px solid var(--line); font-weight: 700; color: var(--navy); }
.co-profile dd { margin: 0; padding: 16px 0; border-top: 1px solid var(--line); color: var(--muted); }

/* 役員一覧 — grid long TREN CUNG mot dinh nghia track: outer 2 nhom (span 2 /
   span 3), moi nhom lap lai CUNG .bod-grid o grid con (.bod-group__inner).
   auto-fill (KHONG PHAI auto-fit) LA LOAD-BEARING: doi sang auto-fit se lam
   nhom 2 the gian rong lap het khong gian thay vi giu dung 2 cot 200px.
   grid-auto-rows:1fr + align-items:stretch (ca outer lan inner) la thu thuc
   su ep 5 the cao bang nhau xuyen 2 nhom. Xem Key Insight #3,
   phase-04-about-and-blog.md — DUNG sua auto-fill thanh auto-fit "cho gon". */
.bod-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 200px), 1fr)); gap: clamp(20px, 2.2vw, 32px) 12px; align-items: stretch; }
.bod-group { grid-column: span 2; min-width: 0; display: flex; flex-direction: column; }
.bod-group__label { margin: 0 0 14px; padding-bottom: 10px; border-bottom: 1px solid var(--line-strong); font-size: 15px; font-weight: 700; letter-spacing: 0.12em; color: var(--muted); }
.bod-group__inner { flex: 1; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 200px), 1fr)); grid-auto-rows: 1fr; gap: 12px; align-items: stretch; align-content: stretch; }
.bod-card { display: flex; flex-direction: column; background: var(--white); border: 1px solid var(--line-strong); }
/* nen mac dinh var(--surface-2); Thuong la ngoai le nen trang (anh nen trong suot),
   ghi de bang inline style tren chinh the do, khong can modifier rieng. */
.bod-card__fig { aspect-ratio: 1 / 1; background: var(--surface-2); overflow: hidden; }
.bod-card__fig img { width: 100%; height: 100%; object-fit: cover; object-position: center top; display: block; }
.bod-card__body { display: flex; flex-direction: column; gap: 5px; padding: 16px 14px 20px; text-align: center; }
.bod-card__body h3 { margin: 0; font-size: 18px; font-weight: 700; line-height: 1.4; color: var(--navy); }
.bod-card__role { margin: 0; font-family: 'Noto Sans JP', sans-serif; font-size: 14px; line-height: 1.7; color: var(--muted); }
.bod-card__school { margin: 0; font-family: 'Noto Sans JP', sans-serif; font-size: 14px; line-height: 1.7; color: #7E93A8; }

/* 関連事業・エコシステム — tai dung .grid.grid--4 cho khung ngoai, logo 88px canh trai */
.eco-col { display: flex; flex-direction: column; gap: 20px; }
.eco-col__fig { height: 88px; display: flex; align-items: center; justify-content: flex-start; }
.eco-col__fig img { max-width: 100%; max-height: 100%; object-fit: contain; object-position: left; display: block; }
.eco-col h3 { margin: 0 0 8px; font-size: 18px; font-weight: 700; color: var(--navy); }
.eco-col p { margin: 0; font-family: 'Noto Sans JP', sans-serif; font-size: 15px; line-height: 1.9; color: var(--muted); text-wrap: pretty; }

/* =========================================================================
   BLOG (お役立ち情報) — Phase 4. Nguon: khoi <style> trong
   design-source/Blog.dc.html (sinh boi gen-blog-page.py) — GIU NGUYEN ten
   class dc-post*/dc-chip*/dc-page* de khop 1-1 voi ban da duyet, cung quy
   uoc voi khoi CASES o tren. Chip loc + phan trang giu TINH (D4) — bam
   khong lam gi, dung pham vi prototype. The bai dung .grid.grid--cases
   (tai dung tu Cases hub, nguong minmax gan tuong duong 300px cua nguon).
   ========================================================================= */
.dc-post { display: flex; flex-direction: column; background: var(--white); border: 1px solid var(--line-strong); text-decoration: none; overflow: hidden; transition: box-shadow var(--dur-3) var(--ease-soft); }
.dc-post:hover { box-shadow: 0 12px 32px rgba(16,42,67,0.08); }
.dc-post-thumb { display: block; background: #EDF1F5; }
.dc-post-body { display: flex; flex-direction: column; gap: 12px; padding: 22px 24px 26px; }
.dc-post-meta { display: flex; align-items: center; gap: 12px; font-family: 'Noto Sans JP', sans-serif; font-size: 13px; color: #7E93A8; }
.dc-post-cat { font-size: 12px; font-weight: 700; letter-spacing: 0.1em; color: var(--blue); background: #EAF2FA; padding: 5px 12px; }
.dc-post-title { font-size: 17px; font-weight: 700; line-height: 1.7; color: var(--navy); }
.dc-post:hover .dc-post-title { color: var(--blue); }

.dc-chip { display: inline-flex; align-items: center; min-height: 44px; padding: 0 20px; font-size: 14px; font-weight: 700; letter-spacing: 0.04em; text-decoration: none; border: 1px solid var(--line-strong); background: var(--white); color: var(--muted); }
.dc-chip[aria-current="true"] { background: var(--navy); border-color: var(--navy); color: var(--white); }
.dc-chip-count { margin-left: 8px; font-weight: 400; opacity: 0.75; }

.dc-page { display: inline-flex; align-items: center; justify-content: center; min-width: 44px; min-height: 44px; padding: 0 8px; font-size: 15px; font-weight: 700; text-decoration: none; border: 1px solid var(--line-strong); background: var(--white); color: var(--muted); }
.dc-page[aria-current="page"] { background: var(--navy); border-color: var(--navy); color: var(--white); }
.dc-page-gap { display: inline-flex; align-items: flex-end; min-height: 44px; padding: 0 4px; color: #9BB0C4; }

/* =========================================================================
   SERVICES — Phase 5. Nguon: khoi <style> lap lai o ca 9 file
   design-source/Services*.dc.html — GIU NGUYEN ten class (dc-jump/dc-term/
   dc-imgslot) de khop 1-1 voi thiet ke da duyet, cung quy uoc voi khoi CASES
   o tren. .faq/.disclosure la 2 primitive MOI o phase nay (tai dung Phase 6).
   ========================================================================= */

/* Muc luc trong trang (提供内容全体像 kiem muc luc) -- lap lai bang HTML thuc
   su ben duoi svg, vi role="img" tren <svg> an het link con khoi screen
   reader (xem .dc-fig o khoi CASES phia tren). */
.dc-jump { display: flex; flex-wrap: wrap; gap: 8px 28px; margin: 18px 0 0; padding: 0; list-style: none; }
.dc-jump a { display: inline-flex; align-items: center; min-height: 44px; font-family: 'Noto Sans JP', sans-serif; font-size: 16px; color: var(--blue); text-decoration: none; box-shadow: inset 0 -1px 0 var(--on-dark-muted); }
.dc-jump a:hover { color: var(--navy); }

/* Chu thich thuat ngu cho khach khong ranh cong nghe -- button + :focus-within,
   KHONG hover-only (nav tung chet tren cam ung vi onMouseEnter, cung ly do
   voi .hdr__drop). Duoi 900px neo popup vao DOAN VAN (.dc-hasterm), khong neo
   vao chu -- neo vao chu cuoi dong se day popup tran ngang. */
.dc-term { position: relative; display: inline-block; }
.dc-term-btn { appearance: none; background: none; border: 0; margin: 0; padding: 6px 2px; font: inherit; color: var(--blue); cursor: pointer; box-shadow: inset 0 -1px 0 #9BB0C4; display: inline-flex; align-items: center; gap: 5px; }
.dc-term-q { display: inline-flex; align-items: center; justify-content: center; width: 16px; height: 16px; border-radius: 999px; background: var(--blue); color: var(--white); font-size: 11px; line-height: 1; flex: 0 0 auto; }
.dc-term-pop { display: none; position: absolute; left: 0; top: 100%; z-index: 20; width: min(340px, calc(100vw - 48px)); background: var(--white); border: 1px solid var(--line-strong); box-shadow: 0 12px 32px rgba(16,42,67,0.16); padding: 16px 18px; font-family: 'Noto Sans JP', sans-serif; font-size: 14px; font-weight: 400; line-height: 1.9; color: var(--ink); text-align: left; }
.dc-term:focus-within .dc-term-pop { display: block; }
@media (hover: hover) { .dc-term:hover .dc-term-pop { display: block; } }
@media (max-width: 899px) {
  .dc-hasterm { position: relative; }
  .dc-term { position: static; }
  .dc-term-pop { left: 0; right: 0; width: auto; top: 100%; margin-top: 8px; }
}

/* Khung anh cho 「要差し替え」-- amber (mau hover cua nut CTA, khong xuat hien
   noi nao khac duoi dang mang nen) de nhin luot la thay ngay cho chua xong. */
.dc-imgslot { border: 1px dashed var(--on-dark-muted); background: var(--surface-2); display: flex; flex-direction: column; justify-content: center; gap: 10px; padding: 28px 26px; min-height: 260px; }
.dc-imgslot-tag { align-self: flex-start; font-size: 14px; font-weight: 700; letter-spacing: 0.12em; color: var(--navy); background: var(--amber); padding: 4px 12px; }
.dc-imgslot-title { font-size: 16px; font-weight: 700; line-height: 1.6; color: var(--navy); }
.dc-imgslot-note { font-family: 'Noto Sans JP', sans-serif; font-size: 14px; line-height: 1.9; color: var(--muted); }

/* Nut CTA dac navy dung trong hero cac trang Services con (nguoc mau voi
   .btn mac dinh la nen trang chu navy dat tren nen toi). */
.btn--navy { background: var(--navy); color: var(--white); border-color: var(--navy); }
.btn--navy:hover { background: var(--blue); border-color: var(--blue); }

/* --- FAQ accordion (moi Phase 5, tai dung Phase 6 Solutions) ------------
   KHONG-JS: .faq__panel nam trong luong tai lieu binh thuong (khong
   display:none tinh) -- moi cau tra loi hien du. JS bat lop .js tren <html>
   (xem home-motion.js) roi moi an di; an bang CSS tinh la cong thuc trang
   trang khi JS loi/tat, nen KHONG lam vay. */
.faq { max-width: 960px; }
.faq__item { border-top: 1px solid var(--line); }
.faq__item:last-child { border-bottom: 1px solid var(--line); }
.faq__q { width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 16px; background: none; border: 0; padding: 22px 0; cursor: pointer; font-family: 'Zen Kaku Gothic New', 'Noto Sans JP', sans-serif; font-size: 17px; font-weight: 700; color: var(--navy); text-align: left; }
.faq__mark { flex: 0 0 auto; font-size: 15px; color: var(--muted); }
.faq__panel { margin: 0; padding: 0 0 24px; max-width: 860px; font-family: 'Noto Sans JP', sans-serif; font-size: 16px; line-height: 2; color: var(--muted); }
.faq__panel p { margin: 0; }
html.js .faq__panel { display: none; }
html.js .faq__item.is-open .faq__panel { display: block; }

/* --- Disclosure (その他のサービス, hub) ----------------------------------
   <details> native: mac dinh DONG khong can JS gi ca, ban phim/AT dung duoc
   ngay, cung co che voi .ftr__eco o footer nhung doi mau cho nen sang. */
.disclosure { border-top: 1px solid var(--line); }
.disclosure__summary { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 44px; padding: 20px 0; cursor: pointer; font-family: 'Zen Kaku Gothic New', 'Noto Sans JP', sans-serif; font-size: 18px; font-weight: 700; color: var(--navy); list-style: none; }
.disclosure__summary::-webkit-details-marker { display: none; }
.disclosure__summary::after { content: "開く ▼"; flex: 0 0 auto; font-size: 15px; font-weight: 400; color: var(--muted); }
.disclosure[open] .disclosure__summary::after { content: "閉じる ▲"; }
.disclosure__panel { padding: 32px clamp(24px, 3vw, 40px); display: flex; flex-direction: column; gap: 18px; background: #F4F6F9; }
.disclosure__panel a { display: flex; gap: 14px; align-items: baseline; text-decoration: none; }
.disclosure__panel a:hover { color: var(--blue); }
.disclosure__dot { width: 6px; height: 6px; background: #9BB0C4; flex: 0 0 auto; }
.disclosure__link-text { font-family: 'Noto Sans JP', sans-serif; font-size: 16px; line-height: 1.9; color: var(--ink); }
