/**
 * Front-end layout CSS.
 *
 * Styles for the site shell (header, footer, body) used ONLY on the plugin's
 * marketing pages. Module CSS handles the content inside <main>. Component
 * classes (.dz-btn, etc.) are defined in components.css.
 *
 * All selectors are either top-level (html/body) or scoped to .dz-app to
 * avoid leaking into admin or other themes.
 */

/* -----------------------------------------------------------------------------
 * Body / document
 * -------------------------------------------------------------------------- */

html,
body {
  margin: 0;
  padding: 0;
}

html {
  scroll-behavior: smooth;
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

body.dz-body {
  background: var(--dz-bg);
  color: var(--dz-fg);
  font-family: var(--dz-font-body);
  font-size: var(--dz-text-base);
  line-height: var(--dz-lh-normal);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}

body.dz-body--ar {
  font-family: var(--dz-font-arabic);
}

.dz-app {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  min-height: 100vh;
  color: var(--dz-fg);
  background: var(--dz-bg);
}

.dz-main {
  flex: 1 1 auto;
  display: block;
}

/* -----------------------------------------------------------------------------
 * Skip link
 * -------------------------------------------------------------------------- */

.dz-app .dz-skip-link {
  position: absolute;
  inset-inline-start: var(--dz-space-4);
  inset-block-start: var(--dz-space-4);
  padding: var(--dz-space-2) var(--dz-space-4);
  background: var(--dz-fg);
  color: var(--dz-bg);
  border-radius: var(--dz-radius-sm);
  font-size: var(--dz-text-sm);
  font-weight: var(--dz-weight-medium);
  text-decoration: none;
  transform: translateY(-200%);
  transition: transform var(--dz-dur-fast) var(--dz-ease-out);
  z-index: var(--dz-z-overlay);
}

.dz-app .dz-skip-link:focus {
  transform: translateY(0);
  outline: 2px solid var(--dz-accent);
  outline-offset: 2px;
}

/* -----------------------------------------------------------------------------
 * Site header
 * -------------------------------------------------------------------------- */

.dz-app .dz-site-header {
  position: sticky;
  top: 0;
  z-index: var(--dz-z-header);
  /* Solid fallback for browsers without color-mix support (pre-Chrome 111 / pre-Safari 16.2). */
  background: var(--dz-bg);
  /* Modern browsers get a translucent frosted look. */
  background: color-mix(in oklab, var(--dz-bg) 88%, transparent);
  backdrop-filter: saturate(180%) blur(14px);
  -webkit-backdrop-filter: saturate(180%) blur(14px);
  border-bottom: 1px solid var(--dz-border);
}

.dz-app .dz-site-header__inner {
  max-width: var(--dz-container);
  margin-inline: auto;
  padding: var(--dz-space-5) var(--dz-content-padding);
  display: flex;
  align-items: center;
  gap: 0; /* Spacing handled per-element for precise control. */
}

/* Brand */
.dz-app .dz-site-brand {
  display: inline-flex;
  align-items: center;
  gap: var(--dz-space-2);
  color: var(--dz-accent);
  text-decoration: none;
  font-family: var(--dz-font-sans);
  font-weight: var(--dz-weight-bold);
  font-size: var(--dz-text-lg);
  letter-spacing: var(--dz-tracking-tight);
  flex-shrink: 0;
}

.dz-app .dz-site-brand__mark {
  display: inline-flex;
  width: 32px;
  height: 32px;
  flex-shrink: 0;
}

.dz-app .dz-site-brand__wordmark {
  color: var(--dz-fg);
}

/* Nav — sits next to the logo with deliberate breathing room. */
.dz-app .dz-site-nav {
  margin-inline-start: var(--dz-space-10); /* 40px gap from logo */
  display: flex;
}

.dz-app .dz-site-nav__list {
  display: flex;
  align-items: center;
  gap: var(--dz-space-1);
  list-style: none;
  margin: 0;
  padding: 0;
}

.dz-app .dz-site-nav__link {
  display: inline-flex;
  align-items: center;
  padding: var(--dz-space-2) var(--dz-space-4);
  border-radius: var(--dz-radius-md);
  font-size: var(--dz-text-sm);
  font-weight: var(--dz-weight-medium);
  color: var(--dz-fg-mut);
  text-decoration: none;
  transition: color var(--dz-dur-fast), background var(--dz-dur-fast);
}

.dz-app .dz-site-nav__link:hover {
  color: var(--dz-fg);
  background: var(--dz-bg-sub);
}

.dz-app .dz-site-nav__link.is-current {
  color: var(--dz-fg);
  background: var(--dz-bg-mut);
}

/* Actions — pinned to the far right. `margin-inline-start: auto` works
   whether or not the nav is visible, so spacing stays consistent across
   breakpoints. */
.dz-app .dz-site-actions {
  margin-inline-start: auto;
  display: flex;
  align-items: center;
  gap: var(--dz-space-2);
  flex-shrink: 0;
}

/* Icon button base */
.dz-app .dz-icon-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  padding: 0;
  background: transparent;
  color: var(--dz-fg-mut);
  border: 1px solid transparent;
  border-radius: var(--dz-radius-md);
  cursor: pointer;
  transition: color var(--dz-dur-fast), background var(--dz-dur-fast), border-color var(--dz-dur-fast);
}

.dz-app .dz-icon-btn:hover {
  color: var(--dz-fg);
  background: var(--dz-bg-sub);
  border-color: var(--dz-border);
}

.dz-app .dz-icon-btn:focus-visible {
  outline: 2px solid var(--dz-accent);
  outline-offset: 2px;
}

/* Theme toggle — show only the icon matching current preference */
.dz-app .dz-theme-toggle__icon {
  display: none;
}
html[data-theme-pref="light"]  .dz-app .dz-theme-toggle__icon--light  { display: block; }
html[data-theme-pref="dark"]   .dz-app .dz-theme-toggle__icon--dark   { display: block; }
html[data-theme-pref="system"] .dz-app .dz-theme-toggle__icon--system { display: block; }
/* Fallback if pref attribute missing: show sun */
html:not([data-theme-pref]) .dz-app .dz-theme-toggle__icon--light { display: block; }

/* Language dropdown */
.dz-app .dz-lang-dropdown {
  position: relative;
}

.dz-app .dz-lang-dropdown__trigger {
  display: inline-flex;
  align-items: center;
  gap: var(--dz-space-2);
  height: 36px;
  padding: 0 var(--dz-space-3);
  background: transparent;
  color: var(--dz-fg);
  border: 1px solid var(--dz-border);
  border-radius: var(--dz-radius-md);
  cursor: pointer;
  font-size: var(--dz-text-sm);
  font-weight: var(--dz-weight-medium);
  transition: background var(--dz-dur-fast), border-color var(--dz-dur-fast);
}

.dz-app .dz-lang-dropdown__trigger:hover {
  background: var(--dz-bg-sub);
  border-color: var(--dz-border-strong);
}

.dz-app .dz-lang-dropdown__trigger:focus-visible {
  outline: 2px solid var(--dz-accent);
  outline-offset: 2px;
}

.dz-app .dz-lang-dropdown__current {
  letter-spacing: 0.05em;
  font-size: var(--dz-text-xs);
  font-weight: var(--dz-weight-semibold);
}

.dz-app .dz-lang-dropdown__chevron {
  opacity: 0.6;
  transition: transform var(--dz-dur-fast);
}

.dz-app .dz-lang-dropdown[aria-expanded="true"] .dz-lang-dropdown__chevron,
.dz-app .dz-lang-dropdown.is-open .dz-lang-dropdown__chevron {
  transform: rotate(180deg);
}

.dz-app .dz-lang-dropdown__menu {
  position: absolute;
  top: calc(100% + 6px);
  inset-inline-end: 0;
  min-width: 180px;
  padding: var(--dz-space-1);
  margin: 0;
  list-style: none;
  background: var(--dz-bg);
  border: 1px solid var(--dz-border);
  border-radius: var(--dz-radius-md);
  box-shadow: var(--dz-shadow-lg);
  z-index: var(--dz-z-dropdown);
  opacity: 0;
  transform: translateY(-4px);
  pointer-events: none;
  transition: opacity var(--dz-dur-fast), transform var(--dz-dur-fast);
}

.dz-app .dz-lang-dropdown.is-open .dz-lang-dropdown__menu {
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
}

.dz-app .dz-lang-dropdown__item {
  display: flex;
  align-items: center;
  gap: var(--dz-space-3);
  padding: var(--dz-space-2) var(--dz-space-3);
  color: var(--dz-fg);
  text-decoration: none;
  border-radius: var(--dz-radius-sm);
  font-size: var(--dz-text-sm);
  transition: background var(--dz-dur-fast);
}

.dz-app .dz-lang-dropdown__item:hover {
  background: var(--dz-bg-sub);
}

.dz-app .dz-lang-dropdown__item.is-active {
  background: var(--dz-accent-softer);
  color: var(--dz-accent);
  font-weight: var(--dz-weight-medium);
}

.dz-app .dz-lang-dropdown__code {
  font-weight: var(--dz-weight-semibold);
  font-size: var(--dz-text-xs);
  letter-spacing: 0.05em;
  min-width: 20px;
  color: var(--dz-fg-mut);
}

.dz-app .dz-lang-dropdown__item.is-active .dz-lang-dropdown__code {
  color: var(--dz-accent);
}

.dz-app .dz-lang-dropdown__label {
  flex: 1 1 auto;
}

.dz-app .dz-lang-dropdown__check {
  opacity: 1;
  color: var(--dz-accent);
}

.dz-app .dz-site-cta {
  flex-shrink: 0;
}

/* Mobile toggle button — hidden by default, shown < 768px */
.dz-app .dz-mobile-toggle {
  display: none;
}

/* Mobile nav panel — hidden by default */
.dz-app .dz-mobile-nav {
  display: none;
  border-top: 1px solid var(--dz-border);
  background: var(--dz-bg);
  padding: var(--dz-space-4) var(--dz-content-padding);
}

.dz-app .dz-mobile-nav:not([hidden]) {
  display: block;
}

.dz-app .dz-mobile-nav__list {
  max-width: var(--dz-container);
  margin-inline: auto;
  list-style: none;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--dz-space-1);
}

.dz-app .dz-mobile-nav__link {
  display: block;
  padding: var(--dz-space-3) var(--dz-space-4);
  border-radius: var(--dz-radius-md);
  font-size: var(--dz-text-md);
  font-weight: var(--dz-weight-medium);
  color: var(--dz-fg);
  text-decoration: none;
}

.dz-app .dz-mobile-nav__link:hover,
.dz-app .dz-mobile-nav__link.is-current {
  background: var(--dz-bg-sub);
}

/* Responsive header */
@media (max-width: 899px) {
  .dz-app .dz-site-nav { display: none; }
  .dz-app .dz-mobile-toggle { display: inline-flex; }
}

@media (max-width: 639px) {
  .dz-app .dz-site-header__inner {
    padding-block: var(--dz-space-4);
  }
  .dz-app .dz-site-brand__wordmark { display: none; }
  .dz-app .dz-site-cta { display: none; }
  .dz-app .dz-lang-dropdown__current { display: none; }
}

/* -----------------------------------------------------------------------------
 * Site footer
 * -------------------------------------------------------------------------- */

.dz-app .dz-site-footer {
  margin-top: auto;
  border-top: 1px solid var(--dz-border);
  background: var(--dz-bg-sub);
  color: var(--dz-fg-mut);
}

.dz-app .dz-site-footer__inner {
  max-width: var(--dz-container);
  margin-inline: auto;
  padding: var(--dz-space-12) var(--dz-content-padding) var(--dz-space-8);
  display: grid;
  grid-template-columns: 2fr 1fr;
  gap: var(--dz-space-8);
  align-items: start;
}

.dz-app .dz-site-footer__brand {
  max-width: 360px;
}

.dz-app .dz-site-footer__tagline {
  margin: var(--dz-space-3) 0 0;
  font-size: var(--dz-text-sm);
  color: var(--dz-fg-mut);
  line-height: var(--dz-lh-relaxed);
}

.dz-app .dz-site-footer__nav {
  justify-self: end;
}

.dz-app .dz-site-footer__list {
  display: flex;
  flex-direction: column;
  gap: var(--dz-space-2);
  list-style: none;
  margin: 0;
  padding: 0;
}

.dz-app .dz-site-footer__link {
  font-size: var(--dz-text-sm);
  font-weight: var(--dz-weight-medium);
  color: var(--dz-fg-mut);
  text-decoration: none;
  transition: color var(--dz-dur-fast);
}

.dz-app .dz-site-footer__link:hover {
  color: var(--dz-fg);
}

.dz-app .dz-site-footer__base {
  max-width: var(--dz-container);
  margin-inline: auto;
  padding: var(--dz-space-5) var(--dz-content-padding);
  border-top: 1px solid var(--dz-border);
}

.dz-app .dz-site-footer__copy {
  margin: 0;
  font-size: var(--dz-text-xs);
  color: var(--dz-fg-sub);
}

@media (max-width: 639px) {
  .dz-app .dz-site-footer__inner {
    grid-template-columns: 1fr;
    padding-block: var(--dz-space-8);
  }
  .dz-app .dz-site-footer__nav {
    justify-self: start;
  }
}

/* -----------------------------------------------------------------------------
 * Empty / 404 placeholder pages
 * -------------------------------------------------------------------------- */

.dz-app .dz-empty-page,
.dz-app .dz-placeholder {
  padding-block: var(--dz-space-28) var(--dz-space-20);
  text-align: center;
}

.dz-app .dz-empty-page__inner,
.dz-app .dz-placeholder__inner {
  max-width: 560px;
  margin-inline: auto;
  padding-inline: var(--dz-content-padding);
}

.dz-app .dz-empty-page__eyebrow {
  margin: 0 0 var(--dz-space-3);
  font-size: var(--dz-text-xs);
  font-weight: var(--dz-weight-semibold);
  letter-spacing: var(--dz-tracking-wider);
  text-transform: uppercase;
  color: var(--dz-accent);
}

.dz-app .dz-empty-page__title,
.dz-app .dz-placeholder__title {
  margin: 0 0 var(--dz-space-4);
  font-family: var(--dz-font-sans);
  font-size: var(--dz-text-4xl);
  font-weight: var(--dz-weight-bold);
  letter-spacing: var(--dz-tracking-tight);
  line-height: var(--dz-lh-tight);
  color: var(--dz-fg);
}

.dz-app .dz-empty-page__body,
.dz-app .dz-placeholder__body {
  margin: 0 0 var(--dz-space-6);
  font-size: var(--dz-text-md);
  color: var(--dz-fg-mut);
  line-height: var(--dz-lh-relaxed);
}

/* Arabic override — swap back to Arabic font in empty/placeholder titles. */
body.dz-body--ar .dz-app .dz-empty-page__title,
body.dz-body--ar .dz-app .dz-placeholder__title {
  font-family: var(--dz-font-arabic);
}
