/* =========================================================
   LIVEOP WEBSITE, BASE
   Reset, typography, layout primitives, reveal, utilities.
   ========================================================= */

*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

body{
  font-family:var(--font-sans);
  font-size:var(--fs-body);
  line-height:var(--lh-relaxed);
  color:var(--fg);
  background:var(--bg);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}

img,svg,video{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer}
::selection{background:var(--brand-purple);color:#fff}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:var(--r-sm)}

/* ---------- TYPOGRAPHY ---------- */
h1,h2,h3,h4,h5{font-family:var(--font-sans);color:var(--fg);text-wrap:balance}

.display{
  font-weight:300;font-size:var(--fs-display);
  line-height:var(--lh-tight);letter-spacing:var(--ls-tight);
}
h1,.h1{font-weight:500;font-size:var(--fs-h1);line-height:var(--lh-tight);letter-spacing:var(--ls-tight)}
h2,.h2{font-weight:500;font-size:var(--fs-h2);line-height:var(--lh-snug);letter-spacing:var(--ls-snug)}
h3,.h3{font-weight:500;font-size:var(--fs-h3);line-height:var(--lh-snug);letter-spacing:var(--ls-snug)}
h4,.h4{font-weight:600;font-size:var(--fs-h4);line-height:var(--lh-snug)}
h5,.h5{font-weight:600;font-size:var(--fs-h5);line-height:var(--lh-normal)}

p{font-weight:400;font-size:var(--fs-body);line-height:var(--lh-relaxed)}
.lead{font-size:var(--fs-lead);line-height:var(--lh-relaxed);color:var(--fg-muted)}
.small{font-size:var(--fs-small);line-height:var(--lh-normal);color:var(--fg-muted)}
.caption{font-size:var(--fs-meta);line-height:var(--lh-normal);color:var(--fg-subtle)}
strong,b{font-weight:500;color:var(--fg)}
.muted{color:var(--fg-muted)}
.subtle{color:var(--fg-subtle)}

/* Eyebrow, sentence case, accent color does the work (not caps).
   Per LIVEOP brand: uppercase is reserved for brand/product names. */
.eyebrow{
  display:inline-flex;align-items:center;gap:12px;
  font-size:var(--fs-eyebrow);font-weight:500;letter-spacing:.02em;
  color:var(--accent);
}
.eyebrow::before{content:"";width:22px;height:1.5px;background:currentColor;border-radius:2px;opacity:.85}
.eyebrow--center{justify-content:center}
.eyebrow--plain::before{display:none}

/* Gradient accent runs */
.gold-text{background:var(--brand-gold-gradient);-webkit-background-clip:text;background-clip:text;color:transparent}
.accent-text{color:var(--accent)}
.hero-gradient-num{
  background:linear-gradient(180deg,#fff 28%,var(--brand-purple-bright));
  -webkit-background-clip:text;background-clip:text;color:transparent;
}

/* Mono / ops labels */
.mono{font-family:var(--font-mono);font-size:var(--fs-micro);letter-spacing:.02em}

/* Inline SVG icon spans (filled by icons.js) */
.ico{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:1.3em;height:1.3em;line-height:0}
.ico svg{width:100%;height:100%;display:block}
.metric{font-variant-numeric:tabular-nums lining-nums;letter-spacing:var(--ls-snug)}

/* ---------- LAYOUT PRIMITIVES ---------- */
.wrap{max-width:var(--maxw);margin-inline:auto;padding-inline:var(--gutter)}
.wrap--narrow{max-width:var(--maxw-narrow)}
.section{position:relative;padding-block:var(--section-y);background:var(--bg);color:var(--fg)}
.section--flush-top{padding-top:0}
.section--tight{padding-block:clamp(48px,6vw,88px)}
.divider{border:0;border-top:1px solid var(--hairline)}

.grid{display:grid;gap:var(--sp-6)}
.cols-2{grid-template-columns:repeat(2,1fr)}
.cols-3{grid-template-columns:repeat(3,1fr)}
.cols-4{grid-template-columns:repeat(4,1fr)}
.stack{display:flex;flex-direction:column}
.row{display:flex;align-items:center}
.center{text-align:center}
.mx-auto{margin-inline:auto}

/* Split layout (copy + media) */
.split{display:grid;grid-template-columns:1fr 1.05fr;gap:clamp(40px,6vw,96px);align-items:center}
.split--reverse .split__media{order:-1}

/* ---------- SCROLL REVEAL ---------- */
.reveal{transition:opacity var(--dur-ambient) var(--ease),transform var(--dur-ambient) var(--ease)}
/* Progressive enhancement (LIVEOP.Website): hidden only once JavaScript runs, see docs/migration-notes.md */
html.js .reveal:not(.in){opacity:0;transform:translateY(24px)}
.reveal.in{opacity:1;transform:none}
.reveal.d1{transition-delay:.08s}
.reveal.d2{transition-delay:.16s}
.reveal.d3{transition-delay:.24s}
.reveal.d4{transition-delay:.32s}
.reveal.d5{transition-delay:.40s}
@media (prefers-reduced-motion:reduce){.reveal,html.js .reveal:not(.in){opacity:1;transform:none}}

/* ---------- PROSE (legal / long-form) ---------- */
.prose{max-width:76ch}
.prose h2{font-size:var(--fs-h3);margin-top:var(--sp-12);margin-bottom:var(--sp-3)}
.prose h3{font-size:var(--fs-h5);margin-top:var(--sp-8);margin-bottom:var(--sp-2)}
.prose p{color:var(--fg-muted);margin-bottom:var(--sp-4);line-height:1.65}
.prose ul{color:var(--fg-muted);margin:0 0 var(--sp-4) 1.2em;display:flex;flex-direction:column;gap:8px}
.prose li{padding-left:4px}
.prose a{color:var(--accent);text-decoration:underline;text-underline-offset:2px}
.prose strong{color:var(--fg)}

/* ---------- RESPONSIVE ---------- */
@media (max-width:960px){
  .split,.split--reverse{grid-template-columns:1fr;gap:48px}
  .split--reverse .split__media{order:0}
  .cols-3,.cols-4{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:620px){
  .cols-2,.cols-3,.cols-4{grid-template-columns:1fr}
}

/* ---------- UTILITIES ---------- */
.mt-2{margin-top:var(--sp-2)}.mt-4{margin-top:var(--sp-4)}.mt-6{margin-top:var(--sp-6)}
.mt-8{margin-top:var(--sp-8)}.mt-12{margin-top:var(--sp-12)}.mt-16{margin-top:var(--sp-16)}
.maxw-52{max-width:52ch}.maxw-58{max-width:58ch}.maxw-62{max-width:62ch}
.hidden{display:none}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
