/* ==========================================================================
   Advin Softwares — Design System (Phase 1: Homepage)
   Confident / premium / serif-led corporate SaaS direction.
   Self-contained: does not depend on style.css / main.css / custom.css /
   homehero.css / Bootstrap. Loaded only on pages rebuilt in this system.
   ========================================================================== */

/* Committed to a single dark theme by design — not following OS/viewer
   light-dark preference. See contrast notes below: --indigo and --green are
   tuned for use as TEXT/ICON accents against the dark page background;
   --indigo-solid and --green-solid are separate, deliberately darker shades
   reserved for solid button fills so white button text stays readable
   (verified: white-on-indigo-solid 7.3:1, white-on-green-solid 6.2:1 —
   the original single-shade indigo/green measured 3.2:1 and 1.9:1, which is
   why button text was unreadable before this fix). */
:root{
  --ink:#EDEFFA;
  --ink-soft:#A6ACD6;
  --paper:#0B0E24;
  --surface:#141936;
  --indigo:#7C86F2;
  --indigo-solid:#3B46C4;
  --indigo-deep:#1B2160;
  --green:#48D374;
  --green-solid:#186F40;
  --line:#262B57;
  --shadow: 0 1px 2px rgba(0,0,0,.4);

  --display: 'Fraunces', Georgia, 'Iowan Old Style', 'Palatino Linotype', serif;
  --body: 'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Arial, sans-serif;
  --mono: 'IBM Plex Mono', 'SF Mono', Consolas, 'Roboto Mono', monospace;
}

*, *::before, *::after{ box-sizing:border-box; }
html{ scroll-behavior:smooth; }
@media (prefers-reduced-motion: reduce){ html{ scroll-behavior:auto; } }

body.advin-body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:var(--body);
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
}
.advin-body img, .advin-body svg{ max-width:100%; display:block; }
/* :not(.av-btn) is deliberate: without it, this rule's specificity
   (.advin-body + a = 0,1,1) beats .av-btn-primary's (0,1,0) and silently
   overrides button text back to the surrounding text color — that was the
   root cause of unreadable button text reported earlier. */
.advin-body a:not(.av-btn){ color:inherit; }
.advin-body :focus-visible{ outline:2px solid var(--indigo); outline-offset:2px; }

.av-wrap{ max-width:1180px; margin:0 auto; padding:0 32px; }
@media (max-width:720px){ .av-wrap{ padding:0 20px; } }

.av-eyebrow{
  font-family:var(--mono); font-size:.72rem; letter-spacing:.14em; text-transform:uppercase;
  color:var(--indigo); display:inline-flex; align-items:center; gap:.5em;
}
.av-eyebrow::before{ content:''; width:7px; height:7px; background:var(--green); display:inline-block; flex:none; }

.advin-body h1, .advin-body h2, .advin-body h3{
  font-family:var(--display); font-weight:600; text-wrap:balance; margin:0; letter-spacing:-.01em;
}

/* ---------- Header ---------- */
.av-header{
  position:sticky; top:0; z-index:50;
  background:color-mix(in srgb, var(--paper) 88%, transparent);
  backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line);
}
.av-nav-row{ display:flex; align-items:center; justify-content:space-between; height:76px; gap:20px; }
.av-brand{ display:flex; align-items:center; gap:11px; text-decoration:none; flex:none; font-family:var(--display); font-size:1.2rem; font-weight:600; color:var(--ink); letter-spacing:-.01em; }
.av-brand img{ height:32px; width:auto; flex:none; }
@media (max-width:420px){ .av-brand span{ display:none; } }
.av-navlinks{ display:flex; gap:34px; font-size:.92rem; color:var(--ink-soft); list-style:none; margin:0; padding:0; }
.av-navlinks a{ text-decoration:none; }
.av-navlinks a:hover{ color:var(--ink); }
.av-navlinks a.is-active{ color:var(--ink); }
.av-mobile-menu a.is-active{ color:var(--indigo); font-weight:600; }
.av-header-actions{ display:flex; gap:10px; align-items:center; flex:none; }

.av-btn{
  font-family:var(--body); font-size:.88rem; font-weight:600; padding:.7em 1.3em;
  border:1px solid transparent; cursor:pointer; display:inline-flex; align-items:center; gap:.5em;
  text-decoration:none; background:none; line-height:1;
}
.av-btn-primary{ background:var(--indigo-solid); color:#fff; }
.av-btn-primary:hover{ background:var(--indigo-deep); }
.av-btn-ghost{ border-color:var(--line); color:var(--ink); }
.av-btn-ghost:hover{ border-color:var(--indigo); }

.av-nav-toggle{
  display:none; flex:none; width:40px; height:40px; border:1px solid var(--line); background:var(--surface);
  align-items:center; justify-content:center; cursor:pointer;
}
.av-nav-toggle span, .av-nav-toggle::before, .av-nav-toggle::after{
  content:''; display:block; width:18px; height:2px; background:var(--ink); position:relative;
}
.av-nav-toggle::before{ margin-bottom:5px; }
.av-nav-toggle::after{ margin-top:5px; }

.av-mobile-menu{ display:none; border-top:1px solid var(--line); background:var(--surface); }
.av-mobile-menu.is-open{ display:block; }
.av-mobile-menu ul{ list-style:none; margin:0; padding:16px 0; display:flex; flex-direction:column; }
.av-mobile-menu a{ display:block; padding:12px 32px; text-decoration:none; color:var(--ink); font-size:.96rem; }
.av-mobile-menu .av-btn{ margin:8px 32px 0; justify-content:center; }

@media (max-width:860px){
  .av-navlinks, .av-header-actions .av-btn-ghost{ display:none; }
  .av-nav-toggle{ display:flex; }
}

/* ---------- Hero ---------- */
.av-hero{ padding:96px 0 64px; border-bottom:1px solid var(--line); }
.av-hero-grid{ display:grid; grid-template-columns:1.05fr .95fr; gap:64px; align-items:center; }
@media (max-width:960px){ .av-hero-grid{ grid-template-columns:1fr; } }
.av-hero h1{ font-size:clamp(2.3rem,4.2vw,3.4rem); line-height:1.08; margin:.5em 0 .45em; }
.av-hero h1 em{ font-style:normal; color:var(--indigo); }
.av-hero p.av-lead{ font-size:1.12rem; color:var(--ink-soft); max-width:46ch; margin-bottom:1.8em; }
.av-hero-ctas{ display:flex; gap:14px; flex-wrap:wrap; margin-bottom:2.2em; }
.av-hero-note{ font-family:var(--mono); font-size:.78rem; color:var(--ink-soft); letter-spacing:.02em; }

.av-panel{ background:var(--indigo-deep); border:1px solid var(--line); padding:22px; position:relative; overflow:hidden; }
.av-panel-head{ display:flex; justify-content:space-between; align-items:center; margin-bottom:18px; }
.av-panel-head .av-dot-row{ display:flex; gap:6px; }
.av-panel-head .av-dot{ width:8px; height:8px; border-radius:50%; background:rgba(255,255,255,.25); }
.av-panel-head span.av-panel-tag{ font-family:var(--mono); font-size:.7rem; color:rgba(255,255,255,.5); letter-spacing:.06em; }
.av-stack{ display:flex; flex-direction:column; gap:9px; }
.av-stack-row{ display:flex; align-items:center; gap:12px; background:rgba(255,255,255,.05); border:1px solid rgba(255,255,255,.09); padding:13px 15px; }
.av-tick{ width:19px; height:19px; flex:none; border:1px solid var(--green); display:flex; align-items:center; justify-content:center; }
.av-tick svg{ width:11px; height:11px; }
.av-stack-row .av-label{ font-family:var(--mono); font-size:.82rem; color:#fff; }
.av-stack-row .av-sub{ font-family:var(--body); font-size:.72rem; color:rgba(255,255,255,.5); margin-left:auto; }
.av-panel-foot{ margin-top:16px; padding-top:14px; border-top:1px dashed rgba(255,255,255,.15); display:flex; justify-content:space-between; font-family:var(--mono); font-size:.72rem; color:rgba(255,255,255,.55); }

/* ---------- Stat ledger ---------- */
.av-ledger{ border-bottom:1px solid var(--line); }
.av-ledger-row{ display:grid; grid-template-columns:repeat(4,1fr); }
@media (max-width:720px){ .av-ledger-row{ grid-template-columns:repeat(2,1fr); } }
.av-ledger-cell{ padding:34px 28px; border-left:1px solid var(--line); }
.av-ledger-cell:first-child{ border-left:none; }
@media (max-width:720px){
  .av-ledger-cell:nth-child(2n+1){ border-left:none; }
  .av-ledger-cell{ border-top:1px solid var(--line); }
  .av-ledger-cell:nth-child(-n+2){ border-top:none; }
}
.av-ledger-num{ font-family:var(--mono); font-size:2rem; font-variant-numeric:tabular-nums; color:var(--indigo); }
.av-ledger-label{ font-size:.86rem; color:var(--ink-soft); margin-top:.3em; }

/* ---------- Section shell ---------- */
.av-block{ padding:88px 0; }
.av-block-head{ max-width:60ch; margin-bottom:52px; }
.av-block-head h2{ font-size:clamp(1.7rem,2.6vw,2.3rem); margin-top:.4em; }
.av-block-head p{ color:var(--ink-soft); margin-top:.8em; font-size:1.02rem; }

/* ---------- Before / after ---------- */
.av-contrast{ display:grid; grid-template-columns:1fr 1fr; border:1px solid var(--line); }
@media (max-width:780px){ .av-contrast{ grid-template-columns:1fr; } }
.av-contrast > div{ padding:38px; }
.av-contrast .av-before{ background:var(--surface); }
.av-contrast .av-after{ background:var(--indigo-deep); color:#fff; border-left:1px solid var(--line); }
@media (max-width:780px){ .av-contrast .av-after{ border-left:none; border-top:1px solid var(--line); } }
.av-contrast h3{ font-family:var(--mono); font-size:.75rem; letter-spacing:.1em; text-transform:uppercase; margin-bottom:1.4em; }
.av-contrast .av-before h3{ color:var(--ink-soft); }
.av-contrast .av-after h3{ color:rgba(255,255,255,.6); }
.av-contrast ul{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:14px; }
.av-contrast li{ display:flex; gap:12px; font-size:.96rem; align-items:flex-start; }
.av-contrast .av-before li::before{ content:'—'; color:var(--ink-soft); flex:none; }
.av-contrast .av-after li::before{ content:''; width:16px; height:16px; flex:none; margin-top:.2em; background:var(--green); clip-path:polygon(14% 44%,0 65%,38% 100%,100% 16%,79% 0,37% 62%); }

/* ---------- Modules grid ---------- */
.av-modules{ display:grid; grid-template-columns:repeat(4,1fr); border-top:1px solid var(--line); border-left:1px solid var(--line); }
@media (max-width:960px){ .av-modules{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:560px){ .av-modules{ grid-template-columns:1fr; } }
.av-module{ padding:30px 26px; border-right:1px solid var(--line); border-bottom:1px solid var(--line); background:var(--surface); }
.av-module .av-tick{ width:22px; height:22px; margin-bottom:16px; }
.av-module .av-tick svg{ width:12px; height:12px; }
.av-module h3{ font-size:1.06rem; font-family:var(--body); font-weight:700; }
.av-module p{ font-size:.88rem; color:var(--ink-soft); margin-top:.5em; }
.av-module-cta{ display:flex; align-items:center; justify-content:center; background:var(--paper); }

/* ---------- Plans teaser ---------- */
.av-plans{ display:grid; grid-template-columns:repeat(3,1fr); gap:0; border:1px solid var(--line); }
@media (max-width:820px){ .av-plans{ grid-template-columns:1fr; } }
.av-plan{ padding:34px 30px; background:var(--surface); border-left:1px solid var(--line); position:relative; }
.av-plan:first-child{ border-left:none; }
@media (max-width:820px){ .av-plan{ border-left:none; border-top:1px solid var(--line); } .av-plan:first-child{ border-top:none; } }
.av-plan.is-best{ background:var(--indigo-deep); color:#fff; }
.av-plan-badge{ font-family:var(--mono); font-size:.68rem; letter-spacing:.1em; text-transform:uppercase; color:var(--green); margin-bottom:14px; display:block; }
.av-plan.is-best .av-plan-badge{ color:var(--green); }
.av-plan-name{ font-family:var(--display); font-size:1.2rem; margin-bottom:.3em; }
.av-plan-price{ font-family:var(--mono); font-size:1.7rem; font-variant-numeric:tabular-nums; }
.av-plan-per{ font-size:.8rem; color:var(--ink-soft); }
.av-plan.is-best .av-plan-per{ color:rgba(255,255,255,.6); }
.av-plan-desc{ font-size:.88rem; color:var(--ink-soft); margin:14px 0 22px; }
.av-plan.is-best .av-plan-desc{ color:rgba(255,255,255,.7); }

/* ---------- Process ---------- */
.av-process{ display:flex; flex-direction:column; }
.av-step{ display:grid; grid-template-columns:100px 1fr; gap:24px; padding:26px 0; border-top:1px solid var(--line); }
.av-process .av-step:last-child{ border-bottom:1px solid var(--line); }
.av-step .av-idx{ font-family:var(--mono); color:var(--indigo); font-size:.85rem; padding-top:.2em; }
.av-step h3{ font-size:1.05rem; font-family:var(--body); font-weight:700; margin-bottom:.35em; }
.av-step p{ color:var(--ink-soft); font-size:.92rem; margin:0; max-width:60ch; }
@media (max-width:600px){ .av-step{ grid-template-columns:1fr; gap:6px; } }

/* ---------- CTA banner ---------- */
.av-cta-band{ background:var(--indigo-deep); color:#fff; padding:80px 0; }
.av-cta-band .av-wrap{ display:flex; justify-content:space-between; align-items:center; gap:32px; flex-wrap:wrap; }
.av-cta-band h2{ color:#fff; font-size:clamp(1.6rem,3vw,2.1rem); max-width:26ch; }
.av-cta-band p{ color:rgba(255,255,255,.65); margin-top:.6em; }
.av-cta-band .av-btn-primary{ background:var(--green-solid); }
.av-cta-band .av-btn-primary:hover{ background:#124f2f; }

/* ---------- Footer ---------- */
.av-footer{ padding:0; font-size:.85rem; color:var(--ink-soft); border-top:1px solid var(--line); background:var(--surface); }
.av-footer .av-wrap{ display:flex; justify-content:space-between; flex-wrap:wrap; gap:16px; }

.av-footer-main{ padding:64px 0 40px; }
.av-footer-grid{ display:grid; grid-template-columns:1.4fr repeat(4,1fr); gap:32px; }
@media (max-width:900px){ .av-footer-grid{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:560px){ .av-footer-grid{ grid-template-columns:1fr; } }
.av-footer-brand .av-brand{ margin-bottom:14px; font-size:1.1rem; }
.av-footer-brand p{ font-size:.86rem; color:var(--ink-soft); max-width:32ch; margin:0; }
.av-footer-col h3{ font-family:var(--mono); font-size:.7rem; letter-spacing:.1em; text-transform:uppercase; color:var(--ink); margin:0 0 16px; font-weight:600; }
.av-footer-col ul{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:10px; }
.av-footer-col a{ text-decoration:none; font-size:.88rem; }
.av-footer-col a:hover{ color:var(--indigo); }
.av-footer-bottom{ border-top:1px solid var(--line); padding:22px 0; font-size:.8rem; }
.av-footer-bottom .av-wrap{ display:flex; justify-content:space-between; flex-wrap:wrap; gap:10px; }

/* ---------- Motion ---------- */
@media (prefers-reduced-motion: no-preference){
  .av-reveal{ opacity:0; transform:translateY(14px); transition:opacity .6s ease, transform .6s ease; }
  .av-reveal.is-visible{ opacity:1; transform:none; }
}
