:root{
  --navy:#071d4a;--navy-2:#0b2a6f;--blue:#0a5fd7;--blue-2:#1677ff;--cyan:#2ec4ff;--sky:#e8f1ff;--sky-2:#d6e6ff;
  --ink:#0f1f3d;--muted:#5b6b85;--line:#e3e9f3;--bg:#f4f7fc;--card:#fff;--gold:#f4b400;--red:#d64545;--ok:#2fb344;--gray:#9aa3b2;
  /* Bảng màu chủ đạo — Ngày hội Tây Ninh 2026
     Xanh công nghệ #0066FF · Xanh tăng trưởng #00B060 · Xanh đậm #003ABC
     Trắng sáng #F5FAFF · Vàng bình minh #FFC247 */
  --bd-blue:#0066ff;--bd-green:#00b060;--bd-navy:#003abc;--bd-white:#f5faff;--bd-gold:#ffc247;
  --radius:14px;--shadow:0 8px 28px rgba(7,29,74,.08);--shadow-2:0 14px 40px rgba(7,29,74,.14);
  /* Phông chữ hệ thống — ExtraBold cho tiêu đề chính,
     SemiBold cho tiêu đề phụ, Regular cho nội dung. */
  font-family:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);line-height:1.6;font-size:15.5px}
a{color:var(--blue);text-decoration:none}
img{max-width:100%;display:block}
h1,h2,h3,h4{line-height:1.25;margin:0 0 .5em}
.container{width:min(1680px,calc(100% - max(7vw,32px)));margin:0 auto;padding:0}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 22px;border-radius:10px;font-weight:700;border:0;cursor:pointer;transition:.2s;font-size:15px;font-family:inherit;line-height:1.2}
.btn-primary{background:linear-gradient(135deg,#1677ff,#0a5fd7);color:#fff;box-shadow:0 6px 18px rgba(22,119,255,.35)}
.btn-primary:hover{transform:translateY(-1px);box-shadow:0 10px 24px rgba(22,119,255,.45)}
.btn-outline{border:1.5px solid var(--blue);color:var(--blue);background:transparent}
.btn-outline:hover{background:var(--sky)}
.btn-light{border:1.5px solid rgba(255,255,255,.7);color:#fff;background:rgba(255,255,255,.08);backdrop-filter:blur(4px)}
.btn-light:hover{background:rgba(255,255,255,.18)}
.btn-white{background:#fff;color:var(--blue)}
.btn-blue{background:var(--blue);color:#fff}
.btn-blue:hover{background:#084bb0}
.btn[hidden]{display:none}
.btn-sm{padding:8px 14px;font-size:13.5px;border-radius:8px}
.btn-danger{background:var(--red);color:#fff}
.btn-ghost{background:#eef2f8;color:var(--ink)}
.btn[disabled]{opacity:.5;cursor:not-allowed;transform:none}
.ic{width:1.15em;height:1.15em;flex:none;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}

/* header */
.site-header{position:sticky;top:0;z-index:50;background:linear-gradient(90deg,#061a45,#0b2a6f 60%,#0d3a8f);box-shadow:0 2px 14px rgba(0,0,0,.25)}
.site-header .container{display:flex;align-items:center;justify-content:space-between;height:72px;gap:16px;transition:height .3s}
.site-header.scrolled .container{height:62px}
.site-header.scrolled{box-shadow:0 6px 24px rgba(0,0,0,.35)}
.logo-svg{height:44px;width:auto;display:block}
.logo{display:flex;flex-direction:column;align-items:flex-start;gap:2px;line-height:1}
.logo img{height:30px;width:auto;display:block}
.logo span{font-size:11px;font-weight:800;letter-spacing:2.2px;color:#7fd4ff;padding-left:2px}
.logo span em{font-style:normal;color:#2ec4ff}
.logo.lg img{height:40px}.logo.lg span{font-size:15px;letter-spacing:3px}
.brand{display:flex;align-items:center}
.brand-lock{display:flex;align-items:center;gap:10px}
.brand-lock img{height:var(--lh);width:auto;flex:none}
.brand-txt{display:flex;flex-direction:column;gap:3px;line-height:1.15;text-transform:uppercase;letter-spacing:.06em}
.brand-txt b{font-size:calc(var(--lh)*.33);font-weight:800;color:#fff}
.brand-txt i{font-size:calc(var(--lh)*.3);font-style:normal;font-weight:700;color:#7fd4ff;letter-spacing:.1em}
.brand-txt.dark b{color:var(--bd-navy)}.brand-txt.dark i{color:var(--blue)}
@media(max-width:600px){.brand-txt b{font-size:12px}.brand-txt i{font-size:11px}}
.nav{display:flex;gap:2px;align-items:center;background:#fff;border-radius:999px;padding:4px}
.nav a{padding:8px 16px;border-radius:999px;font-weight:600;color:var(--navy);font-size:14px;white-space:nowrap}
.nav a:hover,.nav a.active{background:var(--sky);color:var(--blue)}
.nav a.cta{background:linear-gradient(135deg,#1677ff,#0a5fd7);color:#fff}
.nav-toggle{display:none;background:none;border:0;font-size:26px;cursor:pointer;color:#fff}
/* 1120px chứ không phải 900px: thanh điều hướng có 8 mục cộng khối Ủy ban nhân dân,
   đo thực tế cần khoảng 1030px mới đủ chỗ. Để 900px thì từ ~920px đến ~1110px
   thanh này hiện ra mà không vừa, tràn ngang — dải đó gồm cả iPad nằm ngang 1024px. */
@media(max-width:1120px){
  .nav{display:none;position:absolute;top:66px;left:12px;right:12px;flex-direction:column;padding:10px;border-radius:14px;box-shadow:var(--shadow-2);align-items:stretch}
  .nav a{text-align:center}.nav.open{display:flex}.nav-toggle{display:block}
}

/* hero */
.hero{position:relative;color:#fff;background:#071d4a;min-height:clamp(380px,34vw,520px);display:flex;align-items:center;overflow:hidden}
.hero .bg{position:absolute;inset:-8% 0;background:center/cover no-repeat;will-change:transform;z-index:0}
/* Ảnh banner trang chủ. Đặt trong CSS chứ không để style nội dòng, vì style nội dòng
   thắng mọi quy tắc trong tệp nên không đổi được ảnh theo bề rộng màn hình.
   Máy tính dùng ảnh ngang 2880x960; điện thoại tải ảnh dọc 1200x1420 riêng,
   vừa hợp khung vừa nhẹ hơn, và trình duyệt chỉ tải đúng một trong hai ảnh. */
.hero .bg.bg-home{background-image:url(/img/banner_home.jpg);background-position:center 45%}
@media(max-width:640px){
  .hero .bg.bg-home{background-image:url(/img/banner_home_m.jpg);background-position:center top}
}
.hero canvas.particles{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:0;opacity:.7}
/* z-index:1 là bắt buộc. Ảnh nền .bg có z-index:0 còn ::before để auto, hai bên cùng tầng
   nên trình duyệt vẽ theo thứ tự trong cây: ảnh nền đè lên chính lớp phủ này, làm nó vô hiệu.
   .container cũng z-index:1 và đứng sau nên chữ vẫn nằm trên cùng. */
.hero::before{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(90deg,rgba(6,22,60,.92) 0%,rgba(6,22,60,.72) 40%,rgba(6,22,60,.15) 75%,rgba(6,22,60,.05) 100%)}
.hero .container{position:relative;z-index:1;padding:44px 0}
/* Ảnh nền một số trang sáng và nhiều chi tiết ở giữa khung, phủ đậm thêm cho chữ đọc rõ. */
.hero.shade::before{background:linear-gradient(90deg,rgba(6,22,60,.96) 0%,rgba(6,22,60,.93) 52%,rgba(6,22,60,.74) 74%,rgba(6,22,60,.45) 100%)}
.hero.shade .slogan,.hero.shade .pill{text-shadow:0 2px 10px rgba(0,0,0,.45)}
/* ===== Màn hình đầu trang chủ: nền sáng, nội dung căn giữa, chữ màu xanh đậm =====
   Dựng theo mẫu banner của tỉnh: quốc huy, tên cơ quan, tên ngày hội, khẩu hiệu. */
.hero.hero-cover{color:var(--navy);min-height:clamp(380px,34vw,520px);text-align:center}
/* Phóng và đẩy ảnh xuống để đỉnh núi cùng vùng trời sáng nằm ngay sau khối chữ. */
.hero.hero-cover .bg{background-size:auto 128%;background-position:center 88%}
/* Không phủ trắng cả dải nữa: chỉ toả sáng nhẹ ngay sau khối chữ, giữ ảnh tươi. */
.hero.hero-cover::before{background:radial-gradient(52% 40% at 50% 24%,rgba(255,255,255,.76) 0%,rgba(255,255,255,.48) 42%,rgba(255,255,255,.12) 74%,rgba(255,255,255,0) 100%)}
.hero.hero-cover .container{padding:20px 0 52px;display:flex;flex-direction:column;align-items:center}
/* Tiêu đề dùng ảnh chữ chính thức của bộ nhận diện thay cho chữ tự dựng. */
.hero.hero-cover .eyebrow{font-weight:800;color:var(--bd-green);font-size:clamp(19px,2.45vw,33px);line-height:1.1;letter-spacing:.03em;text-transform:uppercase;margin:0}
.hero.hero-cover h1{font-size:clamp(17px,2.85vw,39px);font-weight:800;line-height:1.16;letter-spacing:-.005em;margin:4px 0 0;text-transform:uppercase;color:var(--bd-navy);text-wrap:balance}
@supports (-webkit-background-clip:text) or (background-clip:text){
  .hero.hero-cover h1{background:linear-gradient(170deg,var(--bd-navy) 24%,var(--bd-blue) 100%);-webkit-background-clip:text;background-clip:text;color:transparent}
}
.hero.hero-cover .motto{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:4px 0;margin:20px 0 0;font-size:clamp(13.5px,1.1vw,15.5px);font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:var(--bd-navy)}
.hero.hero-cover .motto span{padding:0 clamp(10px,1.4vw,18px);border-left:1.5px solid rgba(0,58,188,.35);line-height:1.5}
.hero.hero-cover .motto span:first-child{border-left:0}
/* Ngày giờ và địa điểm nằm trên phần ảnh phong cảnh nhiều chi tiết,
   nên đặt trong thẻ nền trắng mờ cho chắc chắn đọc được. */
.hero.hero-cover .meta{justify-content:center;margin:18px 0 26px;gap:10px 14px;font-size:clamp(14px,1.05vw,17px)}
.hero.hero-cover .meta div{background:#fff;border:1px solid rgba(0,58,188,.18);border-radius:999px;padding:8px 18px;color:var(--bd-navy);font-weight:700}
.hero.hero-cover .meta .ic{color:#127a43}
.hero.hero-cover .actions{justify-content:center}
.hero.hero-cover .btn-outline{background:#fff;border-color:#0a5fd7;box-shadow:0 6px 18px rgba(7,29,74,.14)}
.hero.hero-cover .btn-outline:hover{background:#fff}
/* Màn hình hẹp: bỏ phóng to, nếu không khung ảnh chỉ còn một dải giữa, mất cả ngọn núi. */
@media(max-width:760px){
  .hero.hero-cover .bg{background-size:cover;background-position:center 62%}
  .hero.hero-cover::before{background:radial-gradient(72% 22% at 50% 15%,rgba(255,255,255,.5) 0%,rgba(255,255,255,.26) 55%,rgba(255,255,255,0) 100%)}
}
@media(max-width:600px){
  .hero.hero-cover{min-height:0}
  .hero.hero-cover .container{padding:16px 0 28px}
  .hero.hero-cover .motto{flex-direction:column;gap:5px;margin-top:22px;line-height:1.45}
  .hero.hero-cover .motto span{border-left:0;padding:0}
}
.hero .kicker{font-size:13px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;color:#cfe3ff;margin-bottom:10px}
.hero .kicker span{display:block;color:#9fd3ff;letter-spacing:.8px;font-size:12px}
.hero h1{font-size:clamp(34px,4.5vw,74px);font-weight:900;letter-spacing:-.5px;line-height:1.04;margin:0;text-shadow:0 4px 24px rgba(0,0,0,.45)}
.hero h1 .t1{display:block;color:#fff}
.hero h1 .t2{display:block;font-size:1em;margin-top:2px}
.hero .hero-logo{height:1em;width:auto;display:block;margin:0 0 .12em .02em;filter:drop-shadow(0 4px 18px rgba(0,0,0,.45))}
.hero .hero-logo.inline{display:inline-block;height:.95em;vertical-align:-.08em;margin:0 .18em 0 0}
.hero h1 .t2 em{font-style:normal;color:var(--cyan)}
/* Dòng chủ đề dưới chữ NGÀY HỘI: dài hơn nên đặt cỡ nhỏ hơn để cân với dòng trên. */
.hero h1 .t2.subject{font-size:.44em;font-weight:800;letter-spacing:-.01em;line-height:1.18;margin-top:.2em;color:#fff}
/* Phông Aachen Bold (bản đã Việt hoá, do đơn vị thiết kế cung cấp) —
   chỉ dùng cho hai chữ NGÀY HỘI trên banner, đúng như bản in.
   Khai báo dải 400–700 để trình duyệt không tự làm đậm giả. */
@font-face{font-family:'Aachen Bold';src:url(/fonts/aachen-bold.woff2) format('woff2');
  font-weight:400 700;font-style:normal;font-display:swap}
/* Chữ NGÀY HỘI: phông riêng + chuyển sắc vàng kim theo bộ nhận diện in ấn.
   Chỉ áp cho chữ mang lớp .gold, không áp cho tên trang ở banner các trang con. */
.hero h1 .gold{font-family:'Aachen Bold',system-ui,sans-serif;letter-spacing:0;color:var(--bd-gold);
  /* Dấu tiếng Việt của phông này vươn cao hơn khung nền. Nới khung ra rồi bù bằng lề âm,
     nếu không thì phần dấu nằm ngoài vùng tô và bị mất khi cắt nền theo hình chữ. */
  /* Lề trên/dưới lệch nhau có chủ đích: bù cho chỉ số dòng của phông Aachen,
     để khoảng trống nhìn thấy phía trên và phía dưới chữ bằng nhau. */
  padding:.3em 0 .18em;margin:-.226em 0 -.254em;
  /* Bóng chữ được vẽ ĐÈ lên lớp chuyển sắc nên làm đục màu vàng.
     Dùng bóng đổ theo hình khối, nó nằm phía sau nên màu vẫn sạch. */
  text-shadow:none;filter:drop-shadow(0 3px 10px rgba(0,0,0,.45))}
@supports (-webkit-background-clip:text) or (background-clip:text){
  .hero h1 .gold{background:linear-gradient(180deg,#fff3c9 20%,#ffdc78 43%,#f7ad2c 68%,#e2871a 88%);
    -webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent}
}
@media(max-width:640px){.hero h1 .t2.subject{font-size:.5em}}
.hero .sub{font-size:clamp(16px,1.35vw,22px);font-weight:700;margin:16px 0 8px;color:#fff}
.hero .meta{display:flex;flex-wrap:wrap;gap:8px 26px;margin:10px 0 14px;font-weight:700;font-size:clamp(15px,1.15vw,19px)}
.hero .meta div{display:flex;align-items:center;gap:8px}
/* Ngày và địa điểm bọc trong viên trắng cho nổi lên trên nền ảnh.
   text-shadow:none để không dính bóng chữ trắng của khối màn nhỏ phía dưới. */
.hero .meta{gap:10px 12px}
.hero .meta div{background:#fff;border-radius:999px;padding:9px 20px;color:var(--bd-navy);
  box-shadow:0 4px 14px rgba(3,18,55,.30);text-shadow:none;line-height:1.3}
.hero .meta .ic{color:var(--bd-blue)}
.hero .meta div:last-child .ic{color:var(--bd-green)}
.hero .slogan{max-width:620px;color:#dbe8ff;font-size:clamp(14px,1.05vw,17px);margin:0 0 26px}
.hero .actions{display:flex;gap:12px;flex-wrap:wrap}
.hero .pills{display:flex;gap:12px;flex-wrap:wrap;margin:24px 0 28px}
.hero .pill{display:flex;gap:10px;align-items:center;background:rgba(6,22,60,.66);border:1px solid rgba(255,255,255,.3);border-radius:12px;padding:10px 16px;backdrop-filter:blur(10px);box-shadow:0 6px 18px rgba(0,0,0,.25)}
.hero .pill .ic{color:var(--cyan);width:22px;height:22px}
.hero .pill b{display:block;font-size:15px;line-height:1.1}.hero .pill span{font-size:12px;opacity:.85}
.hero.compact h1{font-size:clamp(34px,4.6vw,60px)}
.hero.compact h1 .t2{font-size:.6em;margin-top:10px;letter-spacing:.5px}
.hero.compact .slogan{margin:18px 0 0}

/* quick stats */
.quick{margin-top:22px;position:relative;z-index:2}
.quick .grid{gap:16px}
.qcard{background:linear-gradient(135deg,#eaf2ff,#f3f8ff);border-radius:16px;box-shadow:0 6px 20px rgba(10,95,215,.08);border:1px solid #d6e4fb;padding:20px 22px;display:flex;gap:14px;align-items:center;transition:.25s;min-width:0}
.qcard:hover{transform:translateY(-4px);box-shadow:var(--shadow-2)}
.qcard .ib{width:62px;height:62px;border-radius:50%;background:#dbe8ff;color:var(--blue);display:grid;place-items:center;flex:none}
.qcard .ib .ic{width:30px;height:30px}
.qcard b{display:block;font-size:clamp(18px,1.4vw,26px);color:#1548b8;line-height:1.15;font-weight:800;white-space:nowrap}
.qcard b.wrap{white-space:normal}
.qcard small{display:block;font-size:14px;color:#1f2a44}

/* sections */
section.block{padding:56px 0}
section.block.alt{background:#fff}
section.block.tight{padding:36px 0}
.section-head{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;flex-wrap:wrap;margin-bottom:24px}
.section-head h2{font-size:clamp(20px,2vw,28px);font-weight:800;color:#1548b8;text-transform:uppercase;letter-spacing:.3px;margin:0}
.section-head h2 small{display:block;text-transform:none;letter-spacing:0;font-weight:500;color:var(--muted);font-size:14px;margin-top:4px}
.section-head .tag{color:var(--blue);font-weight:700;text-transform:uppercase;letter-spacing:1.5px;font-size:12px}
.section-head a.more{font-weight:700;font-size:14px;display:inline-flex;align-items:center;gap:6px}
.grid{display:grid;gap:20px}
.grid-5{grid-template-columns:repeat(5,1fr)}.grid-4{grid-template-columns:repeat(4,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-6{grid-template-columns:repeat(6,1fr)}
@media(max-width:1000px){.grid-5,.grid-6{grid-template-columns:repeat(3,1fr)}.grid-4{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){.grid-5,.grid-6{grid-template-columns:repeat(2,1fr)}.grid-4,.grid-3,.grid-2{grid-template-columns:1fr}}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:22px;box-shadow:var(--shadow)}

/* intro */
.intro{display:grid;grid-template-columns:1.2fr 1fr .42fr;gap:40px;align-items:center}
.intro .pic{position:relative;border-radius:18px;overflow:hidden;box-shadow:var(--shadow-2);aspect-ratio:2.3/1}
.intro .btn{align-self:flex-start}
.quote{justify-content:center}
.intro .pic img{width:100%;height:100%;object-fit:cover}
.intro .pic .cap{position:absolute;left:18px;top:18px;background:rgba(7,29,74,.78);color:#fff;font-weight:800;padding:10px 14px;border-radius:10px;font-size:14px;line-height:1.35;text-transform:uppercase;backdrop-filter:blur(4px)}
.intro h2{font-size:clamp(22px,2.05vw,32px);color:#1548b8;font-weight:800;letter-spacing:-.2px}
.intro p{color:#3b4a66;font-size:clamp(14px,1.05vw,16.5px);margin:0 0 18px}
.quote{color:var(--blue);font-style:italic;font-weight:600;text-align:center;font-size:clamp(15px,1.15vw,19px);display:flex;flex-direction:column;align-items:center;gap:30px}
.quote .mountain{width:min(220px,100%);height:auto;opacity:.55}
.quote .mark{font-size:60px;line-height:.6;font-family:Georgia,serif;color:var(--cyan);display:block;margin-bottom:14px}
@media(max-width:960px){.intro{grid-template-columns:1fr}.quote{display:none}}

/* zones */
.zone{background:#fff;border-radius:14px;overflow:hidden;box-shadow:var(--shadow);border:1px solid var(--line);display:flex;flex-direction:column;transition:.2s}
.zone:hover{transform:translateY(-3px);box-shadow:var(--shadow-2)}
.zone .pic{aspect-ratio:16/9;background:#0b2a6f center/cover;position:relative;transition:transform .5s}
.zone:hover .pic{transform:scale(1.03)}
.zone .pic::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(7,29,74,.05),rgba(7,29,74,.55))}
.zone .ib{position:absolute;left:16px;bottom:14px;width:54px;height:54px;border-radius:50%;background:#fff;color:var(--blue);display:grid;place-items:center;z-index:1;box-shadow:0 6px 16px rgba(0,0,0,.25)}
.zone .ib .ic{width:26px;height:26px}
.zone .body{padding:14px 16px 18px;text-align:center}
.zone h3{font-size:clamp(14.5px,1.1vw,17px);font-weight:800;color:#1548b8;margin:0 0 6px}
.zone p{font-size:clamp(12.5px,.9vw,14px);color:var(--muted);margin:0}

/* cta band */
.cta-band{position:relative;color:#fff;border-radius:18px;overflow:hidden;background:#0b2a6f center/cover;min-height:170px;display:flex;align-items:center}
.cta-band::before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(7,29,74,.55),rgba(7,29,74,.85) 40%,rgba(7,29,74,.85) 65%,rgba(7,29,74,.5))}
.cta-band .cta-in{position:relative;z-index:1;padding:36px 40px;display:flex;justify-content:space-between;align-items:center;gap:30px;flex-wrap:wrap;width:100%}
.cta-band.full{border-radius:0;min-height:240px;background-attachment:fixed;background-position:center 30%}
.cta-band.full .cta-in{padding:52px 0;width:min(1680px,calc(100% - max(7vw,32px)));margin:0 auto}
@media(max-width:900px){.cta-band.full{background-attachment:scroll}}
.cta-band .k{font-size:12px;letter-spacing:1.5px;text-transform:uppercase;color:#9fd3ff;font-weight:700}
.cta-band h2{font-size:clamp(26px,3.4vw,40px);margin:4px 0 8px;font-weight:900}
.cta-band p{margin:0;color:#dbe8ff;font-size:14.5px}
.cta-band .right{display:flex;align-items:center;gap:22px}
.cta-band .script{font-family:"Times New Roman",Times,Georgia,serif;font-style:italic;font-size:clamp(15px,1.2vw,19px);color:#fff;line-height:1.3;max-width:220px}
.cta-band .right .ib{width:64px;height:64px;border-radius:16px;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.3);display:grid;place-items:center;color:var(--cyan)}
.cta-band .right .ib .ic{width:32px;height:32px}
@media(max-width:700px){.cta-band .cta-in{padding:26px 22px}}

/* schedule */
.tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:16px}
.tabs button{border:0;background:#eaf0fa;border-radius:10px;padding:10px 12px;font:inherit;font-weight:700;cursor:pointer;color:var(--navy);line-height:1.2}
.tabs button small{display:block;font-weight:500;color:var(--muted);font-size:12px}
.tabs button.active{background:linear-gradient(135deg,#1677ff,#0a5fd7);color:#fff}
.tabs button.active small{color:#dbe8ff}
.sched{display:grid;grid-template-columns:1.1fr 1fr;gap:24px;align-items:stretch}
.sched .list{background:#fff;border:1px solid var(--line);border-radius:14px;padding:20px 22px}
.sched ol{list-style:none;margin:0;padding:0;border-left:2px solid var(--sky-2);margin-left:8px}
.sched li{position:relative;padding:0 0 18px 22px;display:grid;grid-template-columns:110px 1fr;gap:10px;font-size:14.5px}
.sched li:last-child{padding-bottom:0}
.sched li::before{content:"";position:absolute;left:-7px;top:6px;width:12px;height:12px;border-radius:50%;background:var(--blue);border:2px solid #fff;box-shadow:0 0 0 2px var(--blue)}
.sched li b{color:var(--blue)}
.sched .pic{border-radius:14px;overflow:hidden;position:relative;min-height:260px;background:#0b2a6f center/cover}
.sched .pic .cap{position:absolute;left:22px;top:22px;color:#fff;font-weight:800;text-transform:uppercase;font-size:15px;line-height:1.4;max-width:70%;text-shadow:0 2px 10px rgba(0,0,0,.5);z-index:1}
/* Phủ tối góc trên trái để dòng chữ đọc được trên cả ảnh nền sáng. */
.sched .pic::before{content:"";position:absolute;inset:0;background:linear-gradient(160deg,rgba(6,22,60,.72) 0%,rgba(6,22,60,.45) 32%,rgba(6,22,60,0) 62%)}
@media(max-width:900px){.sched{grid-template-columns:1fr}.sched li{grid-template-columns:1fr}}

/* feature tiles */
.tile{background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 16px;display:flex;gap:12px;align-items:center;box-shadow:var(--shadow)}
.tile .ib{width:44px;height:44px;border-radius:12px;background:var(--sky);color:var(--blue);display:grid;place-items:center;flex:none}
.tile .ib .ic{width:22px;height:22px}
.tile b{display:block;font-size:14px;color:#1548b8;line-height:1.25}
.tile span{display:block;font-size:12px;color:var(--muted);line-height:1.4;margin-top:4px}
/* canh lề: icon và chữ bám mép trên để tiêu đề các thẻ trong lưới thẳng hàng nhau */
#highlights .tile,#audience .tile{align-items:flex-start}
.chips{display:flex;flex-wrap:wrap;gap:10px}
.chips span{background:#fff;border:1px solid var(--line);border-radius:8px;padding:9px 22px;font-weight:800;color:var(--c,var(--blue));font-size:14.5px;box-shadow:var(--shadow);transition:.2s}
.chips span:hover{transform:translateY(-2px);border-color:var(--c,var(--blue))}
.chips i{font-style:normal;color:var(--muted);font-weight:500;align-self:center;font-size:13px}

/* news */
.post-card{display:flex;flex-direction:column;overflow:hidden;padding:0;transition:.2s}
.post-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-2)}
.post-card .cover{height:170px;flex:none;background:#0b2a6f center/cover;overflow:hidden;position:relative}
.post-card .cover img{display:block;width:100%;height:170px;object-fit:cover}
.post-card .body{padding:18px 20px}
.post-card h3{font-size:16px;color:#1548b8}
.post-card .date{font-size:12.5px;color:var(--muted);display:flex;gap:6px;align-items:center}
.post-card p{color:var(--muted);font-size:13.5px;margin:8px 0 0;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.article{max-width:840px;margin:0 auto;background:#fff;border-radius:var(--radius);padding:40px;border:1px solid var(--line)}
.article h1{font-size:clamp(24px,3.4vw,36px);color:var(--navy)}
.article .date{color:var(--muted);font-size:14px;margin-bottom:20px}
.article .summary{font-size:17px;color:#3b4560;border-left:4px solid var(--cyan);padding-left:14px;margin:0 0 24px}
.content h2{font-size:22px;margin-top:1.4em;color:var(--blue)}
.content h3{font-size:18px;margin-top:1.2em}
.content img{border-radius:10px;margin:10px 0;height:auto}
.content img[style*="width"]{max-width:100%}
.content p[style*="center"] img{margin-left:auto;margin-right:auto}
.content p[style*="right"] img{margin-left:auto}
.content ul,.content ol{padding-left:24px}
.content pre{background:#f1f4f9;padding:12px;border-radius:8px;overflow:auto}
.content blockquote{border-left:4px solid var(--gold);margin:0 0 1em;padding:6px 16px;background:#fffbea;border-radius:6px}
.content a{text-decoration:underline}
.content p{margin:0 0 1em}
.content small{font-size:.85em;color:var(--muted)}
.content hr{border:0;border-top:1px solid var(--line);margin:1.5em 0}
.content table{border-collapse:collapse;width:100%}
.content td,.content th{border:1px solid var(--line);padding:6px 10px}
@media(max-width:600px){.article{padding:22px}}

/* footer cta + footer */
.foot-cta{position:relative;color:#fff;background:#071d4a center/cover;overflow:hidden}
.foot-cta::before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(7,29,74,.75),rgba(7,29,74,.45) 50%,rgba(7,29,74,.75))}
/* Cột trái rộng 240px và không cho xuống dòng, để khối Ủy ban nhân dân
   nằm ngang hai dòng giống hệt trên đầu trang, thay vì bị bẻ thành bốn dòng. */
.foot-cta .container{position:relative;z-index:1;padding:44px 0;display:grid;grid-template-columns:240px 1fr 200px;align-items:center;gap:20px;text-align:center}
.foot-cta .brand-lock{justify-content:center}
.foot-cta .brand-txt{white-space:nowrap;text-align:left}
.foot-cta .kk{font-size:15px;color:#dbe8ff;font-weight:600}
.foot-cta h2{font-size:clamp(24px,3.4vw,38px);font-weight:900;margin:4px 0 6px}
.foot-cta h2 .script{display:block;font-weight:800;font-size:.62em;letter-spacing:.04em;color:#5fe0a0;line-height:1.15;margin-bottom:2px}
.foot-cta h2 .nb{white-space:nowrap}
.foot-cta h2 em{font-style:normal;color:#5fe0a0}
.foot-cta p{margin:0 0 16px;color:#dbe8ff;font-size:14px}
.foot-cta .script{font-family:"Times New Roman",Times,Georgia,serif;font-style:italic;font-size:22px;color:#fff;line-height:1.3}
@media(max-width:900px){.foot-cta .container{grid-template-columns:1fr}.foot-cta .script,.foot-cta .brand-lock{display:none}}
.site-footer{background:#061a45;color:#c9d4ea;padding:36px 0 18px}
.site-footer .container{display:grid;grid-template-columns:1.4fr 1.3fr 1fr 1fr;gap:28px}
.site-footer h4{color:#fff;margin:0 0 12px;font-size:14px;text-transform:uppercase;letter-spacing:.5px}
.site-footer a{color:#c9d4ea}.site-footer a:hover{color:#fff}
.site-footer ul{list-style:none;margin:0;padding:0;display:grid;gap:8px;font-size:14px}
.site-footer li{display:flex;gap:10px;align-items:flex-start}
.site-footer .ic{color:var(--cyan);margin-top:3px}
.site-footer .org{display:flex;gap:14px;align-items:center}
.site-footer .emblem{width:60px;height:60px;border-radius:50%;background:#fff;padding:2px;flex:none;object-fit:contain;box-shadow:0 0 0 2px rgba(255,255,255,.25)}
.site-footer .org b{display:block;color:#fff;font-size:14px;line-height:1.3}
.site-footer .org small{display:block;margin-top:6px;line-height:1.45;color:#9fb3d9}
.site-footer .copy{grid-column:1/-1;border-top:1px solid rgba(255,255,255,.12);padding-top:14px;font-size:12.5px;opacity:.75;display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px}
.social{display:flex;gap:8px;margin-top:6px}
.social span{width:34px;height:34px;border-radius:8px;background:rgba(255,255,255,.12);display:grid;place-items:center;font-weight:800;font-size:13px;color:#fff}
@media(max-width:900px){.site-footer .container{grid-template-columns:1fr 1fr}}
@media(max-width:600px){.site-footer .container{grid-template-columns:1fr}}

/* registration page */
.steps .tile{padding:16px 18px}
.steps .tile b{font-size:15px}
.reg-grid{display:grid;grid-template-columns:1fr 340px;gap:22px;align-items:start}
@media(max-width:1000px){.reg-grid{grid-template-columns:1fr}}
.panel{background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow)}
.panel .ph{display:flex;gap:12px;align-items:center;padding:18px 22px;border-bottom:1px solid var(--line)}
.panel .ph .ib{width:44px;height:44px;border-radius:12px;background:var(--blue);color:#fff;display:grid;place-items:center;flex:none}
.panel .ph h2,.panel .ph h3{margin:0;font-size:18px;color:var(--navy)}
.panel .ph p{margin:0;font-size:13px;color:var(--muted)}
.panel .pb{padding:18px 22px}
.fs{margin:0 0 22px}
.fs h4{background:var(--sky);color:var(--blue);padding:8px 12px;border-radius:8px;font-size:14.5px;margin:0 0 12px}
.form label{display:block;font-weight:600;font-size:13.5px;margin:10px 0 4px}
.form label.req::after{content:" *";color:var(--red)}
.form input,.form select,.form textarea{width:100%;padding:10px 12px;border:1px solid #cfd6e2;border-radius:9px;font:inherit;font-size:14.5px;background:#fff}
.form input:focus,.form select:focus,.form textarea:focus{outline:2px solid var(--cyan);border-color:transparent}
.form textarea{min-height:90px;resize:vertical}
.form .row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.form .row3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}
.form .row4{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
@media(max-width:700px){.form .row,.form .row3,.form .row4{grid-template-columns:1fr}}
.checks{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
@media(max-width:700px){.checks{grid-template-columns:1fr 1fr}}
.check{border:1px solid var(--line);border-radius:10px;padding:10px 12px;display:flex;gap:10px;align-items:center;cursor:pointer;font-size:13.5px;font-weight:600;color:var(--navy);background:#fff;transition:.2s}
.check:hover{border-color:#b9c7dd}
.check .lbl{flex:1;line-height:1.3}
.check input{width:20px;height:20px;margin:0 0 0 8px;flex:none;accent-color:var(--blue);cursor:pointer}
.check .ib{width:32px;height:32px;border-radius:8px;background:var(--sky);color:var(--blue);display:grid;place-items:center;flex:none}
.check .ib .ic{width:18px;height:18px}
.check:has(input:checked){border-color:var(--blue);background:var(--sky)}
.commit{display:flex;gap:10px;align-items:flex-start;font-size:13.5px;margin-top:12px}
.commit input{width:auto;margin-top:4px;accent-color:var(--blue)}
.side-list{display:grid;gap:12px}
.side-item{display:flex;gap:12px;align-items:flex-start;font-size:13.5px}
.side-item .ib{width:36px;height:36px;border-radius:10px;background:var(--sky);color:var(--blue);display:grid;place-items:center;flex:none}
.side-item .ib .ic{width:18px;height:18px}
.side-item b{display:block;color:var(--navy);font-size:13.5px}
.side-item span{color:var(--muted)}
.side-blue{background:linear-gradient(135deg,#0a5fd7,#0b2a6f);color:#fff;border-radius:14px;padding:20px;display:flex;gap:14px;align-items:center}
.side-blue .ib{width:48px;height:48px;border-radius:12px;background:rgba(255,255,255,.15);display:grid;place-items:center;flex:none}
.side-blue b{display:block;font-size:16px}
.side-blue span{font-size:13px;color:#dbe8ff}
.faq details{background:#fff;border:1px solid var(--line);border-radius:10px;padding:12px 16px;margin-bottom:8px}
.faq summary{cursor:pointer;font-weight:600;font-size:14px;color:var(--navy);list-style:none;display:flex;justify-content:space-between}
.faq summary::after{content:"+";color:var(--blue);font-weight:800}
.faq details[open] summary::after{content:"−"}
.faq p{margin:8px 0 0;font-size:13.5px;color:var(--muted)}
.selected-booth{background:var(--sky);border:1px dashed var(--blue);border-radius:10px;padding:12px 14px;font-size:14px}
.selected-booth b{color:var(--blue)}
.msg{padding:12px 14px;border-radius:10px;margin-top:12px;font-size:14px}
.msg.ok{background:#e7f8ea;color:#1a6b2b}.msg.err{background:#fdeaea;color:#a12a2a}
.hp{position:absolute;left:-9999px}
.summary-chips{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.chip{background:#fff;border:1px solid var(--line);border-radius:999px;padding:6px 14px;font-size:13.5px;font-weight:600}
.chip i{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:6px}

/* booth map */
.map-wrap{background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);overflow:hidden}
.map-toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:12px 16px;border-bottom:1px solid var(--line);background:#fafbfe}
.legend{display:flex;gap:16px;flex-wrap:wrap;font-size:13px;font-weight:600;margin-left:auto}
.legend span{display:inline-flex;align-items:center;gap:6px}
.legend i{width:16px;height:16px;border-radius:4px;display:inline-block;border:1px solid rgba(0,0,0,.15)}
.legend .empty{background:#c7f0d0}.legend .pending{background:#ffe08a}.legend .reserved{background:#c9ced8}.legend .selected{background:#2ec4ff}
.map-viewport{overflow:auto;background:#eef1f6;cursor:grab;touch-action:none;user-select:none}
.map-wrap.is-fs{display:flex;flex-direction:column;background:#fff;border-radius:0}
.map-wrap.is-fs .map-viewport{flex:1;display:grid;place-items:center}
.map-wrap:fullscreen{width:100vw;height:100vh}
.map-viewport.dragging{cursor:grabbing}
svg.booth-map{display:block;font-family:system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif}
svg.booth-map .cover{fill:#dfe4ec;stroke:#fff;stroke-width:2;opacity:.97}
svg.booth-map .area-label{font-size:12px;font-weight:800;fill:#31446b;text-anchor:middle;pointer-events:none}
svg.booth-map .area-label.small{font-size:7.5px;font-weight:700;fill:#4b5563;letter-spacing:.2px}
svg.booth-map .vlabel{font-size:7.5px;font-weight:700;fill:#31446b;text-anchor:middle;letter-spacing:.3px;pointer-events:none}
svg.booth-map .tag{fill:#0b2a6f;stroke:#fff;stroke-width:2}
svg.booth-map .tag-text{font-size:12px;font-weight:900;fill:#fff;text-anchor:middle;pointer-events:none}
svg.booth-map .plate rect{fill:rgba(7,29,74,.72)}
svg.booth-map .plate text{font-size:8px;font-weight:800;fill:#fff;text-anchor:middle;letter-spacing:.3px;pointer-events:none}
svg.booth-map .booths{filter:url(#booth-shadow)}
svg.booth-map .booth{cursor:pointer;stroke:#fff;stroke-width:1;transition:filter .15s}
svg.booth-map .booth.reserved{cursor:not-allowed}
svg.booth-map .booth-g:hover .booth{filter:brightness(1.1)}
svg.booth-map .booth-g.selected .booth{stroke:#0a5fd7;stroke-width:2.5}
svg.booth-map .hatch{pointer-events:none}
svg.booth-map .booth-code{font-size:8px;font-weight:800;text-anchor:middle;pointer-events:none;paint-order:stroke;stroke:rgba(0,0,0,.2);stroke-width:.5px}
svg.booth-map .booth-code.big{font-size:12px}
svg.booth-map .booth-count{font-size:7.5px;font-weight:800;fill:#fff;text-anchor:middle;pointer-events:none}
svg.booth-map .count-bg{fill:#d64545;stroke:#fff;stroke-width:1;pointer-events:none}
.legend .empty{background:#c7f0d0}.legend .pending{background:#ffe08a}.legend .reserved{background:#c9ced8}.legend .selected{background:#2ec4ff}
.map-viewport{overflow:auto;background:#eef1f6;cursor:grab;touch-action:none;user-select:none}
.map-wrap.is-fs{display:flex;flex-direction:column;background:#fff;border-radius:0}
.map-wrap.is-fs .map-viewport{flex:1;display:grid;place-items:center}
.map-wrap:fullscreen{width:100vw;height:100vh}
.map-viewport.dragging{cursor:grabbing}
svg.booth-map{display:block;font-family:system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif}
svg.booth-map .lawn{fill:url(#lawn-g)}
svg.booth-map .road{fill:#8d8f93}
svg.booth-map .plot{fill:#dfe3e8;stroke:#fff;stroke-width:3}
svg.booth-map .plot-shadow{fill:rgba(0,0,0,.18)}
svg.booth-map .grass{fill:#5fbf6f;stroke:#fff;stroke-width:2}
svg.booth-map .road-dash{stroke:#fff;stroke-width:2;stroke-dasharray:14 12;opacity:.8}
svg.booth-map .tree{fill:#1f7a35;stroke:#165a27;stroke-width:1}
svg.booth-map .tree-hi{fill:#4fb867;opacity:.7}
svg.booth-map .tree-shadow{fill:rgba(0,0,0,.22)}
svg.booth-map .booths{filter:url(#booth-shadow)}
svg.booth-map .dim line,svg.booth-map .dim path{stroke:#0b2a6f;stroke-width:1.2;fill:#0b2a6f}
svg.booth-map .dim text{font-size:9px;font-weight:700;fill:#0b2a6f;text-anchor:middle}
svg.booth-map .box{stroke:rgba(0,0,0,.15);stroke-width:1}
svg.booth-map .box.red{fill:#e5322d}
svg.booth-map .box.stage{fill:#b3202e}
svg.booth-map .box.seats{fill:#c9a27e}
svg.booth-map .box.btc{fill:#e0c9a6}
svg.booth-map .box.vip{fill:#f3f5f8}
svg.booth-map .box.flag{fill:#c9a27e}
svg.booth-map .box.drone{fill:rgba(255,255,255,.12);stroke:rgba(255,255,255,.55);stroke-dasharray:6 4}
svg.booth-map .seatrow{fill:rgba(255,255,255,.55)}
svg.booth-map .flagbase{fill:#6b7280}
svg.booth-map .flagcloth{fill:#e5322d;stroke:#6b7280;stroke-width:1.5}
svg.booth-map .droneicon{fill:none;stroke:#fff;stroke-width:3;stroke-linecap:round}
svg.booth-map .box-label{font-size:10px;font-weight:800;fill:#fff;text-anchor:middle;pointer-events:none;letter-spacing:.3px}
svg.booth-map .box-label.vip,svg.booth-map .box-label.btc{fill:#31446b}
svg.booth-map .box-label.flag{fill:#3b2a1a;font-size:16px}
svg.booth-map .box-label.drone{fill:#fff;font-size:13px}
svg.booth-map .box-label.seats{fill:#3b2a1a}
svg.booth-map .area-label{font-size:12px;font-weight:800;fill:#31446b;text-anchor:middle;pointer-events:none}
svg.booth-map .area-label.small{font-size:8.5px;font-weight:700;fill:#4b5563;letter-spacing:.2px}
svg.booth-map .vlabel{font-size:8.5px;font-weight:700;fill:#31446b;text-anchor:middle;letter-spacing:.4px;pointer-events:none}
svg.booth-map .vlabel.light{fill:#f1f3f5;font-size:10px}
svg.booth-map .tag{fill:#0b2a6f;stroke:#fff;stroke-width:2}
svg.booth-map .tag-text{font-size:14px;font-weight:900;fill:#fff;text-anchor:middle;pointer-events:none}
svg.booth-map .wc{fill:#fff;stroke:#b9bec7}
svg.booth-map .wc-text{font-size:11px;font-weight:800;fill:#31446b;text-anchor:middle;pointer-events:none}
svg.booth-map .arrow{fill:#e5322d}
svg.booth-map .booth{cursor:pointer;stroke:#fff;stroke-width:1.2;transition:filter .15s}
svg.booth-map .booth.reserved{cursor:not-allowed}
svg.booth-map .booth-g:hover .booth{filter:brightness(1.1)}
svg.booth-map .booth-g.selected .booth{stroke:#0a5fd7;stroke-width:3}
svg.booth-map .hatch{pointer-events:none}
svg.booth-map .booth-code{font-size:10px;font-weight:800;text-anchor:middle;pointer-events:none;paint-order:stroke;stroke:rgba(0,0,0,.18);stroke-width:.6px}
svg.booth-map .booth-code.big{font-size:13px}
svg.booth-map .booth-count{font-size:9px;font-weight:800;fill:#fff;text-anchor:middle;pointer-events:none}
svg.booth-map .count-bg{fill:#d64545;stroke:#fff;stroke-width:1.2;pointer-events:none}
.legend .empty{background:linear-gradient(90deg,#29a8e0 33%,#f26522 33% 66%,#7b2fbe 66%)}
.legend .pending{background:repeating-linear-gradient(45deg,#29a8e0 0 3px,#fff 3px 5px)}
.legend .reserved{background:#b8c0cc}
.legend .selected{background:#29a8e0;box-shadow:0 0 0 2px #0a5fd7 inset}
.zone-legend{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:6px 18px;padding:12px 16px;border-top:1px solid var(--line);background:#fafbfe;font-size:12.5px;color:var(--ink)}
.zone-legend span{display:flex;align-items:center;gap:8px}
.zone-legend i{width:26px;height:14px;border-radius:3px;flex:none;border:1px solid rgba(0,0,0,.12)}
.map-tip{position:fixed;z-index:60;background:#0f1f3d;color:#fff;padding:8px 12px;border-radius:8px;font-size:13px;pointer-events:none;box-shadow:0 6px 20px rgba(0,0,0,.25);max-width:260px}
.map-tip b{color:var(--cyan)}
.skeleton{color:var(--muted);padding:30px;text-align:center}
.page-head{background:linear-gradient(120deg,#061a45,#0b2a6f);color:#fff;padding:46px 0 40px}
.page-head h1{font-size:clamp(26px,3.6vw,40px);margin:0 0 6px}
.page-head p{margin:0;opacity:.85}

/* file upload */
.drop{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border:1.5px dashed #b9c7dd;border-radius:10px;padding:14px;background:#f8fbff;cursor:pointer;text-align:center;font-weight:500!important;margin:0!important}
.drop:hover{border-color:var(--blue);background:var(--sky)}
.drop .ic.up{width:26px;height:26px;color:var(--blue);transform:rotate(180deg)}
.drop b{font-size:13.5px;color:var(--blue)}.drop small{font-size:11.5px;color:var(--muted)}
.files{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.files span{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;background:#fff;border:1px solid var(--line);border-radius:8px;padding:4px 8px 4px 4px;max-width:100%}
.files img{width:34px;height:34px;object-fit:cover;border-radius:6px}
.files i{color:var(--muted);font-style:normal}
.files a{color:var(--blue)}
.files button{border:0;background:#fdeaea;color:#a12a2a;border-radius:6px;cursor:pointer;font-size:12px;padding:2px 6px}

/* ===== motion & effects ===== */
.reveal{opacity:0;transform:translateY(24px);transition:opacity .6s cubic-bezier(.2,.7,.2,1),transform .6s cubic-bezier(.2,.7,.2,1);transition-delay:var(--d,0s)}
.reveal.in{opacity:1;transform:none}
@keyframes heroIn{from{opacity:0;transform:translateY(26px)}to{opacity:1;transform:none}}
.hero .kicker,.hero h1,.hero .sub,.hero .meta,.hero .slogan,.hero .actions,.hero .pills{animation:heroIn .7s cubic-bezier(.2,.7,.2,1) both}
.hero h1{animation-delay:.08s}.hero .sub{animation-delay:.18s}.hero .meta{animation-delay:.26s}.hero .slogan{animation-delay:.32s}.hero .actions,.hero .pills{animation-delay:.4s}
.hero h1 .t2 em{color:#3fd3ff;-webkit-text-fill-color:#3fd3ff;text-shadow:0 0 16px rgba(63,211,255,.55),0 4px 22px rgba(0,0,0,.5);animation:glow 3s ease-in-out infinite}
@keyframes glow{0%,100%{text-shadow:0 0 14px rgba(63,211,255,.45),0 4px 22px rgba(0,0,0,.5)}50%{text-shadow:0 0 26px rgba(63,211,255,.85),0 4px 22px rgba(0,0,0,.5)}}
@keyframes shine{to{background-position:200% center}}
.btn-primary{position:relative;overflow:hidden}
.btn-primary::after{content:"";position:absolute;top:-50%;left:-70%;width:40%;height:200%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.45),transparent);transform:skewX(-20deg);transition:left .6s}
.btn-primary:hover::after{left:130%}
.zone,.tile,.card,.post-card,.qcard{will-change:transform}
.zone{transform-style:preserve-3d}
.tile{transition:.25s}.tile:hover{transform:translateY(-3px);box-shadow:var(--shadow-2);border-color:#cfe0ff}
.tile .ib,.side-item .ib,.qcard .ib,.check .ib{transition:.3s}
.tile:hover .ib,.qcard:hover .ib{background:var(--blue);color:#fff;transform:rotate(-6deg) scale(1.05)}
.tabs button{transition:.25s}
.sched .list{animation:heroIn .5s both}
.section-head h2{position:relative;padding-bottom:10px}
.section-head h2::after{content:"";position:absolute;left:0;bottom:0;width:56px;height:4px;border-radius:4px;background:linear-gradient(90deg,var(--blue),var(--cyan))}
.section-head h2 small{margin-top:8px}
.cta-band .ib{animation:float 3.5s ease-in-out infinite}
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
.count{font-variant-numeric:tabular-nums}
@media(prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}.hero *{animation:none!important}.hero .bg{transform:none!important}.cta-band .ib{animation:none}}

/* map next-step bar + confirm modal */
.map-next{position:fixed;left:50%;bottom:18px;transform:translateX(-50%) translateY(20px);opacity:0;pointer-events:none;z-index:70;background:#fff;border:1px solid #cfe0ff;box-shadow:0 14px 40px rgba(7,29,74,.22);border-radius:999px;padding:10px 12px 10px 20px;display:flex;gap:14px;align-items:center;max-width:min(92vw,720px);transition:.3s}
.map-next.show{opacity:1;pointer-events:auto;transform:translateX(-50%) translateY(0)}
.map-next.show.near-form{opacity:0;pointer-events:none}
.map-next .codes{font-size:14px;color:var(--navy)}
.map-next .codes b{color:var(--blue)}
.map-next .btn{white-space:nowrap}
.modal-bg{position:fixed;inset:0;background:rgba(6,31,77,.55);z-index:180;display:grid;place-items:center;padding:20px;overflow:auto;animation:fadeIn .2s}
.modal{background:#fff;border-radius:16px;padding:26px;width:100%;max-width:640px;max-height:92vh;overflow:auto;animation:heroIn .3s}
.modal h3{margin-top:0;color:var(--navy);display:flex;align-items:center;gap:10px}
.modal .foot{display:flex;justify-content:flex-end;gap:10px;margin-top:20px;flex-wrap:wrap}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
.sum{display:grid;grid-template-columns:170px 1fr;gap:8px 14px;font-size:14px}
.sum dt{color:var(--muted);margin:0}.sum dd{margin:0;color:var(--ink);font-weight:500;word-break:break-word}
.sum dd b{color:var(--blue)}
@media(max-width:600px){.sum{grid-template-columns:1fr}.sum dt{margin-top:6px;font-size:12px;text-transform:uppercase;letter-spacing:.5px}}
.form input[readonly]{background:#f3f6fb;color:var(--navy);font-weight:700}
/* registration steps with arrows */
.steps{gap:26px}
.steps .tile{position:relative;background:linear-gradient(135deg,#eaf2ff,#f5f9ff);border-color:#d6e4fb;overflow:visible}
.steps .tile .ib{width:52px;height:52px;border-radius:50%;background:#dbe8ff}
.steps .tile:not(:last-child)::after{content:"";position:absolute;right:-19px;top:50%;width:12px;height:12px;border-top:3px solid var(--blue-2);border-right:3px solid var(--blue-2);transform:translateY(-50%) rotate(45deg);z-index:2}
@media(max-width:1000px){.steps .tile:nth-child(2)::after{display:none}}
@media(max-width:600px){.steps .tile::after{display:none!important}}

/* field cards + uniform controls */
.form label.check{display:flex;margin:0;font-weight:700}
.check .ib{width:40px;height:40px;border-radius:10px}
.check .ib .ic{width:22px;height:22px}
.check input{width:20px;height:20px}
.form input:not([type=checkbox]):not([type=file]),.form select{height:44px}
.form textarea{min-height:90px}
.lbl-hint{display:inline-grid;place-items:center;width:16px;height:16px;border-radius:50%;background:var(--sky);color:var(--blue);font-size:11px;font-style:normal;cursor:help;margin-left:4px;vertical-align:1px}
.form .row4>div,.form .row3>div,.form .row>div{display:flex;flex-direction:column}
.form .row4>div>label,.form .row3>div>label,.form .row>div>label{margin-top:10px}
.form .row4>div>input,.form .row4>div>select{margin-top:auto}
.form label.drop{display:flex;flex-direction:column}
.form label.commit{display:flex;font-weight:500;margin-top:12px}

/* ===== Mobile layout (per mobile mockup) ===== */
@media(max-width:640px){
  body{font-size:14.5px}
  .container{width:calc(100% - 32px)}
  section.block{padding:34px 0}
  .section-head{margin-bottom:16px;gap:8px}
  .section-head h2{font-size:19px;padding-bottom:8px}
  .section-head h2 small{font-size:12.5px;margin-top:4px}
  .section-head a.more{font-size:13px}
  /* header */
  .site-header .container{height:60px}
  .logo-svg{height:36px}
  /* hero */
  .hero{min-height:0}
  .hero .container{padding:30px 0 34px}
  .hero .kicker{font-size:11px;line-height:1.5}
  .hero h1{font-size:40px}
  .hero .sub{font-size:15px;margin:12px 0 6px}
  .hero .meta{gap:8px;font-size:14px}
  .hero .meta div{padding:7px 15px}
  .hero .slogan{display:none}
  .hero .actions{gap:8px}
  .hero .actions .btn{flex:1;padding:12px 10px;font-size:14px}
  .hero .pills{gap:8px;margin:16px 0 20px}
  .hero .pill{padding:8px 12px}
  /* quick stats 2x2 */
  .quick{margin-top:16px}
  .quick .grid-4{grid-template-columns:1fr 1fr;gap:10px}
  .qcard{padding:14px 12px;gap:10px;border-radius:12px}
  .qcard .ib{width:44px;height:44px}
  .qcard .ib .ic{width:22px;height:22px}
  .qcard b{font-size:15px;white-space:normal}
  .qcard small{font-size:12px}
  /* intro: text first, image after */
  .intro{display:flex;flex-direction:column;gap:18px}
  .intro .pic{order:2;aspect-ratio:16/10}
  .intro .pic .cap{font-size:12.5px;padding:8px 10px;left:12px;top:12px}
  .intro h2{font-size:22px}
  .intro p{font-size:14px;margin-bottom:12px}
  .quote{display:none}
  /* zones: 3 on top, 2 below */
  .grid-5{grid-template-columns:repeat(6,1fr);gap:10px}
  .grid-5 .zone:nth-child(-n+3){grid-column:span 2}
  .grid-5 .zone:nth-child(n+4){grid-column:span 3}
  .zone{border-radius:12px}
  .zone .pic{aspect-ratio:4/3}
  .grid-5 .zone:nth-child(n+4) .pic{aspect-ratio:16/8}
  .zone .ib{width:40px;height:40px;left:10px;bottom:10px}
  .zone .ib .ic{width:20px;height:20px}
  .zone .body{padding:10px 8px 12px}
  .zone h3{font-size:12.5px;margin-bottom:4px}
  .zone p{font-size:11px}
  .grid-5 .zone:nth-child(n+4) .body{padding:12px 12px 14px;text-align:left}
  .grid-5 .zone:nth-child(n+4) h3{font-size:14px}
  .grid-5 .zone:nth-child(n+4) p{font-size:12px}
  /* cta band */
  .cta-band.full{min-height:0}
  .cta-band.full .cta-in{padding:26px 0;gap:16px}
  .cta-band .k{font-size:11px}
  .cta-band h2{font-size:24px;margin:2px 0 6px}
  .cta-band p{font-size:13px}
  .cta-band p br{display:none}
  .cta-band .right{width:100%;justify-content:space-between;gap:12px}
  .cta-band .right .ib{width:52px;height:52px}
  .cta-band .script{font-size:14px;max-width:none;flex:1}
  .cta-band .right .btn{padding:11px 16px;font-size:14px}
  /* schedule */
  .tabs{gap:6px}
  .tabs button{padding:8px 6px;font-size:13px;border-radius:8px}
  .tabs button small{font-size:11px}
  .sched{gap:14px}
  .sched .list{padding:14px 14px 14px 16px}
  .sched li{font-size:13.5px;padding:0 0 14px 18px;gap:4px}
  .sched .pic{min-height:190px}
  .sched .pic .cap{font-size:13px;left:14px;top:14px}
  /* highlights: 3 columns, icon on top */
  #highlights{grid-template-columns:repeat(3,1fr);gap:8px}
  #highlights .tile{flex-direction:column;text-align:center;padding:12px 6px;gap:8px;border-radius:10px}
  #highlights .tile .ib{width:40px;height:40px;border-radius:50%}
  #highlights .tile .ib .ic{width:20px;height:20px}
  #highlights .tile b{font-size:12px;line-height:1.25}
  #highlights .tile span{font-size:10.5px}
  /* audience: 3 columns compact */
  #audience{grid-template-columns:repeat(3,1fr);gap:8px}
  #audience .tile{padding:8px 8px;gap:8px;border-radius:10px;align-items:center}
  #audience .tile .ib{width:32px;height:32px;border-radius:8px}
  #audience .tile .ib .ic{width:16px;height:16px}
  #audience .tile b{font-size:11.5px}
  #audience .tile span{font-size:10px}
  /* partners chips: 3 per row */
  .chips{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
  .chips span{text-align:center;padding:10px 6px;font-size:13px}
  .chips i{grid-column:1/-1;text-align:right;font-size:12px}
  /* news */
  .post-card .cover,.post-card .cover img{height:180px}
  .post-card .body{padding:14px 16px}
  .post-card h3{font-size:15px}
  /* footer cta + footer */
  .foot-cta .container{padding:30px 0;gap:14px;text-align:center}
  .foot-cta .brand-lock{display:flex;justify-content:center;--lh:40px}
  .foot-cta h2{font-size:24px}
  .foot-cta p{font-size:13px}
  .foot-cta .script{display:block;font-size:18px}
  .site-footer{padding:28px 0 16px}
  .site-footer .container{gap:20px}
  .site-footer ul{font-size:13.5px}
  .site-footer .copy{flex-direction:column;gap:6px}
  /* registration page */
  .steps{gap:10px}
  .steps .tile{padding:12px}
  .steps .tile b{font-size:13.5px}
  .steps .tile span{font-size:11.5px}
  .map-toolbar{padding:8px 10px;gap:6px}
  .legend{margin-left:0;gap:8px;font-size:11.5px;width:100%}
  .map-next{padding:8px 10px 8px 14px;gap:8px;bottom:12px;flex-wrap:wrap;justify-content:center;border-radius:16px}
  .map-next .codes{font-size:12.5px}
  .checks{grid-template-columns:1fr}
  .panel .ph{padding:14px 16px}
  .panel .pb{padding:14px 16px}
  .fs h4{font-size:13.5px}
}
@media(max-width:640px){.site-footer .container>div:nth-child(3) ul{grid-template-columns:1fr 1fr}.site-footer h4{margin-bottom:8px}}
@media(max-width:640px){
  .map-next,.map-next.show{left:10px;right:10px;transform:translateY(20px);max-width:none;flex-wrap:nowrap;justify-content:space-between;padding:8px 8px 8px 14px;border-radius:14px}
  .map-next.show{transform:translateY(0)}
  .map-next .codes{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}
  .map-next .btn{flex:none;padding:10px 12px;font-size:13px}
  .map-tip{display:none!important}
}
@media(max-width:640px){
  .hero::before{background:linear-gradient(180deg,rgba(6,22,60,.6) 0%,rgba(6,22,60,.74) 50%,rgba(6,22,60,.92) 100%)}
  .hero .bg{background-position:22% 45%!important}
  .hero .sub,.hero .meta,.hero .kicker,.hero .slogan,.hero h1{text-shadow:0 2px 12px rgba(0,0,0,.7),0 0 2px rgba(0,0,0,.5)}
  .hero .btn-light{background:rgba(6,22,60,.55);border-color:rgba(255,255,255,.55)}
  .hero .actions .btn{flex:1 1 auto;white-space:nowrap;font-size:13.5px;padding:12px 8px}
}
@media(max-width:640px){.map-viewport{cursor:grab;-webkit-overflow-scrolling:touch}.map-hint-mobile{display:block;font-size:12px;color:var(--muted);padding:6px 10px;background:#fafbfe;border-top:1px solid var(--line)}}
@media(min-width:641px){.map-hint-mobile{display:none}}
@media(max-width:640px){
  .quick .steps{grid-template-columns:1fr;gap:8px}
  .steps .tile{padding:10px 12px;flex-direction:row;align-items:center}
  .steps .tile .ib{width:40px;height:40px}
  .steps .tile b{font-size:13.5px}
  .steps .tile span{font-size:12px}
  .steps .tile::after{display:none!important}
}
/* steps: compact cards + centered arrows */
@media(min-width:641px){
  .steps{gap:36px;align-items:stretch}
  .steps .tile{padding:12px 14px;gap:10px}
  .steps .tile .ib{width:44px;height:44px}
  .steps .tile .ib .ic{width:20px;height:20px}
  .steps .tile b{font-size:14px;line-height:1.2}
  .steps .tile span{font-size:12px;line-height:1.35}
  .steps .tile:not(:last-child)::after{right:-30px;top:50%;width:24px;height:24px;border:0;border-radius:50%;background:#fff url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231677ff' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'><path d='M9 6l6 6-6 6'/></svg>") center/14px no-repeat;box-shadow:0 2px 8px rgba(7,29,74,.18);transform:translateY(-50%)}
}
/* header CTA attention pulse */
@keyframes ctaPulse{0%,70%,100%{box-shadow:0 0 0 0 rgba(46,196,255,0);transform:scale(1)}75%{box-shadow:0 0 0 0 rgba(46,196,255,.7);transform:scale(1.04)}90%{box-shadow:0 0 0 12px rgba(46,196,255,0);transform:scale(1)}}
.nav a.cta{animation:ctaPulse 3.2s ease-in-out infinite;will-change:transform}
.nav a.cta:hover{animation-play-state:paused}
@media(prefers-reduced-motion:reduce){.nav a.cta{animation:none}}
@media(min-width:641px){.steps .tile{will-change:auto;z-index:auto}.steps .tile:not(:last-child)::after{z-index:5}.steps .tile:hover{transform:none}}

/* partner logos */
.partners{align-items:stretch}
.partners span{display:inline-flex;align-items:center;justify-content:center;min-height:58px}
.partners .logo{padding:8px 22px}
.partners .logo img{height:28px;width:auto;max-width:150px;object-fit:contain;filter:saturate(1.05)}
.partners .logo img.tall{height:42px}
.partners .logo img.wide{height:34px;max-width:186px}
.partners i{align-self:center;min-height:0}
@media(max-width:640px){.partners .logo{padding:8px 10px}.partners .logo img{height:24px;max-width:100%}.partners .logo img.tall{height:36px}.partners .logo img.wide{height:28px}.partners span{min-height:52px}}
@media(max-width:640px){
  .grid-5{grid-template-columns:1fr 1fr;gap:10px}
  .grid-5 .zone:nth-child(-n+3),.grid-5 .zone:nth-child(n+4){grid-column:auto}
  .grid-5 .zone:nth-child(5){grid-column:1/-1}
  .zone .pic,.grid-5 .zone:nth-child(n+4) .pic{aspect-ratio:16/10}
  .grid-5 .zone:nth-child(5) .pic{aspect-ratio:16/7}
  .zone .body,.grid-5 .zone:nth-child(n+4) .body{padding:12px 12px 14px;text-align:center}
  .zone h3,.grid-5 .zone:nth-child(n+4) h3{font-size:13.5px}
  .zone p,.grid-5 .zone:nth-child(n+4) p{font-size:12px}
}
.map-viewport.centered{display:flex;justify-content:center}
/* countdown band */
.count-band{background:linear-gradient(120deg,#061a45,#0b2a6f 60%,#0d3a8f);color:#fff;padding:26px 0;position:relative;overflow:hidden}
.count-band::after{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.05) 1px,transparent 1px);background-size:40px 40px;pointer-events:none}
.count-band .container{position:relative;z-index:1;display:grid;grid-template-columns:1fr auto 1fr;gap:24px;align-items:center}
.count-band .divider{width:1px;height:70px;background:rgba(255,255,255,.2)}
.cd{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.cd .cd-info{min-width:200px}
.cd .cd-k{font-size:11.5px;letter-spacing:1.5px;text-transform:uppercase;color:#9fd3ff;font-weight:700}
.cd .cd-t{font-size:18px;font-weight:800;margin:2px 0}
.cd .cd-d{font-size:13px;color:#dbe8ff}
.cd .boxes{display:flex;gap:8px}
.cd .box{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.22);border-radius:12px;min-width:62px;padding:8px 6px;text-align:center;backdrop-filter:blur(6px)}
.cd .box b{display:block;font-size:26px;line-height:1;font-weight:900;color:#fff;font-variant-numeric:tabular-nums}
.cd .box span{font-size:10.5px;text-transform:uppercase;letter-spacing:1px;color:#cfe3ff}
.cd.reg .box b{color:#ffd166}
.cd .btn{margin-left:auto}
.cd .closed{background:#d64545;color:#fff;padding:6px 12px;border-radius:8px;font-weight:700;font-size:13px}
@media(max-width:900px){.count-band .container{grid-template-columns:1fr}.count-band .divider{width:100%;height:1px}.cd .btn{margin-left:0}}
@media(max-width:640px){.count-band{padding:18px 0}.cd{gap:12px}.cd .box{min-width:54px;padding:6px 4px}.cd .box b{font-size:22px}.cd .cd-t{font-size:16px}}
.files s{font-size:11px}
.files em{font-style:normal;font-size:11.5px;color:var(--muted)}.files em.ok{color:#1a6b2b}.files em.err{color:#a12a2a}.files span.uploading{border-color:#9fd3ff;background:linear-gradient(90deg,#eaf2ff 0,#eaf2ff var(--p,0%),#fff var(--p,0%))}
.qrbox{width:120px;height:120px;background:#fff;padding:4px;border:1px solid var(--line);border-radius:8px}.qrbox img,.qrbox canvas{width:100%!important;height:100%!important}
@media(max-width:640px){.form input,.form select,.form textarea,input[name=q]{font-size:16px}}

/* ===== Exhibitor directory ===== */
.dir-grid{display:grid;grid-template-columns:280px 1fr;gap:22px;align-items:start}
@media(max-width:960px){.dir-grid{grid-template-columns:1fr}}
.dir-filters{padding:18px;position:sticky;top:84px}
@media(max-width:960px){.dir-filters{position:static}}
.fgroup{margin-top:16px;border-top:1px solid var(--line);padding-top:12px}
.fgroup h4{font-size:13.5px;color:var(--blue);margin:0 0 8px}
.fcheck{display:flex;align-items:flex-start;gap:8px;font-size:13.5px;padding:5px 6px;border-radius:8px;cursor:pointer;color:var(--ink)}
.fcheck:hover,.fcheck.on{background:var(--sky)}
.fcheck input{width:16px;height:16px;margin:3px 0 0;flex:none;accent-color:var(--blue)}
.fcheck span{flex:1}.fcheck i{font-style:normal;color:var(--muted);font-size:12px;margin-top:4px}
.zb{display:inline-block;min-width:26px;text-align:center;color:#fff;font-size:11px;font-weight:800;border-radius:6px;padding:2px 5px;margin-right:2px}
.map-promo{display:flex;gap:16px;align-items:center;background:linear-gradient(90deg,#eef6ff,#fff);border:1px solid #cfe0ff;border-radius:14px;padding:16px 18px;margin-bottom:14px;color:var(--ink)}
.map-promo .ib{width:48px;height:48px;border-radius:12px;background:var(--sky);color:var(--blue);display:grid;place-items:center;flex:none}
.map-promo b{display:block;color:var(--blue);font-size:15px}.map-promo span:not(.btn){font-size:13px;color:var(--muted)}
.map-promo>div{flex:1}
.dir-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;flex-wrap:wrap}
.dir-toolbar select{padding:8px 12px;border:1px solid #cfd6e2;border-radius:8px;font:inherit;background:#fff}
.dir-cards{gap:16px}
.ex-card{display:flex;flex-direction:column;gap:8px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px;box-shadow:var(--shadow);color:var(--ink);transition:.2s}
.ex-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-2);border-color:#cfe0ff}
.ex-top{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}
.ex-logo{width:72px;height:72px;border-radius:12px;border:1px solid var(--line);background:#fff;display:grid;grid-template-columns:100%;grid-template-rows:100%;place-items:center;overflow:hidden;flex:none}
.ex-logo img{width:100%;height:100%;object-fit:contain;padding:6px;box-sizing:border-box}
.ex-logo span{font-weight:900;color:var(--blue);font-size:20px}
.ex-logo.lg{width:150px;height:110px;border-radius:14px;box-shadow:var(--shadow)}
.ex-booth{--zc:#0a5fd7;background:color-mix(in srgb,var(--zc) 14%,#fff);color:var(--zc);border:1px solid color-mix(in srgb,var(--zc) 40%,#fff);font-weight:800;font-size:12.5px;padding:4px 10px;border-radius:8px;white-space:nowrap;text-align:right;line-height:1.3}
.ex-booth.multi{font-size:11.5px;max-width:120px;white-space:normal}
.ex-card h3{font-size:15px;color:var(--navy);margin:2px 0 0;line-height:1.3;min-height:38px}
.ex-tag{display:inline-block;background:var(--sky);color:var(--blue);font-size:12px;font-weight:600;padding:3px 10px;border-radius:999px;width:fit-content}
.ex-tag.green{background:#e3f6e8;color:#1a6b2b}
.ex-card p{font-size:13px;color:var(--muted);margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:38px}
.ex-web{font-size:12.5px;color:var(--blue);display:flex;gap:6px;align-items:center;word-break:break-all}
.ex-card .btn{margin-top:auto;justify-content:center}
.pager{display:flex;gap:6px;justify-content:center;align-items:center;margin-top:18px;flex-wrap:wrap}

/* ===== Exhibitor detail (matches reference layout) ===== */
.ex-page{position:relative;padding-bottom:40px}
.ex-bg{position:absolute;top:0;left:0;right:0;height:340px;overflow:hidden;background:#071d4a}
.ex-bg .bg{position:absolute;inset:0;background:center/cover;opacity:.45}
.ex-bg::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(6,22,60,.75),rgba(6,22,60,.92) 60%,var(--bg) 100%)}
.ex-container{position:relative;z-index:1;padding-top:18px}
.ex-back{display:inline-block;color:#dbe8ff;font-size:14px;font-weight:600;margin-bottom:16px}
.ex-back:hover{color:#fff}
.ex-card-main{background:#fff;border-radius:10px;box-shadow:var(--shadow-2);overflow:hidden;margin-bottom:22px}
.ex-idrow{display:grid;grid-template-columns:auto 1fr auto;gap:26px;align-items:center;padding:24px 26px}
.ex-logo{width:78px;height:78px;border-radius:12px;border:1px solid var(--line);background:#fff;display:grid;grid-template-columns:100%;grid-template-rows:100%;place-items:center;overflow:hidden;flex:none}
.ex-logo img{width:100%;height:100%;object-fit:contain;padding:6px;box-sizing:border-box}
.ex-logo span{font-weight:900;color:var(--blue);font-size:20px}
.ex-logo.lg{width:150px;height:150px;border-radius:8px;border:1px solid #e6ecf6;box-shadow:0 2px 10px rgba(7,29,74,.06)}
.ex-logo.lg img{padding:14px}
.ex-logo.lg span{font-size:36px}
.ex-title h1{font-size:clamp(20px,2.3vw,28px);color:#1548b8;margin:0 0 6px;display:flex;gap:9px;align-items:center;flex-wrap:wrap;line-height:1.25}
.verified{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--blue);color:#fff;flex:none}
.verified .ic{width:14px;height:14px;stroke-width:3}
.ex-slogan{margin:0 0 12px;color:var(--muted);font-size:14.5px}
.ex-tags{display:flex;gap:8px;flex-wrap:wrap}
.ex-tag{display:inline-block;background:var(--sky);color:var(--blue);font-size:12.5px;font-weight:600;padding:5px 13px;border-radius:999px;width:fit-content}
.ex-tag.green{background:#e3f6e8;color:#1a6b2b}
.ex-boothcard{--zc:#0a5fd7;border:1px solid color-mix(in srgb,var(--zc) 28%,#fff);background:color-mix(in srgb,var(--zc) 6%,#fff);border-radius:8px;padding:14px 18px;text-align:center;min-width:210px}
.ex-boothcard .k{font-size:12.5px;color:var(--muted);margin-bottom:4px}
.ex-boothcard .n{display:flex;gap:6px;justify-content:center;flex-wrap:wrap}
.ex-boothcard .bn{font-size:clamp(20px,2vw,28px);font-weight:900;line-height:1.15;color:var(--zc);letter-spacing:-.5px}
.ex-boothcard .bn+.bn::before{content:"·";color:color-mix(in srgb,var(--zc) 45%,#fff);margin-right:6px}
.ex-boothcard .bn.muted{font-size:18px;color:var(--muted)}
.ex-boothcard .z{display:flex;gap:9px;align-items:center;text-align:left;margin-top:10px;border-top:1px solid color-mix(in srgb,var(--zc) 20%,#fff);padding-top:10px}
.ex-boothcard .z .ic{color:var(--zc);width:22px;height:22px;flex:none}
.ex-boothcard .z small{display:block;font-size:11px;color:var(--muted)}
.ex-boothcard .z b{font-size:12.5px;color:var(--navy);line-height:1.25}
.ex-contactrow{border-top:1px solid var(--line);background:#fbfcfe;padding:16px 26px;display:grid;grid-template-columns:repeat(4,1fr);gap:0}
.ex-contactrow .ci+.ci{border-left:1px solid var(--line);padding-left:18px}
.ex-contactrow .ci{padding-right:14px}
.ex-contactrow .ci.empty .ib{background:#f1f4f9;color:#b6bfcd}
.ex-contactrow .na{color:#9aa3b2;font-weight:500}
.ex-contactrow .ci{display:flex;gap:12px;align-items:center;font-size:13.5px;min-width:0}
.ex-contactrow .ib{width:44px;height:44px;border-radius:50%;background:var(--sky);color:var(--blue);display:grid;place-items:center;flex:none}
.ex-contactrow .cv{min-width:0}
.ex-contactrow small{display:block;color:var(--muted);font-size:12px}
.ex-contactrow b{color:var(--blue);font-size:13.5px;display:block;overflow:hidden;text-overflow:ellipsis}
.ex-layout{display:grid;grid-template-columns:216px 1fr;gap:22px;align-items:start}
.ex-nav{position:sticky;top:86px;display:grid;gap:6px;background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px;box-shadow:var(--shadow)}
.ex-nav a{display:flex;gap:10px;align-items:center;padding:11px 13px;border-radius:10px;color:var(--navy);font-weight:600;font-size:14px}
.ex-nav a .ic{width:18px;height:18px;color:var(--blue)}
.ex-nav a.active{background:linear-gradient(135deg,#1677ff,#0a5fd7);color:#fff}
.ex-nav a.active .ic{color:#fff}
.ex-nav a:not(.active):hover{background:var(--sky)}
.ex-sec{margin-bottom:26px;scroll-margin-top:92px}
.ex-sec h2{font-size:19px;color:#1548b8;display:flex;gap:9px;align-items:center;margin:0 0 12px}
.ex-sec h2 .ic{width:22px;height:22px}
.ex-panel{background:#fff;border:1px solid var(--line);border-radius:10px;padding:20px 22px;box-shadow:var(--shadow)}
.ex-intro p{margin:0 0 .85em;color:#38445c;line-height:1.75;font-size:15px}
.ex-intro p:last-child{margin-bottom:0}
.ex-product{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap;padding-bottom:14px;margin-bottom:14px;border-bottom:1px dashed var(--line)}
.ex-product .lbl{font-size:12.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px}
.ex-product b{color:var(--navy);font-size:16px}
.ex-bullets{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.ex-bullets li{display:flex;gap:10px;align-items:flex-start;font-size:14.5px;background:#f5f8fd;border-left:3px solid var(--blue);border-radius:8px;padding:11px 14px;color:#33415c}

.ex-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:16px}
.ex-gallery figure{margin:0}
.ex-gallery img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:12px;cursor:zoom-in;box-shadow:var(--shadow);transition:.2s}
.ex-gallery img:hover{transform:translateY(-3px);box-shadow:var(--shadow-2)}
.ex-cta{background:linear-gradient(90deg,#eef6ff,#fff);border:1px solid #cfe0ff;border-radius:10px;padding:20px 22px;display:flex;justify-content:space-between;align-items:center;gap:18px;flex-wrap:wrap}
.ex-cta p{margin:0;color:#3b4a66;font-size:14.5px;max-width:560px;line-height:1.6}
.ex-cta-btns{display:flex;gap:10px;flex-wrap:wrap}
.lightbox{position:fixed;inset:0;background:rgba(0,0,0,.88);z-index:200;display:grid;place-items:center;padding:20px}
.lightbox[hidden]{display:none}
.lightbox img{max-width:94vw;max-height:88vh;border-radius:10px}
.lightbox button{position:absolute;top:16px;right:18px;background:#fff;border:0;border-radius:50%;width:40px;height:40px;font-size:18px;cursor:pointer}
@media(max-width:960px){
  .ex-idrow{grid-template-columns:1fr;text-align:center;justify-items:center;gap:16px;padding:20px}
  .ex-title h1{justify-content:center}.ex-tags{justify-content:center}
  .ex-boothcard{width:100%;max-width:320px}
  .ex-contactrow{padding:14px 18px}
  .ex-layout{grid-template-columns:1fr}
  .ex-layout>aside{min-width:0;max-width:100%}
  .ex-nav{position:static;grid-auto-flow:column;grid-auto-columns:max-content;overflow-x:auto;padding:8px}
  .ex-nav a{white-space:nowrap;padding:9px 12px;font-size:13px}
  .ex-bg{height:230px}
}

/* related exhibitors: compact 5-up */
.rel-cards{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}
.rel-card{display:flex;flex-direction:column;align-items:center;text-align:center;gap:7px;background:#fff;border:1px solid var(--line);border-radius:10px;padding:14px 10px;box-shadow:var(--shadow);color:var(--ink);transition:.2s}
.rel-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-2);border-color:#cfe0ff}
.rel-logo{width:56px;height:56px;border-radius:8px;border:1px solid var(--line);background:#fff;display:grid;grid-template-columns:100%;grid-template-rows:100%;place-items:center;overflow:hidden}
.rel-logo img{width:100%;height:100%;object-fit:contain;padding:4px;box-sizing:border-box}
.rel-logo span{font-weight:900;color:var(--blue);font-size:15px}
.rel-card b{font-size:13px;color:var(--navy);line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.rel-booth{--zc:#0a5fd7;font-size:11.5px;font-weight:800;color:var(--zc);background:color-mix(in srgb,var(--zc) 12%,#fff);border-radius:6px;padding:2px 8px}
.rel-card small{font-size:11.5px;color:var(--muted);line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
@media(max-width:1100px){.rel-cards{grid-template-columns:repeat(3,1fr)}}
@media(max-width:640px){.rel-cards{grid-template-columns:repeat(2,1fr);gap:10px}}

/* ===== Exhibitor detail on mobile (per mobile mockup) ===== */
@media(max-width:760px){
  .ex-bg{height:190px}
  .ex-container{padding-top:12px}
  .ex-back{font-size:13px;margin-bottom:10px}
  .ex-card-main{border-radius:12px;margin-bottom:14px}
  .ex-idrow{grid-template-columns:96px 1fr;gap:14px;text-align:left;justify-items:stretch;align-items:start;padding:16px}
  .ex-logo.lg{width:104px;height:104px}
  .ex-logo.lg img{padding:8px}
  .ex-title h1{font-size:18px;justify-content:flex-start;gap:6px;display:block;line-height:1.35}
  .ex-title h1 .verified{display:inline-grid;vertical-align:-5px;margin-left:4px;width:20px;height:20px}
  .ex-slogan{font-size:13px;margin-bottom:8px}
  .ex-tags{justify-content:flex-start;gap:6px}
  .ex-tag{font-size:11.5px;padding:4px 10px}
  .ex-boothcard{grid-column:1/-1;max-width:none;display:grid;grid-template-columns:1fr 1fr;gap:10px;align-items:center;text-align:left;padding:12px 14px;margin-top:2px}
  .ex-boothcard .k{grid-column:1;margin:0;font-size:11.5px}
  .ex-boothcard .n{grid-column:1;justify-content:flex-start}
  .ex-boothcard .bn{font-size:22px}
  .ex-boothcard .z{grid-column:2;grid-row:1/3;margin:0;border-top:0;border-left:1px solid color-mix(in srgb,var(--zc) 20%,#fff);padding:0 0 0 12px}
  .ex-contactrow{grid-template-columns:1fr 1fr;gap:12px 0;padding:14px 16px}
  .ex-contactrow .ci{padding-right:10px}
  .ex-contactrow .ci+.ci{border-left:0;padding-left:0}
  .ex-contactrow .ci:nth-child(2n){border-left:1px solid var(--line);padding-left:12px}
  .ex-contactrow .ci:nth-child(n+3){border-top:1px solid var(--line);padding-top:12px}
  .ex-contactrow .ib{width:38px;height:38px}
  .ex-contactrow .ib .ic{width:18px;height:18px}
  .ex-contactrow small{font-size:11px}
  .ex-contactrow b{font-size:12.5px}
}
@media(max-width:480px){
  .ex-contactrow{grid-template-columns:1fr;gap:0}
  .ex-contactrow .ci{padding:10px 0;border-left:0!important;padding-left:0!important}
  .ex-contactrow .ci+.ci{border-top:1px solid var(--line)}
  .ex-contactrow b{white-space:normal;overflow:visible;text-overflow:clip;word-break:break-word}
  .ex-layout{gap:14px}
  .ex-nav{border-radius:10px;margin:0 -4px}
  .ex-sec{margin-bottom:18px;scroll-margin-top:70px}
  .ex-sec h2{font-size:16px}
  .ex-sec h2 .ic{width:19px;height:19px}
  .ex-panel{padding:14px 16px;border-radius:10px}
  .ex-intro p{font-size:14px;line-height:1.65}
  .ex-product{gap:4px}
  .ex-product b{font-size:14.5px}
  .ex-bullets li{font-size:13.5px;padding:9px 12px}
  .ex-gallery{grid-template-columns:1fr 1fr;gap:10px}
  .ex-cta{flex-direction:column;align-items:stretch;padding:16px;gap:12px}
  .ex-cta p{font-size:13.5px}
  .ex-cta-btns .btn{width:100%;justify-content:center}
}

/* upload guidance */
.drop small.rec{font-size:11px;color:var(--blue);font-weight:600;margin-top:2px}
.upload-tips{margin-top:14px;background:#f6f9ff;border:1px solid #dbe7fb;border-left:3px solid var(--blue);border-radius:10px;padding:14px 16px;font-size:13px;color:#3b4a66}
.upload-tips>b{display:block;color:var(--blue);margin-bottom:8px;font-size:13.5px}
.upload-tips ul{margin:0;padding-left:18px;display:grid;gap:6px}
.upload-tips li{line-height:1.55}
.upload-tips i{color:var(--muted)}
.files span.small-img{border-color:#f0c36b;background:#fffaf0}
.files em.warn{font-style:normal;font-size:11.5px;color:#8a5a00;font-weight:600;cursor:help}

/* promotion block */
.ex-promo{display:flex;gap:14px;align-items:flex-start;background:#fff;border:1px solid var(--line);border-left:3px solid #16A34A;border-radius:10px;padding:18px 20px;box-shadow:var(--shadow)}
.ex-promo .ib{width:38px;height:38px;border-radius:50%;background:#DCFCE7;border:1px solid #86EFAC;color:#16A34A;display:grid;place-items:center;flex:none}
.ex-promo .ib .ic{width:20px;height:20px}
.ex-promo p{margin:0 0 .7em;color:#38445c;line-height:1.7;font-size:14.5px}
.ex-promo p:last-child{margin-bottom:0}
@media(max-width:760px){.ex-promo{padding:14px 16px;gap:10px}.ex-promo p{font-size:13.5px}}

.deadline-note{display:flex;gap:12px;align-items:center;background:#fff8e8;border:1px solid #f3dda6;border-left:3px solid var(--gold);border-radius:10px;padding:12px 16px;margin-bottom:16px}
.deadline-note .ic{color:#c98a00;width:24px;height:24px;flex:none}
.deadline-note b{display:block;color:#7a5a00;font-size:14px}
.deadline-note span{font-size:13px;color:#8a6a1f}

/* promotion badge & filter (palette: #16A34A / #DCFCE7 / #86EFAC / #15803D) */
.ex-badges{display:flex;flex-direction:column;align-items:flex-end;gap:6px}
.promo-badge{display:inline-flex;align-items:center;gap:6px;background:#DCFCE7;border:1px solid #86EFAC;color:#16A34A;font-size:11.5px;font-weight:700;padding:4px 10px;border-radius:999px;white-space:nowrap}
.promo-badge .ic{width:14px;height:14px}
.ex-card:hover .promo-badge{color:#15803D;border-color:#16A34A}
.fcheck.promo-filter span{display:inline-flex;align-items:center;gap:6px;color:#15803D;font-weight:600}
.fcheck.promo-filter .ic{width:16px;height:16px;color:#16A34A}
.fcheck.promo-filter:hover,.fcheck.promo-filter.on{background:#DCFCE7}
.fcheck.promo-filter input{accent-color:#16A34A}
.msg.warn{background:#fff8e8;color:#8a5a00;border:1px solid #f3dda6}
.booth-info{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;background:#eef6ff;border:1px solid #cfe0ff;border-radius:10px;padding:12px 16px;margin:10px 0 0;font-size:14px}
.booth-info b{color:var(--navy)}
.booth-info span{color:var(--muted);font-size:13.5px}

/* ===== Tourism page ===== */
.dl-hero{position:relative;color:#0b2a6f;background:#dbeafe}
.dl-hero .bg,.dl-hero::after{border-radius:0}
.dl-hero .bg{position:absolute;inset:0;background:url(/img/dl_hero.jpg) center/cover no-repeat;z-index:0;overflow:hidden}
.dl-hero::after{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(90deg,rgba(255,255,255,.95) 0%,rgba(255,255,255,.86) 30%,rgba(255,255,255,.25) 52%,rgba(255,255,255,0) 72%)}
.dl-hero .container{position:relative;z-index:2;padding:44px 0 96px}
.dl-hero-in{display:block;min-height:clamp(300px,30vw,420px);display:flex;align-items:center}
.dl-hero .kicker{font-size:12px;font-weight:800;letter-spacing:1.6px;color:#1548b8;margin-bottom:8px}
.dl-hero h1{font-size:clamp(30px,4.2vw,54px);font-weight:900;color:#0b2a6f;line-height:1.12;margin:0 0 12px;letter-spacing:-.5px}
.dl-hero .sub{font-size:clamp(14.5px,1.2vw,17px);color:#3b4a66;max-width:460px;margin:0 0 22px}
.dl-hero .actions{display:flex;gap:12px;flex-wrap:wrap}
.dl-hero .btn-light{border-color:#0a5fd7;color:#0a5fd7;background:rgba(255,255,255,.9)}
.dl-hero .btn-light:hover{background:#fff}
.dl-quote{justify-self:end;align-self:center;text-align:right;font-family:"Times New Roman",Times,Georgia,serif;font-style:italic;font-size:clamp(15px,1.4vw,20px);color:#0b2a6f;text-shadow:0 2px 12px rgba(255,255,255,.9);max-width:280px}
.dl-chips{position:absolute;right:0;bottom:26px;z-index:3;display:inline-flex;gap:4px;padding:6px;background:rgba(7,29,74,.7);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.18);border-radius:14px;box-shadow:0 16px 38px rgba(7,29,74,.32)}
.dl-chips a{display:inline-flex;gap:9px;align-items:center;padding:10px 18px;border-radius:10px;color:#fff;font-weight:600;font-size:14px;white-space:nowrap;transition:.2s}
.dl-chips a:hover{background:rgba(255,255,255,.14)}
.dl-chips .ic{color:#7fd4ff;width:18px;height:18px}
.dl-quick{gap:16px;margin-top:22px}
.dl-q{display:flex;gap:12px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px;box-shadow:var(--shadow);color:var(--ink);transition:.2s}
.dl-q:hover{transform:translateY(-3px);box-shadow:var(--shadow-2);border-color:#cfe0ff}
.dl-q .ib{width:48px;height:48px;border-radius:12px;background:var(--sky);color:var(--blue);display:grid;place-items:center;flex:none}
.dl-q>div{flex:1;min-width:0}
.dl-q b{display:block;color:var(--navy);font-size:14px;line-height:1.3}
.dl-q span{font-size:12.5px;color:var(--muted);line-height:1.4;display:block;margin-top:2px}
.dl-q>.ic{color:var(--blue);flex:none}
.section-head h2{border-left:4px solid var(--blue);padding-left:12px}
.section-head h2::after{display:none}
.dl-cards{display:grid;grid-template-columns:repeat(6,1fr);gap:14px}
.dl-cards.food{grid-template-columns:repeat(5,1fr)}
.dl-card{background:#fff;border:1px solid var(--line);border-radius:12px;overflow:hidden;box-shadow:var(--shadow);transition:.2s;display:flex;flex-direction:column}
.dl-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-2)}
.dl-card .pic{aspect-ratio:4/3;background:#0b2a6f center/cover no-repeat;position:relative;display:grid;place-items:center}
.dl-card .pic>.ic{width:46px;height:46px;color:#fff;opacity:.9;stroke-width:1.6}
.dl-card .pic.d2{background:linear-gradient(135deg,#f0b429,#f6d365)}
.dl-card .pic.d3{background:linear-gradient(135deg,#1d9bd1,#7fd4ff)}
.dl-card .pic.d4{background:linear-gradient(135deg,#2a9d8f,#84d9cf)}
.dl-card .pic.d5{background:linear-gradient(135deg,#2f9e44,#8ce99a)}
.dl-card .pic.d6{background:linear-gradient(135deg,#c2187a,#f28cc4)}
.dl-card .km{position:absolute;right:8px;top:8px;background:rgba(7,29,74,.78);color:#fff;font-size:11px;font-weight:700;padding:3px 8px;border-radius:999px;display:inline-flex;gap:4px;align-items:center}
.dl-card .km .ic{width:12px;height:12px;color:#7fd4ff}
.dl-card .body{padding:12px 13px 14px}
.dl-card h3{font-size:14px;color:var(--navy);margin:0 0 5px;line-height:1.3}
.dl-card p{font-size:12.5px;color:var(--muted);margin:0;line-height:1.5}
.dl-card.food .pic{display:grid;place-items:center;aspect-ratio:4/3;background-color:#0b2a6f;background-size:cover;background-position:center}
.dl-card.food .pic .ic{width:44px;height:44px;color:#fff;opacity:.92}
.dl-card.food .pic.f1{background:linear-gradient(135deg,#f5b971,#f7d9a8)}
.dl-card.food .pic.f2{background:linear-gradient(135deg,#e8563f,#f79c78)}
.dl-card.food .pic.f3{background:linear-gradient(135deg,#c2544d,#e79a86)}
.dl-card.food .pic.f4{background:linear-gradient(135deg,#d99a3f,#f0cd8f)}
.dl-card.food .pic.f5{background:linear-gradient(135deg,#69a84f,#b3d99b)}
.dl-plans{gap:16px}
.dl-plan{background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px 18px;box-shadow:var(--shadow)}
.dl-plan .head{display:flex;gap:9px;align-items:center;margin-bottom:12px;flex-wrap:wrap}
.dl-plan .head .ic{color:var(--blue);width:20px;height:20px}
.dl-plan .head b{color:var(--navy);font-size:15px;flex:1}
.tag-time{background:var(--sky);color:var(--blue);font-size:11.5px;font-weight:700;padding:3px 10px;border-radius:999px}
.dl-plan ol{list-style:none;margin:0;padding:0 0 0 6px;border-left:2px solid var(--sky-2);display:grid;gap:12px}
.dl-plan li{display:grid;grid-template-columns:54px 1fr;gap:8px;position:relative;padding-left:14px;font-size:13.5px}
.dl-plan li::before{content:"";position:absolute;left:-7px;top:5px;width:10px;height:10px;border-radius:50%;background:var(--blue);border:2px solid #fff;box-shadow:0 0 0 2px var(--sky-2)}
.dl-plan li b{color:var(--blue);font-size:13px}
.dl-plan li span{color:#3b4a66;line-height:1.45}
.dl-utils{gap:16px}
.dl-util{background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px 18px;box-shadow:var(--shadow)}
.dl-util .h{display:flex;gap:9px;align-items:center;margin-bottom:10px}
.dl-util .h .ic{color:var(--blue);width:20px;height:20px;flex:none}
.dl-util .h b{color:var(--navy);font-size:14px;line-height:1.3}
.dl-util ul{margin:0;padding-left:16px;display:grid;gap:6px}
.dl-util li{font-size:13px;color:#3b4a66;line-height:1.5}
.dl-map{display:grid;grid-template-columns:300px 1fr;gap:18px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:18px;box-shadow:var(--shadow)}
.dl-map-side .ib{width:48px;height:48px;border-radius:12px;background:var(--sky);color:var(--blue);display:grid;place-items:center;margin-bottom:10px}
.dl-map-side b{display:block;color:var(--navy);font-size:15px;margin-bottom:6px}
.dl-map-side p{font-size:13.5px;color:var(--muted);margin:0 0 14px;line-height:1.55}
.dl-map-pic{background:url(/img/dl_map.jpg) center/cover;border-radius:12px;padding:16px;position:relative;overflow:hidden}
.dl-map-pic::before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(255,255,255,.93),rgba(255,255,255,.72))}
.dl-map-pic ul{position:relative;list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:10px 18px}
.dl-map-pic li{display:flex;gap:8px;align-items:center;font-size:13.5px;background:rgba(255,255,255,.88);border:1px solid #dbe7fb;border-radius:9px;padding:9px 12px}
.dl-map-pic li .ic{color:#e5322d;width:17px;height:17px;flex:none}
.dl-map-pic li b{color:var(--navy);flex:1;font-size:13.5px}
.dl-map-pic li span{color:var(--muted);font-size:12.5px;white-space:nowrap}
.dl-note{font-size:12.5px;color:var(--muted);line-height:1.6;margin:12px 0 0}
.dl-util li a{color:var(--blue);font-weight:600;text-decoration:underline;text-underline-offset:2px}
.dl-util li a:hover{color:#0a47a8}
.dl-credit{border:1px solid var(--line);border-radius:12px;background:#fff;padding:12px 16px;box-shadow:var(--shadow)}
.dl-credit>summary{cursor:pointer;font-size:13px;font-weight:700;color:var(--navy);list-style:none}
.dl-credit>summary::-webkit-details-marker{display:none}
.dl-credit>summary::before{content:"▸ ";color:var(--blue)}
.dl-credit[open]>summary::before{content:"▾ "}
.dl-credit ul{margin:10px 0 2px;padding-left:18px;display:grid;gap:5px}
.dl-credit li{font-size:12.5px;color:var(--muted);line-height:1.55}
.dl-credit li b{color:#3b4a66;font-weight:600}
.dl-credit a{color:var(--blue);text-decoration:underline;text-underline-offset:2px}
.dl-cta{position:relative;color:#fff;overflow:hidden;margin-top:10px}
.dl-cta .bg{position:absolute;inset:0;background:url(/img/dl_cta.jpg) center 40%/cover}
.dl-cta::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(7,29,74,.88),rgba(7,29,74,.6))}
.dl-cta .container{position:relative;z-index:1;padding:30px 0;display:flex;align-items:center;gap:24px;flex-wrap:wrap}
.dl-cta b{display:block;font-size:clamp(17px,1.8vw,22px);font-weight:800}
.dl-cta span{font-size:13.5px;color:#dbe8ff}
.dl-cta .dl-cta-btns{display:flex;gap:10px;flex-wrap:wrap;margin-left:auto}
.dl-cta .script{font-family:"Times New Roman",Times,Georgia,serif;font-style:italic;font-size:18px;line-height:1.3;text-align:right}
@media(max-width:1100px){.dl-cards{grid-template-columns:repeat(3,1fr)}.dl-cards.food{grid-template-columns:repeat(3,1fr)}}
@media(max-width:900px){
  .dl-hero .bg{background-image:url(/img/dl_hero_m.jpg);background-position:center 18%}
  .dl-hero::after{background:linear-gradient(180deg,rgba(255,255,255,.9) 0%,rgba(255,255,255,.72) 45%,rgba(255,255,255,.9) 100%)}
  .dl-hero .container{padding:26px 0 22px}
  .dl-hero-in{grid-template-columns:1fr;min-height:0}
  .dl-quote{justify-self:start;text-align:left;margin-top:6px}
  .dl-chips{position:static;display:flex;flex-direction:column;align-items:stretch;gap:2px;margin:18px 0 0}
  .dl-chips a{justify-content:center}
  .dl-map{grid-template-columns:1fr}
  .dl-map-pic ul{grid-template-columns:1fr}
  .dl-cta .container{flex-direction:column;align-items:flex-start;text-align:left}
  .dl-cta .dl-cta-btns{margin-left:0}
  .dl-cta .script{display:none}
}
@media(max-width:640px){
  .dl-cards,.dl-cards.food{grid-template-columns:1fr 1fr;gap:10px}
  .dl-card h3{font-size:13px}.dl-card p{font-size:11.5px}
  .dl-hero h1{font-size:30px}
  .dl-q{padding:12px}.dl-q .ib{width:40px;height:40px}
  .dl-plan li{grid-template-columns:48px 1fr;font-size:12.5px}
}

/* ===== Trợ lý ảo (chat widget) ===== */
#tfchat{position:fixed;right:20px;bottom:20px;z-index:150;display:flex;flex-direction:column;align-items:flex-end;gap:12px}
.tfc-fab{order:2}
.tfc-panel{order:1}
.tfc-fab{display:inline-flex;align-items:center;gap:8px;background:var(--blue);color:#fff;border:0;border-radius:999px;padding:13px 20px;font-weight:700;font-size:14px;cursor:pointer;box-shadow:0 12px 30px rgba(10,95,215,.4);transition:.2s}
.tfc-fab:hover{background:#0a47a8;transform:translateY(-2px)}
.tfc-fab .ic{width:19px;height:19px}
#tfchat.on .tfc-fab{background:var(--navy)}
.tfc-panel[hidden]{display:none}
.tfc-panel{width:min(94vw,382px);height:min(72vh,560px);background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:0 26px 60px rgba(7,29,74,.3);display:flex;flex-direction:column;overflow:hidden;animation:tfcIn .2s ease-out}
@keyframes tfcIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.tfc-head{display:flex;gap:10px;align-items:center;padding:13px 14px;background:linear-gradient(135deg,#0b2a6f,#0a5fd7);color:#fff;flex:none}
.tfc-head b{display:block;font-size:14px;line-height:1.3}
.tfc-head span{font-size:11.5px;color:#cfe0ff}
.tfc-head>div:nth-child(2){flex:1;min-width:0}
.tfc-x{background:transparent;border:0;color:#fff;font-size:24px;line-height:1;cursor:pointer;opacity:.8;padding:0 2px}
.tfc-x:hover{opacity:1}
.tfc-ava{width:36px;height:36px;border-radius:10px;background:rgba(255,255,255,.18);display:grid;place-items:center;flex:none}
.tfc-ava .ic{width:20px;height:20px;color:#fff}
.tfc-ava.sm{width:26px;height:26px;border-radius:8px;background:var(--sky)}
.tfc-ava.sm .ic{width:15px;height:15px;color:var(--blue)}
.tfc-body{flex:1;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:11px;background:#f7f9ff}
.tfc-m{display:flex;gap:8px;align-items:flex-start;max-width:100%}
.tfc-m.me{justify-content:flex-end}
.tfc-bub{background:#fff;border:1px solid var(--line);border-radius:12px;padding:9px 12px;max-width:84%;box-shadow:0 2px 8px rgba(7,29,74,.05)}
.tfc-m.me .tfc-bub{background:var(--blue);border-color:var(--blue);color:#fff}
.tfc-bub p{margin:0;font-size:13.5px;line-height:1.55;color:#28344d}
.tfc-m.me .tfc-bub p{color:#fff}
.tfc-links{display:flex;flex-direction:column;gap:5px;margin-top:8px;padding-top:8px;border-top:1px solid var(--line)}
.tfc-links a{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;font-weight:600;color:var(--blue)}
.tfc-links a .ic{width:13px;height:13px}
.tfc-dot{display:inline-block;width:6px;height:6px;margin:0 2px;border-radius:50%;background:#9db4dd;animation:tfcBlink 1.2s infinite}
.tfc-dot:nth-child(2){animation-delay:.2s}.tfc-dot:nth-child(3){animation-delay:.4s}
@keyframes tfcBlink{0%,60%,100%{opacity:.3}30%{opacity:1}}
.tfc-chips[hidden]{display:none}
.tfc-chips{display:flex;flex-wrap:wrap;gap:6px;padding:0 14px 10px;background:#f7f9ff;flex:none}
.tfc-chips button{background:#fff;border:1px solid #cfe0ff;color:var(--blue);border-radius:999px;padding:6px 12px;font-size:12.5px;font-weight:600;cursor:pointer;transition:.15s}
.tfc-chips button:hover{background:var(--sky)}
.tfc-form{display:flex;gap:8px;padding:10px 12px 6px;border-top:1px solid var(--line);flex:none}
.tfc-form input{flex:1;border:1px solid var(--line);border-radius:10px;padding:10px 12px;font:inherit;font-size:14px;outline:0}
.tfc-form input:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(10,95,215,.12)}
.tfc-form button{background:var(--blue);border:0;border-radius:10px;width:42px;display:grid;place-items:center;cursor:pointer;flex:none}
.tfc-form button:hover{background:#0a47a8}
.tfc-form button .ic{color:#fff;width:18px;height:18px}
.tfc-note{margin:0;padding:0 12px 11px;font-size:10.5px;color:var(--muted);line-height:1.45}
@media(max-width:640px){
  #tfchat{right:12px;bottom:12px;left:12px;align-items:flex-end}
  .tfc-fab span{display:none}
  .tfc-fab{padding:14px;border-radius:50%}
  .tfc-panel{width:100%;height:min(78vh,540px)}
}

.form .fixed-val{display:flex;flex-direction:column;justify-content:center;gap:2px;min-height:46px;padding:7px 14px;
  border:1px solid var(--line);border-radius:10px;background:var(--sky);color:var(--navy);font-weight:700;font-size:15px}
.form .fixed-val span{font-weight:500;font-size:11.5px;color:var(--muted);line-height:1.4}
.form .fixed-val.muted{background:var(--bg);color:var(--muted);font-weight:600;font-size:14px}
.form h4 .req-star{color:#e5322d;font-weight:700}

/* Đầu trang kiểu hai cột: nội dung bên trái, số liệu bên phải. Xuống hàng trên máy hẹp. */
.hero .hero-split{padding:36px 0 30px;display:grid;grid-template-columns:1.4fr 1fr;gap:24px;align-items:center}
.hero .hero-split .pills{margin:0;justify-content:flex-end}
@media(max-width:820px){
  .hero .hero-split{grid-template-columns:1fr;gap:16px;padding:26px 0 24px}
  .hero .hero-split .pills{justify-content:flex-start}
}

/* ===== Địa điểm tổ chức (trang chủ) ===== */
.venue{display:grid;grid-template-columns:1.45fr 1fr;gap:17px;align-items:stretch}
.venue-map{position:relative;border-radius:14px;overflow:hidden;min-height:306px;border:1px solid var(--line);box-shadow:var(--shadow);background:#e8eef7}
.venue-map iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.venue-map .map-open{position:absolute;left:12px;bottom:12px;box-shadow:0 6px 18px rgba(7,29,74,.22);gap:6px;font-size:13px;padding:9px 16px}
.venue-card{background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);padding:19px;display:flex;flex-direction:column;gap:12px}
.venue-card .v-row{display:flex;gap:10px;align-items:flex-start}
.venue-card .v-row .ib{width:36px;height:36px;border-radius:10px;background:var(--sky);color:var(--blue);display:grid;place-items:center;flex:none}
.venue-card .v-row .ib .ic{width:18px;height:18px}
.venue-card .v-row b{display:block;color:var(--navy);font-size:14.5px;line-height:1.3}
.venue-card .v-row span{font-size:12.5px;color:var(--muted)}
.venue-card .v-list{list-style:none;margin:0;padding:12px 0 0;border-top:1px solid var(--line);display:grid;gap:8px}
.venue-card .v-list li{display:flex;gap:8px;align-items:center;font-size:13px;color:var(--ink)}
.venue-card .v-list .ic{width:15px;height:15px;color:#00b060;flex:none}
.venue-card .v-actions{margin-top:auto;padding-top:4px;display:grid;gap:9px}
.venue-card .v-actions .btn{width:100%;font-size:13.5px;padding:11px 18px}
.btn-navy{background:var(--navy-2);color:#fff}
.btn-navy:hover{background:#061a45}
@media(max-width:900px){.venue{grid-template-columns:1fr}.venue-map{min-height:250px}}
@media(max-width:420px){.venue-card{padding:16px}.venue-card .v-actions .btn{font-size:12.5px;padding:11px 12px}}

/* ===== Dải nhắc bản thử nghiệm (chỉ hiện trên testnet.*) ===== */
#testnet-bar{position:fixed;left:10px;bottom:10px;z-index:300;pointer-events:none;opacity:.55;transition:.2s}
#testnet-bar:hover{opacity:1}
#testnet-bar b{display:inline-block;background:rgba(124,45,18,.92);color:#fff;padding:4px 10px;border-radius:6px;
  font-size:11px;font-weight:800;letter-spacing:.08em;box-shadow:0 4px 14px rgba(0,0,0,.25);pointer-events:auto;cursor:help}
svg.booth-map .booth-code.small{font-size:7.4px;letter-spacing:-.2px}

/* ===== Đơn vị đồng hành / Nhà tài trợ ===== */
.sp-tier-sec{margin-bottom:34px}
.sp-tier-sec .section-head h2 .ic{width:22px;height:22px;margin-right:6px;vertical-align:-4px}
.tier-diamond .section-head h2 .ic{color:#b45309}.tier-gold .section-head h2 .ic{color:#ca8a04}.tier-silver .section-head h2 .ic{color:#64748b}.tier-partner .section-head h2 .ic{color:var(--blue)}
.sp-grid{display:grid;gap:16px}
.sp-grid.xl{grid-template-columns:repeat(2,1fr)}.sp-grid.lg{grid-template-columns:repeat(3,1fr)}.sp-grid.md{grid-template-columns:repeat(4,1fr)}.sp-grid.sm{grid-template-columns:repeat(6,1fr)}
.sp-card{display:flex;gap:16px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:18px;box-shadow:var(--shadow);color:var(--ink);transition:.2s;align-items:flex-start}
.sp-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-2);border-color:#cfe0ff}
.sp-card.md,.sp-card.sm{flex-direction:column;align-items:center;text-align:center;padding:16px 12px}
.sp-card .sp-logo{flex:none;width:92px;height:92px;border-radius:12px;border:1px solid var(--line);background:#fff;display:grid;place-items:center;padding:8px}
.sp-card.xl .sp-logo{width:120px;height:120px}.sp-card.sm .sp-logo{width:76px;height:76px}
.sp-card .sp-logo img{max-width:100%;max-height:100%;object-fit:contain}
.sp-card .sp-logo span{font-weight:900;color:var(--navy);font-size:22px}
.sp-body{flex:1;min-width:0}
.sp-tier{display:inline-flex;align-items:center;gap:5px;font-size:10.5px;font-weight:800;letter-spacing:.02em;text-transform:uppercase;padding:3px 9px;border-radius:999px;margin-bottom:6px;white-space:nowrap}
.sp-tier .ic{width:12px;height:12px}
.tier-diamond .sp-tier,.sp-badge.tier-diamond{background:#fef3c7;color:#92400e;border:1px solid #fcd34d}
.tier-gold .sp-tier,.sp-badge.tier-gold{background:#fef9c3;color:#854d0e;border:1px solid #fde047}
.tier-silver .sp-tier,.sp-badge.tier-silver{background:#f1f5f9;color:#334155;border:1px solid #cbd5e1}
.tier-partner .sp-tier,.sp-badge.tier-partner{background:#dbeafe;color:#1e40af;border:1px solid #93c5fd}
.sp-card h3{margin:0 0 4px;font-size:17px;color:var(--navy);line-height:1.3}
.sp-card.xl h3{font-size:21px}.sp-card.sm h3{font-size:13.5px}.sp-card.md h3{font-size:15px}
.sp-card p{margin:0 0 8px;font-size:13px;color:var(--muted);line-height:1.5}
.sp-card.sm p,.sp-card.sm .ex-tags{display:none}
.sp-card .ex-tags{margin:6px 0 8px}
.sp-more{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;font-weight:700;color:var(--blue)}
.sp-more .ic{width:13px;height:13px}
/* chi tiết */
.sp-hero{display:grid;grid-template-columns:1fr}
.sp-hero-l{display:flex;gap:20px;padding:22px 24px;align-items:flex-start}
.sp-hero-r{position:relative;background:#0b2a6f center/cover;display:flex;flex-direction:column;align-items:flex-end;justify-content:space-between;padding:22px;color:#fff;text-align:right}
.sp-hero-r::before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(7,29,74,.55),rgba(7,29,74,.15))}
.sp-hero-r>*{position:relative}
.sp-slogan{font-size:clamp(16px,1.6vw,22px);font-weight:900;line-height:1.25;text-transform:uppercase;max-width:280px;text-shadow:0 2px 10px rgba(0,0,0,.45)}
.sp-video{display:inline-flex;align-items:center;gap:8px;background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.5);backdrop-filter:blur(6px);color:#fff;font-weight:700;font-size:13px;padding:9px 14px;border-radius:999px}
.sp-video:hover{background:rgba(255,255,255,.28)}
.sp-badge{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:800;letter-spacing:.06em;padding:4px 12px;border-radius:999px;margin-bottom:8px}
.sp-badge .ic{width:13px;height:13px}
.sp-side-cta{margin-top:14px;background:linear-gradient(135deg,#0b2a6f,#0a5fd7);color:#fff;border-radius:12px;padding:18px}
.sp-side-cta b{display:block;font-size:15px;line-height:1.35;margin-bottom:12px}
.sp-side-cta .btn{width:100%;justify-content:center}
.sp-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:16px}
.sp-stat{border:1px solid var(--line);border-radius:10px;padding:14px 12px;text-align:center;background:#f8fbff}
.sp-stat b{display:block;font-size:22px;color:var(--blue);font-weight:900;line-height:1.1;margin-bottom:4px}
.sp-stat span{font-size:12.5px;color:var(--muted)}
.sp-acts{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.sp-act{background:#fff;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.sp-act .pic{aspect-ratio:16/10;background:#fff;display:grid;grid-template-columns:100%;grid-template-rows:100%;place-items:center;overflow:hidden;border-bottom:1px solid var(--line)}
.sp-act .pic img{width:100%;height:100%;object-fit:contain;padding:8px;box-sizing:border-box}
.sp-act .pic.ph{display:grid;place-items:center;background:var(--sky);color:var(--blue)}
.sp-act .t{padding:10px 12px}.sp-act .t b{display:block;font-size:13.5px;color:var(--navy)}.sp-act .t span{font-size:12px;color:var(--muted)}
.sp-companion{display:grid;grid-template-columns:1.2fr 1fr;gap:20px;align-items:start}
.sp-points{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:9px}
.sp-points li{display:flex;gap:10px;align-items:flex-start;font-size:13.5px;color:#28344d}
.sp-points li .ic{flex:none;width:20px;height:20px;color:#15803d;background:#dcfce7;border-radius:50%;padding:3px}
.sp-companion-pic{aspect-ratio:4/3;border-radius:12px;background:#0b2a6f center/cover;box-shadow:var(--shadow-2)}
.sp-video-frame{position:relative;padding-top:56.25%;border-radius:12px;overflow:hidden;background:#000}
.sp-video-frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.sp-docs{display:grid;gap:10px}
.sp-doc{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--line);border-radius:10px;padding:12px 14px;color:var(--ink)}
.sp-doc:hover{border-color:#cfe0ff;background:#f8fbff}
.sp-doc .ic-pdf{flex:none;background:#dc2626;color:#fff;font-size:10px;font-weight:900;padding:6px 7px;border-radius:6px}
.sp-doc div{flex:1;min-width:0}.sp-doc b{display:block;font-size:13.5px;color:var(--navy)}.sp-doc span{font-size:12px;color:var(--muted)}
.sp-doc .ic{color:var(--blue)}
.sp-cta{margin-top:36px}
@media(max-width:1100px){.sp-grid.md{grid-template-columns:repeat(3,1fr)}.sp-grid.sm{grid-template-columns:repeat(4,1fr)}.sp-stats,.sp-acts{grid-template-columns:repeat(2,1fr)}}
@media(max-width:900px){.sp-hero{grid-template-columns:1fr}.sp-hero-r{min-height:160px;align-items:flex-start;text-align:left}.sp-companion{grid-template-columns:1fr}}
@media(max-width:640px){.sp-grid.xl,.sp-grid.lg{grid-template-columns:1fr}.sp-grid.md,.sp-grid.sm{grid-template-columns:repeat(2,1fr)}.sp-hero-l{flex-direction:column}.sp-stats,.sp-acts{grid-template-columns:1fr 1fr}.sp-cta{margin-top:20px}}
/* hội thảo chuyên đề trong form đăng ký tham dự */
.checks.ws{grid-template-columns:1fr}
.checks.ws .check .lbl small{display:block;font-size:12px;color:var(--muted);font-weight:400;line-height:1.4;margin-top:2px}
.checks.ws .check.off{opacity:.5}
.checks.ws .check.off:hover{opacity:.7}

/* điểm nhấn: thẻ bấm được + hộp chi tiết */
#highlights .tile{position:relative;width:100%;text-align:left;font:inherit;color:inherit;cursor:pointer;-webkit-appearance:none;appearance:none}
#highlights .tile:hover b{text-decoration:underline;text-underline-offset:3px}
#highlights .tile:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.info-modal{position:relative;max-width:680px}
.info-modal .x{position:absolute;right:14px;top:14px;width:34px;height:34px;border-radius:50%;border:1px solid var(--line);background:#fff;color:var(--muted);font-size:20px;line-height:1;cursor:pointer;transition:.2s}
.info-modal .x:hover{background:var(--sky);color:var(--blue);border-color:#cfe0ff}
.info-modal h3{padding-right:44px;align-items:center;font-size:20px}
.info-modal h3 .ib{width:42px;height:42px;border-radius:12px;background:var(--sky);color:var(--blue);display:grid;place-items:center;flex:none}
.info-modal h3 .ib .ic{width:21px;height:21px}
.info-modal .lead{margin:10px 0 18px;color:var(--muted);font-size:14.5px;line-height:1.6}
.info-modal .sum{margin:0;padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:#fafcff;grid-template-columns:120px 1fr}
.info-modal h4{margin:20px 0 10px;font-size:14px;color:var(--navy);text-transform:uppercase;letter-spacing:.6px}
.info-modal ul{margin:0;padding-left:20px;font-size:14.5px;line-height:1.65;color:var(--ink)}
.info-modal ul li+li{margin-top:7px}
.info-modal .note{margin-top:16px;padding:11px 13px;border-radius:10px;background:var(--sky);color:var(--navy);font-size:13px;line-height:1.55;display:flex;gap:8px;align-items:flex-start}
.info-modal .note .ic{width:16px;height:16px;flex:none;margin-top:2px}
.info-modal .foot{border-top:1px solid var(--line);padding-top:16px}
@media(max-width:600px){
  .info-modal{padding:20px 18px}
  .info-modal h3{font-size:17px}
  .info-modal .sum{grid-template-columns:1fr;padding:12px 14px}
  .info-modal .foot .btn{flex:1}
}

/* ===== Thẻ đơn vị trên trang chủ (Đơn vị đồng hành + Gian hàng tham gia) =====
   Tỉ lệ theo bản thiết kế: logo lớn bên trái, tên 2 dòng, hàng nhãn, rồi hàng cuối
   gồm mô tả 2 dòng bên trái và nút "Xem chi tiết" bên phải.
   min-width:0 là BẮT BUỘC — ô lưới mặc định rộng tối thiểu bằng min-content, chữ dài
   sẽ đẩy cột phình ra ngoài màn hình dù cột khai là 1fr.
   Chiều cao các phần chữ khoá cứng vì trình duyệt chuẩn hoá display thành flow-root,
   khiến -webkit-line-clamp một mình không cắt được và các thẻ sẽ so le nhau. */
.ex-home{align-items:stretch}
.ex-card-h{display:flex;gap:14px;align-items:flex-start;padding:14px 16px;text-decoration:none;color:inherit;
  border:1px solid var(--line);border-radius:14px;background:var(--card);transition:.18s;
  min-width:0;overflow:hidden}
.ex-card-h:hover{border-color:var(--blue);box-shadow:0 8px 20px rgba(10,95,215,.10);transform:translateY(-2px)}
.ex-h-logo{flex:none;width:87px;height:87px;border:1px solid var(--line);border-radius:12px;background:#fff;
  display:grid;place-items:center;overflow:hidden;
  /* Canh giữa theo chiều dọc: khoảng trống phía trên và dưới logo bằng nhau.
     Khối chữ vẫn bám mép trên nên tên đơn vị không bị đẩy xuống. */
  align-self:center}
.ex-h-logo img{max-width:86%;max-height:86%;object-fit:contain}
.ex-h-logo svg{width:28px;height:28px;color:var(--gray)}
.ex-h-body{min-width:0;flex:1;display:flex;flex-direction:column}
.ex-h-body h3{margin:0;font-size:15px;font-weight:700;line-height:1.3;color:var(--navy);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
  height:calc(2 * 1.3 * 15px);overflow:hidden;overflow-wrap:anywhere}
.ex-h-meta{display:flex;flex-wrap:nowrap;gap:6px;align-items:center;height:24px;overflow:hidden;margin-top:5px}
.ex-h-meta .ex-tag{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;font-size:12px;padding:3px 9px}
.ex-h-booth{display:inline-flex;align-items:center;gap:3px;font-size:12px;font-weight:600;color:var(--blue);flex:none}
.ex-h-booth svg{width:14px;height:14px}
.ex-h-foot{display:flex;gap:10px;align-items:flex-end;justify-content:space-between;margin-top:6px}
.ex-h-desc{margin:0;font-size:12.5px;line-height:1.5;color:var(--muted);flex:1;min-width:0;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow-wrap:anywhere;
  height:calc(2 * 1.5 * 12.5px);overflow:hidden}
.ex-h-btn{flex:none;pointer-events:none;white-space:nowrap}
/* Thẻ hẹp thì không đủ chỗ cho cả mô tả lẫn nút; bỏ nút đi, cả thẻ vốn đã là liên kết. */
@media(max-width:1180px){.ex-h-btn{display:none}}
.home-ex-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;margin-top:22px}
/* Bề rộng tối thiểu lấy theo nút có chữ dài nhất, để ba nút bằng nhau chằn chặn
   thay vì mỗi nút một bề ngang theo độ dài chữ, nhìn so le. */
.home-ex-actions .btn{min-width:235px;justify-content:center}
@media(max-width:640px){
  /* Trên điện thoại các nút xếp dọc và RỘNG BẰNG NHAU — để mỗi nút một bề ngang
     theo độ dài chữ thì nhìn so le, thiếu ngay ngắn. */
  .home-ex-actions{flex-direction:column;align-items:stretch;gap:8px}
  .home-ex-actions .btn{min-width:0;width:100%}
  .ex-h-logo{width:73px;height:73px}
}
