/* ============================================================================
 * Inner pages — product / platform / about / news / contact
 * Apple-flavored: big centered statements, alternating feature rows,
 * one scroll-driven "scene" per product page. B&W base + product accent.
 * ========================================================================== */

:root { --ink: #1d1d1f; --ink-sub: #6e6e73; --gray-tile: #f5f5f7; --link-blue: #1E5288; }

/* accent themes (set on <body>) */
body.accent-cardsync  { --accent: #E53935; --accent-deep: #b3201d; --accent-soft: #fdecec; --accent-grad: linear-gradient(180deg,#fdecec 0%,#fff 70%); }
body.accent-cardpulse { --accent: #43A047; --accent-deep: #2E7D32; --accent-soft: #e9f6ea; --accent-grad: linear-gradient(180deg,#e9f6ea 0%,#fff 70%); }
body.accent-balanceu  { --accent: #EF6C00; --accent-deep: #c75600; --accent-soft: #fff1e2; --accent-grad: linear-gradient(180deg,#fff1e2 0%,#fff 70%); }
body.accent-rollcall  { --accent: #7C4DFF; --accent-deep: #5b30d6; --accent-soft: #efeaff; --accent-grad: linear-gradient(180deg,#efeaff 0%,#fff 70%); }
body.accent-navy      { --accent: #1E5288; --accent-deep: #192855; --accent-soft: #eef4fb; --accent-grad: linear-gradient(180deg,#eef4fb 0%,#fff 70%); }

/* ---------------------------------------------------------------------------
 * PAGE HERO (product / page top)
 * ------------------------------------------------------------------------- */
.phero { position: relative; padding-top: 68px; text-align: center; overflow: hidden; }
.phero-light { background: var(--accent-grad); color: var(--ink); }
.phero-dark { background: #000; color: #fff; }
.phero-inner { padding: clamp(70px, 12vh, 150px) 22px clamp(48px, 7vh, 90px); position: relative; z-index: 2; }
.phero-logo { height: clamp(34px, 4vw, 48px); width: auto; margin: 0 auto 26px; display: block; }
.phero-eyebrow { font-size: var(--fs-body); font-weight: 600; color: var(--accent-deep); letter-spacing: .01em; margin-bottom: 14px; }
.phero-dark .phero-eyebrow { color: var(--accent); }
.phero h1 {
  font-size: clamp(40px, 6.2vw, 88px); font-weight: 600; letter-spacing: -0.02em;
  line-height: 1.03; margin: 0; color: inherit;
}
.phero h1 .thin { font-weight: 300; }
.phero h1 .accent { color: var(--accent); }
.phero-sub { font-size: clamp(19px, 2.1vw, 27px); color: var(--ink-sub); max-width: 32ch; margin: 18px auto 0; line-height: 1.32; }
.phero-dark .phero-sub { color: rgba(255,255,255,0.74); }
.phero-cta { display: flex; gap: 14px; justify-content: center; margin-top: 30px; flex-wrap: wrap; }
.btn-accent { background: var(--accent); color: #fff; }
.btn-accent:hover { background: var(--accent-deep); color: #fff; }

/* ---------------------------------------------------------------------------
 * BIG STATEMENT (Apple-style centered sentence)
 * ------------------------------------------------------------------------- */
.statement { padding-block: clamp(72px, 11vw, 150px); background: #fff; }
.statement.on-gray { background: var(--gray-tile); }
.statement p {
  font-size: clamp(28px, 4.2vw, 56px); font-weight: 600; letter-spacing: -0.018em;
  line-height: 1.18; max-width: 18ch; margin: 0 auto; text-align: center; color: var(--ink);
  text-wrap: balance;
}
.statement p .muted { color: var(--neutral-400); }
.statement p .accent { color: var(--accent); }
/* Tight variant — used before a full-bleed visual */
.statement.statement-tight { padding-block: clamp(40px, 5vw, 70px) clamp(8px, 1.2vw, 18px); }

/* Full-bleed Apple Watch tap-to-reader image */
.apple-watch-tap {
  width: 100%; background: #fff;
  padding: 0 0 clamp(14px, 2vw, 28px);
}
.apple-watch-tap img {
  display: block; width: 100vw; max-width: 100%; height: auto;
  margin: 0;
}
.apple-watch-tap .atw-caption {
  text-align: center;
  font-size: var(--fs-body-sm);
  color: var(--fg-3);
  margin-top: 10px;
  letter-spacing: 0.01em;
}
.apple-watch-tap .atw-caption strong { color: var(--fg-1); font-weight: 600; }

/* ---------------------------------------------------------------------------
 * SCROLL SCENE (pinned, scroll-driven — the "Apple scroll" moment)
 * ------------------------------------------------------------------------- */
.scene { position: relative; height: 340vh; background: #000; }
.scene-light { background: var(--gray-tile); }
.scene-sticky { position: sticky; top: 0; height: 100vh; overflow: hidden; display: grid; place-items: center; --p: 0; }

.scene-stage { position: relative; display: grid; place-items: center; width: 100%; height: 70%; }
.scene-glow {
  position: absolute; width: 560px; height: 560px; border-radius: 50%;
  background: radial-gradient(circle, var(--accent), transparent 62%);
  filter: blur(70px); opacity: calc(var(--p) * 0.55);
}
/* device that straightens + lifts as you scroll through */
.scene-phone {
  position: relative; z-index: 2; width: 300px; height: 620px; border-radius: 52px;
  background: linear-gradient(150deg, #2a2d34, #0a0c10); padding: 13px;
  box-shadow: 0 60px 110px rgba(0,0,0,0.6), 0 0 0 2px rgba(255,255,255,0.07) inset;
  transform:
    rotate(calc((1 - var(--p)) * -14deg))
    translateY(calc((1 - var(--p)) * 60px))
    scale(calc(0.86 + var(--p) * 0.14));
}
.scene-phone .phone-screen { border-radius: 40px; }
.scene-phone .wallet { padding: 46px 16px 18px; }

/* captions crossfade */
.scene-caps { position: absolute; bottom: clamp(40px, 8vh, 90px); left: 0; right: 0; text-align: center; z-index: 4; padding-inline: 22px; }
.scene-cap { position: absolute; left: 0; right: 0; opacity: 0; transform: translateY(14px); transition: opacity .5s var(--ease-out), transform .5s var(--ease-out); }
.scene-cap.active { opacity: 1; transform: none; position: relative; }
.scene-cap h3 { font-size: clamp(24px, 3vw, 40px); font-weight: 600; color: #fff; letter-spacing: -0.015em; margin: 0; }
.scene-light .scene-cap h3 { color: var(--ink); }
.scene-cap p { font-size: var(--fs-body-lg); color: rgba(255,255,255,0.66); max-width: 36ch; margin: 12px auto 0; }
.scene-light .scene-cap p { color: var(--ink-sub); }
.scene-progress { position: absolute; top: calc(50% - 70px); right: clamp(24px, 6vw, 90px); display: flex; flex-direction: column; gap: 9px; z-index: 4; }
.scene-progress i { width: 6px; height: 30px; border-radius: 3px; background: rgba(255,255,255,0.18); transition: background .3s; }
.scene-light .scene-progress i { background: rgba(0,0,0,0.12); }
.scene-progress i.on { background: var(--accent); }

/* ---------------------------------------------------------------------------
 * FEATURE ROWS (alternating image / text)
 * ------------------------------------------------------------------------- */
.frow { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(40px, 6vw, 88px); align-items: center; padding-block: clamp(56px, 8vw, 110px); }
.frow:nth-child(even) .frow-media { order: -1; }
.frow-copy .eyebrow { color: var(--accent-deep); }
.frow-copy .eyebrow::before { background: var(--accent); }
.frow h2 { font-size: clamp(28px, 3.4vw, 44px); font-weight: 600; letter-spacing: -0.015em; line-height: 1.1; margin: 0 0 16px; }
.frow p { font-size: var(--fs-body-lg); color: var(--ink-sub); line-height: var(--lh-loose); margin: 0 0 18px; }
.frow-list { list-style: none; padding: 0; margin: 18px 0 0; display: flex; flex-direction: column; gap: 12px; }
.frow-list li { display: flex; gap: 11px; align-items: flex-start; color: var(--fg-1); }
.frow-list .mdi { color: var(--accent); font-size: 20px; margin-top: 1px; flex: none; }
.frow-media { border-radius: var(--radius-xl); background: var(--accent-soft); aspect-ratio: 4/3; display: grid; place-items: center; overflow: hidden; position: relative; border: 1px solid var(--border); }
.frow-media .mdi { font-size: clamp(80px, 10vw, 150px); color: var(--accent); opacity: .8; }
.frow-media img { width: 100%; height: 100%; object-fit: cover; }

/* ---------------------------------------------------------------------------
 * FEATURE GRID (3-up cards)
 * ------------------------------------------------------------------------- */
.fgrid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.fgrid.cols-2 { grid-template-columns: repeat(2, 1fr); }
.fcard { background: var(--gray-tile); border-radius: var(--radius-lg); padding: 30px; }
.fcard .ic { width: 48px; height: 48px; border-radius: 12px; background: var(--accent-soft); color: var(--accent-deep); display: grid; place-items: center; font-size: 24px; margin-bottom: 18px; }
.fcard h4 { font-size: var(--fs-h4); font-weight: 600; margin: 0 0 8px; }
.fcard p { font-size: var(--fs-body); color: var(--ink-sub); line-height: var(--lh-loose); margin: 0; }

/* ---------------------------------------------------------------------------
 * STEPS (how it works)
 * ------------------------------------------------------------------------- */
.steps { display: grid; grid-template-columns: repeat(4, 1fr); gap: 22px; counter-reset: step; }
.step { position: relative; }
.step .n { width: 40px; height: 40px; border-radius: 50%; background: var(--accent); color: #fff; font-weight: 700; display: grid; place-items: center; margin-bottom: 16px; }
.step h4 { font-size: var(--fs-h5); font-weight: 600; margin: 0 0 6px; }
.step p { font-size: var(--fs-body-sm); color: var(--ink-sub); margin: 0; line-height: var(--lh-loose); }

/* ---------------------------------------------------------------------------
 * CROSS-SELL strip
 * ------------------------------------------------------------------------- */
.xsell { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.xcard { display: flex; flex-direction: column; gap: 10px; padding: 26px; border-radius: var(--radius-lg); border: 1px solid var(--border); background: #fff; text-decoration: none; color: inherit; transition: transform var(--dur-base) var(--ease-out), box-shadow var(--dur-base) var(--ease-out); }
.xcard:hover { transform: translateY(-3px); box-shadow: var(--shadow-3); }
.xcard img { height: 26px; width: auto; align-self: flex-start; }
.xcard .rc-word { font-weight: 700; font-size: 19px; color: var(--fs-navy); }
.xcard .rc-word span { color: var(--rc-purple); }
.xcard p { font-size: var(--fs-body-sm); color: var(--ink-sub); margin: 0; line-height: var(--lh-loose); }
.xcard .textlink { margin-top: auto; }

/* ---------------------------------------------------------------------------
 * CTA STRIP
 * ------------------------------------------------------------------------- */
.cta-strip { text-align: center; padding-block: clamp(64px, 9vw, 120px); background: var(--gray-tile); }
.cta-strip.dark { background: #000; color: #fff; }
.cta-strip h2 { font-size: clamp(30px, 4vw, 52px); font-weight: 600; letter-spacing: -0.018em; margin: 0 0 14px; }
.cta-strip p { font-size: var(--fs-body-lg); color: var(--ink-sub); max-width: 44ch; margin: 0 auto 28px; }
.cta-strip.dark p { color: rgba(255,255,255,0.72); }
.cta-strip .cta-actions { display: flex; gap: 14px; justify-content: center; flex-wrap: wrap; }

/* ---------------------------------------------------------------------------
 * GENERIC content (about / article / contact)
 * ------------------------------------------------------------------------- */
.lede { font-size: clamp(22px, 2.6vw, 32px); font-weight: 400; line-height: 1.4; color: var(--ink); letter-spacing: -0.01em; }
.prose { max-width: 720px; margin-inline: auto; }
.prose h2 { font-size: var(--fs-h3); font-weight: 600; margin: 48px 0 14px; }
.prose p { font-size: var(--fs-body-lg); color: var(--fg-1); line-height: var(--lh-loose); }
.prose img { border-radius: var(--radius-lg); margin: 28px 0; }

.values { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.value { padding: 28px; border-radius: var(--radius-lg); background: var(--gray-tile); }
.value .mdi { font-size: 30px; color: var(--link-blue); margin-bottom: 14px; }
.value h4 { font-size: var(--fs-h5); font-weight: 600; margin: 0 0 8px; }
.value p { font-size: var(--fs-body); color: var(--ink-sub); margin: 0; line-height: var(--lh-loose); }

/* leadership / team */
.team { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; }
.member { text-align: center; }
.member .ph { aspect-ratio: 1; border-radius: var(--radius-lg); background: linear-gradient(150deg, var(--neutral-200), var(--neutral-300)); display: grid; place-items: center; margin-bottom: 14px; color: var(--neutral-500); font-size: 40px; }
.member h5 { font-size: var(--fs-body-lg); font-weight: 600; margin: 0; }
.member span { font-size: var(--fs-body-sm); color: var(--ink-sub); }

/* timeline */
.timeline { max-width: 760px; margin-inline: auto; border-left: 2px solid var(--border); padding-left: 32px; display: flex; flex-direction: column; gap: 34px; }
.tline { position: relative; }
.tline::before { content: ""; position: absolute; left: -41px; top: 4px; width: 14px; height: 14px; border-radius: 50%; background: var(--fs-cyan); border: 3px solid #fff; box-shadow: 0 0 0 1px var(--border); }
.tline .yr { font-size: var(--fs-h4); font-weight: 700; color: var(--fs-navy); }
.tline p { color: var(--ink-sub); margin: 6px 0 0; }

/* ============================================================================
 * NEWSROOM
 * ========================================================================== */
.news-hero { padding-top: 110px; padding-bottom: 8px; }
.news-filter { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 36px; }
.news-filter button { font-family: inherit; font-size: var(--fs-body-sm); font-weight: 600; padding: 9px 18px; border-radius: var(--radius-pill); border: 1px solid var(--border); background: #fff; color: var(--fg-2); cursor: pointer; transition: all var(--dur-base) var(--ease-out); }
.news-filter button:hover { border-color: var(--fs-navy); color: var(--fs-navy); }
.news-filter button.active { background: var(--fs-navy); border-color: var(--fs-navy); color: #fff; }

.feature-post { display: grid; grid-template-columns: 1.3fr 1fr; gap: 40px; align-items: center; border-radius: var(--radius-xl); overflow: hidden; background: #fff; border: 1px solid var(--border); margin-bottom: 48px; text-decoration: none; color: inherit; transition: box-shadow var(--dur-base) var(--ease-out); }
.feature-post:hover { box-shadow: var(--shadow-3); }
.feature-post .fp-thumb { aspect-ratio: 16/10; background: linear-gradient(135deg, var(--fs-navy), var(--fs-navy-700)); display: grid; place-items: center; }
.feature-post .fp-thumb .mdi { font-size: 64px; color: rgba(255,255,255,0.5); }
.feature-post .fp-body { padding: 14px 40px 14px 0; }
.feature-post .news-cat { color: var(--fs-navy-700); font-size: var(--fs-overline); font-weight: 700; letter-spacing: var(--tracking-overline); text-transform: uppercase; }
.feature-post h2 { font-size: clamp(26px, 2.8vw, 38px); font-weight: 600; letter-spacing: -0.015em; line-height: 1.12; margin: 12px 0; }
.feature-post .excerpt { color: var(--ink-sub); line-height: var(--lh-loose); }
.feature-post .date { color: var(--fg-3); font-size: var(--fs-body-sm); margin-top: 14px; display: block; }

.news-list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 22px; }

/* article */
.article-hero { max-width: 760px; margin-inline: auto; text-align: left; padding-top: 120px; padding-bottom: 0; padding-inline: 32px; }
.article-hero .news-cat { color: var(--fs-navy-700); font-size: var(--fs-overline); font-weight: 700; letter-spacing: var(--tracking-overline); text-transform: uppercase; }
.article-hero h1 { font-size: clamp(30px, 3.6vw, 46px); font-weight: 600; letter-spacing: -0.018em; line-height: 1.12; margin: 14px 0 16px; }
.article-meta { display: flex; gap: 14px; justify-content: flex-start; align-items: center; color: var(--fg-3); font-size: var(--fs-body-sm); }
.article-cover { aspect-ratio: 16/7; border-radius: var(--radius-xl); background: linear-gradient(135deg, var(--fs-navy), var(--fs-navy-700)); margin: 28px auto 32px; max-width: 1000px; display: grid; place-items: center; }
.article-cover .mdi { font-size: 80px; color: rgba(255,255,255,0.4); }

/* ============================================================================
 * CONTACT
 * ========================================================================== */
.contact-grid { display: grid; grid-template-columns: 1fr 1.1fr; gap: clamp(40px, 6vw, 80px); align-items: start; }
.field { margin-bottom: 18px; }
.field label { display: block; font-size: var(--fs-body-sm); font-weight: 600; margin-bottom: 7px; color: var(--fg-1); }
.field input, .field select, .field textarea {
  width: 100%; font-family: inherit; font-size: var(--fs-body); padding: 13px 15px;
  border: 1px solid var(--border-strong); border-radius: var(--radius-md); background: #fff; color: var(--fg-1);
  transition: border-color var(--dur-fast) var(--ease-out), box-shadow var(--dur-fast) var(--ease-out);
}
.field input:focus, .field select:focus, .field textarea:focus { outline: none; border-color: var(--fs-cyan); box-shadow: 0 0 0 3px rgba(9,208,234,0.18); }
.field textarea { min-height: 120px; resize: vertical; }
.field-row { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.contact-aside .card { margin-bottom: 16px; }
.contact-aside .ic-row { display: flex; gap: 14px; align-items: flex-start; margin-bottom: 18px; }
.contact-aside .ic-row .mdi { font-size: 22px; color: var(--fs-navy-700); margin-top: 2px; }
.contact-aside .ic-row h5 { margin: 0 0 3px; font-size: var(--fs-body); }
.contact-aside .ic-row p { margin: 0; font-size: var(--fs-body-sm); color: var(--ink-sub); }

/* ============================================================================
 * CATEGORY HERO (Credentials / Commerce) — split copy + device/visual
 * ========================================================================== */
.cat-hero { text-align: left; min-height: auto; padding-top: 68px; }
.cat-hero-grid { display: grid; grid-template-columns: 1.04fr 0.96fr; gap: clamp(32px, 5vw, 76px); align-items: center; padding-top: clamp(74px, 12vh, 132px); padding-bottom: clamp(48px, 7vh, 90px); }
.cat-hero-copy { text-align: left; }
.cat-hero-copy h1 { text-align: left; }
.cat-hero-copy .phero-sub { margin-left: 0; margin-right: 0; max-width: 40ch; text-align: left; }
.cat-hero-copy .phero-cta { justify-content: flex-start; }
.cat-hero-media { display: grid; place-items: center; position: relative; }

/* real wallet phone screenshot */
.wallet-photo { position: relative; width: min(330px, 78%); }
.wallet-photo img { width: 100%; filter: drop-shadow(0 44px 70px rgba(15,26,54,0.30)); }
.wallet-photo::before { content: ""; position: absolute; inset: -8% -14%; z-index: -1; background: radial-gradient(circle at 50% 42%, rgba(9,208,234,0.26), transparent 64%); filter: blur(40px); }
@media (prefers-reduced-motion: no-preference) { .wallet-photo { animation: cardFloat 7s ease-in-out infinite; } }
@keyframes cardFloat { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-14px); } }

/* commerce balance-card stack (mirrors the real wallet asset) */
.balance-stack { display: flex; flex-direction: column; gap: 14px; width: min(360px, 84%); }
.balance-stack .bcard { background: #fff; border-radius: 18px; padding: 18px 22px; box-shadow: var(--shadow-3); display: flex; flex-direction: column; gap: 2px; }
.balance-stack .bcard .l { font-size: var(--fs-body); color: var(--ink-sub); }
.balance-stack .bcard .v { font-size: 30px; font-weight: 600; color: var(--ink); letter-spacing: -0.01em; }
.balance-stack .bcard.accent-row { background: linear-gradient(150deg, #f59e1b, #ef6c00); }
.balance-stack .bcard.accent-row .l, .balance-stack .bcard.accent-row .v { color: #fff; }

/* product block logo inside feature rows on category pages */
.frow-logo { height: 30px; width: auto; margin-bottom: 16px; display: block; }
.frow-rc-word { font-weight: 700; font-size: 24px; color: var(--fs-navy); margin-bottom: 16px; display: block; }
.frow-rc-word span { color: var(--rc-purple); }

/* kiosk mock */
.kiosk { position: relative; width: min(360px, 82%); }
.kiosk-screen { aspect-ratio: 3/4; border-radius: 22px; background: #0c1124; border: 10px solid #1a2238; box-shadow: var(--shadow-5); overflow: hidden; display: flex; flex-direction: column; }
.kiosk-head { background: linear-gradient(150deg, #f59e1b, #ef6c00); color: #fff; padding: 20px; font-weight: 700; display: flex; align-items: center; gap: 9px; }
.kiosk-body { background: #fff; flex: 1; padding: 20px; display: flex; flex-direction: column; gap: 14px; }
.kiosk-amt { text-align: center; padding: 14px 0; }
.kiosk-amt .l { font-size: var(--fs-body-sm); color: var(--ink-sub); text-transform: uppercase; letter-spacing: .08em; font-weight: 700; }
.kiosk-amt .v { font-size: 46px; font-weight: 600; color: var(--ink); letter-spacing: -0.02em; }
.kiosk-keys { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.kiosk-keys span { background: #f5f5f7; border-radius: 12px; padding: 14px 0; text-align: center; font-weight: 600; color: var(--ink); }
.kiosk-cta { background: var(--bu-orange); color: #fff; border-radius: 14px; padding: 15px; text-align: center; font-weight: 700; }
.kiosk-stand { width: 34%; height: 26px; background: linear-gradient(180deg,#1a2238,#0c1124); margin: 0 auto; border-radius: 0 0 8px 8px; }
.kiosk-base { width: 56%; height: 12px; background: #1a2238; margin: 0 auto; border-radius: 8px; }

/* ============================================================================
 * "YOUR ID, ON ___" — Apple-style emerging-device hero (black canvas)
 * ========================================================================== */
.id-hero { background: #000; color: #fff; min-height: 100vh; display: flex; flex-direction: column; align-items: center; overflow: hidden; text-align: center; padding-top: 68px; }
.id-hero-copy { flex: none; position: relative; z-index: 5; padding-top: clamp(38px, 5.5vh, 74px); padding-inline: 22px; }
.id-eyebrow { font-size: var(--fs-body); font-weight: 600; color: var(--fs-cyan); margin-bottom: 14px; }
.id-headline { font-size: clamp(40px, 6.2vw, 82px); font-weight: 600; letter-spacing: -0.02em; line-height: 1.02; margin: 0; color: #fff; }
.id-word { color: var(--fs-cyan); }
.id-sub { font-size: clamp(18px, 2vw, 24px); color: rgba(255,255,255,0.72); max-width: 34ch; margin: 16px auto 0; line-height: 1.32; }
.id-actions { display: flex; gap: 14px; justify-content: center; margin-top: 26px; flex-wrap: wrap; }
.id-switch { display: inline-flex; gap: 5px; margin-top: 30px; padding: 5px; border-radius: var(--radius-pill); background: rgba(255,255,255,0.08); border: 1px solid rgba(255,255,255,0.14); position: relative; z-index: 5; }
.id-dot { font-family: inherit; font-size: var(--fs-body-sm); font-weight: 600; color: rgba(255,255,255,0.7); background: transparent; border: 0; padding: 8px 17px; border-radius: var(--radius-pill); cursor: pointer; transition: color var(--dur-base) var(--ease-out), background var(--dur-base) var(--ease-out); }
.id-dot:hover { color: #fff; }
.id-dot.active { background: #fff; color: var(--fs-navy); }

.id-stage { position: relative; flex: 1 1 auto; width: 100%; min-height: clamp(480px, 64vh, 820px); z-index: 2; margin-top: clamp(4px, 1.6vh, 20px); overflow: hidden; }
.id-glow { position: absolute; left: 50%; top: 4%; transform: translateX(-50%); width: 680px; height: 680px; border-radius: 50%; background: radial-gradient(circle, rgba(9,208,234,0.30), transparent 60%); filter: blur(64px); }
.id-device { position: absolute; inset: 0; display: flex; justify-content: center; align-items: flex-end; opacity: 0; transition: opacity .55s var(--ease-out); pointer-events: none; }
.id-device.is-active { opacity: 1; pointer-events: auto; }
.id-img { max-width: min(600px, 94vw); max-height: 100%; width: auto; height: auto; filter: drop-shadow(0 26px 64px rgba(0,0,0,0.6)); }

/* Apple-watch placeholder frame */
.watch { width: 232px; height: 272px; border-radius: 64px; background: linear-gradient(150deg, #2a2d34, #0a0c10); padding: 14px; box-shadow: 0 30px 60px rgba(0,0,0,0.55); position: relative; margin-top: 70px; }
.watch::before, .watch::after { content: ""; position: absolute; left: 30%; right: 30%; height: 64px; background: linear-gradient(#3a3d44, #20242c); z-index: -1; }
.watch::before { top: -50px; border-radius: 16px 16px 0 0; }
.watch::after { bottom: -50px; border-radius: 0 0 16px 16px; }
.watch-screen { background: #05060a; border-radius: 50px; height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 7px; color: #fff; padding: 20px; }
.watch-screen img { width: 30px; }
.watch-screen .l { font-size: 10px; letter-spacing: .12em; text-transform: uppercase; color: var(--fs-cyan); font-weight: 700; }
.watch-screen .nm { font-size: 17px; font-weight: 600; }
.watch-screen .mini { width: 76%; height: 26px; border-radius: 6px; background-color: #fff; background-image: repeating-linear-gradient(90deg, #0b1430 0 2px, transparent 2px 4px); margin-top: 6px; }

/* android placeholder frame */
.android { width: 296px; height: 600px; border-radius: 36px; background: linear-gradient(150deg, #2a2d34, #0a0c10); padding: 11px; box-shadow: 0 30px 60px rgba(0,0,0,0.55); }
.android-screen { background: #0b1430; border-radius: 26px; height: 100%; overflow: hidden; position: relative; }
.android-screen .wallet { padding: 40px 14px 16px; }
.placeholder-tag { position: absolute; bottom: 14px; left: 50%; transform: translateX(-50%); font-size: 11px; letter-spacing: .06em; color: rgba(255,255,255,0.4); white-space: nowrap; }

/* ============================================================================
 * MODAL (Learn more — partner choice / no lock-in)
 * ========================================================================== */
.fs-modal { position: fixed; inset: 0; z-index: 300; display: none; align-items: center; justify-content: center; padding: 24px; background: rgba(11,20,48,0.55); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); }
.fs-modal.open { display: flex; }
.fs-modal-card { background: #fff; color: var(--fg-1); border-radius: var(--radius-lg); max-width: 580px; width: 100%; padding: clamp(30px, 5vw, 46px); box-shadow: var(--shadow-5); position: relative; max-height: 88vh; overflow: auto; }
.fs-modal.open .fs-modal-card { animation: modalIn .32s var(--ease-out); }
@keyframes modalIn { from { opacity: 0; transform: translateY(16px) scale(.98); } to { opacity: 1; transform: none; } }
.fs-modal-card .eyebrow { color: var(--fs-navy-700); }
.fs-modal-card h3 { font-size: var(--fs-h3); font-weight: 600; letter-spacing: -0.01em; margin: 0 0 10px; }
.fs-modal-card p { color: var(--fg-2); line-height: var(--lh-loose); font-size: var(--fs-body-lg); margin: 0 0 14px; }
.fs-modal-close { position: absolute; top: 16px; right: 16px; width: 36px; height: 36px; border-radius: 50%; border: 0; background: var(--surface-soft); color: var(--fg-2); font-size: 20px; cursor: pointer; display: grid; place-items: center; transition: background var(--dur-fast) var(--ease-out); }
.fs-modal-close:hover { background: var(--surface-mute); }
.fs-modal-pt { display: flex; align-items: center; gap: 11px; margin: 4px 0 18px; padding: 14px 16px; background: var(--primary-soft); border-radius: var(--radius-md); font-weight: 600; color: var(--fs-navy); }
.fs-modal-pt .mdi { font-size: 22px; color: var(--fs-navy-700); }
.fs-modal-actions { display: flex; gap: 12px; margin-top: 22px; flex-wrap: wrap; }

/* ---------------------------------------------------------------------------
 * RESPONSIVE
 * ------------------------------------------------------------------------- */
@media (max-width: 1000px) {
  .fgrid, .steps, .values, .xsell, .news-list { grid-template-columns: 1fr; }
  .fgrid.cols-2 { grid-template-columns: 1fr; }
  .team { grid-template-columns: 1fr 1fr; }
  .frow, .feature-post, .contact-grid { grid-template-columns: 1fr; gap: 32px; }
  .frow:nth-child(even) .frow-media { order: 0; }
  .feature-post .fp-body { padding: 0 28px 28px; }
  .steps { gap: 28px; }
  .cat-hero-grid { grid-template-columns: 1fr; gap: 24px; text-align: center; padding-top: clamp(60px,9vh,100px); }
  .cat-hero-copy, .cat-hero-copy h1 { text-align: center; }
  .cat-hero-copy .phero-sub { margin-inline: auto; text-align: center; }
  .cat-hero-copy .phero-cta { justify-content: center; }
}
@media (max-width: 560px) {
  .team { grid-template-columns: 1fr; }
  .field-row { grid-template-columns: 1fr; }
  .scene-phone { width: 240px; height: 500px; }
}
