/* Generated by LZK Studio build · LZK_STUDIO_v7.8 · source modules listed in config/css-bundles.json */
/* LZK STUDIO · Core tokens, spacing and base text rendering · v6.5 */
:root {
  --lzk-type-functional-micro: clamp(.6875rem, .675rem + .06vw, .71875rem);
  --lzk-type-caption: clamp(.75rem, .73rem + .08vw, .82rem);
  --lzk-type-small: clamp(.84rem, .81rem + .13vw, .95rem);
  --lzk-type-body: clamp(1rem, .97rem + .12vw, 1.08rem);
  --lzk-type-lead: clamp(1.12rem, 1.04rem + .32vw, 1.34rem);
  --lzk-type-card: clamp(1.42rem, 1.24rem + .75vw, 1.95rem);
  --lzk-type-section: clamp(2.18rem, 1.72rem + 2.2vw, 3.60rem);
  --lzk-type-hero: clamp(2.90rem, 2.10rem + 3.8vw, 5rem);

  --lzk-leading-body: 1.55;
  --lzk-leading-lead: 1.44;
  --lzk-leading-card: 1.06;
  --lzk-leading-section: .96;
  --lzk-leading-hero: .90;

  /* Phase 12 · semantic typography aliases.
     These map approved roles onto the existing scale without changing service skins. */
  --lzk-role-kicker-size: var(--lzk-type-caption);
  --lzk-role-kicker-leading: 1.30;
  --lzk-role-kicker-tracking: .14em;
  --lzk-role-hero-title-size: clamp(2.65rem, 5vw, 4.9rem);
  --lzk-role-hero-title-leading: var(--lzk-leading-hero);
  --lzk-role-hero-title-tracking: -.050em;
  --lzk-role-lead-size: var(--lzk-type-lead);
  --lzk-role-lead-leading: var(--lzk-leading-lead);
  --lzk-role-section-title-size: clamp(2rem, 3.6vw, 3.5rem);
  --lzk-role-section-title-leading: var(--lzk-leading-section);
  --lzk-role-section-title-tracking: -.038em;
  --lzk-role-card-title-size: var(--lzk-type-card);
  --lzk-role-body-size: var(--lzk-type-body);
  --lzk-role-action-size: var(--lzk-type-small);

  /* Phase 12 · approved vertical rhythm. */
  --lzk-gap-hero-kicker-primary: 1.4rem;
  --lzk-gap-hero-title-lead: 2rem;
  --lzk-gap-lead-actions: 2rem;
  --lzk-gap-section-kicker-title: 1rem;

  --lzk-space-1: .5rem;
  --lzk-space-2: .75rem;
  --lzk-space-3: 1rem;
  --lzk-space-4: 1.5rem;
  --lzk-space-5: 2rem;
  --lzk-space-6: 3rem;
  --lzk-space-7: 4.5rem;
  --lzk-space-8: 6.5rem;
  --lzk-gutter: clamp(1rem, 3vw, 5rem);
  --lzk-reading-width: 72ch;
}

html {
  font-kerning: normal;
  text-rendering: optimizeLegibility;
}
body {
  font-optical-sizing: auto;
}
h1,h2,h3 {
  hyphens: none;
  overflow-wrap: normal;
  text-wrap: balance;
}
p,li,.faq-answer {
  text-wrap: pretty;
}

/* Phase 14 · shared component geometry aliases. */
:root {
  --lzk-geometry-compact-faq-padding-block: 1.25rem;
  --lzk-geometry-compact-faq-gap: 1rem;
  --lzk-geometry-compact-faq-icon-size: 1.8rem;
  --lzk-geometry-scope-card-padding: 1.45rem;
  --lzk-geometry-scope-row-padding-block: .7rem;
}

/* Studio home */
body[data-lzk-site="studio"] main .hero-title-split {
  /* v7.14 · Home keeps a modest hierarchy above service heroes without becoming a separate scale. */
  font-size: clamp(2.75rem, 5.20vw, 5.10rem) !important;
  line-height: var(--lzk-leading-hero) !important;
  letter-spacing: -.050em !important;
}
body[data-lzk-site="studio"] main .section-title,
body[data-lzk-site="studio"] main section h2 {
  font-size: var(--lzk-type-section) !important;
  line-height: var(--lzk-leading-section) !important;
  letter-spacing: -.038em !important;
}
body[data-lzk-site="studio"] main .lead,
body[data-lzk-site="studio"] main .hero-lead,
body[data-lzk-site="studio"] main .section-lead {
  max-width: min(var(--lzk-reading-width), 100%);
  font-size: var(--lzk-type-lead) !important;
  line-height: var(--lzk-leading-lead) !important;
}
body[data-lzk-site="studio"] main p,
body[data-lzk-site="studio"] main li {
  font-size: var(--lzk-type-body);
  line-height: var(--lzk-leading-body);
}
body[data-lzk-site="studio"] main .section-kicker,
body[data-lzk-site="studio"] main .eyebrow,
body[data-lzk-site="studio"] main .kicker,
body[data-lzk-site="studio"] main .code {
  font-size: var(--lzk-role-kicker-size) !important;
  line-height: var(--lzk-role-kicker-leading) !important;
}

/* Shared service hierarchy */
body[data-lzk-service] main .hero h1,
body[data-lzk-service] main .landing-h1 {
  max-width: 100%;
  font-size: var(--lzk-role-hero-title-size) !important;
  line-height: var(--lzk-role-hero-title-leading) !important;
  letter-spacing: var(--lzk-role-hero-title-tracking) !important;
}
body[data-lzk-service] main section:not(.hero) h2,
body[data-lzk-service] main .section-title {
  max-width: 100%;
  font-size: var(--lzk-role-section-title-size) !important;
  line-height: var(--lzk-role-section-title-leading) !important;
  letter-spacing: var(--lzk-role-section-title-tracking) !important;
}
body[data-lzk-service]:not([data-lzk-service="microspots"]) main section h3 {
  font-size: var(--lzk-role-card-title-size) !important;
  line-height: var(--lzk-leading-card) !important;
  letter-spacing: -.025em !important;
}
body[data-lzk-service]:not([data-lzk-service="microspots"]) main section p:not(.lead):not(.hero-lead):not(.section-lead):not(.cta-copy):not(.statement-copy):not(.intro-copy):not(.reference-note):not(.external-reference-note):not(.aspirational-note):not(.prototype-note):not(.box-disclaimer):not(.capacity-note),
body[data-lzk-service]:not([data-lzk-service="microspots"]) main section li,
body[data-lzk-service]:not([data-lzk-service="microspots"]) main .faq-answer {
  font-size: var(--lzk-role-body-size) !important;
  line-height: var(--lzk-leading-body) !important;
}
body[data-lzk-service] main .lead,
body[data-lzk-service] main .hero-lead,
body[data-lzk-service] main .section-lead,
body[data-lzk-service] main .cta-copy,
body[data-lzk-service] main #contacto p:not(.micro-label):not(.caps):not(.eyebrow) {
  max-width: min(var(--lzk-reading-width), 100%);
  font-size: var(--lzk-role-lead-size) !important;
  line-height: var(--lzk-role-lead-leading) !important;
  letter-spacing: normal !important;
}

/* Microspots · CORE prose only. Signature UI/display typography remains untouched. */
body[data-lzk-service="microspots"] main :is(
  .section-intro > p,
  .compression-copy > p:last-child,
  .difference-title > p:last-child,
  .final-cta > div:last-of-type > p
) {
  max-width: min(var(--lzk-reading-width), 100%);
  font-size: var(--lzk-role-lead-size) !important;
  line-height: var(--lzk-role-lead-leading) !important;
  letter-spacing: normal !important;
}
body[data-lzk-service="microspots"] main .scope-grid article > p,
body[data-lzk-service="microspots"] main .faq details > p {
  font-size: var(--lzk-role-body-size) !important;
  line-height: var(--lzk-leading-body) !important;
}
body[data-lzk-service="microspots"] main .promise-ceiling > p {
  font-size: var(--lzk-type-small) !important;
  line-height: 1.48 !important;
}
body[data-lzk-service="microspots"] main :is(.faq,.final-cta) .micro-label {
  font-size: var(--lzk-role-kicker-size) !important;
  line-height: var(--lzk-role-kicker-leading) !important;
  letter-spacing: var(--lzk-role-kicker-tracking) !important;
}

/* Functional microtype: readable without flattening decorative labels. */
body[data-lzk-service] main .caps,
body[data-lzk-service] main .eyebrow,
body[data-lzk-service] main .section-kicker,
body[data-lzk-service] main .fit-code,
body[data-lzk-service] main .time-code,
body[data-lzk-service] main .check-code,
body[data-lzk-service] main .console-title,
body[data-lzk-service] main .console-code,
body[data-lzk-service] main .status-chip,
body[data-lzk-service] main .phone-label,
body[data-lzk-service] main .mix-code,
body[data-lzk-service] main .capacity-tag,
body[data-lzk-service] main .aspirational-card-head,
body[data-lzk-service] main .aspirational-card-copy span {
  font-size: var(--lzk-type-caption) !important;
  line-height: 1.3 !important;
}
body[data-lzk-service] main .reference-note,
body[data-lzk-service] main .external-reference-note,
body[data-lzk-service] main .aspirational-note,
body[data-lzk-service] main .prototype-note,
body[data-lzk-service] main .box-disclaimer,
body[data-lzk-service] main .capacity-note {
  font-size: var(--lzk-type-small) !important;
  line-height: 1.48 !important;
}
body[data-lzk-service] main .btn,
body[data-lzk-service] main .nav-cta,
body[data-lzk-service] main .faq-item button,
body[data-lzk-service="microspots"] main .hero-actions .button,
body[data-lzk-service="microspots"] main .final-cta a {
  min-height: 44px;
  font-size: var(--lzk-role-action-size) !important;
  line-height: 1.2 !important;
}
body[data-lzk-service] main button,
body[data-lzk-service] main .filter {
  font-size: var(--lzk-type-small);
}
body[data-lzk-service] .lzk-service-footer__meta,
body[data-lzk-service] .lzk-service-footer__return {
  font-size: var(--lzk-type-caption) !important;
  line-height: 1.35 !important;
}

/* Phase 12 · approved CORE role rhythm.
   These selectors govern relationships between semantic roles, not service skins. */

/* Hero Kicker → Primary Visual. Infovideos intentionally uses its signature .hero-title
   as the primary visual before the semantic H1. */
body[data-lzk-service] main .hero-copy > :is(.caps,.eyebrow,.hero-kicker) {
  letter-spacing: var(--lzk-role-kicker-tracking) !important;
}
body[data-lzk-service] main .hero-copy > :is(.caps,.eyebrow,.hero-kicker):has(+ :is(h1,.landing-h1,.hero-title)) {
  margin-bottom: var(--lzk-gap-hero-kicker-primary) !important;
}
body[data-lzk-service] main .hero-copy > :is(.caps,.eyebrow,.hero-kicker) + :is(h1,.landing-h1,.hero-title) {
  margin-top: 0 !important;
}

/* Hero Title → Lead. */
body[data-lzk-service] main .hero-copy > :is(h1,.landing-h1) {
  margin-bottom: 0 !important;
}
body[data-lzk-service] main .hero-copy > :is(h1,.landing-h1) + :is(.lead,.hero-lead) {
  margin-top: var(--lzk-gap-hero-title-lead) !important;
}

/* Lead → Actions. This was already 2rem in 8/8 and is now contractual. */
body[data-lzk-service] main .hero-copy > :is(.lead,.hero-lead) + .hero-actions {
  margin-top: var(--lzk-gap-lead-actions) !important;
}

/* Section Kicker → Section Title. Only true adjacent kicker/title pairs are targeted;
   labels inside signature components remain untouched. */
body[data-lzk-service] main section:not(.hero) :is(.caps,.eyebrow,.section-kicker):has(+ :is(h2,.section-title)) {
  margin-bottom: 0 !important;
  letter-spacing: var(--lzk-role-kicker-tracking) !important;
}
body[data-lzk-service] main section:not(.hero) :is(.caps,.eyebrow,.section-kicker) + :is(h2,.section-title) {
  margin-top: var(--lzk-gap-section-kicker-title) !important;
}

/* Editorial statements that are not coded as H2. */
body[data-lzk-service] main .statement-copy,
body[data-lzk-service] main .intro-copy {
  max-width: 100%;
  font-size: clamp(2.1rem, 4vw, 4rem) !important;
  line-height: .96 !important;
  letter-spacing: -.030em !important;
}
body[data-lzk-service] main .sibling h3 {
  font-size: clamp(2rem, 3.2vw, 3rem) !important;
  line-height: .96 !important;
  letter-spacing: -.038em !important;
}

/* Explicit service licences */
body[data-lzk-service="microspots"] {
  --lzk-type-hero: clamp(2.90rem, 2.10rem + 3.8vw, 5rem);
  --lzk-type-section: clamp(2.18rem, 1.72rem + 2.2vw, 3.60rem);
}
body[data-lzk-service="start"] main .hero h1 .base {
  font-size: .34em !important;
  line-height: 1.12 !important;
  letter-spacing: -.025em !important;
}
body[data-lzk-service="72h-express"] main section.statement h2 {
  font-size: clamp(2.55rem, 4.4vw, 4.25rem) !important;
  line-height: .90 !important;
  letter-spacing: -.040em !important;
}

/* Keyboard clarity across home and landings. */
:where(a,button,input,textarea,select,[tabindex]):focus-visible {
  outline: 3px solid currentColor;
  outline-offset: 4px;
}

@media (max-width: 760px) {
  body[data-lzk-site="studio"] main .hero-title-split,
  body[data-lzk-service] main .hero h1,
  body[data-lzk-service] main .landing-h1 {
    line-height: .93 !important;
    letter-spacing: -.040em !important;
  }
  body[data-lzk-site="studio"] main .section-title,
  body[data-lzk-site="studio"] main section h2,
  body[data-lzk-service] main section:not(.hero) h2,
  body[data-lzk-service] main .section-title {
    line-height: .99 !important;
    letter-spacing: -.028em !important;
  }
  body[data-lzk-service="ivem"] main .statement-copy {
    font-size: clamp(1.72rem, 7.45vw, 2rem) !important;
    line-height: 1.02 !important;
    letter-spacing: -.015em !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  :where(*, *::before, *::after) {
    scroll-behavior: auto !important;
  }
}

/* LZK Studio · accessibility and resilient reflow contracts · v7.0 */
html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

:where(.legal-card, .modal-card, .service-modal-dialog, .reel-modal-dialog) {
  overflow-wrap: break-word;
}

:where(a[href^="mailto:"], .legal-card a) {
  overflow-wrap: anywhere;
}

:where(button, [role="button"], a.btn, a.button, .card-cta) {
  touch-action: manipulation;
}

video[data-lzk-lazy-video]:not([data-lzk-hydrated="true"]) {
  background: #111 center / cover no-repeat;
}

@media(max-width:380px) {
  :where(.container, .wrap, .container-narrow) {
    min-width: 0;
  }
  :where(.btn, .button, .nav-cta) {
    max-width: 100%;
    white-space: normal;
    text-align: center;
  }
}

@media (prefers-contrast: more) {
  :where(a, button, input, textarea, select, [tabindex]):focus-visible {
    outline-width: 4px;
  }
}

@media (forced-colors: active) {
  :where(a, button, input, textarea, select, [tabindex]):focus-visible {
    outline: 3px solid CanvasText;
    outline-offset: 4px;
  }
  :where(.btn, .button, .nav-cta, .card-cta) {
    border: 1px solid ButtonText;
  }
}

@media (prefers-reduced-motion: reduce) {
  .lzk-skip-link,
  :where(video, iframe) {
    scroll-behavior: auto;
  }
}

/* LZK Studio · Phase 14 · Visual Geometry & Component Consistency · v7.8
   Only semantically equivalent shared components are normalized here.
   Service skins, macro rhythm and signature components remain explicit variants. */

/* Compact FAQ family: 72h / Infovideos / IVeM / Launch Kit / Pack Agencia / START.
   Explainers and Microspots are licensed Editorial FAQ variants and are excluded. */
body[data-lzk-service]:not([data-lzk-service="explainers"]):not([data-lzk-service="microspots"])
  main .faq-item > button {
  box-sizing: border-box;
  padding-top: var(--lzk-geometry-compact-faq-padding-block) !important;
  padding-bottom: var(--lzk-geometry-compact-faq-padding-block) !important;
  gap: var(--lzk-geometry-compact-faq-gap) !important;
  align-items: center !important;
}
body[data-lzk-service]:not([data-lzk-service="explainers"]):not([data-lzk-service="microspots"])
  main .faq-item > button .plus {
  flex: 0 0 auto;
  font-size: var(--lzk-geometry-compact-faq-icon-size) !important;
  line-height: 1 !important;
}
body[data-lzk-service]:not([data-lzk-service="explainers"]):not([data-lzk-service="microspots"])
  main .faq-item.open > .faq-answer {
  padding-bottom: var(--lzk-geometry-compact-faq-padding-block) !important;
}

/* Scope Card family: same semantic component in 72h / IVeM / Launch Kit / START.
   Height, background, border treatment and grid composition remain service variants. */
body[data-lzk-service] main .scope-card {
  padding: var(--lzk-geometry-scope-card-padding) !important;
}
body[data-lzk-service] main .scope-card li {
  padding-top: var(--lzk-geometry-scope-row-padding-block) !important;
  padding-bottom: var(--lzk-geometry-scope-row-padding-block) !important;
}

/* Microspots shell geometry is owned by service-shell.css because its header/footer DOM
   differs from the seven .wrap-based landings. */

/* Microspots shell closure. The landing keeps its bespoke border/color/readout skin;
   geometry is normalized here because typography-system.css loads after its modal CSS. */
body[data-lzk-service="microspots"] footer.lzk-service-footer {
  min-height: 0 !important;
  padding: 0 !important;
}
body[data-lzk-service="microspots"] .lzk-service-footer__inner {
  min-height: 84px !important;
  width: min(calc(100% - 40px), 1460px);
  margin-inline: auto;
}
body[data-lzk-service="microspots"] .topbar {
  min-height: 73px !important;
  height: 73px !important;
  max-height: 73px !important;
}
@media (min-width: 761px) {
  html[data-lzk-embedded="true"] body[data-lzk-service="microspots"] .topbar {
    min-height: 65px !important;
    height: 65px !important;
    max-height: 65px !important;
  }
  html[data-lzk-embedded="true"] body[data-lzk-service="microspots"] .hero {
    min-height: calc(100svh - 64px) !important;
  }
  html[data-lzk-embedded="true"] body[data-lzk-service="microspots"] .lzk-service-footer__inner {
    width: min(
      calc(100% - var(--lzk-embed-inline-gutter, 2.75rem) - var(--lzk-embed-inline-gutter, 2.75rem)),
      var(--lzk-embed-content-max, 1280px)
    );
  }
}
@media (max-width: 760px) {
  html[data-lzk-embedded="true"] body[data-lzk-service="microspots"] .hero {
    min-height: calc(100svh - 72px) !important;
  }
  body[data-lzk-service="microspots"] .lzk-service-footer__inner {
    min-height: 104px !important;
    width: calc(100% - 20px);
    max-width: 100%;
    padding: 1.45rem 0;
  }
}

/* LZK Studio · v7.9 · approved hero composition micro-adjustments.
   These are explicit service licences: content composition only; CORE scale/rhythm remains unchanged. */
body[data-lzk-service="72h-express"] main .hero-title {
  text-transform: none !important;
  white-space: nowrap;
  text-align: left !important;
}
body[data-lzk-service="72h-express"] main .hero-title > .hero-line-72 {
  display: block !important;
  white-space: nowrap;
}
body[data-lzk-service="72h-express"] main .hero-title .hours {
  display: inline !important;
  margin-left: 0 !important;
}

body[data-lzk-service="ivem"] main .hero-title,
body[data-lzk-service="launch-kit"] main .hero-title {
  text-align: left !important;
}
body[data-lzk-service="ivem"] main .hero-title .motion,
body[data-lzk-service="launch-kit"] main .hero-title .kit {
  margin-left: 0 !important;
}
body[data-lzk-service="launch-kit"] main .hero-title .kit {
  font-weight: 900 !important;
}

body[data-lzk-service="start"] main .hero-title .base {
  max-width: none !important;
}
body[data-lzk-service="start"] main .hero-title .base > span {
  display: block !important;
  white-space: nowrap;
}


/* IVeM licensed two-line Hero lockup. */
body[data-lzk-service="ivem"] main .hero-title > span {
  white-space: nowrap;
}
@media (max-width: 760px) {
  body[data-lzk-service="ivem"] main .hero h1.hero-title {
    font-size: min(var(--lzk-role-hero-title-size), 10.82vw) !important;
  }
}
@media (max-width: 392px) {
  body[data-lzk-service="ivem"] main .hero h1.hero-title {
    font-size: 10.82vw !important;
  }
}
