/* =============================================================
 * SUNSHINE — Layout primitives
 * Container, section rhythm, grid helpers, header/footer shell.
 * Uses logical properties for RTL safety.
 * ============================================================= */

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

.section {
  padding-block: var(--space-4xl);
}
.section--tight   { padding-block: var(--space-2xl); }
.section--loose   { padding-block: var(--space-5xl); }
.section--raised  { background: var(--color-surface-raised); }
.section--dark    {
  background: var(--color-surface-dark);
  color: var(--color-text-on-dark);
}
.section--dark h1,
.section--dark h2,
.section--dark h3 { color: var(--color-surface); }
.section--dark a:not(.btn) { color: var(--color-accent); }
/* Ensure all button variants render their own colors on dark backgrounds
   (e.g. .btn--accent white text on gold) regardless of section--dark cascade. */
.section--dark .btn { color: inherit; }
.section--dark .btn--primary   { color: var(--color-text-on-primary); }
.section--dark .btn--accent    { color: var(--color-text-on-accent); }
.section--dark .btn--secondary { color: var(--color-primary); background: transparent; }
.section--dark .btn--whatsapp  { color: #ffffff; }
.section--dark .btn--on-dark   { color: var(--color-text-on-dark); }

/* Asymmetric grid: 6/6 by default, can be overridden per-section (DESIGN.md §5) */
.grid {
  display: grid;
  gap: var(--space-2xl);
}
.grid--2 { grid-template-columns: repeat(2, 1fr); }
.grid--3 { grid-template-columns: repeat(3, 1fr); }
.grid--4 { grid-template-columns: repeat(4, 1fr); }
.grid--asymmetric { grid-template-columns: 7fr 5fr; }
.grid--asymmetric-rev { grid-template-columns: 5fr 7fr; }
/* Product page: tighter ratio so the sticky right column doesn't waste space. */
.grid--product { grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr); gap: var(--space-3xl); }
/* About hero: text on left (65%), image on right (35%). Collapses to single column only on phone-sized viewports (≤767px). */
.grid--about-hero { grid-template-columns: minmax(0, 65fr) minmax(0, 35fr); gap: var(--space-3xl); align-items: center; }
.grid--about-hero .about-hero-image { max-block-size: 460px; }

/* Phone-only: about hero stacks to single column. */
@media (max-width: 767px) {
  .grid--about-hero { grid-template-columns: 1fr; }
  .grid--about-hero .about-hero-image { max-block-size: 380px; }
}

/* Product page layout: 2-row grid with the right column sticky across both rows
 * (gallery in row 1, details in row 2; right column = sticky summary).
 * This makes the sticky summary persist for the entire left column. */
.product-layout {
  display: grid;
  grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr);
  grid-template-areas:
    "media  main"
    "details main";
  gap: var(--space-3xl) var(--space-3xl);
  align-items: start;
}
.product-layout__media  { grid-area: media; }
.product-layout__main   { grid-area: main; }
.product-layout__details {
  grid-area: details;
  max-width: 100%;
  min-width: 0;
}
@media (max-width: 1023px) {
  .grid--2, .grid--3, .grid--4,
  .grid--asymmetric, .grid--asymmetric-rev,
  .grid--product,
  .product-layout {
    grid-template-columns: 1fr;
    grid-template-areas:
      "media"
      "main"
      "details";
  }
}

/* === Ready-to-discuss CTA strip — page background + inner dark panel === */
.section--ready {
  padding-block: var(--space-2xl);
  background: var(--color-surface);
}
.ready-cta {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-lg);
  justify-content: space-between;
  align-items: center;
  padding: var(--space-xl) var(--space-2xl);
  background: var(--color-surface-dark);
  color: var(--color-text-on-dark);
  border-radius: var(--radius-lg);
}
.ready-cta h2 { color: var(--color-text-on-dark); }
.ready-cta__actions { display: flex; gap: var(--space-md); flex-wrap: wrap; }
@media (max-width: 639px) {
  .ready-cta { padding: var(--space-lg) var(--space-md); }
}

/* Auto-fit responsive grid — no breakpoint needed (DESIGN.md §5) */
.grid--auto {
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
}

/* Fixed 3-col product grid (used on /products/ archives) — keeps columns
 * consistent even when the last page has a single card. */
.grid--products {
  display: grid;
  gap: var(--space-2xl);
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
@media (max-width: 1023px) {
  .grid--products { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 639px) {
  .grid--products { grid-template-columns: minmax(0, 1fr); }
}

/* === Site header shell === */
.site-header {
  position: sticky;
  inset-block-start: 0;
  z-index: var(--z-sticky);
  background: oklch(1 0 0 / 0.92);
  backdrop-filter: saturate(140%) blur(8px);
  border-block-end: var(--border-1);
}
.site-header__inner {
  display: flex;
  align-items: center;
  gap: var(--space-xl);
  min-block-size: 72px;
}
.site-header__brand { flex: 0 0 auto; }
.site-header__brand img { max-block-size: 46px; width: auto; }
.site-header__nav { flex: 1 1 auto; }
.site-header__cta {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  gap: var(--space-sm);
}

.primary-nav ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  gap: var(--space-lg);
  flex-wrap: wrap;
}
.primary-nav a {
  color: var(--color-surface-dark);
  font-weight: var(--fw-medium);
  font-size: var(--fs-small);
  padding-block: var(--space-xs);
}
.primary-nav a:hover,
.primary-nav .current-menu-item > a,
.primary-nav .current_page_item > a {
  color: var(--color-primary);
  text-decoration: none;
  border-block-end: 2px solid var(--color-primary);
}

.lang-switcher {
  position: relative;
  display: inline-flex;
  align-items: center;
  font-size: var(--fs-small);
}
.lang-switcher__toggle {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 10px;
  border: var(--border-1);
  border-radius: var(--radius-sm);
  background: var(--color-surface);
  color: var(--color-surface-dark);
  font-family: inherit;
  font-size: var(--fs-small);
  font-weight: var(--fw-medium);
  line-height: 1;
  cursor: pointer;
  min-block-size: 36px;
  transition: border-color var(--dur-base) var(--ease-out-quart),
              background-color var(--dur-base) var(--ease-out-quart);
}
.lang-switcher__toggle:hover {
  border-color: var(--color-primary);
  color: var(--color-primary);
}
.lang-switcher__toggle:focus-visible {
  outline: 2px solid var(--color-primary);
  outline-offset: 2px;
}
.lang-switcher__code {
  letter-spacing: var(--ls-eyebrow);
  font-weight: var(--fw-semibold);
}
/* Static label mode (single-language fallback) — visually matches the
 * interactive toggle but is non-clickable: no caret, no border, no hover. */
.lang-switcher--static {
  display: inline-flex;
  align-items: center;
  padding: 6px 10px;
  font-size: var(--fs-small);
  font-weight: var(--fw-semibold);
  letter-spacing: var(--ls-eyebrow);
  color: var(--color-text-muted);
  user-select: none;
  cursor: default;
  block-size: 36px;
}
.lang-switcher__caret {
  inline-size: 10px;
  block-size: 6px;
  transition: transform var(--dur-base) var(--ease-out-quart);
}
.lang-switcher.is-open .lang-switcher__caret { transform: rotate(180deg); }

.lang-switcher__menu {
  position: absolute;
  inset-block-start: calc(100% + 6px);
  inset-inline-end: 0;
  z-index: var(--z-dropdown);
  min-inline-size: 160px;
  list-style: none;
  margin: 0;
  padding: var(--space-xs);
  background: var(--color-surface);
  border: var(--border-1);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-hover-lift);
  display: none;
}
.lang-switcher.is-open .lang-switcher__menu { display: block; }
.lang-switcher__option {
  display: flex;
  align-items: center;
  gap: var(--space-sm);
  padding: var(--space-sm) var(--space-md);
  border-radius: var(--radius-sm);
  color: var(--color-surface-dark);
  text-decoration: none;
  font-size: var(--fs-small);
  font-weight: var(--fw-medium);
}
.lang-switcher__option:hover {
  background: var(--color-surface-raised);
  color: var(--color-primary);
  text-decoration: none;
}
.lang-switcher__option.is-active {
  color: var(--color-primary);
  background: var(--color-primary-soft);
}
.lang-switcher__option .lang-switcher__name { color: var(--color-text-muted); font-weight: var(--fw-regular); }
.lang-switcher__option.is-active .lang-switcher__name { color: var(--color-primary); }

/* === Mobile nav (hamburger) === */
.site-header__menu-toggle {
  display: none;
  inline-size: 44px;
  block-size: 44px;
  padding: 0;
  border: var(--border-1);
  border-radius: var(--radius-sm);
  background: var(--color-surface);
  color: var(--color-surface-dark);
  cursor: pointer;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  flex: 0 0 auto;
}
.site-header__menu-toggle:focus-visible {
  outline: 2px solid var(--color-primary);
  outline-offset: 2px;
}
.site-header__menu-toggle-bar {
  display: block;
  inline-size: 20px;
  block-size: 2px;
  background: currentColor;
  border-radius: 1px;
  transition: transform var(--dur-base) var(--ease-out-quart),
              opacity var(--dur-base) var(--ease-out-quart);
}
body.nav-open .site-header__menu-toggle-bar:nth-child(1) { transform: translateY(6px) rotate(45deg); }
body.nav-open .site-header__menu-toggle-bar:nth-child(2) { opacity: 0; }
body.nav-open .site-header__menu-toggle-bar:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }

@media (max-width: 1023px) {
  .site-header__cta-quote { display: none; }
  .site-header__menu-toggle { display: inline-flex; }
  /* Match button heights inside header for visual alignment (mobile). */
  .site-header__cta .lang-switcher,
  .site-header__cta .site-header__menu-toggle { block-size: 44px; }
  .site-header__cta .lang-switcher__toggle {
    block-size: 44px;
    min-block-size: 44px;
  }
  .site-header__nav {
    position: fixed;
    inset-block-start: 72px;
    inset-inline: 0;
    z-index: var(--z-sticky);
    background: var(--color-surface);
    border-block-end: var(--border-1);
    box-shadow: var(--shadow-hover-lift);
    max-block-size: 0;
    overflow: hidden;
    transition: max-block-size var(--dur-slow) var(--ease-out-quart);
  }
  body.nav-open .site-header__nav {
    max-block-size: calc(100vh - 72px);
    overflow-y: auto;
  }
  .primary-nav ul {
    flex-direction: column;
    gap: 0;
    padding: var(--space-sm) var(--container-padding);
  }
  .primary-nav li { border-block-end: var(--border-1); }
  .primary-nav li:last-child { border-block-end: 0; }
  .primary-nav a {
    display: block;
    padding-block: var(--space-md);
    border-block-end: 0;
  }
  .primary-nav a:hover,
  .primary-nav .current-menu-item > a,
  .primary-nav .current_page_item > a {
    border-block-end: 0;
    background: var(--color-primary-soft);
  }
  /* Lock body scroll while drawer is open. */
  body.nav-open { overflow: hidden; }
}

/* === Site footer === */
.site-footer {
  background: var(--color-surface-dark);
  color: var(--color-text-on-dark);
  padding-block: var(--space-4xl) var(--space-xl);
  margin-block-start: var(--space-5xl);
}
.site-footer a { color: var(--color-text-on-dark); }
.site-footer a:hover { color: var(--color-accent); }
.site-footer__grid {
  display: grid;
  grid-template-columns: 1.4fr repeat(3, 1fr);
  gap: var(--space-2xl);
}
@media (max-width: 1023px) {
  .site-footer__grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 639px) {
  .site-footer__grid { grid-template-columns: 1fr; }
}
.site-footer__bottom {
  margin-block-start: var(--space-3xl);
  padding-block-start: var(--space-lg);
  border-block-start: var(--border-1-on-dark);
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-md);
  justify-content: space-between;
  align-items: center;
  font-size: var(--fs-small);
  color: var(--color-text-muted);
}
.footer-nav ul { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: var(--space-sm); }
.footer-nav a { font-size: var(--fs-small); }

/* === Floating WhatsApp button === */
.floating-whatsapp {
  position: fixed;
  inset-block-end: var(--space-lg);
  inset-inline-end: var(--space-lg);
  z-index: var(--z-sticky);
  display: inline-flex;
  align-items: center;
  gap: var(--space-sm);
  padding: var(--space-md);
  border-radius: var(--radius-pill);
  background: #25D366;
  color: #fff;
  font-size: var(--fs-small);
  font-weight: var(--fw-semibold);
  box-shadow: var(--shadow-hover-lift);
}
.floating-whatsapp:hover { background: #1da851; color: #fff; text-decoration: none; }
.floating-whatsapp svg { block-size: 20px; inline-size: 20px; }
@media (max-width: 639px) {
  .floating-whatsapp { padding: var(--space-md); }
  .floating-whatsapp span { display: none; }
}

/* === Main content offset === */
.site-main { display: block; min-block-size: 60vh; }

/* === Breadcrumb === */
.breadcrumb {
  font-size: var(--fs-small);
  color: var(--color-text-muted);
  padding-block: var(--space-md);
  margin-block-end: var(--space-lg);
}
.breadcrumb ol { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: var(--space-xs); }
.breadcrumb li + li::before {
  content: "›";
  margin-inline-end: var(--space-xs);
  color: var(--color-text-disabled);
}
.breadcrumb a { color: var(--color-text-muted); }
.breadcrumb a:hover { color: var(--color-primary); }
.breadcrumb [aria-current="page"] { color: var(--color-text); }
