/*
  Semwaki Marketing Design System
  Shared, reusable styling for every pages/marketing/*.html page and the
  root index.html homepage. No page-specific CSS should duplicate rules
  already defined here — page files add layout-specific composition only.

  Breakpoints (mobile-first, matches docs/website/SEMWAKI_RESPONSIVE_GUIDE.md):
    base    : 0        (mobile)
    tablet  : 640px
    desktop : 1024px
    wide    : 1440px
*/

/* ---------------------------------- Tokens ---------------------------------- */

:root{
  /* Brand palette */
  --sw-primary:#4f46e5;
  --sw-primary-dark:#4338ca;
  --sw-primary-light:#eef2ff;
  --sw-accent:#06b6d4;
  --sw-accent-dark:#0891b2;
  /* Decorative only (hero glow, soft tints behind unrelated body copy) — never put text directly on this. */
  --sw-gradient:linear-gradient(135deg,#4f46e5 0%,#4338ca 45%,#06b6d4 100%);
  --sw-gradient-soft:linear-gradient(135deg,rgba(79,70,229,.10) 0%,rgba(6,182,212,.10) 100%);
  /* Text-bearing gradient (buttons, CTA panels): darker stops so white text clears WCAG AA 4.5:1
     at every point along the gradient. The brighter --sw-gradient above measures as low as 2.4:1
     for white text at its cyan end — verified during the Phase 3 accessibility pass — so it must
     never be used as a background behind text. */
  --sw-gradient-cta:linear-gradient(135deg,#4338ca 0%,#3730a3 50%,#0e7490 100%);

  /* Neutrals */
  --sw-ink:#0f172a;
  --sw-body:#475569;
  --sw-muted:#64748b;
  --sw-border:#e2e8f0;
  --sw-border-strong:#cbd5e1;
  --sw-surface:#ffffff;
  --sw-surface-alt:#f8fafc;
  --sw-navy-900:#0b1220;
  --sw-navy-800:#111a2e;
  --sw-navy-700:#1c2942;

  /* Feedback */
  --sw-success:#16a34a;
  --sw-warning:#d97706;

  /* Spacing scale (8px base) */
  --space-1:4px;
  --space-2:8px;
  --space-3:16px;
  --space-4:24px;
  --space-5:32px;
  --space-6:48px;
  --space-7:64px;
  --space-8:96px;
  --space-9:128px;

  /* Radius / elevation */
  --radius-sm:8px;
  --radius-md:14px;
  --radius-lg:20px;
  --radius-pill:999px;
  --shadow-sm:0 1px 2px rgba(15,23,42,.06), 0 1px 1px rgba(15,23,42,.04);
  --shadow-md:0 8px 24px rgba(15,23,42,.08), 0 2px 6px rgba(15,23,42,.05);
  --shadow-lg:0 24px 64px rgba(15,23,42,.14), 0 8px 20px rgba(15,23,42,.08);

  /* Type scale (fluid, clamps between mobile and desktop) */
  --font-sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --fs-display:clamp(2rem,1.15rem + 3.6vw,3.5rem);
  --fs-h1:clamp(1.75rem,1.35rem + 1.8vw,2.5rem);
  --fs-h2:clamp(1.375rem,1.2rem + 0.8vw,1.875rem);
  --fs-h3:clamp(1.125rem,1.05rem + 0.3vw,1.375rem);
  --fs-body:1rem;
  --fs-body-lg:1.0625rem;
  --fs-small:0.875rem;

  --container-max:1120px;
  --container-max-wide:1280px;

  --sw-header-height:72px;
}

/* ------------------------------- Smooth anchor scrolling ------------------------------- */

html:has(.sw-scope){scroll-behavior:smooth;}
@media(prefers-reduced-motion:reduce){html:has(.sw-scope){scroll-behavior:auto;}}

/* ------------------------------- Reset / base ------------------------------- */

.sw-scope,.sw-scope *,.sw-scope *::before,.sw-scope *::after{box-sizing:border-box;}
.sw-scope{
  font-family:var(--font-sans);
  color:var(--sw-ink);
  background:var(--sw-surface);
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
.sw-scope img,.sw-scope svg{max-width:100%;display:block;}
.sw-scope a{color:inherit;text-decoration:none;}
.sw-scope ul{list-style:none;margin:0;padding:0;}
.sw-scope button{font:inherit;}
/* --sw-accent (#06b6d4) measures only 2.4:1 against a white page background — fails WCAG 1.4.11's
   3:1 non-text-contrast minimum for a focus indicator. --sw-primary-dark clears 7.9:1, so it stays
   clearly visible on every surface this design system uses (light, dark, and on-brand sections). */
.sw-scope :focus-visible{outline:3px solid var(--sw-primary-dark);outline-offset:2px;}
.sw-section--dark :focus-visible,.sw-card--dark :focus-visible{outline-color:#fff;}

h1.sw-h,h2.sw-h,h3.sw-h{margin:0;font-weight:800;letter-spacing:-0.02em;line-height:1.15;color:var(--sw-ink);}
.sw-display{font-size:var(--fs-display);}
.sw-h1{font-size:var(--fs-h1);}
.sw-h2{font-size:var(--fs-h2);}
.sw-h3{font-size:var(--fs-h3);font-weight:700;}
.sw-body{font-size:var(--fs-body);color:var(--sw-body);}
.sw-body-lg{font-size:var(--fs-body-lg);color:var(--sw-body);}
.sw-small{font-size:var(--fs-small);color:var(--sw-muted);}
.sw-eyebrow{
  display:inline-flex;align-items:center;gap:var(--space-2);
  font-size:var(--fs-small);font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  color:var(--sw-primary);
}

/* ------------------------------- Containers / grid ------------------------------- */

.sw-container{
  width:100%;
  max-width:var(--container-max);
  margin-inline:auto;
  padding-inline:20px;
}
@media(min-width:640px){.sw-container{padding-inline:32px;}}
@media(min-width:1024px){.sw-container{padding-inline:48px;}}
@media(min-width:1440px){.sw-container{max-width:var(--container-max-wide);}}

.sw-section{padding-block:var(--space-7);}
@media(min-width:640px){.sw-section{padding-block:var(--space-8);}}
@media(min-width:1024px){.sw-section{padding-block:var(--space-9);}}
.sw-section--tight{padding-block:var(--space-6);}
.sw-section--alt{background:var(--sw-surface-alt);}
.sw-section--dark{background:var(--sw-navy-900);color:#e2e8f0;}
.sw-section--dark .sw-h,.sw-section--dark h2,.sw-section--dark h3{color:#fff;}
.sw-section--dark .sw-body,.sw-section--dark .sw-body-lg,.sw-section--dark p{color:#94a3b8;}

.sw-section-head{max-width:720px;margin-bottom:var(--space-6);}
.sw-section-head--center{margin-inline:auto;text-align:center;}
.sw-section-head .sw-h2{margin-top:var(--space-2);}

.sw-grid{display:grid;gap:var(--space-4);}
.sw-grid--2{grid-template-columns:repeat(1,1fr);}
.sw-grid--3{grid-template-columns:repeat(1,1fr);}
.sw-grid--4{grid-template-columns:repeat(1,1fr);}
@media(min-width:640px){
  .sw-grid--2{grid-template-columns:repeat(2,1fr);}
  .sw-grid--3{grid-template-columns:repeat(2,1fr);}
  .sw-grid--4{grid-template-columns:repeat(2,1fr);gap:var(--space-4);}
}
@media(min-width:1024px){
  .sw-grid--2{grid-template-columns:repeat(2,1fr);gap:var(--space-5);}
  .sw-grid--3{grid-template-columns:repeat(3,1fr);gap:var(--space-5);}
  .sw-grid--4{grid-template-columns:repeat(4,1fr);}
}

/* ------------------------------------ Buttons ------------------------------------ */

.sw-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);
  min-height:48px;padding:0 var(--space-4);
  border-radius:var(--radius-pill);border:1px solid transparent;
  font-weight:700;font-size:var(--fs-body);cursor:pointer;
  transition:transform .15s ease,box-shadow .15s ease,background-color .15s ease,color .15s ease,border-color .15s ease;
  white-space:nowrap;
}
.sw-btn:hover{transform:translateY(-1px);}
.sw-btn:active{transform:translateY(0);}
.sw-btn-primary{background:var(--sw-gradient-cta);color:#fff;box-shadow:var(--shadow-md);}
.sw-btn-primary:hover{box-shadow:var(--shadow-lg);}
.sw-btn-secondary{background:var(--sw-surface);color:var(--sw-ink);border-color:var(--sw-border-strong);}
.sw-btn-secondary:hover{border-color:var(--sw-primary);color:var(--sw-primary);}
.sw-btn-ghost{background:transparent;color:var(--sw-ink);min-height:44px;padding:0 var(--space-3);}
.sw-btn-ghost:hover{color:var(--sw-primary);}
.sw-btn-on-dark{background:#fff;color:var(--sw-navy-900);}
.sw-btn-sm{min-height:40px;padding:0 var(--space-3);font-size:var(--fs-small);}
.sw-btn-block{width:100%;}

/* ------------------------------------- Badges / pills ------------------------------------- */

.sw-badge{
  display:inline-flex;align-items:center;gap:6px;
  padding:6px 12px;border-radius:var(--radius-pill);
  font-size:var(--fs-small);font-weight:700;
  background:var(--sw-primary-light);color:var(--sw-primary-dark);
}
.sw-badge--accent{background:rgba(6,182,212,.12);color:var(--sw-accent-dark);}
.sw-badge--success{background:rgba(22,163,74,.12);color:var(--sw-success);}
.sw-badge--on-dark{background:rgba(255,255,255,.1);color:#fff;}

.sw-pill{
  display:inline-flex;align-items:center;gap:8px;
  padding:8px 16px;border-radius:var(--radius-pill);
  border:1px solid var(--sw-border);background:var(--sw-surface);
  font-size:var(--fs-small);font-weight:600;color:var(--sw-body);
}

/* --------------------------------------- Cards --------------------------------------- */

.sw-card{
  background:var(--sw-surface);border:1px solid var(--sw-border);
  border-radius:var(--radius-lg);padding:var(--space-4);
  box-shadow:var(--shadow-sm);
  transition:box-shadow .2s ease,transform .2s ease,border-color .2s ease;
}
@media(min-width:640px){.sw-card{padding:var(--space-5);}}
.sw-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px);border-color:var(--sw-border-strong);}
.sw-card--flat{box-shadow:none;}
.sw-card--dark{background:var(--sw-navy-800);border-color:rgba(255,255,255,.08);color:#e2e8f0;}

.sw-card-icon{
  width:48px;height:48px;border-radius:var(--radius-md);
  display:flex;align-items:center;justify-content:center;
  background:var(--sw-gradient-soft);color:var(--sw-primary);
  margin-bottom:var(--space-3);
}
.sw-card-icon svg{width:24px;height:24px;}

/* -------------------------------------- Navigation -------------------------------------- */

.sw-header{
  position:sticky;top:0;z-index:50;
  background:rgba(255,255,255,.85);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  border-bottom:1px solid transparent;
  transition:border-color .2s ease,box-shadow .2s ease;
}
.sw-header.is-scrolled{border-bottom-color:var(--sw-border);box-shadow:0 1px 0 rgba(15,23,42,.02);}
.sw-nav{
  height:var(--sw-header-height);
  display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);
}
.sw-brand{display:flex;align-items:center;gap:10px;font-weight:800;font-size:1.125rem;color:var(--sw-ink);}
/* Renders the reusable brand mark <img> (assets/branding/placeholder/mark.svg today —
   swap to the final assets/branding/mark.svg with zero HTML changes once real artwork lands,
   see assets/branding/placeholder/README.md). */
.sw-brand-mark{width:36px;height:36px;border-radius:10px;flex-shrink:0;display:block;object-fit:contain;}
.sw-nav-links{display:none;align-items:center;gap:var(--space-4);}
.sw-nav-links a{font-size:var(--fs-small);font-weight:600;color:var(--sw-body);padding:8px 4px;}
.sw-nav-links a:hover{color:var(--sw-primary);}
.sw-nav-actions{display:flex;align-items:center;gap:var(--space-3);}
.sw-nav-actions .sw-btn-ghost,.sw-nav-actions .sw-btn-secondary{display:none;}
.sw-nav-actions .sw-btn-primary{min-height:44px;padding:0 var(--space-3);font-size:var(--fs-small);}

.sw-nav-toggle{
  display:inline-flex;align-items:center;justify-content:center;
  width:44px;height:44px;border-radius:var(--radius-sm);border:1px solid var(--sw-border);
  background:var(--sw-surface);cursor:pointer;
}
.sw-nav-toggle svg{width:20px;height:20px;}

@media(min-width:1024px){
  .sw-nav-links{display:flex;}
  .sw-nav-actions .sw-btn-ghost,.sw-nav-actions .sw-btn-secondary{display:inline-flex;}
  .sw-nav-toggle{display:none;}
}

.sw-mobile-menu{
  position:fixed;inset:0;top:var(--sw-header-height);z-index:40;
  background:var(--sw-surface);
  transform:translateY(-8px);opacity:0;visibility:hidden;pointer-events:none;
  transition:transform .22s ease,opacity .22s ease,visibility .22s ease;
  overflow-y:auto;
}
.sw-mobile-menu.is-open{transform:translateY(0);opacity:1;visibility:visible;pointer-events:auto;}
.sw-mobile-menu .sw-container{padding-block:var(--space-5);}
.sw-mobile-menu a{
  display:block;padding:14px 4px;font-size:1.05rem;font-weight:600;color:var(--sw-ink);
  border-bottom:1px solid var(--sw-border);
}
.sw-mobile-menu-actions{display:flex;flex-direction:column;gap:var(--space-3);margin-top:var(--space-5);}
@media(min-width:1024px){.sw-mobile-menu{display:none;}}

/* ---------------------------------------- Hero ---------------------------------------- */

.sw-hero{
  position:relative;overflow:hidden;
  padding-block:var(--space-8);
}
@media(min-width:1024px){.sw-hero{padding-block:var(--space-9);}}
.sw-hero-glow{
  position:absolute;inset:-20% -10% auto -10%;height:640px;z-index:-1;
  background:var(--sw-gradient-soft);filter:blur(60px);
}
.sw-hero-inner{display:grid;gap:var(--space-6);align-items:center;}
@media(min-width:1024px){.sw-hero-inner{grid-template-columns:1.1fr .9fr;gap:var(--space-8);}}
.sw-hero-copy{text-align:center;}
@media(min-width:1024px){.sw-hero-copy{text-align:left;}}
.sw-hero-actions{display:flex;flex-direction:column;gap:var(--space-3);margin-top:var(--space-5);align-items:center;}
@media(min-width:480px){.sw-hero-actions{flex-direction:row;}}
@media(min-width:1024px){.sw-hero-actions{align-items:flex-start;}}
.sw-hero-copy .sw-hero-actions{justify-content:center;}
@media(min-width:1024px){.sw-hero-copy .sw-hero-actions{justify-content:flex-start;}}

.sw-hero-visual{
  position:relative;border-radius:var(--radius-lg);
  background:var(--sw-gradient);padding:var(--space-2);
  box-shadow:var(--shadow-lg);
}
.sw-hero-visual-inner{
  background:var(--sw-navy-900);border-radius:calc(var(--radius-lg) - 6px);
  aspect-ratio:16/11;padding:var(--space-5);color:#fff;
  display:flex;flex-direction:column;justify-content:space-between;
}
.sw-hero-visual-dots{display:flex;gap:6px;}
.sw-hero-visual-dots span{width:10px;height:10px;border-radius:50%;background:rgba(255,255,255,.25);}
.sw-hero-visual-rows{display:flex;flex-direction:column;gap:10px;}
.sw-hero-visual-row{height:12px;border-radius:6px;background:rgba(255,255,255,.12);}
.sw-hero-visual-row.short{width:60%;}

/* ------------------------------------- Trusted-by strip ------------------------------------- */

.sw-trustbar{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:var(--space-5);opacity:.8;}
.sw-trustbar span{font-weight:700;color:var(--sw-muted);font-size:var(--fs-small);letter-spacing:.04em;text-transform:uppercase;}

/* ----------------------------------------- Stats ----------------------------------------- */

.sw-stat{text-align:center;}
.sw-stat-value{font-size:clamp(2rem,1.6rem + 1.5vw,2.75rem);font-weight:800;color:var(--sw-ink);letter-spacing:-.02em;}
.sw-section--dark .sw-stat-value{color:#fff;}
.sw-stat-label{color:var(--sw-muted);font-size:var(--fs-small);margin-top:4px;}

/* -------------------------------------- Testimonials -------------------------------------- */

.sw-testimonial{display:flex;flex-direction:column;height:100%;}
.sw-testimonial-quote{font-size:var(--fs-body-lg);color:var(--sw-ink);flex:1;}
.sw-testimonial-quote::before{content:"\201C";}
.sw-testimonial-quote::after{content:"\201D";}
.sw-testimonial-author{display:flex;align-items:center;gap:12px;margin-top:var(--space-4);}
.sw-avatar{width:44px;height:44px;border-radius:50%;background:var(--sw-gradient);flex-shrink:0;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;}
.sw-testimonial-author strong{display:block;font-size:var(--fs-small);}
.sw-testimonial-author span{display:block;font-size:var(--fs-small);color:var(--sw-muted);}

/* ----------------------------------------- FAQ ----------------------------------------- */

.sw-faq-item{border-bottom:1px solid var(--sw-border);}
.sw-faq-item:first-child{border-top:1px solid var(--sw-border);}
.sw-faq-q{
  width:100%;display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);
  background:none;border:0;text-align:left;padding:var(--space-4) 4px;cursor:pointer;
  font-weight:700;font-size:var(--fs-body-lg);color:var(--sw-ink);
}
.sw-faq-q svg{width:20px;height:20px;flex-shrink:0;transition:transform .2s ease;color:var(--sw-muted);}
.sw-faq-item[data-open="true"] .sw-faq-q svg{transform:rotate(180deg);}
.sw-faq-a{
  max-height:0;overflow:hidden;transition:max-height .25s ease,padding .25s ease;
  color:var(--sw-body);padding:0 4px;
}
.sw-faq-item[data-open="true"] .sw-faq-a{max-height:400px;padding-bottom:var(--space-4);}

/* --------------------------------------- CTA sections --------------------------------------- */

.sw-cta{
  border-radius:var(--radius-lg);background:var(--sw-gradient-cta);color:#fff;
  padding:var(--space-6) var(--space-4);text-align:center;
}
@media(min-width:1024px){.sw-cta{padding:var(--space-8) var(--space-6);}}
.sw-cta .sw-h2{color:#fff;}
.sw-cta-actions{display:flex;flex-direction:column;gap:var(--space-3);justify-content:center;align-items:center;margin-top:var(--space-5);}
@media(min-width:480px){.sw-cta-actions{flex-direction:row;}}

/* ------------------------------------------ Forms ------------------------------------------ */

.sw-field{margin-bottom:var(--space-3);text-align:left;}
@media(min-width:640px){.sw-field{margin-bottom:var(--space-4);}}
.sw-field label{display:block;font-weight:700;font-size:var(--fs-small);margin-bottom:6px;color:var(--sw-ink);}
.sw-field input,.sw-field select,.sw-field textarea{
  width:100%;min-height:48px;padding:0 var(--space-3);
  border:1px solid var(--sw-border-strong);border-radius:var(--radius-sm);
  font:inherit;font-size:16px;background:var(--sw-surface);color:var(--sw-ink);
}
.sw-field textarea{min-height:120px;padding-block:12px;resize:vertical;}
.sw-field input:focus,.sw-field select:focus,.sw-field textarea:focus{outline:3px solid rgba(79,70,229,.25);border-color:var(--sw-primary);}
.sw-field-hint{font-size:var(--fs-small);color:var(--sw-muted);margin-top:4px;}
.sw-form-message{min-height:1.4rem;font-size:var(--fs-small);margin-top:var(--space-2);}
.sw-form-message.is-error{color:#b42318;}
.sw-form-message.is-success{color:var(--sw-success);}

/* ---------------------------------------- Portal cards ---------------------------------------- */

.sw-portal-card{
  display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--space-3);
  padding:var(--space-5);border-radius:var(--radius-lg);border:1px solid var(--sw-border);
  background:var(--sw-surface);transition:box-shadow .2s ease,transform .2s ease,border-color .2s ease;
}
.sw-portal-card:hover{box-shadow:var(--shadow-md);transform:translateY(-3px);border-color:var(--sw-primary);}
.sw-portal-icon{
  width:64px;height:64px;border-radius:var(--radius-md);background:var(--sw-gradient-soft);
  display:flex;align-items:center;justify-content:center;font-size:28px;
}
.sw-portal-card .sw-btn{margin-top:var(--space-2);}

/* ---------------------------------------- Footer ---------------------------------------- */

.sw-footer{background:var(--sw-navy-900);color:#94a3b8;padding-block:var(--space-7);}
.sw-footer a{color:#cbd5e1;}
.sw-footer a:hover{color:#fff;}
.sw-footer-grid{display:grid;gap:var(--space-5);grid-template-columns:1fr;}
@media(min-width:640px){.sw-footer-grid{grid-template-columns:repeat(2,1fr);}}
@media(min-width:1024px){.sw-footer-grid{grid-template-columns:1.4fr repeat(3,1fr);}}
.sw-footer-brand p{margin-top:var(--space-3);max-width:32ch;color:#64748b;font-size:var(--fs-small);}
.sw-footer-col h4{color:#fff;font-size:var(--fs-small);text-transform:uppercase;letter-spacing:.06em;margin-bottom:var(--space-3);}
.sw-footer-col li{margin-bottom:10px;font-size:var(--fs-small);}
.sw-footer-bottom{
  margin-top:var(--space-7);padding-top:var(--space-4);border-top:1px solid rgba(255,255,255,.08);
  display:flex;flex-direction:column;gap:var(--space-3);font-size:var(--fs-small);
}
@media(min-width:640px){.sw-footer-bottom{flex-direction:row;justify-content:space-between;align-items:center;}}

/* -------------------------------------- Scroll-reveal animation -------------------------------------- */

.sw-reveal{opacity:0;transform:translateY(16px);transition:opacity .5s ease,transform .5s ease;}
.sw-reveal.is-visible{opacity:1;transform:translateY(0);}
@media(prefers-reduced-motion:reduce){
  .sw-reveal{opacity:1;transform:none;transition:none;}
  .sw-card,.sw-btn,.sw-portal-card{transition:none;}
}

/* ------------------------------------- Skip link ------------------------------------- */

.sw-skip-link{
  position:absolute;top:-100px;left:12px;z-index:100;
  background:var(--sw-ink);color:#fff;padding:12px 20px;border-radius:var(--radius-sm);
  font-weight:700;font-size:var(--fs-small);transition:top .15s ease;
}
.sw-skip-link:focus{top:12px;}

/* ------------------------------------- Section divider ------------------------------------- */

.sw-divider{height:1px;background:linear-gradient(90deg,transparent,var(--sw-border-strong),transparent);border:0;margin:0;}
.sw-section--dark + .sw-section .sw-divider,.sw-divider--dark{background:linear-gradient(90deg,transparent,rgba(255,255,255,.16),transparent);}

/* ---------------------------------- Screenshot placeholder ---------------------------------- */

.sw-screenshot-placeholder{
  position:relative;border-radius:var(--radius-lg);overflow:hidden;
  border:2px dashed var(--sw-border-strong);
  background:
    repeating-linear-gradient(135deg,var(--sw-surface-alt) 0 12px,var(--sw-surface) 12px 24px);
  aspect-ratio:16/10;display:flex;align-items:center;justify-content:center;
}
.sw-screenshot-placeholder-label{
  display:inline-flex;align-items:center;gap:8px;
  background:var(--sw-surface);border:1px solid var(--sw-border-strong);border-radius:var(--radius-pill);
  padding:8px 16px;font-size:var(--fs-small);font-weight:700;color:var(--sw-muted);box-shadow:var(--shadow-sm);
}
.sw-screenshot-placeholder-label svg{width:16px;height:16px;}

/* ------------------------------------ Button loading state ------------------------------------ */

.sw-btn[data-loading="true"]{pointer-events:none;opacity:.85;}
.sw-btn[data-loading="true"] .sw-btn-spinner{
  display:inline-block;width:16px;height:16px;border-radius:50%;
  border:2px solid rgba(255,255,255,.4);border-top-color:#fff;
  animation:sw-spin .7s linear infinite;
}
.sw-btn-secondary[data-loading="true"] .sw-btn-spinner,.sw-btn-ghost[data-loading="true"] .sw-btn-spinner{
  border-color:rgba(15,23,42,.25);border-top-color:var(--sw-ink);
}
@keyframes sw-spin{to{transform:rotate(360deg);}}
@media(prefers-reduced-motion:reduce){.sw-btn-spinner{animation-duration:1.4s;}}

/* -------------------------------------- Comparison section -------------------------------------- */

.sw-compare{border:1px solid var(--sw-border);border-radius:var(--radius-lg);overflow:hidden;background:var(--sw-surface);}
.sw-compare-row{display:grid;grid-template-columns:1fr;border-top:1px solid var(--sw-border);}
.sw-compare-row:first-child{border-top:0;}
@media(min-width:640px){.sw-compare-row{grid-template-columns:1.1fr 1fr 1fr;}}
.sw-compare-label{padding:var(--space-4);font-weight:700;background:var(--sw-surface-alt);display:flex;align-items:center;}
.sw-compare-cell{padding:var(--space-4);display:flex;align-items:center;gap:10px;border-top:1px solid var(--sw-border);}
@media(min-width:640px){.sw-compare-cell{border-top:0;border-left:1px solid var(--sw-border);}}
.sw-compare-cell svg{width:18px;height:18px;flex-shrink:0;}
.sw-compare-cell--old svg{color:var(--sw-muted);}
.sw-compare-cell--new{font-weight:600;color:var(--sw-ink);}
.sw-compare-cell--new svg{color:var(--sw-success);}
.sw-compare-head{display:none;padding:var(--space-3) var(--space-4);font-size:var(--fs-small);font-weight:700;color:var(--sw-muted);text-transform:uppercase;letter-spacing:.04em;}
@media(min-width:640px){.sw-compare-head{display:flex;align-items:center;}}

/* ------------------------------------- Photo placeholders ------------------------------------- */
/* Reused everywhere a real photograph belongs (see assets/marketing/images/README.md for the
   exact filename/content brief each one maps to). Never a broken <img> and never hotlinked stock —
   a soft gradient card, an icon suggesting the scene, and a visible "Photo placeholder" caption.
   `aria-label` on the containing element doubles as the alt text to reuse once a real photo lands. */

.sw-photo{
  position:relative;overflow:hidden;border-radius:var(--radius-lg);
  background:linear-gradient(135deg,#eef2ff 0%,#e0f7fa 100%);
  display:flex;align-items:center;justify-content:center;flex-direction:column;gap:10px;
  aspect-ratio:4/3; /* reserved so a future real <img> causes zero layout shift */
}
.sw-photo--wide{aspect-ratio:16/9;}
.sw-photo--square{aspect-ratio:1/1;}
.sw-photo-img{width:100%;height:100%;object-fit:cover;display:block;}
.sw-photo-icon{width:25%;max-width:64px;color:var(--sw-primary);opacity:.55;}
.sw-photo-icon svg{width:100%;height:100%;}
.sw-photo-caption{
  display:inline-flex;align-items:center;gap:6px;
  background:rgba(255,255,255,.85);border:1px solid var(--sw-border);border-radius:var(--radius-pill);
  padding:5px 12px;font-size:0.75rem;font-weight:700;color:var(--sw-muted);
  position:absolute;bottom:10px;left:10px;
}
.sw-photo-caption svg{width:13px;height:13px;}
.sw-photo--dark{background:linear-gradient(135deg,#1e293b 0%,#0f172a 100%);}
.sw-photo--dark .sw-photo-icon{color:#94a3b8;opacity:.7;}

/* Hero-specific: photo placeholder with a dark gradient overlay so headline text stays readable
   once a real photo is dropped in behind it. */
.sw-photo-overlay{
  position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(11,18,32,.15) 0%,rgba(11,18,32,.65) 100%);
}
/* Uniform, stronger overlay for text centered directly on top of the photo
   (e.g. the closing CTA banner) rather than text sitting below/beside it. */
.sw-photo-overlay--strong{
  position:absolute;inset:0;
  background:linear-gradient(135deg,rgba(11,18,32,.72) 0%,rgba(14,116,144,.72) 100%);
}

/* --------------------------------------- Trust logo strip --------------------------------------- */

.sw-logo-strip{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:var(--space-6);}
.sw-logo-strip-item{
  display:flex;align-items:center;justify-content:center;
  width:120px;height:48px;border-radius:var(--radius-sm);
  background:var(--sw-surface-alt);border:1px dashed var(--sw-border-strong);
  color:var(--sw-muted);font-size:0.6875rem;font-weight:700;text-align:center;padding:4px;
}

/* --------------------------------- Checklist-with-photo section --------------------------------- */

.sw-checklist{display:flex;flex-direction:column;gap:var(--space-3);}
.sw-checklist-item{display:flex;align-items:flex-start;gap:12px;}
.sw-checklist-icon{
  width:28px;height:28px;border-radius:50%;flex-shrink:0;margin-top:2px;
  background:var(--sw-gradient-soft);color:var(--sw-primary);
  display:flex;align-items:center;justify-content:center;
}
.sw-checklist-icon svg{width:16px;height:16px;}
.sw-checklist-text strong{display:block;font-size:0.9375rem;color:var(--sw-ink);}
.sw-checklist-text span{font-size:0.875rem;color:var(--sw-muted);}

/* ----------------------------------- "Education in Action" gallery ----------------------------------- */

.sw-gallery{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-3);}
@media(min-width:640px){.sw-gallery{grid-template-columns:repeat(3,1fr);gap:var(--space-4);}}
@media(min-width:1024px){.sw-gallery{grid-template-columns:repeat(5,1fr);}}
.sw-gallery-card{position:relative;border-radius:var(--radius-md);overflow:hidden;}
.sw-gallery-card .sw-photo{border-radius:var(--radius-md);aspect-ratio:1/1;}
.sw-gallery-label{
  position:absolute;left:0;right:0;bottom:0;padding:var(--space-2) var(--space-3);
  background:linear-gradient(0deg,rgba(11,18,32,.75) 0%,rgba(11,18,32,0) 100%);
  color:#fff;font-size:0.8125rem;font-weight:700;
}

/* -------------------------------------- Device mockup frames -------------------------------------- */

.sw-device-showcase{display:grid;gap:var(--space-6);align-items:end;justify-items:center;}
@media(min-width:1024px){.sw-device-showcase{grid-template-columns:1.3fr 1fr;text-align:left;justify-items:stretch;}}

.sw-device-frame{position:relative;}
.sw-device-frame .sw-device-screen{
  background:var(--sw-navy-900);overflow:hidden;
  display:flex;flex-direction:column;padding:14px;gap:8px;
}
.sw-device-frame--laptop{width:min(100%,420px);}
.sw-device-frame--laptop .sw-device-screen{border-radius:10px 10px 0 0;aspect-ratio:16/10;border:8px solid #111827;border-bottom:0;}
.sw-device-frame--laptop .sw-device-base{height:14px;background:#1f2937;border-radius:0 0 8px 8px;position:relative;}
.sw-device-frame--laptop .sw-device-base::after{content:"";position:absolute;left:50%;top:0;transform:translateX(-50%);width:15%;height:100%;background:#374151;border-radius:0 0 4px 4px;}

.sw-device-frame--tablet{width:min(60%,220px);}
.sw-device-frame--tablet .sw-device-screen{border-radius:16px;aspect-ratio:3/4;border:10px solid #111827;}

.sw-device-frame--mobile{width:min(38%,140px);}
.sw-device-frame--mobile .sw-device-screen{border-radius:22px;aspect-ratio:9/19;border:8px solid #111827;}

.sw-device-cluster{position:relative;display:flex;align-items:flex-end;justify-content:center;gap:-24px;padding-bottom:var(--space-4);}
.sw-device-cluster .sw-device-frame--tablet{margin-inline:-20px;transform:translateY(8px);}
.sw-device-cluster .sw-device-frame--mobile{transform:translateY(18px);}

.sw-device-screen-row{height:8px;border-radius:4px;background:rgba(255,255,255,.12);}
.sw-device-screen-row.short{width:55%;}
.sw-device-screen-dot-row{display:flex;gap:5px;}
.sw-device-screen-dot-row span{width:6px;height:6px;border-radius:50%;background:rgba(255,255,255,.25);}

/* ------------------------------------ Image-reveal scroll animation ------------------------------------ */

.sw-reveal-image{opacity:0;transform:scale(0.96) translateY(10px);transition:opacity .6s ease,transform .6s ease;}
.sw-reveal-image.is-visible{opacity:1;transform:scale(1) translateY(0);}
@media(prefers-reduced-motion:reduce){.sw-reveal-image{opacity:1;transform:none;transition:none;}}

/* Utility */
.sw-center{text-align:center;}
.sw-mt-2{margin-top:var(--space-2);}
.sw-mt-3{margin-top:var(--space-3);}
.sw-mt-4{margin-top:var(--space-4);}
.sw-mt-5{margin-top:var(--space-5);}
.sw-mt-6{margin-top:var(--space-6);}
.sw-visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;}
