/* ============================================================================
 * Portal design tokens
 * Premium white-led palette with restrained crimson accent.
 * Navy is reserved for text and small emphasis â€” never as full header backgrounds.
 * Avoid hard-coded hex outside this block so the palette can be swapped in one place.
 * ========================================================================== */

:root {
  /* Brand palette */
  --color-primary-50:  #f4f7fb;
  --color-primary-100: #e6eef7;
  --color-primary-200: #c9d8eb;
  --color-primary-300: #9bb6d4;
  --color-primary-400: #5a7fa8;
  --color-primary-500: #16335e; /* navy â€” text & focus */
  --color-primary-600: #0f284a;
  --color-primary-700: #0a1d36;
  --color-primary-800: #061224;
  --color-primary-900: #030a16;

  --color-accent-500: #c8102e; /* crimson â€” accent only */
  --color-accent-600: #a40d26;
  --color-accent-50:  #fbeaee;

  /* Neutrals */
  --color-bg:          #f6f7f9;
  --color-surface:     #ffffff;
  --color-surface-2:   #f9fafc;
  --color-border:      #e6e9ef;
  --color-border-strong: #d3d8e0;
  --color-text:        #0f172a;
  --color-text-muted:  #5a6172;
  --color-text-soft:   #8892a3;
  --color-text-inverse:#ffffff;

  /* Semantic */
  --color-success: #1e7a3f;
  --color-warning: #b46a00;
  --color-danger:  #b3261e;
  --color-info:    #0c5f8a;

  /* Typography */
  --font-display: "Be Vietnam Pro", "Roboto", "Inter", system-ui, -apple-system, "Segoe UI", Arial, sans-serif;
  --font-body:    "Be Vietnam Pro", "Roboto", "Inter", system-ui, -apple-system, "Segoe UI", Arial, sans-serif;
  --font-mono:    "Cascadia Code", "JetBrains Mono", Consolas, monospace;

  --fs-xs: 0.75rem;
  --fs-sm: 0.875rem;
  --fs-base: 1rem;
  --fs-lg: 1.125rem;
  --fs-xl: 1.25rem;
  --fs-2xl: 1.5rem;
  --fs-3xl: 1.875rem;
  --fs-4xl: 2.25rem;

  /* Spacing scale */
  --sp-1: 4px;
  --sp-2: 8px;
  --sp-3: 12px;
  --sp-4: 16px;
  --sp-5: 24px;
  --sp-6: 32px;
  --sp-7: 48px;
  --sp-8: 64px;
  /* sp-9 và sp-10 từng bị dùng ở trang Dịch vụ mà chưa hề khai báo. CSS không
     bỏ qua một var() hỏng rồi dùng luật trước đó: cả khai báo trở thành không
     hợp lệ và rơi về GIÁ TRỊ KHỞI TẠO. Nên `padding: var(--sp-9) var(--sp-5)
     var(--sp-8)` biến thành padding 0 — hero mất sạch đệm, dính mép trái và
     trồi lên đè breadcrumb. Thiếu biến trong CSS không báo lỗi ở đâu cả. */
  --sp-9: 80px;
  --sp-10: 96px;

  /* Radius / shadow */
  --radius-sm: 6px;
  --radius-md: 10px;
  --radius-lg: 16px;
  --radius-pill: 999px;
  --shadow-sm: 0 1px 2px rgba(15, 23, 42, 0.04);
  --shadow-md: 0 6px 18px rgba(15, 23, 42, 0.06);
  --shadow-lg: 0 16px 40px rgba(15, 23, 42, 0.10);

  /* Layout */
  --container-max: 1240px;
  --header-height: 96px;

  /* Motion */
  --transition-fast: 120ms ease-out;
  --transition-base: 200ms ease-out;
}

/* ============================================================================
 * Base reset / typography
 * ========================================================================== */

*, *::before, *::after { box-sizing: border-box; }

html {
  font-family: var(--font-body);
  font-size: 16px;
  line-height: 1.55;
  -webkit-text-size-adjust: 100%;
}

body {
  margin: 0;
  background: var(--color-bg);
  color: var(--color-text);
  font-size: var(--fs-base);
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}

h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-display);
  font-weight: 600;
  line-height: 1.25;
  color: var(--color-text);
  margin: 0 0 var(--sp-3);
}

h1 { font-size: var(--fs-4xl); }
h2 { font-size: var(--fs-3xl); }
h3 { font-size: var(--fs-2xl); }
h4 { font-size: var(--fs-xl); }
h5 { font-size: var(--fs-lg); }
h6 { font-size: var(--fs-base); }

a {
  color: var(--color-primary-500);
  text-decoration: none;
  transition: color var(--transition-fast);
}

a:hover, a:focus-visible {
  color: var(--color-primary-700);
}

a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible {
  outline: 2px solid var(--color-primary-500);
  outline-offset: 2px;
  border-radius: var(--radius-sm);
}

img, svg, video { max-width: 100%; height: auto; display: block; }

/* ============================================================================
 * Layout helpers
 * ========================================================================== */

/* --container-pad là đệm ngang của cột nội dung, và là MỘT NGUỒN DUY NHẤT.
 *
 * Các khối nền tràn hết chiều ngang (hero, dải số liệu, dải CTA) tràn ra bằng
 * margin âm rồi đệm lại đúng bấy nhiêu, nên chúng phải bám theo con số này.
 * Trước đây mỗi khối tự viết -sp-5 (24px) trong khi container chỉ đệm sp-4
 * (16px) ở dưới 768px: lệch 8px mỗi bên, trang tràn ngang trên điện thoại.
 * Vá tay từng khối đã bỏ sót dải 640-767px. Dùng biến thì hết cả lớp lỗi này.
 */
:root {
  --container-pad: var(--sp-4);
}

@media (min-width: 768px) {
  :root {
    --container-pad: var(--sp-5);
  }
}

.container {
  width: 100%;
  max-width: var(--container-max);
  margin-inline: auto;
  padding-inline: var(--container-pad);
}

main { flex: 1 0 auto; padding-block: var(--sp-7); }

.skip-link {
  position: absolute;
  left: -1000px;
  top: 0;
  background: var(--color-primary-500);
  color: var(--color-text-inverse);
  padding: var(--sp-2) var(--sp-4);
  z-index: 1000;
  border-radius: var(--radius-sm);
}

.skip-link:focus { left: var(--sp-2); top: var(--sp-2); }

/* ============================================================================
 * Top utility bar â€” ultra-quiet, almost invisible
 * ========================================================================== */

.topbar {
  background: var(--color-surface-2);
  color: var(--color-text-soft);
  font-size: var(--fs-xs);
  border-bottom: 1px solid var(--color-border);
}
.topbar__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  min-height: 36px;
  gap: var(--sp-4);
}
.topbar__date {
  letter-spacing: 0.02em;
  text-transform: capitalize;
}
.topbar__links {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  align-items: center;
  gap: var(--sp-4);
}
.topbar__links a {
  color: var(--color-text-muted);
  text-decoration: none;
  transition: color var(--transition-fast);
}
.topbar__links a:hover { color: var(--color-primary-500); text-decoration: none; }
.topbar__divider {
  width: 1px;
  height: 12px;
  background: var(--color-border-strong);
}
.topbar__cta {
  color: var(--color-accent-500) !important;
  font-weight: 600;
  letter-spacing: 0.02em;
}
.topbar__cta:hover { color: var(--color-accent-600) !important; }

@media (max-width: 640px) {
  .topbar__inner { flex-wrap: wrap; gap: var(--sp-2); padding-block: var(--sp-2); }
  .topbar__links { flex-wrap: wrap; gap: var(--sp-3); }
  .topbar__date { display: none; }
}

/* ============================================================================
 * Header â€” white, airy, navy type, crimson brand mark
 * ========================================================================== */

.site-header {
  background: var(--color-surface);
  color: var(--color-primary-500);
  border-bottom: 1px solid var(--color-border);
}

.site-header .container {
  display: flex;
  align-items: center;
  gap: var(--sp-6);
  min-height: 96px;
  padding-block: var(--sp-4);
}

.site-brand {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  color: inherit;
  text-decoration: none;
}

.site-brand:hover, .site-brand:focus-visible { text-decoration: none; color: inherit; }

.site-brand__logo {
  width: 64px;
  height: 64px;
  display: block;
  flex: 0 0 auto;
  object-fit: contain;
}

.site-brand__text { line-height: 1.2; display: flex; flex-direction: column; gap: 4px; }
.site-brand__title {
  font-weight: 700;
  font-size: var(--fs-lg);
  letter-spacing: -0.005em;
  display: block;
  color: var(--color-primary-600);
}
.site-brand__crumb {
  font-size: var(--fs-xs);
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: var(--color-accent-500);
  font-weight: 600;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.site-brand__crumb::before {
  content: "";
  width: 16px;
  height: 2px;
  background: var(--color-accent-500);
  display: inline-block;
}

.site-search { margin-left: auto; flex: 0 1 380px; }
.site-search form {
  display: flex;
  gap: 0;
  background: var(--color-surface-2);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-pill);
  overflow: hidden;
  transition: border-color var(--transition-fast), background var(--transition-fast);
}
.site-search form:focus-within {
  border-color: var(--color-primary-500);
  background: var(--color-surface);
  box-shadow: 0 0 0 4px rgba(22, 51, 94, 0.08);
}
.site-search input {
  flex: 1;
  border: 0;
  padding: var(--sp-3) var(--sp-5);
  font: inherit;
  background: transparent;
  color: var(--color-text);
  min-width: 0;
}
.site-search input::placeholder { color: var(--color-text-soft); }
.site-search input:focus { outline: none; }
.site-search button {
  display: inline-grid;
  place-items: center;
  background: var(--color-accent-500);
  color: var(--color-text-inverse);
  border: 0;
  padding: 0 var(--sp-5);
  cursor: pointer;
  transition: background var(--transition-fast);
  margin: 4px;
  border-radius: var(--radius-pill);
}
.site-search button:hover { background: var(--color-accent-600); }

@media (max-width: 640px) {
  .site-header .container { flex-wrap: wrap; gap: var(--sp-3); min-height: 0; padding-block: var(--sp-3); }
  .site-brand__title { font-size: var(--fs-base); }
  .site-search { flex-basis: 100%; margin-left: 0; }
}

/* ============================================================================
 * Main navigation â€” white, hairline divider, crimson underline on current
 * ========================================================================== */

.site-nav {
  background: var(--color-surface);
  border-top: 1px solid var(--color-border);
  border-bottom: 1px solid var(--color-border);
  position: relative;
  z-index: 50;
}

.site-nav__root {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 0;
}

.site-nav__root > li { position: relative; }

/* Má»¥c menu cáº¥p 1 cÃ³ hai loáº¡i tháº»: <a> cho má»¥c khÃ´ng cÃ³ menu con, <button> cho
   má»¥c cÃ³. Báº¯t buá»™c pháº£i khai line-height á»Ÿ Ä‘Ã¢y: <a> káº¿ thá»«a 1.55 tá»« <html>,
   cÃ²n <button> máº·c Ä‘á»‹nh lÃ  line-height:normal cá»§a trÃ¬nh duyá»‡t (~1.2). Thiáº¿u
   dÃ²ng nÃ y thÃ¬ hai loáº¡i cao khÃ¡c nhau, vÃ  váº¡ch gáº¡ch chÃ¢n Ä‘á» bÃªn dÆ°á»›i náº±m lá»‡ch
   nhau theo Ä‘Ãºng pháº§n chÃªnh Ä‘Ã³. */
.site-nav a,
.site-nav__group > button {
  display: inline-flex;
  align-items: center;
  gap: var(--sp-2);
  padding: var(--sp-4) var(--sp-4);
  color: var(--color-text);
  font-weight: 500;
  font-size: var(--fs-sm);
  line-height: 1.55;
  letter-spacing: 0.005em;
  background: transparent;
  border: 0;
  border-bottom: 2px solid transparent;
  cursor: pointer;
  font-family: inherit;
  text-decoration: none;
  transition: color var(--transition-fast), border-color var(--transition-fast), background var(--transition-fast);
}

.site-nav a:hover,
.site-nav a:focus-visible,
.site-nav__group > button:hover,
.site-nav__group > button:focus-visible,
.site-nav__group.has-current > button,
.site-nav a.is-current {
  background: transparent;
  color: var(--color-primary-600);
  text-decoration: none;
  border-bottom-color: var(--color-accent-500);
}

.site-nav__caret {
  width: 10px;
  height: 6px;
  transition: transform var(--transition-fast);
  color: var(--color-text-soft);
}

.site-nav__group:hover > button .site-nav__caret,
.site-nav__group:focus-within > button .site-nav__caret { transform: rotate(180deg); }

.site-nav__sub {
  position: absolute;
  top: 100%;
  left: 0;
  min-width: 260px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-lg);
  padding: var(--sp-2);
  display: none;
  list-style: none;
  margin: 0;
  z-index: 60;
}

.site-nav__sub li { margin: 0; padding: 0; }

.site-nav__sub a {
  display: block;
  padding: var(--sp-3) var(--sp-4);
  color: var(--color-text);
  border-bottom: 0;
  border-radius: var(--radius-sm);
  font-size: var(--fs-sm);
}

.site-nav__sub a:hover,
.site-nav__sub a:focus-visible,
.site-nav__sub a.is-current {
  background: var(--color-accent-50);
  color: var(--color-accent-600);
  border-bottom: 0;
}

.site-nav__group:hover > .site-nav__sub,
.site-nav__group:focus-within > .site-nav__sub {
  display: block;
}

@media (max-width: 1024px) {
  .site-nav__root { flex-wrap: wrap; gap: 0; }
  .site-nav a,
  .site-nav__group > button { padding: var(--sp-3) var(--sp-3); font-size: var(--fs-sm); }
  .site-search { flex-basis: 320px; }
}

@media (max-width: 900px) {
  .site-header .container { gap: var(--sp-4); min-height: 80px; padding-block: var(--sp-3); }
  .site-brand__title { font-size: var(--fs-base); }
  .site-search { flex-basis: 280px; }
  .site-search input { padding: var(--sp-2) var(--sp-4); }
  .site-search button { padding: 0 var(--sp-4); margin: 3px; }
  .hero-feature__title { font-size: var(--fs-2xl); }
  .hero-feature__excerpt { font-size: var(--fs-base); }
  .home-grid { grid-template-columns: 1fr; }
}

@media (max-width: 720px) {
  /* Compact header: hide utility date, shrink search */
  .topbar__date { display: none; }

  .site-header .container {
    flex-wrap: wrap;
    gap: var(--sp-3);
    min-height: 0;
    padding-block: var(--sp-3);
  }
  .site-brand { flex: 1; }
  .site-brand__logo { width: 52px; height: 52px; }
  .site-brand__title { font-size: var(--fs-sm); }
  .site-brand__crumb { font-size: 10px; letter-spacing: 0.1em; }
  .site-search { order: 3; flex-basis: 100%; margin-left: 0; }

  /* Mobile nav: collapse into a sheet under the header */
  .site-nav { padding-block: 0; }
  .site-nav__toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--sp-2);
    padding: var(--sp-3) var(--sp-4);
    background: transparent;
    border: 0;
    color: var(--color-primary-600);
    font: inherit;
    font-weight: 600;
    font-size: var(--fs-sm);
    cursor: pointer;
    width: 100%;
    justify-content: space-between;
  }
  .site-nav__toggle-bar {
    display: inline-block;
    width: 22px;
    height: 2px;
    background: currentColor;
    position: relative;
  }
  .site-nav__toggle-bar::before,
  .site-nav__toggle-bar::after {
    content: "";
    position: absolute;
    left: 0;
    width: 22px;
    height: 2px;
    background: currentColor;
  }
  .site-nav__toggle-bar::before { top: -7px; }
  .site-nav__toggle-bar::after { top: 7px; }

  .site-nav__root {
    display: none;
    flex-direction: column;
    flex-wrap: nowrap;
    width: 100%;
    border-top: 1px solid var(--color-border);
  }
  .site-nav.is-open .site-nav__root { display: flex; }

  .site-nav__root > li { width: 100%; border-bottom: 1px solid var(--color-border); }
  .site-nav__root > li:last-child { border-bottom: 0; }

  .site-nav a,
  .site-nav__group > button {
    width: 100%;
    padding: var(--sp-3) var(--sp-4);
    justify-content: space-between;
    border-bottom: 0;
    color: var(--color-text);
  }
  .site-nav a:hover,
  .site-nav__group > button:hover,
  .site-nav__group > button:focus-visible,
  .site-nav a.is-current,
  .site-nav__group.has-current > button {
    border-bottom-color: transparent;
    background: var(--color-surface-2);
    color: var(--color-primary-600);
  }
  .site-nav__group.has-current > button { border-bottom-color: transparent; }

  /* Submenus become inline accordion panels */
  .site-nav__sub {
    position: static;
    display: none;
    box-shadow: none;
    border: 0;
    border-radius: 0;
    background: var(--color-surface-2);
    padding: var(--sp-1) 0;
    min-width: 0;
  }
  .site-nav__group.is-expanded > .site-nav__sub { display: block; }
  .site-nav__sub a {
    padding: var(--sp-3) var(--sp-6);
    border-radius: 0;
    font-size: var(--fs-sm);
  }
  .site-nav__sub a:hover,
  .site-nav__sub a.is-current {
    background: transparent;
    color: var(--color-accent-600);
  }

  /* Hero collapses nicely */
  .hero-feature { padding: var(--sp-5); gap: var(--sp-4); }
  .hero-feature__title { font-size: var(--fs-xl); }
  .hero-feature__excerpt { font-size: var(--fs-base); }

  /* Cards breathe less on mobile */
  .card { padding: var(--sp-5); border-radius: var(--radius-md); }
  .section-title { font-size: var(--fs-lg); }

  /* Doc table scrolls horizontally rather than wrapping awkwardly */
  .doc-table { display: block; overflow-x: auto; white-space: nowrap; }

  /* Article items go single column even if has-thumb */
  .article-item.has-thumb { grid-template-columns: 1fr; }
  .article-item.has-thumb .article-item__media { order: 0; }

  /* Footer stacks tighter */
  .site-footer .container { padding-block: var(--sp-6); gap: var(--sp-5); }
  .site-footer__legal { font-size: var(--fs-xs); padding-block: var(--sp-3); }
}

@media (max-width: 480px) {
  .topbar__inner { font-size: 11px; }
  .topbar__links { gap: var(--sp-3); }
  .topbar__divider { display: none; }
  .site-brand__crumb::before { width: 10px; }
  .hero-feature__cta .btn-primary,
  .hero-feature__cta .btn-outline { width: 100%; justify-content: center; }
  .pagination { flex-wrap: wrap; }
}

/* MÃ n hÃ¬nh rá»™ng: tiÃªu Ä‘á» nhÃ­ch má»™t báº­c, váº«n nhá» hÆ¡n áº£nh Ä‘á»ƒ áº£nh giá»¯ vai chÃ­nh. */
@media (min-width: 1200px) {
  .hero-feature__title { font-size: var(--fs-3xl); }
}

/* Default: hide the toggle on desktop */
@media (min-width: 721px) {
  .site-nav__toggle { display: none; }
}

/* ============================================================================
 * Footer â€” quiet, white-led with a navy band
 * ========================================================================== */

.site-footer {
  background: var(--color-surface);
  color: var(--color-text);
  margin-top: var(--sp-8);
  border-top: 1px solid var(--color-border);
}

.site-footer .container {
  padding-block: var(--sp-7);
  display: grid;
  gap: var(--sp-6);
  grid-template-columns: 1fr;
}

@media (min-width: 768px) {
  .site-footer .container { grid-template-columns: 2fr 1fr 1fr; }
}

.site-footer h6 {
  color: var(--color-primary-600);
  margin-bottom: var(--sp-3);
  font-size: var(--fs-sm);
  text-transform: uppercase;
  letter-spacing: 0.1em;
}
.site-footer a { color: var(--color-text-muted); }
.site-footer a:hover { color: var(--color-accent-500); }

.site-footer__legal {
  background: var(--color-primary-600);
  color: rgba(255,255,255,0.85);
  text-align: center;
  font-size: var(--fs-sm);
  padding-block: var(--sp-4);
  letter-spacing: 0.02em;
}

/* ============================================================================
 * Cards / surfaces â€” airy, white, hairline borders
 * ========================================================================== */

.card {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: var(--sp-6);
  box-shadow: var(--shadow-sm);
  transition: box-shadow var(--transition-base), transform var(--transition-base);
}

.section-title {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  font-size: var(--fs-xl);
  font-weight: 600;
  letter-spacing: -0.01em;
  color: var(--color-primary-600);
  margin-bottom: var(--sp-5);
  padding-bottom: var(--sp-3);
  border-bottom: 1px solid var(--color-border);
}

.section-title__accent {
  display: inline-block;
  width: 4px;
  height: 22px;
  background: var(--color-accent-500);
  border-radius: 2px;
  flex: 0 0 auto;
}

/* Article list */
.article-list { display: grid; gap: var(--sp-2); }
.article-item {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--sp-4);
  padding: var(--sp-4) 0;
  border-bottom: 1px dashed var(--color-border);
}
.article-item:last-child { border-bottom: 0; }
.article-item__meta {
  font-size: var(--fs-xs);
  color: var(--color-text-soft);
  display: flex;
  gap: var(--sp-3);
  align-items: center;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}
.article-item__title {
  font-size: var(--fs-lg);
  font-weight: 600;
  line-height: 1.4;
  letter-spacing: -0.005em;
  margin: 4px 0 0;
}
.article-item__title a { color: var(--color-text); }
.article-item__title a:hover { color: var(--color-accent-500); text-decoration: none; }

@media (min-width: 768px) {
  .article-item.has-thumb { grid-template-columns: 200px 1fr; }
  .article-item.has-thumb .article-item__media { order: -1; }
  .article-item__media { aspect-ratio: 16 / 10; border-radius: var(--radius-sm); overflow: hidden; background: var(--color-surface); }
  .article-item__media img { width: 100%; height: 100%; object-fit: contain; display: block; }
}

/* Hero feature â€” white, generous, with red accent */
.hero-feature {
  display: grid;
  gap: var(--sp-5);
  grid-template-columns: 1fr;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: var(--sp-5);
  box-shadow: var(--shadow-md);
  position: relative;
  overflow: hidden;
}
.hero-feature::before {
  content: "";
  position: absolute;
  top: 0; left: 0;
  width: 4px; height: 100%;
  background: var(--color-accent-500);
}
@media (min-width: 768px) {
  /* áº¢nh lÃ  pháº§n chiáº¿m chá»— chÃ­nh cá»§a khá»‘i tin ná»•i báº­t, chá»¯ chá»‰ Ä‘á»§ Ä‘á»ƒ dáº«n dáº¯t.
     TrÆ°á»›c Ä‘Ã¢y tá»‰ lá»‡ ngÆ°á»£c láº¡i (chá»¯ 1.4 : áº£nh 1) nÃªn áº£nh bÃ¬a bá»‹ bÃ³p nhá». */
  .hero-feature { grid-template-columns: 1fr 1.5fr; padding: var(--sp-7); gap: var(--sp-6); }
}
.hero-feature__main { display: grid; gap: var(--sp-4); align-content: center; }
.hero-feature__title {
  font-size: var(--fs-2xl);
  margin: 0;
  line-height: 1.2;
  letter-spacing: -0.015em;
  color: var(--color-primary-600);
}
.hero-feature__title a { color: inherit; }
.hero-feature__title a:hover { color: var(--color-primary-500); text-decoration: none; }
.hero-feature__excerpt { color: var(--color-text-muted); margin: 0; font-size: var(--fs-lg); line-height: 1.6; }
.hero-feature__cta { display: flex; gap: var(--sp-3); flex-wrap: wrap; margin-top: var(--sp-2); }
.kicker {
  display: inline-flex;
  align-items: center;
  gap: var(--sp-2);
  font-size: var(--fs-xs);
  text-transform: uppercase;
  letter-spacing: 0.16em;
  color: var(--color-accent-600);
  font-weight: 600;
}
.kicker::before {
  content: "";
  width: 18px;
  height: 2px;
  background: var(--color-accent-500);
  display: inline-block;
}
/*
  Khung áº£nh bÃ¬a: tá»‰ lá»‡ Cá» Äá»ŠNH, áº£nh dÃ¹ng object-fit: CONTAIN.

  áº¢nh bÃ¬a do biÃªn táº­p viÃªn táº£i lÃªn, má»—i láº§n má»™t tá»‰ lá»‡ khÃ¡c nhau. Ba cÃ¡ch xá»­ lÃ½:

  - cover  : láº¥p kÃ­n khung, khung luÃ´n Ä‘á»u, nhÆ°ng XÃ‰N máº¥t hai mÃ©p. áº¢nh bÃ¬a á»Ÿ Ä‘Ã¢y
             lÃ  banner cÃ³ chá»¯ nÃªn xÃ©n lÃ  máº¥t chá»¯ â€” khÃ´ng dÃ¹ng Ä‘Æ°á»£c.
  - height:auto : hiá»‡n Ä‘á»§, khÃ´ng xÃ©n, nhÆ°ng chiá»u cao má»—i tháº» má»™t khÃ¡c, hÃ ng tháº»
             so le theo tá»‰ lá»‡ áº£nh ngÆ°á»i dÃ¹ng táº£i lÃªn.
  - contain: hiá»‡n Ä‘á»§ VÃ€ khung luÃ´n Ä‘á»u. Äá»•i láº¡i cÃ³ viá»n ná»n á»Ÿ hai cáº¡nh khi tá»‰ lá»‡
             áº£nh lá»‡ch khung â€” Ä‘á»ƒ ná»n trÃ¹ng mÃ u tháº» thÃ¬ gáº§n nhÆ° khÃ´ng nháº­n ra.

  ÄÃ£ chá»n contain: bá»‘ cá»¥c á»•n Ä‘á»‹nh báº¥t ká»ƒ áº£nh táº£i lÃªn to nhá» ra sao, mÃ  khÃ´ng máº¥t
  ná»™i dung nÃ o cá»§a áº£nh.
*/
.hero-feature__media {
  aspect-ratio: 16 / 10;
  border-radius: var(--radius-md);
  overflow: hidden;
  background: var(--color-surface);
}
.hero-feature__media img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
}

/* Document table (legal docs) */
.doc-table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  overflow: hidden;
}
.doc-table th, .doc-table td {
  padding: var(--sp-3) var(--sp-5);
  text-align: left;
  vertical-align: top;
  border-bottom: 1px solid var(--color-border);
}
.doc-table thead th {
  background: var(--color-surface-2);
  color: var(--color-text-muted);
  font-weight: 600;
  font-size: var(--fs-xs);
  text-transform: uppercase;
  letter-spacing: 0.08em;
}
.doc-table tbody tr { transition: background var(--transition-fast); }
.doc-table tbody tr:hover { background: var(--color-surface-2); }
.doc-table tbody tr:last-child td { border-bottom: 0; }
.doc-table td a { font-weight: 500; color: var(--color-primary-600); }
.doc-table td a:hover { color: var(--color-accent-500); }

/* Notice panel */
.notice-panel {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-left: 3px solid var(--color-accent-500);
  border-radius: var(--radius-lg);
  padding: var(--sp-6);
  box-shadow: var(--shadow-sm);
}
.notice-panel h3 { color: var(--color-primary-600); }

/* Inline callout â€” dÃ¹ng cho lÆ°u Ã½ ná»™i bá»™ trong bÃ i viáº¿t/trang biá»ƒu máº«u */
.callout {
  margin: 0;
  padding: var(--sp-5);
  border: 1px solid var(--color-border);
  border-left: 3px solid var(--color-accent-500);
  border-radius: var(--radius-md);
  background: var(--color-surface);
  font-size: var(--fs-sm);
  line-height: 1.6;
  color: var(--color-text);
}
.callout strong { color: var(--color-primary-600); }
.callout--info { border-left-color: var(--color-primary-500); background: var(--color-primary-50, var(--color-surface)); }
.callout--warning { border-left-color: #f0a020; background: #fff7e6; }
.callout--success { border-left-color: #2a9d4a; background: #ecfaf0; }
.notice-list { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--sp-3); }
.notice-list li {
  padding: var(--sp-3) 0;
  border-bottom: 1px dashed var(--color-border);
  font-size: var(--fs-sm);
}
.notice-list li:last-child { border-bottom: 0; }

.home-grid {
  display: grid;
  gap: var(--sp-5);
  grid-template-columns: 1fr;
}
@media (min-width: 992px) {
  .home-grid { grid-template-columns: 2fr 1fr; }
}

.home-secondary { display: grid; gap: var(--sp-5); grid-template-columns: 1fr; }
@media (min-width: 768px) {
  .home-secondary { grid-template-columns: 1fr 1fr; }
}

/* Breadcrumb */
.breadcrumb {
  font-size: var(--fs-sm);
  color: var(--color-text-muted);
  padding: var(--sp-2) 0;
}
.breadcrumb a { color: var(--color-text-muted); }
.breadcrumb a:hover { color: var(--color-primary-500); }
.breadcrumb__sep { margin: 0 var(--sp-2); }

/* Page header */
.page-header { margin-bottom: var(--sp-5); }
.page-header h1 { margin-bottom: var(--sp-2); }
.page-header__intro { color: var(--color-text-muted); margin: 0 0 var(--sp-2); }
.page-header__source {
    font-size: var(--fs-sm);
    color: var(--color-text-muted);
    /* Ba dòng dưới trước đây trỏ vào --color-bg-subtle, --color-accent và
       --color-link: ba biến không tồn tại, nên nền, vạch trái và màu liên kết
       đều bị bỏ qua âm thầm. Đổi sang đúng tên token của bộ thiết kế. */
    background: var(--color-surface-2);
    padding: var(--sp-2) var(--sp-3);
    border-radius: var(--radius-sm);
    border-left: 3px solid var(--color-accent-500);
    margin-top: var(--sp-3);
}
.page-header__source a {
    color: var(--color-primary-500);
    text-decoration: underline;
}

/* Detail page */
.detail-content {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  padding: var(--sp-5);
}
.detail-content h2, .detail-content h3 { margin-top: var(--sp-5); }
.detail-content img { border-radius: var(--radius-sm); margin-block: var(--sp-3); }

/* Forms */
.form-row { display: grid; gap: var(--sp-2); margin-bottom: var(--sp-4); }
.form-row label { font-weight: 600; font-size: var(--fs-sm); }
.form-row input[type="text"], .form-row input[type="email"], .form-row input[type="password"], .form-row textarea, .form-row select {
  width: 100%;
  padding: var(--sp-2) var(--sp-3);
  border: 1px solid var(--color-border-strong);
  border-radius: var(--radius-sm);
  font: inherit;
  background: var(--color-surface);
}
.form-row textarea { min-height: 240px; resize: vertical; }
.form-error { color: var(--color-danger); font-size: var(--fs-sm); }
.form-help { color: var(--color-text-muted); font-size: var(--fs-sm); }

/* Utility */
.text-muted { color: var(--color-text-muted); }
.text-small { font-size: var(--fs-sm); }
.text-right { text-align: right; }
.mt-3 { margin-top: var(--sp-3); }
.mt-4 { margin-top: var(--sp-4); }
.mb-3 { margin-bottom: var(--sp-3); }
.mb-4 { margin-bottom: var(--sp-4); }
.flex { display: flex; }
.gap-3 { gap: var(--sp-3); }
.align-center { align-items: center; }

/* Rich content body (article detail) */
.rich-content { line-height: 1.7; font-size: var(--fs-base); }
.rich-content h2, .rich-content h3 { margin-top: var(--sp-5); }
.rich-content img { border-radius: var(--radius-sm); margin-block: var(--sp-3); }
.rich-content table { border-collapse: collapse; width: 100%; margin-block: var(--sp-3); }
.rich-content th, .rich-content td { border: 1px solid var(--color-border); padding: var(--sp-2) var(--sp-3); }
.rich-content blockquote { border-left: 4px solid var(--color-primary-500); padding-left: var(--sp-4); margin: var(--sp-3) 0; color: var(--color-text-muted); }

/* Pagination */
.pagination { display: flex; gap: var(--sp-3); align-items: center; justify-content: center; margin-top: var(--sp-5); }

/* Tag chips */
.tag-chip { display: inline-block; background: var(--color-primary-50); color: var(--color-primary-700); padding: 2px 8px; border-radius: 999px; margin-right: var(--sp-1); font-size: var(--fs-xs); }

/* Admin layout */
.admin-shell { display: grid; gap: var(--sp-5); }
.admin-toolbar { display: flex; gap: var(--sp-3); align-items: center; justify-content: space-between; flex-wrap: wrap; }
.admin-status { display: inline-block; font-size: var(--fs-xs); padding: 2px 8px; border-radius: 999px; background: var(--color-surface-2); color: var(--color-text-muted); }
.admin-status--draft { background: #f0f1f4; color: var(--color-text-muted); }
.admin-status--submitted { background: #fff7e0; color: var(--color-warning); }
.admin-status--published { background: #e6f4ec; color: var(--color-success); }
.admin-status--archived { background: var(--color-primary-50); color: var(--color-primary-700); }

.audit-list { list-style: none; padding-left: 0; margin: 0; }
.audit-list li { display: flex; gap: 0.75rem; padding: 0.4rem 0; border-bottom: 1px solid var(--color-divider, #e6e7eb); align-items: center; flex-wrap: wrap; }
.audit-list li:last-child { border-bottom: 0; }
.audit-time { color: var(--color-text-muted); min-width: 10rem; }
.audit-actor { font-weight: 600; }
.audit-action { color: var(--color-primary-700); }
.audit-payload { background: #f6f7f9; padding: 0.1rem 0.4rem; border-radius: 4px; color: var(--color-text-muted); font-size: 0.85em; }

/* Reduce motion preference */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
  }
}

/* ============================================================================
 * Admin dashboard
 * ========================================================================== */

.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.page-header--dashboard {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--sp-4);
  flex-wrap: wrap;
}
.page-header--dashboard > div { flex: 1 1 320px; }

.dashboard-range select {
  padding: var(--sp-2) var(--sp-3);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  background: var(--color-surface);
  font: inherit;
  color: var(--color-text);
  min-width: 140px;
}

.dashboard-kpi-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: var(--sp-4);
  margin-bottom: var(--sp-5);
}

.kpi-card {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-left: 4px solid var(--color-primary-500);
  border-radius: var(--radius-md);
  padding: var(--sp-4) var(--sp-5);
  display: flex;
  flex-direction: column;
  gap: var(--sp-2);
  box-shadow: var(--shadow-sm);
  transition: transform var(--transition-fast), box-shadow var(--transition-fast);
}
.kpi-card:hover { transform: translateY(-2px); box-shadow: var(--shadow-md); }
.kpi-card--primary { border-left-color: var(--color-primary-500); }
.kpi-card--success { border-left-color: var(--color-success); }
.kpi-card--warning { border-left-color: var(--color-warning); }
.kpi-card--info    { border-left-color: var(--color-info); }
.kpi-card--neutral { border-left-color: var(--color-border-strong); }

.kpi-card header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-2);
}
.kpi-card__label {
  font-size: var(--fs-sm);
  color: var(--color-text-muted);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.kpi-card__value {
  font-size: var(--fs-3xl);
  font-weight: 700;
  color: var(--color-text);
  line-height: 1.1;
}
.kpi-card__hint {
  font-size: var(--fs-sm);
  color: var(--color-text-muted);
}

.kpi-card__trend {
  display: inline-flex;
  align-items: center;
  gap: var(--sp-1);
  font-size: var(--fs-xs);
  font-weight: 600;
  padding: 2px var(--sp-2);
  border-radius: var(--radius-pill);
  background: var(--color-surface-2);
  color: var(--color-text-muted);
}
.kpi-card__trend--up   { color: var(--color-success); background: rgba(30, 122, 63, 0.10); }
.kpi-card__trend--down { color: var(--color-danger);  background: rgba(179, 38, 30, 0.10); }
.kpi-card__trend--flat { color: var(--color-text-muted); }

.dashboard-grid {
  display: grid;
  grid-template-columns: repeat(12, 1fr);
  gap: var(--sp-4);
}
.dashboard-chart   { grid-column: span 8; }
.dashboard-breakdown { grid-column: span 4; }
.dashboard-activity  { grid-column: span 7; }
.dashboard-messages  { grid-column: span 5; }
.dashboard-pending   { grid-column: span 12; }

@media (max-width: 980px) {
  .dashboard-chart,
  .dashboard-breakdown,
  .dashboard-activity,
  .dashboard-messages,
  .dashboard-pending { grid-column: span 12; }
}

.card-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-3);
  margin-bottom: var(--sp-3);
}
.card-header h2 {
  font-size: var(--fs-lg);
  margin: 0;
  color: var(--color-text);
}

.dashboard-chart__svg {
  width: 100%;
  height: auto;
  display: block;
}
.chart-axis text { fill: var(--color-text-muted); font-size: 11px; }

.bar-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: var(--sp-3);
}
.bar-list li {
  display: grid;
  grid-template-columns: minmax(120px, 1fr) 3fr 60px;
  align-items: center;
  gap: var(--sp-3);
}
.bar-list__label {
  font-size: var(--fs-sm);
  color: var(--color-text);
}
.bar-list__track {
  height: 10px;
  background: var(--color-surface-2);
  border-radius: var(--radius-pill);
  overflow: hidden;
}
.bar-list__fill {
  height: 100%;
  background: var(--color-primary-500);
  border-radius: var(--radius-pill);
  transition: width var(--transition-fast);
}
.bar-list__fill--accent { background: var(--color-accent-500); }
.bar-list__count {
  font-variant-numeric: tabular-nums;
  text-align: right;
  font-weight: 600;
  color: var(--color-text);
}

.activity-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: var(--sp-3);
  max-height: 360px;
  overflow-y: auto;
}
.activity-list li {
  display: grid;
  grid-template-columns: 90px 1fr;
  gap: var(--sp-3);
  padding-bottom: var(--sp-2);
  border-bottom: 1px solid var(--color-border);
}
.activity-list li:last-child { border-bottom: 0; }
.activity-list__time {
  font-size: var(--fs-xs);
  color: var(--color-text-muted);
  font-variant-numeric: tabular-nums;
}
.activity-list__body {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.activity-list__title {
  color: var(--color-text);
  font-weight: 500;
  text-decoration: none;
}
a.activity-list__title:hover { color: var(--color-primary-500); text-decoration: underline; }

.message-list, .pending-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: var(--sp-3);
}
.message-list li, .pending-list li {
  padding: var(--sp-3);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: var(--color-surface-2);
}
.message-list__subject a {
  color: var(--color-text);
  font-weight: 600;
  text-decoration: none;
}
.message-list__subject a:hover { color: var(--color-primary-500); text-decoration: underline; }
.message-list__meta, .pending-list li div {
  display: flex;
  gap: var(--sp-2);
  align-items: center;
  flex-wrap: wrap;
  margin-top: var(--sp-1);
  color: var(--color-text-muted);
  font-size: var(--fs-sm);
}
.pending-list__title {
  color: var(--color-text);
  font-weight: 500;
  text-decoration: none;
}
a.pending-list__title:hover { color: var(--color-primary-500); text-decoration: underline; }

.badge {
  display: inline-flex;
  align-items: center;
  padding: 2px var(--sp-2);
  border-radius: var(--radius-pill);
  font-size: var(--fs-xs);
  font-weight: 600;
  background: var(--color-surface);
  color: var(--color-text-muted);
  border: 1px solid var(--color-border);
}
.badge--new        { background: rgba(12, 95, 138, 0.10);  color: var(--color-info); border-color: transparent; }
.badge--inprogress { background: rgba(180, 106, 0, 0.10);  color: var(--color-warning); border-color: transparent; }
.badge--replied    { background: rgba(30, 122, 63, 0.10);  color: var(--color-success); border-color: transparent; }
.badge--closed     { background: var(--color-surface-2);    color: var(--color-text-muted); }
.badge--spam       { background: rgba(179, 38, 30, 0.10);  color: var(--color-danger); border-color: transparent; }
.badge--draft      { background: rgba(180, 106, 0, 0.10);  color: var(--color-warning); border-color: transparent; }
.badge--submitted  { background: rgba(12, 95, 138, 0.10);  color: var(--color-info); border-color: transparent; }
.badge--published  { background: rgba(30, 122, 63, 0.10);  color: var(--color-success); border-color: transparent; }
.badge--archived   { background: var(--color-surface-2);    color: var(--color-text-muted); }

/* NhÃ£n loáº¡i vÄƒn báº£n phÃ¡p luáº­t â€” ná»•i báº­t vá»›i viá»n Ä‘á» vÃ  ná»n nháº¡t. */
.badge--doctype {
  font-size: var(--fs-xs);
  font-weight: 700;
  color: var(--color-accent-600);
  background: var(--color-accent-50);
  border: 1px solid var(--color-accent-500);
  border-radius: var(--radius-sm);
  padding: 3px 10px;
  white-space: nowrap;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.btn-outline--small {
  padding: var(--sp-1) var(--sp-3);
  font-size: var(--fs-sm);
}

/* ============================================================================
 * Admin shell layout (sidebar + topbar)
 * ========================================================================== */

.admin-body {
  background: var(--color-bg);
  min-height: 100vh;
}

.admin-shell {
  position: fixed;
  inset: 0 auto 0 0;
  width: 252px;
  background: var(--color-surface);
  border-right: 1px solid var(--color-border);
  overflow-y: auto;
  z-index: 10;
}

.admin-sidebar {
  display: flex;
  flex-direction: column;
  height: 100%;
  padding: var(--sp-4) var(--sp-3);
  gap: var(--sp-2);
}
.admin-sidebar__brand {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  padding: var(--sp-2) var(--sp-3) var(--sp-4);
  border-bottom: 1px solid var(--color-border);
  margin-bottom: var(--sp-3);
}
.admin-sidebar__brand-mark {
  width: 36px;
  height: 36px;
  border-radius: var(--radius-sm);
  background: var(--color-primary-500);
  color: var(--color-text-inverse);
  font-weight: 700;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  letter-spacing: 0.04em;
  font-size: var(--fs-sm);
}
.admin-sidebar__brand strong {
  display: block;
  color: var(--color-text);
  font-size: var(--fs-base);
}
.admin-sidebar__brand span.text-small {
  color: var(--color-text-muted);
  font-size: var(--fs-xs);
}

.admin-sidebar__list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
  flex: 1;
}
.admin-sidebar__heading {
  font-size: var(--fs-xs);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--color-text-soft);
  padding: var(--sp-4) var(--sp-3) var(--sp-1);
  font-weight: 600;
}
.admin-sidebar__link {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  padding: var(--sp-2) var(--sp-3);
  border-radius: var(--radius-sm);
  color: var(--color-text);
  text-decoration: none;
  font-size: var(--fs-sm);
  font-weight: 500;
  transition: background var(--transition-fast), color var(--transition-fast);
}
.admin-sidebar__link:hover {
  background: var(--color-surface-2);
  color: var(--color-primary-500);
}
.admin-sidebar__link.is-active {
  background: var(--color-primary-50);
  color: var(--color-primary-600);
  font-weight: 600;
}
.admin-sidebar__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  font-size: 16px;
  filter: grayscale(0.2);
}
.admin-sidebar__foot {
  border-top: 1px solid var(--color-border);
  padding-top: var(--sp-3);
}

.admin-main {
  margin-left: 252px;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}

.admin-topbar {
  position: sticky;
  top: 0;
  z-index: 5;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-4);
  background: var(--color-surface);
  border-bottom: 1px solid var(--color-border);
  padding: var(--sp-3) var(--sp-5);
}
.admin-topbar__left {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  min-width: 0;
}
.admin-topbar__home {
  display: inline-flex;
  align-items: center;
  gap: var(--sp-2);
  color: var(--color-text);
  text-decoration: none;
}
.admin-topbar__sep {
  color: var(--color-text-muted);
}
.admin-topbar__page {
  font-weight: 600;
  color: var(--color-text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.admin-topbar__right {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
}
.admin-topbar__logout {
  margin: 0;
}

.admin-content {
  flex: 1;
  padding: var(--sp-5);
  max-width: 1440px;
  width: 100%;
}

.flash {
  padding: var(--sp-3) var(--sp-4);
  border-radius: var(--radius-md);
  margin-bottom: var(--sp-4);
  border: 1px solid transparent;
  font-size: var(--fs-sm);
}
.flash--success {
  background: rgba(30, 122, 63, 0.08);
  color: var(--color-success);
  border-color: rgba(30, 122, 63, 0.25);
}
.flash--error {
  background: rgba(179, 38, 30, 0.08);
  color: var(--color-danger);
  border-color: rgba(179, 38, 30, 0.25);
}

@media (max-width: 880px) {
  .admin-shell { transform: translateX(-100%); transition: transform var(--transition-fast); }
  .admin-shell.is-open { transform: translateX(0); }
  .admin-main { margin-left: 0; }
}

.page-header h1 { margin-bottom: var(--sp-2); }

/* Admin forms */
.admin-form { display: grid; gap: var(--sp-5); }
.card {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  padding: var(--sp-5);
  display: grid;
  gap: var(--sp-4);
}
.card__title {
  margin: 0 0 var(--sp-2);
  font-size: var(--fs-lg);
  color: var(--color-text);
  border-bottom: 1px solid var(--color-border);
  padding-bottom: var(--sp-3);
}
.form-row { display: grid; gap: var(--sp-1); }
.form-row label,
.form-row > small,
.form-row small.text-muted {
  display: block;
  font-weight: 600;
  color: var(--color-text);
}
.form-row small,
.form-row small.text-muted {
  font-weight: 400;
  color: var(--color-text-soft);
}
.form-row input,
.form-row textarea,
.form-row select {
  width: 100%;
  padding: var(--sp-2) var(--sp-3);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: var(--color-bg);
  font: inherit;
  color: var(--color-text);
  transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
}
.form-row input:focus,
.form-row textarea:focus,
.form-row select:focus {
  outline: none;
  border-color: var(--color-primary-500);
  box-shadow: 0 0 0 3px rgba(0, 90, 156, 0.15);
}
.form-row textarea { resize: vertical; font-family: inherit; }
.form-row--grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--sp-4);
}
@media (max-width: 720px) {
  .form-row--grid { grid-template-columns: 1fr; }
}
.form-actions {
  display: flex;
  gap: var(--sp-3);
  align-items: center;
}
.btn-primary {
  background: var(--color-primary-500);
  color: var(--color-text-inverse);
  border: none;
  border-radius: var(--radius-sm);
  padding: var(--sp-2) var(--sp-5);
  font-weight: 600;
  cursor: pointer;
  transition: background var(--transition-fast);
}
/*
  NÃºt dá»±ng báº±ng tháº» <a> pháº£i giá»¯ nguyÃªn diá»‡n máº¡o nÃºt khi rÃª chuá»™t hoáº·c nháº­n
  tiÃªu Ä‘iá»ƒm bÃ n phÃ­m.

  Quy táº¯c chung á»Ÿ Ä‘áº§u file, `a:hover, a:focus-visible`, Ä‘áº·t mÃ u chá»¯ liÃªn káº¿t vÃ 
  gáº¡ch chÃ¢n. Vá» Ä‘á»™ Æ°u tiÃªn, nÃ³ lÃ  (0,1,1) cÃ²n `.btn-primary` chá»‰ lÃ  (0,1,0) â€”
  nghÄ©a lÃ  nÃ³ THáº®NG pháº§n khai mÃ u chá»¯ cá»§a nÃºt. KhÃ´ng khai Ä‘Ã¨ á»Ÿ Ä‘Ã¢y thÃ¬ chá»¯
  tráº¯ng trÃªn nÃºt Ä‘á»•i thÃ nh xanh Ä‘áº­m, náº±m trÃªn ná»n cÅ©ng xanh Ä‘áº­m: nÃºt trÃ´ng nhÆ°
  trá»‘ng trÆ¡n, chá»‰ cÃ²n cÃ¡i gáº¡ch chÃ¢n.

  Pháº£i khai trong chÃ­nh khá»‘i `:hover`/`:focus-visible` cá»§a nÃºt, vÃ¬ (0,2,0) má»›i
  vÆ°á»£t Ä‘Æ°á»£c (0,1,1).
*/
.btn-primary:hover,
.btn-primary:focus-visible {
  background: var(--color-primary-600);
  color: var(--color-text-inverse);
  text-decoration: none;
}
.btn-outline {
  display: inline-flex;
  align-items: center;
  gap: var(--sp-2);
  background: transparent;
  color: var(--color-text);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  padding: var(--sp-2) var(--sp-5);
  font-weight: 500;
  text-decoration: none;
  transition: background var(--transition-fast);
}
.btn-outline:hover,
.btn-outline:focus-visible {
  background: var(--color-surface-2);
  color: var(--color-text);
  text-decoration: none;
}

/* ============================================================
 * Media library
 * ============================================================ */
.media-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: var(--sp-4);
}
.media-card {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  box-shadow: var(--shadow-sm);
}
.media-card img,
.media-card__placeholder {
  width: 100%;
  height: 160px;
  object-fit: contain;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--color-surface-2);
  color: var(--color-text-soft);
  font-size: 36px;
}
.media-card__meta {
  padding: var(--sp-3) var(--sp-4);
  display: flex;
  flex-direction: column;
  gap: var(--sp-1);
  flex: 1;
}
.media-card__actions {
  padding: var(--sp-2) var(--sp-4) var(--sp-4);
  display: flex;
  gap: var(--sp-2);
}

/* ============================================================
 * Media edit
 * ============================================================ */
.media-edit {
  display: grid;
  grid-template-columns: 280px 1fr;
  gap: var(--sp-5);
  align-items: start;
}
@media (max-width: 720px) {
  .media-edit { grid-template-columns: 1fr; }
}
.media-edit__preview img,
.media-edit__preview .media-card__placeholder {
  width: 100%;
  border-radius: var(--radius-md);
  border: 1px solid var(--color-border);
}
.kv { display: grid; grid-template-columns: 110px 1fr; gap: var(--sp-1) var(--sp-4); margin-bottom: var(--sp-4); }
.kv dt { color: var(--color-text-muted); font-weight: 600; }
.kv dd { margin: 0; }
.form-row--actions { display: flex; gap: var(--sp-3); align-items: center; }
.btn-outline--small { padding: 4px 10px; font-size: 0.8125rem; }
.btn-outline--danger { color: var(--color-danger); border-color: var(--color-danger); }
.btn-outline--danger:hover,
.btn-outline--danger:focus-visible {
  background: var(--color-danger);
  color: var(--color-text-inverse);
  text-decoration: none;
}
.card__title { margin: 0 0 var(--sp-3); font-size: 1rem; color: var(--color-danger); }

/* ============================================================
 * Admin toolbar utility
 * ============================================================ */
.admin-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-3);
}
.admin-toolbar form { display: flex; align-items: center; gap: var(--sp-2); margin: 0; }

/* ============================================================
 * Bulk select
 * ============================================================ */
input[type="checkbox"].row-check { transform: scale(1.1); cursor: pointer; }
.doc-table tbody tr td:first-child { vertical-align: middle; }

/* ============================================================
 * Diff viewer
 * ============================================================ */
.diff {
  background: var(--color-surface-2);
  border: 1px solid var(--color-border);
  padding: var(--sp-4);
  font-family: var(--font-mono);
  font-size: 0.8125rem;
  white-space: pre-wrap;
  word-break: break-word;
  border-radius: var(--radius-md);
}
.diff__add { display: block; background: rgba(30, 122, 63, 0.10); color: #1e7a3f; }
.diff__del { display: block; background: rgba(179, 38, 30, 0.10); color: var(--color-danger); text-decoration: line-through; }
.diff__ctx { display: block; color: var(--color-text-muted); }

/* ============================================================
 * KPI grid + report bars
 * ============================================================ */
.kpi-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
  gap: var(--sp-4);
}
.kpi {
  background: var(--color-surface-2);
  padding: var(--sp-4);
  border-radius: var(--radius-md);
  border: 1px solid var(--color-border);
}
.kpi__label { font-size: var(--fs-sm); color: var(--color-text-muted); margin-bottom: var(--sp-1); }
.kpi__value { font-size: 1.5rem; font-weight: 700; color: var(--color-primary-500); }
.report-bars { display: flex; flex-direction: column; gap: 4px; max-height: 360px; overflow: auto; }
.report-bar-row { display: grid; grid-template-columns: 56px 1fr 60px; align-items: center; gap: var(--sp-2); }
.report-bar__label { color: var(--color-text-muted); font-size: 0.75rem; }
.report-bar__track { background: var(--color-surface-2); border-radius: var(--radius-pill); height: 12px; overflow: hidden; }
.report-bar__fill { display: block; height: 100%; background: var(--color-primary-500); }
.report-bar__count { text-align: right; font-variant-numeric: tabular-nums; }

/* ============================================================================
 * Document filter form (/van-ban)
 * ========================================================================== */
.filter-form {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  padding: var(--sp-5);
  margin-bottom: var(--sp-4);
}
.filter-form__grid {
  display: grid;
  gap: var(--sp-4);
  grid-template-columns: 1fr;
}
.filter-form__field { display: grid; gap: var(--sp-2); align-content: start; }
.filter-form__field label {
  font-size: var(--fs-sm);
  font-weight: 600;
  color: var(--color-text-muted);
}
.filter-form__field input,
.filter-form__field select {
  width: 100%;
  padding: var(--sp-2) var(--sp-3);
  border: 1px solid var(--color-border-strong);
  border-radius: var(--radius-sm);
  font: inherit;
  color: var(--color-text);
  background: var(--color-surface);
}
.filter-form__field input:focus,
.filter-form__field select:focus {
  outline: 2px solid var(--color-primary-400);
  outline-offset: 1px;
  border-color: var(--color-primary-400);
}
.filter-form__actions {
  display: flex;
  gap: var(--sp-3);
  align-items: center;
  flex-wrap: wrap;
  margin-top: var(--sp-4);
  padding-top: var(--sp-4);
  border-top: 1px solid var(--color-border);
}
.filter-result {
  font-size: var(--fs-sm);
  color: var(--color-text-muted);
  margin-bottom: var(--sp-3);
}

@media (min-width: 640px) {
  .filter-form__grid { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 960px) {
  .filter-form__grid { grid-template-columns: repeat(4, 1fr); }
  .filter-form__field--wide { grid-column: span 2; }
}

/* ============================================================================
 * Article detail â€” layout, vertical tool rail, sapo, byline, related
 * ========================================================================== */

/* The rail sits in its own column and sticks while the body scrolls. */
.article-layout {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--sp-4);
}
.article-layout__main { min-width: 0; }

.article-rail {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--sp-2);
  padding: var(--sp-3);
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
}
.article-rail__group {
  display: flex;
  flex-direction: row;
  gap: var(--sp-2);
}
/* Hairline between groups, matching the reference portal's stacked rail. */
.article-rail__group + .article-rail__group {
  padding-left: var(--sp-3);
  border-left: 1px solid var(--color-border);
}

.article-rail__btn {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  flex: 0 0 auto;
  padding: 0;
  border: 1px solid var(--color-border-strong);
  border-radius: 50%;
  background: var(--color-surface);
  color: var(--color-text-muted);
  font: inherit;
  font-size: var(--fs-sm);
  font-weight: 600;
  cursor: pointer;
  transition: color var(--transition-fast), border-color var(--transition-fast),
              background var(--transition-fast);
}
.article-rail__btn:hover {
  color: var(--color-accent-500);
  border-color: var(--color-accent-500);
  background: var(--color-accent-50);
  text-decoration: none;
}
.article-rail__btn:focus-visible {
  outline: 2px solid var(--color-primary-400);
  outline-offset: 2px;
}
.article-rail__btn[disabled] {
  opacity: 0.4;
  cursor: default;
  pointer-events: none;
}
.article-rail__btn--text { letter-spacing: -0.02em; }

.article-rail__btn svg {
  width: 18px;
  height: 18px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.75;
  stroke-linecap: round;
  stroke-linejoin: round;
}
/* Brand marks (Facebook, X) read as solid glyphs, not outlines. */
.article-rail__btn svg.is-filled {
  fill: currentColor;
  stroke: none;
}
.article-rail__btn svg .is-thin { stroke-width: 1.4; }

/* Transient confirmation for copy-link; never replaces the accessible name. */
.article-rail__flash {
  position: absolute;
  left: 50%;
  bottom: calc(100% + 6px);
  transform: translateX(-50%);
  white-space: nowrap;
  padding: 2px var(--sp-2);
  border-radius: var(--radius-sm);
  background: var(--color-primary-600);
  color: var(--color-text-inverse);
  font-size: var(--fs-xs);
  font-weight: 500;
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--transition-fast);
}
.article-rail__btn.is-flashing .article-rail__flash { opacity: 1; }

@media (min-width: 900px) {
  .article-layout {
    grid-template-columns: 56px minmax(0, 1fr);
    gap: var(--sp-5);
    align-items: start;
  }
  .article-rail {
    position: sticky;
    top: var(--sp-5);
    flex-direction: column;
    flex-wrap: nowrap;
    gap: var(--sp-3);
    padding: var(--sp-3) var(--sp-2);
  }
  .article-rail__group {
    flex-direction: column;
    gap: var(--sp-2);
  }
  .article-rail__group + .article-rail__group {
    padding-left: 0;
    border-left: 0;
    padding-top: var(--sp-3);
    border-top: 1px solid var(--color-border);
  }
  /* On the left edge the bubble would clip, so anchor it to the right. */
  .article-rail__flash {
    left: calc(100% + 8px);
    bottom: auto;
    top: 50%;
    transform: translateY(-50%);
  }
}

.article-sapo {
  font-size: var(--fs-lg);
  line-height: 1.6;
  font-weight: 500;
  color: var(--color-text-muted);
  margin: var(--sp-3) 0 0;
}

/* Set by article-tools.js; the fallback keeps the body readable without JS. */
.detail-content .rich-content {
  font-size: calc(var(--fs-base) * var(--article-font-scale, 1));
}
.detail-content .rich-content h2 { font-size: calc(var(--fs-2xl) * var(--article-font-scale, 1)); }
.detail-content .rich-content h3 { font-size: calc(var(--fs-xl) * var(--article-font-scale, 1)); }

.article-footer {
  margin-top: var(--sp-5);
  padding-top: var(--sp-4);
  border-top: 1px solid var(--color-border);
}
.article-byline {
  text-align: right;
  font-weight: 600;
  font-style: italic;
  color: var(--color-text);
  margin: 0 0 var(--sp-3);
}

.related-articles {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  padding: var(--sp-5);
  margin-top: var(--sp-5);
}
.related-articles__list { list-style: none; margin: 0; padding: 0; display: grid; gap: 0; }
.related-articles__item {
  display: flex;
  gap: var(--sp-4);
  justify-content: space-between;
  align-items: baseline;
  padding: var(--sp-3) 0;
  border-bottom: 1px dashed var(--color-border);
}
.related-articles__item:last-child { border-bottom: 0; }
.related-articles__item a { color: var(--color-text); font-weight: 500; }
.related-articles__item a:hover { color: var(--color-accent-500); text-decoration: none; }
.related-articles__item time {
  flex: 0 0 auto;
  font-size: var(--fs-xs);
  color: var(--color-text-soft);
  font-variant-numeric: tabular-nums;
}

/* ============================================================================
 * Print â€” keep the article, drop the furniture
 * ========================================================================== */
@media print {
  .topbar,
  .site-header,
  .site-nav,
  .site-footer,
  .breadcrumb,
  .article-rail,
  .related-articles,
  .skip-link {
    display: none !important;
  }

  body { background: #fff; color: #000; }

  .article-layout { display: block; }

  .detail-content {
    border: 0;
    padding: 0;
    box-shadow: none;
  }

  .rich-content { font-size: 12pt; line-height: 1.5; }
  .rich-content img { max-width: 100% !important; page-break-inside: avoid; }
  h1 { font-size: 18pt; }

  /* A printed page has no clickable links, so spell the target out. */
  .rich-content a[href^="http"]::after { content: " (" attr(href) ")"; font-size: 9pt; }
}

/* Ranked variant of the related list â€” used by "Tin Ä‘á»c nhiá»u". */
.related-articles__list--ranked {
  counter-reset: most-read;
  list-style: none;
}
.related-articles__list--ranked .related-articles__item {
  align-items: baseline;
}
.related-articles__list--ranked .related-articles__item::before {
  counter-increment: most-read;
  content: counter(most-read);
  flex: 0 0 auto;
  align-self: baseline;
  min-width: 22px;
  font-size: var(--fs-sm);
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  color: var(--color-accent-500);
}
.related-articles__list--ranked .related-articles__item a { flex: 1 1 auto; }

/* ============================================================================
 * Homepage â€” quick access, featured slider, notice list
 * ========================================================================== */
.quick-access {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--sp-3);
  margin-bottom: var(--sp-5);
}
.quick-access__tile {
  display: grid;
  grid-template-columns: 40px 1fr;
  grid-template-rows: auto auto;
  column-gap: var(--sp-3);
  align-items: center;
  padding: var(--sp-4);
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  color: var(--color-text);
  box-shadow: var(--shadow-sm);
  transition: border-color var(--transition-fast), box-shadow var(--transition-fast),
              transform var(--transition-fast);
}
.quick-access__tile:hover {
  border-color: var(--color-accent-500);
  box-shadow: var(--shadow-md);
  transform: translateY(-2px);
  text-decoration: none;
}
.quick-access__tile:focus-visible {
  outline: 2px solid var(--color-primary-400);
  outline-offset: 2px;
}
.quick-access__tile svg {
  grid-row: span 2;
  width: 26px;
  height: 26px;
  justify-self: center;
  fill: none;
  stroke: var(--color-accent-500);
  stroke-width: 1.75;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.quick-access__label { font-weight: 600; line-height: 1.3; }
.quick-access__hint { font-size: var(--fs-xs); color: var(--color-text-muted); }

@media (min-width: 900px) {
  .quick-access { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

/* Featured slider ---------------------------------------------------------- */

/* ChÆ°a cÃ³ JS: má»i slide xáº¿p chá»“ng vÃ  Ä‘á»c Ä‘Æ°á»£c háº¿t. */
.hero-slider__slide + .hero-slider__slide { margin-top: var(--sp-4); }

.hero-slider.is-enhanced .hero-slider__track {
  display: grid;
  /* Má»i slide chá»“ng lÃªn cÃ¹ng má»™t Ã´ lÆ°á»›i nÃªn chiá»u cao báº±ng slide cao nháº¥t vÃ 
     khá»‘i khÃ´ng nháº£y khi Ä‘á»•i slide. */
  grid-template-areas: "slide";
}
.hero-slider.is-enhanced .hero-slider__slide {
  grid-area: slide;
  margin-top: 0;
  opacity: 0;
  visibility: hidden;
  transition: opacity var(--transition-base);
}
.hero-slider.is-enhanced .hero-slider__slide.is-active {
  opacity: 1;
  visibility: visible;
}

.hero-slider__controls {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--sp-3);
  margin-top: var(--sp-3);
}
.hero-slider__arrow {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  padding: 0;
  border: 1px solid var(--color-border-strong);
  border-radius: 50%;
  background: var(--color-surface);
  color: var(--color-text-muted);
  cursor: pointer;
  transition: color var(--transition-fast), border-color var(--transition-fast);
}
.hero-slider__arrow:hover { color: var(--color-accent-500); border-color: var(--color-accent-500); }
.hero-slider__arrow:focus-visible { outline: 2px solid var(--color-primary-400); outline-offset: 2px; }
.hero-slider__arrow svg {
  width: 18px; height: 18px;
  fill: none; stroke: currentColor; stroke-width: 2;
  stroke-linecap: round; stroke-linejoin: round;
}
.hero-slider__dots { display: flex; gap: var(--sp-2); align-items: center; }
.hero-slider__dot {
  width: 9px;
  height: 9px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: var(--color-border-strong);
  cursor: pointer;
  transition: background var(--transition-fast), transform var(--transition-fast);
}
.hero-slider__dot.is-active { background: var(--color-accent-500); transform: scale(1.3); }
.hero-slider__dot:focus-visible { outline: 2px solid var(--color-primary-400); outline-offset: 3px; }

/* Notice list -------------------------------------------------------------- */
.notice-item { display: grid; gap: 2px; }
.notice-item a { color: var(--color-text); font-weight: 500; line-height: 1.45; }
.notice-item a:hover { color: var(--color-accent-500); text-decoration: none; }
.notice-item__meta {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-2);
  font-size: var(--fs-xs);
  color: var(--color-text-soft);
  font-variant-numeric: tabular-nums;
}

/* Wide tables must scroll inside their own box, never widen the page. */
.table-scroll { overflow-x: auto; }

/* ============================================================================
 * Back to top
 * ========================================================================== */
.back-to-top {
  position: fixed;
  right: var(--sp-5);
  bottom: var(--sp-5);
  z-index: 50;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 1px solid var(--color-border-strong);
  border-radius: 50%;
  background: var(--color-surface);
  color: var(--color-primary-500);
  box-shadow: var(--shadow-md);
  cursor: pointer;
  opacity: 0;
  transform: translateY(8px);
  pointer-events: none;
  transition: opacity var(--transition-base), transform var(--transition-base),
              color var(--transition-fast), border-color var(--transition-fast);
}
.back-to-top.is-visible { opacity: 1; transform: none; pointer-events: auto; }
.back-to-top:hover { color: var(--color-accent-500); border-color: var(--color-accent-500); }
.back-to-top:focus-visible { outline: 2px solid var(--color-primary-400); outline-offset: 2px; }
.back-to-top svg {
  width: 20px; height: 20px;
  fill: none; stroke: currentColor; stroke-width: 2;
  stroke-linecap: round; stroke-linejoin: round;
}
@media print { .back-to-top { display: none !important; } }

/* Nút gọi hotline nổi — góc trái, đối xứng .back-to-top ở góc phải. Không
   dùng JS để ẩn/hiện theo cuộn như back-to-top: một nút gọi phải sẵn sàng
   ngay từ lúc tải trang, không phải chờ người dùng cuộn xuống mới thấy. */
.call-fab {
  position: fixed;
  left: var(--sp-5);
  bottom: var(--sp-5);
  z-index: 50;
  display: inline-flex;
  align-items: center;
  gap: var(--sp-2);
  height: 44px;
  padding: 0 var(--sp-4) 0 0;
  border-radius: var(--radius-pill);
  background: var(--color-accent-500);
  color: #fff;
  text-decoration: none;
  box-shadow: var(--shadow-md);
  transition: background var(--transition-fast), box-shadow var(--transition-fast);
}
.call-fab:hover, .call-fab:focus-visible {
  background: var(--color-accent-600);
  color: #fff;
  text-decoration: none;
}
.call-fab:focus-visible { outline: 2px solid var(--color-primary-400); outline-offset: 2px; }
.call-fab svg {
  flex: 0 0 auto;
  width: 44px; height: 44px;
  padding: 12px;
  box-sizing: border-box;
  fill: none; stroke: currentColor; stroke-width: 2;
  stroke-linecap: round; stroke-linejoin: round;
  animation: call-fab-ring 2.4s ease-in-out infinite;
}
.call-fab__text { font-weight: 600; font-size: var(--fs-sm); white-space: nowrap; }

@keyframes call-fab-ring {
  0%, 100% { transform: rotate(0deg); }
  4%  { transform: rotate(-15deg); }
  8%  { transform: rotate(12deg); }
  12% { transform: rotate(-8deg); }
  16% { transform: rotate(4deg); }
  20% { transform: rotate(0deg); }
}

@media print { .call-fab { display: none !important; } }

/* Dưới 480px hai widget góc trái/phải dễ đụng thanh cuộn ngang hoặc lấn nội
   dung — thu gọn nút gọi về hình tròn thuần, bỏ chữ số điện thoại. */
@media (max-width: 480px) {
  .call-fab { padding: 0; }
  .call-fab__text { display: none; }
}

@media (prefers-reduced-motion: reduce) {
  .quick-access__tile,
  .hero-slider.is-enhanced .hero-slider__slide,
  .back-to-top,
  .call-fab svg {
    transition: none;
    animation: none;
  }
  .quick-access__tile:hover { transform: none; }
}

/* ============================================================================
 * Standalone auth screen (_AuthLayout) â€” no site header, nav or footer
 * ========================================================================== */
.auth-body {
  min-height: 100vh;
  min-height: 100dvh;
  margin: 0;
  background:
    radial-gradient(1200px 600px at 50% -10%, var(--color-primary-50), transparent 70%),
    var(--color-bg);
}
.auth-shell {
  min-height: 100vh;
  min-height: 100dvh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--sp-5);
  padding: var(--sp-5);
}

.auth-card {
  width: 100%;
  max-width: 860px;
  display: grid;
  grid-template-columns: 1fr;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-lg);
  overflow: hidden;
}
.auth-card__brand {
  display: grid;
  gap: var(--sp-2);
  align-content: center;
  justify-items: center;
  text-align: center;
  padding: var(--sp-6) var(--sp-5);
  background: var(--color-primary-50);
  border-bottom: 1px solid var(--color-border);
}
.auth-card__logo { width: 96px; height: 96px; object-fit: contain; }
.auth-card__org {
  margin: var(--sp-2) 0 0;
  font-weight: 700;
  line-height: 1.35;
  color: var(--color-primary-600);
}
.auth-card__sub {
  margin: 0;
  font-size: var(--fs-xs);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--color-text-muted);
}
.auth-card__body { padding: var(--sp-6) var(--sp-5); }

@media (min-width: 720px) {
  .auth-card { grid-template-columns: 300px minmax(0, 1fr); }
  .auth-card__brand { border-bottom: 0; border-right: 1px solid var(--color-border); }
  .auth-card__body { padding: var(--sp-7); }
}

.auth-title {
  margin: 0;
  font-size: var(--fs-2xl);
  letter-spacing: -0.01em;
  color: var(--color-primary-600);
}
.auth-intro {
  margin: var(--sp-2) 0 var(--sp-5);
  color: var(--color-text-muted);
  font-size: var(--fs-sm);
}

.auth-form { display: grid; gap: var(--sp-4); }
.auth-field { display: grid; gap: var(--sp-2); }
.auth-field label { font-weight: 600; font-size: var(--fs-sm); color: var(--color-text-muted); }
.auth-field input {
  width: 100%;
  padding: var(--sp-3);
  border: 1px solid var(--color-border-strong);
  border-radius: var(--radius-sm);
  font: inherit;
  color: var(--color-text);
  background: var(--color-surface);
}
.auth-field input:focus {
  outline: 2px solid var(--color-primary-400);
  outline-offset: 1px;
  border-color: var(--color-primary-400);
}

.auth-password { position: relative; }
/* Chá»«a chá»— cho nÃºt con máº¯t Ä‘á»ƒ chá»¯ khÃ´ng chui xuá»‘ng dÆ°á»›i nÃ³. */
.auth-password input { padding-right: 46px; }
.auth-password__toggle {
  position: absolute;
  top: 50%;
  right: 6px;
  transform: translateY(-50%);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 34px;
  height: 34px;
  padding: 0;
  border: 0;
  border-radius: var(--radius-sm);
  background: transparent;
  color: var(--color-text-soft);
  cursor: pointer;
}
.auth-password__toggle:hover { color: var(--color-primary-500); }
.auth-password__toggle:focus-visible { outline: 2px solid var(--color-primary-400); outline-offset: 1px; }
.auth-password__toggle svg {
  width: 20px; height: 20px;
  fill: none; stroke: currentColor; stroke-width: 1.75;
  stroke-linecap: round; stroke-linejoin: round;
}
/* Gáº¡ch chÃ©o chá»‰ hiá»‡n khi máº­t kháº©u ÄANG bá»‹ áº©n â€” máº¯t gáº¡ch = Ä‘ang che. */
.auth-password__toggle.is-revealed .auth-password__slash { display: none; }

/* Checkbox pháº£i náº±m cÃ¹ng dÃ²ng vá»›i nhÃ£n, khÃ´ng pháº£i khá»‘i lÆ°á»›i riÃªng. */
.auth-check {
  display: flex;
  align-items: center;
  gap: var(--sp-2);
  font-size: var(--fs-sm);
  color: var(--color-text);
  cursor: pointer;
}
.auth-check input { width: 16px; height: 16px; margin: 0; flex: 0 0 auto; accent-color: var(--color-primary-500); }

.auth-actions { display: flex; gap: var(--sp-3); align-items: center; }
.auth-actions .btn-primary { width: 100%; justify-content: center; text-align: center; }

.auth-alert {
  margin: 0;
  padding: var(--sp-3);
  border: 1px solid var(--color-danger);
  border-left-width: 4px;
  border-radius: var(--radius-sm);
  background: #fdf2f1;
  color: var(--color-danger);
  font-size: var(--fs-sm);
}

.auth-support {
  width: 100%;
  max-width: 860px;
  display: grid;
  gap: 2px;
  text-align: center;
  font-size: var(--fs-sm);
  color: var(--color-text-muted);
}
.auth-support p { margin: 0; }
.auth-support__back { margin-top: var(--sp-3) !important; }
.auth-support__legal { font-size: var(--fs-xs); color: var(--color-text-soft); }

/* ============================================================================
 * CMS â€” Ã´ chá»n áº£nh tá»« thÆ° viá»‡n media
 * ========================================================================== */
.media-picker { display: grid; gap: var(--sp-2); }
.media-picker__label { font-weight: 600; font-size: var(--fs-sm); }
.media-picker__preview {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 120px;
  padding: var(--sp-2);
  border: 1px dashed var(--color-border-strong);
  border-radius: var(--radius-sm);
  background: var(--color-surface-2);
  overflow: hidden;
}
.media-picker__preview img { max-width: 100%; max-height: 160px; object-fit: contain; }
.media-picker__empty { font-size: var(--fs-sm); color: var(--color-text-soft); }
.media-picker__actions { display: flex; gap: var(--sp-2); flex-wrap: wrap; }

.media-dialog {
  width: min(880px, 92vw);
  max-height: 82vh;
  padding: 0;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-lg);
  color: var(--color-text);
  background: var(--color-surface);
}
.media-dialog::backdrop { background: rgba(15, 23, 42, 0.45); }
.media-dialog__head {
  position: sticky;
  top: 0;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-3);
  padding: var(--sp-4) var(--sp-5);
  border-bottom: 1px solid var(--color-border);
  background: var(--color-surface);
}
.media-dialog__body { padding: var(--sp-5); overflow-y: auto; max-height: calc(82vh - 64px); }
.media-dialog__grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
  gap: var(--sp-3);
}
.media-dialog__paging {
  display: flex;
  gap: var(--sp-3);
  align-items: center;
  justify-content: center;
  margin-top: var(--sp-4);
}

.media-tile {
  display: grid;
  gap: 2px;
  padding: var(--sp-2);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: var(--color-surface);
  font: inherit;
  text-align: left;
  cursor: pointer;
  transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
}
.media-tile:hover { border-color: var(--color-accent-500); box-shadow: var(--shadow-sm); }
.media-tile:focus-visible { outline: 2px solid var(--color-primary-400); outline-offset: 2px; }
.media-tile img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: contain;
  border-radius: 4px;
  background: var(--color-surface-2);
}
.media-tile__name {
  font-size: var(--fs-xs);
  line-height: 1.3;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.media-tile__dim { font-size: 10px; color: var(--color-text-soft); font-variant-numeric: tabular-nums; }

/* ============================================================================
 * CMS â€” thanh cÃ´ng cá»¥ danh sÃ¡ch & thanh lá»‡nh hÃ ng loáº¡t
 *
 * CÃ¡c control Ä‘á»©ng trá»±c tiáº¿p trong thanh cÃ´ng cá»¥ khÃ´ng náº±m trong .form-row
 * (lá»›p Ä‘Ã³ dÃ nh cho vá» bá»c label + control), nÃªn pháº£i tá»± cáº¥p kiá»ƒu á»Ÿ Ä‘Ã¢y.
 * ========================================================================== */
.admin-toolbar select,
.admin-toolbar input[type="text"],
.admin-toolbar input[type="search"],
.admin-bulkbar select,
.admin-bulkbar input[type="text"] {
  padding: 6px var(--sp-3);
  border: 1px solid var(--color-border-strong);
  border-radius: var(--radius-sm);
  font: inherit;
  font-size: var(--fs-sm);
  color: var(--color-text);
  background: var(--color-surface);
  min-height: 34px;
}
.admin-toolbar select:focus,
.admin-toolbar input:focus,
.admin-bulkbar select:focus,
.admin-bulkbar input:focus {
  outline: 2px solid var(--color-primary-400);
  outline-offset: 1px;
  border-color: var(--color-primary-400);
}

.admin-filter {
  display: flex;
  align-items: center;
  gap: var(--sp-2);
  flex-wrap: wrap;
}
.admin-filter label {
  font-size: var(--fs-sm);
  font-weight: 600;
  color: var(--color-text-muted);
}

.admin-bulkbar {
  display: flex;
  align-items: center;
  gap: var(--sp-2);
  flex-wrap: wrap;
  padding: var(--sp-3) var(--sp-4);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  background: var(--color-surface-2);
}

/* Tag cloud section */
.tag-cloud-section {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: var(--sp-6);
  box-shadow: var(--shadow-sm);
}
.tag-cloud {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-3);
}
.tag-chip--large {
  padding: var(--sp-2) var(--sp-4);
  font-size: var(--fs-base);
  font-weight: 500;
  border-radius: var(--radius-md);
  background: var(--color-surface-2);
  border: 1px solid var(--color-border);
  color: var(--color-primary-600);
  transition: background var(--transition-fast), border-color var(--transition-fast),
              color var(--transition-fast), transform var(--transition-fast);
}
.tag-chip--large:hover {
  background: var(--color-primary-500);
  border-color: var(--color-primary-500);
  color: var(--color-text-inverse);
  text-decoration: none;
  transform: translateY(-2px);
}
.admin-bulkbar__count {
  margin-right: auto;
  font-size: var(--fs-sm);
  font-weight: 600;
  color: var(--color-text-muted);
  font-variant-numeric: tabular-nums;
}
.admin-bulkbar input[type="text"] { min-width: 200px; }
.admin-bulkbar .btn-primary[disabled] {
  opacity: 0.45;
  cursor: default;
  pointer-events: none;
}

/* Báº£ng danh sÃ¡ch: hÃ ng dá»… quÃ©t máº¯t hÆ¡n */
.doc-table tbody tr:hover { background: var(--color-primary-50); }
.doc-table td { vertical-align: middle; }
.doc-table .btn-outline {
  padding: 4px var(--sp-3);
  font-size: var(--fs-sm);
}

/* ============================================================================
 * Trang chá»§ â€” dáº£i tin theo chuyÃªn má»¥c (4 cá»™t)
 * ========================================================================== */
.topic-row {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--sp-5);
  margin-bottom: var(--sp-5);
  padding: var(--sp-5);
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
}
.topic-col { min-width: 0; }
.topic-col + .topic-col { padding-top: var(--sp-5); border-top: 1px solid var(--color-border); }

.topic-col__title {
  display: flex;
  align-items: center;
  gap: var(--sp-2);
  margin: 0 0 var(--sp-4);
  padding-bottom: var(--sp-2);
  border-bottom: 2px solid var(--color-border);
  font-size: var(--fs-sm);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}
.topic-col__title a { color: var(--color-primary-600); }
.topic-col__title a:hover { color: var(--color-accent-500); text-decoration: none; }
/* Ã” vuÃ´ng mÃ u trÆ°á»›c tiÃªu Ä‘á», thay cho icon áº£nh â€” khÃ´ng tá»‘n thÃªm request. */
.topic-col__mark {
  width: 10px;
  height: 10px;
  flex: 0 0 auto;
  border-radius: 2px;
  background: var(--color-accent-500);
}

.topic-lead { margin-bottom: var(--sp-4); }
.topic-lead__media {
  display: block;
  margin-bottom: var(--sp-3);
  border-radius: var(--radius-sm);
  overflow: hidden;
  background: var(--color-surface);
  aspect-ratio: 16 / 10;
}
.topic-lead__media img { width: 100%; height: 100%; object-fit: contain; display: block; }
.topic-lead__title {
  margin: 0;
  font-size: var(--fs-lg);
  font-weight: 600;
  line-height: 1.35;
}
.topic-lead__title a { color: var(--color-text); }
.topic-lead__title a:hover { color: var(--color-accent-500); text-decoration: none; }

.topic-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 0; }
.topic-list__item {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--sp-3);
  padding: var(--sp-3) 0;
  border-top: 1px dashed var(--color-border);
}
.topic-list__item:has(.topic-list__media) { grid-template-columns: 76px 1fr; }
.topic-list__media {
  display: block;
  border-radius: 4px;
  overflow: hidden;
  background: var(--color-surface);
  aspect-ratio: 16 / 10;
}
.topic-list__media img { width: 100%; height: 100%; object-fit: contain; display: block; }
.topic-list__title {
  font-size: var(--fs-sm);
  line-height: 1.45;
  color: var(--color-text);
  align-self: center;
}
.topic-list__title:hover { color: var(--color-accent-500); text-decoration: none; }

@media (min-width: 640px)  { .topic-row { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1100px) {
  .topic-row { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .topic-col + .topic-col {
    padding-top: 0;
    border-top: 0;
    padding-left: var(--sp-5);
    border-left: 1px solid var(--color-border);
  }
}
@media (min-width: 640px) and (max-width: 1099px) {
  /* Hai cá»™t: chá»‰ cá»™t thá»© 3 trá»Ÿ Ä‘i má»›i cáº§n váº¡ch ngÄƒn phÃ­a trÃªn. */
  .topic-col + .topic-col { padding-top: 0; border-top: 0; }
  .topic-col:nth-child(n + 3) { padding-top: var(--sp-5); border-top: 1px solid var(--color-border); }
}

/* ============================================================================
 * Trang chá»§ â€” hai cá»™t vÄƒn báº£n / thÃ´ng bÃ¡o
 * ========================================================================== */
.feed-row {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--sp-5);
  margin-bottom: var(--sp-5);
}
.feed-col {
  min-width: 0;
  padding: var(--sp-5);
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
}
.feed-col__title {
  margin: 0 0 var(--sp-4);
  padding-bottom: var(--sp-3);
  border-bottom: 2px solid var(--color-primary-500);
  font-size: var(--fs-xl);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.02em;
}
.feed-col__title a { color: var(--color-primary-600); }
.feed-col__title a:hover { color: var(--color-accent-500); text-decoration: none; }

.feed-lead { padding-bottom: var(--sp-4); border-bottom: 1px solid var(--color-border); }
.feed-lead__title { margin: 0 0 var(--sp-2); font-size: var(--fs-lg); line-height: 1.35; }
.feed-lead__title a { color: var(--color-text); }
.feed-lead__title a:hover { color: var(--color-accent-500); text-decoration: none; }
.feed-lead__meta {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-2);
  align-items: center;
  margin: 0 0 var(--sp-2);
  font-size: var(--fs-xs);
  color: var(--color-text-soft);
}
.feed-lead__excerpt { margin: 0; font-size: var(--fs-sm); color: var(--color-text-muted); line-height: 1.6; }

.feed-list { list-style: none; margin: 0; padding: 0; }
.feed-list__item {
  display: grid;
  grid-template-columns: 82px 1fr;
  align-items: start;
  gap: var(--sp-3);
  padding: var(--sp-3) 0;
  border-bottom: 1px solid var(--color-border);
}
.feed-list__item:last-child { border-bottom: 0; }
/* Váº¡ch dá»c ngÄƒn cá»™t ngÃ y vá»›i tiÃªu Ä‘á», nhÆ° báº£n tham chiáº¿u. */
.feed-list__time {
  padding-right: var(--sp-3);
  border-right: 1px solid var(--color-border-strong);
  font-size: var(--fs-xs);
  color: var(--color-text-soft);
  font-variant-numeric: tabular-nums;
  line-height: 1.6;
}
.feed-list__title { font-size: var(--fs-sm); line-height: 1.55; color: var(--color-text); }
.feed-list__title:hover { color: var(--color-accent-500); text-decoration: none; }

@media (min-width: 900px) { .feed-row { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* Danh sÃ¡ch liÃªn káº¿t trong sidebar */
.link-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 0; }
.link-list li { padding: var(--sp-3) 0; border-bottom: 1px dashed var(--color-border); }
.link-list li:last-child { border-bottom: 0; }
.link-list a { font-size: var(--fs-sm); line-height: 1.5; color: var(--color-text); }
.link-list a:hover { color: var(--color-accent-500); text-decoration: none; }

/* ThÃ´ng tin vÄƒn phÃ²ng */
.office-info__hours {
  margin: 0 0 var(--sp-3);
  font-size: var(--fs-sm);
  line-height: 1.6;
  color: var(--color-text);
}
.office-info__address {
  margin: 0 0 var(--sp-3);
  font-size: var(--fs-sm);
  line-height: 1.6;
  color: var(--color-text-muted);
}

/* ============================================================================
 * Trang dá»‹ch vá»¥ â€” dáº£i thÃ´ng tin quyáº¿t Ä‘á»‹nh & bá»‘ cá»¥c chi tiáº¿t
 * ========================================================================== */
.service-facts {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--sp-3);
  margin-bottom: var(--sp-5);
}
.service-fact {
  display: grid;
  gap: 4px;
  padding: var(--sp-4);
  background: var(--color-primary-50);
  border-left: 3px solid var(--color-accent-500);
  border-radius: var(--radius-sm);
}
.service-fact__label {
  font-size: var(--fs-xs);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--color-text-muted);
  font-weight: 600;
}
.service-fact__value { font-size: var(--fs-base); font-weight: 600; color: var(--color-primary-600); }

.service-layout { display: grid; grid-template-columns: 1fr; gap: var(--sp-5); }
.service-layout__main { min-width: 0; }

.doc-checklist { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--sp-2); }
.doc-checklist li {
  position: relative;
  padding-left: 26px;
  line-height: 1.6;
}
/* Dáº¥u tÃ­ch váº½ báº±ng CSS â€” khÃ´ng thÃªm áº£nh hay font icon. */
.doc-checklist li::before {
  content: "";
  position: absolute;
  left: 4px;
  top: 6px;
  width: 6px;
  height: 11px;
  border: solid var(--color-success);
  border-width: 0 2px 2px 0;
  transform: rotate(45deg);
}

.service-item__facts {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-3) var(--sp-5);
  margin: var(--sp-3) 0 0;
}
.service-item__facts div { display: grid; gap: 2px; }
.service-item__facts dt {
  font-size: var(--fs-xs);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--color-text-soft);
  font-weight: 600;
}
.service-item__facts dd { margin: 0; font-size: var(--fs-sm); color: var(--color-text); }

@media (min-width: 700px)  { .service-facts { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 1000px) { .service-layout { grid-template-columns: minmax(0, 1fr) 320px; } }

/* ============================================================================
 * Lá»›p nÃ©n â€” bo gÃ³c nhá» láº¡i, bá» viá»n thá»«a, tÄƒng máº­t Ä‘á»™ ná»™i dung
 *
 * Äáº·t cuá»‘i file Ä‘á»ƒ ghi Ä‘Ã¨ cÃ¡c quy táº¯c phÃ­a trÃªn mÃ  khÃ´ng pháº£i sá»­a ráº£i rÃ¡c.
 * NguyÃªn táº¯c: má»™t khá»‘i chá»‰ cáº§n Má»˜T tÃ­n hiá»‡u phÃ¢n tÃ¡ch â€” hoáº·c viá»n, hoáº·c bÃ³ng,
 * hoáº·c ná»n. TrÆ°á»›c Ä‘Ã¢y nhiá»u khá»‘i dÃ¹ng cáº£ ba nÃªn trÃ´ng rá»i ráº¡c vÃ  tá»‘n chá»—.
 * ========================================================================== */
:root {
  --radius-sm: 3px;
  --radius-md: 4px;
  --radius-lg: 6px;
}

/* Tháº»: bá» viá»n, giá»¯ bÃ³ng máº£nh lÃ m ranh giá»›i duy nháº¥t. Äá»‡m giáº£m 32 â†’ 20px. */
.card,
.notice-panel,
.hero-feature,
.topic-row,
.feed-col,
.related-articles,
.detail-content,
.filter-form {
  border: 0;
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.06), 0 0 0 1px rgba(15, 23, 42, 0.04);
}
.card,
.notice-panel,
.feed-col,
.topic-row,
.related-articles,
.detail-content,
.filter-form { padding: 20px; }
.hero-feature { padding: 20px; }
@media (min-width: 768px) { .hero-feature { padding: 24px; gap: 24px; } }

/* TiÃªu Ä‘á» khá»‘i: gáº¡ch chÃ¢n dÃ y vÃ  khoáº£ng cÃ¡ch lá»›n lÃ  thá»© chiáº¿m chá»— nhiá»u nháº¥t. */
.section-title {
  font-size: var(--fs-lg);
  margin-bottom: var(--sp-3);
  padding-bottom: 6px;
}
.page-header { margin-bottom: var(--sp-4); }
.page-header h1 { margin-bottom: 4px; }

/* Danh sÃ¡ch bÃ i: nÃ©n dÃ²ng, Ä‘á»•i gáº¡ch Ä‘á»©t sang gáº¡ch liá»n máº£nh cho gá»n máº¯t. */
.article-item { padding: 10px 0; gap: var(--sp-3); }
.article-item__title { font-size: var(--fs-base); }
.article-list { gap: 0; }

.topic-list__item,
.related-articles__item,
.feed-list__item,
.link-list li { padding: 8px 0; }
.topic-list__item,
.notice-list li { border-top-style: solid; }

/* Khoáº£ng cÃ¡ch giá»¯a cÃ¡c khá»‘i lá»›n: 24 â†’ 16px. */
.home-grid,
.topic-row,
.feed-row,
.service-layout,
.article-layout { gap: var(--sp-4); }
.mb-4 { margin-bottom: var(--sp-4); }
.mt-4 { margin-top: var(--sp-4); }

/* Ã” truy cáº­p nhanh: bá»›t Ä‘á»‡m vÃ  bá» hiá»‡u á»©ng nháº¥c lÃªn cho Ä‘á»¡ rung máº¯t. */
.quick-access { gap: 8px; margin-bottom: var(--sp-4); }
.quick-access__tile { padding: 12px 14px; box-shadow: none; border-color: var(--color-border); }
.quick-access__tile:hover { transform: none; box-shadow: 0 1px 3px rgba(15, 23, 42, 0.08); }

/* Váº¡ch ngÄƒn trong dáº£i chuyÃªn má»¥c máº£nh láº¡i. */
.topic-col__title { border-bottom-width: 1px; margin-bottom: var(--sp-3); padding-bottom: 6px; }
.feed-col__title { border-bottom-width: 1px; margin-bottom: var(--sp-3); padding-bottom: 8px; font-size: var(--fs-lg); }

/* Dáº£i thÃ´ng tin dá»‹ch vá»¥: gá»n theo hÃ ng ngang. */
.service-facts { gap: 8px; margin-bottom: var(--sp-4); }
.service-fact { padding: 10px 14px; }

/* ChÃ¢n trang vÃ  thanh cÃ´ng cá»¥ bÃ i viáº¿t. */
.article-footer { margin-top: var(--sp-4); padding-top: var(--sp-3); }
.related-articles { margin-top: var(--sp-4); }

/* ============================================================================
 * Trang Há»i Ä‘Ã¡p
 * ========================================================================== */
.faq-jump {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: var(--sp-4);
}
.faq-jump a {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 12px;
  border: 1px solid var(--color-border-strong);
  border-radius: var(--radius-pill);
  font-size: var(--fs-sm);
  color: var(--color-text-muted);
}
.faq-jump a:hover {
  border-color: var(--color-accent-500);
  color: var(--color-accent-500);
  text-decoration: none;
}
.faq-jump__count {
  font-size: var(--fs-xs);
  font-variant-numeric: tabular-nums;
  color: var(--color-text-soft);
}

.faq-list { display: grid; gap: 0; }
.faq-item { border-bottom: 1px solid var(--color-border); }
.faq-item:last-child { border-bottom: 0; }

.faq-item__question {
  position: relative;
  padding: 12px 32px 12px 0;
  font-weight: 600;
  line-height: 1.5;
  cursor: pointer;
  list-style: none;
}
.faq-item__question::-webkit-details-marker { display: none; }
.faq-item__question:hover { color: var(--color-accent-500); }
.faq-item__question:focus-visible {
  outline: 2px solid var(--color-primary-400);
  outline-offset: 2px;
}
/* Dáº¥u cá»™ng váº½ báº±ng CSS, xoay thÃ nh dáº¥u trá»« khi má»Ÿ. */
.faq-item__question::after {
  content: "";
  position: absolute;
  right: 8px;
  top: 50%;
  width: 11px;
  height: 11px;
  margin-top: -6px;
  background:
    linear-gradient(var(--color-text-soft), var(--color-text-soft)) center/100% 2px no-repeat,
    linear-gradient(var(--color-text-soft), var(--color-text-soft)) center/2px 100% no-repeat;
  transition: transform var(--transition-fast);
}
.faq-item[open] .faq-item__question::after {
  background: linear-gradient(var(--color-accent-500), var(--color-accent-500)) center/100% 2px no-repeat;
  transform: rotate(180deg);
}
.faq-item__answer { padding: 0 32px 14px 0; color: var(--color-text-muted); }

@media (prefers-reduced-motion: reduce) {
  .faq-item__question::after { transition: none; }
}

/* ==========================================================================
   Trang Giá»›i thiá»‡u
   ========================================================================== */

.about-layout {
  display: grid;
  gap: var(--sp-5);
  grid-template-columns: 1fr;
  align-items: start;
}
@media (min-width: 992px) {
  .about-layout { grid-template-columns: 2fr 1fr; }
}

.about-main { display: grid; gap: var(--sp-5); }
.about-side { display: grid; gap: var(--sp-5); }
@media (min-width: 992px) {
  /* Cá»™t phá»¥ bÃ¡m theo khi cuá»™n â€” ná»™i dung liÃªn há»‡ lÃ  thá»© ngÆ°á»i Ä‘á»c cáº§n láº¥y
     báº¥t ká»ƒ Ä‘ang Ä‘á»c tá»›i Ä‘oáº¡n nÃ o. */
  .about-side { position: sticky; top: var(--sp-5); }
}

.about-block__title {
  font-size: var(--fs-xl);
  margin: 0 0 var(--sp-4);
  padding-bottom: var(--sp-3);
  border-bottom: 1px solid var(--color-border);
  color: var(--color-primary-600);
}
.about-block__more { margin: var(--sp-4) 0 0; font-size: var(--fs-sm); }
.about-block p { margin: 0 0 var(--sp-3); }
.about-block p:last-child { margin-bottom: 0; }

/* --- CÆ¡ sá»Ÿ phÃ¡p lÃ½ --------------------------------------------------------
   Má»—i vÄƒn báº£n lÃ  má»™t dÃ²ng dáº«n tá»›i báº£n Ä‘áº§y Ä‘á»§, kÃ¨m nhÃ£n loáº¡i vÄƒn báº£n Ä‘á»ƒ phÃ¢n
   biá»‡t Luáº­t vá»›i Nghá»‹ Ä‘á»‹nh ngay tá»« cÃ¡i nhÃ¬n Ä‘áº§u. */
.legal-basis { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--sp-2); }
.legal-basis__item {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: var(--sp-3);
  align-items: start;
  padding: var(--sp-3);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: var(--color-surface-2);
}
.legal-basis__badge {
  font-size: var(--fs-xs);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--color-accent-500);
  background: #fff;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-pill);
  padding: 3px 10px;
  white-space: nowrap;
}
.legal-basis__body { min-width: 0; }
.legal-basis__title {
  display: block;
  font-weight: 600;
  color: var(--color-text);
  line-height: 1.45;
}
.legal-basis__title:hover { color: var(--color-accent-500); text-decoration: none; }
.legal-basis__meta {
  margin: 2px 0 0;
  font-size: var(--fs-sm);
  color: var(--color-text-muted);
}

/* --- Chá»©c nÄƒng, nhiá»‡m vá»¥ --------------------------------------------------
   Dáº¥u Ä‘áº§u dÃ²ng váº½ báº±ng ::before thay vÃ¬ list-style Ä‘á»ƒ canh tháº³ng hÃ ng vá»›i chá»¯
   á»Ÿ dÃ²ng thá»© hai trá»Ÿ Ä‘i. */
.duty-list { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--sp-3); }
.duty-list li {
  position: relative;
  padding-left: var(--sp-5);
  line-height: 1.55;
}
.duty-list li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.6em;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--color-accent-500);
}

/* --- Dá»‹ch vá»¥ -------------------------------------------------------------- */
.service-grid {
  display: grid;
  gap: var(--sp-3);
  grid-template-columns: 1fr;
}
@media (min-width: 640px) {
  .service-grid { grid-template-columns: 1fr 1fr; }
}
.service-card {
  display: grid;
  gap: 4px;
  align-content: start;
  padding: var(--sp-4);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: var(--color-surface-2);
  color: var(--color-text);
  transition: border-color var(--transition-fast), background var(--transition-fast);
}
.service-card:hover,
.service-card:focus-visible {
  border-color: var(--color-accent-500);
  background: #fff;
  text-decoration: none;
  color: var(--color-text);
}
.service-card__title { font-weight: 600; color: var(--color-primary-600); }
.service-card__summary { font-size: var(--fs-sm); color: var(--color-text-muted); line-height: 1.5; }
.service-card__meta { font-size: var(--fs-xs); color: var(--color-text-soft); }

/* --- Khá»‘i liÃªn há»‡ --------------------------------------------------------- */
.about-contact__list { margin: 0; display: grid; gap: 2px; }
.about-contact__list dt {
  font-size: var(--fs-xs);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--color-text-soft);
  margin-top: var(--sp-3);
}
.about-contact__list dt:first-of-type { margin-top: 0; }
.about-contact__list dd {
  margin: 0;
  font-size: var(--fs-sm);
  line-height: 1.5;
  color: var(--color-text);
}
.about-contact__cta {
  display: block;
  margin-top: var(--sp-4);
  text-align: center;
}

/* --- Danh sÃ¡ch biá»ƒu máº«u táº£i vá» ------------------------------------------- */
.form-list { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--sp-2); }
.form-list__link {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: var(--sp-3);
  align-items: center;
  padding: var(--sp-3);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: var(--color-surface-2);
  color: var(--color-text);
  transition: border-color var(--transition-fast), background var(--transition-fast);
}
.form-list__link:hover,
.form-list__link:focus-visible {
  border-color: var(--color-accent-500);
  background: #fff;
  text-decoration: none;
  color: var(--color-text);
}
.form-list__icon { display: flex; color: var(--color-accent-500); }
.form-list__body { display: grid; gap: 2px; min-width: 0; }
.form-list__title { font-weight: 600; line-height: 1.4; }
.form-list__meta { font-size: var(--fs-sm); color: var(--color-text-muted); }

/* --- Báº£ng so sÃ¡nh hai loáº¡i tá»• chá»©c (trang CÆ¡ cáº¥u tá»• chá»©c) ----------------- */
.compare-grid {
  display: grid;
  gap: var(--sp-3);
  grid-template-columns: 1fr;
  margin-top: var(--sp-4);
}
@media (min-width: 720px) {
  .compare-grid { grid-template-columns: 1fr 1fr; }
}
.compare-card {
  padding: var(--sp-4);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: var(--color-surface-2);
}
/* Cá»™t nÃ³i vá» chÃ­nh VÄƒn phÃ²ng nÃ y Ä‘Æ°á»£c nháº¥n Ä‘á»ƒ ngÆ°á»i Ä‘á»c phÃ¢n biá»‡t ngay. */
.compare-card--accent {
  border-color: var(--color-accent-500);
  background: #fff;
}
.compare-card__title {
  margin: 0;
  font-size: var(--fs-base);
  color: var(--color-primary-600);
}
.compare-card__sub {
  margin: 2px 0 var(--sp-3);
  font-size: var(--fs-sm);
  color: var(--color-text-muted);
}
.compare-card__list { margin: 0; padding-left: var(--sp-4); display: grid; gap: 6px; }
.compare-card__list li { font-size: var(--fs-sm); line-height: 1.5; }

/* ==========================================================================
   Danh báº¡ Thá»«a hÃ nh viÃªn vÃ  vÄƒn phÃ²ng
   ========================================================================== */

/* Bá»™ lá»c náº±m ngang cho gá»n; chá»‰ hiá»‡n khi cÃ³ nhiá»u hÆ¡n má»™t vÄƒn phÃ²ng. */
.filter-inline { display: grid; gap: var(--sp-3); align-items: end; }
@media (min-width: 720px) {
  .filter-inline { grid-template-columns: 1fr 1fr auto; }
}
.filter-inline .form-row { margin: 0; }
.filter-inline__actions { display: flex; gap: var(--sp-2); }

.office-cards,
.officer-cards { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--sp-3); }

.office-card {
  padding: var(--sp-4);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: var(--color-surface-2);
}
.office-card__head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--sp-3);
  margin-bottom: var(--sp-3);
}
.office-card__title { margin: 0; font-size: var(--fs-lg); }
.office-card__title a { color: var(--color-primary-600); }
.badge--kind {
  font-size: var(--fs-xs);
  font-weight: 600;
  color: var(--color-accent-500);
  background: #fff;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-pill);
  padding: 3px 10px;
  white-space: nowrap;
}

/* NhÃ£n vÃ  giÃ¡ trá»‹ xáº¿p hai cá»™t trÃªn mÃ n hÃ¬nh rá»™ng, xuá»‘ng dÃ²ng trÃªn mÃ n háº¹p. */
.office-card__meta { margin: 0; display: grid; gap: 2px; }
@media (min-width: 560px) {
  .office-card__meta { grid-template-columns: 120px 1fr; gap: 6px var(--sp-3); }
}
.office-card__meta dt {
  font-size: var(--fs-xs);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--color-text-soft);
}
.office-card__meta dd { margin: 0; font-size: var(--fs-sm); line-height: 1.5; }

.officer-card {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-3);
  padding: var(--sp-3) var(--sp-4);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: var(--color-surface-2);
}
.officer-card__body { min-width: 0; }
.officer-card__name { margin: 0; font-size: var(--fs-base); }
.officer-card__meta { margin: 2px 0 0; font-size: var(--fs-sm); color: var(--color-text-muted); }
.officer-card__status {
  font-size: var(--fs-xs);
  font-weight: 600;
  border-radius: var(--radius-pill);
  padding: 3px 10px;
  white-space: nowrap;
  border: 1px solid transparent;
}
.officer-card__status--practicing { background: #e8f5ec; color: #1c6b3a; border-color: #bfe3cc; }
.officer-card__status--suspended  { background: #fdf3e2; color: #8a5a12; border-color: #f0dcb8; }
.officer-card__status--dismissed  { background: var(--color-surface-2); color: var(--color-text-muted); border-color: var(--color-border); }

/* ============================================================================
 * News pages â€” magazine-style layout
 * ============================================================================ */

/* Page header vá»›i Ä‘Æ°á»ng káº» phÃ­a dÆ°á»›i */
.page-header--bordered {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--sp-4);
  padding-bottom: var(--sp-4);
  margin-bottom: var(--sp-5);
  border-bottom: 2px solid var(--color-primary-500);
}

/* RSS link bÃªn cáº¡nh tiÃªu Ä‘á» */
.rss-link {
  display: inline-flex;
  align-items: center;
  gap: var(--sp-2);
  padding: var(--sp-2) var(--sp-4);
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-pill);
  color: var(--color-text-muted);
  font-size: var(--fs-sm);
  font-weight: 500;
  text-decoration: none;
  transition: color var(--transition-fast), border-color var(--transition-fast),
              background var(--transition-fast);
  white-space: nowrap;
  flex-shrink: 0;
}
.rss-link svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 2; }
.rss-link:hover {
  color: var(--color-accent-500);
  border-color: var(--color-accent-500);
  background: var(--color-accent-50);
  text-decoration: none;
}

/* Category tabs */
.category-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-2);
  margin-bottom: var(--sp-5);
  padding-bottom: var(--sp-4);
  border-bottom: 1px solid var(--color-border);
}
.category-tabs__item {
  display: inline-flex;
  align-items: center;
  padding: var(--sp-2) var(--sp-4);
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-pill);
  color: var(--color-text-muted);
  font-size: var(--fs-sm);
  font-weight: 500;
  text-decoration: none;
  transition: color var(--transition-fast), border-color var(--transition-fast),
              background var(--transition-fast);
}
.category-tabs__item:hover {
  color: var(--color-primary-600);
  border-color: var(--color-primary-400);
  text-decoration: none;
}
.category-tabs__item.is-active {
  background: var(--color-primary-500);
  border-color: var(--color-primary-500);
  color: var(--color-text-inverse);
}

/* News hero â€” full-width feature article */
.news-hero {
  margin-bottom: var(--sp-5);
  border-radius: var(--radius-lg);
  overflow: hidden;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  box-shadow: var(--shadow-md);
}
.news-hero__link {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0;
  text-decoration: none;
  color: inherit;
}
.news-hero__link:hover { text-decoration: none; }
.news-hero__link:hover .news-hero__title { color: var(--color-accent-500); }

@media (min-width: 768px) {
  .news-hero__link { grid-template-columns: 1fr 1.4fr; }
}
.news-hero__media {
  aspect-ratio: 16 / 10;
  overflow: hidden;
  background: var(--color-surface-2);
}
.news-hero__media img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
  transition: transform 0.4s ease-out;
}
.news-hero__link:hover .news-hero__media img { transform: scale(1.03); }
.news-hero__content {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: var(--sp-4);
  padding: var(--sp-6) var(--sp-7);
}
.news-hero__title {
  margin: 0;
  font-size: var(--fs-2xl);
  font-weight: 700;
  line-height: 1.25;
  letter-spacing: -0.015em;
  color: var(--color-primary-600);
  transition: color var(--transition-fast);
}
@media (min-width: 768px) {
  .news-hero__title { font-size: var(--fs-3xl); }
}
.news-hero__excerpt {
  margin: 0;
  font-size: var(--fs-lg);
  color: var(--color-text-muted);
  line-height: 1.6;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.news-hero__meta {
  display: flex;
  align-items: center;
  gap: var(--sp-4);
  font-size: var(--fs-sm);
  color: var(--color-text-soft);
}
.news-hero__category {
  font-weight: 600;
  color: var(--color-accent-500);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  font-size: var(--fs-xs);
}

/* Featured row â€” 2-3 side-by-side feature cards */
.featured-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: var(--sp-4);
  margin-bottom: var(--sp-6);
}
.featured-card {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
  transition: box-shadow var(--transition-base), transform var(--transition-base);
}
.featured-card:hover {
  box-shadow: var(--shadow-lg);
  transform: translateY(-3px);
}
.featured-card__link {
  display: flex;
  flex-direction: column;
  text-decoration: none;
  color: inherit;
  height: 100%;
}
.featured-card__media {
  aspect-ratio: 16 / 9;
  overflow: hidden;
  background: var(--color-surface-2);
}
.featured-card__media img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
  transition: transform 0.4s ease-out;
}
.featured-card:hover .featured-card__media img { transform: scale(1.05); }
.featured-card__content {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: var(--sp-2);
  padding: var(--sp-4) var(--sp-5);
}
.featured-card__title {
  margin: 0;
  font-size: var(--fs-lg);
  font-weight: 600;
  line-height: 1.35;
  color: var(--color-primary-600);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.featured-card__excerpt {
  margin: 0;
  font-size: var(--fs-sm);
  color: var(--color-text-muted);
  line-height: 1.5;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  flex: 1;
}
.featured-card__meta {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  font-size: var(--fs-xs);
  color: var(--color-text-soft);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  margin-top: auto;
  padding-top: var(--sp-2);
  border-top: 1px solid var(--color-border);
}

/* News layout â€” main content + sidebar */
.news-layout {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--sp-6);
}
@media (min-width: 1024px) {
  .news-layout { grid-template-columns: 1fr 320px; }
}
.news-layout__main { min-width: 0; }
.news-layout__sidebar { min-width: 0; }

/* Article grid */
.article-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: var(--sp-5);
}

/* Article card */
.article-card {
  display: flex;
  flex-direction: column;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
  transition: box-shadow var(--transition-base), transform var(--transition-base),
              border-color var(--transition-base);
}
.article-card:hover {
  box-shadow: var(--shadow-lg);
  transform: translateY(-3px);
  border-color: var(--color-primary-400);
}
.article-card__media {
  display: block;
  aspect-ratio: 16 / 10;
  overflow: hidden;
  background: var(--color-surface-2);
  flex-shrink: 0;
}
.article-card__media img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
  transition: transform 0.4s ease-out;
}
.article-card:hover .article-card__media img { transform: scale(1.05); }
.article-card.no-image .article-card__body { padding-top: var(--sp-5); }
.article-card__body {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: var(--sp-3);
  padding: var(--sp-5);
}
.article-card__meta {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--sp-3);
  font-size: var(--fs-xs);
  color: var(--color-text-soft);
  text-transform: uppercase;
  letter-spacing: 0.06em;
}
.article-card__category {
  font-weight: 600;
  color: var(--color-accent-500);
  transition: color var(--transition-fast);
}
.article-card__category:hover { color: var(--color-accent-600); text-decoration: none; }
.article-card__tags { display: flex; gap: var(--sp-1); }
.article-card__title {
  margin: 0;
  font-size: var(--fs-lg);
  font-weight: 600;
  line-height: 1.35;
  letter-spacing: -0.005em;
}
.article-card__title a {
  color: var(--color-primary-600);
  text-decoration: none;
  transition: color var(--transition-fast);
}
.article-card__title a:hover { color: var(--color-accent-500); }
.article-card__excerpt {
  margin: 0;
  font-size: var(--fs-sm);
  color: var(--color-text-muted);
  line-height: 1.6;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
  flex: 1;
}
.article-card__read-more {
  margin-top: auto;
  font-size: var(--fs-sm);
  font-weight: 600;
  color: var(--color-primary-500);
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: var(--sp-1);
  transition: color var(--transition-fast);
}
.article-card__read-more:hover { color: var(--color-accent-500); text-decoration: none; }

/* Sidebar widgets */
.sidebar-widget {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: var(--sp-5);
  margin-bottom: var(--sp-4);
  box-shadow: var(--shadow-sm);
}
.sidebar-widget__title {
  display: flex;
  align-items: center;
  gap: var(--sp-2);
  margin: 0 0 var(--sp-4);
  padding-bottom: var(--sp-3);
  border-bottom: 2px solid var(--color-accent-500);
  font-size: var(--fs-base);
  font-weight: 600;
  color: var(--color-primary-600);
}
.sidebar-widget__title svg {
  width: 18px;
  height: 18px;
  fill: none;
  stroke: var(--color-accent-500);
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
  flex-shrink: 0;
}

/* Sidebar list */
.sidebar-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--sp-3);
}
.sidebar-list__item {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding-bottom: var(--sp-3);
  border-bottom: 1px dashed var(--color-border);
}
.sidebar-list__item:last-child { border-bottom: 0; padding-bottom: 0; }
.sidebar-list__link {
  font-size: var(--fs-sm);
  font-weight: 500;
  line-height: 1.4;
  color: var(--color-primary-600);
  text-decoration: none;
  transition: color var(--transition-fast);
}
.sidebar-list__link:hover { color: var(--color-accent-500); text-decoration: none; }
.sidebar-list__time { font-size: var(--fs-xs); color: var(--color-text-soft); }
.sidebar-list--ranked {
  counter-reset: sidebar-rank;
}
.sidebar-list--ranked .sidebar-list__item {
  display: grid;
  grid-template-columns: 28px 1fr;
  gap: var(--sp-2);
  align-items: start;
  padding-left: 0;
}
.sidebar-list--ranked .sidebar-list__item::before {
  counter-increment: sidebar-rank;
  content: counter(sidebar-rank);
  display: flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  font-size: var(--fs-xs);
  font-weight: 700;
  color: var(--color-text-inverse);
  background: var(--color-primary-500);
  border-radius: var(--radius-sm);
  flex-shrink: 0;
}

/* Sidebar categories */
.sidebar-categories {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--sp-1);
}
.sidebar-categories__item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-2);
  padding: var(--sp-3) var(--sp-4);
  background: var(--color-surface-2);
  border-radius: var(--radius-sm);
  color: var(--color-primary-600);
  font-size: var(--fs-sm);
  font-weight: 500;
  text-decoration: none;
  transition: background var(--transition-fast), color var(--transition-fast);
}
.sidebar-categories__item:hover {
  background: var(--color-accent-50);
  color: var(--color-accent-600);
  text-decoration: none;
}
.sidebar-categories__item svg {
  width: 16px;
  height: 16px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  flex-shrink: 0;
}

/* Category grid for /chuyen-muc */
.category-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: var(--sp-4);
}
.category-card {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
  transition: box-shadow var(--transition-base), transform var(--transition-base),
              border-color var(--transition-base);
}
.category-card:hover {
  box-shadow: var(--shadow-lg);
  transform: translateY(-2px);
  border-color: var(--color-primary-400);
}
.category-card__link {
  display: grid;
  grid-template-columns: 48px 1fr auto;
  align-items: center;
  gap: var(--sp-4);
  padding: var(--sp-5);
  text-decoration: none;
  color: inherit;
}
.category-card__icon {
  width: 48px;
  height: 48px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--color-primary-50);
  border-radius: var(--radius-md);
  color: var(--color-primary-600);
}
.category-card__icon svg {
  width: 24px;
  height: 24px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.category-card__content { min-width: 0; }
.category-card__title {
  margin: 0;
  font-size: var(--fs-lg);
  font-weight: 600;
  color: var(--color-primary-600);
}
.category-card__desc {
  margin: var(--sp-1) 0 0;
  font-size: var(--fs-sm);
  color: var(--color-text-muted);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.category-card__arrow {
  width: 32px;
  height: 32px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--color-surface-2);
  border-radius: 50%;
  color: var(--color-text-soft);
  flex-shrink: 0;
  transition: background var(--transition-fast), color var(--transition-fast),
              transform var(--transition-fast);
}
.category-card__arrow svg {
  width: 18px;
  height: 18px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
}
.category-card:hover .category-card__arrow {
  background: var(--color-accent-500);
  color: var(--color-text-inverse);
  transform: translateX(4px);
}

/* Responsive adjustments */
@media (max-width: 640px) {
  .page-header--bordered { flex-direction: column; }
  .rss-link { align-self: flex-start; }
  .news-hero__content { padding: var(--sp-4) var(--sp-5); }
  .news-hero__title { font-size: var(--fs-xl); }
  .news-hero__excerpt { font-size: var(--fs-base); -webkit-line-clamp: 2; }
  .article-grid { grid-template-columns: 1fr; }
  .category-grid { grid-template-columns: 1fr; }
  .featured-row { grid-template-columns: 1fr; }
}

/* Pagination with page numbers */
.pagination { display: flex; flex-wrap: wrap; gap: var(--sp-2); align-items: center; justify-content: center; margin-top: var(--sp-6); }
.pagination .btn-outline.is-active {
  background: var(--color-primary-500);
  border-color: var(--color-primary-500);
  color: var(--color-text-inverse);
  pointer-events: none;
}

/* ============================================================================
 * Document list (VÄƒn báº£n phÃ¡p luáº­t)
 * ============================================================================ */
.doc-list {
  display: grid;
  gap: var(--sp-4);
}
.doc-card {
  padding: var(--sp-5);
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  transition: box-shadow var(--transition-fast), transform var(--transition-fast),
              border-color var(--transition-fast);
}
.doc-card:hover {
  box-shadow: var(--shadow-md);
  transform: translateY(-2px);
  border-color: var(--color-primary-400);
}
.doc-card__header {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  margin-bottom: var(--sp-3);
}
.doc-card__date {
  font-size: var(--fs-xs);
  color: var(--color-text-soft);
}
.doc-card__title {
  margin: 0 0 var(--sp-2);
  font-size: var(--fs-lg);
  line-height: 1.35;
}
.doc-card__title a { color: var(--color-primary-600); }
.doc-card__title a:hover { color: var(--color-accent-500); text-decoration: none; }
.doc-card__number,
.doc-card__authority {
  margin: 0 0 var(--sp-1);
  font-size: var(--fs-sm);
  color: var(--color-text-muted);
}
.doc-card__excerpt {
  margin: var(--sp-3) 0;
  font-size: var(--fs-sm);
  color: var(--color-text-muted);
  line-height: 1.6;
}
.doc-card__link {
  display: inline-flex;
  align-items: center;
  gap: var(--sp-2);
  font-size: var(--fs-sm);
  font-weight: 500;
  color: var(--color-accent-500);
}
.doc-card__link:hover { color: var(--color-accent-600); text-decoration: none; }

/* ============================================================================
 * Notice grid (ThÃ´ng bÃ¡o)
 * ============================================================================ */
.notice-grid {
  display: grid;
  gap: var(--sp-4);
}
.notice-card {
  padding: var(--sp-5);
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  transition: box-shadow var(--transition-fast), transform var(--transition-fast),
              border-color var(--transition-fast);
}
.notice-card:hover {
  box-shadow: var(--shadow-md);
  transform: translateY(-2px);
  border-color: var(--color-primary-400);
}
.notice-card.is-expired { opacity: 0.7; }
.notice-card__header {
  display: flex;
  align-items: center;
  gap: var(--sp-2);
  margin-bottom: var(--sp-3);
}
.notice-card__badge { background: var(--color-accent-50); color: var(--color-accent-600); border-color: transparent; }
.notice-card__expired { background: var(--color-surface-2); color: var(--color-text-muted); }
.notice-card__title {
  margin: 0 0 var(--sp-2);
  font-size: var(--fs-lg);
  line-height: 1.35;
}
.notice-card__title a { color: var(--color-primary-600); }
.notice-card__title a:hover { color: var(--color-accent-500); text-decoration: none; }
.notice-card__ref {
  margin: 0 0 var(--sp-2);
  font-size: var(--fs-sm);
  color: var(--color-text-muted);
}
.notice-card__meta {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-4);
  margin-bottom: var(--sp-3);
}
.notice-card__date,
.notice-card__expiry {
  display: inline-flex;
  align-items: center;
  gap: var(--sp-2);
  font-size: var(--fs-xs);
  color: var(--color-text-soft);
}
.notice-card__date svg,
.notice-card__expiry svg {
  width: 14px;
  height: 14px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
}
.notice-card__excerpt {
  margin: 0 0 var(--sp-3);
  font-size: var(--fs-sm);
  color: var(--color-text-muted);
  line-height: 1.6;
}
.notice-card__link {
  display: inline-flex;
  align-items: center;
  gap: var(--sp-2);
  font-size: var(--fs-sm);
  font-weight: 500;
  color: var(--color-accent-500);
}
.notice-card__link:hover { color: var(--color-accent-600); text-decoration: none; }

/* ============================================================================
 * Contact page
 * ============================================================================ */
.contact-layout {
  display: grid;
  gap: var(--sp-5);
  grid-template-columns: 1fr;
}
@media (min-width: 992px) {
  .contact-layout { grid-template-columns: 1fr 360px; }
}
.contact-layout__main { min-width: 0; }
.contact-layout__sidebar { min-width: 0; }

/* Contact form */
.contact-form {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  padding: var(--sp-6);
}
.contact-form__row {
  display: grid;
  gap: var(--sp-4);
  grid-template-columns: 1fr;
  margin-bottom: var(--sp-4);
}
@media (min-width: 640px) {
  .contact-form__row { grid-template-columns: 1fr 1fr; }
}
.contact-form__actions {
  margin-top: var(--sp-5);
  display: flex;
}
.contact-form__actions .btn-primary {
  display: inline-flex;
  align-items: center;
  gap: var(--sp-2);
}
.contact-form__actions .btn-primary svg {
  width: 18px;
  height: 18px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
}

/* Contact success */
.contact-success {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  padding: var(--sp-8) var(--sp-6);
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
}
.contact-success__icon {
  width: 80px;
  height: 80px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(30, 122, 63, 0.10);
  border-radius: 50%;
  margin-bottom: var(--sp-5);
}
.contact-success__icon svg {
  width: 40px;
  height: 40px;
  fill: none;
  stroke: var(--color-success);
  stroke-width: 2;
}
.contact-success h2 {
  margin: 0 0 var(--sp-3);
  color: var(--color-primary-600);
}
.contact-success p {
  margin: 0 0 var(--sp-5);
  color: var(--color-text-muted);
}

/* Contact info sidebar */
.contact-info {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  padding: var(--sp-6);
}
.contact-info__title {
  margin: 0 0 var(--sp-5);
  padding-bottom: var(--sp-4);
  border-bottom: 2px solid var(--color-accent-500);
  font-size: var(--fs-xl);
  color: var(--color-primary-600);
}
.contact-info__item {
  display: grid;
  grid-template-columns: 40px 1fr;
  gap: var(--sp-3);
  margin-bottom: var(--sp-4);
}
.contact-info__item svg {
  width: 24px;
  height: 24px;
  fill: none;
  stroke: var(--color-accent-500);
  stroke-width: 1.75;
  stroke-linecap: round;
  stroke-linejoin: round;
  margin-top: 2px;
}
.contact-info__item strong {
  display: block;
  font-size: var(--fs-xs);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--color-text-soft);
  margin-bottom: 4px;
}
.contact-info__item p {
  margin: 0;
  font-size: var(--fs-sm);
  color: var(--color-text);
  line-height: 1.5;
}
.contact-info__map {
  margin-top: var(--sp-5);
  padding-top: var(--sp-4);
  border-top: 1px solid var(--color-border);
}
.contact-info__map .btn-outline {
  width: 100%;
  justify-content: center;
  gap: var(--sp-2);
}
.contact-info__map .btn-outline svg {
  width: 18px;
  height: 18px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
}

/* Responsive adjustments for new components */
@media (max-width: 640px) {
  .contact-layout { grid-template-columns: 1fr; }
  .contact-form { padding: var(--sp-4); }
  .doc-card, .notice-card { padding: var(--sp-4); }
}

@media (max-width: 768px) {
  .contact-info { padding: var(--sp-4); }
}

@media (max-width: 992px) {
  .contact-layout__sidebar { order: -1; }
  .contact-info__map .btn-outline { width: 100%; }
}

/* Doc card responsive */
@media (min-width: 640px) {
  .doc-list { grid-template-columns: repeat(2, 1fr); }
}

/* Notice card responsive */
@media (min-width: 640px) {
  .notice-grid { grid-template-columns: repeat(2, 1fr); }
}

/* ============================================================================
 * Trang Dá»‹ch vá»¥ â€” cao cáº¥p
 *
 * Bá»‘ cá»¥c editorial: hero cÃ³ sá»‘ thá»© tá»± + lead, stats strip 4 cá»™t, bento grid
 * dá»‹ch vá»¥ vá»›i card Ä‘áº§u rá»™ng vÃ  card cuá»‘i accent, quy trÃ¬nh 4 bÆ°á»›c cÃ³ Ä‘Æ°á»ng
 * káº» dá»c, CTA cuá»‘i trang. NguyÃªn táº¯c: Ã­t viá»n, nhiá»u khoáº£ng tráº¯ng, má»™t
 * tÃ­n hiá»‡u phÃ¢n tÃ¡ch má»—i khá»‘i, typography pháº³ng vÃ  Ä‘áº­m cháº¥t bÃ¡o chÃ­.
 * ========================================================================== */

/* â”€â”€â”€ Hero â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.services-hero {
  position: relative;
  /* Chỉ tràn NGANG. Margin-top âm kéo hero trùm lên breadcrumb ngay phía trên —
     lỗi này đã sửa cho .page-hero từ trước nhưng .services-hero bị bỏ sót. */
  margin: 0 calc(var(--container-pad) * -1) var(--sp-6);
  padding: var(--sp-9) var(--container-pad) var(--sp-8);
  background:
    radial-gradient(1200px 400px at 85% 0%, rgba(200, 16, 46, 0.08), transparent 60%),
    linear-gradient(180deg, var(--color-primary-50) 0%, var(--color-surface) 100%);
  border-bottom: 1px solid var(--color-border);
  overflow: hidden;
}
.services-hero::before {
  content: "";
  position: absolute;
  inset: auto 0 0 0;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--color-accent-500) 30%, transparent 80%);
  opacity: 0.4;
}
.services-hero__inner {
  /* Cùng lý do như .page-hero__inner: cha đã tràn rồi đệm lại, đặt trần ở đây
     chỉ làm hero lệch so với phần còn lại của trang. */
  display: grid;
  gap: var(--sp-4);
}
.services-hero__signal {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  color: var(--color-accent-600);
  font-size: var(--fs-xs);
  letter-spacing: 0.18em;
  text-transform: uppercase;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}
.services-hero__rule {
  flex: 0 0 80px;
  height: 1px;
  background: var(--color-accent-500);
  opacity: 0.6;
}
.services-hero__kicker {
  margin: 0;
  font-size: var(--fs-sm);
  color: var(--color-text-soft);
  letter-spacing: 0.02em;
}
.services-hero__title {
  margin: 0;
  font-size: clamp(2rem, 4.5vw, 3.4rem);
  line-height: 1.08;
  letter-spacing: -0.02em;
  color: var(--color-primary-700);
  font-weight: 700;
}
.services-hero__title-em {
  background: linear-gradient(120deg, var(--color-accent-500) 0%, var(--color-accent-600) 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  font-weight: 700;
}
.services-hero__lead {
  margin: var(--sp-2) 0 0;
  max-width: 640px;
  font-size: var(--fs-lg);
  line-height: 1.6;
  color: var(--color-text-muted);
}
.services-hero__cta {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-3);
  margin-top: var(--sp-3);
}
.services-hero__btn {
  display: inline-flex;
  align-items: center;
  gap: var(--sp-2);
  padding: 14px 24px;
  border-radius: var(--radius-md);
  font-weight: 600;
  font-size: var(--fs-base);
  text-decoration: none;
  transition: transform var(--transition-fast), background var(--transition-fast), border-color var(--transition-fast);
}
.services-hero__btn--primary {
  background: var(--color-primary-700);
  color: var(--color-text-inverse);
  border: 1px solid var(--color-primary-700);
}
.services-hero__btn--primary:hover,
.services-hero__btn--primary:focus-visible {
  background: var(--color-primary-800);
  border-color: var(--color-primary-800);
  color: var(--color-text-inverse);
  text-decoration: none;
  transform: translateY(-1px);
}
.services-hero__btn--ghost {
  background: transparent;
  color: var(--color-text);
  border: 1px solid var(--color-border);
}
.services-hero__btn--ghost:hover,
.services-hero__btn--ghost:focus-visible {
  background: var(--color-surface);
  border-color: var(--color-accent-500);
  color: var(--color-accent-600);
  text-decoration: none;
}

/* â”€â”€â”€ Stats strip â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.services-stats {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0;
  margin: 0 calc(var(--container-pad) * -1) var(--sp-7);
  border-top: 1px solid var(--color-border);
  border-bottom: 1px solid var(--color-border);
  background: var(--color-surface);
}
.services-stats__cell {
  padding: var(--sp-6) var(--container-pad);
  border-left: 1px solid var(--color-border);
  display: grid;
  gap: 6px;
  position: relative;
}
.services-stats__cell:first-child { border-left: 0; }
.services-stats__value {
  font-size: clamp(1.6rem, 3vw, 2.2rem);
  font-weight: 700;
  color: var(--color-primary-700);
  letter-spacing: -0.01em;
  font-variant-numeric: tabular-nums;
  line-height: 1.1;
}
.services-stats__label {
  font-size: var(--fs-xs);
  color: var(--color-text-soft);
  text-transform: uppercase;
  letter-spacing: 0.1em;
  font-weight: 600;
}

/* â”€â”€â”€ Bento grid â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.services-bento {
  margin-bottom: var(--sp-9);
}
.services-bento__header {
  display: grid;
  gap: var(--sp-2);
  margin-bottom: var(--sp-6);
  padding-bottom: var(--sp-3);
  border-bottom: 2px solid var(--color-accent-500);
  max-width: 720px;
}
.services-bento__title {
  margin: 0;
  font-size: clamp(1.6rem, 3vw, 2.2rem);
  color: var(--color-primary-700);
  letter-spacing: -0.01em;
}
.services-bento__intro {
  margin: 0;
  color: var(--color-text-muted);
  font-size: var(--fs-base);
  line-height: 1.65;
  max-width: 640px;
}
.services-bento__grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--sp-4);
}
.services-bento__card {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  position: relative;
  overflow: hidden;
  transition: transform var(--transition-fast), box-shadow var(--transition-fast), border-color var(--transition-fast);
}
.services-bento__card::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: 3px;
  background: var(--color-accent-500);
  transform: scaleY(0);
  transform-origin: top center;
  transition: transform var(--transition-fast);
}
.services-bento__card:hover {
  border-color: var(--color-accent-500);
  transform: translateY(-2px);
  box-shadow: var(--shadow-md);
}
.services-bento__card:hover::before { transform: scaleY(1); }
.services-bento__link {
  display: grid;
  gap: var(--sp-3);
  padding: var(--sp-6);
  height: 100%;
  color: var(--color-text);
  text-decoration: none;
  grid-template-rows: auto auto 1fr auto auto;
}
.services-bento__cardhead {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-3);
}
.services-bento__num {
  font-size: clamp(2.4rem, 4vw, 3rem);
  font-weight: 700;
  color: var(--color-primary-700);
  letter-spacing: -0.03em;
  line-height: 1;
  font-variant-numeric: tabular-nums;
}
.services-bento__icon {
  width: 52px;
  height: 52px;
  border-radius: 999px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--color-primary-50);
  color: var(--color-primary-700);
  border: 1px solid var(--color-border);
  transition: background var(--transition-fast), color var(--transition-fast);
}
.services-bento__card:hover .services-bento__icon {
  background: var(--color-accent-500);
  color: var(--color-text-inverse);
  border-color: var(--color-accent-500);
}
.services-bento__name {
  margin: 0;
  font-size: clamp(1.15rem, 1.8vw, 1.45rem);
  color: var(--color-primary-700);
  line-height: 1.25;
  letter-spacing: -0.01em;
  font-weight: 600;
}
.services-bento__desc {
  margin: 0;
  color: var(--color-text-muted);
  font-size: var(--fs-base);
  line-height: 1.6;
}
.services-bento__facts {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--sp-3);
  margin: var(--sp-3) 0 0;
  padding-top: var(--sp-3);
  border-top: 1px dashed var(--color-border);
}
.services-bento__facts div { display: grid; gap: 2px; }
.services-bento__facts dt {
  font-size: var(--fs-xs);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--color-text-soft);
  font-weight: 600;
}
.services-bento__facts dd {
  margin: 0;
  font-size: var(--fs-sm);
  color: var(--color-text);
  font-weight: 500;
}
.services-bento__foot {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  margin-top: var(--sp-2);
}
.services-bento__more {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: var(--fs-sm);
  font-weight: 600;
  color: var(--color-accent-600);
  letter-spacing: 0.02em;
}
.services-bento__card:hover .services-bento__more {
  color: var(--color-accent-500);
}
.services-bento__more svg { transition: transform var(--transition-fast); }
.services-bento__card:hover .services-bento__more svg { transform: translateX(4px); }
.services-bento__fallback {
  margin-top: var(--sp-4);
  padding: var(--sp-3) var(--sp-4);
  background: var(--color-primary-50);
  border: 1px dashed var(--color-border);
  border-radius: var(--radius-md);
  font-size: var(--fs-sm);
  color: var(--color-text-muted);
}

/* Card wide (card Ä‘áº§u tiÃªn) â€” chiáº¿m 2 cá»™t á»Ÿ mÃ n lá»›n */
.services-bento__card--wide {
  background: linear-gradient(135deg, var(--color-primary-50) 0%, var(--color-surface) 100%);
}
.services-bento__card--wide .services-bento__num {
  color: var(--color-accent-600);
}

/* Card accent (card cuá»‘i) â€” Ä‘áº£o ngÆ°á»£c phá»‘i mÃ u */
.services-bento__card--accent {
  background: var(--color-primary-700);
  border-color: var(--color-primary-700);
  color: var(--color-text-inverse);
}
.services-bento__card--accent .services-bento__name,
.services-bento__card--accent .services-bento__num {
  color: var(--color-text-inverse);
}
.services-bento__card--accent .services-bento__desc { color: rgba(255,255,255,0.82); }
.services-bento__card--accent .services-bento__icon {
  background: rgba(255,255,255,0.1);
  color: var(--color-text-inverse);
  border-color: rgba(255,255,255,0.2);
}
.services-bento__card--accent .services-bento__facts {
  border-top-color: rgba(255,255,255,0.18);
}
.services-bento__card--accent .services-bento__facts dt { color: rgba(255,255,255,0.6); }
.services-bento__card--accent .services-bento__facts dd { color: var(--color-text-inverse); }
.services-bento__card--accent .services-bento__more { color: var(--color-text-inverse); }
.services-bento__card--accent::before { background: var(--color-accent-500); }

/* â”€â”€â”€ Quy trÃ¬nh 4 bÆ°á»›c â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.services-process {
  margin: 0 calc(var(--container-pad) * -1) var(--sp-9);
  padding: var(--sp-8) var(--container-pad);
  background: var(--color-primary-50);
  border-top: 1px solid var(--color-border);
  border-bottom: 1px solid var(--color-border);
}
.services-process__header {
  margin: 0 0 var(--sp-6);
  display: grid;
  gap: var(--sp-2);
}
.services-process__kicker {
  margin: 0;
  font-size: var(--fs-xs);
  color: var(--color-accent-600);
  text-transform: uppercase;
  letter-spacing: 0.16em;
  font-weight: 700;
}
.services-process__title {
  margin: 0;
  font-size: clamp(1.4rem, 2.4vw, 1.9rem);
  color: var(--color-primary-700);
  letter-spacing: -0.01em;
  max-width: 720px;
  line-height: 1.25;
}
.services-process__steps {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--sp-4);
  counter-reset: process;
}
.services-process__step {
  position: relative;
  padding: var(--sp-5);
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  display: grid;
  gap: var(--sp-2);
}
.services-process__num {
  font-size: var(--fs-xs);
  font-weight: 700;
  color: var(--color-accent-600);
  letter-spacing: 0.16em;
  font-variant-numeric: tabular-nums;
}
.services-process__name {
  margin: 0;
  font-size: var(--fs-lg);
  color: var(--color-primary-700);
  letter-spacing: -0.01em;
  font-weight: 600;
}
.services-process__desc {
  margin: 0;
  color: var(--color-text-muted);
  font-size: var(--fs-sm);
  line-height: 1.65;
}

/* â”€â”€â”€ CTA cuá»‘i trang â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
.services-cta {
  margin-bottom: var(--sp-7);
}
.services-cta__inner {
  display: grid;
  gap: var(--sp-5);
  padding: var(--sp-7);
  background:
    radial-gradient(600px 240px at 100% 0%, rgba(200,16,46,0.18), transparent 65%),
    linear-gradient(135deg, var(--color-primary-700) 0%, var(--color-primary-800) 100%);
  color: var(--color-text-inverse);
  border-radius: var(--radius-lg);
  border: 1px solid var(--color-primary-800);
  position: relative;
  overflow: hidden;
}
.services-cta__kicker {
  margin: 0 0 var(--sp-2);
  font-size: var(--fs-xs);
  color: rgba(255,255,255,0.7);
  text-transform: uppercase;
  letter-spacing: 0.16em;
  font-weight: 700;
}
.services-cta__title {
  margin: 0 0 var(--sp-3);
  font-size: clamp(1.4rem, 2.6vw, 1.9rem);
  color: var(--color-text-inverse);
  line-height: 1.25;
  letter-spacing: -0.01em;
}
.services-cta__lead {
  margin: 0;
  color: rgba(255,255,255,0.85);
  font-size: var(--fs-base);
  line-height: 1.65;
  max-width: 560px;
}
.services-cta__actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-3);
  margin-top: var(--sp-3);
}
.services-cta__btn {
  display: inline-flex;
  align-items: center;
  gap: var(--sp-2);
  padding: 12px 22px;
  border-radius: var(--radius-md);
  font-weight: 600;
  text-decoration: none;
  transition: background var(--transition-fast), border-color var(--transition-fast), transform var(--transition-fast);
}
.services-cta__btn--primary {
  background: var(--color-accent-500);
  color: var(--color-text-inverse);
  border: 1px solid var(--color-accent-500);
}
.services-cta__btn--primary:hover,
.services-cta__btn--primary:focus-visible {
  background: var(--color-accent-600);
  border-color: var(--color-accent-600);
  color: var(--color-text-inverse);
  text-decoration: none;
  transform: translateY(-1px);
}
.services-cta__btn--ghost {
  background: transparent;
  color: var(--color-text-inverse);
  border: 1px solid rgba(255,255,255,0.3);
}
.services-cta__btn--ghost:hover,
.services-cta__btn--ghost:focus-visible {
  background: rgba(255,255,255,0.1);
  border-color: rgba(255,255,255,0.6);
  color: var(--color-text-inverse);
  text-decoration: none;
}

/* â”€â”€â”€ Responsive â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
@media (min-width: 640px) {
  .services-stats { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .services-process__steps { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 880px) {
  .services-bento__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .services-bento__card--wide {
    grid-column: span 2;
  }
  .services-process__steps {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
  .services-process__step::after {
    content: "";
    position: absolute;
    right: -10px;
    top: 50%;
    width: 16px;
    height: 1px;
    background: var(--color-border);
    z-index: 1;
  }
  .services-process__step:last-child::after { display: none; }
  .services-cta__inner {
    grid-template-columns: minmax(0, 1.4fr) auto;
    align-items: center;
    gap: var(--sp-6);
  }
  .services-cta__actions { margin-top: 0; }
}
@media (min-width: 1100px) {
  /* Chỉ nới đệm TRÊN/DƯỚI. Đệm ngang phải giữ đúng sp-5 để bù lại phần tràn
     -sp-5 ở margin; đổi sang sp-6 thì hero thụt vào 8px so với các thẻ dưới. */
  .services-hero { padding: var(--sp-10) var(--sp-5) var(--sp-9); }
}
@media (max-width: 640px) {
  .services-bento__link { padding: var(--sp-5); }
  .services-bento__num { font-size: 2rem; }
  .services-bento__icon { width: 44px; height: 44px; }
  .services-cta__inner { padding: var(--sp-5); }
}

@media (prefers-reduced-motion: reduce) {
  .services-bento__card,
  .services-bento__more svg,
  .services-hero__btn,
  .services-cta__btn { transition: none; }
  .services-bento__card:hover { transform: none; }
}

/* ============================================================================
 * Page Hero â€” pattern header dÃ¹ng chung cho táº¥t cáº£ trang public
 *
 * TÃ¡i sá»­ dá»¥ng phong cÃ¡ch editorial cá»§a trang Dá»‹ch vá»¥: sá»‘ thá»© tá»±, Ä‘Æ°á»ng káº»
 * accent, kicker, tiÃªu Ä‘á» to, lead, CTA. TrÆ°á»›c Ä‘Ã¢y má»—i trang dÃ¹ng .page-header
 * máº·c Ä‘á»‹nh â€” nhá» vÃ  nháº¡t so vá»›i pháº§n cÃ²n láº¡i cá»§a cá»•ng.
 *
 * Biáº¿n thá»ƒ:
 *   .page-hero--compact       â€” header gá»n, dÃ¹ng cho trang phá»¥ (Giá»›i thiá»‡u, LiÃªn há»‡)
 *   .page-hero--minimal       â€” khÃ´ng cÃ³ CTA, khÃ´ng cÃ³ sá»‘ thá»© tá»±
 *   .page-hero__action        â€” nÃºt/liÃªn káº¿t á»Ÿ gÃ³c pháº£i (vd. RSS, TÃ¬m kiáº¿m)
 * ========================================================================== */

.page-hero {
  position: relative;
  /* Chá»‰ trÃ n ngang Ä‘á»ƒ gradient cháº¡m mÃ©p viewport; margin-top dÆ°Æ¡ng vá»«a Ä‘á»§
     Ä‘á»ƒ khÃ´ng chá»“ng lÃªn breadcrumb ngay phÃ­a trÃªn. TrÆ°á»›c Ä‘Ã¢y margin-top Ã¢m
     khiáº¿n hero Ä‘Ã¨ lÃªn breadcrumb vÃ  láº¥n vÃ o site-nav á»Ÿ má»™t sá»‘ trang. */
  margin: 0 calc(var(--container-pad) * -1) var(--sp-6);
  padding: var(--sp-8) var(--container-pad) var(--sp-7);
  background:
    radial-gradient(1200px 400px at 85% 0%, rgba(200, 16, 46, 0.08), transparent 60%),
    linear-gradient(180deg, var(--color-primary-50) 0%, var(--color-surface) 100%);
  border-bottom: 1px solid var(--color-border);
  border-radius: 0;
  overflow: hidden;
}
.page-hero::before {
  content: "";
  position: absolute;
  inset: auto 0 0 0;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--color-accent-500) 30%, transparent 80%);
  opacity: 0.4;
}
.page-hero__inner {
  /* KHÔNG đặt max-width ở đây. Khối cha .page-hero đã tràn ra -sp-5 rồi đệm
     lại +sp-5, nên hộp nội dung của nó trùng khít cột nội dung của .container.
     Thêm một trần 1100px vào giữa cột 1240px sẽ thụt chữ vào ~46px so với mọi
     thẻ bên dưới — đúng chỗ lệch mà người dùng nhìn thấy trên /gioi-thieu. */
  display: grid;
  gap: var(--sp-3);
  position: relative;
}
.page-hero__top {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: var(--sp-4);
  flex-wrap: wrap;
}
.page-hero__signal {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  color: var(--color-accent-600);
  font-size: var(--fs-xs);
  letter-spacing: 0.18em;
  text-transform: uppercase;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}
.page-hero__rule {
  flex: 0 0 80px;
  height: 1px;
  background: var(--color-accent-500);
  opacity: 0.6;
}
.page-hero__kicker {
  margin: 0;
  font-size: var(--fs-sm);
  color: var(--color-text-soft);
  letter-spacing: 0.02em;
}
.page-hero__title {
  margin: 0;
  font-size: clamp(1.75rem, 3.6vw, 2.8rem);
  line-height: 1.12;
  letter-spacing: -0.02em;
  color: var(--color-primary-700);
  font-weight: 700;
  max-width: 900px;
}
.page-hero__title-em {
  background: linear-gradient(120deg, var(--color-accent-500) 0%, var(--color-accent-600) 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  font-weight: 700;
}
.page-hero__lead {
  margin: var(--sp-2) 0 0;
  max-width: 720px;
  font-size: var(--fs-lg);
  line-height: 1.6;
  color: var(--color-text-muted);
}
.page-hero__cta {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-3);
  margin-top: var(--sp-3);
}
.page-hero__btn {
  display: inline-flex;
  align-items: center;
  gap: var(--sp-2);
  padding: 12px 22px;
  border-radius: var(--radius-md);
  font-weight: 600;
  font-size: var(--fs-base);
  text-decoration: none;
  transition: transform var(--transition-fast), background var(--transition-fast), border-color var(--transition-fast);
}
.page-hero__btn--primary {
  background: var(--color-primary-700);
  color: var(--color-text-inverse);
  border: 1px solid var(--color-primary-700);
}
.page-hero__btn--primary:hover,
.page-hero__btn--primary:focus-visible {
  background: var(--color-primary-800);
  border-color: var(--color-primary-800);
  color: var(--color-text-inverse);
  text-decoration: none;
  transform: translateY(-1px);
}
.page-hero__btn--ghost {
  background: transparent;
  color: var(--color-text);
  border: 1px solid var(--color-border);
}
.page-hero__btn--ghost:hover,
.page-hero__btn--ghost:focus-visible {
  background: var(--color-surface);
  border-color: var(--color-accent-500);
  color: var(--color-accent-600);
  text-decoration: none;
}
.page-hero__action {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 14px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  font-size: var(--fs-sm);
  font-weight: 600;
  color: var(--color-text);
  background: var(--color-surface);
  text-decoration: none;
  transition: border-color var(--transition-fast), color var(--transition-fast);
}
.page-hero__action:hover,
.page-hero__action:focus-visible {
  border-color: var(--color-accent-500);
  color: var(--color-accent-600);
  text-decoration: none;
}
.page-hero__action svg {
  width: 14px;
  height: 14px;
  fill: currentColor;
}

/* Compact: header gá»n cho cÃ¡c trang phá»¥ â€” bá»›t kicker/signal, tiÃªu Ä‘á» nhá» hÆ¡n */
.page-hero--compact {
  padding: var(--sp-6) var(--sp-5);
  margin-bottom: var(--sp-5);
}
.page-hero--compact .page-hero__title {
  font-size: clamp(1.5rem, 2.6vw, 2rem);
}
.page-hero--compact .page-hero__lead {
  font-size: var(--fs-base);
}

/* Minimal: bá» ná»n gradient, chá»‰ giá»¯ viá»n dÆ°á»›i */
.page-hero--minimal {
  background: var(--color-surface);
  padding: var(--sp-6) var(--sp-5) var(--sp-5);
}
.page-hero--minimal::before { display: none; }

/* ============================================================================
 * CTA cuá»‘i trang â€” pattern dÃ¹ng chung cho má»i trang public
 * ========================================================================== */

.page-cta {
  margin: var(--sp-8) calc(var(--container-pad) * -1) var(--sp-7);
  padding: 0 var(--container-pad);
}
.page-cta__inner {
  display: grid;
  gap: var(--sp-5);
  padding: var(--sp-7);
  background:
    radial-gradient(600px 240px at 100% 0%, rgba(200,16,46,0.18), transparent 65%),
    linear-gradient(135deg, var(--color-primary-700) 0%, var(--color-primary-800) 100%);
  color: var(--color-text-inverse);
  border-radius: var(--radius-lg);
  border: 1px solid var(--color-primary-800);
  position: relative;
  overflow: hidden;
}
.page-cta__kicker {
  margin: 0 0 var(--sp-2);
  font-size: var(--fs-xs);
  color: rgba(255,255,255,0.7);
  text-transform: uppercase;
  letter-spacing: 0.16em;
  font-weight: 700;
}
.page-cta__title {
  margin: 0 0 var(--sp-3);
  font-size: clamp(1.4rem, 2.6vw, 1.9rem);
  color: var(--color-text-inverse);
  line-height: 1.25;
  letter-spacing: -0.01em;
}
.page-cta__lead {
  margin: 0;
  color: rgba(255,255,255,0.85);
  font-size: var(--fs-base);
  line-height: 1.65;
  max-width: 560px;
}
.page-cta__actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-3);
  margin-top: var(--sp-3);
}
.page-cta__btn {
  display: inline-flex;
  align-items: center;
  gap: var(--sp-2);
  padding: 12px 22px;
  border-radius: var(--radius-md);
  font-weight: 600;
  text-decoration: none;
  transition: background var(--transition-fast), border-color var(--transition-fast), transform var(--transition-fast);
}
.page-cta__btn--primary {
  background: var(--color-accent-500);
  color: var(--color-text-inverse);
  border: 1px solid var(--color-accent-500);
}
.page-cta__btn--primary:hover,
.page-cta__btn--primary:focus-visible {
  background: var(--color-accent-600);
  border-color: var(--color-accent-600);
  color: var(--color-text-inverse);
  text-decoration: none;
  transform: translateY(-1px);
}
.page-cta__btn--ghost {
  background: transparent;
  color: var(--color-text-inverse);
  border: 1px solid rgba(255,255,255,0.3);
}
.page-cta__btn--ghost:hover,
.page-cta__btn--ghost:focus-visible {
  background: rgba(255,255,255,0.1);
  border-color: rgba(255,255,255,0.6);
  color: var(--color-text-inverse);
  text-decoration: none;
}
/* Responsive overrides moved to end of file for better organization */

/* ============================================================================
 * Breadcrumb â€” nÃ¢ng cáº¥p cho khá»›p vá»›i hero má»›i
 *
 * TrÆ°á»›c Ä‘Ã¢y náº±m ngay Ä‘áº§u trang khÃ´ng cÃ³ viá»n/khoáº£ng Ä‘á»‡m rÃµ rÃ ng.
 * BÃ¢y giá» cÃ³ padding + border dÆ°á»›i máº£nh, khá»›p tÃ´ng vá»›i page-hero.
 * ========================================================================== */
.breadcrumb {
  /* Giá»¯ trong container, padding nhá» trÃªn/dÆ°á»›i + border máº£nh ngÄƒn cÃ¡ch hero.
     TrÆ°á»›c Ä‘Ã¢y dÃ¹ng margin Ã¢m trÃ n ngang khiáº¿n breadcrumb Ä‘Ã¨ lÃªn hero á»Ÿ
     cÃ¡c trang cÃ³ site-nav cuá»™n dá»c. */
  margin: 0 0 var(--sp-2);
  padding: var(--sp-3) 0 var(--sp-2);
  font-size: var(--fs-sm);
  color: var(--color-text-soft);
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-2);
  align-items: center;
}
.breadcrumb a {
  color: var(--color-text-muted);
  text-decoration: none;
}
.breadcrumb a:hover,
.breadcrumb a:focus-visible {
  color: var(--color-accent-500);
  text-decoration: none;
}
.breadcrumb__sep { color: var(--color-border); }

@media (prefers-reduced-motion: reduce) {
  .page-hero__btn,
  .page-cta__btn { transition: none; }
}


/* =============================================================================
 * RESPONSIVE FIXES â€” Mobile-first overrides
 * Breakpoints: sm=640px, md=768px, lg=1024px, xl=1280px
 * ============================================================================= */

/* -----------------------------------------------------------------------------
 * BASE (mobile 320-639px) â€” already mostly OK, just refinements
 * ----------------------------------------------------------------------------- */

/* Topbar: hide date on very small screens */
@media (max-width: 639px) {
  .topbar__date { display: none; }
  .topbar__inner { 
    flex-wrap: wrap; 
    gap: var(--sp-2); 
    padding-block: var(--sp-2); 
  }
  .topbar__links { 
    flex-wrap: wrap; 
    gap: var(--sp-3); 
    font-size: 0.7rem;
  }
}

/* Site header: stack logo + search vertically on tiny screens */
@media (max-width: 639px) {
  .site-header .container {
    flex-direction: column;
    align-items: flex-start;
    min-height: auto;
    gap: var(--sp-4);
    padding-block: var(--sp-3);
  }
  
  .site-brand__logo {
    width: 52px;
    height: 52px;
  }
  
  .site-brand__title {
    font-size: var(--fs-base);
  }
  
  .site-brand__crumb {
    font-size: 0.65rem;
  }
  
  .site-search {
    width: 100%;
    flex: 1 1 100%;
    margin-left: 0;
  }
}

/* Site nav: keep horizontal scroll on mobile (no hamburger for simplicity) */
@media (max-width: 639px) {
  .site-nav__root {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }
  .site-nav__root::-webkit-scrollbar { display: none; }
  
  .site-nav a,
  .site-nav__group > button {
    padding: var(--sp-3) var(--sp-3);
    font-size: 0.8rem;
    white-space: nowrap;
  }
  
  .site-nav__sub {
    position: static;
    box-shadow: none;
    border: 0;
    border-top: 1px solid var(--color-border);
    padding-left: var(--sp-4);
  }
}

/* Page hero: smaller padding + font on mobile */
@media (max-width: 639px) {
  .page-hero {
    padding: var(--sp-6) var(--sp-4) var(--sp-5);
  }
  
  .page-hero__title {
    font-size: clamp(1.4rem, 5vw, 1.75rem);
    line-height: 1.2;
  }
  
  .page-hero__lead {
    font-size: var(--fs-base);
  }
  
  .page-hero__cta {
    flex-direction: column;
    gap: var(--sp-2);
  }
  
  .page-hero__btn {
    width: 100%;
    justify-content: center;
  }
}

.page-hero--compact {
  @media (max-width: 639px) {
    padding: var(--sp-5) var(--sp-4);
  }
}

/* Breadcrumb: smaller on mobile */
@media (max-width: 639px) {
  .breadcrumb {
    font-size: 0.75rem;
    padding: var(--sp-2) 0;
  }
}

/* News layout: single column on mobile */
@media (max-width: 767px) {
  .news-layout {
    grid-template-columns: 1fr;
  }
  .news-layout__sidebar {
    order: -1; /* Sidebar trÃªn cÃ¹ng trÃªn mobile Ä‘á»ƒ dá»… filter */
  }
}

/* Article grid: 1 column on mobile */
@media (max-width: 639px) {
  .article-grid {
    grid-template-columns: 1fr;
    gap: var(--sp-4);
  }
}

/* Footer: single column on mobile */
@media (max-width: 767px) {
  .site-footer .container {
    grid-template-columns: 1fr;
    gap: var(--sp-5);
  }
}

/* Page CTA: smaller on mobile */
@media (max-width: 639px) {
  
  .page-cta__inner {
    padding: var(--sp-5) var(--sp-4);
    gap: var(--sp-4);
  }
  
  .page-cta__title {
    font-size: clamp(1.25rem, 4vw, 1.5rem);
  }
}

/* Services stats: 2 cols on mobile */
@media (max-width: 639px) {
  .services-stats {
    grid-template-columns: repeat(2, 1fr);
    gap: var(--sp-3);
  }
  
  .services-stats__value {
    font-size: var(--fs-2xl);
  }
  
  .services-stats__label {
    font-size: 0.75rem;
  }
}

/* -----------------------------------------------------------------------------
 * SM (640px+) â€” mobile landscape / phablet
 * ----------------------------------------------------------------------------- */

@media (min-width: 640px) {
  /* Header: horizontal again */
  .site-header .container {
    flex-direction: row;
    align-items: center;
    min-height: 80px;
  }
  
  .site-search {
    flex: 0 1 300px;
    margin-left: auto;
  }
  
  /* Hero: bit more padding */
  .page-hero {
    padding: var(--sp-7) var(--sp-5) var(--sp-6);
  }
  
  /* CTA: horizontal layout */
  .page-cta__inner {
    grid-template-columns: 1fr;
  }
  
  /* Services stats: 4 cols */
  .services-stats {
    grid-template-columns: repeat(4, 1fr);
  }
  
  /* Article grid: 2 cols */
  .article-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: var(--sp-5);
  }
}

/* -----------------------------------------------------------------------------
 * MD (768px+) â€” tablet
 * ----------------------------------------------------------------------------- */

@media (min-width: 768px) {
  /* Header: full height */
  .site-header .container {
    min-height: 96px;
    gap: var(--sp-6);
  }
  
  .site-brand__logo {
    width: 64px;
    height: 64px;
  }
  
  .site-search {
    flex: 0 1 380px;
  }
  
  /* Nav: normal padding */
  .site-nav a,
  .site-nav__group > button {
    padding: var(--sp-4) var(--sp-4);
    font-size: var(--fs-sm);
  }
  
  /* Hero: full padding */
  .page-hero {
    padding: var(--sp-8) var(--sp-5) var(--sp-7);
  }
  
  .page-hero__title {
    font-size: clamp(1.75rem, 3.6vw, 2.8rem);
  }
  
  .page-hero__lead {
    font-size: var(--fs-lg);
  }
  
  /* News layout: still single col, wait for lg */
  .news-layout {
    grid-template-columns: 1fr;
  }
  
  /* Footer: 3 cols */
  .site-footer .container {
    grid-template-columns: 2fr 1fr 1fr;
  }
  
  /* CTA: side-by-side */
  .page-cta__inner {
    grid-template-columns: 1fr;
  }
}

/* -----------------------------------------------------------------------------
 * LG (1024px+) â€” laptop / desktop
 * ----------------------------------------------------------------------------- */

@media (min-width: 1024px) {
  /* News layout: sidebar appears */
  .news-layout {
    grid-template-columns: 1fr 320px;
  }
  
  .news-layout__sidebar {
    order: 0; /* Back to right side */
  }
  
  /* Article grid: 3 cols on wide screens */
  .article-grid {
    grid-template-columns: repeat(3, 1fr);
  }
  
  /* CTA: horizontal */
  .page-cta__inner {
    grid-template-columns: minmax(0, 1.4fr) auto;
    align-items: center;
  }
  
  .page-cta__actions {
    margin-top: 0;
  }
}

/* -----------------------------------------------------------------------------
 * XL (1280px+) â€” large desktop
 * ----------------------------------------------------------------------------- */

@media (min-width: 1280px) {
  /* Optional: max out container padding */
  .container {
    padding-inline: var(--sp-6);
  }
}

/* -----------------------------------------------------------------------------
 * Print
 * ----------------------------------------------------------------------------- */

@media print {
  .topbar,
  .site-nav,
  .site-search,
  .page-hero__cta,
  .page-cta,
  .back-to-top,
  .site-footer__legal {
    display: none !important;
  }
  
  .site-header .container {
    min-height: auto;
    padding-block: var(--sp-3);
  }
  
  .page-hero {
    margin: 0;
    padding: var(--sp-4);
    background: none;
    border: 1px solid #000;
  }
}
