/* =============================================================
   index.css — Landing page only (hero, device, features, CTA)
   Loaded after styles.css
   ============================================================= */

/* ===================== HERO (shared) ===================== */
.hero { position: relative; padding-top: calc(var(--nav-h) + clamp(40px, 8vw, 90px)); padding-bottom: clamp(60px, 9vw, 120px); overflow: hidden; }
/* Interactive dots cloud — fades in around the cursor on hover (see main.js). */
.hero-dots { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 0; pointer-events: none; opacity: 0; transition: opacity .45s ease; }
.hero:hover .hero-dots { opacity: 1; }
@media (prefers-reduced-motion: reduce) { .hero:hover .hero-dots { opacity: .5; } }
.hero-badges { display: inline-flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.rating { display: inline-flex; align-items: center; gap: 9px; color: var(--text-dim); font-size: 14px; }
.rating .stars { color: #ffce4f; letter-spacing: 2px; font-size: 15px; }
.rating b { color: var(--text); font-weight: 600; }

.hero h1 {
  font-size: clamp(40px, 6.4vw, 78px);
  line-height: .98; letter-spacing: -.03em; font-weight: 600;
}
.hero .sub { color: var(--text-dim); font-size: clamp(17px, 2vw, 21px); max-width: 46ch; line-height: 1.5; }
.hero-icon-row { display: inline-flex; align-items: center; gap: 16px; }
.hero-icon-row .appmark { width: 64px; height: 64px; }
.hero-icon-row .pill { font-size: 13px; color: var(--text-dim); border: 1px solid var(--border-2); padding: 6px 13px; border-radius: 999px; background: rgba(255,255,255,.02); white-space: nowrap; }

/* ===================== DEVICE (iPhone) ===================== */
.device-wrap { position: relative; display: grid; place-items: center; }
.device-glow { position: absolute; width: 115%; height: 78%; top: 14%; left: 50%; transform: translateX(-50%);
  background: radial-gradient(closest-side, var(--glow-violet), transparent 72%); filter: blur(36px); opacity: .85; z-index: 0; }
.phone {
  position: relative; z-index: 1;
  width: clamp(252px, 31vw, 326px); aspect-ratio: 1406 / 2822;
  animation: float 7s ease-in-out infinite;
}
@keyframes float { 0%,100% { transform: translateY(0) rotate(-.4deg); } 50% { transform: translateY(-16px) rotate(.4deg); } }
/* Real device frame PNG sits on top; screenshot/mock sits behind in the screen window. */
.phone-frame { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 3; pointer-events: none;
  filter: drop-shadow(0 38px 70px rgba(0,0,0,.6)); }
.phone-screen { position: absolute; top: 3.61%; bottom: 3.65%; left: 7.11%; right: 7.18%;
  border-radius: 18.2% / 8.4%; overflow: hidden; background: #0a0c14; z-index: 1; }
.phone-screen img.app-shot { width: 100%; height: 100%; object-fit: cover; }

/* --- Placeholder app screen (replace with <img class="app-shot" src="{{ ... }}">) --- */
.mock { position: absolute; inset: 0; display: flex; flex-direction: column; color: var(--text); background: radial-gradient(120% 80% at 50% 0%, #161a28, #0a0c14 70%); }
.mock-status { display: flex; justify-content: space-between; align-items: center; padding: 16px 22px 6px; font-size: 12px; font-weight: 600; color: #cfd3dc; }
.mock-head { padding: 16px 22px 10px; }
.mock-head .greet { color: var(--muted); font-size: 12px; }
.mock-head .title { font-family: var(--font-display); font-size: 21px; font-weight: 600; margin-top: 2px; }
.mock-ring { margin: 6px 22px 14px; display: flex; align-items: center; gap: 14px; padding: 14px; border-radius: 16px; background: var(--grad-soft); border: 1px solid var(--border); }
.mock-ring .ring { width: 52px; height: 52px; border-radius: 50%; flex: none;
  background: conic-gradient(var(--accent) 0% 72%, rgba(255,255,255,.08) 72% 100%); display: grid; place-items: center; }
.mock-ring .ring::after { content: "72%"; width: 38px; height: 38px; border-radius: 50%; background: #0e1019; display: grid; place-items: center; font-size: 11px; font-weight: 700; }
.mock-ring .ring-txt small { color: var(--muted); font-size: 11px; }
.mock-ring .ring-txt div { font-size: 14px; font-weight: 600; }
.mock-list { padding: 2px 16px; display: flex; flex-direction: column; gap: 9px; }
.mock-card { display: flex; align-items: center; gap: 11px; padding: 11px 13px; border-radius: 13px; background: rgba(255,255,255,.035); border: 1px solid var(--border); }
.mock-card .dot { width: 20px; height: 20px; border-radius: 7px; flex: none; background: var(--grad); opacity: .9; }
.mock-card.alt .dot { background: linear-gradient(135deg,#ffce4f,#ff7d5c); }
.mock-card .lines { flex: 1; display: flex; flex-direction: column; gap: 5px; }
.mock-card .lines i { height: 7px; border-radius: 4px; background: rgba(255,255,255,.18); display: block; }
.mock-card .lines i.short { width: 45%; background: rgba(255,255,255,.1); }
.mock-tabs { margin-top: auto; display: flex; justify-content: space-around; padding: 14px 10px 22px; border-top: 1px solid var(--border); background: rgba(0,0,0,.25); }
.mock-tabs span { width: 22px; height: 22px; border-radius: 7px; background: rgba(255,255,255,.12); }
.mock-tabs span.on { background: var(--accent); box-shadow: 0 0 14px var(--glow-violet); }

/* ===================== HERO VARIANT LAYOUTS ===================== */
/* The active hero is chosen in _config.yml (hero_style) and is the only
   variant rendered. Layout comes from the .v-a / .v-b / .v-c class. */
.hero-inner { position: relative; z-index: 2; }
.hero-variant { display: block; }

/* ---- Variant A: Centered ---- */
.v-a .hero-inner { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 26px; }
.v-a h1 { max-width: 16ch; }
.v-a .sub { margin-inline: auto; }
.v-a .device-wrap { margin-top: clamp(30px, 5vw, 56px); }

/* ---- Variant B: Split (text left / device right) ---- */
.v-b .hero-inner { display: grid; grid-template-columns: 1.05fr .95fr; align-items: center; gap: clamp(30px, 5vw, 72px); }
.v-b .copy { display: flex; flex-direction: column; align-items: flex-start; gap: 24px; }
.v-b .device-wrap { transform: rotate(2deg); }

/* ---- Variant C: Device-forward (device center, floating feature pills) ---- */
.v-c .hero-inner { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 24px; }
.v-c h1 { max-width: 18ch; }
.v-c .stage { position: relative; width: 100%; margin-top: clamp(24px, 4vw, 44px); display: grid; place-items: center; }
.v-c .float-pill {
  position: absolute; display: inline-flex; align-items: center; gap: 9px;
  padding: 11px 15px; border-radius: 14px; font-size: 14px; font-weight: 600;
  background: color-mix(in srgb, var(--surface-2) 82%, transparent); border: 1px solid var(--border-2); backdrop-filter: blur(10px);
  box-shadow: 0 14px 40px -18px rgba(0,0,0,.8); white-space: nowrap;
  animation: float-pill 6s ease-in-out infinite;
}
.v-c .float-pill .ic { width: 26px; height: 26px; border-radius: 8px; background: var(--grad-soft); display: grid; place-items: center; color: var(--accent-2); }
.v-c .float-pill.p1 { top: 12%; left: 4%; animation-delay: 0s; }
.v-c .float-pill.p2 { top: 30%; right: 2%; animation-delay: -1.5s; }
.v-c .float-pill.p3 { bottom: 20%; left: 1%; animation-delay: -3s; }
.v-c .float-pill.p4 { bottom: 8%; right: 6%; animation-delay: -4.2s; }
@keyframes float-pill { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-12px); } }

@media (max-width: 860px) {
  .v-b .hero-inner { grid-template-columns: 1fr; text-align: center; }
  .v-b .copy { align-items: center; }
  .v-b .device-wrap { transform: none; margin-top: 30px; }
  .v-c .float-pill { display: none; }
}

/* ===================== FEATURES ===================== */
.features-head { display: flex; flex-direction: column; gap: 18px; max-width: 60ch; margin-bottom: clamp(40px, 6vw, 64px); }
.features-head h2 { font-size: clamp(30px, 4.4vw, 50px); letter-spacing: -.025em; }
.features-head p { color: var(--text-dim); font-size: 18px; }
.feature-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.feature {
  position: relative; padding: 30px 28px; border-radius: var(--r-lg);
  background: var(--surface); border: 1px solid var(--border);
  overflow: hidden; transition: transform .3s cubic-bezier(.2,.8,.2,1), border-color .3s, background .3s;
}
.feature::after { /* corner glow on hover */
  content: ""; position: absolute; inset: 0; opacity: 0; transition: opacity .35s;
  background: radial-gradient(120% 80% at 0% 0%, color-mix(in srgb, var(--accent) 12%, transparent), transparent 55%);
}
.feature:hover { transform: translateY(-6px); border-color: var(--border-2); background: var(--surface-2); }
.feature:hover::after { opacity: 1; }
.feature .ficon {
  width: 50px; height: 50px; border-radius: 14px; display: grid; place-items: center; margin-bottom: 20px;
  background: var(--grad-soft); border: 1px solid var(--border); color: var(--accent-2);
}
.feature .ficon svg { width: 24px; height: 24px; }
.feature h3 { font-size: 20px; margin-bottom: 9px; letter-spacing: -.01em; }
.feature p { color: var(--text-dim); font-size: 15.5px; line-height: 1.55; }
.feature.wide { grid-column: span 2; }

@media (max-width: 900px) { .feature-grid { grid-template-columns: repeat(2, 1fr); } .feature.wide { grid-column: span 2; } }
@media (max-width: 560px) { .feature-grid { grid-template-columns: 1fr; } .feature.wide { grid-column: auto; } }

/* ===================== CTA BAND ===================== */
.cta { position: relative; }
.cta-card {
  position: relative; overflow: hidden;
  border-radius: var(--r-xl); padding: clamp(44px, 7vw, 80px) clamp(28px, 5vw, 72px);
  background: var(--card-grad);
  border: 1px solid var(--border-2);
  text-align: center; display: flex; flex-direction: column; align-items: center; gap: 26px;
}
.cta-card::before { content: ""; position: absolute; width: 460px; height: 460px; border-radius: 50%;
  background: radial-gradient(circle, var(--glow-violet), transparent 70%); top: -180px; left: -60px; filter: blur(40px); }
.cta-card::after { content: ""; position: absolute; width: 420px; height: 420px; border-radius: 50%;
  background: radial-gradient(circle, var(--glow-cyan), transparent 70%); bottom: -200px; right: -40px; filter: blur(40px); }
.cta-card > * { position: relative; z-index: 1; }
.cta-card h2 { font-size: clamp(30px, 4.6vw, 54px); letter-spacing: -.03em; max-width: 18ch; }
.cta-card p { color: var(--text-dim); font-size: 18px; max-width: 50ch; }
.cta-qr { display: inline-flex; align-items: center; gap: 16px; margin-top: 4px; color: var(--muted); font-size: 14px; }
.cta-qr .qr { width: 84px; height: 84px; border-radius: 12px; background: #fff; padding: 8px; }
.cta-qr .qr svg, .cta-qr .qr .qr-svg { display: block; width: 100%; height: 100%; }
