/* ============================================================
   xMutual — Pre-Seed Investor Deck
   Design system: money-grade fintech. Cobalt + electric lime.
   Display: Clash Display · Body: Hanken Grotesk
   ============================================================ */

:root {
  /* Brand */
  --navy:        #07123a;
  --navy-2:      #0a1b54;
  --cobalt:      #2747e8;
  --cobalt-600:  #1c37c4;
  --blue-bright: #3f7bff;
  --cyan:        #5ec6f5;
  --lime:        #c6f24e;
  --lime-bright: #d6ff5c;
  --lime-soft:   #eafdb6;

  /* Neutrals */
  --paper:   #f5f6fb;
  --paper-2: #eef1f9;
  --ink:     #0a1230;
  --slate:   #58607c;
  --slate-2: #878ea8;
  --line:    #e2e6f2;
  --white:   #ffffff;

  /* Type */
  --display: "Clash Display", "Hanken Grotesk", system-ui, sans-serif;
  --body:    "Hanken Grotesk", system-ui, sans-serif;

  --radius:   22px;
  --radius-s: 14px;

  --shadow-sm: 0 2px 8px rgba(10,18,48,.06);
  --shadow:    0 18px 50px -22px rgba(10,18,48,.28);
  --shadow-lg: 0 40px 90px -30px rgba(7,18,58,.45);

  --ease: cubic-bezier(.22,.61,.36,1);
}

* { box-sizing: border-box; margin: 0; padding: 0; }

html { scroll-behavior: smooth; }

body {
  font-family: var(--body);
  background: var(--navy);
  color: var(--ink);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: hidden;
}

/* ---------- Deck mechanics ---------- */
.deck {
  height: 100vh;
  overflow-y: scroll;
  scroll-snap-type: y mandatory;
  scroll-behavior: smooth;
  scrollbar-width: none;
}
.deck::-webkit-scrollbar { display: none; }

.slide {
  position: relative;
  height: 100vh;
  width: 100%;
  scroll-snap-align: start;
  scroll-snap-stop: always;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: clamp(40px, 6vw, 96px) clamp(28px, 7vw, 120px);
  overflow: hidden;
}

/* surfaces */
.slide--dark  { background: radial-gradient(120% 130% at 78% 8%, #133084 0%, var(--navy-2) 42%, var(--navy) 100%); color: var(--white); }
.slide--cobalt{ background: radial-gradient(120% 120% at 20% 100%, #2c52ff 0%, var(--cobalt) 45%, var(--cobalt-600) 100%); color: var(--white); }
.slide--paper { background: var(--paper); color: var(--ink); }
.slide--white { background: var(--white); color: var(--ink); }

/* grain + ring motif */
.slide--dark::after, .slide--cobalt::after {
  content: ""; position: absolute; inset: 0; pointer-events: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.55'/%3E%3C/svg%3E");
  opacity: .04; mix-blend-mode: overlay;
}

/* concentric ring decoration */
.rings { position: absolute; pointer-events: none; opacity: .5; }
.rings span {
  position: absolute; border-radius: 50%; border: 1px solid currentColor;
  inset: 0; opacity: .25;
}
.ring-tr { top: -180px; right: -140px; width: 460px; height: 460px; color: var(--cyan); }
.ring-bl { bottom: -200px; left: -160px; width: 520px; height: 520px; color: var(--lime); opacity: .35; }
.rings span:nth-child(2){ transform: scale(.74); opacity:.5; }
.rings span:nth-child(3){ transform: scale(.5); opacity:.7; }
.rings span:nth-child(2).accent{ border-color: var(--lime); }

/* ---------- Typography ---------- */
.kicker {
  font-family: var(--body);
  font-weight: 600; font-size: clamp(12px, .85vw, 14px);
  letter-spacing: .22em; text-transform: uppercase;
  display: inline-flex; align-items: center; gap: 10px;
}
.kicker::before { content:""; width: 26px; height: 2px; background: var(--lime); display:inline-block; }
.slide--paper .kicker, .slide--white .kicker { color: var(--cobalt); }
.slide--dark .kicker, .slide--cobalt .kicker { color: var(--lime); }
.slide--dark .kicker::before, .slide--cobalt .kicker::before { background: var(--lime); }

h1.title {
  font-family: var(--display); font-weight: 600;
  font-size: clamp(40px, 5.4vw, 92px); line-height: .98; letter-spacing: -.02em;
}
h2.title {
  font-family: var(--display); font-weight: 600;
  font-size: clamp(34px, 4.2vw, 68px); line-height: 1; letter-spacing: -.018em;
}
.title .hl { color: var(--lime); }
.slide--paper .title .hl, .slide--white .title .hl { color: var(--cobalt); }
.lead { font-size: clamp(17px, 1.5vw, 24px); line-height: 1.45; max-width: 60ch; color: var(--slate); font-weight: 400; }
.slide--dark .lead, .slide--cobalt .lead { color: rgba(255,255,255,.82); }

.eyebrow-row { display:flex; align-items:center; justify-content:space-between; gap: 20px; margin-bottom: 30px; }

/* slide chrome: logo + index */
.brandmark { display:flex; align-items:center; gap: 9px; font-family: var(--display); font-weight: 600; font-size: 21px; letter-spacing: -.02em; }
.brandmark .x { color: var(--lime); }
.brandmark .m { color: currentColor; }
.slide--paper .brandmark .m, .slide--white .brandmark .m { color: var(--cobalt); }
.brandmark .dot { width: 7px; height: 7px; border-radius: 50%; background: var(--lime); }

.snum { font-family: var(--body); font-weight: 600; font-size: 13px; letter-spacing: .08em; opacity: .6; }

/* ---------- Reusable bits ---------- */
.pill {
  display:inline-flex; align-items:center; gap: 8px;
  padding: 7px 14px; border-radius: 999px;
  font-size: 13px; font-weight: 600; letter-spacing: .01em;
  background: rgba(198,242,78,.16); color: var(--lime);
  border: 1px solid rgba(198,242,78,.3);
}
.slide--paper .pill, .slide--white .pill { background: rgba(39,71,232,.08); color: var(--cobalt-600); border-color: rgba(39,71,232,.18); }

.btn {
  display:inline-flex; align-items:center; gap: 10px;
  padding: 14px 22px; border-radius: 999px; border: 0; cursor: pointer;
  font-family: var(--body); font-weight: 600; font-size: 15px; text-decoration: none;
  transition: transform .2s var(--ease), box-shadow .2s var(--ease);
}
.btn--lime { background: var(--lime); color: var(--navy); }
.btn--lime:hover { transform: translateY(-2px); box-shadow: 0 14px 30px -12px rgba(198,242,78,.7); }
.btn--ghost { background: transparent; color: inherit; border: 1px solid currentColor; opacity:.85; }
.btn--ghost:hover { opacity: 1; }

/* card */
.card {
  background: var(--white); border: 1px solid var(--line);
  border-radius: var(--radius); box-shadow: var(--shadow-sm);
}

/* ---------- Navigation UI ---------- */
.progress { position: fixed; top: 0; left: 0; height: 3px; background: var(--lime); width: 0; z-index: 60; transition: width .4s var(--ease); box-shadow: 0 0 12px rgba(198,242,78,.6); }

.nav {
  position: fixed; right: 26px; bottom: 26px; z-index: 60;
  display: flex; align-items: center; gap: 10px;
  background: rgba(8,18,58,.6); backdrop-filter: blur(14px);
  border: 1px solid rgba(255,255,255,.14); border-radius: 999px; padding: 8px;
}
.nav button {
  width: 40px; height: 40px; border-radius: 50%; border: 0; cursor: pointer;
  background: rgba(255,255,255,.1); color: #fff; font-size: 17px; line-height: 1;
  display:grid; place-items:center; transition: background .2s, transform .2s;
}
.nav button:hover { background: var(--lime); color: var(--navy); transform: translateY(-1px); }
.nav .count { color: #fff; font-weight: 600; font-size: 13px; padding: 0 8px; letter-spacing: .06em; min-width: 56px; text-align:center; }
.nav .count b { color: var(--lime); }

.dots { position: fixed; left: 22px; top: 50%; transform: translateY(-50%); z-index: 60; display:flex; flex-direction: column; gap: 9px; }
.dots a { width: 8px; height: 8px; border-radius: 50%; background: rgba(140,150,190,.4); transition: all .25s var(--ease); }
.dots a.active { background: var(--lime); height: 22px; border-radius: 6px; }

/* entrance animation when slide is active */
.reveal > * { opacity: 0; transform: translateY(22px); }
.slide.in-view .reveal > * { animation: rise .7s var(--ease) forwards; }
.slide.in-view .reveal > *:nth-child(1){ animation-delay:.05s }
.slide.in-view .reveal > *:nth-child(2){ animation-delay:.13s }
.slide.in-view .reveal > *:nth-child(3){ animation-delay:.21s }
.slide.in-view .reveal > *:nth-child(4){ animation-delay:.29s }
.slide.in-view .reveal > *:nth-child(5){ animation-delay:.37s }
.slide.in-view .reveal > *:nth-child(6){ animation-delay:.45s }
@keyframes rise { to { opacity: 1; transform: none; } }

/* generic grid helpers */
.grid { display: grid; gap: clamp(16px, 1.6vw, 26px); }
.two  { grid-template-columns: 1.05fr .95fr; align-items: center; }
.split { display:grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: clamp(28px,4vw,72px); align-items:center; width:100%; }

/* ====== HERO (slide 1) ====== */
.hero { align-items: center; text-align: center; }
.hero .logo-xl {
  font-family: var(--display); font-weight: 600; letter-spacing: -.03em;
  font-size: clamp(64px, 12vw, 190px); line-height: .9;
}
.hero .logo-xl .x { color: var(--lime); }
.hero .logo-xl .m { color: var(--cyan); }
.hero .tagline { font-family: var(--display); font-weight: 500; font-size: clamp(20px,2.4vw,38px); line-height: 1.12; letter-spacing: -.01em; color: #fff; max-width: 18ch; }
.hero .url { color: var(--lime); font-weight: 600; letter-spacing: .04em; }
.float-badges { display:flex; gap: 14px; flex-wrap: wrap; justify-content:center; }

/* ====== Problem (slide 2) ====== */
.problist { display: grid; gap: 16px; }
.problem-item {
  display: grid; grid-template-columns: auto 1fr; gap: 16px; align-items: start;
  padding: 18px 20px; border-radius: var(--radius-s);
  background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.09);
  transition: transform .25s var(--ease), background .25s;
}
.problem-item:hover { transform: translateX(6px); background: rgba(255,255,255,.09); }
.problem-item .ix { font-family: var(--display); color: var(--lime); font-weight: 600; font-size: 20px; }
.problem-item p { font-size: clamp(14px,1.05vw,17px); line-height: 1.4; color: rgba(255,255,255,.84); }

/* ====== Solution (slide 3) ====== */
.sol-points { display:grid; gap: 18px; margin-top: 8px; }
.sol-point { display:flex; gap: 14px; align-items:flex-start; }
.sol-point .tick { flex:none; width: 30px; height: 30px; border-radius: 9px; background: var(--lime); color: var(--navy); display:grid; place-items:center; font-weight:700; }
.sol-point span { font-size: clamp(15px,1.15vw,18px); line-height:1.4; }

/* ====== Team (slide 4) ====== */
.team-grid { display:grid; grid-template-columns: repeat(3, 1fr); gap: clamp(14px,1.4vw,22px); }
.member { background: var(--white); border:1px solid var(--line); border-radius: 18px; padding: 16px; display:flex; gap: 14px; box-shadow: var(--shadow-sm); transition: transform .25s var(--ease), box-shadow .25s; }
.member:hover { transform: translateY(-4px); box-shadow: var(--shadow); }
.member .photo { width: 72px; height: 84px; border-radius: 12px; object-fit: cover; flex:none; background:var(--paper-2); }
.member h4 { font-family: var(--display); font-size: 17px; font-weight: 600; letter-spacing:-.01em; line-height:1.05; }
.member .role { color: var(--cobalt); font-weight:600; font-size: 12.5px; margin: 3px 0 7px; }
.member .bio { color: var(--slate); font-size: 11.5px; line-height: 1.34; }
.member .li { display:inline-flex; align-items:center; gap:5px; margin-top:8px; font-size:11px; font-weight:600; color:var(--slate-2); text-decoration:none; }
.member .li:hover { color: var(--cobalt); }
.member .li svg { width: 13px; height: 13px; }

/* ====== Stat tiles (traction) ====== */
.stat-row { display:grid; grid-template-columns: repeat(3,1fr); gap: clamp(16px,1.8vw,28px); width:100%; }
.stat {
  border-radius: var(--radius); padding: clamp(24px,2.4vw,40px);
  background: linear-gradient(160deg, rgba(255,255,255,.06), rgba(255,255,255,.02));
  border: 1px solid rgba(255,255,255,.1); position: relative; overflow:hidden;
}
.stat.feature { background: linear-gradient(160deg, var(--lime) 0%, #aee43a 100%); color: var(--navy); border-color: transparent; }
.stat .num { font-family: var(--display); font-weight: 600; font-size: clamp(40px,4.4vw,66px); line-height: .95; letter-spacing: -.02em; }
.stat .lbl { margin-top: 10px; font-size: 14px; font-weight: 500; opacity: .82; line-height: 1.3; }
.stat.feature .lbl { opacity: .72; }

/* ====== Market (slide 6) ====== */
.tam-rings { position: relative; aspect-ratio: 1; width: min(46vh, 480px); margin: auto; display:grid; place-items:center; }
.tam-rings .r { position:absolute; border-radius:50%; display:flex; align-items:flex-start; justify-content:center; padding-top:14px; font-weight:700; }
.tam-rings .r1 { inset:0; background: rgba(94,198,245,.12); border:1.5px solid var(--cyan); }
.tam-rings .r2 { inset:18%; background: rgba(63,123,255,.14); border:1.5px solid var(--blue-bright); }
.tam-rings .r3 { inset:40%; background: var(--lime); color: var(--navy); border:1.5px solid var(--lime); align-items:center; padding-top:0; }
.tam-rings .cap { font-family:var(--body); font-size:12px; letter-spacing:.12em; text-transform:uppercase; }
.tam-rings .val { font-family:var(--display); font-size: clamp(22px,2.4vw,34px); display:block; margin-top:2px; }
.tam-rings .r3 .val { font-size: clamp(26px,2.8vw,40px); }
.market-legend { display:grid; gap:16px; }
.market-legend .lg { display:grid; grid-template-columns:auto 1fr; gap:14px; align-items:center; }
.market-legend .sw { width:16px;height:16px;border-radius:5px; }
.market-legend h4 { font-family:var(--display); font-size: clamp(22px,2vw,30px); font-weight:600; }
.market-legend p { font-size:13px; color:var(--slate); }
.slide--dark .market-legend p { color: rgba(255,255,255,.7); }

/* ====== Business model (slide 7) ====== */
.bm-grid { display:grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.bm-card { padding: 26px; border-radius: var(--radius); background: rgba(255,255,255,.05); border:1px solid rgba(255,255,255,.1); }
.bm-card h4 { font-family:var(--display); font-weight:600; font-size:19px; margin-bottom:14px; color: var(--lime); }
.fee-line { display:flex; justify-content:space-between; align-items:baseline; padding:12px 0; border-bottom:1px dashed rgba(255,255,255,.14); }
.fee-line:last-child{ border:0; }
.fee-line .k { font-size:14px; opacity:.85; }
.fee-line .v { font-family:var(--display); font-weight:600; font-size:20px; color:#fff; }
.proj-banner { display:flex; gap:36px; flex-wrap:wrap; padding:22px 26px; border-radius:var(--radius); background: var(--lime); color: var(--navy); margin-top:6px; }
.proj-banner div span { display:block; font-size:12px; font-weight:600; letter-spacing:.1em; text-transform:uppercase; opacity:.65; }
.proj-banner div b { font-family:var(--display); font-weight:600; font-size: clamp(26px,2.6vw,38px); }

/* ====== Process / demo (slide 8) ====== */
.flow { display:grid; grid-template-columns: repeat(3,1fr); gap:14px; }
.flow-step { padding:18px; border-radius:16px; background: var(--white); border:1px solid var(--line); position:relative; }
.flow-step .n { font-family:var(--display); font-weight:600; color:var(--cobalt); font-size:14px; }
.flow-step h5 { font-size:14.5px; margin:6px 0 4px; font-weight:600; }
.flow-step p { font-size:12px; color:var(--slate); line-height:1.35; }

/* ====== Competitive (slide 9) ====== */
.ctable { width:100%; border-collapse: separate; border-spacing:0; border-radius: var(--radius); overflow:hidden; box-shadow: var(--shadow-sm); background:#fff; }
.ctable th, .ctable td { padding: 16px 18px; text-align:center; font-size: 14.5px; }
.ctable thead th { background: var(--cobalt); color:#fff; font-family:var(--display); font-weight:600; font-size:16px; }
.ctable thead th:first-child { text-align:left; }
.ctable tbody td:first-child { text-align:left; font-weight:600; color:var(--ink); }
.ctable tbody tr:nth-child(even){ background: var(--paper); }
.ctable .own { background: rgba(198,242,78,.16); }
.ctable thead th.own { background: linear-gradient(180deg,#1c37c4,#2747e8); position:relative; }
.yes { color:#16a34a; font-weight:800; font-size:18px; }
.no  { color:#cbd2e6; font-weight:800; font-size:18px; }

/* ====== Financials table (slide 10) ====== */
/* compact this dense slide so the footnote never clips on short / zoomed viewports;
   allow it to grow past 100vh as a safety net under extreme zoom (no hard clip) */
.slide--fin { height: auto; min-height: 100vh; padding-top: clamp(24px,3.2vw,50px); padding-bottom: clamp(20px,2.8vw,44px); }
.slide--fin .eyebrow-row { margin-bottom: 14px; }
.slide--fin h2.title { font-size: clamp(22px,2.3vw,36px) !important; margin-bottom: 10px !important; }
.slide--fin .fin th, .slide--fin .fin td { padding: 6.5px 13px; font-size: 12.5px; }
.slide--fin .fin thead th, .slide--fin .fin tbody th { font-size: 12px; }
.slide--fin > p { margin-top: 10px !important; }
.fin-wrap { width:100%; overflow:hidden; border-radius: var(--radius); box-shadow: var(--shadow); background:#fff; }
.fin { width:100%; border-collapse:collapse; font-variant-numeric: tabular-nums; }
.fin th, .fin td { padding: 12px 14px; text-align:right; font-size: 13.5px; white-space:nowrap; }
.fin thead th { background: var(--navy); color:#fff; font-weight:600; font-size:13px; }
.fin thead th:first-child, .fin tbody td:first-child { text-align:left; position:sticky; left:0; }
.fin tbody th { text-align:left; background:var(--paper); font-weight:600; color:var(--ink); font-size:13px; }
.fin tbody tr:nth-child(even) td { background:#fafbff; }
.fin .hl-row th, .fin .hl-row td { background: rgba(198,242,78,.18) !important; font-weight:700; }
.fin .y5 { color: var(--cobalt); }

/* ====== Use of funds (slide 11) ====== */
.uof { display:grid; gap:15px; }
.uof-row { display:grid; grid-template-columns: 56px minmax(150px,1.15fr) 1fr 58px; gap:16px; align-items:center; }
.uof-row .pct { font-family:var(--display); font-weight:600; font-size:22px; color:var(--cobalt); }
.uof-lab { font-size:13.5px; font-weight:600; color:var(--ink); line-height:1.2; }
.uof-bar { height: 30px; border-radius: 8px; background: var(--paper-2); overflow:hidden; position:relative; }
.uof-bar i { position:absolute; inset:0 auto 0 0; border-radius:8px; background: linear-gradient(90deg,var(--cobalt),var(--blue-bright)); display:block; }
.uof-row:nth-child(1) .uof-bar i { background: linear-gradient(90deg,#16307f,var(--cobalt)); }
.uof-row .amt { font-family:var(--display); font-weight:600; font-size:18px; text-align:right; }

/* ====== Risk (slide 12) ====== */
.risk-grid { display:grid; grid-template-columns: repeat(5,1fr); gap:14px; }
.risk { padding:20px; border-radius:16px; background: rgba(255,255,255,.05); border:1px solid rgba(255,255,255,.1); }
.risk .ico { width:38px;height:38px;border-radius:10px; background:rgba(198,242,78,.16); display:grid;place-items:center; margin-bottom:14px; }
.risk h5 { font-family:var(--display); font-weight:600; font-size:15px; margin-bottom:10px; color:var(--lime); }
.risk p { font-size:11.5px; line-height:1.4; color: rgba(255,255,255,.78); }

/* ====== Closing (slide 13) ====== */
.closing { align-items:center; text-align:center; }
.closing h1 { font-size: clamp(56px,9vw,150px); }
.contact-row { display:flex; gap: 26px; flex-wrap:wrap; justify-content:center; }
.contact-row a { color:#fff; text-decoration:none; font-weight:600; display:inline-flex; gap:9px; align-items:center; }
.contact-row a span.k { color: var(--lime); }

/* responsive */
@media (max-width: 900px) {
  .two, .split { grid-template-columns: 1fr; }
  .team-grid { grid-template-columns: 1fr 1fr; }
  .stat-row, .flow, .bm-grid { grid-template-columns: 1fr; }
  .risk-grid { grid-template-columns: 1fr 1fr; }
  .slide { padding: 70px 24px; height: auto; min-height: 100vh; }
}
