/* ============================================================================
 * Pyllar V2 — Premium homepage styles (redesign)
 * Part 1: Design-system tokens + semantic base (from Pyllar DS @ ek-version-650)
 * Part 2: Homepage layout styles
 * Settings baked into <html data-*>: hero=dark · headline=dreams · accent=bold · bodyfont=outfit
 * ========================================================================== */

/* ===========================================================================
 * Pyllar Design System – Colors & Type
 * Source of truth: pyllar-05/pyllar @ ek-version-650
 *   android/app/src/main/res/values/colors.xml
 *   android/app/src/main/java/com/pyllar/consumer/presentation/ui/theme/
 *
 * Pyllar is a consumer mutual-fund investing app for India. The brand reads
 * "premium yet approachable": gold + marble pillars on dark forest green
 * (classical, trustworthy), grounded by Material 3 surfaces and a Hindi-first
 * multilingual product (en/hi/ta/te/kn/ml).
 * ========================================================================= */

/* ---- Fonts -------------------------------------------------------------
 * Outfit is loaded from Google Fonts in <head>. Only the custom cursive
 * accent face needs shipping — drop Cursive.ttf at assets/fonts/.
 * --------------------------------------------------------------------- */
@font-face { font-family: "PyllarCursive"; src: url("assets/fonts/PyllarCursive.ttf") format("truetype"); font-weight: 400; font-style: normal; font-display: swap; }

:root {
  /* ===================================================================== *
   * COLORS — Pyllar uses TWO related-but-distinct palettes that ship
   * together in the same codebase:
   *
   *   1. V2 PREMIUM (the CURRENT direction — used by InitialDashboardScreenV2,
   *      DashboardTrustFooter, and the wider "luxury" surfaces). Cream
   *      background, dark-bronze ink, luxury-gold accents, deep obsidian-green
   *      CTAs. Reads as a wealth-management product.
   *
   *   2. V1 MATERIAL (the legacy / Material 3 surfaces still in use on auth,
   *      onboarding, and the older dashboards). Forest-green primary on white,
   *      brighter Material green for success.
   *
   * NEW SCREENS should use V2. Existing forms / system dialogs continue
   * to use V1 until they're migrated.
   * ===================================================================== */

  /* ── V2 PREMIUM (current direction) ─────────────────────────────────── */

  /* Surfaces */
  --v2-cream:                    #FBF9F4;   /* WarmCreamBackground — primary surface */
  --v2-cream-warm:               #FAF9F1;   /* Trust-footer cream variant */
  --v2-card-white:               #FFFFFF;   /* Cards on cream */
  --v2-subtle-border:            #EFEBE9;   /* Ultra-light brown-grey lines/dividers */
  --v2-frosted:                  rgba(255,255,255,0.85);  /* CAGR panel surface */

  /* Ink (text) */
  --v2-ink:                      #3E2723;   /* PremiumDarkBrown — display & headers */
  --v2-ink-soft:                 #6D4C41;   /* SecondaryBronze — captions, sub-copy */
  --v2-ink-mute:                 rgba(62, 39, 35, 0.7);   /* deemphasized */
  --v2-headline-green:           #11381E;   /* hero headline ink (deep forest) */
  --v2-help-text:                #1A7A42;   /* GreenDark — links/help/lang button */

  /* Brand metals */
  --v2-gold:                     #D4AF37;   /* LuxuryGold — primary accent */
  --v2-gold-deep:                #8B6B25;   /* AccentGoldDark — borders, subtitles */
  --v2-gold-soft:                #C5A358;   /* DashboardTrustFooter gold */
  --v2-silver:                   #9E9E9E;   /* LuxurySilver */
  --v2-bronze:                   #6D4C41;   /* SecondaryBronze */

  /* Status (V2 keeps Material green/red, used inside the cream system) */
  --v2-success-green:            #2E7D32;   /* AccentGreen — CAGR / gains */
  --v2-volatility-red:           #C62828;   /* downward / volatility */

  /* Obsidian green CTA — the bottom "Invest Now" button is on this color */
  --v2-obsidian:                 #0A2415;
  --v2-obsidian-soft:            #0A2213;
  --v2-ribbon-green:             #11381E;

  /* Goal-card vertical gradients (3-stop, very subtle) */
  --v2-goal-gold-1:    #FFFDF7; --v2-goal-gold-2:    #FFF9E6; --v2-goal-gold-3:    #FFF3CD;
  --v2-goal-silver-1:  #FCFCFD; --v2-goal-silver-2:  #F5F5F7; --v2-goal-silver-3:  #EAECEE;
  --v2-goal-savings-1: #F9FBF7; --v2-goal-savings-2: #F1F8E9; --v2-goal-savings-3: #E8F5E9;

  /* Gradients */
  --v2-gradient-gold:    linear-gradient(135deg, #FFFDF7 0%, #FFF9E6 50%, #FFF3CD 100%);
  --v2-gradient-silver:  linear-gradient(135deg, #FCFCFD 0%, #F5F5F7 50%, #EAECEE 100%);
  --v2-gradient-savings: linear-gradient(135deg, #F9FBF7 0%, #F1F8E9 50%, #E8F5E9 100%);
  --v2-gradient-premium-gold: linear-gradient(180deg, #8B6B25 0%, #3E2723 100%);
  --v2-gradient-ribbon:  linear-gradient(180deg, #11381E 0%, #0A2213 100%);
  --v2-gradient-cta-border: linear-gradient(90deg, #FFD700 0%, #8B6B25 100%);
  --v2-shimmer-gold: linear-gradient(90deg, rgba(212,175,55,0) 0%, rgba(255,224,130,0.3) 30%, rgba(255,253,231,0.6) 50%, rgba(255,224,130,0.3) 70%, rgba(212,175,55,0) 100%);

  /* ── V1 MATERIAL (legacy — auth, onboarding, older surfaces) ────────── */

  /* Primary — Pyllar Dark Forest Green. This is THE brand color for auth
     and onboarding flows: AppBar, primary buttons, focused field borders. */
  --color-primary:               #26533E;   /* md_theme_light_primary */
  --color-on-primary:            #FFFFFF;
  --color-primary-container:     #B7F5CB;   /* mint — "earned/positive" surfaces */
  --color-on-primary-container:  #00391A;

  /* Secondary — brighter Material green. Used for success states, growth %,
     positive deltas, "ACTIVE" pills, secondary accents. */
  --color-secondary:             #4CAF50;
  --color-on-secondary:          #FFFFFF;
  --color-secondary-container:   #D0F8CE;
  --color-on-secondary-container:#1B5E20;

  /* Surfaces */
  --color-background:            #FFFFFF;
  --color-on-background:         #1B1B1B;
  --color-surface:               #FFFFFF;
  --color-on-surface:            #1B1B1B;
  --color-surface-variant:       #F5F5F5;   /* light grey field/chip background */
  --color-on-surface-variant:    #6B6B6B;
  --color-card:                  #FFFFFF;   /* alias of surface; cards always white */

  /* Outline / dividers */
  --color-outline:               #BDBDBD;
  --color-divider:               #E0E0E0;
  --color-outline-subtle:        #EEEEEE;

  /* Status */
  --color-error:                 #B00020;
  --color-on-error:              #FFFFFF;
  --color-error-container:       #FDECEE;
  --color-warning:               #F59E0B;   /* amber – CTA accents, alerts */
  --color-success:               #10B981;   /* emerald – growth, achievement */

  /* Brand seasoning — gold for goal accents + "premium" moments
     (logo + gold-investment goal). Used SPARINGLY. */
  --color-gold:                  #D4A02A;
  --color-gold-light:            #FFECB3;
  --color-gold-dark:             #8B6914;
  --color-silver:                #BDBDBD;
  --color-silver-light:          #E0E0E0;

  /* Goal category accents — InitialDashboardScreen.kt::goalGradient */
  --goal-gold-bg-from:           #FFF8E1;
  --goal-gold-bg-to:             #FFD54F;
  --goal-gold-border:            #FFB300;
  --goal-gold-text:              #5D4037;

  --goal-silver-bg-from:         #F5F5F5;
  --goal-silver-bg-to:           #BDBDBD;
  --goal-silver-border:          #9E9E9E;
  --goal-silver-text:            #424242;

  --goal-savings-bg-from:        #E0F2F1;
  --goal-savings-bg-to:          #80CBC4;
  --goal-savings-border:         #00897B;
  --goal-savings-text:           #004D40;

  --goal-festival-bg-from:       #FFF3E0;
  --goal-festival-bg-to:         #FFCC80;
  --goal-festival-border:        #FF6F00;
  --goal-festival-text:          #5D4037;

  --goal-education-bg-from:      #E8EAF6;
  --goal-education-bg-to:        #9FA8DA;
  --goal-education-border:       #3949AB;
  --goal-education-text:         #283593;

  --goal-vacation-bg-from:       #EDE7F6;
  --goal-vacation-bg-to:         #B39DDB;
  --goal-vacation-border:        #7B1FA2;
  --goal-vacation-text:          #4A148C;

  /* Hero gradient — vertical Emerald sweep from PhoneVerificationScreen.kt /
     OtpVerificationScreen.kt. The product's signature full-bleed background
     for the V1 auth screens (login, OTP). V2 surfaces use --v2-cream. */
  --gradient-hero: linear-gradient(180deg,
      #0A5C36 0%,   /* dark emerald */
      #1B7A4A 18%,
      #2D9A5F 36%,
      #3FAF73 54%,
      #4FC387 72%,
      #003200 92%,
      #002800 100%);

  /* Subtle success-tint gradient used on dashboard hero summary card */
  --gradient-portfolio: linear-gradient(135deg, #26533E 0%, #1B5E20 60%, #0E4029 100%);

  /* Premium gold gradient — for milestone/celebration moments */
  --gradient-gold: linear-gradient(135deg, #FFE082 0%, #D4A02A 50%, #8B6914 100%);

  /* ===================================================================== *
   * TYPE — Outfit primary, Inter for tabular numerics, Cursive for the
   * "Savings Plus" wordmark accent. Source: Typography.kt
   * ===================================================================== */

  --font-display: "Outfit", "Inter", "SF Pro Display", system-ui, sans-serif;
  --font-body:    "Outfit", "Inter", system-ui, sans-serif;
  --font-mono:    "Inter", ui-monospace, "SF Mono", monospace;       /* used for ₹ amounts */
  --font-accent:  "PyllarCursive", "Caveat", cursive;                 /* "Plus" accent */

  /* Type scale — Compose values map directly to these */
  --fs-display-l: 56px; --lh-display-l: 64px;
  --fs-display:   40px; --lh-display:   48px;       /* hero ₹ amount */
  --fs-h1:        28px; --lh-h1:        36px;       /* headlineMedium */
  --fs-h2:        24px; --lh-h2:        32px;       /* headlineSmall  */
  --fs-h3:        22px; --lh-h3:        28px;       /* titleLarge     */
  --fs-h4:        18px; --lh-h4:        24px;       /* titleMedium    */
  --fs-h5:        16px; --lh-h5:        22px;       /* titleSmall     */
  --fs-body-l:    16px; --lh-body-l:    24px;       /* bodyLarge      */
  --fs-body:      14px; --lh-body:      20px;       /* bodyMedium     */
  --fs-body-s:    12px; --lh-body-s:    16px;       /* bodySmall      */
  --fs-label:     12px; --lh-label:     16px;
  --fs-label-s:   11px; --lh-label-s:   14px;       /* labelSmall     */
  --fs-caps:      10px; --lh-caps:      14px;

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

  --ls-tight:   -0.4px;
  --ls-normal:  0px;
  --ls-loose:   0.5px;
  --ls-caps:    0.8px;

  /* ===================================================================== *
   * SHAPE / SPACE / SHADOW
   * ===================================================================== */
  --space-1:  4px;
  --space-2:  8px;
  --space-3:  12px;
  --space-4:  16px;   /* base screen horizontal padding */
  --space-5:  20px;   /* dashboard UX spec H padding */
  --space-6:  24px;   /* dashboard UX spec V padding, card internal */
  --space-7:  32px;
  --space-8:  40px;
  --space-9:  48px;

  /* Radii — Material 3 shape tokens, observed from the codebase */
  --radius-xs:  4px;
  --radius-sm:  8px;     /* buttons, small chips, action pills */
  --radius-md:  12px;    /* fields, secondary buttons, info pills */
  --radius-lg:  16px;    /* cards, hero, language tile */
  --radius-xl:  24px;    /* login card, dialog, full-bleed sheet */
  --radius-pill:9999px;

  /* Shadows — light, lifted card (used on hero/login card, defaultElevation = 8.dp) */
  --shadow-card:    0 4px 16px rgba(0, 0, 0, 0.08);
  --shadow-card-lg: 0 12px 32px rgba(0, 0, 0, 0.10);
  --shadow-floating:0 8px 24px rgba(38, 83, 62, 0.22);   /* primary-tinted */
  --shadow-inset:   inset 0 1px 0 rgba(255, 255, 255, 0.06);

  /* Motion — observed in Compose: tween(300–500ms) easing, slide+fade entrances */
  --ease-standard:   cubic-bezier(.2, 0, 0, 1);
  --ease-emphasized: cubic-bezier(.3, 0, 0, 1);
  --dur-fast:    150ms;
  --dur-base:    300ms;
  --dur-slow:    500ms;
}

/* ============================================================================
 * Semantic element styles — use directly in plain markup
 * ========================================================================== */
html { font-family: var(--font-body); color: var(--color-on-surface); background: var(--color-background); -webkit-font-smoothing: antialiased; }
body { margin: 0; }

h1, .h1 { font-family: var(--font-display); font-weight: var(--fw-bold);     font-size: var(--fs-h1);  line-height: var(--lh-h1);  letter-spacing: var(--ls-tight); color: var(--color-primary); margin: 0; }
h2, .h2 { font-family: var(--font-display); font-weight: var(--fw-bold);     font-size: var(--fs-h2);  line-height: var(--lh-h2);  letter-spacing: var(--ls-tight); color: var(--color-on-background); margin: 0; }
h3, .h3 { font-family: var(--font-display); font-weight: var(--fw-semibold); font-size: var(--fs-h3);  line-height: var(--lh-h3);  letter-spacing: var(--ls-normal); margin: 0; }
h4, .h4 { font-family: var(--font-display); font-weight: var(--fw-semibold); font-size: var(--fs-h4);  line-height: var(--lh-h4);  margin: 0; }
h5, .h5 { font-family: var(--font-display); font-weight: var(--fw-semibold); font-size: var(--fs-h5);  line-height: var(--lh-h5);  margin: 0; }

p, .body-l { font-size: var(--fs-body-l); line-height: var(--lh-body-l); font-weight: var(--fw-regular); margin: 0; }
.body   { font-size: var(--fs-body);   line-height: var(--lh-body);   font-weight: var(--fw-regular); }
.body-s { font-size: var(--fs-body-s); line-height: var(--lh-body-s); font-weight: var(--fw-regular); color: var(--color-on-surface-variant); }
.label  { font-size: var(--fs-label);  line-height: var(--lh-label);  font-weight: var(--fw-medium);  letter-spacing: var(--ls-loose); }
.caps   { font-size: var(--fs-caps);   line-height: var(--lh-caps);   font-weight: var(--fw-semibold);letter-spacing: var(--ls-caps); text-transform: uppercase; }

/* Tabular numerics — ₹ amounts, percentages, IDs. Inter feature `tnum` keeps
   the column aligned in tables and metric grids. */
.metric, .money {
  font-family: var(--font-display);
  font-feature-settings: "tnum" 1, "lnum" 1;
  font-variant-numeric: tabular-nums lining-nums;
  font-weight: var(--fw-bold);
}
.money::before { content: "₹"; margin-right: 0.05em; font-weight: var(--fw-semibold); }
.money.no-symbol::before { content: ""; }

/* Hero number — for portfolio total / SIP confirmation */
.metric--hero { font-size: var(--fs-display); line-height: var(--lh-display); letter-spacing: var(--ls-tight); }

/* Cursive accent — for the "Plus" or "+" emphasis in Savings Plus etc. */
.accent-cursive { font-family: var(--font-accent); font-weight: var(--fw-regular); }

/* Growth pill — used inline next to a metric, e.g. "₹16,200 (+8%)" */
.delta-up   { color: var(--color-success); font-weight: var(--fw-semibold); }
.delta-down { color: var(--color-error);   font-weight: var(--fw-semibold); }

/* Default link / cta text styling inside dark hero — emerald-tinted white */
.on-hero-link { color: #EFFDEE; text-decoration: underline; text-underline-offset: 2px; }


/* ============================================================
 * Pyllar — V2 Premium homepage (redesign proposal)
 * Built on the Pyllar Design System tokens (ds.css).
 * Surface: warm cream · Ink: dark bronze · Accent: luxury gold
 * CTA: obsidian green with gold gradient frame.
 * ============================================================ */

*, *::before, *::after { box-sizing: border-box; }

:root {
  --ui-body: var(--font-display);          /* swappable via Tweaks */
  --page-max: 1200px;
  --gutter: clamp(20px, 5vw, 64px);
  --gold-glow: radial-gradient(60% 60% at 75% 25%, rgba(212,175,55,0.16) 0%, rgba(212,175,55,0) 70%);
}

html { background: var(--v2-cream); scroll-behavior: smooth; }
body {
  margin: 0;
  font-family: var(--ui-body);
  color: var(--v2-ink);
  background: var(--v2-cream);
  line-height: 1.55;
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
}

/* Body-font swap (Tweaks) */
html[data-bodyfont="inter"] { --ui-body: "Inter", system-ui, sans-serif; }
body, p, .body, li, input, button, a, span, label, summary, div { font-family: var(--ui-body); }
/* Display + cursive always keep their faces */
.display, .eyebrow, .h-sec, .hero-line-1 { font-family: var(--font-display); }
.cursive { font-family: var(--font-accent); }

/* Tabular figures for money */
.money { font-feature-settings: "tnum" 1, "lnum" 1; font-variant-numeric: tabular-nums lining-nums; }

/* ---------- Shared layout ---------- */
.wrap { max-width: var(--page-max); margin: 0 auto; padding-inline: var(--gutter); }
section { position: relative; }

.eyebrow {
  display: inline-flex; align-items: center; gap: 8px;
  font-size: 12px; font-weight: 700; letter-spacing: 1.6px; text-transform: uppercase;
  color: var(--v2-gold-deep);
}
.eyebrow::before {
  content: ""; width: 22px; height: 1.5px; background: var(--v2-gold); display: inline-block;
}

.h-sec {
  font-weight: 700; letter-spacing: -0.02em; line-height: 1.05;
  font-size: clamp(28px, 4vw, 44px); color: var(--v2-ink); margin: 0;
}
.sub-sec {
  font-size: clamp(16px, 1.6vw, 19px); color: var(--v2-ink-soft); max-width: 56ch; margin: 14px 0 0;
}
.section-head { margin-bottom: clamp(32px, 5vw, 56px); }
.section-head.center { text-align: center; }
.section-head.center .sub-sec { margin-inline: auto; }

/* ---------- Buttons ---------- */
.btn { font: inherit; cursor: pointer; border: 0; text-decoration: none; display: inline-flex;
  align-items: center; justify-content: center; gap: 10px; font-weight: 600; white-space: nowrap;
  transition: transform var(--dur-fast) var(--ease-standard), box-shadow var(--dur-base) var(--ease-standard), filter var(--dur-fast); }
.btn:active { transform: translateY(1px) scale(0.99); }

/* Primary: obsidian green core with a gold gradient frame */
.btn-primary {
  position: relative; color: #FBF7E9; background: var(--v2-obsidian);
  padding: 16px 28px; border-radius: var(--radius-md); font-size: 16px;
  box-shadow: 0 10px 26px rgba(10,36,21,0.28);
}
.btn-primary::before {
  content: ""; position: absolute; inset: -1.5px; border-radius: calc(var(--radius-md) + 1.5px);
  background: var(--v2-gradient-cta-border); z-index: -1;
}
.btn-primary:hover { filter: brightness(1.06); box-shadow: 0 14px 32px rgba(10,36,21,0.34); }

/* Ghost: bronze outline on cream */
.btn-ghost {
  color: var(--v2-ink); background: transparent; padding: 15px 24px;
  border-radius: var(--radius-md); border: 1.5px solid rgba(62,39,35,0.18); font-size: 16px;
}
.btn-ghost:hover { border-color: var(--v2-gold-deep); color: var(--v2-gold-deep); }

.store-row { display: flex; gap: 12px; flex-wrap: wrap; align-items: center; }
.store-badge {
  display: inline-flex; align-items: center; gap: 10px; padding: 10px 16px; border-radius: var(--radius-md);
  background: var(--v2-obsidian); color: #F5EFD8; text-decoration: none; font-size: 13px; line-height: 1.1;
  border: 1px solid rgba(212,175,55,0.35);
}
.store-badge b { font-size: 15px; font-weight: 700; display: block; }
.store-badge:hover { filter: brightness(1.08); }
.store-badge svg { width: 22px; height: 22px; flex: none; }

/* ---------- Header ---------- */
.site-header {
  position: sticky; top: 0; z-index: 900;
  background: color-mix(in srgb, var(--v2-cream) 86%, transparent);
  backdrop-filter: blur(10px);
  border-bottom: 1px solid transparent;
  transition: border-color var(--dur-base), background var(--dur-base);
}
.site-header.scrolled { border-bottom-color: var(--v2-subtle-border); background: color-mix(in srgb, var(--v2-cream) 94%, transparent); }
.header-inner { display: flex; align-items: center; justify-content: space-between; height: 72px; gap: 24px; }
.brand { display: flex; align-items: center; gap: 12px; text-decoration: none; }
.brand img { width: 40px; height: 40px; border-radius: 10px; box-shadow: var(--shadow-card); }
.brand .wordmark { font-family: var(--font-display); font-weight: 700; font-size: 22px; color: var(--v2-ink); letter-spacing: -0.01em; }
.nav { display: flex; align-items: center; gap: 30px; }
.nav a { color: var(--v2-ink); text-decoration: none; font-weight: 500; font-size: 15px; opacity: 0.82; transition: opacity var(--dur-fast), color var(--dur-fast); }
.nav a:hover { opacity: 1; color: var(--v2-gold-deep); }
.header-cta { display: inline-flex; gap: 12px; align-items: center; }
.btn-sm { padding: 10px 20px; font-size: 14px; border-radius: var(--radius-pill); }
.nav-toggle { display: none; background: none; border: 0; cursor: pointer; color: var(--v2-ink); }

/* ---------- Hero ---------- */
.hero { padding: clamp(48px, 7vw, 96px) 0 clamp(56px, 7vw, 104px); overflow: hidden; }
.hero::before { content: ""; position: absolute; inset: 0; background: var(--gold-glow); pointer-events: none; }
.hero-grid { display: grid; grid-template-columns: 1.05fr 0.95fr; gap: clamp(32px, 5vw, 72px); align-items: center; position: relative; }
.hero-eyebrow { margin-bottom: 22px; }
.hero-headline { margin: 0; }
.hero-line-1 { display: block; font-weight: 700; font-size: clamp(40px, 6.4vw, 76px); line-height: 0.98; letter-spacing: -0.03em; color: var(--v2-headline-green); }
.hero-line-2 { display: block; font-family: var(--font-accent); font-weight: 400; font-size: clamp(46px, 7.4vw, 90px); line-height: 1.0; color: var(--v2-gold); margin-top: 2px; padding-bottom: 0.08em; }
.headline-variant { display: none; }
html[data-headline="dreams"] .hv-dreams { display: block; }
html[data-headline="rupee21"] .hv-rupee21 { display: block; }
html[data-headline="gst"] .hv-gst { display: block; }
.hero-sub { margin: 26px 0 0; font-size: clamp(17px, 1.5vw, 20px); color: var(--v2-ink-soft); max-width: 30ch; }
.hero-sub strong { color: var(--v2-ink); font-weight: 600; }
.hero-actions { display: flex; gap: 14px; flex-wrap: wrap; margin-top: 34px; }
.hero-legal { margin-top: 22px; font-size: 12.5px; line-height: 1.5; color: var(--v2-ink-mute); max-width: 44ch; }

/* Hero visual */
.hero-visual { position: relative; display: flex; align-items: center; justify-content: center; min-height: 360px; }
.hero-disc {
  position: absolute; width: min(78%, 420px); aspect-ratio: 1; border-radius: 50%;
  background: var(--v2-gradient-gold); border: 1px solid rgba(139,107,37,0.25);
  box-shadow: inset 0 2px 30px rgba(255,255,255,0.7), var(--shadow-card-lg);
}
.hero-bars { position: relative; width: min(82%, 440px); filter: drop-shadow(0 26px 36px rgba(80,60,10,0.28)); animation: floaty 7s var(--ease-standard) infinite; }
@keyframes floaty { 0%,100% { transform: translateY(0) } 50% { transform: translateY(-16px) } }
.hero-chip {
  position: absolute; background: var(--v2-frosted); backdrop-filter: blur(6px);
  border: 1px solid var(--v2-subtle-border); border-radius: var(--radius-lg);
  box-shadow: var(--shadow-card); padding: 12px 16px; z-index: 3;
}
.hero-chip .chip-k { font-size: 11px; letter-spacing: 0.8px; text-transform: uppercase; color: var(--v2-ink-soft); font-weight: 600; }
.hero-chip .chip-v { font-weight: 700; color: var(--v2-ink); font-size: 20px; }
.hero-chip .chip-v .accent { color: var(--v2-gold-deep); }
.chip-tl { top: 8%; left: 0; }
.chip-br { bottom: 10%; right: 0; }
.chip-gst { bottom: 30%; left: -4%; background: var(--v2-obsidian); border-color: rgba(212,175,55,0.4); }
.chip-gst .chip-k, .chip-gst .chip-v { color: #F5EFD8; }
.chip-gst .chip-v .accent { color: var(--v2-gold); }

/* Dark hero variant */
html[data-hero="dark"] .hero { background: var(--v2-gradient-ribbon); }
html[data-hero="dark"] .hero::before { background: radial-gradient(60% 60% at 75% 25%, rgba(212,175,55,0.22) 0%, rgba(212,175,55,0) 70%); }
html[data-hero="dark"] .hero-line-1 { color: #F3EAD2; }
html[data-hero="dark"] .hero-sub { color: rgba(245,239,216,0.82); }
html[data-hero="dark"] .hero-sub strong { color: #fff; }
html[data-hero="dark"] .hero-legal { color: rgba(245,239,216,0.6); }
html[data-hero="dark"] .hero-eyebrow.eyebrow { color: var(--v2-gold); }
html[data-hero="dark"] .btn-ghost { color: #F3EAD2; border-color: rgba(245,239,216,0.3); }
html[data-hero="dark"] .btn-ghost:hover { border-color: var(--v2-gold); color: var(--v2-gold); }
html[data-hero="dark"] .hero-disc { background: radial-gradient(circle at 40% 35%, rgba(212,175,55,0.22), rgba(212,175,55,0.04) 70%); border-color: rgba(212,175,55,0.25); box-shadow: none; }

/* Accent intensity (subtle hides extra gold flourishes) */
html[data-accent="subtle"] .hero-disc { opacity: 0; }
html[data-accent="subtle"] .ribbon-deco { display: none; }

/* ---------- Trust strip ---------- */
.trust { border-block: 1px solid var(--v2-subtle-border); background: var(--v2-cream-warm); }
.trust-inner { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: clamp(16px, 3vw, 40px); padding: 20px 0; }
.trust-item { display: inline-flex; align-items: center; gap: 9px; font-size: 14.5px; font-weight: 500; color: var(--v2-ink); }
.trust-item svg { width: 18px; height: 18px; color: var(--v2-success-green); flex: none; }
.trust-sep { color: var(--v2-gold); font-size: 13px; }

/* ---------- Calculator ---------- */
.calc { padding: clamp(64px, 9vw, 112px) 0; }
.calc-card {
  background: var(--v2-card-white); border: 1px solid var(--v2-subtle-border);
  border-radius: var(--radius-xl); box-shadow: var(--shadow-card-lg); overflow: hidden;
  display: grid; grid-template-columns: 0.9fr 1.1fr;
}
.calc-controls { padding: clamp(28px, 4vw, 44px); border-right: 1px solid var(--v2-subtle-border); }
.calc-viz { padding: clamp(28px, 4vw, 44px); background: linear-gradient(180deg, #FFFDF8 0%, #FCFAF3 100%); }
.field { margin-bottom: 30px; }
.field:last-child { margin-bottom: 0; }
.field-top { display: flex; align-items: baseline; justify-content: space-between; margin-bottom: 12px; }
.field-label { font-size: 14px; font-weight: 600; color: var(--v2-ink-soft); }
.field-val { font-weight: 700; font-size: 20px; color: var(--v2-ink); }
.field-val .unit { font-size: 13px; font-weight: 500; color: var(--v2-ink-soft); margin-left: 2px; }

input[type="range"] { -webkit-appearance: none; appearance: none; width: 100%; height: 6px; border-radius: 999px;
  background: var(--v2-subtle-border); outline: none; cursor: pointer; }
input[type="range"]::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; width: 22px; height: 22px; border-radius: 50%;
  background: var(--v2-obsidian); border: 3px solid var(--v2-gold); box-shadow: 0 2px 8px rgba(0,0,0,0.2); transition: transform var(--dur-fast); }
input[type="range"]::-webkit-slider-thumb:hover { transform: scale(1.12); }
input[type="range"]::-moz-range-thumb { width: 22px; height: 22px; border-radius: 50%; background: var(--v2-obsidian); border: 3px solid var(--v2-gold); }
.range-fill { height: 6px; border-radius: 999px; background: var(--v2-gradient-cta-border); margin-top: -6px; pointer-events: none; }

.calc-results { display: grid; gap: 14px; }
.result-row { display: flex; align-items: center; justify-content: space-between; padding: 16px 18px; border-radius: var(--radius-lg); background: #fff; border: 1px solid var(--v2-subtle-border); }
.result-row .rk { color: var(--v2-ink-soft); font-size: 14px; font-weight: 500; }
.result-row .rv { font-weight: 700; font-size: 22px; color: var(--v2-ink); }
.result-row.invested .rv { color: var(--v2-ink-soft); }
.result-row.returns .rv { color: var(--v2-success-green); }
.result-row.total { position: relative; background: var(--v2-obsidian); border: 0; }
.result-row.total::before { content: ""; position: absolute; inset: -1.5px; border-radius: calc(var(--radius-lg) + 1.5px); background: var(--v2-gradient-cta-border); z-index: -1; }
.result-row.total .rk { color: rgba(245,239,216,0.85); }
.result-row.total .rv { color: #fff; font-size: 28px; }
.chart-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 20px; }
.chart-title { font-size: 14px; font-weight: 600; color: var(--v2-ink-soft); }
.legend { display: flex; gap: 16px; }
.legend span { display: inline-flex; align-items: center; gap: 6px; font-size: 12.5px; color: var(--v2-ink-soft); }
.legend i { width: 10px; height: 10px; border-radius: 3px; display: inline-block; }
.chart-box { width: 100%; }
.calc-note { margin: 22px auto 0; max-width: 760px; text-align: center; font-size: 12.5px; color: var(--v2-ink-mute); line-height: 1.6; }

/* ---------- Goals ---------- */
.goals { padding: clamp(56px, 8vw, 100px) 0; }
.goals-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.goal-card {
  position: relative; border-radius: var(--radius-lg); padding: 22px; min-height: 168px;
  border: 1px solid rgba(139,107,37,0.28); display: flex; flex-direction: column; justify-content: space-between;
  overflow: hidden; transition: transform var(--dur-base) var(--ease-standard), box-shadow var(--dur-base);
}
.goal-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-card-lg); }
.goal-card .gc-icon { font-size: 30px; }
.goal-card .gc-name { font-weight: 700; font-size: 19px; color: var(--v2-ink); margin-top: 14px; }
.goal-card .gc-desc { font-size: 13.5px; color: var(--v2-ink-soft); margin-top: 4px; }
.goal-card .gc-sip { margin-top: 14px; font-size: 13px; font-weight: 600; color: var(--v2-gold-deep); }
.goal-gold { background: var(--v2-gradient-gold); }
.goal-silver { background: var(--v2-gradient-silver); border-color: rgba(120,120,120,0.3); }
.goal-savings { background: var(--v2-gradient-savings); border-color: rgba(46,125,50,0.25); }
.goal-edu { background: linear-gradient(135deg, #FBFBFF 0%, #EEF0FB 100%); border-color: rgba(57,73,171,0.22); }
.goal-vac { background: linear-gradient(135deg, #FCFAFF 0%, #F1EAFB 100%); border-color: rgba(123,31,162,0.2); }
.goal-ret { background: linear-gradient(135deg, #FFFDF8 0%, #FBF1E6 100%); border-color: rgba(139,107,37,0.22); }
.goal-card .gc-bar { position: absolute; top: 0; left: 0; right: 0; height: 4px; }

/* ---------- Missed opportunity ---------- */
.missed { padding: clamp(56px, 8vw, 96px) 0; }
.missed-inner {
  position: relative; overflow: hidden; border-radius: var(--radius-xl);
  background: var(--v2-gradient-ribbon); padding: clamp(40px, 6vw, 72px) clamp(24px, 5vw, 64px); text-align: center;
  border: 1px solid rgba(212,175,55,0.2);
}
.ribbon-deco { position: absolute; inset: 0; background:
  radial-gradient(40% 60% at 12% 20%, rgba(212,175,55,0.18), transparent 70%),
  radial-gradient(40% 60% at 88% 90%, rgba(212,175,55,0.14), transparent 70%); pointer-events: none; }
.missed-inner .m-q { position: relative; color: rgba(245,239,216,0.86); font-size: clamp(16px, 2vw, 20px); max-width: 52ch; margin: 0 auto; }
.missed-amount { position: relative; font-family: var(--font-display); font-weight: 700; color: var(--v2-gold);
  font-size: clamp(52px, 9vw, 104px); line-height: 1.05; letter-spacing: -0.02em; margin: 14px 0 6px; }
.missed-inner .m-note { position: relative; color: rgba(245,239,216,0.55); font-size: 12.5px; }
.missed-inner .m-cta { margin-top: 28px; }

/* ---------- Partners ---------- */
.partners { padding: clamp(56px, 8vw, 96px) 0; }
.partner-board { display: flex; flex-wrap: wrap; align-items: center; justify-content: center;
  background: #fff; border: 1px solid var(--v2-subtle-border); border-radius: var(--radius-xl); box-shadow: var(--shadow-card); overflow: hidden; }
.partner-cell { flex: 1 1 0; min-width: 160px; display: flex; align-items: center; justify-content: center; padding: 30px 24px; border-right: 1px solid var(--v2-subtle-border); }
.partner-cell:last-child { border-right: 0; }
.partner-cell img { max-height: 52px; max-width: 80%; object-fit: contain; }

/* ---------- Blog ---------- */
.blog { padding: clamp(56px, 8vw, 96px) 0; }
.blog-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-bottom: 36px; }
.link-all { color: var(--v2-help-text); font-weight: 600; text-decoration: none; font-size: 15px; border-bottom: 1.5px solid currentColor; padding-bottom: 1px; }
.link-all:hover { opacity: 0.8; }
.blog-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.blog-card { background: #fff; border: 1px solid var(--v2-subtle-border); border-radius: var(--radius-lg); padding: 24px;
  text-decoration: none; color: inherit; display: flex; flex-direction: column; gap: 12px; transition: transform var(--dur-base), box-shadow var(--dur-base); }
.blog-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-card-lg); }
.blog-tag { align-self: flex-start; font-size: 11px; font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase; padding: 5px 11px; border-radius: 999px; }
.tag-gold { background: var(--v2-goal-gold-3); color: var(--v2-gold-deep); }
.tag-compare { background: #EAF1FB; color: #1565c0; }
.blog-card h3 { font-size: 18px; font-weight: 700; color: var(--v2-ink); line-height: 1.3; margin: 0; }
.blog-card p { font-size: 14px; color: var(--v2-ink-soft); margin: 0; flex: 1; }
.blog-read { font-size: 14px; font-weight: 600; color: var(--v2-help-text); }
.pill-row { display: flex; gap: 12px; flex-wrap: wrap; margin-bottom: 26px; }
.pill { display: inline-flex; align-items: center; gap: 7px; background: var(--v2-goal-savings-1); color: var(--v2-headline-green);
  border: 1px solid rgba(46,125,50,0.2); border-radius: 999px; padding: 8px 16px; font-size: 13.5px; font-weight: 600; text-decoration: none; }
.pill:hover { border-color: var(--v2-gold-deep); color: var(--v2-gold-deep); }

/* ---------- FAQ ---------- */
.faq { padding: clamp(56px, 8vw, 96px) 0; }
.faq-list { max-width: 760px; margin: 0 auto; display: grid; gap: 12px; }
.faq-item { border: 1px solid var(--v2-subtle-border); border-radius: var(--radius-lg); background: #fff; overflow: hidden; transition: box-shadow var(--dur-base); }
.faq-item[open] { box-shadow: var(--shadow-card); border-color: rgba(139,107,37,0.3); }
.faq-item summary { list-style: none; cursor: pointer; padding: 20px 24px; display: flex; align-items: center; justify-content: space-between; gap: 16px;
  font-weight: 600; font-size: 16.5px; color: var(--v2-ink); }
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary .chev { width: 20px; height: 20px; flex: none; color: var(--v2-gold-deep); transition: transform var(--dur-base); }
.faq-item[open] summary .chev { transform: rotate(180deg); }
.faq-item .faq-body { padding: 0 24px 22px; color: var(--v2-ink-soft); font-size: 15px; line-height: 1.65; }
.faq-item .faq-body em { color: var(--v2-ink); font-style: italic; }

/* ---------- Footer ---------- */
.site-footer { background: var(--v2-obsidian); color: rgba(245,239,216,0.7); margin-top: clamp(40px, 6vw, 80px); }
.footer-top { display: flex; flex-wrap: wrap; gap: 40px; justify-content: space-between; padding: clamp(48px, 6vw, 72px) 0 40px; }
.footer-brand { max-width: 340px; }
.footer-brand .brand .wordmark { color: #F5EFD8; }
.footer-brand p { margin: 18px 0 0; font-size: 13.5px; line-height: 1.6; color: rgba(245,239,216,0.6); }
.footer-cols { display: flex; gap: clamp(32px, 5vw, 72px); flex-wrap: wrap; }
.footer-col h4 { font-size: 12px; letter-spacing: 1px; text-transform: uppercase; color: var(--v2-gold); margin: 0 0 16px; font-weight: 700; }
.footer-col a { display: block; color: rgba(245,239,216,0.72); text-decoration: none; font-size: 14.5px; margin-bottom: 11px; }
.footer-col a:hover { color: #fff; }
.footer-legal { border-top: 1px solid rgba(245,239,216,0.12); padding: 22px 0 36px; font-size: 12px; line-height: 1.6; color: rgba(245,239,216,0.5); }
.footer-bottom { display: flex; flex-wrap: wrap; gap: 8px 18px; align-items: center; margin-top: 14px; }
.footer-bottom a { color: rgba(245,239,216,0.7); text-decoration: none; }
.footer-bottom a:hover { color: #fff; }

/* ---------- WhatsApp float ---------- */
.wa-float { position: fixed; bottom: 24px; right: 24px; z-index: 850; background: #25D366; color: #fff; border-radius: 999px;
  padding: 13px 20px 13px 16px; display: inline-flex; align-items: center; gap: 9px; text-decoration: none; box-shadow: 0 6px 22px rgba(37,211,102,0.42); transition: transform var(--dur-fast); }
.wa-float:hover { transform: translateY(-2px); }
.wa-float svg { width: 22px; height: 22px; }
.wa-float .wa-label { font-weight: 600; font-size: 14px; }

/* ---------- Reveal on scroll ----------
   Base state is VISIBLE (never blank if JS/observer/transition fails).
   The entrance is a keyframe animation, which reliably settles on its end state. */
.reveal { opacity: 1; transform: none; }
.reveal.in { animation: revealUp 0.7s var(--ease-standard) both; }
@keyframes revealUp { from { opacity: 0; transform: translateY(22px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) {
  .reveal, .reveal.in { animation: none; opacity: 1; transform: none; }
  .hero-bars { animation: none; }
}

/* ---------- Responsive ---------- */
@media (max-width: 980px) {
  .hero-grid { grid-template-columns: 1fr; }
  .hero-visual { order: -1; min-height: 300px; }
  .hero-sub, .hero-line-2 { max-width: none; }
  .calc-card { grid-template-columns: 1fr; }
  .calc-controls { border-right: 0; border-bottom: 1px solid var(--v2-subtle-border); }
  .goals-grid { grid-template-columns: repeat(2, 1fr); }
  .blog-grid { grid-template-columns: 1fr; }
  .partner-cell { flex-basis: 50%; border-bottom: 1px solid var(--v2-subtle-border); }
  .partner-cell:nth-child(2) { border-right: 0; }
}
@media (max-width: 640px) {
  .nav, .header-cta .btn-text { display: none; }
  .nav-toggle { display: inline-flex; }
  .header-cta .btn-sm { padding: 9px 16px; }
  .goals-grid { grid-template-columns: 1fr; }
  .hero-actions { flex-direction: column; align-items: stretch; }
  .hero-actions .btn { width: 100%; }
  .trust-sep { display: none; }
  .trust-inner { gap: 14px 22px; }
}

/* Mobile nav drawer */
.mobile-nav { display: none; }
.mobile-nav.open { display: block; }
.mobile-nav { position: fixed; inset: 72px 0 0; z-index: 880; background: var(--v2-cream); padding: 24px var(--gutter); }
.mobile-nav a { display: block; padding: 16px 0; font-size: 19px; font-weight: 600; color: var(--v2-ink); text-decoration: none; border-bottom: 1px solid var(--v2-subtle-border); }
