/* lp-home.css — Camika marketing homepage (`/`)
 *
 * Self-contained — never @imports desktop.css. Aligned with the rest of the lp
 * pages (lp-gpt-image-2-prompts.css) so brand changes propagate naturally:
 *   - Same red primary (#e63946) + red gradient
 *   - border-radius: 0 everywhere (CLAUDE.md global Rule #11)
 *   - Dual theme — light default, `[data-theme="dark"]` override
 *   - P5 token names (--p5-*) match the rest of the codebase
 *
 * Namespace `.lphome-*` — collision-free with desktop UI and other lp pages.
 * Placeholder tiles use `.lphome-ph[data-tint]` — swap to <img> when real CDN
 * URLs are curated.
 */

/* ── P5 design tokens (light default, dark = override) ───── */
:root[data-page="lp"] {
  --p5-red: #e63946;
  --p5-red-2: #ff6b6b;
  --p5-red-gradient: linear-gradient(135deg, #e63946, #ff6b6b);

  /* Light theme defaults — clean, white, brand red */
  --p5-bg: #ffffff;
  --p5-bg-alt: #fafafa;
  --p5-card: #ffffff;
  --p5-text: #1a1a1a;
  --p5-text-inverse: #ffffff;
  --p5-text-secondary: #4a5568;
  --p5-muted: #6b7280;
  --p5-border: #e5e7eb;
  --p5-border-strong: #d1d5db;
  --p5-media-scrim: rgba(0, 0, 0, 0.56);
  --p5-media-outline: rgba(255, 255, 255, 0.42);
  --p5-soft-red: rgba(230, 57, 70, 0.08);
  --p5-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.05);
  --p5-shadow: 0 6px 20px rgba(0, 0, 0, 0.08);
  --p5-shadow-lg: 0 12px 32px rgba(0, 0, 0, 0.10);

  /* Use-case tints (very pale background fills, light theme) */
  --uc-pink-bg: #fdf2f4;
  --uc-pink-border: #f5d6da;
  --uc-blue-bg: #f1f4fb;
  --uc-blue-border: #d8e1f3;
  --uc-yellow-bg: #fdf7e8;
  --uc-yellow-border: #f4e6bf;
  --uc-green-bg: #eef8f3;
  --uc-green-border: #cfe9da;
}
:root[data-page="lp"][data-theme="dark"] {
  --p5-bg: #0a0a0f;
  --p5-bg-alt: #0d0d13;
  --p5-card: #16161d;
  --p5-text: #e8e8e8;
  --p5-text-inverse: #ffffff;
  --p5-text-secondary: #a8a8a8;
  --p5-muted: #7a7a7a;
  --p5-border: #2a2a32;
  --p5-border-strong: #3a3a44;
  --p5-media-scrim: rgba(0, 0, 0, 0.62);
  --p5-media-outline: rgba(255, 255, 255, 0.38);
  --p5-soft-red: rgba(230, 57, 70, 0.15);
  --p5-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.4);
  --p5-shadow: 0 6px 20px rgba(0, 0, 0, 0.5);
  --p5-shadow-lg: 0 12px 32px rgba(0, 0, 0, 0.6);

  --uc-pink-bg: rgba(244, 114, 182, 0.08);
  --uc-pink-border: rgba(244, 114, 182, 0.18);
  --uc-blue-bg: rgba(74, 144, 226, 0.08);
  --uc-blue-border: rgba(74, 144, 226, 0.18);
  --uc-yellow-bg: rgba(245, 197, 24, 0.08);
  --uc-yellow-border: rgba(245, 197, 24, 0.18);
  --uc-green-bg: rgba(16, 185, 129, 0.08);
  --uc-green-border: rgba(16, 185, 129, 0.18);
}

/* ── reset + base ───────────────────────────────── */
[hidden] { display: none !important; }
/* Element-level resets — scoped to :root[data-page="lp"] so this stylesheet
   is safe to load on non-LP pages (e.g. /desktop loads it for the Comic
   showcase modal). data-page="lp" is set by an inline script in every LP
   HTML's <head> before this stylesheet parses. */
:root[data-page="lp"] *,
:root[data-page="lp"] *::before,
:root[data-page="lp"] *::after { box-sizing: border-box; }
:root[data-page="lp"] { scroll-behavior: smooth; }
:root[data-page="lp"] body {
  margin: 0;
  background: var(--p5-bg);
  color: var(--p5-text);
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
    'Helvetica Neue', Arial, 'Noto Sans SC', 'PingFang SC',
    'Microsoft YaHei', sans-serif;
  font-size: 14px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  transition: background 0.2s, color 0.2s;
}
:root[data-page="lp"] img { max-width: 100%; display: block; }
:root[data-page="lp"] a { color: inherit; text-decoration: none; }
:root[data-page="lp"] button { font-family: inherit; }

/* ── Placeholder tiles (.lphome-ph) ─────────────── *
 * Still used for tiny generated avatars and media fallbacks. Primary hero and
 * showcase covers now use curated CDN media. */
.lphome-ph {
  display: flex; align-items: center; justify-content: center;
  background: linear-gradient(135deg, #f3f4f6, #e5e7eb);
  color: #fff; font-weight: 600; font-size: 13px;
  letter-spacing: 0.4px;
  overflow: hidden; position: relative;
  text-align: center; padding: 8px;
}
.lphome-ph[data-tint="pink"]   { background: linear-gradient(135deg, #fbb6ce, #ec4899); }
.lphome-ph[data-tint="warm"]   { background: linear-gradient(135deg, #fbbf24, #e63946); }
.lphome-ph[data-tint="cool"]   { background: linear-gradient(135deg, #93c5fd, #2563eb); }
.lphome-ph[data-tint="violet"] { background: linear-gradient(135deg, #c4b5fd, #6366f1); }
.lphome-ph[data-tint="green"]  { background: linear-gradient(135deg, #86efac, #059669); }
.lphome-ph[data-tint="dark"]   { background: linear-gradient(135deg, #374151, #111827); }
.lphome-ph[data-tint="mono"]   { background: linear-gradient(135deg, #9ca3af, #1f2937); }
.lphome-ph-label { z-index: 1; opacity: 0.95; }

.lphome-video-mark {
  position: absolute;
  right: 8px;
  bottom: 8px;
  z-index: 2;
  width: 26px;
  height: 26px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--p5-media-scrim);
  color: var(--p5-text-inverse);
  border: 1px solid var(--p5-media-outline);
}

/* ── Header ─────────────────────────────────────── */
.lphome-header {
  position: sticky; top: 0; z-index: 50;
  /* 3-col grid (logo / nav / right): the middle nav stays viewport-centered
     independent of the left/right widths. flex space-between would let the
     wider right column push the nav off-center toward the logo side. */
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: 24px;
  padding: 14px 32px;
  background: var(--p5-card);
  border-bottom: 1px solid var(--p5-border);
}
.lphome-logo { display: inline-flex; align-items: center; line-height: 0; }
.lphome-logo img { height: 28px; width: auto; }
.lphome-logo:hover { opacity: 0.85; }

.lphome-nav { display: flex; align-items: center; gap: 28px; }
.lphome-nav-link {
  position: relative;
  color: var(--p5-text-secondary);
  font-size: 14px; font-weight: 500;
  padding: 6px 0;
}
.lphome-nav-link:hover { color: var(--p5-text); }
.lphome-nav-link.is-active {
  color: var(--p5-red);
  font-weight: 600;
}
.lphome-nav-link.is-active::after {
  content: '';
  position: absolute;
  left: 0; right: 0; bottom: -16px;
  height: 2px;
  background: var(--p5-red);
}

.lphome-header-right { display: flex; align-items: center; gap: 12px; justify-self: end; }

.lphome-theme-btn {
  width: 38px;
  height: 38px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  background: transparent;
  border: 0;
  padding: 0;
  color: var(--p5-text-secondary);
  cursor: pointer;
  border-radius: 0;
}
.lphome-theme-btn:hover {
  color: var(--p5-text);
  border-color: var(--p5-border-strong);
}
.lphome-theme-icon { flex-shrink: 0; }
.lphome-theme-icon-sun { display: none; }
.lphome-theme-icon-moon { display: block; }
:root[data-page="lp"][data-theme="dark"] .lphome-theme-icon-sun { display: block; }
:root[data-page="lp"][data-theme="dark"] .lphome-theme-icon-moon { display: none; }

.lphome-lang-wrap {
  position: relative;
  display: inline-flex;
  flex: 0 0 auto;
}

.lphome-lang-btn {
  display: inline-flex; align-items: center; gap: 6px;
  min-height: 38px;
  padding: 7px 4px;
  background: transparent;
  border: 0;
  color: var(--p5-text-secondary);
  font-size: 13px; font-weight: 500;
  cursor: pointer;
  border-radius: 0;
}
.lphome-lang-btn:hover { color: var(--p5-text); }

/* Lang dropdown — anchored to the language button wrapper by lp-home.js. */
.lphome-lang-dropdown {
  position: absolute;
  top: calc(100% + 8px);
  left: 0;
  min-width: 100%;
  width: max-content;
  max-width: min(260px, calc(100vw - 36px));
  background: var(--p5-card);
  border: 1px solid var(--p5-border);
  box-shadow: var(--p5-shadow);
  z-index: 100;
  display: flex; flex-direction: column;
  padding: 4px 0;
  border-radius: 0;
}
.lphome-lang-opt {
  display: block; width: 100%;
  text-align: left;
  padding: 8px 14px;
  background: transparent;
  border: none;
  color: var(--p5-text);
  font-size: 13px;
  white-space: nowrap;
  cursor: pointer;
  border-radius: 0;
  font-family: inherit;
}
.lphome-lang-opt:hover {
  background: var(--p5-soft-red);
  color: var(--p5-red);
}

.lphome-signin-link {
  color: var(--p5-red);
  font-size: 14px; font-weight: 600;
  padding: 8px 14px;
}
.lphome-signin-link:hover { opacity: 0.8; }

.lphome-cta-mini {
  min-height: 38px;
  display: inline-flex;
  align-items: center;
  padding: 8px 20px;
  background: var(--p5-red);
  color: #fff !important;
  font-weight: 700; font-size: 14px;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  transition: background 0.18s ease;
}
.lphome-cta-mini:hover {
  background: var(--p5-red-2);
  color: #fff !important;
}

/* ── Buttons ────────────────────────────────────── */
.lphome-btn-primary, .lphome-btn-ghost, .lphome-btn-on-red {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  padding: 12px 22px;
  font-size: 15px; font-weight: 600;
  border-radius: 0; cursor: pointer; border: none;
  text-decoration: none;
  transition: opacity 0.2s, background 0.2s, color 0.2s;
}
.lphome-btn-primary { background: var(--p5-red-gradient); color: #fff !important; }
.lphome-btn-primary:hover { opacity: 0.9; }
.lphome-btn-ghost {
  background: transparent;
  color: var(--p5-text);
  border: 1px solid var(--p5-border-strong);
}
.lphome-btn-ghost:hover { border-color: var(--p5-red); color: var(--p5-red); }
.lphome-btn-on-red {
  background: #fff; color: var(--p5-red) !important;
}
.lphome-btn-on-red:hover { background: rgba(255,255,255,0.92); }

/* ── Hero ───────────────────────────────────────── */
.lphome-hero {
  background: var(--p5-bg);
  padding: 56px 32px 48px;
  border-bottom: 1px solid var(--p5-border);
}
.lphome-hero-grid {
  max-width: 1280px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr);
  gap: 56px;
  align-items: start;
}
.lphome-hero-left { padding-top: 8px; }

.lphome-eyebrow {
  display: inline-flex; align-items: center;
  padding: 6px 12px;
  background: var(--p5-soft-red);
  color: var(--p5-red);
  font-size: 12px; font-weight: 600;
  letter-spacing: 0.4px;
  margin-bottom: 22px;
}

.lphome-h1 {
  font-size: clamp(36px, 4.6vw, 56px);
  font-weight: 800;
  letter-spacing: -1px;
  line-height: 1.15;
  margin: 0 0 20px;
  color: var(--p5-text);
}
.lphome-h1-hl { color: var(--p5-red); }

.lphome-lede {
  font-size: 16px;
  color: var(--p5-text-secondary);
  margin: 0 0 30px;
  max-width: 520px;
  line-height: 1.7;
}

.lphome-cta-row {
  display: flex; align-items: center; gap: 14px;
  margin-bottom: 36px;
  flex-wrap: wrap;
}

.lphome-hero-chips {
  list-style: none; padding: 0; margin: 0;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px 32px;
  max-width: 540px;
}
.lphome-chip {
  display: flex; align-items: flex-start; gap: 10px;
}
.lphome-chip-icon {
  flex-shrink: 0;
  width: 28px; height: 28px;
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--p5-soft-red);
  color: var(--p5-red);
}
.lphome-chip-text { display: flex; flex-direction: column; min-width: 0; }
.lphome-chip-text strong {
  font-size: 13px; font-weight: 600;
  color: var(--p5-text);
  margin-bottom: 2px;
}
.lphome-chip-text em {
  font-style: normal;
  font-size: 12px;
  color: var(--p5-muted);
  line-height: 1.5;
}

/* Hero capability wall */
.lphome-hero-collage {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  grid-template-rows: repeat(2, minmax(0, 1fr));
  gap: 12px;
  width: 100%;
  max-width: 760px;
  height: clamp(420px, 34vw, 540px);
  margin: 0 auto;
  padding: 0;
  background: transparent;
  border: none;
  overflow: hidden;
}
.lphome-collage-cell {
  position: relative;
  overflow: hidden;
  background: var(--p5-bg-alt);
  border: 1px solid var(--p5-border-strong);
}
.lphome-collage-cell img,
.lphome-collage-cell video {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
}
.lphome-collage-label {
  position: absolute;
  top: 12px;
  left: 12px;
  z-index: 2;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 28px;
  max-width: calc(100% - 24px);
  padding: 4px 12px 4px 9px;
  background: var(--p5-media-scrim);
  border: 1px solid var(--p5-media-outline);
  color: var(--p5-text-inverse);
  font-size: 13px;
  font-weight: 700;
  line-height: 1.25;
  white-space: nowrap;
}
.lphome-collage-label::before {
  content: '';
  width: 3px;
  height: 16px;
  flex: 0 0 auto;
  background: var(--p5-red);
}
.lphome-c-1 {
  grid-column: 1 / span 4;
  grid-row: 1;
}
.lphome-c-2 {
  grid-column: 5 / span 8;
  grid-row: 1;
}
.lphome-c-3 {
  grid-column: 1 / span 6;
  grid-row: 2;
}
.lphome-c-4 {
  grid-column: 7 / span 6;
  grid-row: 2;
}

/* ── Section title shared ───────────────────────── */
.lphome-section-head {
  max-width: 1280px;
  margin: 0 auto 24px;
  display: flex; align-items: baseline; justify-content: space-between;
  padding: 0 32px;
}
.lphome-section-title {
  font-size: clamp(20px, 2vw, 24px);
  font-weight: 700;
  color: var(--p5-text);
  margin: 0;
  letter-spacing: -0.3px;
}
.lphome-link-arrow {
  font-size: 13px; font-weight: 500;
  color: var(--p5-text-secondary);
}
.lphome-link-arrow:hover { color: var(--p5-red); }

.lphome-center { text-align: center; }
.lphome-section-sub {
  max-width: 720px;
  margin: 8px auto 32px;
  padding: 0 32px;
  font-size: 14px;
  color: var(--p5-muted);
  line-height: 1.7;
}

/* ── Showcase ───────────────────────────────────── */
.lphome-showcase {
  background: var(--p5-bg);
  padding: 48px 0 56px;
}

.lphome-tabs {
  max-width: 1280px;
  margin: 0 auto 20px;
  padding: 0 32px;
  display: flex; align-items: center; gap: 18px;
  flex-wrap: wrap;
}
.lphome-tab {
  padding: 6px 0;
  background: transparent; border: none;
  color: var(--p5-text-secondary);
  font-size: 14px; font-weight: 500;
  cursor: pointer;
  border-radius: 0;
  position: relative;
}
.lphome-tab:hover { color: var(--p5-text); }
.lphome-tab.is-active {
  color: var(--p5-red);
  font-weight: 600;
}
.lphome-tab.is-active::after {
  content: '';
  position: absolute;
  left: 0; right: 0; bottom: -6px;
  height: 2px;
  background: var(--p5-red);
}

/* Strip with arrows — used by Showcase + Testimonials */
.lphome-strip-wrap {
  position: relative;
  max-width: 1280px;
  margin: 0 auto;
  padding: 0 32px;
}
.lphome-strip {
  display: flex; gap: 14px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scroll-behavior: smooth;
  scrollbar-width: none;       /* Firefox */
  padding-bottom: 4px;
}
.lphome-strip::-webkit-scrollbar { display: none; }
.lphome-strip-arrow {
  position: absolute;
  top: 50%; transform: translateY(-50%);
  z-index: 5;
  width: 36px; height: 36px;
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--p5-card);
  border: 1px solid var(--p5-border);
  color: var(--p5-text);
  cursor: pointer;
  box-shadow: var(--p5-shadow-sm);
  border-radius: 0;
  /* counteract :active scale that would break translate centering */
}
.lphome-strip-arrow:active { transform: translateY(-50%); }
.lphome-strip-arrow:hover { color: var(--p5-red); border-color: var(--p5-red); }
.lphome-strip-arrow-l { left: 4px; }
.lphome-strip-arrow-r { right: 4px; }

/* Showcase cards */
.lphome-show-card {
  flex: 0 0 220px;
  scroll-snap-align: start;
  background: var(--p5-card);
  border: 1px solid var(--p5-border);
  display: flex; flex-direction: column;
  position: relative;
  transition: border-color 0.15s, box-shadow 0.15s;
}
.lphome-show-card:hover {
  border-color: var(--p5-red);
  box-shadow: var(--p5-shadow);
}
.lphome-show-cover {
  width: 100%;
  aspect-ratio: 1;
  font-size: 12px;
  position: relative;
  overflow: hidden;
  background: var(--p5-card);
}
.lphome-show-cover img,
.lphome-show-cover video {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
  transition: transform 0.2s ease;
}
.lphome-show-card:hover .lphome-show-cover img,
.lphome-show-card:hover .lphome-show-cover video {
  transform: scale(1.035);
}
.lphome-show-meta {
  display: flex; align-items: center; gap: 8px;
  padding: 10px 12px;
  font-size: 12px;
  color: var(--p5-text-secondary);
}
.lphome-show-avatar {
  flex-shrink: 0;
  width: 22px; height: 22px;
}
.lphome-show-author {
  flex: 1; min-width: 0;
  color: var(--p5-text);
  font-weight: 500;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.lphome-show-stats {
  display: flex; gap: 8px;
  flex-shrink: 0;
  color: var(--p5-muted);
  font-size: 11px;
}
.lphome-show-stat {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  line-height: 1;
}
.lphome-show-stat svg {
  flex-shrink: 0;
}
.lphome-show-badge {
  position: absolute;
  top: 8px; right: 8px; z-index: 2;
  padding: 3px 8px;
  background: var(--p5-red);
  color: #fff;
  font-size: 10px; font-weight: 700;
  letter-spacing: 0.6px;
}

/* ── Use-case 4 cards ───────────────────────────── */
.lphome-usecases {
  background: var(--p5-bg);
  padding: 64px 32px 72px;
}
.lphome-usecases > .lphome-section-title { padding: 0; }
.lphome-usecases-grid {
  max-width: 1280px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 18px;
}
.lphome-usecase-card {
  display: flex; flex-direction: column;
  padding: 22px 20px 20px;
  border: 1px solid;
  border-radius: 0;
  min-height: 380px;
  transition: transform 0.15s, box-shadow 0.15s;
}
.lphome-usecase-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--p5-shadow);
}
.lphome-uc-tint-pink   { background: var(--uc-pink-bg);   border-color: var(--uc-pink-border); }
.lphome-uc-tint-blue   { background: var(--uc-blue-bg);   border-color: var(--uc-blue-border); }
.lphome-uc-tint-yellow { background: var(--uc-yellow-bg); border-color: var(--uc-yellow-border); }
.lphome-uc-tint-green  { background: var(--uc-green-bg);  border-color: var(--uc-green-border); }

.lphome-uc-head {
  display: flex; align-items: center; gap: 8px;
  margin-bottom: 10px;
}
.lphome-uc-icon {
  width: 24px; height: 24px;
  display: inline-flex; align-items: center; justify-content: center;
  color: var(--p5-text);
}
.lphome-uc-title {
  font-size: 15px; font-weight: 700;
  color: var(--p5-text);
  margin: 0;
}
.lphome-uc-suitable {
  font-size: 11px;
  color: var(--p5-muted);
  margin: 0 0 8px;
  line-height: 1.5;
}
.lphome-uc-desc {
  font-size: 12px;
  color: var(--p5-text-secondary);
  margin: 0 0 12px;
  line-height: 1.6;
}
.lphome-uc-flow {
  display: flex; align-items: center; gap: 6px;
  flex-wrap: wrap;
  font-size: 11px;
  color: var(--p5-text-secondary);
  margin-bottom: 14px;
  line-height: 1.4;
  font-weight: 500;
}
.lphome-uc-flow em {
  font-style: normal;
  color: var(--p5-muted);
  margin: 0 0;
}
.lphome-uc-tagline {
  font-size: 12px;
  color: var(--p5-text);
  margin: 12px 0 0;
  line-height: 1.6;
  font-weight: 600;
}
.lphome-uc-cover {
  flex: 1;
  min-height: 130px;
  margin-bottom: 14px;
  overflow: hidden;
  background: var(--p5-card);
}
.lphome-uc-cover img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.lphome-uc-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  grid-template-rows: repeat(2, 1fr);
  gap: 4px;
  background: transparent;
  padding: 0;
}
.lphome-uc-grid > .lphome-ph { width: 100%; height: 100%; }
.lphome-uc-cta {
  font-size: 12px; font-weight: 600;
  color: var(--p5-red);
  align-self: flex-start;
}
.lphome-uc-cta:hover { opacity: 0.8; }

/* ── Testimonials ───────────────────────────────── */
.lphome-testimonials {
  background: var(--p5-bg);
  padding: 56px 0 60px;
}
.lphome-tcards-wrap { padding: 0 32px; }
.lphome-tcards { gap: 16px; padding-top: 8px; padding-bottom: 8px; }
.lphome-tcard {
  flex: 0 0 280px;
  scroll-snap-align: start;
  background: var(--p5-card);
  border: 1px solid var(--p5-border);
  padding: 18px 18px 14px;
  display: flex; flex-direction: column;
  min-height: 180px;
}
.lphome-tcard-quote {
  font-size: 13px;
  color: var(--p5-text);
  line-height: 1.7;
  margin: 0 0 16px;
  flex: 1;
}
.lphome-tcard-foot {
  display: flex; align-items: center; gap: 10px;
}
.lphome-tcard-avatar {
  flex-shrink: 0;
  width: 32px; height: 32px;
}
.lphome-tcard-author {
  display: flex; flex-direction: column; min-width: 0;
  flex: 1;
}
.lphome-tcard-author strong {
  font-size: 13px; font-weight: 600;
  color: var(--p5-text);
}
.lphome-tcard-author em {
  font-style: normal;
  font-size: 11px;
  color: var(--p5-muted);
  margin-top: 2px;
}
.lphome-tcard-likes {
  font-size: 11px;
  color: var(--p5-red);
  font-weight: 600;
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  gap: 3px;
  line-height: 1;
}
.lphome-tcards-dots {
  display: flex; align-items: center; justify-content: center; gap: 6px;
  margin-top: 22px;
}
.lphome-dot {
  width: 6px; height: 6px;
  background: var(--p5-border-strong);
  border-radius: 50%;
}
.lphome-dot.is-active {
  background: var(--p5-red);
  width: 18px;
  border-radius: 0;
}

/* ── Centered CTA (light, minimal — replaces the earlier red banner) ── */
/* Audience section — "为不同创作者而设计" 4 audience-first cards.
 * Visual language aligned with .lphome-showcase: cover on top + body on
 * bottom (HTML still has body first; CSS uses column-reverse to flip
 * visual order while keeping body first in the accessibility tree).
 * Hover = border-color: --p5-border-strong (no red border, no shadow);
 * heading uses showcase's large bold style. Body keeps audience-first
 * info density (icon + title + role + desc + tags). */
.lphome-audience {
  background: var(--p5-bg);
  padding: 54px 32px 76px;
  border-top: 1px solid var(--p5-border);
}
.lphome-audience-head-block {
  margin: 0 0 26px;
  padding: 0;
}
.lphome-audience .lphome-section-title {
  margin: 0 0 8px;
  font-size: clamp(36px, 4vw, 64px);
  font-weight: 900;
  letter-spacing: 0;
  line-height: 1.02;
  text-align: left;
}
.lphome-audience .lphome-section-sub {
  margin: 0;
  padding: 0;
  text-align: left;
  font-size: 14px;
  color: var(--p5-muted);
  line-height: 1.6;
  max-width: 720px;
}
.lphome-audience-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  grid-auto-rows: 1fr; /* equal-height rows so cards align even when descriptions differ in length */
  gap: 18px;
}
.lphome-audience-card {
  min-width: 0;
  height: 100%; /* stretch to grid cell so 4 cards stay equal height when desc lengths differ */
  display: flex;
  flex-direction: column-reverse;
  background: var(--p5-card);
  border: 1px solid var(--p5-border);
  border-radius: 0;
  overflow: hidden;
  box-shadow: none;
  transition: border-color 0.15s;
}
.lphome-audience-card:hover {
  border-color: var(--p5-border-strong);
}
.lphome-audience-body {
  min-height: 190px;
  flex: 1; /* fill remaining height under the fixed-aspect media; tags get pushed to bottom via margin-top:auto */
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 16px 16px 14px;
}
.lphome-audience-head {
  display: flex;
  align-items: flex-start;
  gap: 10px;
}
.lphome-audience-icon {
  flex-shrink: 0;
  width: 28px;
  height: 28px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--p5-red);
}
.lphome-audience-titlebox {
  display: flex;
  flex-direction: column;
  min-width: 0;
}
.lphome-audience-title {
  font-size: 18px;
  font-weight: 800;
  color: var(--p5-text);
  line-height: 1.35;
}
.lphome-audience-role {
  font-size: 12px;
  color: var(--p5-muted);
  margin-top: 3px;
  line-height: 1.4;
}
.lphome-audience-desc {
  font-size: 13px;
  color: var(--p5-text-secondary);
  line-height: 1.65;
  margin: 0;
}
.lphome-audience-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 14px;
  margin-top: auto;
  padding-top: 12px;
  border-top: 1px solid var(--p5-border);
  color: var(--p5-muted);
  font-size: 12px;
}
.lphome-audience-tags span {
  font-size: 12px;
  color: var(--p5-muted);
}
.lphome-audience-media {
  position: relative;
  width: 100%;
  aspect-ratio: 1 / 0.78;
  overflow: hidden;
  background: var(--p5-card);
  border-bottom: 1px solid var(--p5-border);
}
.lphome-audience-media img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
  transition: transform 0.2s ease;
}
.lphome-audience-card:hover .lphome-audience-media img {
  transform: scale(1.035);
}
@media (max-width: 1100px) {
  .lphome-audience-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 560px) {
  .lphome-audience-grid { grid-template-columns: 1fr; }
}

/* CTA banner — centered minimal (restored to pre-Phase-1) */
/* CTA banner — aligned with lp-showcase .lpsc-cta: 2-column (copy / button)
   on white card, large h2 with red emphasis word, red primary button. */
.lphome-cta-banner {
  background: var(--p5-card);
  border-top: 1px solid var(--p5-border);
  padding: 64px 32px 88px;
}
.lphome-cta-banner-inner {
  max-width: 1440px;
  margin: 0 auto;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 32px;
}
.lphome-cta-banner-copy {
  display: flex;
  flex-direction: column;
}
.lphome-cta-banner-actions {
  flex-shrink: 0;
}
.lphome-cta-banner-title {
  font-size: clamp(32px, 3.6vw, 52px);
  font-weight: 900;
  color: var(--p5-text);
  margin: 0;
  letter-spacing: -0.025em;
  line-height: 1.05;
  max-width: 680px;
}
.lphome-cta-banner-sub {
  font-size: 14.5px;
  color: var(--p5-muted);
  margin: 10px 0 0;
  line-height: 1.7;
  max-width: 520px;
}
.lphome-cta-banner .lphome-btn-primary {
  padding: 14px 22px;
  font-size: 15px;
}
/* Solid neutral CTA — black-on-white in light, inverted in dark.
 * Matches the "Suno-style" minimal-CTA pattern requested in the screenshot. */
.lphome-btn-dark {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  padding: 12px 24px;
  background: #1a1a1a;
  color: #fff !important;
  font-size: 14px; font-weight: 600;
  border: none; border-radius: 0; cursor: pointer;
  text-decoration: none;
  transition: background 0.2s;
}
.lphome-btn-dark:hover { background: #000; }
:root[data-page="lp"][data-theme="dark"] .lphome-btn-dark {
  background: #fff;
  color: #1a1a1a !important;
}
:root[data-page="lp"][data-theme="dark"] .lphome-btn-dark:hover { background: #f0f0f0; }

/* ── Footer ─────────────────────────────────────── */
.lphome-footer {
  background: var(--p5-bg);
  padding: 56px 32px 24px;
}
.lphome-footer-grid {
  max-width: 1280px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1.4fr repeat(5, minmax(0, 1fr));
  gap: 40px;
}
.lphome-footer-brand .lphome-logo img { height: 28px; margin-bottom: 14px; }
.lphome-footer-slogan {
  font-size: 12px;
  color: var(--p5-muted);
  margin: 0 0 18px;
  line-height: 1.7;
  max-width: 280px;
}
.lphome-footer-socials {
  list-style: none; padding: 0; margin: 0;
  display: flex; gap: 14px;
}
.lphome-footer-socials a {
  display: inline-flex; align-items: center; justify-content: center;
  width: 32px; height: 32px;
  border: 1px solid var(--p5-border);
  color: var(--p5-text-secondary);
}
.lphome-footer-socials a:hover {
  color: var(--p5-red);
  border-color: var(--p5-red);
}

/* Footer controls — theme + lang 从 header 移到 footer brand 列。
   lang dropdown 向上展开避免被 footer 底部裁切。 */
.lphome-footer-controls {
  margin-top: 18px;
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}
.lphome-footer-controls .lphome-lang-dropdown {
  top: auto;
  bottom: calc(100% + 8px);
}

.lphome-footer-h {
  font-size: 13px; font-weight: 700;
  color: var(--p5-text);
  margin: 0 0 14px;
  letter-spacing: 0.2px;
}
.lphome-footer-col ul {
  list-style: none; padding: 0; margin: 0;
}
.lphome-footer-col li { margin-bottom: 8px; }
.lphome-footer-col a {
  font-size: 12px;
  color: var(--p5-muted);
  line-height: 1.6;
}
.lphome-footer-col a:hover { color: var(--p5-red); }

/* NEW marker — red dot beside fresh footer links (per YouMind reference) */
.lphome-footer-new {
  display: inline-block;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--p5-red);
  margin-left: 6px;
  vertical-align: middle;
}

.lphome-footer-bottom {
  max-width: 1280px;
  margin: 36px auto 0;
  padding-top: 18px;
  display: flex; align-items: center; justify-content: space-between;
  gap: 16px;
  font-size: 11px;
  color: var(--p5-muted);
  flex-wrap: wrap;
}
.lphome-footer-legal {
  display: flex; gap: 18px;
}
.lphome-footer-legal a:hover { color: var(--p5-red); }

/* ── Responsive (1100 / 820 / 560) ──────────────── */
@media (max-width: 1100px) {
  .lphome-hero-grid {
    grid-template-columns: 1fr;
    gap: 40px;
  }
  .lphome-hero-collage {
    max-width: 760px;
    height: 480px;
  }
  .lphome-usecases-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .lphome-footer-grid { grid-template-columns: 1.4fr repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 820px) {
  .lphome-header { padding: 12px 18px; gap: 12px; flex-wrap: wrap; }
  .lphome-nav { gap: 18px; order: 3; width: 100%; justify-content: center; padding-top: 8px; border-top: 1px solid var(--p5-border); margin-top: 4px; }
  .lphome-nav-link.is-active::after { display: none; }
  .lphome-hero { padding: 40px 18px 32px; }
  .lphome-hero-collage {
    grid-template-columns: repeat(6, minmax(0, 1fr));
    grid-template-rows: repeat(3, minmax(0, 1fr));
    height: 520px;
  }
  .lphome-c-1 { grid-column: 1 / span 3; grid-row: 1; }
  .lphome-c-2 { grid-column: 4 / span 3; grid-row: 1; }
  .lphome-c-3 { grid-column: 1 / span 3; grid-row: 2 / span 2; }
  .lphome-c-4 { grid-column: 4 / span 3; grid-row: 2 / span 2; }
  .lphome-section-head, .lphome-tabs, .lphome-strip-wrap, .lphome-tcards-wrap { padding: 0 18px; }
  .lphome-showcase, .lphome-testimonials { padding-left: 0; padding-right: 0; }
  .lphome-usecases { padding: 48px 18px; }
  .lphome-cta-banner { padding: 44px 18px 44px; }
  .lphome-footer { padding: 48px 18px 24px; }
  .lphome-footer-grid { grid-template-columns: 1fr 1fr; gap: 28px; }
}

@media (max-width: 560px) {
  .lphome-h1 { font-size: clamp(28px, 8vw, 36px); }
  .lphome-hero-chips { grid-template-columns: 1fr; gap: 14px; }
  .lphome-hero-collage {
    display: grid;
    grid-template-columns: 1fr;
    grid-template-rows: repeat(4, 150px);
    gap: 10px;
    height: auto;
    padding: 0;
    overflow: hidden;
  }
  .lphome-collage-cell {
    position: relative;
    width: 100%;
    height: 100%;
    display: block;
  }
  .lphome-c-1,
  .lphome-c-2,
  .lphome-c-3,
  .lphome-c-4 {
    grid-column: 1;
  }
  .lphome-c-1 { grid-row: 1; }
  .lphome-c-2 { grid-row: 2; }
  .lphome-c-3 { grid-row: 3; }
  .lphome-c-4 { grid-row: 4; }
  .lphome-usecases-grid { grid-template-columns: 1fr; }
  .lphome-show-card { flex-basis: 180px; }
  .lphome-tcard { flex-basis: 240px; }
  .lphome-footer-grid { grid-template-columns: 1fr; }
  .lphome-footer-bottom { flex-direction: column; align-items: flex-start; gap: 8px; }
}

/* ── Homepage editorial refresh (2026-05) ───────── */
.lphome-hero {
  padding: 58px 32px 42px;
  background: var(--p5-bg);
  border-bottom: 1px solid var(--p5-border);
}

.lphome-hero-grid,
.lphome-workflow-grid,
.lphome-showcase-head,
.lphome-showcase .lphome-tabs,
.lphome-show-grid,
.lphome-audience-head-block,
.lphome-audience-grid {
  max-width: 1440px;
  margin-left: auto;
  margin-right: auto;
}

.lphome-hero-grid {
  display: grid;
  grid-template-columns: minmax(0, 0.95fr) minmax(360px, 0.85fr);
  gap: 64px;
  align-items: start;
}

.lphome-hero-left {
  padding-top: 0;
}

.lphome-h1 {
  max-width: 760px;
  margin: 0 0 22px;
  font-size: clamp(56px, 7vw, 116px);
  line-height: 1.1;
  font-weight: 900;
  letter-spacing: 0;
}

/* Direct-child selector so nested emphasis spans (.lphome-h-em) keep their
   own colour — descendant selector would cascade through and force every
   nested span back to --p5-text. */
.lphome-h1 > span {
  color: var(--p5-text);
}

.lphome-lede {
  max-width: 680px;
  margin: 0;
  color: var(--p5-text-secondary);
  font-size: 17px;
  line-height: 1.82;
}

.lphome-hero-side {
  justify-self: end;
  max-width: 560px;
  padding-top: 36px;
}

.lphome-hero-side-copy {
  margin: 0 0 34px;
  color: var(--p5-text-secondary);
  font-size: 16px;
  line-height: 1.9;
}

.lphome-hero-side .lphome-cta-row {
  margin: 0;
  gap: 22px;
}

.lphome-hero-side .lphome-btn-primary,
.lphome-hero-side .lphome-btn-ghost {
  min-width: 210px;
  min-height: 58px;
  padding: 0 28px;
  justify-content: center;
  font-size: 17px;
}

.lphome-hero-side .lphome-btn-primary {
  color: var(--p5-text-inverse);
  background: var(--p5-red);
  border-color: var(--p5-red);
}

/* Workflow row — compact 4 cards (cover top + body bottom: icon + copy + arrow).
 * Restored to user's pre-Phase-1 layout. */
.lphome-workflow-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
  margin-top: 40px;
}

.lphome-workflow-card {
  min-width: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  background: var(--p5-card);
  border: 1px solid var(--p5-border);
  color: var(--p5-text);
}

.lphome-workflow-card:hover {
  border-color: var(--p5-border-strong);
}

.lphome-workflow-media {
  position: relative;
  height: clamp(220px, 17vw, 320px);
  overflow: hidden;
  background: var(--p5-bg-alt);
  border-bottom: 1px solid var(--p5-border);
}

.lphome-workflow-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.28s ease;
}

.lphome-workflow-card:hover .lphome-workflow-media img {
  transform: scale(1.035);
}

/* Showcase trigger pill — top-right overlay on workflow card media.
   role="button" span (not <button>) because the parent card is <a> — nested
   interactives are invalid. Click stops propagation in JS to prevent the
   card's navigation. */
.lphome-workflow-showcase {
  position: absolute; top: 12px; right: 12px; z-index: 2;
  display: inline-flex; align-items: center; gap: 6px;
  padding: 6px 12px;
  background: rgba(0,0,0,0.6);
  border: 1px solid rgba(255,255,255,0.25);
  color: #fff;
  font-family: var(--font-display, inherit);
  font-size: 11px; font-weight: 700; letter-spacing: 1.2px;
  text-transform: uppercase;
  cursor: pointer;
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  transition: background 0.15s, border-color 0.15s, color 0.15s;
  user-select: none;
}
.lphome-workflow-showcase:hover {
  background: var(--p5-red, #e63946);
  border-color: var(--p5-red, #e63946);
  color: #fff;
}
.lphome-workflow-showcase:focus-visible {
  outline: 2px solid var(--p5-red, #e63946); outline-offset: 2px;
}
.lphome-workflow-showcase svg { color: inherit; }

/* Showcase fullscreen video modal (shared by drama + mv triggers) */
.lphome-showcase-overlay {
  position: fixed; inset: 0; background: rgba(0,0,0,0.88);
  display: none; align-items: center; justify-content: center;
  z-index: 9999;
}
.lphome-showcase-overlay.is-active { display: flex; }
.lphome-showcase-box { position: relative; width: min(90vw, 1280px); max-height: 90vh; }
.lphome-showcase-box video { width: 100%; max-height: 80vh; background: #000; display: block; }
/* YouTube iframe variant — match video sizing so swap between mp4/yt is seamless */
.lphome-showcase-box iframe#lphome-showcase-player {
  width: 100%; aspect-ratio: 16/9; max-height: 80vh; background: #000; display: block; border: 0;
}
#lphome-showcase-media-slot { width: 100%; }
.lphome-showcase-tabs { display: flex; gap: 8px; margin-top: 12px; justify-content: center; }
.lphome-showcase-tab {
  min-width: 70px; padding: 8px 18px; background: transparent;
  border: 1px solid rgba(255,255,255,0.3); color: rgba(255,255,255,0.78);
  font-family: var(--font-display, inherit);
  font-size: 12px; font-weight: 700; letter-spacing: 1.2px;
  cursor: pointer;
  transition: background 0.15s, color 0.15s, border-color 0.15s;
}
.lphome-showcase-tab:hover:not(.is-active) { background: rgba(255,255,255,0.08); color: #fff; }
.lphome-showcase-tab.is-active { background: var(--p5-red, #e63946); border-color: var(--p5-red, #e63946); color: #fff; }
/* X uses position: fixed to viewport — iframe (YouTube) can't capture clicks
 * on a fixed-position element above the overlay's stacking context. z-index
 * higher than overlay (9999) so it sits above iframe content and navbar. */
.lphome-showcase-close {
  position: fixed; top: 16px; right: 16px;
  width: 40px; height: 40px;
  background: rgba(0,0,0,0.75); border: 1px solid rgba(255,255,255,0.5); color: #fff;
  font-size: 24px; line-height: 1; cursor: pointer; font-family: inherit;
  z-index: 10001;
  display: flex; align-items: center; justify-content: center;
  border-radius: 0;
}
.lphome-showcase-close:hover { background: var(--p5-red, #e63946); border-color: var(--p5-red, #e63946); }

/* ── Skills showcase variant — header + category tabs + featured grid ── */
.lphome-showcase-box.is-skills { width: min(94vw, 1320px); }
.lphome-showcase-box.is-skills .lphome-showcase-content {
  background: #0c0c10;
  border: 1px solid rgba(255,255,255,0.06);
  display: flex; flex-direction: column;
  /* Fixed height (not max-height) — modal must not collapse when a category
     has only 1–2 items; user expects the frame to stay stable as they switch
     tabs. Grid below is the only scrollable region. */
  height: 86vh;
}

/* Header — strong hook copy: 🔥 + verb + count */
.lphome-showcase-header {
  padding: 18px 22px 14px;
  border-bottom: 1px solid rgba(255,255,255,0.06);
}
.lphome-showcase-title {
  display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap;
  font-family: var(--font-display, inherit);
  font-size: 18px; font-weight: 700; color: #fff;
  letter-spacing: 0.02em;
}
.lphome-showcase-flame { font-size: 20px; line-height: 1; filter: drop-shadow(0 0 6px rgba(255,107,53,0.5)); }
.lphome-showcase-count { font-size: 12px; font-weight: 500; color: rgba(255,255,255,0.5); letter-spacing: 0.06em; }

/* Category tab strip — scrollable horizontally if categories overflow */
.lphome-showcase-cats {
  display: flex; gap: 8px; padding: 12px 22px 14px;
  border-bottom: 1px solid rgba(255,255,255,0.06);
  overflow-x: auto; overflow-y: hidden;
  scrollbar-width: thin; scrollbar-color: rgba(255,255,255,0.18) transparent;
}
.lphome-showcase-cats::-webkit-scrollbar { height: 4px; }
.lphome-showcase-cats::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.18); }
.lphome-showcase-cat {
  flex-shrink: 0;
  display: inline-flex; align-items: center; gap: 6px;
  padding: 7px 14px;
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.08);
  color: rgba(255,255,255,0.72);
  font-family: inherit;
  font-size: 12px; font-weight: 600; letter-spacing: 0.04em;
  cursor: pointer; white-space: nowrap;
  transition: background 0.12s, border-color 0.12s, color 0.12s;
}
.lphome-showcase-cat:hover { background: rgba(255,255,255,0.07); color: #fff; }
.lphome-showcase-cat.is-active {
  background: var(--p5-red, #e63946); border-color: var(--p5-red, #e63946); color: #fff;
}
.lphome-showcase-cat-n {
  font-size: 10px; font-weight: 700;
  padding: 1px 6px;
  background: rgba(255,255,255,0.12);
  color: rgba(255,255,255,0.7);
  letter-spacing: 0.04em;
}
.lphome-showcase-cat.is-active .lphome-showcase-cat-n { background: rgba(255,255,255,0.22); color: #fff; }

/* Scroll wrapper — owns the overflow + flex sizing. Splitting scroll vs.
   columns onto separate elements is necessary: CSS columns inside a fixed-
   height flex item tries to expand horizontally instead of scrolling. With
   the wrapper, the wrapper does the vertical scroll and the inner grid
   flows its columns naturally without height constraint. */
.lphome-showcase-scroll {
  flex: 1 1 0;
  min-height: 0;
  overflow-y: auto;
  overflow-x: hidden;
}
.lphome-showcase-scroll::-webkit-scrollbar { width: 6px; }
.lphome-showcase-scroll::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.15); }

/* Masonry — CSS columns per project convention (Generate / Workshop). Cards
   flow column-major (top→bottom, then next column). Natural height variance
   from title length (1–2 lines) makes the waterfall read as intended. */
.lphome-showcase-grid {
  columns: 4 220px;
  column-gap: 14px;
  padding: 18px 22px 22px;
}

/* Card */
.lphome-showcase-card {
  display: block; text-decoration: none; color: inherit;
  background: #181820;
  border: 1px solid rgba(255,255,255,0.08);
  transition: border-color 0.18s, transform 0.18s, box-shadow 0.18s;
  position: relative;
  break-inside: avoid;
  margin-bottom: 14px;
}
.lphome-showcase-card:hover {
  border-color: var(--p5-red, #e63946);
  transform: translateY(-3px);
  box-shadow: 0 8px 28px rgba(230,57,70,0.18);
}

.lphome-showcase-card-media {
  position: relative; aspect-ratio: 16/10; overflow: hidden; background: #0a0a10;
}
.lphome-showcase-card-media img {
  width: 100%; height: 100%; object-fit: cover; display: block;
  transition: transform 0.3s ease;
}
.lphome-showcase-card:hover .lphome-showcase-card-media img { transform: scale(1.04); }

/* Rank — gold/silver/bronze for top 3, red for the rest */
.lphome-showcase-card-rank {
  position: absolute; top: 10px; left: 10px;
  min-width: 32px; height: 24px; padding: 0 8px;
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--p5-red, #e63946); color: #fff;
  font-family: var(--font-display, inherit);
  font-size: 12px; font-weight: 800; letter-spacing: 0.04em;
  box-shadow: 0 2px 6px rgba(0,0,0,0.3);
}
.lphome-showcase-card-rank.is-r1 {
  background: linear-gradient(135deg, #ffd76b 0%, #f4a93a 100%);
  color: #1a0f00;
  box-shadow: 0 2px 10px rgba(244,169,58,0.4);
}
.lphome-showcase-card-rank.is-r2 {
  background: linear-gradient(135deg, #e8eaee 0%, #b5bac1 100%);
  color: #1a1a1a;
  box-shadow: 0 2px 8px rgba(181,186,193,0.32);
}
.lphome-showcase-card-rank.is-r3 {
  background: linear-gradient(135deg, #d99764 0%, #a85c29 100%);
  color: #fff;
  box-shadow: 0 2px 8px rgba(168,92,41,0.32);
}

/* Hover-only CTA pill — affordance for "this card is interactive" */
.lphome-showcase-card-cta {
  position: absolute; right: 10px; bottom: 10px;
  padding: 5px 12px;
  background: var(--p5-red, #e63946); color: #fff;
  font-family: var(--font-display, inherit);
  font-size: 11px; font-weight: 700; letter-spacing: 0.08em;
  opacity: 0; transform: translateY(4px);
  transition: opacity 0.18s, transform 0.18s;
  pointer-events: none;
}
.lphome-showcase-card:hover .lphome-showcase-card-cta { opacity: 1; transform: translateY(0); }

.lphome-showcase-card-body { padding: 12px 14px 14px; }
.lphome-showcase-card-title {
  font-size: 13.5px; font-weight: 600; color: #fff;
  line-height: 1.4;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
  overflow: hidden; word-break: break-word;
}
/* Top 3 — slightly larger title so the rank still carries visual weight in a
   masonry layout (where spanning multiple columns is not available). */
.lphome-showcase-card.is-featured .lphome-showcase-card-title { font-size: 14.5px; }

.lphome-showcase-card-meta {
  display: flex; justify-content: space-between; align-items: center;
  gap: 8px; margin-top: 10px;
  font-size: 11px;
}
/* Author chip — small avatar + @name */
.lphome-showcase-card-author {
  display: inline-flex; align-items: center; gap: 6px;
  color: rgba(255,255,255,0.6);
  font-weight: 500; letter-spacing: 0;
  min-width: 0;
}
.lphome-showcase-card-author > span:last-child {
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  max-width: 110px;
}
.lphome-showcase-card-avatar {
  width: 18px; height: 18px; border-radius: 50%;
  background: var(--p5-red, #e63946); color: #fff;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 9px; font-weight: 800; letter-spacing: 0;
  flex-shrink: 0; object-fit: cover;
}
.lphome-showcase-card-avatar.is-letter { font-family: var(--font-display, inherit); }

/* Social-proof signals */
.lphome-showcase-card-clones {
  display: inline-flex; align-items: center; gap: 5px;
  color: #ffb86b; font-weight: 600; letter-spacing: 0.02em;
}
.lphome-showcase-card-fresh {
  display: inline-flex; align-items: center; gap: 5px;
  color: rgba(120,200,255,0.85); font-weight: 600; letter-spacing: 0.02em;
}
.lphome-showcase-card-meta svg { width: 11px; height: 11px; }

.lphome-showcase-empty,
.lphome-showcase-loading {
  column-span: all;
  padding: 60px 20px; text-align: center;
  color: rgba(255,255,255,0.5); font-size: 13px; letter-spacing: 0.04em;
}

@media (max-width: 768px) {
  .lphome-showcase-grid { columns: 2 0; column-gap: 10px; padding: 14px; }
  .lphome-showcase-header { padding: 14px 16px 10px; }
  .lphome-showcase-title { font-size: 15px; gap: 8px; }
  .lphome-showcase-cats { padding: 10px 16px; }
  .lphome-showcase-cat { padding: 6px 11px; font-size: 11px; }
  .lphome-showcase-card-cta { opacity: 1; transform: none; }
}

/* ── Comic showcase variant — hardcoded storyboard set grouped by act ── */
/* Modal frame — wider than skills to fit TOC sidebar + 4-col panel grids */
.lphome-showcase-box.is-comic { width: min(95vw, 1440px); }
.lphome-showcase-box.is-comic .lphome-showcase-content {
  background: #0c0c10;
  border: 1px solid rgba(255,255,255,0.06);
  display: flex; flex-direction: column;
  height: 86vh;
  /* Container for in-modal lightbox (absolutely positioned child) */
  position: relative;
  overflow: hidden;
}

/* Body — flex row hosting [TOC sidebar | scroll area]. Sits below header,
   absorbs remaining vertical space. overflow:hidden forces children's
   overflow-y:auto to take effect instead of bubbling up to content. */
.lphome-comic-body {
  flex: 1 1 0;
  min-height: 0;
  display: flex;
  overflow: hidden;
}

/* Left TOC sidebar — fixed width column with act list */
.lphome-comic-toc {
  flex: 0 0 220px;
  background: rgba(255,255,255,0.025);
  border-right: 1px solid rgba(255,255,255,0.06);
  overflow-y: auto;
  padding: 14px 0;
}
.lphome-comic-toc::-webkit-scrollbar { width: 4px; }
.lphome-comic-toc::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.12); }
.lphome-comic-toc ul {
  list-style: none;
  margin: 0; padding: 0;
}
.lphome-comic-toc li { margin: 0; padding: 0; }

.lphome-comic-toc-item {
  display: grid;
  grid-template-columns: 1fr auto;
  grid-template-rows: auto auto;
  column-gap: 10px;
  row-gap: 4px;
  padding: 12px 16px 12px 18px;
  text-decoration: none;
  color: rgba(255,255,255,0.72);
  border-left: 3px solid transparent;
  transition: background 0.15s, border-color 0.15s, color 0.15s;
  cursor: pointer;
}
.lphome-comic-toc-item:hover {
  background: rgba(255,255,255,0.05);
  color: #fff;
}
.lphome-comic-toc-item.is-active {
  background: linear-gradient(90deg, rgba(230,57,70,0.14), rgba(230,57,70,0.02));
  border-left-color: var(--p5-red, #e63946);
  color: #fff;
}
.lphome-comic-toc-num {
  grid-row: 1; grid-column: 1;
  font-family: var(--font-display, inherit);
  font-size: 11px; font-weight: 800; letter-spacing: 0.14em;
  color: var(--p5-red, #e63946);
  text-transform: uppercase;
}
.lphome-comic-toc-count {
  grid-row: 1; grid-column: 2;
  align-self: center;
  font-size: 10px; font-weight: 700;
  color: rgba(255,255,255,0.5);
  padding: 1px 7px;
  background: rgba(255,255,255,0.06);
  letter-spacing: 0.04em;
}
.lphome-comic-toc-item.is-active .lphome-comic-toc-count {
  color: #fff;
  background: rgba(230,57,70,0.4);
}
.lphome-comic-toc-title {
  grid-row: 2; grid-column: 1 / -1;
  font-size: 13.5px; font-weight: 600;
  color: inherit;
  letter-spacing: 0.01em;
  line-height: 1.3;
}

/* Comic modal header — title chip + author + sub-count + CTA on right */
.lphome-comic-header {
  display: flex; align-items: center; justify-content: space-between;
  gap: 16px; flex-wrap: wrap;
}
.lphome-comic-tag {
  display: inline-flex; align-items: center;
  padding: 4px 10px;
  background: var(--p5-red, #e63946); color: #fff;
  font-family: var(--font-display, inherit);
  font-size: 11px; font-weight: 800; letter-spacing: 0.18em;
}
.lphome-comic-headtitle {
  font-family: var(--font-display, inherit);
  font-size: 22px; font-weight: 800; color: #fff;
  letter-spacing: 0.02em;
}
.lphome-comic-cta {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 9px 18px;
  background: var(--p5-red, #e63946); color: #fff;
  font-family: var(--font-display, inherit);
  font-size: 12px; font-weight: 700; letter-spacing: 0.1em;
  text-transform: uppercase; text-decoration: none;
  transition: background 0.15s, transform 0.15s;
}
.lphome-comic-cta:hover { background: #c92a37; transform: translateY(-1px); }

/* Scroll region — owns vertical overflow for act sections */
.lphome-comic-scroll {
  flex: 1 1 0;
  min-height: 0;
  overflow-y: auto;
  overflow-x: hidden;
  padding: 4px 22px 24px;
}
.lphome-comic-scroll::-webkit-scrollbar { width: 6px; }
.lphome-comic-scroll::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.15); }

/* Act section — head row + 4-col panel grid */
.lphome-comic-act {
  margin-top: 22px;
  padding-top: 18px;
  border-top: 1px solid rgba(255,255,255,0.08);
}
.lphome-comic-act:first-child { margin-top: 8px; border-top: 0; padding-top: 8px; }

.lphome-comic-act-head {
  display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap;
  margin-bottom: 14px;
}
.lphome-comic-act-num {
  font-family: var(--font-display, inherit);
  font-size: 14px; font-weight: 800; letter-spacing: 0.12em;
  color: var(--p5-red, #e63946);
  /* Make act number scannable — left red bar accent */
  padding-left: 10px;
  border-left: 3px solid var(--p5-red, #e63946);
  line-height: 1;
}
.lphome-comic-act-title {
  font-size: 18px; font-weight: 700; color: #fff;
  letter-spacing: 0.02em;
}
.lphome-comic-act-sub {
  font-size: 12px; color: rgba(255,255,255,0.55);
  letter-spacing: 0.02em;
}
.lphome-comic-act-count {
  margin-left: auto;
  font-size: 11px; font-weight: 700; letter-spacing: 0.06em;
  color: rgba(255,255,255,0.5);
  padding: 3px 9px;
  background: rgba(255,255,255,0.06);
}

/* Webtoon-style vertical reading column — panels stack top→bottom at
   natural aspect ratio (no crop). Showcase-modal context: keep the column
   narrow so user sees 1 full panel + the next peeking below (preview feel,
   not a full-screen reader). At 480px × 4:3 aspect ≈ 640px tall, vs modal
   viewport ~86vh = ~690px on a typical 800px screen. */
.lphome-comic-grid {
  display: flex;
  flex-direction: column;
  gap: 4px;
  max-width: 480px;
  margin: 0 auto;
}
.lphome-comic-panel {
  position: relative;
  margin: 0;
  background: #0a0a10;
  border: 1px solid rgba(255,255,255,0.08);
  cursor: zoom-in;
  transition: border-color 0.18s, box-shadow 0.18s;
}
.lphome-comic-panel:hover {
  border-color: var(--p5-red, #e63946);
  box-shadow: 0 6px 22px rgba(230,57,70,0.18);
}
.lphome-comic-panel img {
  width: 100%; height: auto; display: block;
}
.lphome-comic-panel-num {
  position: absolute; top: 8px; left: 8px;
  padding: 3px 8px;
  background: rgba(0,0,0,0.65);
  color: #fff;
  font-family: var(--font-display, inherit);
  font-size: 11px; font-weight: 700; letter-spacing: 0.08em;
  pointer-events: none;
}

/* In-modal lightbox — covers the comic modal content (not the page) so the
   user can dismiss and stay inside the showcase. Click overlay or × to close. */
.lphome-comic-lightbox {
  position: absolute; inset: 0;
  background: rgba(0,0,0,0.92);
  display: flex; align-items: center; justify-content: center;
  z-index: 5;
  cursor: zoom-out;
}
.lphome-comic-lightbox[hidden] { display: none; }
.lphome-comic-lightbox img {
  max-width: 92%; max-height: 92%;
  object-fit: contain;
  display: block;
  border: 1px solid rgba(255,255,255,0.12);
}
.lphome-comic-lightbox-close {
  position: absolute; top: 12px; right: 12px;
  width: 36px; height: 36px;
  background: rgba(0,0,0,0.5);
  border: 1px solid rgba(255,255,255,0.25);
  color: #fff;
  font-size: 22px; line-height: 1; cursor: pointer;
  font-family: inherit;
}
.lphome-comic-lightbox-close:hover { background: var(--p5-red, #e63946); border-color: var(--p5-red, #e63946); }

/* Scroll area inside comic body — flex row child, takes remaining width.
   min-width:0 lets the panel grid actually constrain to remaining space
   (without it, grid children's intrinsic width can push past flex basis). */
.lphome-comic-body .lphome-comic-scroll {
  flex: 1 1 0;
  min-width: 0;
}

/* Light theme reverse — content frame swaps to off-white card */
:root[data-theme="light"] .lphome-showcase-box.is-comic .lphome-showcase-content {
  background: #fff;
  border-color: rgba(0,0,0,0.08);
}
:root[data-theme="light"] .lphome-comic-headtitle { color: #1a1a1a; }
:root[data-theme="light"] .lphome-comic-act { border-top-color: rgba(0,0,0,0.08); }
:root[data-theme="light"] .lphome-comic-act-title { color: #1a1a1a; }
:root[data-theme="light"] .lphome-comic-act-sub { color: rgba(0,0,0,0.55); }
:root[data-theme="light"] .lphome-comic-act-count {
  color: rgba(0,0,0,0.55);
  background: rgba(0,0,0,0.05);
}
:root[data-theme="light"] .lphome-comic-panel {
  background: #f4f4f6;
  border-color: rgba(0,0,0,0.08);
}
:root[data-theme="light"] .lphome-comic-toc {
  background: rgba(0,0,0,0.025);
  border-right-color: rgba(0,0,0,0.08);
}
:root[data-theme="light"] .lphome-comic-toc-item { color: rgba(0,0,0,0.72); }
:root[data-theme="light"] .lphome-comic-toc-item:hover {
  background: rgba(0,0,0,0.05);
  color: #1a1a1a;
}
:root[data-theme="light"] .lphome-comic-toc-item.is-active {
  background: linear-gradient(90deg, rgba(230,57,70,0.1), rgba(230,57,70,0.02));
  color: #1a1a1a;
}
:root[data-theme="light"] .lphome-comic-toc-count {
  color: rgba(0,0,0,0.5);
  background: rgba(0,0,0,0.05);
}

/* Intermediate width — narrower TOC so the reading column gets more room */
@media (max-width: 1100px) {
  .lphome-comic-toc { flex-basis: 180px; }
}

/* H5 — hide TOC, body becomes the natural scroll, full-width reading column */
@media (max-width: 768px) {
  .lphome-workflow-showcase { top: 8px; right: 8px; padding: 5px 9px; font-size: 10px; letter-spacing: 1px; gap: 4px; }
  .lphome-workflow-showcase svg { width: 10px; height: 10px; }
  .lphome-showcase-box.is-comic { width: 96vw; }
  .lphome-showcase-box.is-comic .lphome-showcase-content { height: 92vh; }
  .lphome-comic-toc { display: none; }
  .lphome-comic-headtitle { font-size: 17px; }
  .lphome-comic-cta { padding: 7px 14px; font-size: 11px; }
  .lphome-comic-scroll { padding: 4px 14px 18px; }
  .lphome-comic-grid { max-width: 100%; gap: 3px; }
  .lphome-comic-act-head { gap: 8px; margin-bottom: 10px; }
  .lphome-comic-act-title { font-size: 15px; }
  .lphome-comic-act-sub { font-size: 11px; }
  .lphome-comic-act-count { font-size: 10px; }
}

/* ──────────────────────────────────────────────────────────────
 * HOME visual refresh — reel/slate landing page
 * 2026-05-16: first-pass visual replacement for `/`.
 * Keeps the existing lp HOME infrastructure (theme, i18n, tracker, drawer)
 * while replacing the middle marketing surface with a cinematic slate system.
 * ────────────────────────────────────────────────────────────── */

:root[data-page="lp"] {
  --lphome-reel-bg: var(--p5-bg);
  --lphome-reel-panel: var(--p5-card);
  --lphome-reel-panel-2: var(--p5-bg-alt);
  --lphome-reel-line: var(--p5-border);
  --lphome-reel-line-strong: var(--p5-border-strong);
  --lphome-reel-text: var(--p5-text);
  --lphome-reel-text-2: var(--p5-text-secondary);
  --lphome-reel-muted: var(--p5-muted);
  --lphome-reel-soft: var(--p5-soft-red);
  --lphome-reel-scrim: rgba(255, 255, 255, 0.72);
  --lphome-reel-shadow: var(--p5-shadow-lg);
  --lphome-reel-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
}
:root[data-page="lp"][data-theme="dark"] {
  --lphome-reel-scrim: rgba(0, 0, 0, 0.62);
}

:root[data-page="lp"] body {
  background:
    linear-gradient(135deg, transparent 0, transparent 48%, rgba(230, 57, 70, 0.08) 48%, transparent 52%, transparent 100%),
    var(--lphome-reel-bg);
  color: var(--lphome-reel-text);
}

.lphome-header {
  position: fixed;
  left: 0;
  right: 0;
  background: transparent;
  backdrop-filter: none;
  border-bottom-color: transparent;
  box-shadow: none;
}
:root[data-page="lp"][data-theme="dark"] .lphome-header {
  background: transparent;
}
.lphome-nav-link.is-active::after { bottom: -15px; }
.lphome-cta-mini,
.lphome-lang-btn,
.lphome-theme-btn,
.lphome-mobile-menu-btn,
.lphome-drawer-close-btn {
  border-radius: 0;
}

.lphome-reel-page {
  min-height: 100vh;
  overflow: hidden;
  background: var(--lphome-reel-bg);
}

.lphome-reel-hero {
  position: relative;
  min-height: 100vh;
  padding: 96px 32px 72px;
  overflow: hidden;
  border-bottom: 1px solid var(--lphome-reel-line);
  isolation: isolate;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
}
.lphome-reel-hero::before {
  content: none;
}
.lphome-reel-hero-bg {
  position: absolute;
  inset: 0;
  z-index: -2;
  overflow: hidden;
}
.lphome-reel-scene {
  position: absolute;
  inset: 0;
  opacity: 0;
  transition: opacity 0.7s ease;
  background:
    linear-gradient(180deg, rgba(0, 0, 0, 0.18), var(--lphome-reel-bg)),
    linear-gradient(135deg, rgba(230, 57, 70, 0.12), rgba(45, 65, 120, 0.18));
}
.lphome-reel-scene.is-active { opacity: 1; }
/* Hero 演示视频 — admin 在后台配置 URL，autoplay muted loop 播放。
   空 src 时隐藏 → fallback 到 .lphome-reel-scene::before 渐变占位文案。 */
.lphome-reel-scene-video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  z-index: 1;
  pointer-events: none;
}
.lphome-reel-scene-video[src=""],
.lphome-reel-scene-video:not([src]) {
  display: none;
}
/* 视频上加一层渐变让顶部 nav + 左侧文字 readable */
.lphome-reel-scene-video + ::before,
.lphome-reel-scene:has(.lphome-reel-scene-video[src]:not([src=""]))::after {
  z-index: 2;
}
.lphome-reel-scene::before {
  content: attr(data-placeholder);
  position: absolute;
  inset: 9% 7%;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(255, 255, 255, 0.10);
  color: rgba(255, 255, 255, 0.20);
  font-family: var(--lphome-reel-mono);
  font-size: 13px;
  text-transform: uppercase;
  background:
    linear-gradient(90deg, transparent 0, rgba(255, 255, 255, 0.06) 50%, transparent 100%),
    rgba(0, 0, 0, 0.10);
  animation: lphomeReelDrift 16s ease-in-out infinite alternate;
}
.lphome-reel-scene::after {
  content: none;
}
.lphome-reel-scene[data-feature="mv"] {
  background:
    linear-gradient(180deg, rgba(36, 12, 48, 0.20) 0, var(--lphome-reel-bg) 96%),
    linear-gradient(135deg, rgba(230, 57, 70, 0.22), rgba(80, 54, 140, 0.28));
}
.lphome-reel-scene[data-feature="game"] {
  background:
    linear-gradient(180deg, rgba(12, 42, 52, 0.22) 0, var(--lphome-reel-bg) 96%),
    linear-gradient(135deg, rgba(74, 144, 226, 0.18), rgba(16, 185, 129, 0.18));
}
.lphome-reel-scene[data-feature="drama"] {
  background:
    linear-gradient(180deg, rgba(58, 20, 32, 0.24) 0, var(--lphome-reel-bg) 96%),
    linear-gradient(135deg, rgba(230, 57, 70, 0.18), rgba(140, 70, 110, 0.22));
}
.lphome-reel-scene[data-feature="skill"] {
  background:
    linear-gradient(180deg, rgba(28, 28, 38, 0.28) 0, var(--lphome-reel-bg) 96%),
    linear-gradient(135deg, rgba(230, 57, 70, 0.16), rgba(107, 114, 128, 0.18));
}
@keyframes lphomeReelDrift {
  from { transform: translate3d(-12px, -8px, 0) scale(1.02); }
  to { transform: translate3d(12px, 8px, 0) scale(1.05); }
}

.lphome-reel-hero-grid {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: 1fr;
  gap: 56px;
  width: min(1320px, 100%);
  min-height: 600px;
  margin: 0 auto;
  align-items: end;
}
.lphome-reel-hero-copy {
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  min-height: 560px;
  color: #fff;
}
.lphome-reel-hero-copy .lphome-reel-title,
.lphome-reel-hero-copy .lphome-reel-title > span,
.lphome-reel-hero-copy .lphome-reel-lede {
  color: #fff;
}
.lphome-reel-kicker,
.lphome-reel-slate-meta,
.lphome-reel-slate-edge,
.lphome-reel-media-tag,
.lphome-reel-cap,
.lphome-reel-time,
.lphome-reel-loader {
  font-family: var(--lphome-reel-mono);
  letter-spacing: 0;
  text-transform: uppercase;
}
.lphome-reel-title {
  margin: 0;
  max-width: 760px;
  color: var(--lphome-reel-text);
  font-size: 84px;
  line-height: 0.88;
  font-weight: 900;
}
.lphome-reel-lede {
  width: min(650px, 100%);
  margin: 26px 0 0;
  color: var(--lphome-reel-text-2);
  font-size: 18px;
  line-height: 1.8;
}
.lphome-reel-actions,
.lphome-reel-row-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 28px;
}
.lphome-reel-btn {
  min-height: 48px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 0 22px;
  border: 1px solid var(--lphome-reel-line-strong);
  background: transparent;
  color: var(--lphome-reel-text);
  font-size: 13px;
  font-weight: 800;
  text-transform: uppercase;
  border-radius: 0;
}
.lphome-reel-btn:hover {
  border-color: var(--p5-red);
  color: var(--p5-red-2);
}
.lphome-reel-actions .lphome-btn-primary,
.lphome-reel-row-actions .lphome-btn-primary {
  background: var(--p5-red);
  border-color: var(--p5-red);
  color: #fff;
}
.lphome-reel-actions .lphome-btn-primary:hover,
.lphome-reel-row-actions .lphome-btn-primary:hover {
  background: var(--p5-red-2);
  border-color: var(--p5-red-2);
  color: #fff;
}
/* Hero dot indicators — 4 根纯净横线 ( "-" 形式 ) 浮在 hero 底部居中。
   inactive 短 / active 拉长 + 内嵌红色进度条 (6.5s, autoplay 同步)。
   无容器装饰: 不要 backdrop / border / padding。 */
.lphome-reel-dots {
  position: absolute;
  left: 50%;
  bottom: 36px;
  transform: translateX(-50%);
  z-index: 5;
  display: flex;
  align-items: center;
  gap: 10px;
}
.lphome-reel-dot-btn {
  position: relative;
  width: 16px;
  height: 2px;
  padding: 0;
  border: 0;
  background: rgba(255, 255, 255, 0.42);
  cursor: pointer;
  transition: width 0.32s ease, background 0.2s ease;
  overflow: hidden;
  border-radius: 0;
}
:root[data-page="lp"][data-theme="light"] .lphome-reel-dot-btn {
  background: rgba(0, 0, 0, 0.32);
}
.lphome-reel-dot-btn:hover {
  background: var(--p5-red-2);
}
.lphome-reel-dot-btn.is-active {
  width: 40px;
  background: rgba(255, 255, 255, 0.16);
}
:root[data-page="lp"][data-theme="light"] .lphome-reel-dot-btn.is-active {
  background: rgba(0, 0, 0, 0.14);
}
.lphome-reel-dot-btn.is-active::after {
  content: "";
  position: absolute;
  inset: 0;
  background: var(--p5-red);
  transform-origin: left center;
  animation: lphomeReelDotProgress 6.5s linear forwards;
}
@keyframes lphomeReelDotProgress {
  from { transform: scaleX(0); }
  to { transform: scaleX(1); }
}
@media (max-width: 720px) {
  .lphome-reel-dots { bottom: 24px; gap: 8px; }
  .lphome-reel-dot-btn { width: 12px; }
  .lphome-reel-dot-btn.is-active { width: 32px; }
}

.lphome-reel-section {
  padding: 96px 32px;
  background: var(--lphome-reel-bg);
}
#product.lphome-reel-section {
  padding-top: 56px;
}
.lphome-reel-inner {
  width: min(1180px, 100%);
  margin: 0 auto;
}
.lphome-reel-slate {
  margin-bottom: 64px;
  border-top: 1px solid var(--lphome-reel-line-strong);
  border-bottom: 1px solid var(--lphome-reel-line-strong);
}
#product .lphome-reel-slate {
  border-top: 0;
  border-bottom: 0;
}
#community .lphome-reel-slate {
  border-top: 0;
  border-bottom: 0;
}
.lphome-reel-slate-edge {
  min-height: 38px;
  display: flex;
  align-items: center;
  gap: 18px;
  color: var(--lphome-reel-muted);
  font-size: 11px;
  font-weight: 800;
}
.lphome-reel-rule {
  flex: 1;
  min-width: 24px;
  height: 1px;
  background: var(--lphome-reel-line);
}
.lphome-reel-red { color: var(--p5-red-2); }
.lphome-reel-slate-meta {
  display: flex;
  align-items: center;
  gap: 13px;
  min-height: 40px;
  border-top: 1px solid var(--lphome-reel-line);
  border-bottom: 1px solid var(--lphome-reel-line);
  color: var(--lphome-reel-muted);
  font-size: 11px;
  font-weight: 700;
}
.lphome-reel-slate-body {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(280px, 420px);
  gap: 56px;
  padding: 42px 0 42px 22px;
  align-items: end;
}
.lphome-reel-slate-body::before {
  content: '';
  position: absolute;
  left: 0;
  top: 42px;
  bottom: 42px;
  width: 3px;
  background: var(--p5-red);
}
.lphome-reel-kicker {
  margin-bottom: 16px;
  color: var(--p5-red-2);
  font-size: 12px;
  font-weight: 800;
}
.lphome-reel-kicker-line {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
}
.lphome-reel-kicker-line::before {
  content: '';
  width: 38px;
  height: 2px;
  background: var(--p5-red);
  flex: 0 0 38px;
}
.lphome-reel-slate-title {
  margin: 0;
  color: var(--lphome-reel-text);
  font-size: 56px;
  line-height: 1.02;
  font-weight: 900;
}
.lphome-reel-tag {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 0 8px;
  background: var(--p5-red);
  color: var(--p5-text-inverse);
}
.lphome-reel-title-accent {
  color: var(--p5-red);
}
.lphome-reel-slate-aside {
  margin: 0;
  color: var(--lphome-reel-text-2);
  font-size: 15px;
  line-height: 1.9;
}
.lphome-reel-slate-aside strong {
  color: var(--lphome-reel-text);
  font-weight: 800;
}

.lphome-reel-stack {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 34px;
}
.lphome-reel-stack::before {
  content: '';
  position: absolute;
  left: 58px;
  top: 0;
  bottom: 0;
  width: 1px;
  background: linear-gradient(180deg, transparent, var(--lphome-reel-line-strong), transparent);
}
.lphome-reel-row {
  position: relative;
  display: grid;
  grid-template-columns: minmax(230px, 0.76fr) 96px minmax(320px, 1fr);
  gap: 30px;
  align-items: stretch;
  min-height: 420px;
  padding: 22px 0;
  opacity: 0.82;
  transform: translateY(14px);
  transition: opacity 0.45s ease, transform 0.45s ease;
}
.lphome-reel-row.is-visible {
  opacity: 1;
  transform: translateY(0);
}
.lphome-reel-copy {
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-width: 0;
}
.lphome-reel-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  color: var(--p5-red-2);
  font-family: var(--lphome-reel-mono);
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
}
.lphome-reel-eyebrow::before {
  content: '';
  width: 22px;
  height: 2px;
  background: var(--p5-red);
}
.lphome-reel-copy h3 {
  margin: 16px 0 14px;
  color: var(--lphome-reel-text);
  font-size: 34px;
  line-height: 1.1;
  font-weight: 900;
}
.lphome-reel-copy p {
  margin: 0;
  color: var(--lphome-reel-text-2);
  font-size: 14px;
  line-height: 1.85;
}
.lphome-reel-feats {
  display: grid;
  gap: 8px;
  margin: 22px 0 0;
}
.lphome-reel-feats div {
  display: grid;
  grid-template-columns: 20px minmax(0, 1fr) auto;
  gap: 12px;
  align-items: center;
  min-height: 36px;
  border-bottom: 1px solid var(--lphome-reel-line);
  color: var(--lphome-reel-text-2);
  font-size: 12px;
}
.lphome-reel-feats span:first-child,
.lphome-reel-feats em {
  color: var(--p5-red-2);
  font-family: var(--lphome-reel-mono);
  font-style: normal;
  font-size: 11px;
  font-weight: 800;
}
.lphome-reel-action {
  width: max-content;
  margin-top: 22px;
  color: var(--p5-red-2);
  font-weight: 900;
  text-transform: uppercase;
}
.lphome-reel-action::after {
  content: ' ->';
  transition: margin-left 0.2s ease;
}
.lphome-reel-action:hover::after { margin-left: 4px; }
.lphome-reel-num {
  position: relative;
  z-index: 1;
  align-self: center;
  color: rgba(230, 57, 70, 0.20);
  font-family: var(--lphome-reel-mono);
  font-size: 70px;
  line-height: 1;
  font-weight: 900;
  text-align: center;
}
.lphome-reel-media {
  position: relative;
  min-height: 380px;
  overflow: hidden;
  border: 1px solid var(--lphome-reel-line);
  background: var(--lphome-reel-panel);
  box-shadow: var(--lphome-reel-shadow);
  opacity: 0;
  transform: translateY(50px);
  transition: opacity 0.65s ease 0.12s, transform 0.65s cubic-bezier(0.2, 0.8, 0.2, 1) 0.12s;
}
.lphome-reel-row.is-visible .lphome-reel-media {
  opacity: 1;
  transform: translateY(0);
}
.lphome-reel-media::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background:
    linear-gradient(90deg, transparent 0, rgba(255, 255, 255, 0.07) 50%, transparent 100%),
    linear-gradient(180deg, rgba(0, 0, 0, 0.24), transparent 48%, rgba(0, 0, 0, 0.30));
}
.lphome-reel-media-tag,
.lphome-reel-cap,
.lphome-reel-time {
  position: absolute;
  z-index: 2;
  color: rgba(255, 255, 255, 0.82);
  font-size: 11px;
  font-weight: 800;
}
.lphome-reel-media-tag {
  top: 16px;
  left: 16px;
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.lphome-reel-cap { left: 16px; bottom: 16px; }
.lphome-reel-time { right: 16px; bottom: 16px; }

.lphome-mock-mv,
.lphome-mock-game,
.lphome-mock-comic,
.lphome-mock-skill {
  height: 100%;
  min-height: 380px;
  padding: 26px;
  background:
    linear-gradient(135deg, rgba(230, 57, 70, 0.13), rgba(80, 80, 118, 0.18)),
    var(--lphome-reel-panel-2);
}
.lphome-mock-mv {
  display: flex;
  flex-direction: column;
  gap: 14px;
  justify-content: flex-end;
}
.lphome-mv-row {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  flex: 1;
  min-height: 0;
  align-items: center;
}
.lphome-mv-row div {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  background: linear-gradient(135deg, rgba(230, 57, 70, 0.28), rgba(86, 64, 138, 0.30));
  border: 1px solid rgba(255, 255, 255, 0.14);
}
.lphome-mv-row div::after {
  content: '';
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-35%, -50%);
  border-left: 16px solid rgba(255, 255, 255, 0.85);
  border-top: 10px solid transparent;
  border-bottom: 10px solid transparent;
}
.lphome-mv-timeline {
  display: grid;
  gap: 10px;
  padding: 12px;
  background: rgba(0, 0, 0, 0.34);
}
.lphome-mv-clips {
  display: grid;
  grid-template-columns: repeat(9, minmax(0, 1fr));
  gap: 5px;
  height: 34px;
}
.lphome-mv-clips i {
  display: block;
  background: rgba(230, 57, 70, 0.56);
}
.lphome-mv-clips i:nth-child(2n) { background: rgba(74, 144, 226, 0.52); }
.lphome-mv-clips i:nth-child(3n) { background: rgba(245, 197, 24, 0.50); }
.lphome-mv-wave {
  height: 28px;
  background: repeating-linear-gradient(90deg, rgba(255,255,255,0.18) 0 2px, transparent 2px 9px);
}
.lphome-mv-wave span {
  display: block;
  width: 2px;
  height: 68px;
  margin-top: -20px;
  margin-left: 58%;
  background: var(--p5-red);
}

.lphome-mock-game {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  background:
    linear-gradient(180deg, rgba(35, 120, 132, 0.20), rgba(0, 0, 0, 0.26)),
    var(--lphome-reel-panel-2);
}
.lphome-game-scene {
  flex: 1;
  border: 1px solid rgba(255, 255, 255, 0.13);
  background:
    linear-gradient(180deg, rgba(255,255,255,0.08), transparent),
    radial-gradient(circle at 50% 90%, rgba(80, 212, 168, 0.34), transparent 48%);
}
.lphome-game-hp {
  display: grid;
  gap: 8px;
  margin: 18px 0;
}
.lphome-game-hp div {
  height: 9px;
  border: 1px solid rgba(255, 255, 255, 0.16);
  background: rgba(0, 0, 0, 0.30);
}
.lphome-game-hp span {
  display: block;
  width: 72%;
  height: 100%;
  background: var(--p5-red);
}
.lphome-game-hp div:nth-child(2) span {
  width: 88%;
  background: rgba(80, 212, 168, 0.88);
}
.lphome-game-ui {
  display: grid;
  grid-template-columns: 1fr 54px 1fr;
  gap: 10px;
  align-items: center;
}
.lphome-game-ui span,
.lphome-game-ui b {
  min-height: 42px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(255, 255, 255, 0.16);
  color: rgba(255, 255, 255, 0.86);
  background: rgba(0, 0, 0, 0.28);
  font-family: var(--lphome-reel-mono);
}
.lphome-game-ui b {
  background: var(--p5-red);
  color: var(--p5-text-inverse);
}

.lphome-mock-comic {
  background:
    linear-gradient(135deg, rgba(230, 57, 70, 0.10), rgba(245, 197, 24, 0.13)),
    var(--lphome-reel-panel-2);
}
.lphome-comic-grid-demo {
  height: 100%;
  display: grid;
  grid-template-columns: 1.1fr 1fr;
  grid-template-rows: 1fr 1fr;
  gap: 12px;
}
.lphome-comic-grid-demo div {
  position: relative;
  border: 2px solid rgba(0, 0, 0, 0.72);
  background: rgba(255, 255, 255, 0.76);
}
.lphome-comic-grid-demo div:first-child {
  grid-row: 1 / span 2;
  background: linear-gradient(180deg, rgba(90, 58, 42, 0.68), rgba(26, 10, 8, 0.86));
}
.lphome-comic-grid-demo div:nth-child(2) {
  background: linear-gradient(135deg, rgba(255, 245, 224, 0.96), rgba(255, 217, 176, 0.92));
}
.lphome-comic-grid-demo span,
.lphome-comic-grid-demo b {
  position: absolute;
  left: 12px;
  bottom: 12px;
  color: rgba(0, 0, 0, 0.78);
  font-family: var(--lphome-reel-mono);
  font-size: 11px;
}
.lphome-comic-grid-demo b {
  color: var(--p5-red);
  font-size: 26px;
  font-weight: 900;
}

.lphome-mock-skill {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.lphome-mock-skill h4 {
  margin: 42px 0 12px;
  color: rgba(255, 255, 255, 0.88);
  font-size: 18px;
}
.lphome-mock-skill div {
  display: grid;
  grid-template-columns: 40px minmax(0, 1fr) auto;
  gap: 12px;
  align-items: center;
  min-height: 58px;
  padding: 9px 10px;
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.12);
}
.lphome-mock-skill i {
  width: 40px;
  height: 40px;
  background: linear-gradient(135deg, rgba(230, 57, 70, 0.45), rgba(74, 144, 226, 0.36));
}
.lphome-mock-skill span {
  min-width: 0;
  color: rgba(255, 255, 255, 0.86);
  font-size: 12px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.lphome-mock-skill b {
  color: var(--p5-red-2);
  font-family: var(--lphome-reel-mono);
  font-size: 10px;
}

.lphome-reel-loader {
  margin-top: 38px;
  padding: 14px;
  border: 1px solid var(--lphome-reel-line);
  color: var(--lphome-reel-muted);
  text-align: center;
  font-size: 11px;
}

.lphome-v3-section {
  position: relative;
  padding: 120px 32px;
  background: var(--lphome-reel-bg);
  border-top: 1px solid var(--lphome-reel-line);
}
.lphome-v3-section .lphome-reel-inner {
  width: min(1320px, 100%);
}
.lphome-v3-sec-head {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: end;
  gap: 32px;
  padding-bottom: 28px;
  margin-bottom: 64px;
}
.lphome-v3-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 22px;
  color: var(--p5-red-2);
  font-family: var(--lphome-reel-mono);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 0;
  text-transform: uppercase;
}
.lphome-v3-eyebrow::before {
  content: '';
  width: 26px;
  height: 2px;
  background: var(--p5-red);
}
.lphome-v3-sec-title {
  max-width: 920px;
  margin: 0;
  color: var(--lphome-reel-text);
  font-size: 84px;
  font-weight: 900;
  line-height: 1.2;
  letter-spacing: 0;
}
.lphome-v3-sec-title em {
  color: var(--p5-red);
  font-style: normal;
}
.lphome-v3-sec-aside {
  align-self: end;
  display: flex;
  flex-direction: column;
  gap: 14px;
  max-width: 340px;
  padding-bottom: 6px;
}
.lphome-v3-sec-aside p {
  margin: 0;
  color: var(--lphome-reel-text-2);
  font-size: 14px;
  line-height: 1.75;
}
.lphome-v3-sec-aside-link {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  color: var(--p5-red-2);
  font-family: var(--lphome-reel-mono);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 0;
  text-transform: uppercase;
  text-decoration: none;
}
.lphome-v3-sec-aside-link::after {
  content: '->';
  transition: transform 0.18s ease;
}
.lphome-v3-sec-aside-link:hover::after {
  transform: translateX(4px);
}

#product.lphome-v3-section {
  padding-top: 120px;
  padding-bottom: 0;
}
#product .lphome-reel-stack {
  display: block;
  border-top: 1px solid var(--lphome-reel-line);
}
#product .lphome-reel-stack::before {
  display: none;
}
#product .lphome-reel-row,
#product .lphome-reel-row.is-visible {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(440px, 1.3fr);
  grid-template-rows: auto;
  gap: 80px;
  align-items: center;
  min-height: 0;
  padding: 80px 0;
  border-bottom: 1px solid var(--lphome-reel-line);
}

/* ─── Product 区入场动画 (2026-05-18 v3 弧线斜飞版) ───────────────────────
   用 @keyframes 多步关键帧实现"斜着飞 + 弧线轨迹":
     - 0%   起点: 远端外部 (translate X+Y 大偏移 + rotate 倾斜 + scale 略大)
     - 60%  弧线顶点: 越过最终位置一点点 (轻微反向 overshoot 模拟 swing-by)
     - 100% 终点: 归零 (transform: none)
   odd row 卡片右下飞 + 文字左下飞; even row 反向 (卡片左下 + 文字右下)。
   stagger 5 段文字 (eyebrow/h3/p/feats/action) 每段 animation-delay +100ms。
   IntersectionObserver 已在 lp-home.js bindReelReveal 挂好 once-only。 */

/* Hero sound toggle button — 右下角 44×44 半透明圆方按钮, 跟 Product reel-sound-btn
   视觉一致 (rules-global.md SVG-only)。data-muted="0" 时红底激活态。
   z-index 6 高于背景粒子 (4) 但低于 nav header (50)。 */
.lphome-hero-sound-btn {
  position: absolute;
  right: 32px;
  bottom: 32px;
  z-index: 6;
  width: 44px;
  height: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0, 0, 0, 0.5);
  border: 1px solid rgba(255, 255, 255, 0.25);
  color: #fff;
  cursor: pointer;
  pointer-events: auto;
  transition: background 0.18s ease, border-color 0.18s ease;
}
.lphome-hero-sound-btn:hover {
  background: rgba(230, 57, 70, 0.85);
  border-color: var(--p5-red);
}
.lphome-hero-sound-btn[data-muted="0"] {
  background: rgba(230, 57, 70, 0.85);
  border-color: var(--p5-red);
}
@media (max-width: 720px) {
  .lphome-hero-sound-btn { right: 20px; bottom: 20px; width: 38px; height: 38px; }
}

/* 背景粒子层 — lp-home.js bindBgParticles 用 Canvas 渲染 60 缓慢漂浮粒子 +
   邻近粒子连线 + 鼠标互动。fixed 全屏, z-index 4 让它在 section content 上方
   但低于 sound btn (z:4 内层) / header (z:50)。pointer-events:none 不挡交互。 */
.lphome-bg-particles {
  position: fixed;
  inset: 0;
  width: 100vw;
  height: 100vh;
  pointer-events: none;
  z-index: 4;
  opacity: 0.85;
}

/* 防止 translateX/Y 大偏移产生水平滚动条 */
#product { overflow: hidden; }

/* row 主体 fade 入场,transform 交给媒体+文字单独玩 */
#product .lphome-reel-row {
  opacity: 0;
  transition: opacity 0.9s cubic-bezier(0.22, 1, 0.36, 1);
}
#product .lphome-reel-row.is-visible { opacity: 1; }

/* ── 弧线轨迹 keyframes (2026-05-18 v6 顺滑优化) ──
   3 段 keyframes (0/55/100) 避免多 keyframe 段间过渡造成的"一卡一卡"视觉。
   配合 will-change: transform + 元素独立 composite layer + duration 1.4s,
   让 GPU 不过载。整段 cubic-bezier(0.22, 1, 0.36, 1) expo-out 平滑收尾。 */
@keyframes lpReelFlyArcRight {
  0%   { opacity: 0; transform: translate(500px, 350px) rotate(-12deg) scale(1.85); }
  55%  { opacity: 1; transform: translate(40px,  28px)  rotate(-1.5deg) scale(1.10); }
  100% { opacity: 1; transform: translate(0, 0) rotate(0) scale(1); }
}
@keyframes lpReelFlyArcLeft {
  0%   { opacity: 0; transform: translate(-500px, 350px) rotate(12deg) scale(1.85); }
  55%  { opacity: 1; transform: translate(-40px, 28px)  rotate(1.5deg) scale(1.10); }
  100% { opacity: 1; transform: translate(0, 0) rotate(0) scale(1); }
}
@keyframes lpReelTextArcLeft {
  0%   { opacity: 0; transform: translate(-340px, 230px) rotate(8deg)  scale(1.20); }
  55%  { opacity: 1; transform: translate(-30px, 18px)  rotate(1deg)   scale(1.04); }
  100% { opacity: 1; transform: translate(0, 0) rotate(0) scale(1); }
}
@keyframes lpReelTextArcRight {
  0%   { opacity: 0; transform: translate(340px, 230px) rotate(-8deg) scale(1.20); }
  55%  { opacity: 1; transform: translate(30px, 18px)  rotate(-1deg)  scale(1.04); }
  100% { opacity: 1; transform: translate(0, 0) rotate(0) scale(1); }
}

/* 媒体卡 — will-change 让浏览器提前给元素分配独立 composite layer,GPU 加速 */
#product .lphome-reel-row .lphome-reel-media {
  opacity: 0;
  transform: translate(500px, 350px) rotate(-12deg) scale(1.85);
  transform-origin: center center;
  will-change: transform, opacity;
  backface-visibility: hidden;
}
#product .lphome-reel-row:nth-child(even) .lphome-reel-media {
  transform: translate(-500px, 350px) rotate(12deg) scale(1.85);
}
#product .lphome-reel-row.is-visible .lphome-reel-media {
  animation: lpReelFlyArcRight 1.4s cubic-bezier(0.22, 1, 0.36, 1) 0.08s both;
}
#product .lphome-reel-row:nth-child(even).is-visible .lphome-reel-media {
  animation: lpReelFlyArcLeft 1.4s cubic-bezier(0.22, 1, 0.36, 1) 0.08s both;
}

/* 文字 5 段 — odd row 起始 (-340, 230) 左下远端 + scale 1.20 + will-change */
#product .lphome-reel-row .lphome-reel-eyebrow,
#product .lphome-reel-row .lphome-reel-copy h3,
#product .lphome-reel-row .lphome-reel-copy p,
#product .lphome-reel-row .lphome-reel-feats,
#product .lphome-reel-row .lphome-reel-action {
  opacity: 0;
  transform: translate(-340px, 230px) rotate(8deg) scale(1.20);
  transform-origin: center center;
  will-change: transform, opacity;
}
#product .lphome-reel-row:nth-child(even) .lphome-reel-eyebrow,
#product .lphome-reel-row:nth-child(even) .lphome-reel-copy h3,
#product .lphome-reel-row:nth-child(even) .lphome-reel-copy p,
#product .lphome-reel-row:nth-child(even) .lphome-reel-feats,
#product .lphome-reel-row:nth-child(even) .lphome-reel-action {
  transform: translate(340px, 230px) rotate(-8deg) scale(1.20);
}

/* visible 触发 — duration 1.1s + stagger 100ms (短 stagger 让"一波收回" 紧凑) */
#product .lphome-reel-row.is-visible .lphome-reel-eyebrow   { animation: lpReelTextArcLeft 1.1s cubic-bezier(0.22, 1, 0.36, 1) 0.15s both; }
#product .lphome-reel-row.is-visible .lphome-reel-copy h3   { animation: lpReelTextArcLeft 1.1s cubic-bezier(0.22, 1, 0.36, 1) 0.25s both; }
#product .lphome-reel-row.is-visible .lphome-reel-copy p    { animation: lpReelTextArcLeft 1.1s cubic-bezier(0.22, 1, 0.36, 1) 0.35s both; }
#product .lphome-reel-row.is-visible .lphome-reel-feats      { animation: lpReelTextArcLeft 1.1s cubic-bezier(0.22, 1, 0.36, 1) 0.45s both; }
#product .lphome-reel-row.is-visible .lphome-reel-action     { animation: lpReelTextArcLeft 1.1s cubic-bezier(0.22, 1, 0.36, 1) 0.55s both; }
#product .lphome-reel-row:nth-child(even).is-visible .lphome-reel-eyebrow { animation-name: lpReelTextArcRight; }
#product .lphome-reel-row:nth-child(even).is-visible .lphome-reel-copy h3 { animation-name: lpReelTextArcRight; }
#product .lphome-reel-row:nth-child(even).is-visible .lphome-reel-copy p  { animation-name: lpReelTextArcRight; }
#product .lphome-reel-row:nth-child(even).is-visible .lphome-reel-feats   { animation-name: lpReelTextArcRight; }
#product .lphome-reel-row:nth-child(even).is-visible .lphome-reel-action  { animation-name: lpReelTextArcRight; }
#product .lphome-reel-row:nth-child(even) {
  grid-template-columns: minmax(440px, 1.3fr) minmax(0, 1fr);
}
#product .lphome-reel-row:nth-child(even) .lphome-reel-copy {
  order: 2;
  align-items: flex-end;
  text-align: right;
}
#product .lphome-reel-row:nth-child(even) .lphome-reel-copy p {
  margin-left: auto;
}
#product .lphome-reel-row:nth-child(even) .lphome-reel-feats {
  justify-content: flex-end;
}
#product .lphome-reel-row:nth-child(even) .lphome-reel-media {
  order: 1;
}
#product .lphome-reel-num {
  display: none;
}
#product .lphome-reel-copy {
  min-width: 0;
}
#product .lphome-reel-eyebrow {
  margin-bottom: 22px;
  color: var(--lphome-reel-muted);
  letter-spacing: 0;
}
#product .lphome-reel-eyebrow::before {
  width: 28px;
}
#product .lphome-reel-copy h3 {
  margin: 0;
  color: var(--lphome-reel-text);
  font-size: clamp(56px, 6.5vw, 110px);
  word-break: keep-all;
  overflow-wrap: normal;
  font-weight: 900;
  line-height: 1.05;
  letter-spacing: 0;
}
#product .lphome-reel-copy h3 em {
  display: inline;
  color: var(--p5-red);
  font-style: normal;
}
#product .lphome-reel-copy p {
  max-width: 520px;
  margin: 26px 0 0;
  color: var(--lphome-reel-text-2);
  font-size: 18px;
  line-height: 1.7;
}
#product .lphome-reel-feats {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 26px 0 0;
}
#product .lphome-reel-feats div {
  min-height: 0;
  display: inline-flex;
  align-items: center;
  gap: 0;
  padding: 7px 12px;
  border: 1px solid var(--lphome-reel-line-strong);
  color: var(--lphome-reel-text-2);
  font-family: var(--lphome-reel-mono);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0;
  text-transform: uppercase;
}
#product .lphome-reel-feats div > span:first-child,
#product .lphome-reel-feats div > em {
  display: none;
}
#product .lphome-reel-feats div > span:nth-child(2) {
  color: inherit;
}
#product .lphome-reel-action {
  width: max-content;
  margin-top: 26px;
  padding: 14px 22px;
  border: 1px solid var(--p5-red);
  background: var(--p5-red);
  color: var(--p5-text-inverse);
  font-family: var(--lphome-reel-mono);
  font-size: 12px;
  font-weight: 900;
  letter-spacing: 0;
  text-transform: uppercase;
}
#product .lphome-reel-action::after {
  content: '↗';
  margin-left: 10px;
}
#product .lphome-reel-media {
  min-height: 0;
  height: auto;
  aspect-ratio: 16 / 9;
  border: 1px solid var(--lphome-reel-line);
  background:
    linear-gradient(135deg, rgba(230, 57, 70, 0.10), rgba(80, 80, 118, 0.12)),
    var(--lphome-reel-bg);
  box-shadow: none;
}
/* Product reel-row mock 视频 — admin 在后台配置 URL 后覆盖 CSS gradient 占位。
   空 src 时隐藏 → fallback 到 .lphome-mock-* 内的 CSS 占位结构。 */
#product .lphome-reel-media-video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  z-index: 1;
  pointer-events: none;
}
#product .lphome-reel-media-video[src=""],
#product .lphome-reel-media-video:not([src]) {
  display: none;
}
/* Product video 音量解锁按钮 — 默认 muted 自动播放,user 点击 toggle unmute。
   JS (bindHomeProductVideoSound in lp-home.js) 切换 data-muted 状态 + 强制单卡
   互斥避免多声音重叠。 */
#product .lphome-reel-sound-btn {
  position: absolute;
  right: 12px;
  bottom: 12px;
  z-index: 4;
  width: 36px;
  height: 36px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0, 0, 0, 0.55);
  border: 1px solid rgba(255, 255, 255, 0.22);
  color: #fff;
  cursor: pointer;
  pointer-events: auto;
  transition: background 0.18s ease, border-color 0.18s ease, color 0.18s ease;
}
#product .lphome-reel-sound-btn:hover {
  background: rgba(230, 57, 70, 0.85);
  border-color: var(--p5-red);
  color: #fff;
}
#product .lphome-reel-sound-btn[data-muted="0"] {
  background: rgba(230, 57, 70, 0.78);
  border-color: var(--p5-red);
}

/* 视频上方的标签 (MV.STUDIO · LIVE 等) 需要更高 z-index 才能可见 */
#product .lphome-reel-media-tag,
#product .lphome-reel-cap,
#product .lphome-reel-time {
  z-index: 3;
}
#product .lphome-mock-mv,
#product .lphome-mock-game,
#product .lphome-mock-comic,
#product .lphome-mock-skill {
  min-height: 0;
}
#product .lphome-reel-media::before {
  background:
    linear-gradient(180deg, rgba(0, 0, 0, 0.18) 0%, transparent 35%, rgba(0, 0, 0, 0.45) 100%),
    radial-gradient(circle at 80% 80%, rgba(230, 57, 70, 0.18), transparent 55%);
}
#product .lphome-reel-media-tag {
  top: 16px;
  left: 18px;
  z-index: 3;
  color: rgba(255, 255, 255, 0.92);
}
#product .lphome-reel-cap,
#product .lphome-reel-time {
  display: none;
}

@media (max-width: 1100px) {
  .lphome-v3-section {
    padding: 80px 24px;
  }
  .lphome-v3-sec-head {
    grid-template-columns: 1fr;
    gap: 18px;
    margin-bottom: 48px;
  }
  .lphome-v3-sec-title {
    font-size: 56px;
  }
  .lphome-v3-sec-aside {
    max-width: none;
  }
  #product .lphome-reel-row,
  #product .lphome-reel-row:nth-child(even),
  #product .lphome-reel-row.is-visible {
    grid-template-columns: 1fr;
    gap: 36px;
    padding: 56px 0;
  }
  #product .lphome-reel-row:nth-child(even) .lphome-reel-copy {
    order: 1;
    align-items: flex-start;
    text-align: left;
  }
  #product .lphome-reel-row:nth-child(even) .lphome-reel-copy p {
    margin-left: 0;
  }
  #product .lphome-reel-row:nth-child(even) .lphome-reel-feats {
    justify-content: flex-start;
  }
  #product .lphome-reel-row:nth-child(even) .lphome-reel-media {
    order: 2;
  }
}
@media (max-width: 640px) {
  .lphome-v3-section {
    padding: 72px 18px;
  }
  .lphome-v3-sec-title {
    font-size: 46px;
    line-height: 1;
  }
  #product .lphome-reel-copy p {
    font-size: 15px;
  }
}

.lphome-show-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 0 0 32px;
}
.lphome-show-tab {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 38px;
  padding: 0 16px;
  border: 1px solid var(--lphome-reel-line-strong);
  background: transparent;
  color: var(--lphome-reel-text-2);
  font-family: var(--lphome-reel-mono);
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
  cursor: pointer;
  transition: background 0.18s ease, color 0.18s ease, border-color 0.18s ease;
}
.lphome-show-tab:hover {
  color: var(--lphome-reel-text);
  border-color: var(--lphome-reel-text);
}
.lphome-show-tab.is-active {
  background: var(--p5-red);
  border-color: var(--p5-red);
  color: var(--p5-text-inverse);
}
.lphome-show-tab small {
  opacity: 0.72;
  font-size: 10px;
  font-weight: 800;
}

/* community-field 容器从 masonry column 改为 block (2026-05-18) 让 home-trend-swiper
   coverflow 居中布局; mock fallback 卡 (.lphome-com-card) 仅在 server inject 失败时
   显示, fallback 视觉降级可接受。 */
.lphome-community-field {
  display: block;
  position: relative;
}

/* ─────────────────── Home Trend coverflow (Swiper) ───────────────────
   截图参考 Meta Horizon Worlds Trend Spaces: 中央卡正面+大、两侧卡向中倾斜+透视
   收缩, 底部橙色弧形轨道 + 左右 « » 圆形箭头 + 中央 dot indicator。
   Swiper 11 coverflow effect 处理 3D 变换, 本段 CSS 只调 slide 尺寸 + 装饰元素。 */
.home-trend-swiper {
  position: relative;
  width: 100%;
  padding: 30px 0 90px;
  overflow: hidden;
}
.home-trend-slide {
  width: 340px;
  height: 460px;
  display: flex;
  align-items: stretch;
  justify-content: center;
  background: var(--p5-card, #1a1d2a);
  border: 1px solid var(--p5-border, #2d3148);
  overflow: hidden;
  transition: filter 0.4s ease, opacity 0.4s ease;
  filter: brightness(0.55) saturate(0.85);
  opacity: 0.85;
}
.home-trend-swiper .swiper-slide-active {
  filter: brightness(1) saturate(1);
  opacity: 1;
  box-shadow: 0 24px 60px -10px rgba(230, 57, 70, 0.35),
              0 8px 28px -4px rgba(0, 0, 0, 0.55);
}
.home-trend-swiper .swiper-slide-prev,
.home-trend-swiper .swiper-slide-next {
  filter: brightness(0.75) saturate(0.92);
  opacity: 0.95;
}
.home-trend-slide-link {
  position: relative;
  display: block;
  width: 100%;
  height: 100%;
  color: var(--p5-text, #fff);
  text-decoration: none;
}
.home-trend-slide-cover {
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, rgba(80,52,32,0.45), rgba(10,14,26,0.85));
}
.home-trend-slide-cover img,
.home-trend-slide-cover .home-trend-slide-ph {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.home-trend-slide-cover::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 35%, rgba(0,0,0,0.78) 100%);
}
.home-trend-slide-chip {
  position: absolute;
  top: 14px;
  left: 14px;
  z-index: 2;
  padding: 6px 12px;
  background: var(--p5-red, #e63946);
  color: #fff;
  font-family: var(--lphome-reel-mono, ui-monospace, monospace);
  font-size: 11px;
  font-weight: 900;
  letter-spacing: 0.04em;
}
.home-trend-slide-meta {
  position: absolute;
  inset: auto 0 0 0;
  z-index: 2;
  padding: 18px 18px 22px;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.home-trend-slide-title {
  display: block;
  color: #fff;
  font-size: 22px;
  font-weight: 900;
  line-height: 1.22;
  letter-spacing: -0.01em;
}
.home-trend-slide-author {
  color: rgba(255,255,255,0.7);
  font-family: var(--lphome-reel-mono, ui-monospace, monospace);
  font-size: 10px;
  font-style: normal;
  letter-spacing: 0.08em;
}

/* 底部装饰: 橙色弧形轨道 + 左右箭头 + dot indicator */
.home-trend-arc {
  position: absolute;
  left: 8%;
  right: 8%;
  bottom: 36px;
  height: 120px;
  pointer-events: none;
  z-index: 1;
}
.home-trend-arc::before {
  content: '';
  position: absolute;
  inset: 0;
  border-bottom: 2px solid rgba(247, 165, 0, 0.55);
  border-radius: 0 0 50% 50% / 0 0 100% 100%;
}
.home-trend-prev,
.home-trend-next {
  position: absolute;
  bottom: 20px;
  z-index: 5;
  width: 44px;
  height: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  border: 1px solid rgba(247, 165, 0, 0.6);
  color: #f7a500;
  font-size: 18px;
  font-weight: 700;
  cursor: pointer;
  transition: background 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}
.home-trend-prev { left: calc(50% - 90px); }
.home-trend-next { right: calc(50% - 90px); }
.home-trend-prev:hover,
.home-trend-next:hover {
  background: rgba(247, 165, 0, 0.15);
  color: #fff;
  border-color: #f7a500;
}
.home-trend-prev.swiper-button-disabled,
.home-trend-next.swiper-button-disabled {
  opacity: 0.35;
  cursor: not-allowed;
}
.home-trend-pagination {
  position: absolute;
  bottom: 30px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 5;
  display: flex;
  gap: 6px;
  align-items: center;
}
.home-trend-pagination .swiper-pagination-bullet {
  width: 8px;
  height: 8px;
  background: rgba(255,255,255,0.25);
  opacity: 1;
  border-radius: 50%;
  transition: background 0.2s ease, transform 0.2s ease;
}
.home-trend-pagination .swiper-pagination-bullet-active {
  background: #f7a500;
  transform: scale(1.2);
}

@media (max-width: 720px) {
  .home-trend-slide { width: 260px; height: 360px; }
  .home-trend-prev { left: calc(50% - 70px); }
  .home-trend-next { right: calc(50% - 70px); }
}

.lphome-com-card {
  position: relative;
  display: block;
  width: 100%;
  margin: 0 0 10px;
  break-inside: avoid;
  background: transparent;
  color: var(--p5-text-inverse);
  text-decoration: none;
  aspect-ratio: 4 / 5;
  perspective: 1400px;
  transition: transform 0.35s ease, opacity 0.35s ease;
}
/* Pinterest 风全 auto: 不按 marketing_category 强制 aspect-ratio,改为 JS 在 img load
   后读 naturalWidth/Height 设 card.style.aspectRatio (见 lp-home.js bindComCardAutoAspect)。
   默认 4 / 5 仅作图加载前的占位 fallback,避免卡片塌陷。flip 翻转效果保留 (face/back
   absolute inset:0 撑同高,所有 cat 均生效)。 */
.lphome-com-card-flip {
  position: relative;
  width: 100%;
  height: 100%;
  transform-style: preserve-3d;
  transition: transform 0.9s cubic-bezier(0.5, 0, 0.2, 1);
}
.lphome-com-card.is-flipped .lphome-com-card-flip {
  transform: rotateY(180deg);
}
.lphome-com-card-face {
  position: absolute;
  inset: 0;
  overflow: hidden;
  border: 1px solid var(--lphome-reel-line);
  background: var(--lphome-reel-panel);
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
  transition: border-color 0.35s ease;
}
.lphome-com-card-back {
  transform: rotateY(180deg);
}
.lphome-com-card-bg {
  position: absolute;
  inset: 0;
  transition: transform 0.45s ease;
}
.lphome-com-card-bg img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  z-index: 0;
}
.lphome-com-card-bg::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 1;
  background: linear-gradient(180deg, transparent 0, rgba(0, 0, 0, 0.76) 100%);
}
.lphome-com-card:hover { transform: translateY(-3px); }
.lphome-com-card:hover .lphome-com-card-face { border-color: var(--p5-red); }
.lphome-com-card:hover .lphome-com-card-bg { transform: scale(1.05); }
.lphome-community-field:has(.lphome-com-card:hover) .lphome-com-card:not(:hover) { opacity: 0.58; }
.lphome-com-card-face span,
.lphome-com-card-face strong,
.lphome-com-card-face em {
  position: absolute;
  z-index: 1;
  left: 14px;
  right: 14px;
}
.lphome-com-card-face span {
  top: 14px;
  width: max-content;
  padding: 6px 11px;
  background: var(--p5-red);
  color: var(--p5-text-inverse);
  font-family: var(--lphome-reel-mono);
  font-size: 11px;
  font-weight: 900;
}
.lphome-com-card-face strong {
  bottom: 42px;
  font-size: 24px;
  line-height: 1.2;
  font-weight: 900;
  letter-spacing: -0.015em;
}
.lphome-com-card-face em {
  bottom: 14px;
  color: rgba(255, 255, 255, 0.72);
  font-family: var(--lphome-reel-mono);
  font-size: 10px;
  font-style: normal;
}
.lphome-community-field.is-filtered {
  column-count: unset;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 10px;
}
.lphome-community-field.is-filtered .lphome-com-card {
  margin: 0;
  break-inside: auto;
}
.lphome-ca-mv-1 { background: linear-gradient(135deg, rgba(230,57,70,0.36), rgba(80,64,138,0.62)); }
.lphome-ca-mv-2 { background: linear-gradient(135deg, rgba(42,32,54,0.72), rgba(230,57,70,0.24)); }
.lphome-ca-game-1 { background: linear-gradient(180deg, rgba(35,120,132,0.58), rgba(18,40,58,0.78)); }
.lphome-ca-game-2 { background: linear-gradient(180deg, rgba(74,144,226,0.36), rgba(42,24,84,0.78)); }
.lphome-ca-comic-1 { background: linear-gradient(135deg, rgba(90,52,32,0.78), rgba(230,57,70,0.25)); }
.lphome-ca-comic-2 { background: linear-gradient(180deg, rgba(42,48,80,0.74), rgba(10,14,26,0.85)); }
.lphome-ca-skill-1 { background: linear-gradient(135deg, rgba(80,80,104,0.64), rgba(230,57,70,0.16)); }
.lphome-ca-skill-2 { background: linear-gradient(180deg, rgba(35,80,88,0.65), rgba(10,20,24,0.82)); }

.lphome-reel-final {
  position: relative;
  padding: 0 32px;
  overflow: hidden;
  background: var(--lphome-reel-bg);
  border-top: 1px solid var(--lphome-reel-line);
  border-bottom: 0;
  color: var(--lphome-reel-text);
}
.lphome-reel-final::before {
  content: '';
  position: absolute;
  top: 0;
  right: -10%;
  width: 70%;
  height: 100%;
  background: none;
  pointer-events: none;
}
.lphome-final-inner {
  position: relative;
  width: min(1320px, 100%);
  margin: 0 auto;
  padding: 96px 0;
  display: flex;
  flex-direction: column;
  gap: 48px;
}
.lphome-final-meta {
  display: flex;
  align-items: center;
  gap: 22px;
  margin-bottom: 60px;
  color: rgba(255, 255, 255, 0.85);
  font-family: var(--lphome-reel-mono);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}
.lphome-final-rule {
  flex: 1;
  height: 1px;
  background: rgba(255, 255, 255, 0.32);
}
.lphome-final-rec {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: var(--p5-text-inverse);
}
.lphome-final-rec::before {
  content: '';
  width: 7px;
  height: 7px;
  background: var(--p5-text-inverse);
  animation: lphomeReelPulse 1.2s ease-in-out infinite;
}
.lphome-final-title {
  max-width: 920px;
  margin: 0;
  color: var(--lphome-reel-text);
  font-size: 84px;
  line-height: 1.2;
  letter-spacing: 0;
  font-weight: 900;
}
.lphome-final-title em {
  display: inline;
  padding: 0;
  background: transparent;
  color: var(--p5-red);
  font-style: normal;
}
.lphome-final-hero {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 60px;
  align-items: center;
  margin-bottom: 48px;
}
.lphome-final-aside {
  display: block;
}
.lphome-final-aside p {
  max-width: 760px;
  margin: 0;
  color: rgba(255, 255, 255, 0.92);
  font-size: clamp(18px, 1.35vw, 26px);
  line-height: 1.65;
}
.lphome-final-actions {
  display: flex;
  flex-direction: column;
  flex-wrap: wrap;
  gap: 16px;
}
.lphome-final-cta {
  min-width: 0;
  min-height: 52px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 0 28px;
  border: 1px solid rgba(255, 255, 255, 0.42);
  background: transparent;
  color: var(--p5-text-inverse);
  font-family: var(--lphome-reel-mono);
  font-size: 14px;
  font-weight: 800;
  letter-spacing: 0;
  text-transform: uppercase;
  text-decoration: none;
  white-space: nowrap;
  transition: background 0.18s ease, color 0.18s ease, border-color 0.18s ease;
}
.lphome-final-cta.is-primary {
  min-width: 0;
  background: var(--p5-red);
  border-color: var(--p5-red);
  color: var(--p5-text-inverse) !important;
  font-size: 14px;
  -webkit-text-fill-color: var(--p5-text-inverse);
}
.lphome-final-cta.is-primary::after {
  content: "\2197";
}
.lphome-final-cta.is-primary:hover {
  background: var(--p5-red-2);
  border-color: var(--p5-red-2);
  color: var(--p5-text-inverse) !important;
}
.lphome-final-cta:not(.is-primary):hover {
  border-color: var(--p5-red);
  color: var(--p5-red);
}
.lphome-rec-dot {
  margin-left: 6px;
  animation: lphomeReelPulse 1.2s ease-in-out infinite;
}

.lphome-footer {
  background: var(--lphome-reel-bg);
  border-top: 1px solid var(--lphome-reel-line);
}

@media (max-width: 1080px) {
  .lphome-reel-hero { padding-top: 72px; min-height: 700px; }
  .lphome-reel-hero-grid {
    grid-template-columns: 1fr;
    gap: 32px;
    min-height: 0;
  }
  .lphome-reel-hero-copy { min-height: 390px; }
  .lphome-reel-title { font-size: 62px; }
  .lphome-reel-slate-body {
    grid-template-columns: 1fr;
    gap: 30px;
    padding: 34px 0 34px 18px;
  }
  .lphome-reel-slate-title { font-size: 46px; }
  .lphome-reel-stack::before { left: 28px; }
  .lphome-reel-row {
    grid-template-columns: 52px minmax(0, 1fr);
    gap: 18px;
  }
  .lphome-reel-copy { grid-column: 2; grid-row: 1; }
  .lphome-reel-num {
    grid-column: 1;
    grid-row: 1 / span 2;
    align-self: start;
    padding-top: 4px;
    font-size: 42px;
    text-align: left;
  }
  .lphome-reel-media { grid-column: 2; grid-row: 2; }
  .lphome-community-field {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    grid-template-rows: none;
    min-height: 0;
  }
  .lphome-com-card,
  .lphome-com-card:nth-child(n) {
    grid-column: auto;
    grid-row: auto;
    min-height: 210px;
  }
  .lphome-final-aside {
    grid-template-columns: 1fr;
    gap: 36px;
    align-items: stretch;
  }
  .lphome-final-inner {
    width: calc(100% - 48px);
  }
  .lphome-final-actions {
    justify-content: flex-start;
  }
}

@media (max-width: 720px) {
  .lphome-reel-hero,
  .lphome-reel-section,
  .lphome-reel-final {
    padding-left: 18px;
    padding-right: 18px;
  }
  .lphome-reel-title { font-size: 44px; }
  .lphome-reel-lede { font-size: 15px; }
  .lphome-reel-actions,
  .lphome-reel-row-actions { flex-direction: column; }
  .lphome-reel-btn { width: 100%; }
  .lphome-reel-slate-edge,
  .lphome-reel-slate-meta {
    gap: 8px;
    font-size: 9px;
  }
  .lphome-reel-slate-title { font-size: 34px; }
  .lphome-reel-row {
    grid-template-columns: 1fr;
    min-height: 0;
  }
  .lphome-reel-num {
    grid-column: 1;
    grid-row: auto;
  }
  .lphome-reel-copy,
  .lphome-reel-media {
    grid-column: 1;
    grid-row: auto;
  }
  .lphome-reel-media,
  .lphome-mock-mv,
  .lphome-mock-game,
  .lphome-mock-comic,
  .lphome-mock-skill {
    min-height: 300px;
  }
  .lphome-community-field {
    grid-template-columns: 1fr;
  }
  .lphome-reel-final {
    padding-left: 0;
    padding-right: 0;
  }
  .lphome-final-inner {
    width: 100%;
    padding: 80px 18px 96px;
  }
  .lphome-final-meta {
    flex-wrap: wrap;
    gap: 12px;
    margin-bottom: 36px;
  }
  .lphome-final-title {
    margin-bottom: 44px;
    font-size: 56px;
    line-height: 1;
  }
  .lphome-final-cta {
    width: 100%;
  }
}

@media (max-width: 1080px) {
  #product .lphome-reel-copy,
  #product .lphome-reel-media,
  #product .lphome-reel-row:nth-child(even) .lphome-reel-copy,
  #product .lphome-reel-row:nth-child(even) .lphome-reel-media {
    grid-column: auto;
    grid-row: auto;
  }
  #product .lphome-reel-num {
    display: none;
  }
  #product .lphome-reel-media,
  #product .lphome-mock-mv,
  #product .lphome-mock-game,
  #product .lphome-mock-comic,
  #product .lphome-mock-skill {
    min-height: 0;
  }
}

.lphome-workflow-body {
  min-height: 108px;
  display: grid;
  grid-template-columns: 32px minmax(0, 1fr) 26px;
  gap: 14px;
  align-items: center;
  padding: 18px 20px;
}

.lphome-workflow-icon {
  width: 28px;
  height: 28px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--p5-red);
}

.lphome-workflow-copy {
  min-width: 0;
}

.lphome-workflow-copy strong {
  display: block;
  color: var(--p5-text);
  font-size: 20px;
  font-weight: 800;
  line-height: 1.25;
}

.lphome-workflow-copy em {
  display: block;
  margin-top: 8px;
  color: var(--p5-text-secondary);
  font-size: 13px;
  font-style: normal;
  line-height: 1.55;
}

.lphome-workflow-arrow {
  justify-self: end;
  color: var(--p5-text);
  font-size: 28px;
  font-weight: 700;
  line-height: 1;
}

.lphome-showcase {
  padding: 54px 32px 76px;
  background: var(--p5-bg);
  border-top: 1px solid var(--p5-border);
}

.lphome-showcase-head {
  padding: 0;
  margin-bottom: 20px;
  align-items: center;
}

.lphome-showcase .lphome-section-title {
  margin: 0;
  font-size: clamp(36px, 4vw, 64px);
  font-weight: 900;
  letter-spacing: 0;
  line-height: 1.02;
}
/* Bilingual title treatment — JS (lp-home.js styleShowcaseTitle) wraps the
   "Showcase" word in .lphome-h-en, the rest of the locale string in
   .lphome-h-zh, so the same key delivers Chinese-black + English-red-serif.
   Re-applied on languagechange (applyI18n wipes the spans). */
.lphome-showcase .lphome-h-zh {
  color: var(--p5-text);
}
.lphome-showcase .lphome-h-en {
  color: var(--p5-red);
  font-family: 'Playfair Display', 'DM Serif Display', Georgia, 'Times New Roman', serif;
  font-weight: 900;
}

/* Inline emphasis token for section titles — used by audience heading
   ("不同创作者" turns red) and reusable for any future section that wants a
   red-highlighted middle phrase. Font/weight inherited from the parent title;
   only color changes, so it works with both sans Chinese and Latin scripts. */
.lphome-h-em {
  color: var(--p5-red);
}

.lphome-showcase .lphome-link-arrow {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: var(--p5-text);
  font-size: 15px;
  font-weight: 700;
}

.lphome-showcase .lphome-link-arrow:hover {
  color: var(--p5-red);
}

.lphome-showcase .lphome-tabs {
  padding: 0;
  margin-bottom: 26px;
  gap: 40px;
  border-bottom: 1px solid var(--p5-border);
}

.lphome-showcase .lphome-tab {
  padding: 0 0 14px;
  font-size: 16px;
}

.lphome-showcase .lphome-tab.is-active::after {
  bottom: -1px;
}

.lphome-show-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 24px;
}

.lphome-show-grid .lphome-show-card {
  min-width: 0;
  display: flex;
  flex: none;
  flex-direction: column;
  background: var(--p5-card);
  border: 1px solid var(--p5-border);
  box-shadow: none;
}

.lphome-show-grid .lphome-show-card:hover {
  border-color: var(--p5-border-strong);
}

.lphome-show-grid .lphome-show-cover {
  aspect-ratio: 1 / 0.66;
  border-bottom: 1px solid var(--p5-border);
}

.lphome-show-body {
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 20px 20px 16px;
}

.lphome-show-body h3 {
  margin: 0;
  color: var(--p5-text);
  font-size: 20px;
  font-weight: 800;
  line-height: 1.35;
}

.lphome-show-body p {
  margin: 0;
  color: var(--p5-text-secondary);
  font-size: 14px;
  line-height: 1.65;
}

.lphome-show-card-meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  font-size: 13px;
}

.lphome-show-card-meta .lphome-show-author {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  min-width: 0;
  color: var(--p5-text);
  font-weight: 500;
  overflow: hidden;
  white-space: nowrap;
}

.lphome-show-card-meta .lphome-show-author > span {
  overflow: hidden;
  text-overflow: ellipsis;
}

.lphome-show-avatar-dot {
  flex-shrink: 0;
  width: 22px;
  height: 22px;
  background: var(--dot-color, var(--p5-muted));
}

.lphome-show-chip {
  flex-shrink: 0;
  padding: 4px 11px;
  background: var(--p5-bg-alt);
  border: 1px solid var(--p5-border);
  color: var(--p5-text-secondary);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.2px;
  white-space: nowrap;
}

.lphome-show-card-stats {
  display: flex;
  align-items: center;
  gap: 14px;
  padding-top: 12px;
  border-top: 1px solid var(--p5-border);
  color: var(--p5-muted);
  font-size: 12px;
}

.lphome-show-card-stats span {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  line-height: 1;
}

.lphome-show-card-stats > span:last-child {
  margin-left: auto;
}

/* Cover overlay chips — top-right category + bottom-left mono caption.
   Tag = white pill that calls out the card type ("Comic"/"Video"/"Brand").
   Label = mono caption (PANEL/01, 00:45, POSTER/GOLD…) reads like a contact
   sheet stamp; on glassy scrim so it stays legible over any cover photo. */
.lphome-show-tag {
  position: absolute;
  top: 12px; right: 12px;
  z-index: 2;
  padding: 5px 12px;
  background: var(--p5-card);
  border: 1px solid var(--p5-border);
  color: var(--p5-text);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.2px;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.06);
}

.lphome-show-label {
  position: absolute;
  bottom: 12px; left: 12px;
  z-index: 2;
  padding: 5px 10px;
  background: var(--p5-media-scrim);
  border: 1px solid var(--p5-media-outline);
  color: var(--p5-text-inverse);
  font-family: 'Consolas', 'Monaco', 'Courier New', monospace;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 1px;
  line-height: 1.2;
}

@media (max-width: 1180px) {
  .lphome-hero-grid {
    grid-template-columns: 1fr;
    gap: 30px;
  }

  .lphome-hero-side {
    justify-self: stretch;
    max-width: 720px;
    padding-top: 0;
  }

  .lphome-workflow-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .lphome-show-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (max-width: 820px) {
  .lphome-hero {
    padding: 40px 18px 34px;
  }

  .lphome-h1 {
    font-size: clamp(42px, 13vw, 78px);
  }

  .lphome-hero-side .lphome-cta-row {
    flex-wrap: wrap;
  }

  .lphome-workflow-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    margin-top: 32px;
  }

  .lphome-workflow-media {
    height: 220px;
  }

  .lphome-showcase {
    padding: 44px 18px 60px;
  }

  .lphome-showcase-head {
    flex-direction: column;
    align-items: flex-start;
    gap: 14px;
  }

  .lphome-showcase .lphome-tabs {
    gap: 26px;
    overflow-x: auto;
  }

  .lphome-show-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 560px) {
  .lphome-hero-side .lphome-cta-row {
    flex-direction: column;
    align-items: stretch;
  }

  .lphome-hero-side .lphome-btn-primary,
  .lphome-hero-side .lphome-btn-ghost {
    width: 100%;
    min-width: 0;
  }

  .lphome-workflow-grid,
  .lphome-show-grid {
    grid-template-columns: 1fr;
  }

  .lphome-workflow-media {
    height: 240px;
  }

  .lphome-show-body {
    min-height: 0;
  }
}

/* ── Contact email toast (footer "联系我们" click) ─────────────── */
.lphome-contact-toast {
  position: fixed;
  left: 50%;
  bottom: 24px;
  transform: translateX(-50%);
  z-index: 1000;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 14px;
  max-width: calc(100vw - 32px);
  background: var(--p5-card);
  border: 1px solid var(--p5-border);
  box-shadow: var(--p5-shadow-lg);
  font-size: 14px;
  color: var(--p5-text);
  animation: lphomeContactToastIn 0.18s ease-out;
}
.lphome-contact-toast[hidden] {
  display: none;
}
.lphome-contact-toast-email {
  font-family: 'Consolas', 'Monaco', 'Courier New', monospace;
  letter-spacing: 0.2px;
  color: var(--p5-text);
  user-select: all;
  padding: 0 2px;
  white-space: nowrap;
}
.lphome-contact-toast-btn {
  background: transparent;
  border: 0;
  cursor: pointer;
  padding: 6px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--p5-text-secondary);
  transition: background 0.15s ease, color 0.15s ease;
}
.lphome-contact-toast-btn:hover {
  background: var(--p5-bg-alt);
  color: var(--p5-red);
}
.lphome-contact-toast-btn:focus-visible {
  outline: 1px solid var(--p5-red);
  outline-offset: 1px;
}
.lphome-contact-toast-btn.is-ok {
  color: var(--p5-red);
}
@keyframes lphomeContactToastIn {
  from { opacity: 0; transform: translate(-50%, 10px); }
  to   { opacity: 1; transform: translate(-50%, 0); }
}

/* ═══════════════════════════════════════════════════════════════════
 * H5 mobile overhaul (≤768) — 2026-05-14
 * ───────────────────────────────────────────────────────────────────
 * Goal: turn the desktop landing into a mobile-friendly view without
 * touching desktop layout. Adds:
 *   • Hamburger menu (right-slide drawer) replaces the inline nav
 *   • Bottom fixed bar = red full-width CTA + 4-tab navigation
 *   • Workflow grid compressed to 4 dense thumb cards (no icon/arrow)
 *   • Showcase grid → 3 cols, body text trimmed for thumbnail-style cards
 *   • Audience / cta-banner / footer hidden in mobile (kept for desktop)
 *   • Body padding-bottom reserves space for the fixed bottom bar
 * ═══════════════════════════════════════════════════════════════════ */

/* ── Hamburger button (default hidden — only ≤768 shows it) ── */
.lphome-mobile-menu-btn {
  display: none;
  width: 38px; height: 38px;
  align-items: center; justify-content: center;
  background: transparent;
  border: 1px solid var(--p5-border);
  color: var(--p5-text);
  cursor: pointer;
  border-radius: 0;
  flex: 0 0 auto;
  padding: 0;
}
.lphome-mobile-menu-btn:hover {
  color: var(--p5-red);
  border-color: var(--p5-red);
}

/* ── Drawer (right-slide aside, drives by lp-home.js bindMobileMenu) ── */
.lphome-drawer {
  position: fixed; inset: 0;
  z-index: 200;
}
.lphome-drawer[hidden] { display: none; }
.lphome-drawer-overlay {
  position: absolute; inset: 0;
  background: rgba(0, 0, 0, 0.55);
  animation: lphomeDrawerFade 0.18s ease-out;
}
.lphome-drawer-panel {
  position: absolute;
  top: 0; right: 0;
  width: min(280px, 80vw);
  height: 100%;
  background: var(--p5-card);
  border-left: 1px solid var(--p5-border);
  display: flex;
  flex-direction: column;
  animation: lphomeDrawerSlide 0.22s cubic-bezier(0.22, 1, 0.36, 1);
}
@keyframes lphomeDrawerFade {
  from { opacity: 0; }
  to   { opacity: 1; }
}
@keyframes lphomeDrawerSlide {
  from { transform: translateX(100%); }
  to   { transform: translateX(0); }
}
.lphome-drawer-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 16px;
  border-bottom: 1px solid var(--p5-border);
  background: var(--p5-card);
}
.lphome-drawer-head .lphome-logo img { height: 24px; }
.lphome-drawer-close-btn {
  width: 36px; height: 36px;
  background: transparent;
  border: 1px solid var(--p5-border);
  color: var(--p5-text);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 0;
  padding: 0;
}
.lphome-drawer-close-btn:hover {
  color: var(--p5-red);
  border-color: var(--p5-red);
}
.lphome-drawer-nav {
  display: flex;
  flex-direction: column;
  padding: 8px 0;
}
.lphome-drawer-nav a {
  padding: 14px 22px;
  font-size: 16px;
  font-weight: 600;
  color: var(--p5-text);
  border-bottom: 1px solid var(--p5-border);
  text-decoration: none;
}
.lphome-drawer-nav a:hover {
  color: var(--p5-red);
  background: var(--p5-bg-alt);
}

/* Drawer language switcher — 2-col grid, JS-populated from LANG_LABELS map.
   Current locale gets `is-current` class (red bold). Click triggers
   window.setLanguage which swaps locale + re-applies i18n in place. */
.lphome-drawer-lang-wrap {
  border-top: 1px solid var(--p5-border);
  padding: 10px 0 6px;
}
.lphome-drawer-lang {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
}
.lphome-drawer-lang-opt {
  padding: 10px 14px;
  background: transparent;
  border: 0;
  text-align: left;
  font-size: 13px;
  color: var(--p5-text);
  font-family: inherit;
  cursor: pointer;
  border-radius: 0;
}
.lphome-drawer-lang-opt:hover {
  background: var(--p5-bg-alt);
  color: var(--p5-red);
}
.lphome-drawer-lang-opt.is-current {
  color: var(--p5-red);
  font-weight: 600;
}

/* ── Bottom fixed bar — H5 only (.lphome-mobile-bottom) ── */
.lphome-mobile-bottom { display: none; }

@media (max-width: 768px) {
  /* Hide marketing sections that are not in the H5 design.
     workflow-grid hidden 2026-05-14: 与下方 Showcase tabs 信息重复 (Skills/漫剧/MV/漫画
     ↔ 漫画/MV/海报/模板)，删除让 H5 hero → showcase 直达。
     Footer 保留 — H5 用户也需要法律信息（隐私 / 服务条款 / 特定商取引法）+ 联系方式。
     ≤560 媒体查询已把 footer-grid 折成单列，自然适配 H5。 */
  .lphome-audience,
  .lphome-cta-banner,
  .lphome-workflow-grid { display: none; }

  /* Footer 5-column slimming: keep col 1 (brand/logo/socials) + col 5 (公司 — 法律链接)，
     hide col 2/3/4 (提示词 / 资源 / 产品) — H5 用户已可通过 hamburger drawer 找 nav，
     不需要 footer 再重复一份。 */
  .lphome-footer-grid > .lphome-footer-col:nth-child(2),
  .lphome-footer-grid > .lphome-footer-col:nth-child(3),
  .lphome-footer-grid > .lphome-footer-col:nth-child(4) { display: none; }

  /* Reserve space for the bottom fixed CTA bar (46 CTA + 14 safe gap).
     Tabbar removed 2026-05-14 per user feedback — hamburger drawer 提供导航足够。 */
  body { padding-bottom: 60px; }

  /* Header — single tight row: logo + (CTA + hamburger) */
  .lphome-header {
    /* Override 820 fallback that set flex-wrap; we want strict no-wrap here. */
    display: grid;
    grid-template-columns: 1fr auto;
    flex-wrap: nowrap;
    gap: 10px;
    padding: 10px 14px;
    border-top: 0;
  }
  .lphome-nav,
  .lphome-theme-btn,
  .lphome-lang-wrap { display: none; }
  .lphome-mobile-menu-btn { display: inline-flex; }

  .lphome-header-right { gap: 8px; }
  .lphome-cta-mini {
    min-height: 36px;
    padding: 8px 14px;
    font-size: 13px;
  }
  .lphome-logo img { height: 24px; }

  /* Hero — compact stack (single column already from 1180 breakpoint) */
  .lphome-hero { padding: 24px 16px 28px; }
  .lphome-hero-grid { gap: 22px; }
  .lphome-h1 {
    font-size: clamp(34px, 9.5vw, 46px);
    line-height: 1.1;
    margin: 0 0 14px;
  }
  .lphome-lede { font-size: 14px; line-height: 1.7; }

  .lphome-hero-side { padding-top: 12px; }
  .lphome-hero-side-copy {
    margin: 0 0 18px;
    font-size: 14px;
    line-height: 1.7;
  }
  .lphome-hero-side .lphome-cta-row { gap: 12px; margin: 0; }
  .lphome-hero-side .lphome-btn-primary,
  .lphome-hero-side .lphome-btn-ghost {
    min-height: 46px;
    min-width: 0;
    padding: 0 22px;
    font-size: 15px;
  }

  /* Showcase section — tighter padding, head on one row */
  .lphome-showcase {
    padding: 32px 16px 24px;
    border-top: 1px solid var(--p5-border);
  }
  .lphome-showcase-head {
    flex-direction: row;
    align-items: center;
    gap: 8px;
    margin-bottom: 14px;
  }
  .lphome-showcase .lphome-section-title {
    font-size: clamp(22px, 6.5vw, 30px);
    line-height: 1.15;
  }
  .lphome-showcase .lphome-link-arrow {
    font-size: 13px;
    flex: 0 0 auto;
  }
  .lphome-showcase .lphome-link-arrow span { font-size: 13px; }
  .lphome-showcase .lphome-link-arrow svg { width: 14px; height: 14px; }

  /* Tabs — horizontal scroll instead of wrap (preserves visual order) */
  .lphome-showcase .lphome-tabs {
    gap: 22px;
    margin-bottom: 14px;
    overflow-x: auto;
    flex-wrap: nowrap;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
  }
  .lphome-showcase .lphome-tabs::-webkit-scrollbar { display: none; }
  .lphome-showcase .lphome-tab {
    flex: 0 0 auto;
    padding: 0 0 10px;
    font-size: 14px;
    white-space: nowrap;
  }

  /* Show grid → 3 cols, body trimmed to title only (thumbnail-style) */
  .lphome-show-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 6px;
  }
  .lphome-show-grid .lphome-show-cover {
    aspect-ratio: 1;
    border-bottom: 1px solid var(--p5-border);
  }
  .lphome-show-body {
    padding: 8px 8px 10px;
    gap: 4px;
    min-height: 0;
  }
  .lphome-show-body h3 {
    font-size: 12px;
    font-weight: 700;
    line-height: 1.3;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
  }
  .lphome-show-body p { display: none; }
  .lphome-show-card-meta { display: none; }
  .lphome-show-tag {
    top: 6px; right: 6px;
    padding: 2px 6px;
    font-size: 9px;
    letter-spacing: 0.1px;
  }
  .lphome-show-label {
    bottom: 6px; left: 6px;
    padding: 2px 5px;
    font-size: 9px;
    letter-spacing: 0.6px;
  }

  /* Bottom fixed bar — H5 only */
  .lphome-mobile-bottom {
    display: block;
    position: fixed;
    left: 0; right: 0; bottom: 0;
    z-index: 100;
    background: var(--p5-card);
    border-top: 1px solid var(--p5-border);
    box-shadow: 0 -2px 12px rgba(0, 0, 0, 0.06);
  }
  .lphome-mobile-cta {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 46px;
    background: var(--p5-red-gradient);
    color: #fff !important;
    font-size: 15px;
    font-weight: 700;
    letter-spacing: 0.5px;
    text-decoration: none;
  }
  .lphome-mobile-cta:hover { opacity: 0.92; }
  /* Tabbar hidden 2026-05-14 — hamburger drawer covers nav, bottom bar
     simplified to a single conversion CTA. Tab markup kept in HTML in case
     we want to bring it back; just flip display below. */
  .lphome-mobile-tabbar {
    display: none;
  }
  .lphome-mobile-tab {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 3px;
    color: var(--p5-muted);
    font-size: 11px;
    font-weight: 500;
    text-decoration: none;
    position: relative;
    transition: color 0.15s;
  }
  .lphome-mobile-tab svg {
    width: 22px;
    height: 22px;
    flex-shrink: 0;
  }
  .lphome-mobile-tab.is-active {
    color: var(--p5-red);
    font-weight: 600;
  }
  .lphome-mobile-tab.is-active::before {
    content: '';
    position: absolute;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 22px;
    height: 2px;
    background: var(--p5-red);
  }

  /* Drawer panel — slightly narrower on phones (override min 280) */
  .lphome-drawer-panel { width: min(260px, 78vw); }
}

/* Dark theme — bottom bar already inherits via P5 tokens (card/border).
   Drawer overlay needs a darker scrim for legibility on photo content. */
:root[data-page="lp"][data-theme="dark"] .lphome-drawer-overlay {
  background: rgba(0, 0, 0, 0.68);
}

/* Tail override: legacy H5 rules above also target `.lphome-hero` and
   `.lphome-h1`. Keep the refreshed reel layout in control if the mobile
   redirect is bypassed during QA or crawler rendering. */
@media (max-width: 768px) {
  .lphome-reel-hero {
    padding: 72px 18px 56px;
    min-height: 680px;
  }
  .lphome-reel-hero-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 32px;
  }
  .lphome-reel-title {
    font-size: 44px;
    line-height: 0.92;
    margin: 0;
  }
  .lphome-reel-lede {
    font-size: 15px;
    line-height: 1.75;
  }
  .lphome-reel-section,
  .lphome-reel-final {
    padding-left: 18px;
    padding-right: 18px;
  }
  .lphome-reel-final {
    padding-left: 0;
    padding-right: 0;
  }
}
