/*
 * site.css: the only stylesheet for this site (Vapemau5, one-page site).
 *
 * Sections, in order:
 *   1. Tokens        colours, fonts, spacing (custom properties)
 *   2. Fonts         @font-face for self-hosted fonts
 *   3. Base          reset and element defaults
 *   4. Layout        shared section/container rules
 *   5. Components    one block per component: "=== Component: <name> ==="
 *   6. Pages         rare page-specific rules: "=== Page: <path> ==="
 *   7. Utilities     a handful of helpers
 *
 * Breakpoints (Elementor defaults used by the original; media queries can't use custom properties):
 *   mobile  <= 767px    tablet 768px-1024px    desktop >= 1025px
 *
 * Values come from the original's Elementor CSS (discovery/live-css/post-7.css, post-39.css) and
 * computed styles measured on the live page (design-system/live-measure.json).
 * Display font: the original's "sherman" (Sherman Display, a paid font) is replaced by League Gothic
 * (manifest d1). Sherman is caps-only, so every display-font element is uppercased.
 */

/* ============ 1. Tokens ============ */
:root {
  /* Colours */
  --color-black: #000000;         /* page background, hero button */
  --color-footer: #020202;        /* footer (#contact) background */
  --color-white: #ffffff;         /* product band, tabs, dividers, arrow icon */
  --color-light: #efefef;         /* headings, header links, footer text, social icon frames */
  --color-nav: #ededed;           /* off-screen nav links */
  --color-nav-active: #787878;    /* off-screen nav hover / current section */
  --color-text: #d5d5d5;          /* "Who are we?" paragraph */
  --color-button: #ececec;        /* about button group background */
  --color-burger: #c1c1c1;        /* burger lines */
  --color-overlay: rgb(17 17 17 / 0.6);  /* off-screen nav backdrop (#11111199) */

  /* Typography */
  --font-display: "League Gothic", "Arial Narrow", Impact, sans-serif;  /* replaces "sherman" (d1) */
  --display-stretch: 95%;  /* League Gothic narrowed (wdth axis) to Sherman's width */
  --font-text: "Roboto Condensed", "Arial Narrow", Arial, sans-serif;
  --heading-xl: 70px;    /* "Who are we?" (all widths), "Follow us" (48px <= 1024px) */
  --tab-size: 51px;      /* "OUR PRODUCTS" / "VIEW FULL MENU" tabs */

  /* Spacing and shape */
  --container: 1280px;      /* Elementor boxed width */
  --container-wide: 1600px; /* product band */
  --side-pad: 30px;         /* section left/right padding */
  --column-pad: 10px;       /* Elementor default column gap */
  --header-h: 70px;         /* height of the header row block over the hero: 140px tablet, 179px mobile */
  --radius-button: 3px;     /* Elementor button default */

  /* Motion */
  --duration: 0.3s;
  --duration-panel: 1.5s;   /* popup 39: slideInRight, 1.5s */
}
@media (max-width: 1024px) { :root { --header-h: 140px; } }
@media (max-width: 767px) { :root { --header-h: 179px; } }

/* ============ 2. Fonts ============ */
/* Google Fonts (SIL OFL), self-hosted, latin subset, variable files (League Gothic with its wdth axis, Roboto Condensed with wght). */
@font-face { font-family: "League Gothic"; src: url("/assets/fonts/league-gothic-latin-variable.woff2") format("woff2"); font-weight: 400; font-stretch: 75% 100%; font-style: normal; font-display: swap; }
@font-face { font-family: "Roboto Condensed"; src: url("/assets/fonts/roboto-condensed-latin-variable.woff2") format("woff2"); font-weight: 100 900; font-style: normal; font-display: swap; }

/* ============ 3. Base ============ */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; scroll-behavior: smooth; }
/* Group-22.png (floating vapes) is the page background, as the original's body (repeats, centred);
   "contain" on tablet, hidden on mobile. */
body { margin: 0; font-family: var(--font-text); font-size: 16px; color: var(--color-light); background-color: var(--color-black); background-image: url("/wp-content/uploads/2023/05/Group-22.png"); background-position: center center; overflow-x: clip; }
img, svg, video { max-width: 100%; }
img { height: auto; border: 0; }
h1, h2, h3 { margin: 0; font-weight: 400; line-height: 1; }
p { margin: 0; }
ul { margin: 0; padding: 0; list-style: none; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; }
a:focus-visible, button:focus-visible { outline: 2px solid var(--color-light); outline-offset: 3px; }
@media (max-width: 1024px) { body { background-size: contain; } }
@media (max-width: 767px) { body { background-size: 0 auto; } }

/* ============ 4. Layout ============ */
/* .section: a full-width band with 30px side padding; .container: the 1280px Elementor box with a 10px column gap. */
.section { position: relative; padding-inline: var(--side-pad); }
.container { max-width: var(--container); margin-inline: auto; padding: var(--column-pad); }

/* ============ 5. Components ============ */

/* === Component: skip-link === */
.skip-link { position: absolute; left: -9999px; top: 0; z-index: 1000; padding: 8px 16px; background: var(--color-white); color: var(--color-black); }
.skip-link:focus { left: 16px; }

/* === Component: site-header (burger | small logo | ORDER NOW, laid over the hero; not sticky) ===
   Columns 17.5/62/19.8% (25/50/25% tablet); stacked on mobile, where the small logo is hidden. */
.site-header { position: absolute; top: 0; left: 0; right: 0; z-index: 20; padding-inline: calc(var(--side-pad) + var(--column-pad)); }
.site-header__inner { display: flex; align-items: center; max-width: calc(var(--container) - 2 * var(--column-pad)); margin: var(--column-pad) auto 0; min-height: 60px; }
.site-header__col { display: flex; justify-content: center; align-items: center; }
.site-header__col--menu { flex: 0 0 17.538%; }
.site-header__col--logo { flex: 0 0 61.969%; }
.site-header__col--order { flex: 0 0 19.8%; }
.site-header__logo { display: block; width: 223px; }
@media (max-width: 1024px) {
  .site-header__inner { padding: 25px 30px 45px; }
  .site-header__col--menu, .site-header__col--order { flex-basis: 25%; }
  .site-header__col--logo { flex-basis: 50%; }
}
@media (max-width: 767px) {
  .site-header__inner { flex-direction: column; align-items: stretch; }
  .site-header__col { flex-basis: auto; }
  .site-header__col--logo { display: none; }
}

/* === Component: menu-trigger (the original's burger SVG as a real button) === */
.menu-trigger { display: block; width: 50px; }
.menu-trigger svg { display: block; width: 50px; height: 50px; margin-bottom: 5px; } /* the original icon sits in a 55px line box */

/* === Component: menu-panel (off-screen nav: native <dialog>, slides in from the right over 1.5s like
   Elementor Pro popup 39; closes instantly like the original). Without @starting-style it just appears. */
.menu-panel { position: fixed; inset: 0 0 0 auto; margin: 0; width: 618px; max-width: 100vw; height: 100vh; height: 100dvh; max-height: none; padding: 0; border: 0; background: #030303; color: var(--color-nav); overflow: auto; }
.menu-panel[open] { transform: translateX(0); transition: transform var(--duration-panel) ease; }
@starting-style { .menu-panel[open] { transform: translateX(100%); } }
.menu-panel::backdrop { background: var(--color-overlay); }
.menu-panel__inner { display: flex; align-items: center; min-height: 100%; padding-left: 21%; }
.menu-panel__close { position: absolute; top: calc(2% - 11px); right: calc(4% - 11px); display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; color: var(--color-white); transition: color var(--duration); }
.menu-panel__close svg { width: 22px; height: 22px; }
.menu-panel__close:hover { color: rgb(17 17 17 / 0.6); }
.menu-panel__list li:not(:last-child) { margin-bottom: 50px; }
.menu-panel__list a { display: block; font-family: var(--font-display); font-stretch: var(--display-stretch); font-size: 48px; line-height: 78px; letter-spacing: 2px; text-transform: uppercase; color: var(--color-nav); transition: color var(--duration); }
.menu-panel__list a:hover, .menu-panel__list a:focus-visible, .menu-panel__list a.is-active { color: var(--color-nav-active); }
@media (max-width: 1024px) {
  .menu-panel__close svg { width: 21px; height: 21px; }
  .menu-panel__list a { font-size: 60px; line-height: 1.2em; }
}
@media (max-width: 767px) {
  .menu-panel { width: 100vw; }
  .menu-panel__inner { padding-left: 10%; }
  .menu-panel__close svg { width: 18px; height: 18px; }
  .menu-panel__list li:not(:last-child) { margin-bottom: 14px; }
  .menu-panel__list a { font-size: 46px; }
}

/* === Component: button (Elementor button: display font, line-height 1, 3px radius) ===
   --link: transparent, underlined (header ORDER NOW); --dark: black block (hero Order Now). */
.button { display: inline-block; padding: 12px 24px; border-radius: var(--radius-button); font-family: var(--font-display); font-stretch: var(--display-stretch); font-weight: 400; line-height: 1; text-align: center; text-transform: uppercase; color: var(--color-light); transition: all var(--duration); }
.button--link { font-size: 25px; letter-spacing: 2.5px; text-decoration: underline; }
.button--dark { padding: 10px 50px; background: var(--color-black); font-size: 37px; letter-spacing: 1.9px; }
@media (max-width: 1024px) { .button--link { font-size: 20px; } }

/* === Component: button-group (about: ORDER NOW / OUR PRODUCTS, light grey, black text, wraps centred) === */
.button-group { display: flex; flex-wrap: wrap; justify-content: center; gap: 22px; }
.button-group a { display: block; padding: 5px 40px; background: var(--color-button); color: var(--color-black); font-family: var(--font-display); font-stretch: var(--display-stretch); font-size: 28px; line-height: 1; text-transform: uppercase; }
@media (max-width: 1024px) { .button-group { gap: 16px; } }

/* === Component: section-title (display font 70px, centred; "Follow us" 48px <= 1024px) === */
.section-title { font-family: var(--font-display); font-stretch: var(--display-stretch); font-size: var(--heading-xl); line-height: 1; letter-spacing: 1.6px; text-align: center; text-transform: uppercase; color: var(--color-light); }

/* === Component: tab (white rounded tab buttons above and below the product band) === */
.tab { display: inline-block; max-width: 100%; background: var(--color-white); color: var(--color-black); font-family: var(--font-display); font-stretch: var(--display-stretch); font-size: var(--tab-size); line-height: 1; text-align: center; text-transform: uppercase; }
.tab--top { padding: 25px 25px 10px; border-radius: 55px 56px 0 0; }
.tab--bottom { padding: 25px 50px 10px; border-radius: 0 0 50px 50px; }

/* === Component: hero (#home: big logo + Order Now over the video; the video section is pulled up
   under it with the original's negative margins, so both depend on the viewport height as on the original) === */
.hero { position: relative; z-index: 10; padding-inline: var(--side-pad); }
.hero__inner { display: flex; flex-direction: column; align-items: center; max-width: var(--container); min-height: 100vh; margin-inline: auto; padding: calc(var(--header-h) + 132px) var(--column-pad) var(--column-pad); text-align: center; }
.hero__logo { display: block; width: 46%; }
.hero__action { margin-top: 47px; margin-bottom: 218px; }
@media (max-width: 1024px) {
  .hero__inner { padding-top: calc(var(--header-h) + 134px); }
  .hero__action { margin-bottom: 116px; }
}
@media (max-width: 767px) {
  .hero__inner { min-height: 300px; padding-top: calc(var(--header-h) + 35px); }
  .hero__logo { width: 100%; }
  .hero__action { margin-bottom: 20px; }
}

/* === Component: hero-video (full-width MP4 behind the hero; hidden on mobile; d2: unmuted like the original) === */
.hero-video { margin-top: -939px; min-height: 100vh; background: var(--color-black); }
.hero-video__media { display: block; width: 100%; aspect-ratio: 16 / 9; height: auto; background: var(--color-black); object-fit: cover; }
@media (max-width: 1024px) { .hero-video { margin-top: -718px; min-height: 48vh; } }
@media (max-width: 767px) { .hero-video { display: none; } }

/* === Component: about (#about: heading, arrow, text and button group in the middle 36.5% column) === */
.about { margin-block: 120px; }
.about .container { padding-top: 60px; padding-bottom: 69px; } /* 10px column gap + the original's 50px / 59px spacers */
.about__arrow { display: block; width: 44px; height: 88px; margin: 32px auto 0; color: var(--color-white); }
.about__body { width: 36.492%; margin: 23px auto 0; padding: var(--column-pad); } /* 19px spacer + 4px icon line box; then the 10px column gap */
.about__text { margin-bottom: 24px; font-size: 20px; line-height: 24px; text-align: center; color: var(--color-text); } /* the original's text block ends with an empty line */
@media (max-width: 767px) { .about__body { width: 100%; } }

/* === Component: products (#products: white band, top/bottom tabs overhanging, Swiper carousel) === */
.products { margin-block: 150px; background: var(--color-white); }
.products .container { max-width: var(--container-wide); text-align: center; }
.products__tab-top, .products__tab-bottom { padding-bottom: 3px; line-height: 0; } /* the original's button wrappers are 3px taller than the tab */
.products__tab-top { margin-top: -89px; }
.products__tab-bottom { margin-bottom: -89px; }
@media (max-width: 767px) { .products__tab-bottom { margin-bottom: -130px; } }

/* === Component: carousel (Swiper image carousel: 4/2/1 per view, autoplay 5s, loop, no arrows/dots) === */
.carousel { width: 100%; text-align: center; }
.carousel figure { margin: 0; padding-bottom: 4px; } /* the original's inline images sit on a text baseline: 4px below */
.carousel img { display: block; margin-inline: auto; }

/* === Component: site-footer (#contact: Follow us, social icons, WhatsApp / email, copyright, Powered by) === */
.site-footer { position: relative; padding: 0 var(--side-pad) 50px; background: var(--color-footer); }
.site-footer__inner { max-width: var(--container); margin-inline: auto; padding: 72px var(--column-pad) var(--column-pad); } /* 10px + 62px spacer */
.site-footer .section-title { margin-bottom: 20px; }
.site-footer__divider { height: 31px; margin: 0; border: 0; background: linear-gradient(var(--color-white), var(--color-white)) center / 100% 1px no-repeat; } /* 1px line with 15px above and below */
.site-footer__row { display: flex; }
.site-footer__item { flex: 0 0 50%; padding: var(--column-pad); font-family: var(--font-display); font-stretch: var(--display-stretch); font-size: 24px; line-height: 1; letter-spacing: 2.9px; text-transform: uppercase; color: var(--color-light); }
.site-footer__item--end { text-align: end; }
.site-footer__item a { color: inherit; }
.site-footer__credit { padding: 0 var(--column-pad); font-family: var(--font-display); font-stretch: var(--display-stretch); font-size: 16px; line-height: 1; letter-spacing: 2px; text-transform: uppercase; color: var(--color-light); }
@media (max-width: 1024px) {
  .site-footer .section-title { font-size: 48px; }
  .site-footer__item { font-size: 20px; }
}
@media (max-width: 767px) {
  .site-footer__row { flex-direction: column; }
  .site-footer__item { flex-basis: auto; }
  .site-footer__item--end { text-align: start; }
}

/* === Component: social-icons (framed circles, 39px icons, 61px apart; 18px / 26px on mobile) === */
.social-icons { display: flex; justify-content: center; gap: 61px; margin-bottom: 50px; --icon-size: 39px; }
.social-icons__link { display: inline-flex; align-items: center; justify-content: center; width: calc(var(--icon-size) * 2.4); height: calc(var(--icon-size) * 2.4); border: 1px solid var(--color-light); border-radius: 50%; background: var(--color-black); color: var(--color-white); transition: opacity var(--duration); }
.social-icons__link:hover { opacity: 0.9; }
.social-icons__link svg { width: var(--icon-size); height: var(--icon-size); }
@media (max-width: 767px) { .social-icons { gap: 26px; padding-right: 26px; --icon-size: 18px; } } /* the original pair sits 13px left of centre on mobile */

/* === Component: contact-email (replaces WordPress forms; unused here: the original had no form) === */
.contact-email { display: grid; gap: 1rem; justify-items: start; }
.contact-email__address { word-break: break-word; }

/* === Component: popup (generic dialog; the menu uses .menu-panel) === */
.popup { border: 0; padding: 2rem; max-width: min(90vw, 600px); background: var(--color-black); color: var(--color-light); }
.popup::backdrop { background: var(--color-overlay); }

/* === Component: reveal (GSAP animates these; unused here: the original had no entrance animations) === */
.reveal-ready [data-reveal] { visibility: hidden; }

/* ============ 6. Pages ============ */

/* === Page: /404.html === */
.not-found .container { padding-top: calc(var(--header-h) + 100px); padding-bottom: 150px; text-align: center; }
.not-found__text { margin-top: 30px; font-size: 20px; line-height: 24px; color: var(--color-text); }
.not-found .button-group { margin-top: 40px; }

/* ============ 7. Utilities ============ */
.visually-hidden { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* ============ Reduced motion ============ */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; }
  [data-reveal] { visibility: visible !important; }
}
