/* ==========================================================================
   HoloLearn — wp.css (nạp sau cùng)
   Phần riêng của WordPress, không có trong bản HTML tĩnh:
     1. Class lõi của WordPress (screen-reader-text, căn lề ảnh, chú thích, gallery…)
     2. Header dính khi có thanh quản trị (admin bar)
     3. Bố cục trang con: Trang, Bài viết, Tin tức/Lưu trữ/Tìm kiếm, 404
     4. Chữ trong nội dung bài (.hl-entry) + block cơ bản của trình soạn thảo
     5. Thẻ bài, phân trang, từ khoá, bài trước/sau, bình luận, ô tìm kiếm
     6. Tương thích Elementor (khôi phục style ảnh bị Elementor reset, khoảng cách quanh
        widget HoloLearn, chữ trong widget Văn bản)
     7. Form Contact Form 7 (dùng lại class .hl-form__* của components.css)
   Quy ước: chỉ dùng token var(--hl-*) của base.css; mọi font-size là số nguyên px ≥ 12.
   Màu nhấn thứ hai của tiêu đề (cú pháp [chữ] → .hl-accent-alt) khai trong components.css
   ngay sau .hl-accent; riêng tiêu đề Hero đổi màu trong sections.css.
   ========================================================================== */

/* ==========================================================================
   1. Class lõi WordPress
   ========================================================================== */
.screen-reader-text {
  position: absolute !important;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(1px, 1px, 1px, 1px);
  clip-path: inset(50%);
  border: 0;
  word-wrap: normal !important;
}
.screen-reader-text:focus {
  top: 12px;
  left: 12px;
  z-index: 100000;
  display: block;
  width: auto;
  height: auto;
  padding: 14px 22px;
  clip: auto !important;
  clip-path: none;
  border-radius: var(--hl-radius-sm);
  background: var(--hl-white);
  color: var(--hl-ink);
  font-size: 15px;
  font-weight: 700;
  line-height: normal;
  text-decoration: none;
  box-shadow: var(--hl-shadow-sm);
}

.alignleft { float: left; margin: .4em 1.6em 1em 0; }
.alignright { float: right; margin: .4em 0 1em 1.6em; }
.aligncenter { display: block; clear: both; margin-inline: auto; }
.alignnone { margin-inline: 0; }

.wp-caption { max-width: 100%; }
.wp-caption img { display: block; margin-inline: auto; }
.wp-caption-text,
.gallery-caption,
.wp-element-caption {
  margin-top: 8px;
  color: var(--hl-muted);
  font-size: 14px;
  line-height: 1.5;
  text-align: center;
}

/* gallery cổ điển ([gallery]); html5 nên không có <br> chèn giữa các hàng */
.gallery { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.gallery-columns-1 { grid-template-columns: minmax(0, 1fr); }
.gallery-columns-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.gallery-columns-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.gallery-columns-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.gallery-columns-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }
.gallery-columns-7 { grid-template-columns: repeat(7, minmax(0, 1fr)); }
.gallery-columns-8 { grid-template-columns: repeat(8, minmax(0, 1fr)); }
.gallery-columns-9 { grid-template-columns: repeat(9, minmax(0, 1fr)); }
.gallery-item { margin: 0; }
.gallery-item img { width: 100%; }

/* bài ghim trên trang Tin tức */
.sticky { position: relative; }
/* bình luận của tác giả bài viết */
.bypostauthor { position: relative; }

@media (max-width: 560px) {
  .alignleft,
  .alignright { float: none; margin: 1.2em auto; }
  .gallery:not(.gallery-columns-1) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* ==========================================================================
   2. Header dính + thanh quản trị WordPress
   Thanh quản trị cao 32px (46px khi ≤ 782px) và cố định ở đầu màn hình, nên header
   phải dính ngay dưới nó. ≤ 600px thanh quản trị cuộn theo trang → header dính sát mép.
   ========================================================================== */
.admin-bar .hl-header { top: 32px; }
.admin-bar .hl-skip-link:focus { top: 44px; }

@media screen and (max-width: 782px) {
  .admin-bar .hl-header { top: 46px; }
  .admin-bar .hl-skip-link:focus { top: 58px; }
}
@media screen and (max-width: 600px) {
  .admin-bar .hl-header { top: 0; }
}

/* neo #section không bị thanh quản trị + header che (trình duyệt chưa hỗ trợ :has() giữ giá trị của base.css) */
html:has(> body.admin-bar) { scroll-padding-top: calc(var(--hl-header-h) + 44px); }
@media screen and (max-width: 782px) {
  html:has(> body.admin-bar) { scroll-padding-top: calc(var(--hl-header-h) + 58px); }
}
@media screen and (max-width: 600px) {
  html:has(> body.admin-bar) { scroll-padding-top: calc(var(--hl-header-h) + 12px); }
}

/* panel menu mobile không tràn khỏi màn hình khi có thanh quản trị (mốc nút menu: ≤ 1024px) */
@media (max-width: 1024px) {
  .hl-js .admin-bar .hl-nav {
    max-height: calc(100vh - var(--hl-header-h) - 32px);
    max-height: calc(100dvh - var(--hl-header-h) - 32px);
  }
}
@media (max-width: 782px) {
  .hl-js .admin-bar .hl-nav {
    max-height: calc(100vh - var(--hl-header-h) - 46px);
    max-height: calc(100dvh - var(--hl-header-h) - 46px);
  }
}

/* ==========================================================================
   3. Bố cục trang con (page.php, single.php, index/archive/search.php, 404.php)
   ========================================================================== */
.hl-page {
  position: relative;
  padding-block: clamp(36px, 5vw, 64px) var(--hl-section-y);
}

.hl-page__header {
  max-width: 820px;
  margin: 0 auto clamp(28px, 4vw, 48px);
  text-align: center;
}
.hl-page__title {
  margin-top: .5rem;
  font-size: clamp(32px, 4.6vw, 54px);
  color: var(--hl-ink);
}
.hl-page__header > .hl-page__title:first-child { margin-top: 0; }
.hl-page--single .hl-page__title { font-size: clamp(30px, 4vw, 48px); }
.hl-page__lead {
  margin-top: 14px;
  font-size: 18px;
  color: var(--hl-text);
}
.hl-page__lead p + p { margin-top: .6em; }
.hl-page__lead a { color: var(--hl-purple); font-weight: 700; text-decoration: underline; text-underline-offset: 3px; }
.hl-page__search { margin-top: 24px; }

/* eyebrow chứa link chuyên mục */
.hl-page__header .hl-eyebrow a:hover { text-decoration: underline; text-underline-offset: 3px; }

/* ảnh đại diện */
.hl-page__media {
  max-width: 1000px;
  margin: 0 auto clamp(24px, 4vw, 40px);
  overflow: hidden;
  border-radius: var(--hl-radius-lg);
  background: var(--hl-white);
  box-shadow: var(--hl-shadow-md);
}
.hl-page__media img { width: 100%; max-height: 620px; object-fit: cover; }

/* khung nội dung: thẻ trắng bo góc như khung Đăng ký */
.hl-page__body {
  --hl-body-pad: clamp(22px, 4.4vw, 56px);
  max-width: 860px;
  margin-inline: auto;
  padding: var(--hl-body-pad);
  border-radius: var(--hl-radius-xl);
  background: var(--hl-white);
  box-shadow: var(--hl-shadow-md);
}
.hl-page__narrow { max-width: 860px; margin-inline: auto; }

/* front-page.php: trang chủ là trang thường có nội dung (không dùng Elementor) */
.hl-page > .hl-entry { max-width: 860px; margin-inline: auto; }

/* doodle trang trí hai bên tiêu đề (ẩn khi màn hẹp để không đè lên chữ) */
.hl-page__doodle--1 { --hl-doodle-size: 42px; top: 40px; left: 6%; color: var(--hl-yellow); animation-duration: 5s; }
.hl-page__doodle--2 { --hl-doodle-size: 34px; top: 76px; right: 7%; color: var(--hl-cyan); }
@media (max-width: 1040px) {
  .hl-page__doodle--1,
  .hl-page__doodle--2 { display: none; }
}

/* thông tin bài: ngày, tác giả, bình luận */
.hl-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 18px;
  color: var(--hl-muted);
  font-size: 15px;
  font-weight: 700;
}
.hl-meta__item { display: inline-flex; align-items: center; gap: 7px; }
.hl-meta__item i { color: var(--hl-blue); }
.hl-meta a { transition: color .15s ease; }
.hl-meta a:hover { color: var(--hl-coral); }
.hl-page__meta { justify-content: center; margin-top: 16px; }

.hl-edit-link { margin-top: 24px; font-size: 15px; font-weight: 700; color: var(--hl-muted); }
.hl-edit-link a { color: var(--hl-purple); text-decoration: underline; text-underline-offset: 3px; }
.hl-edit-link--center { text-align: center; }

/* ---------- 404 ---------- */
.hl-404 { max-width: 760px; margin-inline: auto; text-align: center; }
.hl-404__code {
  display: flex;
  justify-content: center;
  gap: 8px;
  margin-bottom: 12px;
  font-size: clamp(96px, 18vw, 180px);
  font-weight: 900;
  line-height: 1;
  letter-spacing: -.02em;
  text-shadow: 0 8px 0 rgba(36, 27, 61, .08);
}
.hl-404__code span { display: inline-block; }
.hl-404__code span:nth-child(1) { color: var(--hl-blue); transform: rotate(-7deg); }
.hl-404__code span:nth-child(2) { color: var(--hl-coral); transform: translateY(-6px); }
.hl-404__code span:nth-child(3) { color: var(--hl-green); transform: rotate(6deg); }
.hl-404 .hl-page__lead { max-width: 58ch; margin-inline: auto; }
.hl-404__search { margin-top: 28px; }
.hl-404__actions { margin-top: 22px; }

/* ---------- danh sách trống ---------- */
.hl-empty {
  max-width: 660px;
  margin-inline: auto;
  padding: clamp(28px, 5vw, 48px);
  border-radius: var(--hl-radius-xl);
  background: var(--hl-white);
  text-align: center;
  box-shadow: var(--hl-shadow-md);
}
.hl-empty .hl-brush { margin: 0 auto 12px; }
.hl-empty__title { font-size: clamp(23px, 2.8vw, 30px); color: var(--hl-ink); }
.hl-empty__text { margin-top: 10px; font-size: 17px; color: var(--hl-text); }
.hl-empty__search { margin-top: 24px; }
.hl-empty__actions { margin-top: 22px; }

/* ==========================================================================
   4. Chữ trong nội dung bài (.hl-entry) + block cơ bản
   ========================================================================== */
.hl-entry {
  display: flow-root; /* chứa ảnh float */
  color: var(--hl-text);
  font-size: 17px;
  line-height: 1.75;
}
.hl-entry > * + * { margin-top: 1.1em; }
.hl-entry > :is(h1, h2, h3, h4, h5, h6) { margin-top: 1.7em; }
.hl-entry > :first-child { margin-top: 0; }

.hl-entry :is(h1, h2, h3, h4, h5, h6) { color: var(--hl-ink); line-height: 1.25; }
.hl-entry h1 { font-size: clamp(28px, 3.4vw, 36px); }
.hl-entry h2 { font-size: clamp(24px, 2.8vw, 30px); }
.hl-entry h3 { font-size: clamp(21px, 2.2vw, 24px); }
.hl-entry h4 { font-size: 20px; }
.hl-entry h5 { font-size: 18px; }
.hl-entry h6 { font-size: 16px; letter-spacing: .04em; text-transform: uppercase; }

.hl-entry strong, .hl-entry b { color: var(--hl-ink); font-weight: 700; }
.hl-entry small { font-size: 14px; }
.hl-entry sup, .hl-entry sub { font-size: 12px; line-height: 0; }
.hl-entry mark { padding: 0 4px; border-radius: 4px; background: #ffe89a; color: inherit; }

.hl-entry a {
  color: var(--hl-purple);
  font-weight: 700;
  text-decoration: underline;
  text-decoration-thickness: 2px;
  text-decoration-color: rgba(90, 43, 146, .35);
  text-underline-offset: 3px;
  transition: color .15s ease, text-decoration-color .15s ease;
}
.hl-entry a:hover { color: var(--hl-coral); text-decoration-color: currentColor; }

/* base.css bỏ dấu đầu dòng cho mọi danh sách → trả lại cho danh sách trong bài
   (danh sách cổ điển không có class, danh sách của block editor có class wp-block-list) */
.hl-entry :is(ul, ol):where(:not([class]), .wp-block-list) { padding-left: 1.5em; }
.hl-entry ul:where(:not([class]), .wp-block-list) { list-style: disc; }
.hl-entry ol:where(:not([class]), .wp-block-list) { list-style: decimal; }
.hl-entry :is(ul, ol):where(:not([class]), .wp-block-list) ul { list-style: circle; }
.hl-entry li + li { margin-top: .4em; }
.hl-entry li > :is(ul, ol) { margin-top: .4em; }
.hl-entry li::marker { color: var(--hl-coral); font-weight: 700; }

.hl-entry blockquote {
  padding: 18px 24px;
  border-left: 6px solid var(--hl-yellow);
  border-radius: 0 18px 18px 0;
  background: var(--hl-cream);
  color: var(--hl-ink);
  font-size: 18px;
  font-weight: 500;
}
.hl-entry blockquote p + p { margin-top: .6em; }
.hl-entry blockquote cite,
.hl-entry .wp-block-quote cite {
  display: block;
  margin-top: 8px;
  color: var(--hl-muted);
  font-size: 15px;
  font-style: normal;
  font-weight: 700;
}
.hl-entry .wp-block-pullquote {
  padding: 28px 20px;
  border-top: 4px solid var(--hl-coral);
  border-bottom: 4px solid var(--hl-coral);
  text-align: center;
}
.hl-entry .wp-block-pullquote blockquote { padding: 0; border: 0; background: none; }
.hl-entry .wp-block-pullquote p { font-size: 24px; line-height: 1.5; }
.hl-entry .wp-block-quote.is-large p,
.hl-entry .wp-block-quote.is-style-large p { font-size: 24px; line-height: 1.5; }

.hl-entry img:not(.wp-block-cover__image-background) { border-radius: 18px; }
.hl-entry figure { margin-block: 1.6em; }
.hl-entry > figure:first-child { margin-top: 0; }
.hl-entry figcaption { margin-top: 8px; color: var(--hl-muted); font-size: 14px; line-height: 1.5; text-align: center; }
.hl-entry :is(iframe, embed, object, video) { max-width: 100%; }
.hl-entry video { height: auto; }

.hl-entry hr,
.hl-entry .wp-block-separator {
  height: 0;
  margin-block: 2em;
  border: 0;
  border-top: 3px dashed var(--hl-field-border);
  background: none;
  opacity: 1;
}

.hl-entry table { width: 100%; font-size: 16px; line-height: 1.5; }
.hl-entry th,
.hl-entry td { padding: 10px 14px; border: 1px solid var(--hl-line); text-align: left; vertical-align: top; }
.hl-entry th { background: var(--hl-tint-sky); color: var(--hl-ink); font-weight: 800; }
.hl-entry .wp-block-table { overflow-x: auto; }

.hl-entry :is(code, kbd, samp, pre) { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace; }
.hl-entry :not(pre) > code {
  padding: 2px 6px;
  border-radius: 6px;
  background: var(--hl-tint-blue);
  color: var(--hl-blue-deep);
  font-size: 15px;
}
.hl-entry pre {
  overflow-x: auto;
  padding: 18px 20px;
  border-radius: 16px;
  background: var(--hl-ink);
  color: #f4efff;
  font-size: 15px;
  line-height: 1.6;
  white-space: pre;
}
.hl-entry pre code { font-size: 15px; }

/* ảnh căn tràn trong khung trắng: chạm hai mép khung */
.hl-page__body .hl-entry > .alignfull {
  width: auto;
  max-width: none;
  margin-inline: calc(var(--hl-body-pad) * -1);
}
.hl-page__body .hl-entry > .alignfull img { border-radius: 0; }
.hl-entry > .alignwide { max-width: 100%; }

/* nút của block editor (classic-themes.css đặt 1.125em → ra cỡ lẻ, đặt lại số nguyên) */
.hl-entry .wp-block-button__link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: var(--hl-tap);
  padding: 14px 28px;
  border-radius: var(--hl-radius-pill);
  font-size: 17px;
  font-weight: 900;
  line-height: 1.2;
  text-decoration: none;
  transition: transform .16s ease, background-color .16s ease;
}
.hl-entry .wp-block-button__link:hover { transform: translateY(-3px); }
.hl-entry .wp-block-button__link:not(.has-background) { background: var(--hl-coral); box-shadow: 0 12px 26px rgba(255, 93, 108, .36); }
.hl-entry .wp-block-button__link:not(.has-background):hover { background: var(--hl-coral-deep); }
.hl-entry .wp-block-button__link:not(.has-text-color) { color: var(--hl-white); }
.hl-entry .is-style-outline > .wp-block-button__link:not(.has-background) { border: 3px solid currentColor; background: transparent; box-shadow: none; }
.hl-entry .is-style-outline > .wp-block-button__link:not(.has-text-color) { color: var(--hl-coral); }
.hl-entry .wp-block-file__button { font-size: 16px; }
.hl-entry .wp-block-latest-posts__post-date,
.hl-entry .wp-block-latest-comments__comment-date { font-size: 14px; }

/* ô nhập mật khẩu của bài/trang được bảo vệ */
.hl-entry .post-password-form p + p { margin-top: 14px; }
.hl-entry .post-password-form label {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 12px;
  color: var(--hl-ink);
  font-weight: 900;
}
.hl-entry .post-password-form input[type="password"] {
  flex: 1 1 220px;
  min-height: 52px;
  padding: 13px 16px;
  border: 3px solid var(--hl-field-border);
  border-radius: 18px;
  background: var(--hl-white);
  color: var(--hl-ink);
  font-size: 16px;
  font-weight: 500;
}
.hl-entry .post-password-form input[type="password"]:focus-visible { border-color: var(--hl-blue); outline-offset: 2px; }
.hl-entry .post-password-form input[type="submit"] {
  -webkit-appearance: none;
  appearance: none;
  min-height: 52px;
  padding: 0 28px;
  border: 0;
  border-radius: var(--hl-radius-pill);
  background: var(--hl-coral);
  color: var(--hl-white);
  font-size: 16px;
  font-weight: 900;
  cursor: pointer;
  transition: background-color .16s ease;
}
.hl-entry .post-password-form input[type="submit"]:hover { background: var(--hl-coral-deep); }

@media (max-width: 560px) {
  .hl-entry { font-size: 16px; }
  .hl-entry blockquote { padding: 14px 18px; font-size: 17px; }
}

/* ==========================================================================
   5. Thẻ bài, phân trang, từ khoá, bài trước/sau, bình luận, tìm kiếm
   ========================================================================== */
.hl-posts {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1.6rem;
}
.hl-post-card {
  display: flex;
  flex-direction: column;
  overflow: hidden;
  border-radius: var(--hl-radius-lg);
  background: var(--hl-white);
  box-shadow: var(--hl-shadow-md);
  transition: transform .2s ease, box-shadow .2s ease;
}
.hl-post-card:hover { transform: translateY(-6px); box-shadow: var(--hl-shadow-lg); }
.hl-post-card.sticky { box-shadow: 0 0 0 3px var(--hl-yellow), var(--hl-shadow-md); }

.hl-post-card__media {
  display: block;
  aspect-ratio: 16 / 10;
  overflow: hidden;
  background: var(--hl-tint-blue);
}
.hl-post-card__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform .4s ease;
}
.hl-post-card:hover .hl-post-card__media img { transform: scale(1.04); }
/* bài chưa có ảnh đại diện: nền nhạt + vệt cọ */
.hl-post-card__media--empty { display: grid; place-items: center; }
.hl-post-card__media--blue { background: var(--hl-tint-blue); }
.hl-post-card__media--coral { background: var(--hl-tint-peach); }
.hl-post-card__media--green { background: var(--hl-tint-green); }
.hl-post-card__media--orange { background: var(--hl-tint-orange); }

.hl-post-card__body {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  gap: 10px;
  padding: 22px 24px 26px;
}
.hl-post-card__meta { font-size: 14px; }
.hl-post-card__badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 12px;
  border-radius: var(--hl-radius-pill);
  background: var(--hl-yellow);
  color: var(--hl-ink);
  font-size: 13px;
  font-weight: 900;
}
.hl-post-card__title { font-size: 21px; line-height: 1.3; color: var(--hl-ink); }
.hl-post-card__title a { transition: color .15s ease; }
.hl-post-card__title a:hover { color: var(--hl-coral); }
.hl-post-card__excerpt { font-size: 16px; color: var(--hl-text); }
.hl-post-card__more {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  align-self: flex-start;
  min-height: var(--hl-tap);
  margin-top: auto;
  color: var(--hl-purple);
  font-weight: 900;
}
.hl-post-card__more i { transition: transform .16s ease; }
.hl-post-card__more:hover { color: var(--hl-coral); }
.hl-post-card__more:hover i { transform: translateX(4px); }

@media (max-width: 1040px) { .hl-posts { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px) { .hl-posts { grid-template-columns: minmax(0, 1fr); } }

/* ---------- phân trang danh sách ---------- */
.hl-pagination { margin-top: clamp(36px, 5vw, 56px); }
.hl-pagination .nav-links {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 10px;
}
.hl-pagination .page-numbers {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-width: 48px;
  min-height: 48px;
  padding: 0 16px;
  border-radius: var(--hl-radius-pill);
  background: var(--hl-white);
  color: var(--hl-ink);
  font-weight: 900;
  box-shadow: var(--hl-shadow-sm);
  transition: background-color .15s ease, color .15s ease;
}
.hl-pagination a.page-numbers:hover { background: var(--hl-yellow); }
.hl-pagination .page-numbers.current { background: var(--hl-coral); color: var(--hl-white); }
.hl-pagination .page-numbers.dots { min-width: 0; padding: 0 4px; background: none; box-shadow: none; }
@media (max-width: 560px) {
  /* chỉ còn mũi tên, chữ vẫn đọc được bằng trình đọc màn hình */
  .hl-pagination__label {
    position: absolute;
    width: 1px; height: 1px;
    margin: -1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
  }
}

/* ---------- phân trang nội dung (<!--nextpage-->) ---------- */
.hl-page-links {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin-top: 28px;
  font-weight: 900;
}
.hl-page-links__label { margin-right: 4px; color: var(--hl-ink); }
.hl-page-links .post-page-numbers {
  display: inline-grid;
  place-items: center;
  min-width: 44px;
  min-height: 44px;
  padding: 0 12px;
  border-radius: var(--hl-radius-pill);
  background: var(--hl-cream);
  color: var(--hl-ink);
}
.hl-page-links a.post-page-numbers:hover { background: var(--hl-yellow); }
.hl-page-links .post-page-numbers.current { background: var(--hl-coral); color: var(--hl-white); }

/* ---------- từ khoá cuối bài ---------- */
.hl-tags {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 10px 14px;
  margin-top: 32px;
  padding-top: 24px;
  border-top: 2px dashed var(--hl-line);
}
.hl-tags__label { display: inline-flex; align-items: center; gap: 8px; color: var(--hl-ink); font-size: 15px; font-weight: 900; }
.hl-tags__label i { color: var(--hl-coral); }
.hl-tags__list { display: flex; flex-wrap: wrap; gap: 8px; }
.hl-tags__list a {
  display: inline-flex;
  align-items: center;
  min-height: 40px;
  padding: 6px 14px;
  border-radius: var(--hl-radius-pill);
  background: var(--hl-tint-blue);
  color: var(--hl-blue-deep);
  font-size: 14px;
  font-weight: 700;
  transition: background-color .15s ease, color .15s ease;
}
.hl-tags__list a:hover { background: var(--hl-yellow); color: var(--hl-ink); }

/* ---------- bài trước / bài sau ---------- */
.hl-post-nav { margin-top: 40px; }
.hl-post-nav .nav-links {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}
.hl-post-nav .nav-next { grid-column: 2; text-align: right; }
.hl-post-nav a {
  display: flex;
  flex-direction: column;
  gap: 6px;
  height: 100%;
  padding: 18px 22px;
  border-radius: var(--hl-radius-md);
  background: var(--hl-white);
  box-shadow: var(--hl-shadow-sm);
  transition: transform .16s ease;
}
.hl-post-nav a:hover { transform: translateY(-3px); }
.hl-post-nav__label { color: var(--hl-muted); font-size: 14px; font-weight: 800; }
.hl-post-nav__title { color: var(--hl-ink); font-size: 17px; font-weight: 900; line-height: 1.35; }
.hl-post-nav a:hover .hl-post-nav__title { color: var(--hl-coral); }
@media (max-width: 640px) {
  .hl-post-nav .nav-links { grid-template-columns: minmax(0, 1fr); }
  .hl-post-nav .nav-next { grid-column: auto; text-align: left; }
}

/* ---------- ô tìm kiếm (searchform.php) ---------- */
.hl-search {
  display: flex;
  gap: 10px;
  width: 100%;
  max-width: 560px;
  margin-inline: auto;
}
.hl-search__input { flex: 1 1 auto; min-width: 0; -webkit-appearance: none; appearance: none; }
.hl-search__input::-webkit-search-cancel-button { cursor: pointer; }
.hl-search__submit {
  display: grid;
  flex: none;
  place-items: center;
  width: 52px;
  height: 52px;
  border-radius: 50%;
  background: var(--hl-coral);
  color: var(--hl-white);
  font-size: 20px;
  box-shadow: 0 12px 26px rgba(255, 93, 108, .36);
  transition: transform .16s ease, background-color .16s ease;
}
.hl-search__submit:hover { background: var(--hl-coral-deep); transform: translateY(-2px); }
.hl-search__submit:focus-visible { outline-offset: 4px; }

/* ---------- bình luận (comments.php) ---------- */
.hl-comments {
  margin-top: 40px;
  padding: clamp(22px, 4vw, 44px);
  border-radius: var(--hl-radius-xl);
  background: var(--hl-white);
  box-shadow: var(--hl-shadow-md);
}
.hl-comments__title,
.hl-comments .comment-reply-title { font-size: 24px; color: var(--hl-ink); }
.hl-comments__list { margin-top: 12px; }
.hl-comments__list + .hl-comments__nav,
.hl-comments__list ~ .comment-respond,
.hl-comments__closed + .comment-respond { margin-top: 32px; }

.hl-comments__list .comment-body { padding: 20px 0; border-bottom: 1px solid var(--hl-line); }
.hl-comments__list .children {
  margin-left: clamp(12px, 3vw, 40px);
  padding-left: clamp(12px, 2vw, 20px);
  border-left: 3px solid var(--hl-line);
}
.hl-comments .comment-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 14px; }
.hl-comments .comment-author { display: flex; align-items: center; gap: 12px; color: var(--hl-ink); font-size: 17px; }
.hl-comments .comment-author .avatar { width: 48px; height: 48px; border-radius: 50%; }
.hl-comments .comment-author .fn { font-weight: 900; }
.hl-comments .comment-author .fn a:hover { color: var(--hl-coral); }
.hl-comments .comment-author .says {
  position: absolute;
  width: 1px; height: 1px;
  margin: -1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}
.hl-comments .comment-metadata { color: var(--hl-muted); font-size: 14px; font-weight: 700; }
.hl-comments .comment-metadata a:hover { color: var(--hl-coral); }
.hl-comments .comment-metadata .edit-link { margin-left: 10px; }
.hl-comments .comment-metadata .edit-link a { color: var(--hl-purple); }
.hl-comments .comment-awaiting-moderation {
  display: block;
  width: 100%;
  margin-top: 6px;
  color: var(--hl-orange-deep);
  font-size: 14px;
  font-style: normal;
  font-weight: 700;
}
.hl-comments .comment-content { margin-top: 12px; color: var(--hl-text); }
.hl-comments .comment-content > * + * { margin-top: .8em; }
.hl-comments .comment-content a { color: var(--hl-purple); font-weight: 700; text-decoration: underline; text-underline-offset: 3px; }
.hl-comments .comment-content :is(ul, ol) { padding-left: 1.4em; list-style: disc; }
.hl-comments .comment-content ol { list-style: decimal; }
.hl-comments .reply { margin-top: 10px; }
.hl-comments .comment-reply-link,
.hl-comments .comment-reply-login {
  display: inline-flex;
  align-items: center;
  min-height: 36px;
  padding: 4px 14px;
  border-radius: var(--hl-radius-pill);
  background: var(--hl-tint-blue);
  color: var(--hl-blue-deep);
  font-size: 14px;
  font-weight: 800;
  transition: background-color .15s ease, color .15s ease;
}
.hl-comments .comment-reply-link:hover { background: var(--hl-yellow); color: var(--hl-ink); }
.hl-comments .bypostauthor > .comment-body .avatar { box-shadow: 0 0 0 3px var(--hl-yellow); }
.hl-comments .pingback .comment-body,
.hl-comments .trackback .comment-body { font-size: 15px; color: var(--hl-text); }

.hl-comments__nav .nav-links {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 12px;
  font-weight: 900;
}
.hl-comments__nav a { display: inline-flex; align-items: center; gap: 8px; min-height: var(--hl-tap); color: var(--hl-purple); }
.hl-comments__nav a:hover { color: var(--hl-coral); }
.hl-comments__closed { margin-top: 20px; color: var(--hl-muted); font-size: 15px; font-weight: 700; }

/* form bình luận — ô nhập giống .hl-form__control */
.hl-comments .comment-reply-title small { margin-left: 10px; font-size: 14px; font-weight: 700; }
.hl-comments .comment-reply-title small a { color: var(--hl-coral); text-decoration: underline; text-underline-offset: 3px; }
.hl-comments .comment-form { margin-top: 14px; }
.hl-comments .comment-form > p + p { margin-top: 16px; }
.hl-comments .comment-notes,
.hl-comments .logged-in-as,
.hl-comments .must-log-in { color: var(--hl-muted); font-size: 15px; }
.hl-comments .logged-in-as a,
.hl-comments .must-log-in a { color: var(--hl-purple); font-weight: 700; text-decoration: underline; text-underline-offset: 3px; }
.hl-comments .required { color: var(--hl-coral); }
.hl-comments .comment-form label { display: block; margin-bottom: 8px; color: var(--hl-ink); font-size: 15px; font-weight: 900; }
.hl-comments .comment-form :is(input[type="text"], input[type="email"], input[type="url"], textarea) {
  width: 100%;
  min-height: 52px;
  padding: 13px 16px;
  border: 3px solid var(--hl-field-border);
  border-radius: 18px;
  background: var(--hl-white);
  color: var(--hl-ink);
  font-size: 16px;
  font-weight: 500;
  transition: border-color .16s ease;
}
.hl-comments .comment-form textarea { min-height: 150px; line-height: 1.5; resize: vertical; }
.hl-comments .comment-form :is(input, textarea):hover { border-color: #e3d0b4; }
.hl-comments .comment-form :is(input, textarea):focus-visible { border-color: var(--hl-blue); outline: 3px solid var(--hl-purple); outline-offset: 2px; }
.hl-comments .comment-form-cookies-consent { display: flex; align-items: flex-start; gap: 10px; }
.hl-comments .comment-form-cookies-consent input { flex: none; width: 20px; height: 20px; margin-top: 3px; accent-color: var(--hl-purple); }
.hl-comments .comment-form-cookies-consent label { margin: 0; color: var(--hl-text); font-weight: 500; }
.hl-comments .form-submit { margin-top: 22px; }
.hl-comments__list .comment-respond {
  margin: 16px 0;
  padding: clamp(18px, 3vw, 28px);
  border-radius: var(--hl-radius-md);
  background: var(--hl-cream);
}

/* ==========================================================================
   6. Tương thích Elementor
   Elementor bọc nội dung trang trong .elementor và reset ảnh + link:
     .elementor img { border:none; border-radius:0; box-shadow:none; height:auto; max-width:100% }
     .elementor a   { box-shadow:none; text-decoration:none }
   Các rule của theme có độ ưu tiên ngang/thấp hơn nên bị mất style. Đã rà mọi rule
   style cho <img> (trực tiếp hoặc qua class đặt trên img) và cho <a> có bóng:
     rule gốc                              file              thuộc tính khôi phục
     .hl-hero__card (class trên <img>)     sections.css      border, border-radius, box-shadow
     .hl-about__frame img                  sections.css      border-radius
     .hl-collection__cards img             sections.css      border-radius
     .hl-product__gallery img              sections.css      border-radius
     .hl-flip__side img                    components.css    height: 100%, border-radius
     .hl-header__logo img (3 mốc màn hình) sections.css      height
     .hl-footer__logo img                  sections.css      height
     .hl-btn--purple / --coral / --yellow  components.css    box-shadow (nút là <a>)
   Không cần khôi phục: img { height:auto; max-width:100% } của base.css trùng giá trị;
   .hl-phone__card là <figure> (ảnh bên trong không có style riêng); doodle, vệt cọ là <svg>.
   Logo header/footer nằm ngoài .elementor ở theme này; vẫn khôi phục phòng khi header/
   footer được đặt vào vùng nội dung Elementor.
   ========================================================================== */
.elementor img.hl-hero__card {
  border: 6px solid var(--hl-white);
  border-radius: var(--hl-radius-md);
  box-shadow: 0 20px 40px rgba(0, 0, 0, .25);
}
.elementor .hl-about__frame img { border-radius: 18px; }
.elementor .hl-collection__cards img { border-radius: 10px; }
.elementor .hl-product__gallery img { border-radius: var(--hl-radius-sm); }
.elementor .hl-flip__side img { height: 100%; border-radius: calc(var(--hl-radius-md) - 6px); }
.elementor .hl-feedback__avatar img { height: 100%; }
.elementor .hl-order .hl-order-pay__qr { border-radius: var(--hl-radius-sm); box-shadow: var(--hl-shadow-sm); }
.elementor .hl-order-qr .hl-order-qr__img { border-radius: 12px; box-shadow: var(--hl-shadow-sm); }
.elementor .hl-header__logo img { height: 56px; }
.elementor .hl-footer__logo img { height: 49px; }
@media (max-width: 860px) {
  .elementor .hl-header__logo img { height: 44px; }
}
@media (max-width: 380px) {
  .elementor .hl-header__logo img { height: 38px; }
}

.elementor a.hl-btn--purple { box-shadow: 0 12px 26px rgba(90, 43, 146, .34); }
.elementor a.hl-btn--coral { box-shadow: 0 12px 26px rgba(255, 93, 108, .36); }
.elementor a.hl-btn--yellow { box-shadow: 0 12px 26px rgba(255, 207, 58, .40); }

/* widget HoloLearn là cả một section tràn màn hình: không thêm khoảng cách quanh widget.
   Chỉ bỏ khoảng cách MẶC ĐỊNH; Lề (Margin) đặt riêng cho widget trong Elementor vẫn áp dụng:
   - Elementor tính margin dưới = var(--kit-widget-spacing) (+ lề người dùng đặt) → đặt biến = 0
   - margin-block-end: 0 bọc :where() để độ ưu tiên (0,2,0) chỉ ngang rule mặc định
     .elementor-widget:not(:last-child) (thắng nhờ nạp sau), thua rule lề riêng (0,3,0) */
.elementor .elementor-widget[class*="elementor-widget-hl-"] { --kit-widget-spacing: 0px; }
.elementor .elementor-widget:where([class*="elementor-widget-hl-"]) { margin-block-end: 0; }
/* cột (section cũ) chứa widget HoloLearn: bỏ padding mặc định 10px của khoảng cách cột.
   Độ ưu tiên (0,3,0) = rule .elementor-column-gap-* của Elementor; padding đặt riêng cho cột (0,4,0) vẫn thắng */
.elementor .elementor-column > .elementor-widget-wrap:where(:has(> .elementor-widget[class*="elementor-widget-hl-"])) { padding: 0; }
/* container (flexbox) chứa widget HoloLearn: mặc định không padding, không khoảng cách giữa các
   widget (nhiều section xếp chồng trong một container vẫn liền nhau như bản tĩnh) và tràn chiều ngang.
   Chỉ đổi biến mặc định: padding/khoảng cách (gap)/độ rộng đặt riêng trong Elementor vẫn được ưu tiên */
.e-con:has(> .elementor-widget[class*="elementor-widget-hl-"]),
.e-con:has(> .e-con-inner > .elementor-widget[class*="elementor-widget-hl-"]) {
  --container-default-padding-top: 0px;
  --container-default-padding-right: 0px;
  --container-default-padding-bottom: 0px;
  --container-default-padding-left: 0px;
  --container-max-width: 100%;
  --widgets-spacing: 0px 0px;
  --widgets-spacing-row: 0px;
  --widgets-spacing-column: 0px;
}

/* widget Văn bản (Text Editor) của Elementor trên trang/bài tự dựng: base.css đặt margin 0 cho
   mọi thẻ và bỏ dấu đầu dòng, Elementor lại để theme lo phần này → đoạn văn dính nhau, danh sách
   mất dấu, link trông như chữ thường. Trả lại giống nội dung bài (.hl-entry). Danh sách có class
   (vd Icon List của Elementor) không bị ảnh hưởng. */
.elementor-widget-text-editor :is(p, ul, ol, blockquote, pre, table, figure, h1, h2, h3, h4, h5, h6):not(:last-child) { margin-block-end: .9em; }
.elementor-widget-text-editor :is(ul, ol):where(:not([class])) { padding-inline-start: 1.5em; }
.elementor-widget-text-editor ul:where(:not([class])) { list-style: disc; }
.elementor-widget-text-editor ol:where(:not([class])) { list-style: decimal; }
.elementor-widget-text-editor :is(ul, ol):where(:not([class])) > li + li { margin-top: .3em; }
.elementor-widget-text-editor a { text-decoration: underline; text-underline-offset: 3px; }

/* ==========================================================================
   7. Contact Form 7 — form Đăng ký (html_class="hl-form")
   Markup form do inc/cf7/cf7.php tạo, dùng lại .hl-form__grid/__field/__label/__control/
   __actions/__submit của components.css. Phần dưới chỉ bổ sung cho markup của CF7.
   ========================================================================== */
.hl-form .wpcf7-form-control-wrap { display: block; }
/* phòng khi CSS của CF7 bị tắt (wpcf7_load_css) */
.hl-form .hidden-fields-container { display: none; }
.wpcf7 .screen-reader-response {
  position: absolute;
  width: 1px; height: 1px;
  margin: -1px;
  overflow: hidden;
  clip: rect(1px, 1px, 1px, 1px);
  clip-path: inset(50%);
  border: 0;
}

/* textarea của CF7 mặc định rows="10" → giữ chiều cao như bản tĩnh */
.hl-form textarea.hl-form__control { height: 110px; }

/* lỗi từng ô — giống .hl-form__error / .hl-form__field.is-invalid */
.hl-form .wpcf7-not-valid-tip {
  display: block;
  margin-top: 8px;
  color: var(--hl-danger);
  font-size: 13px;
  font-weight: 700;
}
.hl-form .hl-form__control.wpcf7-not-valid { border-color: var(--hl-coral); background: #fff5f6; }

/* ô tick bắt buộc "Tôi đồng ý với Chính sách bảo mật thông tin" — cả hàng chữ là vùng bấm (≥ 44px) */
.hl-form__consent { margin-top: 18px; color: var(--hl-text); font-size: 15px; line-height: 1.5; }
.hl-form__consent .wpcf7-list-item { display: block; margin: 0; }
.hl-form__consent label { display: flex; align-items: flex-start; gap: 10px; min-height: var(--hl-tap); padding-block: 10px; cursor: pointer; }
.hl-form__consent input[type="checkbox"] { flex: none; width: 22px; height: 22px; margin: 0; accent-color: var(--hl-purple); cursor: pointer; }
.hl-form__consent a { color: var(--hl-purple); font-weight: 800; text-decoration: underline; text-underline-offset: 3px; }

/* form Đặt hàng: nhóm chọn "Hình thức thanh toán" — mỗi lựa chọn là một ô bấm cao ≥ 44px */
.hl-form__fieldset { min-width: 0; margin: 0; padding: 0; border: 0; }
.hl-form__fieldset legend { padding: 0; margin-bottom: 8px; }
.hl-form__choices .wpcf7-list-item { display: block; margin: 0 0 8px; }
.hl-form__choices label {
  display: flex;
  align-items: center;
  gap: 10px;
  min-height: var(--hl-tap);
  padding: 10px 14px;
  border: 2px solid var(--hl-field-border);
  border-radius: var(--hl-radius-sm);
  background: var(--hl-white);
  color: var(--hl-ink);
  font-size: 16px;
  font-weight: 700;
  cursor: pointer;
}
.hl-form__choices label:has(input:checked) { border-color: var(--hl-purple); background: #f6f1fc; }
.hl-form__choices input[type="radio"] { flex: none; width: 20px; height: 20px; margin: 0; accent-color: var(--hl-purple); cursor: pointer; }
.hl-form__hint { font-size: 14px; line-height: 1.6; color: var(--hl-muted); }

/* nút gửi: CF7 in <input type="submit"> nên phải reset kiểu mặc định của trình duyệt */
input[type="submit"].hl-form__submit {
  -webkit-appearance: none;
  appearance: none;
  border: 0;
  cursor: pointer;
  font: inherit;
  font-size: 17px;
  font-weight: 900;
  line-height: 1;
}
.hl-form__submit:disabled,
.hl-form__submit:disabled:hover {
  background: var(--hl-coral);
  box-shadow: none;
  cursor: not-allowed;
  opacity: .6;
  transform: none;
}
.hl-form.submitting .hl-form__submit { cursor: progress; }

/* vòng xoay khi đang gửi: nằm trong .hl-form__actions ngay sau nút */
.hl-form .hl-form__actions .wpcf7-spinner {
  flex: none;
  align-self: center;
  margin: 0;
  background-color: var(--hl-purple);
}

/* thông báo sau khi gửi — giống .hl-form__status, màu theo trạng thái form của CF7 */
.wpcf7 form.hl-form .wpcf7-response-output {
  margin: 18px 0 0;
  padding: 14px 18px;
  border: 0;
  border-radius: 16px;
  background: var(--hl-white);
  color: var(--hl-ink);
  font-size: 15px;
  font-weight: 800;
  line-height: 1.5;
}
.wpcf7 form.hl-form .wpcf7-response-output:empty { display: none; }
.wpcf7 form.hl-form.sent .wpcf7-response-output { background: var(--hl-tint-green); color: var(--hl-success); }
.wpcf7 form.hl-form.invalid .wpcf7-response-output,
.wpcf7 form.hl-form.unaccepted .wpcf7-response-output,
.wpcf7 form.hl-form.payment-required .wpcf7-response-output,
.wpcf7 form.hl-form.failed .wpcf7-response-output,
.wpcf7 form.hl-form.aborted .wpcf7-response-output { background: #fff5f6; color: var(--hl-danger); }
.wpcf7 form.hl-form.spam .wpcf7-response-output { background: var(--hl-tint-orange); color: var(--hl-ink); }

@media (max-width: 860px) {
  /* nút gửi chiếm cả hàng: chỉ chừa chỗ cho vòng xoay khi đang gửi */
  .hl-form:not(.submitting) .hl-form__actions .wpcf7-spinner { display: none; }
  .wpcf7 form.hl-form .wpcf7-response-output { text-align: center; }
}

/* form chưa sẵn sàng (CF7 tắt / chưa nhập demo) — do hololearn_cf7_render_form() in */
.hl-form__fallback {
  padding: 20px 22px;
  border: 3px dashed var(--hl-field-border);
  border-radius: 18px;
  background: var(--hl-white);
  color: var(--hl-text);
  font-size: 16px;
  font-weight: 500;
  line-height: 1.7;
}
.hl-form__fallback a { color: var(--hl-purple); font-weight: 800; text-decoration: underline; text-underline-offset: 3px; }
.hl-form__fallback + .hl-form__fallback { margin-top: 12px; }
.hl-form__fallback--admin {
  border-style: solid;
  border-color: var(--hl-yellow);
  background: var(--hl-tint-peach);
  color: var(--hl-ink);
  font-size: 15px;
}
