/* ── tokens: Apple 黑白体系 + 单一强调色，全部集中在 :root ───────── */#landing{
  --bg:#FFFFFF;
  --bg-alt:#F5F5F7;
  --fg:#000000;
  --fg-invert:#000000;
  --muted:#6e6e73;
  --muted-invert:#6e6e73;
  --muted-2:#6e6e73;
  --border:#d2d2d7;
  /* 页脚（assets/css/footer.css）需要的变量，与主站 style.css 取值一致 */
  --text-2:#6e6e73;
  --border-light:#e5e5ea;
  --safe-bottom:env(safe-area-inset-bottom,0px);
  --hairline-dark:rgba(0,0,0,.14);
  --accent:#FF5A36;
  --on-accent:#000000;
  --surface:#ffffff;
  --surface-dark:#FFFFFF;
  --note-bg:#ffffff;
  --nav-bg:rgba(255,255,255,.72);
  --shadow-card:0 26px 56px rgba(0,0,0,.12);

  --font-sans:-apple-system,BlinkMacSystemFont,"SF Pro Display","SF Pro Text","Helvetica Neue","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  --font-body:var(--font-sans);

  --container:820px;
  --gutter:20px;

  --fs-hero:min(6rem,15vw,calc((100vw - 40px) / 7.0));
  --fs-lead:clamp(1.0625rem,4.2vw,1.375rem);
  --fs-statement:clamp(1.65rem,7.4vw,2.5rem);
  --fs-gate:clamp(2rem,8.8vw,3.1rem);
  --fs-body:1.0625rem;
}
#landing *, #landing *::before, #landing *::after{box-sizing:border-box}
#landing{overflow-x:clip;-webkit-text-size-adjust:100%;scroll-behavior:smooth}
#landing{
  margin:0;overflow-x:clip;background:var(--bg);color:var(--fg-invert);
  font-family:var(--font-body);font-size:var(--fs-body);line-height:1.5;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
}
#landing img{display:block;max-width:100%}
#landing a{color:inherit;text-decoration:none}
#landing h1, #landing h2, #landing h3, #landing p{margin:0}
#landing h1, #landing h2, #landing h3{text-wrap:balance;font-weight:800;letter-spacing:-.04em;line-height:1.02}
#landing p{text-wrap:pretty}
#landing :focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}
#landing .container{max-width:var(--container);margin-inline:auto;padding-inline:var(--gutter);width:100%}

@media (min-width:760px){#landing{--gutter:32px}}
#landing .kicker{font-size:.75rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);}
#landing .lead{font-size:var(--fs-lead);line-height:1.5;max-width:30ch;color:var(--muted);margin-top:18px}
#landing .statement{font-size:var(--fs-statement);letter-spacing:-.045em}
#landing .ch{display:inline-block;will-change:transform,opacity}
/* ── nav: 滚动后毛玻璃 + 顶部进度条 ──────────────────────────── */#landing .progress{position:fixed;inset:0 0 auto 0;height:2px;z-index:60;pointer-events:none}
#landing .progress span{display:block;height:100%;background:var(--fg-invert);transform:scaleX(0);transform-origin:0 50%;will-change:transform}
#landing .topnav{
  position:fixed;inset:0 0 auto 0;z-index:55;
  background:transparent;border-bottom:1px solid transparent;
  transition:background .4s ease,border-color .4s ease,backdrop-filter .4s ease;
}
#landing .topnav.is-scrolled{
  background:var(--nav-bg);
  -webkit-backdrop-filter:saturate(180%) blur(20px);
  backdrop-filter:saturate(180%) blur(20px);
  border-bottom-color:var(--hairline-dark);
}
#landing .nav-inner{display:flex;align-items:center;justify-content:center;height:54px}
#landing .brand{font-size:1.0625rem;font-weight:800;letter-spacing:-.02em}
#landing .brand .dot{color:var(--muted-invert)}
/* ── 整屏分页：固定舞台 + 页面交叉淡入（滚动驱动，可倒放） ───── */#landing .pages{position:relative;background:var(--bg)}
#landing .pages-stage{position:sticky;top:0;height:100vh;height:100svh;overflow:hidden}
html.gsap-ready #landing .pages{height:600vh;height:600svh}
html:not(.gsap-ready) #landing .pages-stage{position:static;height:auto;overflow:visible}
#landing .page{
  position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:center;
  padding:clamp(64px,10vh,96px) 0 clamp(36px,6vh,60px);
  background:var(--bg);color:var(--fg-invert);overflow:hidden;
  will-change:transform,opacity;
}
#landing .page--alt{background:var(--bg-alt)}
/* X5 系内核：不要给整页开合成层（will-change），减少原生视频层与页面错位的可能 */html.hero-x5 #landing .page{will-change:auto}
#landing .page-inner{width:100%;max-width:var(--container);margin-inline:auto;padding-inline:var(--gutter);text-align:center}
#landing .page-inner.ta-l{text-align:left}
/* 首屏：「查看更多」提示放进正常流，作为整列里排在内容后面的子项。
   原来是 position:absolute + bottom:22px，屏高不足（360x640 / 320x568 等）时
   会直接压在「进入交友墙」按钮上；改成流式子项后两者天然分上下两行，不会再重叠。 */#landing .page--hero{padding-bottom:14px}
#landing .page--hero .page-inner{flex:1;min-height:0;display:flex;flex-direction:column;justify-content:center;align-items:center}
#landing .page--hero .page-inner > *{width:100%;flex:none}
#landing .page--hero .page-inner > .hero-cta{width:auto}
#landing .page--hero .scroll-cue{position:static;transform:none;margin:4px auto 0}
html:not(.gsap-ready) #landing .page{position:relative;inset:auto;min-height:100svh;overflow:visible}
/* ── 1 · 首屏 ────────────────────────────────────────────────── */#landing .hero-title{font-size:var(--fs-hero);line-height:.98;letter-spacing:-.045em;margin-top:0;white-space:nowrap}
#landing .hero-title .line{display:block}
#landing .hero-sub{margin-top:22px;font-size:var(--fs-lead);line-height:1.6;color:var(--muted-invert);max-width:32ch;margin-inline:auto}
#landing .hero-sub .line{display:block;will-change:transform,opacity}
/* 末页那句大字的 .line 也要成块，否则两行会串成一行自动折行（原来断在「离」后面） */#landing .statement .line{display:block}
#landing .hero-video{margin-top:26px;max-width:420px;margin-inline:auto;border-radius:18px;overflow:hidden;background:var(--surface-dark);box-shadow:var(--shadow-card)}
#landing .hero-video video, #landing .hero-video img{display:block;width:100%;height:auto;aspect-ratio:16/9;max-height:26vh;object-fit:cover;background:#000;pointer-events:none}
/* 隐藏所有原生播放器控件（QQ X5 / iOS Safari / Android Chrome 的暂停、进度条、全屏、下载） */#landing .hero-video video::-webkit-media-controls, #landing .hero-video video::-webkit-media-controls-enclosure, #landing .hero-video video::-webkit-media-controls-panel, #landing .hero-video video::-webkit-media-controls-overlay-play-button, #landing .hero-video video::-webkit-media-controls-start-playback-button, #landing .hero-video video::-webkit-media-controls-play-button, #landing .hero-video video::-webkit-media-controls-timeline, #landing .hero-video video::-webkit-media-controls-current-time-display, #landing .hero-video video::-webkit-media-controls-time-remaining-display, #landing .hero-video video::-webkit-media-controls-fullscreen-button, #landing .hero-video video::-webkit-media-controls-volume-slider, #landing .hero-video video::-webkit-media-controls-mute-button, #landing .hero-video video::-webkit-media-controls-toggle-closed-captions-button{
  display:none !important;
  -webkit-appearance:none !important;
}
#landing .hero-strip{margin-top:28px;width:100%;overflow:hidden}
#landing .hero-strip-row{display:flex;gap:12px;width:max-content;will-change:transform}
#landing .hero-strip-row img{
  width:clamp(52px,14vw,68px);height:clamp(52px,14vw,68px);border-radius:50%;
  object-fit:cover;border:1px solid var(--hairline-dark);background:var(--surface-dark);flex:none;
}
#landing .btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  min-height:52px;padding:0 30px;border:1px solid transparent;border-radius:999px;
  font-size:1.0625rem;font-weight:600;letter-spacing:-.01em;
  transition:transform .18s cubic-bezier(.2,.8,.2,1),background .22s ease,border-color .22s ease,color .22s ease;
}
#landing .btn:active{transform:scale(.97)}
#landing .scroll-cue{
  position:absolute;left:50%;bottom:22px;transform:translateX(-50%);
  display:flex;flex-direction:column;align-items:center;gap:10px;
  color:var(--muted-invert);font-size:.75rem;letter-spacing:.04em;
}
#landing .scroll-cue .arrow{color:var(--fg-invert);animation:cueUp 1.9s cubic-bezier(.4,0,.2,1) infinite}

@keyframes cueUp{
  0%{transform:translateY(8px);opacity:0}
  35%{opacity:1}
  75%{transform:translateY(-7px);opacity:0}
  100%{transform:translateY(-7px);opacity:0}
}
#landing .scroll-cue .cue-main{font-size:.8125rem;font-weight:600;color:var(--fg-invert);letter-spacing:.02em}
#landing .scroll-cue .cue-sub{font-size:.6875rem;color:var(--muted-invert);letter-spacing:.08em;margin-top:-2px}
#landing .hero-cta{margin-top:clamp(16px,3.4vh,26px);font-weight:700;background:var(--fg-invert);color:var(--bg);border-color:var(--fg-invert)}
/* ── 进入页：点击进入遮罩（一次手势触发音乐） ─────────────────── */#landing .gate{
  position:fixed;inset:0;z-index:120;display:flex;align-items:center;justify-content:center;
  background:var(--bg);color:var(--fg-invert);text-align:center;padding:clamp(28px,6vw,48px);
  transition:opacity .38s ease,visibility .38s ease,transform .38s cubic-bezier(.5,0,.15,1);
  will-change:transform,opacity;
}
#landing .gate-inner{display:flex;flex-direction:column;align-items:center;gap:clamp(40px,9vh,72px);max-width:400px}
#landing .gate-title{font-size:var(--fs-gate);line-height:1.02;letter-spacing:-.035em;white-space:nowrap}
#landing .gate-logo{width:clamp(92px,26vw,116px);height:clamp(92px,26vw,116px);border-radius:50%;object-fit:cover}
#landing .gate-btn{position:relative;min-width:min(300px,84vw);min-height:64px;font-size:1.125rem;font-weight:800;letter-spacing:-.02em;background:var(--fg-invert);color:var(--bg);border:none}
#landing .gate-btn::before{content:'';position:absolute;inset:0;border-radius:999px;box-shadow:0 0 0 0 color-mix(in oklch,var(--fg-invert) 22%,transparent);animation:btnRing 2.4s ease-out infinite}

@keyframes btnRing{0%{box-shadow:0 0 0 0 color-mix(in oklch,var(--fg-invert) 22%,transparent)}70%,100%{box-shadow:0 0 0 18px color-mix(in oklch,var(--fg-invert) 0%,transparent)}}
#landing .gate.is-leaving{opacity:0;visibility:hidden;pointer-events:none;transform:scale(1.07)}
html.gate-lock, body.gate-lock{overflow:hidden}
body.gate-lock{position:fixed;inset:0;width:100%;overscroll-behavior:none;touch-action:none}
/* ── 2 · 备忘录：四行心事逐句浮现 ────────────────────────────── */#landing .memo-stage{position:relative;width:min(340px,88vw);margin-inline:auto}
#landing .note{
  position:relative;text-align:left;overflow:hidden;
  background:var(--note-bg);border:1px solid var(--hairline-dark);border-radius:16px;
  box-shadow:var(--shadow-card);will-change:transform,opacity;
}
#landing .note-head{display:flex;align-items:center;gap:8px;padding:15px 18px 13px;border-bottom:1px solid var(--hairline-dark)}
#landing .note-icon{width:16px;height:16px;color:var(--muted-invert);flex:none}
#landing .note-title{font-size:.8125rem;font-weight:700;letter-spacing:.08em;color:var(--fg-invert)}
#landing .note-body{padding:4px 18px 10px;display:flex;flex-direction:column}
#landing .note-body .poem-intro{
  font-size:.9375rem;line-height:1.85;color:var(--fg-invert);
  padding:9px 0;border-bottom:1px solid var(--hairline-dark);
}
#landing .note-body .poem-intro:last-child{border-bottom:none}
/* ── 3 · 交友墙：扑克牌堆叠 ─────────────────────────────────── */#landing .page--wall{justify-content:flex-start}
#landing .page--wall .page-inner{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center}
#landing .stack{position:relative;width:min(48vw,196px);aspect-ratio:1/1;margin:0}
#landing .stack-card{
  position:absolute;inset:0;margin:0;border-radius:20px;overflow:hidden;
  border:1px solid var(--hairline-dark);background:var(--surface-dark);
  box-shadow:var(--shadow-card);will-change:transform,opacity;
}
#landing .stack-card img{width:100%;height:100%;object-fit:cover}
html:not(.gsap-ready) #landing .stack{width:auto;aspect-ratio:auto;display:grid;grid-template-columns:repeat(2,1fr);gap:14px}
html:not(.gsap-ready) #landing .stack-card{position:static;aspect-ratio:1/1;width:auto}
#landing .marquee{display:flex;flex-direction:column;gap:clamp(10px,2.4vw,16px);width:100%;overflow:hidden}
#landing .marquee-row{display:flex;gap:clamp(10px,2.2vw,16px);width:max-content;will-change:transform}
#landing .wall-card{
  flex:none;width:clamp(128px,37vw,168px);aspect-ratio:3/4;margin:0;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  padding:clamp(10px,3vw,14px);border-radius:16px;text-align:center;
  background:var(--surface);border:1px solid var(--hairline-dark);
  box-shadow:0 10px 26px rgba(0,0,0,.06);
}
#landing .wc-avatar{
  width:clamp(44px,13vw,58px);height:clamp(44px,13vw,58px);border-radius:50%;
  object-fit:cover;flex:none;border:1px solid var(--hairline-dark);background:var(--bg-alt);
}
#landing .wc-name{
  margin-top:9px;max-width:100%;font-size:clamp(13px,3.6vw,15px);font-weight:600;
  letter-spacing:-.01em;color:var(--fg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
#landing .wc-tags{margin-top:6px;display:flex;flex-wrap:wrap;justify-content:center;gap:4px}
#landing .wc-tags span{font-size:10px;line-height:1;padding:3px 7px;border-radius:999px;background:var(--bg-alt);color:var(--muted);white-space:nowrap}
#landing .wc-info{
  margin-top:7px;max-width:100%;font-size:11px;line-height:1.45;color:var(--muted);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
/* ── 5 · 末页：收束 ──────────────────────────────────────────── */#landing .join{display:flex;flex-direction:column;align-items:center}
#landing .join-stats{
  list-style:none;margin:0 auto;padding:0;max-width:34ch;
  display:flex;flex-direction:column;gap:clamp(8px,1.6vh,12px);
}
#landing .join-stats li{font-size:1rem;line-height:1.5;color:var(--muted)}
#landing .join-stats b{color:var(--fg-invert);font-weight:700;letter-spacing:-.01em;font-variant-numeric:tabular-nums}
#landing .join .statement{margin-top:clamp(24px,4.5vh,42px)}
#landing .join-cta{
  margin-top:clamp(30px,6vh,52px);
  min-width:min(268px,78vw);font-weight:700;
  background:var(--fg-invert);color:var(--bg);border-color:var(--fg-invert);
}
#landing .join-cta:hover{background:color-mix(in oklch,var(--fg-invert) 84%,#ffffff)}
/* ── 初始隐藏态：仅在 GSAP 就绪时生效，不影响回退可见性 ───── */html.gsap-ready #landing .hero-video, html.gsap-ready #landing .hero-strip, html.gsap-ready #landing #marquee{opacity:0}


@media (max-height:720px){#landing .hero-title{font-size:calc(var(--fs-hero)*.72)}#landing .hero-sub{margin-top:10px;line-height:1.5}#landing .hero-video{margin-top:12px;max-width:min(300px,100%)}#landing .hero-strip{margin-top:10px}#landing .hero-strip-row img{width:clamp(40px,11vw,48px);height:clamp(40px,11vw,48px)}#landing .hero-cta{margin-top:10px;min-height:44px;padding:0 22px;font-size:1rem}#landing .scroll-cue{gap:7px}#landing .stack{width:min(42vw,164px)}#landing .wall-card{width:clamp(112px,33vw,146px);padding:10px}#landing .wc-avatar{width:clamp(40px,11vw,50px);height:clamp(40px,11vw,50px)}
}
/* 宽而矮的窗口（电脑浏览器 1280x800 / 1366x768 等）：首屏同样按视口高度收紧 */

@media (min-width:760px) and (max-height:880px){#landing .hero-title{font-size:min(var(--fs-hero),8.6vh)}#landing .hero-sub{margin-top:12px}#landing .hero-video{margin-top:14px}#landing .hero-strip{margin-top:14px}#landing .hero-cta{margin-top:14px}
}
/* 极矮竖屏（320x480 老机型、带大工具条的 WebView）：隐藏装饰性头像条、再压缩一档 */

@media (max-height:560px){#landing .hero-title{font-size:calc(var(--fs-hero)*.62)}#landing .hero-sub{margin-top:8px;line-height:1.45}#landing .hero-video{margin-top:10px;max-width:min(260px,100%)}#landing .hero-strip{display:none}#landing .hero-cta{margin-top:8px;min-height:42px}
}
/* 手机横屏（高度极小）：纵向空间放不下视频卡片，隐藏视频与头像条，
   否则整块内容会溢出到屏幕外。竖屏不受影响。 */

@media (orientation:landscape) and (max-height:480px){#landing .hero-title{font-size:calc(var(--fs-hero)*.5)}#landing .hero-sub{margin-top:6px;line-height:1.4}#landing .hero-video{display:none}#landing .hero-strip{display:none}#landing .hero-cta{margin-top:6px;min-height:40px;font-size:.95rem}#landing .scroll-cue{gap:4px}#landing .scroll-cue .arrow{width:16px;height:16px}
}

@media (prefers-reduced-motion:reduce){#landing .scroll-cue .arrow{animation:none}#landing .gate-btn::before{animation:none}
}

/* ============================================================
   合并进主站（index.html）后新增的接线：
   · #landing 是交友墙页面里的落地层，不再是独立文档
   · 显示落地层时把交友墙整页隐藏（避免它在下面被点到/被读到）
   · 进入交友墙后隐藏落地层
   ============================================================ */
html.landing-on > body { padding-bottom: 0 !important; }
html:not(.gsap-ready) #landing .page { position: relative; inset: auto; min-height: 100svh; overflow: visible; }
/* 主站 style.css 的 .page 规则会串到落地层上（落地页那 5 个 section 的类名也叫 .page），
   必须按落地页原本的行为覆盖掉：
     · animation: pageIn .38s ... both —— CSS 动画的优先级高于 GSAP 写的行内样式，
       会把每一页的 opacity 永久钉在 1，GSAP 的交叉淡入完全失效
       （症状：上下滑动变成 PPT 翻页，一点都不顺）
     · max-width: 430px + margin: 0 auto —— 宽屏下会把整页压成一条 430px 的竖条
   #landing .page 的优先级高于 .page，所以这三条一覆盖就干净了。 */
#landing .page { max-width: none; margin: 0; animation: none; }
html:not(.landing-on) > body > #landing { display: none !important; }
html.landing-on > body > *:not(#landing):not(script):not(link):not(style):not(noscript) { display: none !important; }
html.landing-on > body > #landing { display: block !important; }
