/**
 * assets/css/nhw-navbar.css
 * เมนูหลักแบบ Responsive (2569) — โรงเรียนนาแห้ววิทยา
 *
 * โหมดการแสดงผล (ควบคุมโดยคลาส .nhw-header--collapsed ที่ JS กำหนด):
 *   - Desktop  : จอ >= 1200px และเมนูวางได้พอดีในบรรทัดเดียว -> แถบเมนูแนวนอน + Dropdown
 *   - Collapsed: จอ < 1200px หรือเมนูยาวเกินพื้นที่ (เพิ่มเมนูจากหลังบ้าน) -> ปุ่ม 3 ขีด + แผงเมนูด้านขวา (Accordion)
 *
 * ใช้ชื่อคลาส nhw-nav* ทั้งหมด เพื่อไม่ชนกับ CSS เดิม (.navmenu / .navbar / .mobile-nav-toggle)
 */

:root {
  --nhw-nav-color: var(--nav-color, #272828);
  --nhw-nav-accent: var(--nhw-primary, var(--nav-hover-color, #a16593));
  --nhw-nav-accent-soft: var(--nhw-primary-light, rgba(161, 101, 147, 0.08));
  --nhw-nav-font: var(--nhw-font-main, var(--nav-font, "Kanit", system-ui, sans-serif));
  --nhw-nav-bg: #ffffff;
  --nhw-nav-border: #eef0f3;
  --nhw-nav-shadow: 0 12px 32px rgba(17, 24, 39, 0.12);
  --nhw-nav-radius: 12px;
}

/* ---------------------------------------------------------------
   พื้นฐาน (ใช้ทุกโหมด)
---------------------------------------------------------------- */
#header.nhw-header {
  background: var(--nhw-nav-bg);
  padding: 10px 0;
  box-shadow: 0 0 18px rgba(55, 66, 59, 0.08);
  z-index: 997;
}

.nhw-header__inner {
  position: relative;
  display: flex;
  align-items: center;
  gap: 16px;
  min-height: 56px;
}

.nhw-header__logo {
  display: flex;
  align-items: center;
  flex: 0 0 auto;
  margin-right: auto;
  min-width: 0;
}

.nhw-header__logo img {
  display: block;
  max-height: 55px;
  max-width: 100%;
  width: auto;
  object-fit: contain;
}

.nhw-nav ul {
  list-style: none;
  margin: 0;
  padding: 0;
}

.nhw-nav__item {
  position: relative;
}

/* ปุ่ม/ลิงก์เมนู (รีเซ็ตสไตล์ button ให้เหมือนลิงก์) */
.nhw-nav__link,
.nhw-nav__link:focus {
  -webkit-appearance: none;
  appearance: none;
  background: none;
  border: 0;
  margin: 0;
  width: 100%;
  display: flex;
  align-items: center;
  gap: 6px;
  font-family: var(--nhw-nav-font);
  font-size: 16px;
  font-weight: 400;
  line-height: 1.4;
  color: var(--nhw-nav-color);
  text-align: left;
  text-decoration: none;
  cursor: pointer;
  transition: color 0.2s ease, background-color 0.2s ease;
  -webkit-tap-highlight-color: transparent;
}

.nhw-nav__link:focus-visible,
.nhw-nav__burger:focus-visible,
.nhw-nav__close:focus-visible {
  outline: 2px solid var(--nhw-nav-accent);
  outline-offset: 2px;
}

.nhw-nav__text {
  flex: 1 1 auto;
  min-width: 0;
}

.nhw-nav__caret {
  flex: 0 0 auto;
  font-size: 12px;
  line-height: 1;
  transition: transform 0.25s ease;
}

.nhw-nav__ext {
  flex: 0 0 auto;
  font-size: 11px;
  opacity: 0.45;
}

.nhw-nav__link.is-current,
.nhw-nav__item.has-current > .nhw-nav__link {
  color: var(--nhw-nav-accent);
}

/* ซ่อนองค์ประกอบของโหมดมือถือไว้ก่อน */
.nhw-nav__burger,
.nhw-nav__panel-head,
.nhw-nav__backdrop,
.nhw-nav__overview {
  display: none;
}

/* ปุ่มด่วน */
.nhw-nav__actions {
  display: flex;
  align-items: center;
  gap: 8px;
}

.nhw-nav__action-img {
  display: flex;
  align-items: center;
}

.nhw-nav__action-img img {
  display: block;
  max-height: var(--nhw-btn-h, 45px);
  max-width: 100%;
  width: auto;
  object-fit: contain;
}

/* ---------------------------------------------------------------
   โหมด Desktop: แถบเมนูแนวนอน
---------------------------------------------------------------- */
.nhw-header:not(.nhw-header--collapsed) .nhw-nav {
  flex: 0 1 auto;
  min-width: 0;
}

.nhw-header:not(.nhw-header--collapsed) .nhw-nav__panel,
.nhw-header:not(.nhw-header--collapsed) .nhw-nav__scroll {
  display: flex;
  align-items: center;
  gap: 12px;
}

.nhw-header:not(.nhw-header--collapsed) .nhw-nav__menu {
  display: flex;
  align-items: center;
  flex-wrap: nowrap;
}

.nhw-header:not(.nhw-header--collapsed) .nhw-nav__menu > .nhw-nav__item > .nhw-nav__link {
  padding: 18px 12px;
  white-space: nowrap;
}

.nhw-header:not(.nhw-header--collapsed) .nhw-nav__menu > .nhw-nav__item:hover > .nhw-nav__link,
.nhw-header:not(.nhw-header--collapsed) .nhw-nav__menu > .nhw-nav__item.is-open > .nhw-nav__link {
  color: var(--nhw-nav-accent);
}

/* Dropdown */
.nhw-header:not(.nhw-header--collapsed) .nhw-nav__sub {
  display: none;
  position: absolute;
  top: 100%;
  left: 0;
  z-index: 1000;
  min-width: 240px;
  max-width: 340px;
  padding: 8px;
  background: var(--nhw-nav-bg);
  border: 1px solid var(--nhw-nav-border);
  border-radius: var(--nhw-nav-radius);
  box-shadow: var(--nhw-nav-shadow);
  animation: nhwNavFade 0.18s ease;
}

/* ชั้นที่ 3 ขึ้นไป: เปิดด้านข้าง */
.nhw-header:not(.nhw-header--collapsed) .nhw-nav__sub .nhw-nav__sub {
  top: -9px;
  left: calc(100% + 6px);
}

/* กลับด้านเมื่อชนขอบจอขวา (JS เพิ่มคลาส .nhw-flip) */
.nhw-header:not(.nhw-header--collapsed) .nhw-nav__menu > .nhw-flip > .nhw-nav__sub {
  left: auto;
  right: 0;
}

.nhw-header:not(.nhw-header--collapsed) .nhw-nav__sub .nhw-flip > .nhw-nav__sub {
  left: auto;
  right: calc(100% + 6px);
}

/* สะพานเมาส์ระหว่างเมนูชั้น 2 -> ชั้น 3 (กันเมนูปิดเองตอนเลื่อนเมาส์ผ่านช่องว่าง) */
.nhw-header:not(.nhw-header--collapsed) .nhw-nav__sub .nhw-nav__item--parent::after {
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
  left: 100%;
  width: 8px;
}

.nhw-header:not(.nhw-header--collapsed) .nhw-nav__sub .nhw-flip.nhw-nav__item--parent::after {
  left: auto;
  right: 100%;
}

.nhw-header:not(.nhw-header--collapsed) .nhw-nav__sub .nhw-nav__link {
  padding: 9px 12px;
  font-size: 15px;
  border-radius: 8px;
  white-space: normal;
}

.nhw-header:not(.nhw-header--collapsed) .nhw-nav__sub .nhw-nav__item:hover > .nhw-nav__link,
.nhw-header:not(.nhw-header--collapsed) .nhw-nav__sub .nhw-nav__item.is-open > .nhw-nav__link {
  color: var(--nhw-nav-accent);
  background: var(--nhw-nav-accent-soft);
}

/* เปิดเมนูย่อย: คลิก/แตะ (.is-open) ทุกอุปกรณ์ */
.nhw-header:not(.nhw-header--collapsed) .nhw-nav__item.is-open > .nhw-nav__sub {
  display: block;
}

/* เปิดเมนูย่อยด้วยการชี้เมาส์ / คีย์บอร์ด เฉพาะอุปกรณ์ที่มีเมาส์ */
@media (hover: hover) and (pointer: fine) {
  .nhw-header:not(.nhw-header--collapsed) .nhw-nav__item:hover > .nhw-nav__sub,
  .nhw-header:not(.nhw-header--collapsed) .nhw-nav__item:focus-within > .nhw-nav__sub {
    display: block;
  }
}

/* แท็บเล็ตจอใหญ่แนวนอน (จอสัมผัส) ในโหมด Desktop: แสดงลิงก์ "ไปที่หน้า ..." */
@media (hover: none), (pointer: coarse) {
  .nhw-header:not(.nhw-header--collapsed) .nhw-nav__overview {
    display: block;
  }

  .nhw-header:not(.nhw-header--collapsed) .nhw-nav__overview .nhw-nav__link {
    color: var(--nhw-nav-accent);
    font-weight: 500;
  }
}

.nhw-header:not(.nhw-header--collapsed) .nhw-nav__overview .bi {
  font-size: 13px;
}

.nhw-header:not(.nhw-header--collapsed) .nhw-nav__item.is-open > .nhw-nav__link > .nhw-nav__caret {
  transform: rotate(180deg);
}

.nhw-header:not(.nhw-header--collapsed) .nhw-nav__sub .nhw-nav__item.is-open > .nhw-nav__link > .nhw-nav__caret {
  transform: none;
}

@keyframes nhwNavFade {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: none; }
}

/* ---------------------------------------------------------------
   โหมด Collapsed: แท็บเล็ต / โทรศัพท์ (ปุ่ม 3 ขีด + แผงด้านขวา)
---------------------------------------------------------------- */
.nhw-header--collapsed .nhw-nav__burger {
  display: inline-flex;
  flex: 0 0 auto;
  flex-direction: column;
  justify-content: center;
  align-items: stretch;
  gap: 5px;
  width: 46px;
  height: 46px;
  padding: 0 11px;
  margin: 0;
  background: var(--nhw-nav-bg);
  border: 1px solid var(--nhw-nav-border);
  border-radius: 12px;
  cursor: pointer;
  box-shadow: 0 2px 8px rgba(17, 24, 39, 0.06);
  -webkit-tap-highlight-color: transparent;
  transition: border-color 0.2s, box-shadow 0.2s;
}

.nhw-header--collapsed .nhw-nav__burger:hover {
  border-color: var(--nhw-nav-accent);
}

.nhw-nav__burger-bar {
  display: block;
  height: 2px;
  border-radius: 2px;
  background: var(--nhw-nav-color);
}

/* แผงเมนู */
.nhw-header--collapsed .nhw-nav__panel {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  z-index: 2;
  width: min(380px, 88vw);
  height: 100vh;
  height: 100dvh;
  display: flex;
  flex-direction: column;
  background: var(--nhw-nav-bg);
  box-shadow: -12px 0 40px rgba(17, 24, 39, 0.18);
  transform: translateX(105%);
  visibility: hidden;
  transition: transform 0.3s ease, visibility 0s linear 0.3s;
}

html.nhw-nav-open .nhw-header--collapsed .nhw-nav__panel {
  transform: none;
  visibility: visible;
  transition: transform 0.3s ease, visibility 0s;
}

.nhw-header--collapsed .nhw-nav__panel-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex: 0 0 auto;
  padding: 12px 14px 12px 18px;
  padding-top: max(12px, env(safe-area-inset-top));
  border-bottom: 1px solid var(--nhw-nav-border);
}

.nhw-nav__panel-logo {
  display: block;
  max-height: 42px;
  max-width: 70%;
  width: auto;
  object-fit: contain;
}

.nhw-nav__close {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  padding: 0;
  font-size: 18px;
  color: var(--nhw-nav-color);
  background: #f4f5f7;
  border: 0;
  border-radius: 50%;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}

.nhw-nav__close:hover {
  color: #fff;
  background: var(--nhw-nav-accent);
}

.nhw-header--collapsed .nhw-nav__scroll {
  flex: 1 1 auto;
  overflow-y: auto;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
  padding: 6px 0 max(24px, env(safe-area-inset-bottom));
}

.nhw-header--collapsed .nhw-nav__menu > .nhw-nav__item {
  border-bottom: 1px solid var(--nhw-nav-border);
}

.nhw-header--collapsed .nhw-nav__link {
  min-height: 50px;
  padding: 12px 20px;
  font-size: 16px;
  font-weight: 500;
  justify-content: space-between;
}

.nhw-header--collapsed .nhw-nav__link:active {
  background: var(--nhw-nav-accent-soft);
}

/* ไอคอนลูกศรเป็นปุ่มวงกลมให้เห็นชัดว่ากดเปิดได้ */
.nhw-header--collapsed .nhw-nav__caret {
  width: 30px;
  height: 30px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: var(--nhw-nav-accent-soft);
}

.nhw-header--collapsed .nhw-nav__item.is-open > .nhw-nav__link {
  color: var(--nhw-nav-accent);
}

.nhw-header--collapsed .nhw-nav__item.is-open > .nhw-nav__link > .nhw-nav__caret {
  color: #fff;
  background: var(--nhw-nav-accent);
  transform: rotate(180deg);
}

.nhw-header--collapsed .nhw-nav__item.is-open > .nhw-nav__link > .bi-chevron-right.nhw-nav__caret {
  transform: rotate(90deg);
}

/* เมนูย่อยแบบ Accordion */
.nhw-header--collapsed .nhw-nav__sub {
  display: none;
  background: #f8f9fb;
  padding: 4px 0;
}

.nhw-header--collapsed .nhw-nav__item.is-open > .nhw-nav__sub {
  display: block;
  animation: nhwNavSlide 0.2s ease;
}

.nhw-header--collapsed .nhw-nav__sub .nhw-nav__link {
  min-height: 46px;
  padding-left: 34px;
  font-size: 15px;
  font-weight: 400;
}

.nhw-header--collapsed .nhw-nav__sub .nhw-nav__sub {
  background: #f1f2f6;
}

.nhw-header--collapsed .nhw-nav__sub .nhw-nav__sub .nhw-nav__link {
  padding-left: 48px;
}

.nhw-header--collapsed .nhw-nav__sub .nhw-nav__sub .nhw-nav__sub .nhw-nav__link {
  padding-left: 62px;
}

.nhw-header--collapsed .nhw-nav__overview {
  display: block;
}

.nhw-header--collapsed .nhw-nav__overview .nhw-nav__link {
  justify-content: flex-start;
  color: var(--nhw-nav-accent);
  font-weight: 500;
}

.nhw-header--collapsed .nhw-nav__overview .nhw-nav__text {
  flex: 0 1 auto;
}

/* ปุ่มด่วนในแผงเมนู */
.nhw-header--collapsed .nhw-nav__actions {
  flex-wrap: wrap;
  justify-content: center;
  gap: 12px;
  padding: 20px 16px 8px;
}

.nhw-header--collapsed .nhw-nav__action-img img {
  max-height: max(var(--nhw-btn-h, 45px), 48px);
}

/* ฉากหลังมืด */
.nhw-header--collapsed .nhw-nav__backdrop {
  display: block;
  position: fixed;
  inset: 0;
  z-index: 1;
  background: rgba(15, 23, 42, 0.45);
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.3s ease;
}

.nhw-header--collapsed .nhw-nav__backdrop[hidden] {
  display: none;
}

html.nhw-nav-open .nhw-header--collapsed .nhw-nav__backdrop {
  opacity: 1;
  pointer-events: auto;
}

/* ล็อกการเลื่อนหน้า + ยกเมนูให้อยู่เหนือทุกองค์ประกอบ (รวมถึง Chatbot) ขณะเปิดเมนู */
html.nhw-nav-open,
html.nhw-nav-open body {
  overflow: hidden;
}

html.nhw-nav-open #header.nhw-header {
  z-index: 100005;
}

@keyframes nhwNavSlide {
  from { opacity: 0; transform: translateY(-4px); }
  to   { opacity: 1; transform: none; }
}

/* โทรศัพท์ */
@media (max-width: 575.98px) {
  #header.nhw-header {
    padding: 8px 0;
  }

  .nhw-header__inner {
    min-height: 50px;
    gap: 10px;
  }

  .nhw-header__logo img {
    max-height: 46px;
  }

  .nhw-header--collapsed .nhw-nav__burger {
    width: 44px;
    height: 44px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .nhw-nav__panel,
  .nhw-nav__backdrop,
  .nhw-nav__sub,
  .nhw-nav__caret {
    transition: none !important;
    animation: none !important;
  }
}
