/* =====================================================
 * City Trafikskola Theme Pack — all widget styles
 * ===================================================== */

/* ===== Theme compatibility layer =====
 * Neutralize common theme wrappers so our widgets always fill the viewport correctly.
 * Covers: Hello Elementor, Hello Biz, GeneratePress, Astra, Kadence, Twenty* themes. */
html, body { overflow-x: hidden; }
html { scrollbar-gutter: stable; }

body.page .elementor,
body.page .elementor-section-wrap,
body.page .elementor > .elementor-section,
body.single .elementor,
body.elementor-kit-default .elementor {
  max-width: 100% !important;
  width: 100% !important;
  padding: 0 !important;
}

/* Hello Elementor & derivatives — kill the .site-content max-width so full-bleed works */
body .site,
body .site-content,
body .page-content,
body #page,
body main#content,
body .entry-content,
body .hentry {
  max-width: 100% !important;
  margin: 0 !important;
  padding: 0 !important;
}

/* Elementor's own content wrapper on canvas template */
.elementor-template-canvas, .elementor-template-canvas body { max-width: 100%; }

/* When our pages use elementor_canvas, hide any stray theme header/footer defensively */
body.elementor-template-canvas > header.site-header,
body.elementor-template-canvas > footer.site-footer,
body.elementor-template-canvas > #masthead,
body.elementor-template-canvas > #colophon { display: none !important; }

/* Pages using the elementor_header_footer template still go through the active theme's
 * single/page template, which (Hello, Astra, Kadence, GeneratePress, Twenty*) renders an
 * <h1 class="entry-title"> + .page-header block above the_content(). Our hero widget
 * supplies its own heading, so suppress that chrome — otherwise it shows as a white strip
 * above the hero. The corresponding Hello filter is applied in PHP for a cleaner DOM. */
body.page-template-elementor_header_footer .page-header,
body.page-template-elementor_header_footer .site-main > .entry-title,
body.page-template-elementor_header_footer main#content > .entry-title,
body.page-template-elementor_header_footer main#content > header.entry-header,
body.page-template-elementor_header_footer .site-main > header.entry-header { display: none !important; }

/* Pragmatic: pull the first Elementor section up a few pixels on every page
 * using the elementor_header_footer template so any residual 1–4px of theme
 * chrome (sub-pixel rounding, browser-default <main> rendering, Elementor
 * location wrapper minor heights) gets covered by the hero's overflow: hidden
 * region. The defensive zero-out below handles the structured causes; this
 * negative margin handles whatever's left. */
body.page-template-elementor_header_footer .elementor > .elementor-section:first-child {
  margin-top: -4px !important;
}

/* Defensive: zero-out every wrapper between <body> and our first hero so no
 * stray margin/padding/border can show as a white strip above the hero. The
 * Pro header location (.elementor-location-header) sits above main#content but
 * its child header is position:fixed, so its in-flow box must collapse to 0.
 * The theme's <main>/<div class="page-content">/.entry-content also wrap the
 * Elementor data and any of them can introduce 1–4px of vertical chrome
 * depending on theme + Elementor version + browser sub-pixel rounding. */
body.page-template-elementor_header_footer .elementor-location-header,
body.page-template-elementor_header_footer .elementor-location-header > .elementor,
body.page-template-elementor_header_footer .elementor-location-header > .elementor > .elementor-section,
body.page-template-elementor_header_footer main#content,
body.page-template-elementor_header_footer .site-main,
body.page-template-elementor_header_footer .page-content,
body.page-template-elementor_header_footer .entry-content,
body.page-template-elementor_header_footer main#content > .elementor,
body.page-template-elementor_header_footer .site-main > .elementor,
body.page-template-elementor_header_footer .page-content > .elementor,
body.page-template-elementor_header_footer .elementor > .elementor-section:first-child,
body.page-template-elementor_header_footer .elementor > .elementor-section:first-child > .elementor-container,
body.page-template-elementor_header_footer .elementor > .elementor-section:first-child .elementor-column,
body.page-template-elementor_header_footer .elementor > .elementor-section:first-child .elementor-widget-wrap,
body.page-template-elementor_header_footer .elementor > .elementor-section:first-child .elementor-widget-wrap > .elementor-element:first-child,
body.page-template-elementor_header_footer .elementor > .elementor-section:first-child .elementor-widget-container {
  margin-top: 0 !important;
  padding-top: 0 !important;
  border-top: 0 !important;
  box-shadow: none !important;
}

/* ===== CT widget wrappers — kill all Elementor default spacing =====
 * Our widgets handle their own sectioning (full-bleed, padding, bg).
 * Elementor wraps every widget in .elementor-widget-container with default padding/margin
 * and each column has default gaps — these add up to white strips between sections. */
.elementor-widget[data-widget_type$=".default"][data-widget_type^="ct_"],
.elementor-widget[class*="elementor-widget-ct_"] {
  margin: 0 !important;
  padding: 0 !important;
}
.elementor-widget[data-widget_type$=".default"][data-widget_type^="ct_"] > .elementor-widget-container,
.elementor-widget[class*="elementor-widget-ct_"] > .elementor-widget-container {
  padding: 0 !important;
  margin: 0 !important;
}

/* Sections hosting only our widgets — strip padding/gaps completely */
.elementor-section.elementor-section-boxed .elementor-container,
.elementor-section.elementor-section-stretched > .elementor-container {
  padding: 0 !important;
  margin: 0 !important;
  max-width: 100% !important;
  width: 100% !important;
}
.elementor-section {
  padding: 0 !important;
  margin: 0 !important;
}
.elementor-section .elementor-row,
.elementor-section .elementor-column-gap-default,
.elementor-section .elementor-column-gap-no {
  padding: 0 !important;
}
.elementor-column,
.elementor-top-column > .elementor-column-wrap,
.elementor-top-column > .elementor-widget-wrap {
  padding: 0 !important;
  margin: 0 !important;
}
.elementor-widget-wrap > .elementor-element {
  margin-bottom: 0 !important;
}
/* Between stacked ct widgets there should be 0 gap — each widget supplies its own padding */
.elementor-widget-wrap > .elementor-element + .elementor-element {
  margin-top: 0 !important;
}

/* ===== Reset Elementor / Hello theme link & button styling inside our widgets =====
 * Hello theme's header-footer.css and Elementor's frontend.css add borders/outlines
 * on focus, underline on hover, button bg colors — all of which bleed into our header
 * mega-menu and other widgets, creating a weird red/dark outline around nav items. */
.ct-site a,
.ct-site button,
.ct-site input,
.ct-site textarea,
.ct-site select {
  color: inherit;
  background-color: transparent;
  border: 0;
  text-decoration: none !important;
  outline: 0;
  box-shadow: none;
}
.ct-site a:hover,
.ct-site a:focus,
.ct-site a:visited,
.ct-site a:active {
  text-decoration: none !important;
  border-color: transparent;
}
.ct-site button {
  font-family: inherit;
  font-size: inherit;
  cursor: pointer;
}
/* Accessible focus outline on interactive elements (keyboard only) */
.ct-site a:focus-visible,
.ct-site button:focus-visible,
.ct-site input:focus-visible,
.ct-site textarea:focus-visible {
  outline: 2px solid var(--ct-brand);
  outline-offset: 2px;
}

/* Re-allow borders on elements that intentionally use them via our own classes */
.ct-site .ct-feature,
.ct-site .ct-utb,
.ct-site .ct-price-card,
.ct-site .ct-quote,
.ct-site .ct-story,
.ct-site .ct-alert,
.ct-site .ct-fg4__item,
.ct-site .ct-team__card,
.ct-site .ct-rbadge,
.ct-site .ct-simple-card,
.ct-site .ct-link-card,
.ct-site .ct-cb,
.ct-site .ct-form,
.ct-site .ct-social__link,
.ct-site .ct-info-note,
.ct-site .ct-mega__link:hover,
.ct-site .ct-btn,
.ct-site .ct-footer__social {
  border: 1px solid var(--ct-border);
}
/* Mega-menu link needs the SAME 1px border in its base (transparent) state as on hover,
 * otherwise the hover-only `border: 1px solid` adds 1px and the menu visibly jumps. The
 * `.ct-site a { border: 0 }` reset above (specificity 0,1,1) outranks the natural rule
 * on `.ct-mega__link` (0,1,0), so we restate at 0,2,0 to win the cascade. */
.ct-site .ct-mega__link { border: 1px solid transparent; }
.ct-site .ct-alert { border-color: rgba(198,163,91,0.3); }
.ct-site .ct-info-note { border-color: rgba(198,163,91,0.3); }
.ct-site .ct-btn--primary { border-color: transparent; }
.ct-site .ct-btn--outline { border-color: rgba(15,15,15,0.25); }
.ct-site .ct-btn--ghost { border-color: rgba(248,247,244,0.4); }
.ct-site .ct-btn--ink { border-color: transparent; }
.ct-site .ct-footer__social { border-color: rgba(248,247,244,0.15); }
.ct-bg-ink .ct-social__link,
.ct-cs .ct-social__link { border-color: rgba(248,247,244,0.15); }

/* WP block-editor / theme button resets for wp-element-button to avoid dark background in our buttons */
.ct-site :where(.wp-element-button, .wp-block-button__link) {
  background-color: initial;
  color: inherit;
  padding: initial;
  border-radius: initial;
}

/* Hello theme may add .elementor-invisible or display:none on empty widget-wraps — reset */
.elementor-invisible { visibility: visible !important; }

/* ===== CRITICAL: lock image dimensions for header/card images =====
 * These rules must be the LAST "img" rules in the cascade. Earlier rules like
 * `.ct-site img { height: auto }` would otherwise override per-component heights
 * (e.g. shrinking .ct-header__logo img back to natural size on scroll) and cause
 * the logo to blow up when the `.ct-header--transparent` specificity boost is removed. */
.ct-site .ct-header__logo img { height: 48px !important; width: auto !important; }
.ct-site .ct-header--transparent .ct-header__logo img { height: 52px !important; }
@media (min-width: 768px) {
  .ct-site .ct-header__logo img { height: 56px !important; }
  .ct-site .ct-header--transparent .ct-header__logo img { height: 60px !important; }
}
.ct-site .ct-footer__brand img { height: 72px !important; width: auto !important; }

/* Lock card media containers to a fixed aspect ratio AND explicit height fallback.
 * Some Elementor 4 / Hello combinations inject `height: auto` on img via .ct-site img
 * or via .elementor-widget img which overrides our object-fit. This is defensive. */
.ct-site .ct-feature__media,
.elementor-widget-ct_feature_cards .ct-feature__media {
  position: relative !important;
  aspect-ratio: 5/4 !important;
  overflow: hidden !important;
  flex: 0 0 auto !important;
  min-height: 0 !important;
}
.ct-site .ct-utb__media,
.elementor-widget-ct_utbildningar_grid .ct-utb__media {
  position: relative !important;
  aspect-ratio: 4/3 !important;
  overflow: hidden !important;
  flex: 0 0 auto !important;
  min-height: 0 !important;
}
.ct-site .ct-feature__media img,
.ct-site .ct-utb__media img,
.elementor-widget-ct_feature_cards .ct-feature__media img,
.elementor-widget-ct_utbildningar_grid .ct-utb__media img {
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  max-width: none !important;
  max-height: none !important;
  object-fit: cover !important;
  display: block !important;
}
/* Force equal-height grid cells */
.ct-site .ct-features,
.elementor-widget-ct_feature_cards .ct-features {
  grid-auto-rows: 1fr;
}
.ct-site .ct-utb-grid,
.elementor-widget-ct_utbildningar_grid .ct-utb-grid {
  grid-auto-rows: 1fr;
}

/* ===== Header — explicit colors so Hello/Elementor defaults never show red on hover ===== */
.ct-site .ct-header__nav-item,
.ct-site .ct-header__cta,
.ct-site .ct-header__burger,
.ct-site .ct-header__top-inner a,
.ct-site .ct-header__top-inner span,
.ct-site .ct-mega__link,
.ct-site .ct-mega__link-label,
.ct-site .ct-mega__link-desc,
.ct-site .ct-mega__side-title,
.ct-site .ct-mega__side-blurb,
.ct-site .ct-drawer__link,
.ct-site .ct-drawer__group-btn,
.ct-site .ct-drawer__group-title {
  color: inherit !important;
  text-decoration: none !important;
}
/* Solid state = subtle frosted-glass overlay, still transparent enough to see page behind */
.ct-site .ct-header--solid {
  background: rgba(15,15,15,0.4) !important;
  backdrop-filter: blur(20px) saturate(150%) !important;
  -webkit-backdrop-filter: blur(20px) saturate(150%) !important;
  box-shadow: 0 1px 0 0 rgba(248,247,244,0.06) !important;
}
.ct-site .ct-header--solid .ct-header__topbar { border-color: rgba(248,247,244,0.15) !important; color: rgba(248,247,244,0.8) !important; }
.ct-site .ct-header--solid .ct-header__nav-item { color: rgba(248,247,244,0.9) !important; }
.ct-site .ct-header--solid .ct-header__nav-item:hover { color: var(--ct-paper) !important; }
.ct-site .ct-header--solid .ct-header__top-inner a:hover { color: var(--ct-brand) !important; }
.ct-site .ct-header--solid .ct-header__cta { background: var(--ct-brand) !important; color: var(--ct-brand-foreground) !important; }
.ct-site .ct-header--solid .ct-header__cta:hover { background: var(--ct-paper) !important; color: var(--ct-ink) !important; }
.ct-site .ct-header--solid .ct-header__burger { border-color: rgba(248,247,244,0.3) !important; color: var(--ct-paper) !important; }
.ct-site .ct-header--solid .ct-header__burger:hover { background: rgba(248,247,244,0.1) !important; }
/* Transparent state (over hero) */
.ct-site .ct-header--transparent .ct-header__nav-item { color: rgba(248,247,244,0.9) !important; }
.ct-site .ct-header--transparent .ct-header__nav-item:hover { color: var(--ct-paper) !important; }

/* Hello Elementor's customizer-driven button background (Hello uses CSS vars on
 * `button:hover` that resolve to its default brand color — usually a red/pink) leaks
 * into our header buttons. Force transparent on every interactive state. */
.ct-site .ct-header__nav-item,
.ct-site .ct-header__nav-item:hover,
.ct-site .ct-header__nav-item:focus,
.ct-site .ct-header__nav-item:active,
.ct-site .ct-header__burger,
.ct-site .ct-header__burger:focus,
.ct-site .ct-drawer__group-btn,
.ct-site .ct-drawer__group-btn:hover,
.ct-site .ct-drawer__group-btn:focus,
.ct-site .ct-drawer__group-btn:active {
  background-color: transparent !important;
}

/* Hamburger — force hide on desktop (belt-and-suspenders against Elementor's button styles) */
.ct-site .ct-header__burger { display: none !important; }
@media (max-width: 1023.98px) {
  .ct-site .ct-header__burger { display: inline-flex !important; }
}

/* ===== CT Buttons — restore background colors killed by the earlier a/button reset ===== */
.ct-site .ct-btn {
  display: inline-flex !important;
  align-items: center !important;
  overflow: hidden !important;
  border-radius: 6px !important;
  padding: 0.75rem 1.5rem !important;
  font-size: 13px !important;
  font-weight: 600 !important;
  text-transform: uppercase !important;
  letter-spacing: 0.14em !important;
  cursor: pointer !important;
  transition: background-color .3s, color .3s, border-color .3s !important;
  border: 1px solid transparent !important;
  text-decoration: none !important;
  line-height: 1.2 !important;
}
.ct-site .ct-btn--primary { background: var(--ct-brand) !important; color: var(--ct-brand-foreground) !important; border-color: transparent !important; }
.ct-site .ct-btn--primary:hover { background: var(--ct-ink) !important; color: var(--ct-paper) !important; }
.ct-site .ct-btn--ghost { background: rgba(248,247,244,0.1) !important; color: var(--ct-paper) !important; border: 1px solid rgba(248,247,244,0.4) !important; backdrop-filter: blur(12px) !important; -webkit-backdrop-filter: blur(12px) !important; }
.ct-site .ct-btn--ghost:hover { background: var(--ct-paper) !important; color: var(--ct-ink) !important; border-color: var(--ct-paper) !important; }
.ct-site .ct-btn--outline { background: transparent !important; color: var(--ct-ink) !important; border: 1px solid rgba(15,15,15,0.25) !important; }
.ct-site .ct-btn--outline:hover { background: var(--ct-ink) !important; color: var(--ct-paper) !important; border-color: var(--ct-ink) !important; }
.ct-site .ct-btn--ink { background: var(--ct-ink) !important; color: var(--ct-paper) !important; border-color: transparent !important; }
.ct-site .ct-btn--ink:hover { background: var(--ct-brand) !important; color: var(--ct-brand-foreground) !important; }
.ct-site .ct-btn__label { display: inline-flex !important; align-items: center !important; transition: transform .3s !important; }
.ct-site .ct-btn__icon { margin-left: 0 !important; max-width: 0 !important; overflow: hidden !important; opacity: 0 !important; transition: all .3s !important; display: inline-flex !important; }
.ct-site .ct-btn__icon svg { width: 16px !important; height: 16px !important; }
.ct-site .ct-btn:hover .ct-btn__label { transform: translateX(-6px) !important; }
.ct-site .ct-btn:hover .ct-btn__icon { margin-left: 0.5rem !important; max-width: 20px !important; opacity: 1 !important; }

/* Form submit button also lost its gold */
.ct-site .ct-form__submit {
  background: var(--ct-brand) !important;
  color: var(--ct-brand-foreground) !important;
  border: none !important;
  border-radius: 999px !important;
}
.ct-site .ct-form__submit:hover { background: var(--ct-brand-deep) !important; color: var(--ct-paper) !important; }

/* Feature/utb CTA links (inside cards) — these use .ct-feature__cta / .ct-utb__cta, not .ct-btn */
.ct-site .ct-feature__cta,
.ct-site .ct-utb__cta,
.ct-site .ct-rbadge__link,
.ct-site .ct-reviews__meta a {
  color: var(--ct-brand) !important;
}
.ct-site .ct-feature__cta:hover,
.ct-site .ct-utb__cta:hover,
.ct-site .ct-rbadge__link:hover { color: var(--ct-brand-deep) !important; }

/* Footer "Boka online" CTA — make it visually prominent so it stands out on dark footer */
.ct-site .ct-footer__cta {
  margin-top: 1.75rem !important;
  display: inline-flex !important;
  align-items: center !important;
  overflow: hidden !important;
  border-radius: 8px !important;
  background: var(--ct-brand) !important;
  color: var(--ct-brand-foreground) !important;
  padding: 1rem 1.75rem !important;
  font-size: 13.5px !important;
  font-weight: 700 !important;
  text-transform: uppercase !important;
  letter-spacing: 0.14em !important;
  transition: transform .3s, box-shadow .3s, background .3s, color .3s !important;
  box-shadow: 0 8px 24px -8px rgba(198,163,91,0.55), inset 0 0 0 1px rgba(255,255,255,0.08) !important;
  border: 0 !important;
}
.ct-site .ct-footer__cta:hover {
  background: var(--ct-paper) !important;
  color: var(--ct-ink) !important;
  transform: translateY(-2px);
  box-shadow: 0 14px 32px -8px rgba(198,163,91,0.65), inset 0 0 0 1px rgba(15,15,15,0.08) !important;
}
.ct-site .ct-footer__cta .ct-btn__icon svg { width: 14px !important; height: 14px !important; }

/* Mega panel adapts to dark solid header — frosted glass like the bar */
.ct-site .ct-header--solid ~ .ct-mega,
.ct-site .ct-header--solid .ct-mega {
  background: rgba(15,15,15,0.85) !important;
  backdrop-filter: blur(24px) saturate(160%) !important;
  -webkit-backdrop-filter: blur(24px) saturate(160%) !important;
  border-top-color: rgba(248,247,244,0.1) !important;
}
.ct-site .ct-header--solid .ct-mega__side { border-right-color: rgba(248,247,244,0.1) !important; }
.ct-site .ct-header--solid .ct-mega__side-title { color: var(--ct-paper) !important; }
.ct-site .ct-header--solid .ct-mega__side-blurb { color: rgba(248,247,244,0.7) !important; }
.ct-site .ct-header--solid .ct-mega__link { color: var(--ct-paper) !important; }
.ct-site .ct-header--solid .ct-mega__link-label { color: var(--ct-paper) !important; }
.ct-site .ct-header--solid .ct-mega__link-desc { color: rgba(248,247,244,0.65) !important; }
.ct-site .ct-header--solid .ct-mega__link:hover { background: rgba(248,247,244,0.06) !important; border-color: rgba(248,247,244,0.1) !important; }
.ct-site .ct-header--solid .ct-mega__cta { background: var(--ct-brand) !important; color: var(--ct-brand-foreground) !important; }
.ct-site .ct-header--solid .ct-mega__cta:hover { background: var(--ct-paper) !important; color: var(--ct-ink) !important; }
.ct-site .ct-header__nav-item--active { color: var(--ct-brand) !important; }
.ct-site .ct-mega__link { color: var(--ct-ink) !important; }
.ct-site .ct-mega__link:hover { color: var(--ct-ink) !important; background: var(--ct-cream) !important; }
.ct-site .ct-mega__link-desc { color: var(--ct-muted) !important; }
.ct-site .ct-mega__side-blurb { color: var(--ct-muted) !important; }
.ct-site .ct-header__top-inner a:hover,
.ct-site .ct-header__top-inner a:focus,
.ct-site .ct-header__top-inner a:visited { color: var(--ct-brand) !important; }

/* Lock font-sizes so Hello theme / WP default h-sizes don't balloon nav items */
.ct-site .ct-header__nav-item { font-size: 13px !important; }
.ct-site .ct-header__top-inner { font-size: 11px !important; }
.ct-site .ct-header__cta { font-size: 13px !important; }
.ct-site .ct-mega__side-title { font-size: 1.5rem !important; }
.ct-site .ct-mega__link-label { font-size: 15px !important; }
.ct-site .ct-mega__link-desc { font-size: 14px !important; }

:root {
  --ct-ink: #0f0f0f;
  --ct-paper: #f8f7f4;
  --ct-cream: #f2f0eb;
  --ct-bone: #e8e3d7;
  --ct-brand: #c6a35b;
  --ct-brand-foreground: #0f0f0f;
  --ct-brand-deep: #a78040;
  --ct-muted: #6a655a;
  --ct-border: #dbd4c5;
  --ct-destructive: #c24d2e;
  --ct-font-display: "Inter Tight", "Inter", ui-sans-serif, system-ui, sans-serif;
  --ct-font-sans: "Inter", ui-sans-serif, system-ui, sans-serif;
  --ct-font-serif: "Instrument Serif", "Times New Roman", serif;
}

/* Scope everything under .ct-site so we don't fight WP themes outside our content */
.ct-site, .ct-site * { box-sizing: border-box; }

.ct-site {
  color: var(--ct-ink);
  background: var(--ct-paper);
  font-family: var(--ct-font-sans);
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  font-feature-settings: "ss01", "cv11";
}

.ct-site h1, .ct-site h2, .ct-site h3, .ct-site h4, .ct-site h5 {
  font-family: var(--ct-font-display);
  letter-spacing: -0.02em;
  font-weight: 600;
  margin: 0;
}

.ct-site p { margin: 0; }
.ct-site ul, .ct-site ol { margin: 0; padding: 0; list-style: none; }
.ct-site img { max-width: 100%; height: auto; display: block; }
.ct-site a { color: inherit; text-decoration: none; }

.ct-font-serif { font-family: var(--ct-font-serif); letter-spacing: -0.01em; font-weight: 400; font-style: italic; }
.ct-tabular { font-variant-numeric: tabular-nums; }
.ct-text-balance { text-wrap: balance; }
.ct-text-pretty { text-wrap: pretty; }

/* Containers */
.ct-container {
  max-width: 1440px;
  margin-inline: auto;
  padding-inline: clamp(1.25rem, 4vw, 3rem);
}
.ct-container-narrow {
  max-width: 980px;
  margin-inline: auto;
  padding-inline: clamp(1.25rem, 4vw, 3rem);
}
.ct-full-bleed {
  width: 100vw;
  position: relative;
  left: 50%;
  right: 50%;
  margin-left: -50vw;
  margin-right: -50vw;
}

/* Reveal */
.ct-reveal { opacity: 0; transform: translateY(24px); }
.ct-reveal-in { opacity: 1; transform: translateY(0); transition: opacity 0.8s ease, transform 0.8s ease; }

/* Hover lift */
.ct-hover-lift { transition: transform .4s cubic-bezier(.2,.7,.2,1), box-shadow .4s; }
.ct-hover-lift:hover { transform: translateY(-4px); }

/* Grain */
.ct-grain { position: relative; }
.ct-grain::after {
  content: ""; position: absolute; inset: 0; pointer-events: none; opacity: 0.06; mix-blend-mode: overlay;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
}

/* ===== BG utilities ===== */
.ct-bg-ink { background: var(--ct-ink); color: var(--ct-paper); }
.ct-bg-paper { background: var(--ct-paper); color: var(--ct-ink); }
.ct-bg-cream { background: var(--ct-cream); color: var(--ct-ink); }
.ct-bg-bone { background: var(--ct-bone); color: var(--ct-ink); }

/* ===== Section paddings ===== */
.ct-section { padding-block: clamp(4rem, 8vw, 7rem); }
.ct-section-sm { padding-block: clamp(3rem, 6vw, 5rem); }

/* ===== Eyebrows / small caps ===== */
.ct-eyebrow {
  font-size: 11px;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: var(--ct-muted);
  font-weight: 500;
  display: inline-flex;
  align-items: center;
  gap: 0.75rem;
}
.ct-eyebrow--dark { color: rgba(248,247,244,0.55); }
.ct-eyebrow--brand { color: var(--ct-brand); font-weight: 600; }
/* Eyebrow section numbers (01, 02, …) intentionally hidden — controls remain in widgets
 * so they can be re-enabled by removing this rule, but the visual numbering is dropped. */
.ct-eyebrow__num { display: none !important; }

/* ===== CTA Buttons ===== */
.ct-btn {
  display: inline-flex;
  align-items: center;
  gap: 0;
  overflow: hidden;
  border-radius: 6px;
  padding: 0.75rem 1.5rem;
  font-size: 13px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  border: 1px solid transparent;
  cursor: pointer;
  transition: background-color .3s, color .3s, border-color .3s;
  font-family: inherit;
}
.ct-btn__label { display: inline-flex; align-items: center; transition: transform .3s; }
.ct-btn__icon { margin-left: 0; max-width: 0; overflow: hidden; opacity: 0; transition: all .3s; display: inline-flex; }
.ct-btn__icon svg { width: 16px; height: 16px; }
.ct-btn:hover .ct-btn__label { transform: translateX(-6px); }
.ct-btn:hover .ct-btn__icon { margin-left: 0.5rem; max-width: 20px; opacity: 1; }

.ct-btn--primary { background: var(--ct-brand); color: var(--ct-brand-foreground); }
.ct-btn--primary:hover { background: var(--ct-ink); color: var(--ct-paper); }
.ct-btn--ghost { background: rgba(248,247,244,0.1); color: var(--ct-paper); border-color: rgba(248,247,244,0.4); backdrop-filter: blur(12px); }
.ct-btn--ghost:hover { background: var(--ct-paper); color: var(--ct-ink); }
.ct-btn--outline { background: transparent; color: var(--ct-ink); border-color: rgba(15,15,15,0.25); }
.ct-btn--outline:hover { background: var(--ct-ink); color: var(--ct-paper); }
.ct-btn--ink { background: var(--ct-ink); color: var(--ct-paper); }
.ct-btn--ink:hover { background: var(--ct-brand); color: var(--ct-brand-foreground); }

/* ===== Page Hero ===== */
.ct-hero {
  position: relative;
  isolation: isolate;
  overflow: hidden;
}
.ct-hero__media {
  position: relative;
  width: 100%;
  height: 68vh;
  min-height: 520px;
  max-height: 820px;
}
.ct-hero--video .ct-hero__media { height: 100svh; min-height: 100svh; max-height: none; background: var(--ct-ink); }
.ct-hero__img, .ct-hero__video {
  position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover;
}
.ct-hero__overlay-v { position: absolute; inset: 0; background: linear-gradient(to top, rgba(15,15,15,0.85) 0%, rgba(15,15,15,0.4) 55%, rgba(15,15,15,0.3) 100%); }
.ct-hero__overlay-h { position: absolute; inset: 0; background: linear-gradient(to right, rgba(15,15,15,0.4), transparent 60%); }
.ct-hero__inner {
  position: relative;
  height: 100%;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  padding-top: 8rem;
  padding-bottom: 3.5rem;
  color: var(--ct-paper);
}
@media (min-width: 768px) { .ct-hero__inner { padding-bottom: 5rem; } }
.ct-hero__eyebrow { color: rgba(248,247,244,0.85); }
.ct-hero__eyebrow .ct-eyebrow__dash { width: 2rem; height: 1px; background: var(--ct-brand); display: inline-block; }
.ct-hero__title {
  margin-top: 1.25rem;
  max-width: 70rem;
  color: var(--ct-paper);
  font-size: clamp(2.5rem, 6vw, 5.5rem);
  line-height: 1.02;
  font-weight: 600;
  letter-spacing: -0.02em;
}
.ct-hero__title .ct-font-serif { color: var(--ct-brand); }
.ct-hero__intro {
  margin-top: 1.5rem;
  max-width: 38rem;
  color: rgba(248,247,244,0.85);
  font-size: clamp(1.05rem, 1.5vw, 1.25rem);
  line-height: 1.6;
}
.ct-hero__ctas { margin-top: 2.25rem; display: flex; flex-wrap: wrap; gap: 0.75rem; }

/* ===== Section Heading ===== */
.ct-heading { max-width: 48rem; }
.ct-heading--center { margin-inline: auto; text-align: center; }
.ct-heading__eyebrow { display: flex; align-items: center; gap: 0.75rem; }
.ct-heading__title {
  margin-top: 1rem;
  font-size: clamp(1.875rem, 3.5vw, 3rem);
  line-height: 1.05;
  letter-spacing: -0.02em;
  font-weight: 600;
}
.ct-heading__intro {
  margin-top: 1.25rem;
  font-size: 1.125rem;
  color: var(--ct-muted);
  line-height: 1.7;
  max-width: 42rem;
}
.ct-bg-ink .ct-heading__intro { color: rgba(248,247,244,0.7); }
.ct-bg-ink .ct-heading__title { color: var(--ct-paper); }

/* ===== Split Text ===== */
.ct-split { display: grid; grid-template-columns: 1fr; gap: 3rem; }
@media (min-width: 768px) { .ct-split { grid-template-columns: 5fr 7fr; gap: 3rem; } }
.ct-split__body { font-size: 1.0625rem; line-height: 1.7; color: rgba(15,15,15,0.85); }
.ct-split__body > * + * { margin-top: 1.25rem; }
.ct-bg-ink .ct-split__body { color: rgba(248,247,244,0.75); }

/* ===== Feature Cards (3) ===== */
.ct-features {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.5rem;
  margin-top: 3.5rem;
  align-items: stretch; /* force all cards to equal height */
}
@media (min-width: 768px) { .ct-features { grid-template-columns: repeat(3, 1fr); gap: 2rem; } }
.ct-feature {
  position: relative; overflow: hidden; border-radius: 16px;
  background: var(--ct-paper); border: 1px solid var(--ct-border);
  display: flex; flex-direction: column;
  height: 100%; /* match grid cell height */
  transition: transform .4s cubic-bezier(.2,.7,.2,1);
}
.ct-feature:hover { transform: translateY(-4px); }
.ct-feature__media {
  position: relative;
  aspect-ratio: 5/4;
  overflow: hidden;
  flex: 0 0 auto; /* never shrink or grow — image height stays locked */
}
.ct-feature__media img {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform .7s;
  display: block;
}
.ct-feature:hover .ct-feature__media img { transform: scale(1.05); }
.ct-feature__tag {
  position: absolute; top: 1rem; left: 1rem;
  background: rgba(248,247,244,0.95); backdrop-filter: blur(4px);
  border-radius: 999px; padding: 0.25rem 0.75rem;
  font-size: 11px; letter-spacing: 0.18em; text-transform: uppercase; font-weight: 600;
}
.ct-feature__body { padding: 1.75rem; flex: 1 1 auto; display: flex; flex-direction: column; }
.ct-feature__title { font-size: 1.5rem; font-weight: 600; letter-spacing: -0.02em; line-height: 1.2; }
.ct-feature__desc { margin-top: 0.75rem; font-size: 15px; color: var(--ct-muted); line-height: 1.7; }
.ct-feature__cta {
  margin-top: auto !important; /* push to bottom so all CTAs align across cards */
  padding-top: 1.25rem;
  display: inline-flex;
  align-items: center;
  gap: 0.375rem;
  font-size: 14px;
  font-weight: 600;
  color: var(--ct-brand);
  align-self: flex-start;
}
.ct-feature__cta:hover { color: var(--ct-brand-deep); }
.ct-feature__cta svg { width: 16px; height: 16px; transition: transform .3s; }
.ct-feature:hover .ct-feature__cta svg { transform: translateX(4px); }

/* ===== Utbildningar Grid (6) ===== */
.ct-utb-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.5rem;
  margin-top: 3.5rem;
  align-items: stretch;
}
@media (min-width: 768px) { .ct-utb-grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .ct-utb-grid { grid-template-columns: repeat(3, 1fr); } }
.ct-utb {
  position: relative; overflow: hidden; border-radius: 16px;
  background: var(--ct-paper); border: 1px solid var(--ct-border);
  transition: transform .4s cubic-bezier(.2,.7,.2,1);
  display: flex; flex-direction: column;
  height: 100%;
}
.ct-utb:hover { transform: translateY(-4px); }
.ct-utb__media {
  position: relative;
  aspect-ratio: 4/3;
  overflow: hidden;
  flex: 0 0 auto;
}
.ct-utb__media img {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform .7s;
  display: block;
}
.ct-utb__body { flex: 1; display: flex; flex-direction: column; }
.ct-utb:hover .ct-utb__media img { transform: scale(1.05); }
.ct-utb__media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to top, rgba(15,15,15,0.7), transparent 60%); }
.ct-utb__icon { position: absolute; top: 1rem; left: 1rem; z-index: 1; color: var(--ct-paper); width: 20px; height: 20px; }
.ct-utb__body {
  padding: 1.5rem;
  flex: 1 1 auto;
  display: flex;
  flex-direction: column;
}
.ct-utb__title { font-size: 1.25rem; font-weight: 600; letter-spacing: -0.02em; }
.ct-utb__desc { margin-top: 0.5rem; font-size: 15px; color: var(--ct-muted); line-height: 1.7; }
.ct-utb__cta {
  margin-top: auto !important; /* push to bottom so all CTAs align across cards */
  padding-top: 1rem;
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  font-size: 14px;
  font-weight: 600;
  color: var(--ct-brand);
  align-self: flex-start;
}
.ct-utb__cta svg { width: 16px; height: 16px; transition: transform .3s; }
.ct-utb:hover .ct-utb__cta svg { transform: translateX(4px); }

/* ===== VVO Split (image + ink panel) ===== */
.ct-vvo { display: grid; grid-template-columns: 1fr; align-items: stretch; }
@media (min-width: 1024px) { .ct-vvo { grid-template-columns: 1fr 1fr; } }
.ct-vvo__media { position: relative; min-height: 480px; }
@media (min-width: 1024px) { .ct-vvo__media { min-height: 640px; } }
.ct-vvo__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.ct-vvo__panel { background: var(--ct-ink); color: var(--ct-paper); padding: 4rem 1.5rem; display: flex; flex-direction: column; justify-content: center; }
@media (min-width: 640px) { .ct-vvo__panel { padding: 4rem 3rem; } }
@media (min-width: 1024px) { .ct-vvo__panel { padding: 7rem 5rem; } }
.ct-vvo__title { margin-top: 1.5rem !important; font-size: clamp(2rem, 3.5vw, 3rem); font-weight: 600; letter-spacing: -0.02em; line-height: 1.05; }
.ct-vvo__intro { margin-top: 1.5rem !important; color: rgba(248,247,244,0.75); font-size: 1.125rem; line-height: 1.7; }
.ct-vvo__list { margin-top: 2.5rem !important; display: flex; flex-direction: column; gap: 1.125rem; }
.ct-vvo__item { display: flex; align-items: flex-start; gap: 0.75rem; color: rgba(248,247,244,0.9); }
.ct-vvo__check {
  margin-top: 0.25rem; width: 20px; height: 20px; border-radius: 999px;
  background: rgba(198,163,91,0.15); color: var(--ct-brand);
  display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0;
}
.ct-vvo__check svg { width: 12px; height: 12px; }
.ct-vvo__ctas { margin-top: 2.5rem; display: flex; flex-wrap: wrap; gap: 0.75rem; }

/* ===== Price Preview header (title + "Se hela prislistan" CTA) ===== */
.ct-price-preview__head {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2rem;
  align-items: flex-end;
}
@media (min-width: 768px) {
  .ct-price-preview__head {
    grid-template-columns: 7fr 5fr;
    gap: 3rem;
  }
}
.ct-price-preview__heading { max-width: 48rem; }
.ct-price-preview__action {
  display: flex;
  justify-content: flex-start;
}
@media (min-width: 768px) {
  .ct-price-preview__action { justify-content: flex-end; }
}
.ct-price-preview__note {
  margin-top: 2rem !important;
  font-size: 14px;
  color: var(--ct-muted);
  line-height: 1.6;
}

/* ===== Price Preview (3 small cards) ===== */
.ct-price-preview {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.5rem;
  margin-top: 3.5rem;
}
@media (min-width: 768px) { .ct-price-preview { grid-template-columns: repeat(3, 1fr); gap: 1.75rem; } }
.ct-price-card {
  border-radius: 16px;
  border: 1px solid var(--ct-border);
  background: var(--ct-paper);
  padding: 2.25rem 2rem;
  transition: transform .4s cubic-bezier(.2,.7,.2,1), border-color .3s, box-shadow .3s;
}
@media (min-width: 768px) { .ct-price-card { padding: 2.5rem 2.25rem; } }
.ct-price-card:hover {
  transform: translateY(-4px);
  border-color: rgba(198,163,91,0.4);
  box-shadow: 0 12px 28px -14px rgba(15,15,15,0.12);
}
.ct-price-card__label { font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase; color: var(--ct-muted); font-weight: 500; }
.ct-price-card__price {
  margin-top: 1rem !important;
  font-size: 2.5rem;
  font-weight: 600;
  font-family: var(--ct-font-display);
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.02em;
  line-height: 1.05;
}
.ct-price-card__note { margin-top: 0.75rem !important; font-size: 14px; color: var(--ct-muted); line-height: 1.5; }

/* ===== Reviews Grid ===== */
.ct-reviews { display: grid; grid-template-columns: 1fr; gap: 3rem; align-items: center; }
@media (min-width: 768px) { .ct-reviews { grid-template-columns: 4fr 8fr; gap: 4rem; } }
@media (min-width: 1280px) { .ct-reviews { grid-template-columns: 3fr 9fr; gap: 5rem; } }

.ct-reviews__meta { display: flex; flex-direction: column; align-items: flex-start; gap: 0; }
.ct-reviews__meta .ct-eyebrow { margin-bottom: 1.75rem; }
.ct-reviews__meta .ct-stars {
  display: inline-flex;
  gap: 0.25rem;
  color: var(--ct-brand);
  margin-bottom: 1rem;
}
.ct-reviews__meta .ct-stars svg {
  width: 16px !important;
  height: 16px !important;
  fill: currentColor;
}
.ct-reviews__meta p {
  margin: 0 0 1.75rem 0 !important;
  font-size: 15px;
  color: var(--ct-muted);
  line-height: 1.5;
}
.ct-reviews__meta a {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 14px;
  font-weight: 600;
  color: var(--ct-ink) !important;
  transition: color .3s;
}
.ct-reviews__meta a:hover { color: var(--ct-brand) !important; }
.ct-reviews__meta a svg { width: 14px !important; height: 14px !important; }

.ct-reviews__list { display: grid; grid-template-columns: 1fr; gap: 1.5rem; }
@media (min-width: 640px) { .ct-reviews__list { grid-template-columns: repeat(2, 1fr); gap: 1.75rem; } }

.ct-quote {
  border-radius: 16px;
  background: var(--ct-paper);
  border: 1px solid var(--ct-border);
  padding: 2.25rem;
  display: flex;
  flex-direction: column;
  height: 100%;
}
@media (min-width: 768px) { .ct-quote { padding: 2.5rem; } }
.ct-quote__text {
  font-size: 1.0625rem;
  font-family: var(--ct-font-display);
  line-height: 1.65;
  font-weight: 500;
  letter-spacing: -0.005em;
  color: var(--ct-ink);
  flex: 1;
}
.ct-quote__author {
  margin-top: 1.75rem !important;
  font-size: 11px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--ct-muted);
  font-weight: 500;
}

/* ===== Contact Strip ===== */
.ct-cs { background: var(--ct-ink); color: var(--ct-paper); position: relative; overflow: hidden; }
.ct-cs__orb { position: absolute; top: -8rem; right: -8rem; width: 24rem; height: 24rem; border-radius: 999px; background: rgba(198,163,91,0.1); filter: blur(48px); pointer-events: none; }
.ct-cs__inner { padding-block: 5rem; position: relative; }
@media (min-width: 768px) { .ct-cs__inner { padding-block: 6rem; } }
.ct-cs__head { display: grid; grid-template-columns: 1fr; gap: 2.5rem; align-items: flex-end; margin-bottom: 3rem; }
@media (min-width: 768px) { .ct-cs__head { grid-template-columns: 2fr 1fr; } }
.ct-cs__grid { display: grid; grid-template-columns: 1fr; gap: 1px; background: rgba(248,247,244,0.1); border-radius: 16px; overflow: hidden; border: 1px solid rgba(248,247,244,0.1); }
@media (min-width: 768px) { .ct-cs__grid { grid-template-columns: repeat(3, 1fr); } }
.ct-cs__card {
  display: block;
  background: var(--ct-ink);
  padding: 2.5rem 2rem;
  transition: background-color .3s;
}
@media (min-width: 768px) { .ct-cs__card { padding: 3rem 2.5rem; } }
@media (min-width: 1024px) { .ct-cs__card { padding: 3.5rem 3rem; } }
.ct-cs__card:hover { background: rgba(248,247,244,0.03); }
.ct-cs__icon { display: inline-flex; width: 48px; height: 48px; border-radius: 999px; background: rgba(198,163,91,0.15); color: var(--ct-brand); align-items: center; justify-content: center; transition: background .3s, color .3s; }
.ct-cs__card:hover .ct-cs__icon { background: var(--ct-brand); color: var(--ct-brand-foreground); }
.ct-cs__icon svg { width: 18px; height: 18px; }
.ct-cs__label { margin-top: 1.75rem !important; font-size: 11px; letter-spacing: 0.25em; text-transform: uppercase; color: rgba(248,247,244,0.55); }
.ct-cs__big { margin-top: 0.75rem !important; font-size: 1.5rem; font-family: var(--ct-font-display); font-weight: 600; font-variant-numeric: tabular-nums; transition: color .3s; line-height: 1.3; }
/* Modifier for cards holding a long string (email/address) — drop tabular-nums and shrink. */
.ct-cs__big--text { font-size: 1.125rem !important; font-variant-numeric: normal; word-break: break-word; }
.ct-cs__card:hover .ct-cs__big { color: var(--ct-brand); }
.ct-cs__sub { margin-top: 1rem !important; font-size: 14px; color: rgba(248,247,244,0.55); line-height: 1.5; }

/* ===== Example Stories ===== */
.ct-stories { display: grid; grid-template-columns: 1fr; gap: 2.5rem; }
@media (min-width: 768px) { .ct-stories { grid-template-columns: repeat(2, 1fr); } }
.ct-story { background: var(--ct-paper); border-radius: 16px; border: 1px solid var(--ct-border); padding: 2rem; }
@media (min-width: 768px) { .ct-story { padding: 2.5rem; } }
.ct-story__label { font-size: 11px; letter-spacing: 0.25em; text-transform: uppercase; color: var(--ct-brand); font-weight: 600; }
.ct-story__title { margin-top: 0.75rem; font-size: clamp(1.5rem, 2.5vw, 1.875rem); line-height: 1.2; letter-spacing: -0.02em; font-weight: 600; }
.ct-story__body { margin-top: 1.5rem; font-size: 15.5px; line-height: 1.7; color: rgba(15,15,15,0.85); }
.ct-story__body > * + * { margin-top: 1rem; }

/* ===== Day Schedule ===== */
.ct-day { display: grid; grid-template-columns: 1fr; gap: 3rem; }
@media (min-width: 768px) { .ct-day { grid-template-columns: 5fr 7fr; } }
.ct-day__list { display: flex; flex-direction: column; gap: 1rem; }
.ct-day__row { display: flex; align-items: baseline; gap: 1.5rem; border-bottom: 1px solid rgba(248,247,244,0.1); padding-bottom: 1rem; }
.ct-day__time { font-family: var(--ct-font-display); font-size: 1.5rem; font-variant-numeric: tabular-nums; color: var(--ct-brand); width: 5rem; flex-shrink: 0; font-weight: 600; }
.ct-day__what { color: rgba(248,247,244,0.9); font-size: 1.125rem; }

/* ===== Checklist ===== */
.ct-checklist { margin-top: 3rem; display: grid; grid-template-columns: 1fr; gap: 1rem 2.5rem; }
@media (min-width: 768px) { .ct-checklist { grid-template-columns: repeat(2, 1fr); } }
.ct-checklist__item { display: flex; align-items: flex-start; gap: 0.75rem; font-size: 16px; color: rgba(15,15,15,0.85); }
.ct-bg-ink .ct-checklist__item { color: rgba(248,247,244,0.85); }
.ct-checklist__icon { color: var(--ct-brand); margin-top: 2px; flex-shrink: 0; }
.ct-checklist__icon svg { width: 20px; height: 20px; }

/* ===== Alert Box ===== */
.ct-alert { border-radius: 16px; border: 1px solid rgba(198,163,91,0.3); background: rgba(198,163,91,0.05); padding: 2rem; display: flex; align-items: flex-start; gap: 1.25rem; }
@media (min-width: 768px) { .ct-alert { padding: 2.5rem; } }
.ct-alert__icon { color: var(--ct-brand); flex-shrink: 0; margin-top: 4px; }
.ct-alert__icon svg { width: 24px; height: 24px; }
.ct-alert__eyebrow { font-size: 11px; letter-spacing: 0.25em; text-transform: uppercase; color: var(--ct-brand); font-weight: 600; }
.ct-alert__title { margin-top: 0.5rem; font-size: clamp(1.5rem, 2.5vw, 1.875rem); line-height: 1.2; font-weight: 600; letter-spacing: -0.02em; }
.ct-alert__body { margin-top: 0.75rem; font-size: 15.5px; color: rgba(15,15,15,0.85); line-height: 1.7; }

/* ===== CTA Strip ===== */
.ct-cta-strip { display: flex; flex-direction: column; align-items: flex-start; justify-content: space-between; gap: 2rem; padding-block: 4rem; }
@media (min-width: 768px) { .ct-cta-strip { flex-direction: row; align-items: center; padding-block: 6rem; } }
.ct-cta-strip__title { font-size: clamp(1.875rem, 3vw, 2.5rem); line-height: 1.2; font-weight: 600; letter-spacing: -0.02em; margin-top: 0.75rem; }
.ct-cta-strip__sub { margin-top: 0.75rem; color: rgba(248,247,244,0.7); max-width: 28rem; }
.ct-bg-cream .ct-cta-strip__sub,
.ct-bg-paper .ct-cta-strip__sub,
.ct-bg-bone .ct-cta-strip__sub { color: rgba(15,15,15,0.65); }

.ct-cta-image { position: relative; overflow: hidden; }
.ct-cta-image__bg { position: relative; height: 420px; }
.ct-cta-image__bg img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
/* Overlay: heavy on the left where the text sits, fades to a light wash on the
 * right so the image actually shows through instead of being a flat dark block. */
.ct-cta-image__bg::after {
  content: ""; position: absolute; inset: 0;
  background:
    linear-gradient(to right, rgba(15,15,15,0.7) 0%, rgba(15,15,15,0.45) 50%, rgba(15,15,15,0.15) 100%),
    linear-gradient(to top, rgba(15,15,15,0.25), transparent 60%);
}
.ct-cta-image__inner { position: relative; z-index: 1; height: 100%; display: flex; flex-direction: column; justify-content: center; color: var(--ct-paper); }
.ct-cta-image__title { margin-top: 0.75rem; max-width: 50rem; font-size: clamp(1.875rem, 4vw, 3rem); line-height: 1.15; letter-spacing: -0.02em; font-weight: 600; }
.ct-cta-image__ctas { margin-top: 1.75rem; display: flex; flex-wrap: wrap; gap: 0.75rem; }

/* ===== Feature Grid 4 (small icon cards) ===== */
.ct-fg4 { display: grid; grid-template-columns: 1fr; gap: 1.25rem; margin-top: 3rem; }
@media (min-width: 768px) { .ct-fg4 { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .ct-fg4 { grid-template-columns: repeat(4, 1fr); } }
.ct-fg4__item {
  border-radius: 16px; border: 1px solid var(--ct-border); background: var(--ct-paper);
  padding: 1.5rem; transition: transform .4s cubic-bezier(.2,.7,.2,1);
}
.ct-fg4__item:hover { transform: translateY(-4px); }
.ct-fg4__icon { display: inline-flex; width: 44px; height: 44px; border-radius: 12px; background: rgba(198,163,91,0.1); color: var(--ct-brand); align-items: center; justify-content: center; }
.ct-fg4__icon svg { width: 20px; height: 20px; }
.ct-fg4__title { margin-top: 1.25rem; font-size: 1.125rem; font-weight: 600; letter-spacing: -0.02em; }
.ct-fg4__desc { margin-top: 0.5rem; font-size: 14px; color: var(--ct-muted); line-height: 1.7; }

/* ===== Price Table ===== */
.ct-price-table { margin-top: 2.5rem; border-top: 1px solid var(--ct-border); border-bottom: 1px solid var(--ct-border); }
.ct-price-table__row { display: grid; grid-template-columns: repeat(12, 1fr); gap: 1rem; padding-block: 1.25rem; align-items: baseline; border-bottom: 1px solid var(--ct-border); }
.ct-price-table__row:last-child { border-bottom: none; }
.ct-price-table__name { grid-column: span 8; }
@media (min-width: 768px) { .ct-price-table__name { grid-column: span 9; } }
.ct-price-table__name strong { font-family: var(--ct-font-display); font-size: 1.125rem; font-weight: 600; letter-spacing: -0.02em; display: block; }
.ct-price-table__name span { margin-top: 0.25rem; font-size: 14px; color: var(--ct-muted); display: block; }
.ct-price-table__price { grid-column: span 4; text-align: right; font-family: var(--ct-font-display); font-size: 1.25rem; font-variant-numeric: tabular-nums; font-weight: 600; }
@media (min-width: 768px) { .ct-price-table__price { grid-column: span 3; } }
.ct-price-table__note { margin-top: 1.5rem; font-size: 14px; color: var(--ct-muted); }

/* ===== Team Cards ===== */
.ct-team { margin-top: 3rem; display: grid; grid-template-columns: 1fr; gap: 2rem; }
@media (min-width: 768px) { .ct-team { grid-template-columns: repeat(2, 1fr); } }
.ct-team__card { background: var(--ct-paper); border-radius: 16px; border: 1px solid var(--ct-border); padding: 2rem; }
@media (min-width: 768px) { .ct-team__card { padding: 2.5rem; } }
.ct-team__role { font-size: 11px; letter-spacing: 0.25em; text-transform: uppercase; color: var(--ct-brand); font-weight: 600; }
.ct-team__name { margin-top: 0.75rem; font-size: 1.875rem; font-weight: 600; letter-spacing: -0.02em; }
.ct-team__bio { margin-top: 1rem; font-size: 15.5px; line-height: 1.7; color: rgba(15,15,15,0.85); }

/* ===== Review Badge ===== */
.ct-rbadge { border-radius: 16px; border: 1px solid var(--ct-border); background: var(--ct-paper); padding: 2.5rem; text-align: center; }
@media (min-width: 768px) { .ct-rbadge { padding: 3.5rem; } }
.ct-rbadge .ct-stars { display: inline-flex; gap: 0.25rem; color: var(--ct-brand); justify-content: center; }
.ct-rbadge .ct-stars svg { width: 28px; height: 28px; fill: currentColor; }
.ct-rbadge__title { margin-top: 1rem; font-size: clamp(1.875rem, 3vw, 2.25rem); font-weight: 600; letter-spacing: -0.02em; font-family: var(--ct-font-display); }
.ct-rbadge__link { margin-top: 1.5rem; display: inline-flex; align-items: center; gap: 0.375rem; font-size: 14px; font-weight: 600; color: var(--ct-brand); }
.ct-rbadge__link:hover { color: var(--ct-brand-deep); }
.ct-rbadge__link svg { width: 14px; height: 14px; }

/* ===== Simple Cards (3 icon+title+desc) ===== */
.ct-simple-cards { margin-top: 3rem; display: grid; grid-template-columns: 1fr; gap: 1.25rem; }
@media (min-width: 768px) { .ct-simple-cards { grid-template-columns: repeat(3, 1fr); } }
.ct-simple-card { border-radius: 16px; border: 1px solid var(--ct-border); background: var(--ct-paper); padding: 1.75rem; transition: transform .4s cubic-bezier(.2,.7,.2,1); }
.ct-simple-card:hover { transform: translateY(-4px); }
.ct-simple-card__icon { color: var(--ct-brand); }
.ct-simple-card__icon svg { width: 24px; height: 24px; }
.ct-simple-card__title { margin-top: 1.25rem; font-size: 1.25rem; font-weight: 600; letter-spacing: -0.02em; }
.ct-simple-card__desc { margin-top: 0.5rem; font-size: 15px; color: var(--ct-muted); line-height: 1.7; }

/* ===== Link Cards (2x2 big external) ===== */
.ct-link-cards { margin-top: 3rem; display: grid; grid-template-columns: 1fr; gap: 1.5rem; }
@media (min-width: 768px) { .ct-link-cards { grid-template-columns: repeat(2, 1fr); } }
.ct-link-card { display: block; position: relative; overflow: hidden; border-radius: 16px; border: 1px solid var(--ct-border); background: var(--ct-paper); padding: 2rem; transition: transform .4s cubic-bezier(.2,.7,.2,1); }
@media (min-width: 768px) { .ct-link-card { padding: 2.5rem; } }
.ct-link-card:hover { transform: translateY(-4px); }
.ct-link-card__head { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; }
.ct-link-card__title { font-size: clamp(1.5rem, 2.5vw, 1.875rem); font-weight: 600; letter-spacing: -0.02em; }
.ct-link-card__arrow {
  display: inline-flex; width: 40px; height: 40px; border-radius: 999px;
  background: var(--ct-cream); align-items: center; justify-content: center;
  transition: background .3s, color .3s;
}
.ct-link-card:hover .ct-link-card__arrow { background: var(--ct-brand); color: var(--ct-paper); }
.ct-link-card__arrow svg { width: 16px; height: 16px; }
.ct-link-card__desc { margin-top: 1rem; font-size: 15.5px; color: var(--ct-muted); line-height: 1.7; }
.ct-link-card__meta { margin-top: 1.5rem; font-size: 12px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--ct-brand); }

/* ===== Contact Blocks ===== */
.ct-cb-grid { display: grid; grid-template-columns: 1fr; gap: 1.5rem; }
@media (min-width: 768px) { .ct-cb-grid { grid-template-columns: repeat(3, 1fr); } }
.ct-cb { border-radius: 16px; border: 1px solid var(--ct-border); background: var(--ct-paper); padding: 1.75rem; transition: transform .4s cubic-bezier(.2,.7,.2,1); display: block; height: 100%; }
.ct-cb:hover { transform: translateY(-4px); }
.ct-cb__icon { color: var(--ct-brand); }
.ct-cb__icon svg { width: 20px; height: 20px; }
.ct-cb__label { margin-top: 1rem; font-size: 11px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--ct-muted); }
.ct-cb__big { margin-top: 0.5rem; font-size: clamp(1.25rem, 2vw, 1.5rem); font-family: var(--ct-font-display); font-weight: 600; word-break: break-word; }
.ct-cb__sub { margin-top: 0.25rem; font-size: 14px; color: var(--ct-muted); }

/* ===== Hours Table ===== */
.ct-hours { margin-top: 2rem; border-top: 1px solid var(--ct-border); border-bottom: 1px solid var(--ct-border); }
.ct-hours__row { display: flex; justify-content: space-between; padding-block: 0.875rem; font-size: 15.5px; border-bottom: 1px solid var(--ct-border); }
.ct-hours__row:last-child { border-bottom: none; }
.ct-hours__day { font-weight: 500; }
.ct-hours__time { color: var(--ct-muted); font-variant-numeric: tabular-nums; }

/* ===== Social Links ===== */
.ct-social { display: flex; align-items: center; gap: 0.5rem; }
.ct-social__link {
  display: inline-flex; width: 44px; height: 44px; border-radius: 999px;
  border: 1px solid var(--ct-border); align-items: center; justify-content: center;
  transition: all .3s;
}
.ct-social__link:hover { background: var(--ct-brand); color: var(--ct-paper); border-color: var(--ct-brand); }
.ct-social__link svg { width: 16px; height: 16px; fill: currentColor; }
.ct-bg-ink .ct-social__link { border-color: rgba(248,247,244,0.15); }

/* ===== Contact Form (mailto-based) ===== */
.ct-form { border-radius: 16px; border: 1px solid var(--ct-border); background: var(--ct-paper); padding: 1.75rem; }
@media (min-width: 768px) { .ct-form { padding: 2.25rem; } }
.ct-form__row { display: grid; grid-template-columns: 1fr; gap: 1rem; padding-top: 1rem; }
@media (min-width: 640px) { .ct-form__row { grid-template-columns: 1fr 1fr; } }
.ct-form label { display: block; margin-top: 1rem; }
.ct-form__label { font-size: 12px; font-weight: 500; letter-spacing: 0.15em; text-transform: uppercase; color: var(--ct-muted); }
.ct-form input, .ct-form textarea {
  width: 100%; border-radius: 8px; border: 1px solid var(--ct-border); background: var(--ct-paper);
  padding: 0.75rem 1rem; font-size: 15px; font-family: inherit; color: var(--ct-ink); margin-top: 0.5rem;
}
.ct-form input:focus, .ct-form textarea:focus { outline: none; border-color: var(--ct-brand); box-shadow: 0 0 0 2px rgba(198,163,91,0.3); }
.ct-form textarea { resize: vertical; min-height: 120px; }
.ct-form__submit { margin-top: 1.25rem; display: inline-flex; align-items: center; gap: 0.5rem; border-radius: 999px; background: var(--ct-brand); color: var(--ct-brand-foreground); padding: 0.75rem 1.5rem; font-size: 14px; font-weight: 600; border: none; cursor: pointer; transition: background .3s; }
.ct-form__submit:hover { background: var(--ct-brand-deep); color: var(--ct-paper); }
.ct-form__submit svg { width: 16px; height: 16px; }
.ct-form__sent { margin-top: 0.75rem; font-size: 14px; color: var(--ct-muted); }

/* ===== Map Embed ===== */
.ct-map { position: relative; height: 460px; overflow: hidden; }
@media (min-width: 768px) { .ct-map { height: 560px; } }
.ct-map iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }

/* ===== Anchor Content ===== */
.ct-anchor { display: grid; grid-template-columns: 1fr; gap: 3rem; }
@media (min-width: 768px) { .ct-anchor { grid-template-columns: 3fr 9fr; } }
.ct-anchor__nav { position: sticky; top: 7rem; display: flex; flex-direction: column; gap: 0.25rem; align-self: start; }
.ct-anchor__nav-label { font-size: 11px; letter-spacing: 0.25em; text-transform: uppercase; color: var(--ct-muted); margin-bottom: 0.75rem; }
.ct-anchor__nav a { display: block; padding: 0.5rem 0.75rem; border-radius: 8px; font-size: 14px; font-weight: 500; }
.ct-anchor__nav a:hover { background: var(--ct-cream); }
.ct-anchor__body { display: flex; flex-direction: column; gap: 5rem; }
.ct-anchor__section { scroll-margin-top: 7rem; }
.ct-anchor__section > h2 + div { margin-top: 2rem; }
.ct-anchor__section p { font-size: 16.5px; line-height: 1.8; color: rgba(15,15,15,0.85); max-width: 48rem; }
.ct-anchor__section p + p { margin-top: 1.25rem; }

/* ===== Site Header ===== */
.ct-header {
  position: fixed; inset-inline: 0; top: 0; z-index: 50;
  transition: all .5s;
}
/* Subtle dark scrim so the topbar/nav text stays readable when the hero video shows a
 * bright frame underneath. Fades out by the bottom of the header so the boundary with
 * the hero remains soft, not a hard line. */
.ct-header--transparent {
  background: linear-gradient(to bottom, rgba(15,15,15,0.55) 0%, rgba(15,15,15,0.25) 60%, rgba(15,15,15,0) 100%);
}
.ct-header--solid { background: rgba(248,247,244,0.95); backdrop-filter: blur(24px); box-shadow: 0 1px 0 0 rgba(15,15,15,0.08); }
.ct-header__topbar { display: none; border-bottom: 1px solid; transition: all .5s; }
@media (min-width: 768px) { .ct-header__topbar { display: block; } }
.ct-header--transparent .ct-header__topbar { border-color: rgba(248,247,244,0.15); color: rgba(248,247,244,0.8); }
.ct-header--solid .ct-header__topbar { border-color: rgba(15,15,15,0.08); color: rgba(15,15,15,0.7); }
.ct-header__top-inner { display: flex; align-items: center; justify-content: space-between; height: 36px; font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase; }
.ct-header__top-inner > div { display: flex; align-items: center; gap: 1.5rem; }
.ct-header__top-inner a { display: inline-flex; align-items: center; gap: 0.375rem; transition: color .3s; }
.ct-header__top-inner a:hover { color: var(--ct-brand); }
.ct-header__top-inner svg { width: 12px; height: 12px; }
.ct-header__main { display: flex; align-items: center; justify-content: space-between; gap: 1.5rem; height: 68px; }
@media (min-width: 768px) { .ct-header__main { height: 80px; } }
.ct-header__logo { display: inline-flex; align-items: center; gap: 0.75rem; }
.ct-header__logo img { height: 48px; width: auto; object-fit: contain; transition: filter .5s; }
.ct-header--transparent .ct-header__logo img { filter: drop-shadow(0 2px 10px rgba(0,0,0,0.45)); height: 52px; }
@media (min-width: 768px) {
  .ct-header__logo img { height: 56px; }
  .ct-header--transparent .ct-header__logo img { height: 60px; }
}
.ct-header__nav { display: none; position: relative; align-items: center; }
@media (min-width: 1024px) { .ct-header__nav { display: flex; } }
.ct-header__nav-item {
  display: inline-flex; align-items: center; gap: 0.25rem;
  padding: 0.75rem 1rem; font-size: 13px; font-weight: 500;
  text-transform: uppercase; letter-spacing: 0.16em;
  background: transparent; border: none; cursor: pointer; font-family: inherit;
  transition: color .3s;
}
.ct-header--transparent .ct-header__nav-item { color: rgba(248,247,244,0.9); }
.ct-header--transparent .ct-header__nav-item:hover { color: var(--ct-paper); }
.ct-header--solid .ct-header__nav-item { color: rgba(15,15,15,0.85); }
.ct-header--solid .ct-header__nav-item:hover { color: var(--ct-ink); }
.ct-header__nav-item--active { color: var(--ct-brand) !important; }
.ct-header__nav-item svg { width: 12px; height: 12px; transition: transform .3s; }
.ct-header__nav-item--active svg { transform: rotate(180deg); }
.ct-header__underline {
  pointer-events: none; position: absolute; bottom: -1px; height: 2px;
  background: var(--ct-brand); transition: all .3s ease-out; opacity: 0;
}
.ct-header__underline--visible { opacity: 1; }
.ct-header__actions { display: flex; align-items: center; gap: 0.5rem; }
@media (min-width: 768px) { .ct-header__actions { gap: 0.75rem; } }
.ct-header__cta {
  display: none;
  position: relative; align-items: center; overflow: hidden;
  border-radius: 6px; padding: 0.625rem 1.25rem;
  font-size: 13px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.14em;
  transition: all .3s;
}
@media (min-width: 640px) { .ct-header__cta { display: inline-flex; } }
.ct-header--transparent .ct-header__cta { background: var(--ct-brand); color: var(--ct-brand-foreground); }
.ct-header--transparent .ct-header__cta:hover { background: var(--ct-paper); color: var(--ct-ink); }
.ct-header--solid .ct-header__cta { background: var(--ct-ink); color: var(--ct-paper); }
.ct-header--solid .ct-header__cta:hover { background: var(--ct-brand); color: var(--ct-brand-foreground); }
.ct-header__cta .ct-btn__icon svg { width: 16px; height: 16px; }
.ct-header__burger {
  display: none; /* hidden by default on desktop */
  width: 40px; height: 40px;
  align-items: center; justify-content: center; border-radius: 6px;
  border: 1px solid; background: transparent; cursor: pointer;
  transition: all .3s;
}
@media (max-width: 1023.98px) { .ct-header__burger { display: inline-flex; } }
.ct-header--transparent .ct-header__burger { border-color: rgba(248,247,244,0.3); color: var(--ct-paper); }
.ct-header--transparent .ct-header__burger:hover { background: rgba(248,247,244,0.1); }
.ct-header--solid .ct-header__burger { border-color: var(--ct-border); color: var(--ct-ink); }
.ct-header--solid .ct-header__burger:hover { background: var(--ct-bone); }
.ct-header__burger svg { width: 20px; height: 20px; }

/* Mega panel */
.ct-mega {
  position: absolute; inset-inline: 0; top: 100%;
  display: none; overflow: hidden;
  border-top: 1px solid rgba(219,212,197,0.4);
  background: rgba(248,247,244,0.98); backdrop-filter: blur(24px);
  opacity: 0; transform: translateY(-8px); pointer-events: none;
  transition: all .3s;
}
@media (min-width: 1024px) { .ct-mega { display: block; } }
.ct-mega--open { opacity: 1; transform: translateY(0); pointer-events: auto; }
.ct-mega__inner { display: grid; grid-template-columns: 4fr 8fr; gap: 2.5rem; padding-block: 3rem; }
.ct-mega__side { padding-right: 2.5rem; border-right: 1px solid rgba(219,212,197,0.6); }
.ct-mega__side-icon { display: inline-flex; width: 48px; height: 48px; border-radius: 6px; background: rgba(198,163,91,0.12); color: var(--ct-brand); align-items: center; justify-content: center; }
.ct-mega__side-icon svg { width: 24px; height: 24px; }
.ct-mega__side-title { margin-top: 1.25rem; font-size: 1.5rem; font-weight: 600; letter-spacing: -0.02em; }
.ct-mega__side-blurb { margin-top: 0.75rem; font-size: 15px; line-height: 1.7; color: var(--ct-muted); max-width: 24rem; }
.ct-mega__cta { margin-top: 1.5rem; display: inline-flex; align-items: center; overflow: hidden; border-radius: 6px; background: var(--ct-ink); color: var(--ct-paper); padding: 0.625rem 1.25rem; font-size: 13px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.14em; transition: background .3s, color .3s; }
.ct-mega__cta:hover { background: var(--ct-brand); color: var(--ct-brand-foreground); }
.ct-mega__links { display: grid; grid-template-columns: 1fr 1fr; gap: 0.25rem 1.5rem; }
.ct-mega__link { display: block; padding: 1rem; border-radius: 6px; border: 1px solid transparent; transition: all .3s; }
.ct-mega__link:hover { border-color: var(--ct-border); background: var(--ct-cream); }
.ct-mega__link-head { display: flex; align-items: baseline; justify-content: space-between; gap: 0.75rem; }
.ct-mega__link-label { font-family: var(--ct-font-display); font-weight: 600; font-size: 15px; letter-spacing: -0.02em; }
.ct-mega__link-arrow { width: 16px; height: 16px; color: var(--ct-brand); opacity: 0; transform: translateX(-4px); transition: all .3s; }
.ct-mega__link:hover .ct-mega__link-arrow { opacity: 1; transform: translateX(0); }
.ct-mega__link-desc { margin-top: 0.25rem; font-size: 14px; color: var(--ct-muted); }

/* Mobile drawer */
.ct-drawer { position: fixed; inset: 0; z-index: 40; opacity: 0; pointer-events: none; transition: opacity .3s; }
@media (min-width: 1024px) { .ct-drawer { display: none; } }
.ct-drawer--open { opacity: 1; pointer-events: auto; }
.ct-drawer__backdrop { position: absolute; inset: 0; background: rgba(15,15,15,0.4); backdrop-filter: blur(4px); }
.ct-drawer__panel { position: absolute; inset-inline: 0; top: 68px; bottom: 0; background: var(--ct-paper); overflow-y: auto; }
.ct-drawer__inner { padding: 1.5rem; display: flex; flex-direction: column; gap: 0.5rem; }
.ct-drawer__group { border-bottom: 1px solid rgba(219,212,197,0.6); }
.ct-drawer__group-btn { width: 100%; display: flex; align-items: center; justify-content: space-between; padding-block: 1rem; background: transparent; border: none; cursor: pointer; font-family: inherit; color: inherit; }
.ct-drawer__group-title { display: flex; align-items: center; gap: 0.75rem; font-family: var(--ct-font-display); font-weight: 600; font-size: 1.125rem; letter-spacing: -0.02em; }
.ct-drawer__group-title svg { width: 20px; height: 20px; color: var(--ct-brand); }
.ct-drawer__group-arrow { width: 16px; height: 16px; transition: transform .3s; }
.ct-drawer__group--open .ct-drawer__group-arrow { transform: rotate(180deg); }
.ct-drawer__links { display: none; padding-bottom: 1rem; flex-direction: column; gap: 0.25rem; }
.ct-drawer__group--open .ct-drawer__links { display: flex; }
.ct-drawer__link { padding: 0.625rem 0.75rem; border-radius: 6px; font-size: 15px; font-weight: 500; }
.ct-drawer__link:hover { background: var(--ct-cream); }
.ct-drawer__link small { display: block; font-size: 12px; color: var(--ct-muted); margin-top: 2px; font-weight: 400; }
.ct-drawer__bottom { padding: 0.5rem 1.5rem 2.5rem; display: flex; flex-direction: column; gap: 0.75rem; }
.ct-drawer__bottom a { display: flex; align-items: center; justify-content: center; gap: 0.5rem; border-radius: 6px; padding: 1rem 1.5rem; font-size: 1rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.14em; }
.ct-drawer__bottom a:first-child { background: var(--ct-ink); color: var(--ct-paper); }
.ct-drawer__bottom a:last-child { border: 1px solid var(--ct-border); }

/* ===== Site Footer ===== */
.ct-footer { background: var(--ct-ink); color: var(--ct-paper); position: relative; overflow: hidden; }
.ct-footer__orb { position: absolute; bottom: -10rem; left: -10rem; width: 24rem; height: 24rem; border-radius: 999px; background: rgba(198,163,91,0.05); filter: blur(48px); pointer-events: none; }
.ct-footer__inner { padding-top: 5rem; padding-bottom: 2.5rem; position: relative; }
.ct-footer__grid { display: grid; grid-template-columns: 1fr; gap: 3rem; }
@media (min-width: 1024px) { .ct-footer__grid { grid-template-columns: 4fr 5fr 3fr; gap: 2.5rem; } }
.ct-footer__brand { display: flex; flex-direction: column; }
.ct-footer__brand > a { display: inline-block; margin-bottom: 0.25rem; }
.ct-footer__brand img { height: 72px !important; width: auto !important; }
.ct-footer__tag { margin-top: 2rem !important; color: rgba(248,247,244,0.7); font-size: 15.5px; line-height: 1.7; max-width: 28rem; }
.ct-footer__socials { margin-top: 2.25rem !important; display: flex; align-items: center; gap: 0.625rem; }
.ct-footer__social {
  display: inline-flex; width: 40px; height: 40px; border-radius: 999px;
  border: 1px solid rgba(248,247,244,0.18);
  align-items: center; justify-content: center;
  transition: all .3s;
}
.ct-footer__social:hover { background: var(--ct-brand); border-color: var(--ct-brand); color: var(--ct-brand-foreground); transform: translateY(-2px); }
.ct-footer__social svg { width: 15px; height: 15px; fill: currentColor; }
.ct-footer__cols { display: grid; grid-template-columns: repeat(2, 1fr); gap: 2rem; }
@media (min-width: 640px) { .ct-footer__cols { grid-template-columns: repeat(3, 1fr); } }
.ct-footer__col-title { font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase; color: rgba(248,247,244,0.45); font-weight: 500; }
.ct-footer__col ul { margin-top: 1rem; display: flex; flex-direction: column; gap: 0.625rem; }
.ct-footer__col a { font-size: 13.5px; color: rgba(248,247,244,0.75); transition: color .3s; }
.ct-footer__col a:hover { color: var(--ct-brand); }
.ct-footer__contact-title { font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase; color: rgba(248,247,244,0.45); font-weight: 500; }
.ct-footer__contact { margin-top: 1rem; display: flex; flex-direction: column; gap: 0.75rem; font-size: 14px; }
.ct-footer__contact a, .ct-footer__contact li { display: inline-flex; align-items: flex-start; gap: 0.625rem; color: rgba(248,247,244,0.9); }
.ct-footer__contact a:hover { color: var(--ct-brand); }
.ct-footer__contact svg { width: 14px; height: 14px; color: rgba(248,247,244,0.45); flex-shrink: 0; margin-top: 2px; }
.ct-footer__cta {
  margin-top: 1.5rem; display: inline-flex; align-items: center; overflow: hidden;
  border-radius: 6px; background: var(--ct-brand); color: var(--ct-brand-foreground);
  padding: 0.625rem 1.25rem; font-size: 12px; font-weight: 600;
  text-transform: uppercase; letter-spacing: 0.14em;
  transition: all .3s;
}
.ct-footer__cta:hover { background: var(--ct-paper); color: var(--ct-ink); }
.ct-footer__bottom {
  margin-top: 3.5rem; padding-top: 1.5rem;
  border-top: 1px solid rgba(248,247,244,0.1);
  display: flex; flex-direction: column; align-items: flex-start; justify-content: space-between;
  gap: 1rem;
}
@media (min-width: 640px) { .ct-footer__bottom { flex-direction: row; align-items: center; } }
.ct-footer__copy { font-size: 12px; color: rgba(248,247,244,0.45); }
.ct-footer__links { display: flex; flex-wrap: wrap; align-items: center; gap: 1.5rem; font-size: 12px; color: rgba(248,247,244,0.55); }
.ct-footer__links a { transition: color .3s; }
.ct-footer__links a:hover { color: var(--ct-brand); }

/* Extra spacing helpers used by data builders */
.ct-mt-14 { margin-top: 3.5rem; }
.ct-mt-10 { margin-top: 2.5rem; }
.ct-mt-6 { margin-top: 1.5rem; }
.ct-mt-3 { margin-top: 0.75rem; }
.ct-mt-4 { margin-top: 1rem; }
.ct-flex-wrap-gap { display: flex; flex-wrap: wrap; gap: 0.75rem; margin-top: 1rem; }
.ct-info-note { border-radius: 16px; border: 1px solid rgba(198,163,91,0.3); background: rgba(198,163,91,0.05); padding: 1.5rem; display: flex; align-items: flex-start; gap: 1rem; font-size: 15px; }
.ct-info-note svg { color: var(--ct-brand); width: 20px; height: 20px; flex-shrink: 0; margin-top: 2px; }

/* ===== FAQ ===== */
/* Both the heading block and the accordion list are width-capped, so we center
 * them inside the container instead of letting them sit left-aligned with a
 * dead zone on the right. Text inside questions/answers stays left-aligned for
 * readability — only the surrounding block centers. */
.elementor-widget-ct_faq .ct-heading { margin-inline: auto; text-align: center; }
.elementor-widget-ct_faq .ct-heading .ct-eyebrow { justify-content: center; }
.elementor-widget-ct_faq .ct-heading__intro { margin-inline: auto; }
.ct-faq { margin-top: 3rem; margin-inline: auto; max-width: 56rem; display: grid; gap: 0.75rem; }
.ct-faq__item { background: var(--ct-paper); border: 1px solid var(--ct-border); border-radius: 14px; padding: 0; transition: border-color .2s, background .2s; }
.ct-faq__item[open] { border-color: rgba(198,163,91,0.45); background: var(--ct-paper); }
.ct-faq__item + .ct-faq__item { margin-top: 0; }
.ct-faq__q {
  list-style: none; cursor: pointer;
  display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem;
  padding: 1.25rem 1.5rem;
  font-family: var(--ct-font-display); font-weight: 600; font-size: 1.0625rem; letter-spacing: -0.01em; line-height: 1.35;
  color: var(--ct-ink);
}
.ct-faq__q::-webkit-details-marker { display: none; }
.ct-faq__q::marker { content: ""; }
.ct-faq__icon { width: 18px; height: 18px; flex-shrink: 0; color: var(--ct-brand); margin-top: 4px; transition: transform .25s cubic-bezier(.2,.7,.2,1); }
.ct-faq__item[open] .ct-faq__icon { transform: rotate(180deg); }
.ct-faq__a { padding: 0 1.5rem 1.5rem; font-size: 15.5px; line-height: 1.7; color: rgba(15,15,15,0.82); }
.ct-faq__a > * + * { margin-top: 0.75rem; }
.ct-bg-cream .ct-faq__item, .ct-bg-bone .ct-faq__item { background: var(--ct-paper); }

/* =====================================================
 * Mobile redesign — floating burger FAB + centered logo
 * + redesigned full-screen drawer + better contact cards
 * Activates below the desktop breakpoint (1024px). The
 * existing desktop header stays untouched above 1024px.
 * ===================================================== */
@media (max-width: 1023.98px) {
  /* Header layout — center the logo, hide CTA + nav. The burger leaves the flex
   * row by going position:fixed (FAB), so .ct-header__actions ends up empty in
   * normal flow and the logo naturally centers between two equal-width gaps. */
  .ct-site .ct-header__main { justify-content: center !important; gap: 0 !important; }
  .ct-site .ct-header__cta { display: none !important; }
  .ct-site .ct-header__actions { position: static; width: 0; overflow: visible; }

  /* Floating action button burger — pinned bottom-right of viewport, z above drawer
   * so it acts as the close button when the drawer is open. */
  .ct-site .ct-header__burger {
    display: inline-flex !important;
    position: fixed !important;
    right: 1.25rem !important;
    bottom: 1.25rem !important;
    top: auto !important;
    width: 60px !important;
    height: 60px !important;
    border-radius: 999px !important;
    border: 0 !important;
    background: var(--ct-brand) !important;
    color: var(--ct-brand-foreground) !important;
    align-items: center !important;
    justify-content: center !important;
    box-shadow: 0 14px 36px -8px rgba(15,15,15,0.45),
                0 6px 12px -4px rgba(198,163,91,0.45),
                inset 0 0 0 1px rgba(255,255,255,0.08) !important;
    z-index: 60 !important;
    cursor: pointer !important;
    transition: transform .25s cubic-bezier(.2,.7,.2,1),
                background .2s, color .2s, box-shadow .25s !important;
  }
  .ct-site .ct-header__burger:hover { transform: translateY(-2px) scale(1.04); }
  .ct-site .ct-header__burger:active { transform: scale(0.94); }
  .ct-site .ct-header__burger svg { width: 24px !important; height: 24px !important; }
  /* Two-icon swap: menu when closed, X when open (set by JS via --active class). */
  .ct-site .ct-header__burger > span {
    display: inline-flex; align-items: center; justify-content: center;
    transition: opacity .2s, transform .2s;
  }
  .ct-site .ct-header__burger-close { position: absolute; opacity: 0; transform: rotate(-45deg); }
  .ct-site .ct-header__burger-open  { opacity: 1; transform: rotate(0); }
  .ct-site .ct-header__burger--active .ct-header__burger-open  { opacity: 0; transform: rotate(45deg); }
  .ct-site .ct-header__burger--active .ct-header__burger-close { opacity: 1; transform: rotate(0); }
  .ct-site .ct-header__burger--active {
    background: var(--ct-ink) !important;
    color: var(--ct-paper) !important;
  }

  /* Drawer — full-screen frosted panel that animates in. Covers header so the
   * centered logo isn't visible behind, leaving the burger FAB as the only
   * persistent UI when the menu is open. */
  .ct-drawer { z-index: 50; }
  .ct-drawer__backdrop {
    background: rgba(15,15,15,0.55) !important;
    backdrop-filter: blur(8px) saturate(140%);
    -webkit-backdrop-filter: blur(8px) saturate(140%);
  }
  .ct-drawer__panel {
    top: 0 !important; bottom: 0 !important;
    background: linear-gradient(168deg, var(--ct-paper) 0%, var(--ct-cream) 70%, var(--ct-bone) 100%) !important;
    transform: translateY(16px);
    opacity: 0;
    transition: transform .35s cubic-bezier(.2,.7,.2,1), opacity .25s ease;
    box-shadow: 0 -20px 60px rgba(15,15,15,0.18);
  }
  .ct-drawer--open .ct-drawer__panel { transform: translateY(0); opacity: 1; }
  .ct-drawer__inner {
    padding: 4.5rem 1.5rem 6.5rem !important; /* extra bottom for FAB clearance */
    max-width: 520px;
    margin: 0 auto;
    gap: 0.25rem;
  }
  /* Drawer brand strip at top — small logo for visual anchor */
  .ct-drawer__inner::before {
    content: "City Trafikskola";
    display: block;
    font-family: var(--ct-font-display);
    font-weight: 600;
    font-size: 0.75rem;
    letter-spacing: 0.3em;
    text-transform: uppercase;
    color: var(--ct-brand);
    text-align: center;
    padding-bottom: 1.75rem;
    margin-bottom: 0.5rem;
    border-bottom: 1px solid rgba(219,212,197,0.6);
  }
  .ct-drawer__group {
    border: 0 !important;
    margin: 0;
  }
  .ct-drawer__group-btn {
    width: 100%;
    padding: 1.125rem 0.25rem !important;
    font-family: var(--ct-font-display);
    border-radius: 0;
  }
  .ct-drawer__group-title {
    font-size: 1.125rem !important;
    font-weight: 600;
    letter-spacing: -0.01em;
    gap: 0.875rem !important;
  }
  .ct-drawer__group-title svg { width: 22px !important; height: 22px !important; color: var(--ct-brand); }
  .ct-drawer__group-arrow { color: var(--ct-muted); transition: transform .35s cubic-bezier(.2,.7,.2,1); }
  .ct-drawer__group--open .ct-drawer__group-arrow { transform: rotate(180deg); color: var(--ct-brand); }
  .ct-drawer__links {
    padding: 0.25rem 0 1rem 0.5rem !important;
    gap: 0.125rem !important;
    border-left: 2px solid rgba(198,163,91,0.25);
    margin-left: 0.5rem;
  }
  .ct-drawer__link {
    padding: 0.875rem 1rem !important;
    border-radius: 10px;
    font-size: 0.95rem !important;
    font-weight: 500;
    transition: background .15s ease, transform .12s ease;
  }
  .ct-drawer__link:active { transform: scale(0.98); background: var(--ct-bone); }
  .ct-drawer__link small {
    display: block;
    margin-top: 3px !important;
    font-size: 12.5px !important;
    color: var(--ct-muted);
  }
  /* Bottom CTAs inside drawer — pin to bottom of viewport-respecting safe area. */
  .ct-drawer__bottom {
    padding: 1.25rem 1.5rem 1.5rem !important;
    background: rgba(15,15,15,0.04);
    border-top: 1px solid rgba(219,212,197,0.6);
    backdrop-filter: blur(4px);
  }
  .ct-drawer__bottom a {
    padding: 1rem 1.5rem !important;
    border-radius: 10px !important;
    font-size: 0.95rem !important;
    letter-spacing: 0.12em;
  }
  .ct-drawer__bottom a:first-child {
    background: var(--ct-brand) !important;
    color: var(--ct-brand-foreground) !important;
    box-shadow: 0 8px 18px -4px rgba(198,163,91,0.45);
  }
  .ct-drawer__bottom a:last-child {
    background: transparent;
    color: var(--ct-ink);
    border: 1px solid var(--ct-border) !important;
  }

  /* Contact strip — mobile cards: a horizontal layout with icon left, text right
   * makes each card scannable in one glance instead of stacking icon-on-top.
   * Bigger touch targets, less wasted vertical space. */
  .ct-cs__grid { gap: 0.75rem; background: transparent; border: 0; border-radius: 0; padding: 0 0.25rem; }
  .ct-cs__card {
    padding: 1.5rem 1.25rem !important;
    border-radius: 14px;
    background: rgba(248,247,244,0.04);
    border: 1px solid rgba(248,247,244,0.08);
    display: grid !important;
    grid-template-columns: auto 1fr;
    column-gap: 1.125rem;
    row-gap: 0.125rem;
    align-items: center;
  }
  .ct-cs__card .ct-cs__icon {
    grid-row: 1 / 4;
    align-self: center;
    width: 44px; height: 44px;
  }
  .ct-cs__card .ct-cs__label { margin-top: 0 !important; font-size: 10.5px; }
  .ct-cs__card .ct-cs__big { margin-top: 0.125rem !important; font-size: 1.125rem; line-height: 1.25; }
  .ct-cs__card .ct-cs__big--text { font-size: 0.95rem !important; word-break: break-word; }
  .ct-cs__card .ct-cs__sub { margin-top: 0.125rem !important; font-size: 12.5px; }
}
