/* ============================================================
   Reroll Rescue Studio — landing styles
   Category: ai-image-tools  →  brand violet + coral accent
   Tokens mirror the inline critical block in index.html <head>.
   ============================================================ */

:root {
  --font-body: ui-sans-serif, system-ui, -apple-system, "Segoe UI Variable", "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --font-display: -apple-system, "SF Pro Display", "Segoe UI Variable Display", "Segoe UI", ui-sans-serif, system-ui, Roboto, Arial, sans-serif;
  --font-mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;

  --weight-regular:400; --weight-medium:500; --weight-semibold:600; --weight-bold:700;

  --text-h1: clamp(2.1rem, 5vw, 3.75rem);
  --text-h2: clamp(1.75rem, 3.5vw, 2.75rem);
  --text-h3: 1.375rem;
  --text-body-lg: 1.125rem; --text-body: 1rem; --text-small: 0.875rem; --text-micro: 0.75rem;

  --tracking-h1:-0.03em; --tracking-h2:-0.02em; --tracking-eyebrow:0.14em;
  --leading-tight:1.06; --leading-snug:1.15; --leading-normal:1.5; --leading-relaxed:1.65;

  --color-brand:#7c3aed; --color-brand-dark:#5b21b6; --color-brand-light:#9d5cf5; --color-brand-soft:#f0e9ff;
  --color-accent:#f2705b; --color-accent-dark:#c9412c; --color-accent-soft:#ffe7e1;

  --color-accent-blue:#2563eb; --color-accent-teal:#0d9488; --color-accent-coral:#f2705b;
  --color-accent-amber:#d97706; --color-accent-violet:#7c3aed; --color-accent-emerald:#059669;

  --color-neutral-0:#ffffff; --color-neutral-50:#fafbfc; --color-neutral-100:#f4f6f9;
  --color-neutral-200:#e6eaf1; --color-neutral-300:#cdd4de; --color-neutral-400:#99a3b4;
  --color-neutral-500:#6b7385; --color-neutral-600:#4b5262; --color-neutral-700:#363b48;
  --color-neutral-800:#22262f; --color-neutral-900:#12141a; --color-neutral-950:#08090c;

  --color-surface: var(--color-neutral-0);
  --color-surface-alt: var(--color-neutral-50);
  --color-surface-tinted: color-mix(in oklab, var(--color-brand) 4%, var(--color-neutral-0));
  --color-surface-inverse: var(--color-neutral-900);

  --color-text-primary: var(--color-neutral-900);
  --color-text-secondary: var(--color-neutral-700);
  --color-text-muted: var(--color-neutral-500);
  --color-text-inverse: var(--color-neutral-0);
  --color-text-brand: var(--color-brand-dark);
  --color-border: var(--color-neutral-200);
  --color-border-strong: var(--color-neutral-300);

  --gradient-brand: linear-gradient(135deg, var(--color-brand-light) 0%, var(--color-brand) 55%, var(--color-brand-dark) 100%);
  --gradient-hero-fade: linear-gradient(180deg, var(--color-surface-tinted) 0%, var(--color-surface) 100%);
  --gradient-mesh-1: radial-gradient(60% 60% at 20% 10%, color-mix(in oklab, var(--color-brand) 22%, transparent), transparent 70%),
                     radial-gradient(50% 50% at 90% 30%, color-mix(in oklab, var(--color-accent) 18%, transparent), transparent 70%);
  --gradient-mesh-2: radial-gradient(45% 60% at 82% 88%, color-mix(in oklab, var(--color-brand-light) 24%, transparent), transparent 70%),
                     radial-gradient(40% 40% at 12% 82%, color-mix(in oklab, var(--color-accent) 20%, transparent), transparent 70%);

  --shadow-xs: 0 1px 2px rgba(15,23,42,.04);
  --shadow-sm: 0 1px 2px rgba(15,23,42,.04), 0 4px 8px -4px rgba(15,23,42,.06);
  --shadow-md: 0 2px 4px rgba(15,23,42,.04), 0 8px 20px -8px rgba(15,23,42,.12);
  --shadow-lg: 0 4px 12px rgba(15,23,42,.06), 0 20px 40px -20px rgba(15,23,42,.18);
  --shadow-brand-glow: 0 10px 28px -12px color-mix(in oklab, var(--color-brand) 55%, transparent);

  --radius-sm:6px; --radius-md:10px; --radius-lg:16px; --radius-2xl:24px; --radius-pill:999px;

  --space-1:.25rem; --space-2:.5rem; --space-3:1rem; --space-4:1.5rem; --space-5:2rem; --space-6:3rem; --space-7:4rem;
  --pad-section-sm: clamp(2rem, 4vw, 3rem);
  --pad-section: clamp(3rem, 6vw, 5rem);
  --pad-section-lg: clamp(4rem, 8vw, 7rem);

  --duration-fast:150ms; --duration-med:240ms; --duration-slow:400ms;
  --ease-out-quart: cubic-bezier(.25,1,.5,1);
}

/* ─── Utilities ─── */
.center { text-align: center; }
.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; }

.section { padding-block: var(--pad-section); position: relative; }
.section--sm { padding-block: var(--pad-section-sm); }
.section-alt { background: var(--color-surface-alt); }
.section-tinted { background: var(--color-surface-tinted); }
.section-inverse { background: var(--color-surface-inverse); color: var(--color-text-inverse); }
.section-inverse h2 { color: var(--color-text-inverse); }

.section-lede { margin-top: var(--space-4); font-size: var(--text-body-lg); color: var(--color-text-secondary); line-height: var(--leading-relaxed); }
.center .section-lede { margin-inline: auto; max-width: 60ch; }
.section-lede--on-dark { color: color-mix(in oklab, var(--color-text-inverse) 82%, transparent); }
.on-dark-body { margin-top: var(--space-4); color: color-mix(in oklab, var(--color-text-inverse) 72%, transparent); line-height: var(--leading-relaxed); }

.section-head--center { text-align:center; max-width:60ch; margin-inline:auto; margin-bottom: var(--space-6); }
.section-head--left { text-align:left; max-width:52ch; margin-bottom: var(--space-6); }
.eyebrow--on-dark { color: var(--color-brand-light); }

/* ─── Buttons (shared decl in critical CSS) ─── */
.btn-primary:active { transform: translateY(0); }
.btn-primary--on-dark:focus-visible { outline-color: var(--color-text-inverse); }

/* ─── Cards ─── */
.card {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: var(--space-4);
  box-shadow: var(--shadow-xs);
  transition: transform var(--duration-med) var(--ease-out-quart), box-shadow var(--duration-med) var(--ease-out-quart);
}
.card--elevated { border-color: transparent; box-shadow: var(--shadow-md); }
.card:hover, .card--elevated:hover { transform: translateY(-2px); box-shadow: var(--shadow-lg); }

/* ─── Icon tiles ─── */
.icon-tile { display:inline-grid; place-items:center; width:44px; height:44px; border-radius: var(--radius-lg); background: var(--tile-bg); color: var(--tile-fg); flex:none; transition: transform var(--duration-med) var(--ease-out-quart); }
.icon-tile--blue    { --tile-bg: color-mix(in oklab, var(--color-accent-blue) 15%, var(--color-surface)); --tile-fg: var(--color-accent-blue); }
.icon-tile--teal    { --tile-bg: color-mix(in oklab, var(--color-accent-teal) 15%, var(--color-surface)); --tile-fg: var(--color-accent-teal); }
.icon-tile--coral   { --tile-bg: color-mix(in oklab, var(--color-accent-coral) 16%, var(--color-surface)); --tile-fg: var(--color-accent-dark); }
.icon-tile--amber   { --tile-bg: color-mix(in oklab, var(--color-accent-amber) 15%, var(--color-surface)); --tile-fg: var(--color-accent-amber); }
.icon-tile--violet  { --tile-bg: color-mix(in oklab, var(--color-accent-violet) 15%, var(--color-surface)); --tile-fg: var(--color-accent-violet); }
.icon-tile--emerald { --tile-bg: color-mix(in oklab, var(--color-accent-emerald) 15%, var(--color-surface)); --tile-fg: var(--color-accent-emerald); }

/* ─── Audience strip ─── */
.strip-title { font-size: clamp(1.4rem, 2.6vw, 1.9rem); }
.strip-sub { margin-top: var(--space-3); color: var(--color-text-secondary); max-width: 60ch; margin-inline: auto; }
.logo-strip--placeholder {
  margin-top: var(--space-5);
  border: 2px dashed var(--color-border-strong);
  background: var(--color-surface);
  border-radius: var(--radius-lg);
  padding: var(--space-5) var(--space-4);
  color: var(--color-text-muted);
}
.logo-strip--placeholder .placeholder-hint { font-style: italic; font-size: var(--text-small); margin:0; }

/* ─── Problem split (asymmetric two-column) ─── */
.split { display:grid; gap: clamp(1.5rem, 4vw, 3.5rem); }
@media (min-width: 900px) { .split { grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr); align-items:start; } }
.split__head h2 { margin-top: var(--space-1); }
.prose p { margin-top: var(--space-3); color: var(--color-text-secondary); line-height: var(--leading-relaxed); }
.prose p:first-child { margin-top:0; }
.callout {
  margin-top: var(--space-4) !important;
  padding: var(--space-4);
  border-left: 4px solid var(--color-brand);
  background: var(--color-brand-soft);
  border-radius: 0 var(--radius-md) var(--radius-md) 0;
  color: var(--color-text-primary) !important;
}

/* ─── Solution cards ─── */
.solution-cards {
  list-style:none; margin: var(--space-6) 0 0; padding:0;
  display:grid; gap: var(--space-4);
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
}
.solution-cards .card h3 { margin: var(--space-3) 0 var(--space-2); font-size: var(--text-h3); font-weight: var(--weight-semibold); }
.solution-cards .card p { color: var(--color-text-secondary); }

/* ─── Feature grid (icon-tile pattern) ─── */
.feature-grid { display:grid; gap: var(--space-5) var(--space-4); grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); }
.feature-item { display:grid; grid-template-columns: 48px 1fr; gap: var(--space-3); align-items:start; }
.feature-item:hover .icon-tile { transform: scale(1.05); }
.feature-item__body h3 { font-size: 1.0625rem; font-weight: var(--weight-semibold); }
.feature-item__body p { margin-top: var(--space-1); color: var(--color-text-secondary); font-size: var(--text-small); line-height: var(--leading-normal); }

/* ─── Why-now (inverse) mesh ─── */
.section-inverse { overflow:hidden; }
.section-inverse::before { content:""; position:absolute; inset:0; background: var(--gradient-mesh-2); opacity:.5; pointer-events:none; }
.section-inverse .container-narrow { position:relative; z-index:1; }

/* ─── Steps ─── */
.steps { list-style:none; margin: var(--space-6) 0 0; padding:0; display:grid; gap: var(--space-4); grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); counter-reset: step; }
.step { position:relative; background: var(--color-surface); border:1px solid var(--color-border); border-radius: var(--radius-lg); padding: var(--space-5) var(--space-4) var(--space-4); box-shadow: var(--shadow-sm); }
.step__num { display:inline-grid; place-items:center; width:40px; height:40px; border-radius: var(--radius-pill); background: var(--gradient-brand); color:#fff; font-weight: var(--weight-bold); font-family: var(--font-display); box-shadow: var(--shadow-brand-glow); }
.step h3 { margin: var(--space-3) 0 var(--space-2); font-size: var(--text-h3); font-weight: var(--weight-semibold); }
.step p { color: var(--color-text-secondary); font-size: var(--text-small); }

/* ─── Before / After split ─── */
.ba-split { display:grid; gap: var(--space-4); grid-template-columns: 1fr; }
@media (min-width: 800px) { .ba-split { grid-template-columns: 1fr 1fr; } }
.ba-card { border-radius: var(--radius-2xl); padding: var(--space-5); box-shadow: var(--shadow-md); }
.ba-card--before { background: var(--color-surface); border:1px solid var(--color-border); }
.ba-card--after { background: var(--gradient-brand); color: var(--color-text-inverse); box-shadow: var(--shadow-lg); }
.ba-card p { line-height: var(--leading-relaxed); }
.ba-card--before p { color: var(--color-text-secondary); }
.ba-tag { display:inline-block; font-size: var(--text-micro); font-weight: var(--weight-semibold); letter-spacing: .08em; text-transform: uppercase; padding: .25rem .7rem; border-radius: var(--radius-pill); margin-bottom: var(--space-3); }
.ba-tag--before { background: var(--color-neutral-100); color: var(--color-text-muted); }
.ba-tag--after { background: color-mix(in oklab, #fff 24%, transparent); color:#fff; }
.ba-foot { margin-top: var(--space-5); text-align:center; font-size: var(--text-body-lg); font-weight: var(--weight-semibold); color: var(--color-text-primary); }

/* ─── Testimonial placeholder ─── */
.testimonial--placeholder {
  margin: var(--space-5) auto 0;
  max-width: 560px;
  border: 2px dashed var(--color-border-strong);
  background: var(--color-surface-alt);
  padding: var(--space-6) var(--space-4);
  border-radius: var(--radius-lg);
  text-align:center;
  color: var(--color-text-muted);
}
.testimonial__hint { font-style: italic; font-size: var(--text-small); margin:0; }

/* ─── Who-it's-for grid ─── */
.who-grid { display:grid; gap: var(--space-4); grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); }
.who-card { background: var(--color-surface); border:1px solid var(--color-border); border-radius: var(--radius-lg); padding: var(--space-4); box-shadow: var(--shadow-xs); transition: transform var(--duration-med) var(--ease-out-quart), box-shadow var(--duration-med) var(--ease-out-quart); }
.who-card:hover { transform: translateY(-2px); box-shadow: var(--shadow-md); }
.who-card h3 { margin: var(--space-3) 0 var(--space-2); font-size: 1.0625rem; font-weight: var(--weight-semibold); }
.who-card p { color: var(--color-text-secondary); font-size: var(--text-small); }
.who-card--note { background: var(--color-neutral-100); border-style: dashed; }
.who-card--note h3 { margin-top:0; }

/* ─── Pricing ─── */
.pricing-lead { margin-top: var(--space-6); display:flex; justify-content:center; }
.pricing-card-featured { position:relative; padding:2px; background: var(--gradient-brand); border-radius: calc(var(--radius-2xl) + 2px); box-shadow: var(--shadow-lg); max-width: 460px; width:100%; }
.pricing-card-inner { background: var(--color-surface); border-radius: var(--radius-2xl); padding: var(--space-5); }
.pricing-ribbon { position:absolute; top:-12px; right:24px; z-index:1; padding:.25rem .75rem; background: var(--color-accent); color:#fff; font-size: var(--text-micro); font-weight: var(--weight-semibold); letter-spacing:.08em; text-transform:uppercase; border-radius: var(--radius-pill); box-shadow: var(--shadow-md); }
.price-plan { font-weight: var(--weight-semibold); color: var(--color-text-muted); font-size: var(--text-small); text-transform:uppercase; letter-spacing:.08em; }
.price-figure { margin-top: var(--space-2); display:flex; align-items:baseline; gap:.5rem; }
.price-amount { font-family: var(--font-display); font-size: clamp(2.75rem, 6vw, 3.5rem); font-weight: var(--weight-bold); letter-spacing: -0.03em; line-height:1; }
.price-term { color: var(--color-text-muted); font-size: var(--text-body); }
.price-list { list-style:none; margin: var(--space-4) 0; padding:0; display:grid; gap: var(--space-3); }
.price-list li { display:grid; grid-template-columns: 22px 1fr; gap: var(--space-2); align-items:start; font-size: var(--text-small); color: var(--color-text-secondary); }
.price-list svg { width:18px; height:18px; color: var(--color-accent-emerald); margin-top: 2px; }
.price-cta { width:100%; margin-top: var(--space-2); }
.price-note { margin-top: var(--space-3); text-align:center; font-size: var(--text-micro); color: var(--color-text-muted); }

.compare-wrap { margin-top: var(--space-7); }
.compare-lead { text-align:center; color: var(--color-text-secondary); margin-bottom: var(--space-4); font-size: var(--text-body-lg); }
.table-scroll { overflow-x:auto; border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); border:1px solid var(--color-border); }
.compare-table { width:100%; border-collapse: collapse; min-width: 640px; background: var(--color-surface); font-size: var(--text-small); }
.compare-table th, .compare-table td { padding: .85rem 1rem; text-align:center; border-bottom:1px solid var(--color-border); }
.compare-table thead th { background: var(--color-surface-tinted); font-family: var(--font-display); font-weight: var(--weight-semibold); color: var(--color-text-primary); }
.compare-table thead th:first-child { text-align:left; }
.compare-table tbody th[scope="row"] { text-align:left; font-weight: var(--weight-medium); color: var(--color-text-secondary); }
.compare-table .th-price { display:block; font-size: var(--text-micro); color: var(--color-brand-dark); font-weight: var(--weight-bold); margin-top:2px; }
.compare-table tbody tr:hover { background: var(--color-surface-alt); }
.compare-table .yes { color: var(--color-accent-emerald); font-weight: var(--weight-semibold); }
.compare-table .no { color: var(--color-neutral-400); }
.compare-table tbody tr:last-child th, .compare-table tbody tr:last-child td { border-bottom:0; }

.guarantee { margin-top: var(--space-7); display:grid; grid-template-columns: auto 1fr; gap: var(--space-4); align-items:center; max-width: 760px; margin-inline:auto; padding: var(--space-5); background: color-mix(in oklab, var(--color-accent-emerald) 7%, var(--color-surface)); border:1px solid color-mix(in oklab, var(--color-accent-emerald) 22%, transparent); border-radius: var(--radius-2xl); }
.guarantee__icon { width:56px; height:56px; }
.guarantee h3 { font-size: var(--text-h3); }
.guarantee p { margin-top: var(--space-2); color: var(--color-text-secondary); font-size: var(--text-small); }
.guarantee a { color: var(--color-brand-dark); font-weight: var(--weight-medium); }
@media (max-width: 520px) { .guarantee { grid-template-columns: 1fr; text-align:center; justify-items:center; } }

/* ─── FAQ ─── */
.faq-list { margin-top: var(--space-5); display:grid; gap: var(--space-3); }
.faq-list details { background: var(--color-surface); border:1px solid var(--color-border); border-radius: var(--radius-lg); box-shadow: var(--shadow-xs); overflow:hidden; }
.faq-list summary { cursor:pointer; list-style:none; padding: var(--space-4); font-weight: var(--weight-semibold); font-family: var(--font-display); display:flex; align-items:center; justify-content:space-between; gap: var(--space-3); }
.faq-list summary::-webkit-details-marker { display:none; }
.faq-list summary::after { content:"+"; font-size:1.5rem; font-weight:400; color: var(--color-brand); line-height:1; transition: transform var(--duration-med) var(--ease-out-quart); flex:none; }
.faq-list details[open] summary::after { transform: rotate(45deg); }
.faq-body { padding: 0 var(--space-4) var(--space-4); }
.faq-body p { color: var(--color-text-secondary); line-height: var(--leading-relaxed); }
.faq-body code { font-family: var(--font-mono); font-size: .85em; background: var(--color-neutral-100); padding: .1em .4em; border-radius: var(--radius-sm); }
.faq-body a { color: var(--color-brand-dark); font-weight: var(--weight-medium); }

/* ─── Final CTA ─── */
.final-cta { text-align:center; padding-block: var(--pad-section-lg); }
.final-cta .btn-primary { margin-top: var(--space-5); }
.btn-primary--on-dark { background: #fff; color: var(--color-brand-dark); box-shadow: 0 10px 28px -12px rgba(0,0,0,.5); }
.btn-primary--on-dark:hover { background:#fff; box-shadow: 0 16px 34px -14px rgba(0,0,0,.6); }
.final-note { margin-top: var(--space-4); font-size: var(--text-small); color: color-mix(in oklab, var(--color-text-inverse) 70%, transparent); }
.final-note a { color: var(--color-brand-light); font-weight: var(--weight-medium); }

/* ─── Footer ─── */
.site-footer { background: var(--color-neutral-950); color: color-mix(in oklab, var(--color-text-inverse) 70%, transparent); padding-block: var(--space-6); }
.site-footer .brand { color:#fff; }
.footer-top { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap: var(--space-4); padding-bottom: var(--space-4); border-bottom:1px solid color-mix(in oklab, #fff 12%, transparent); }
.footer-nav { display:flex; flex-wrap:wrap; gap: var(--space-4); }
.footer-nav a { color: color-mix(in oklab, var(--color-text-inverse) 74%, transparent); text-decoration:none; font-size: var(--text-small); }
.footer-nav a:hover { color:#fff; text-decoration:underline; text-underline-offset:3px; }
.footer-legal { margin-top: var(--space-4); font-size: var(--text-small); color: color-mix(in oklab, var(--color-text-inverse) 55%, transparent); }

/* ─── Sticky mobile CTA ─── */
.sticky-cta { position:fixed; bottom:0; left:0; right:0; padding:12px 16px; background: color-mix(in oklab, var(--color-surface) 94%, transparent); backdrop-filter: blur(8px); border-top:1px solid var(--color-border); z-index:50; transform: translateY(100%); transition: transform var(--duration-med) var(--ease-out-quart); }
.sticky-cta[data-visible="true"] { transform: translateY(0); }
.sticky-cta .btn-primary { width:100%; min-height:52px; }
@media (min-width: 768px) { .sticky-cta { display:none; } }

/* ─── Scroll fade-in ─── */
main > section { opacity:0; transform: translateY(20px); transition: opacity var(--duration-slow) var(--ease-out-quart), transform var(--duration-slow) var(--ease-out-quart); }
main > section[data-visible="true"] { opacity:1; transform: translateY(0); }

/* ─── Reduced motion ─── */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration:0.01ms !important; transition-duration:0.01ms !important; scroll-behavior:auto !important; }
  main > section { opacity:1 !important; transform:none !important; }
  .sticky-cta { transition:none; }
}

/* ─── No-JS fallback: never trap content behind the fade-in ─── */
@media (scripting: none) { main > section { opacity:1; transform:none; } }
