﻿/* =========================================================
   我们的小宇宙 — 样式
   绾墜鍐欙紝鏃犱换浣曞閮ㄤ緷璧栵紙涓嶈仈缃戜篃鑳藉畬鏁存樉绀猴級
   ========================================================= */

:root{
  --bg-0:#070311;
  --bg-1:#130a26;
  --bg-2:#1d0f33;
  --rose:#ff6ea9;
  --rose-soft:#ffb3cd;
  --gold:#ffd27a;
  --text:#f4ecff;
  --muted:#b6a8d0;
  --card:rgba(255,255,255,.055);
  --line:rgba(255,255,255,.12);
  --radius:22px;
  --maxw:860px;
  --ease:cubic-bezier(.22,.61,.36,1);
}

*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{
  margin:0;
  min-height:100dvh;
  background:
    radial-gradient(900px 620px at 78% -12%, rgba(255,110,169,.20), transparent 62%),
    radial-gradient(760px 540px at 6% 8%, rgba(120,96,255,.20), transparent 60%),
    radial-gradient(680px 520px at 50% 108%, rgba(255,210,122,.12), transparent 62%),
    linear-gradient(180deg,var(--bg-0) 0%, var(--bg-1) 46%, var(--bg-2) 100%);
  background-attachment:fixed;
  color:var(--text);
  font-family:"PingFang SC","HarmonyOS Sans SC","Microsoft YaHei UI","Microsoft YaHei",
              "Noto Sans SC","Source Han Sans SC",system-ui,-apple-system,sans-serif;
  line-height:1.75;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}

#sky{position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none}
#hearts{position:fixed;inset:0;z-index:60;pointer-events:none;overflow:hidden}

main,header.hero,footer.site-footer{position:relative;z-index:1}

/* ---------------- 閫氱敤 ---------------- */
.reveal{opacity:0;transform:translateY(26px);transition:opacity .9s var(--ease),transform .9s var(--ease)}
.reveal.in{opacity:1;transform:none}

.section{
  max-width:var(--maxw);
  margin:0 auto;
  padding:74px 22px 20px;
}
.sec-title{
  font-size:clamp(21px,5.4vw,29px);
  font-weight:800;
  letter-spacing:.5px;
  margin:0 0 8px;
  display:flex;align-items:baseline;gap:12px;
}
.sec-index{
  font-size:12px;font-weight:700;letter-spacing:2px;
  color:var(--rose);opacity:.85;
  border:1px solid rgba(255,110,169,.42);border-radius:999px;
  padding:2px 9px;transform:translateY(-3px);
}
.sec-sub{margin:0 0 28px;color:var(--muted);font-size:14.5px}

/* ---------------- HERO ---------------- */
.hero{
  min-height:100dvh;
  max-width:var(--maxw);
  margin:0 auto;
  padding:calc(env(safe-area-inset-top,0px) + 62px) 22px 48px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  text-align:center;
}
.hero-hi{
  margin:0 0 10px;font-size:14px;letter-spacing:4px;color:var(--rose-soft);
  text-transform:uppercase;
}
.hero-hi span{color:#fff;font-weight:700;letter-spacing:2px}
.hero-title{
  margin:0 0 34px;
  font-size:clamp(38px,11vw,72px);
  font-weight:900;
  letter-spacing:2px;
  line-height:1.15;
  background:linear-gradient(105deg,#fff 8%,var(--rose-soft) 42%,var(--gold) 88%);
  -webkit-background-clip:text;background-clip:text;color:transparent;
  filter:drop-shadow(0 12px 34px rgba(255,110,169,.35));
  animation:breathe 6s ease-in-out infinite;
}
@keyframes breathe{0%,100%{filter:drop-shadow(0 12px 30px rgba(255,110,169,.26))}
  50%{filter:drop-shadow(0 16px 46px rgba(255,110,169,.5))}}

.counter{
  width:100%;
  border:1px solid var(--line);
  border-radius:var(--radius);
  background:linear-gradient(180deg,rgba(255,255,255,.075),rgba(255,255,255,.02));
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  padding:20px 16px 17px;
  box-shadow:0 24px 60px -30px rgba(0,0,0,.9), inset 0 1px 0 rgba(255,255,255,.14);
}
.counter-lab{font-size:13px;color:var(--muted);letter-spacing:2px;margin-bottom:8px}
.counter-row{
  display:grid;grid-template-columns:1.25fr 1fr 1fr 1fr;
  align-items:end;gap:6px;max-width:100%;
}
.cell{display:flex;flex-direction:column;align-items:center;gap:1px;min-width:0}
.num{
  font-variant-numeric:tabular-nums;
  font-weight:900;
  font-size:clamp(30px,8.6vw,54px);
  line-height:1.05;
  letter-spacing:-1px;
  background:linear-gradient(180deg,#fff,#ffc9dc);
  -webkit-background-clip:text;background-clip:text;color:transparent;
  overflow:hidden;
}
.num.sm{
  font-size:clamp(18px,5.4vw,30px);
  background:none;-webkit-text-fill-color:currentColor;
  color:#ffe0ee;opacity:1;
  text-shadow:0 0 18px rgba(255,110,169,.5);
}
.unit{font-size:11.5px;color:var(--muted);letter-spacing:1px;white-space:nowrap}
.counter-tail{margin-top:9px;font-size:12.5px;color:var(--muted);min-height:18px}

.hero-sub{margin:26px 0 0;font-size:15px;color:var(--muted);max-width:30em}
.scroll-hint{
  margin-top:34px;font-size:13px;color:var(--rose-soft);text-decoration:none;
  display:inline-flex;align-items:center;gap:7px;opacity:.9;
}
.scroll-hint .arrow{animation:bob 1.9s ease-in-out infinite}
@keyframes bob{0%,100%{transform:translateY(0);opacity:.55}50%{transform:translateY(6px);opacity:1}}

/* ---------------- 鐓х墖澧?---------------- */
.wall{columns:2;column-gap:12px}
@media (min-width:620px){.wall{columns:3;column-gap:14px}}
.shot{
  break-inside:avoid;
  margin:0 0 12px;
  border-radius:16px;
  overflow:hidden;
  position:relative;
  border:1px solid var(--line);
  background:var(--card);
  cursor:zoom-in;
  transform:translateZ(0);
  transition:transform .5s var(--ease),box-shadow .5s var(--ease),border-color .5s var(--ease);
}
.shot:hover{transform:translateY(-3px);box-shadow:0 22px 44px -26px rgba(255,110,169,.65);border-color:rgba(255,110,169,.42)}
.shot img{display:block;width:100%;height:auto;min-height:120px}
.shot .ph{
  aspect-ratio:4/5;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;
  padding:14px;text-align:center;font-size:12px;color:rgba(255,255,255,.72);
  background:
    radial-gradient(120% 90% at 20% 0%,rgba(255,110,169,.34),transparent 60%),
    radial-gradient(120% 90% at 100% 100%,rgba(120,96,255,.34),transparent 60%),
    linear-gradient(160deg,#261138,#150a24);
}
.shot .ph span{font-size:22px;opacity:.9}
.shot figcaption{
  padding:9px 12px 11px;font-size:12.5px;color:var(--muted);
  background:linear-gradient(180deg,rgba(7,3,17,0),rgba(7,3,17,.55));
}

/* ---------------- 鏃堕棿绾?---------------- */
.tl{list-style:none;margin:0;padding:0 0 0 24px;position:relative}
.tl::before{
  content:"";position:absolute;left:6px;top:6px;bottom:10px;width:2px;
  background:linear-gradient(180deg,var(--rose),rgba(120,96,255,.45),transparent);
  border-radius:2px;
}
.tl li{position:relative;margin:0 0 26px}
.tl li::before{
  content:"";position:absolute;left:-24px;top:9px;width:11px;height:11px;border-radius:50%;
  background:var(--rose);box-shadow:0 0 0 4px rgba(255,110,169,.16),0 0 18px rgba(255,110,169,.75);
}
.tl-date{font-size:12px;letter-spacing:1.5px;color:var(--gold);opacity:.9}
.tl-title{font-size:17px;font-weight:800;margin:2px 0 4px}
.tl-text{margin:0;font-size:14px;color:var(--muted)}

/* ---------------- 小游戏 ---------------- */
.game-wrap{
  position:relative;border:1px solid var(--line);border-radius:var(--radius);
  overflow:hidden;background:rgba(9,4,20,.55);
  box-shadow:0 30px 70px -40px rgba(0,0,0,.95), inset 0 1px 0 rgba(255,255,255,.1);
}
.game-hud{
  display:flex;justify-content:space-between;gap:8px;
  padding:11px 16px;font-size:12.5px;color:var(--muted);
  border-bottom:1px solid var(--line);
  background:linear-gradient(180deg,rgba(255,255,255,.06),transparent);
}
.game-hud b{color:#fff;font-variant-numeric:tabular-nums}
#gameCanvas{display:block;width:100%;height:min(58vh,420px);touch-action:none}
.game-overlay{
  position:absolute;inset:auto 0 0 0;top:44px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;
  text-align:center;padding:22px;
  background:radial-gradient(80% 80% at 50% 40%,rgba(19,10,38,.82),rgba(7,3,17,.94));
  backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
  transition:opacity .4s var(--ease),visibility .4s;
}
.game-overlay.hide{opacity:0;visibility:hidden}
.go-emoji{font-size:34px;margin:0;animation:beat 1.2s ease-in-out infinite}
@keyframes beat{0%,100%{transform:scale(1)}22%{transform:scale(1.18)}44%{transform:scale(1)}}
.game-overlay h3{margin:0;font-size:19px}
.game-overlay p{margin:0;font-size:13.5px;color:var(--muted);max-width:26em}
.btn{
  margin-top:12px;padding:11px 30px;border-radius:999px;border:0;cursor:pointer;
  font-size:15px;font-weight:800;color:#2b0518;letter-spacing:1px;
  background:linear-gradient(135deg,#ffd27a,#ff6ea9);
  box-shadow:0 12px 30px -12px rgba(255,110,169,.9);
  transition:transform .25s var(--ease),box-shadow .25s var(--ease);
  font-family:inherit;
}
.btn:hover{transform:translateY(-2px);box-shadow:0 16px 36px -12px rgba(255,110,169,1)}
.btn:active{transform:translateY(0) scale(.98)}

/* ---------------- 娴嬮獙 ---------------- */
.quiz{display:grid;gap:16px}
.qcard{
  border:1px solid var(--line);border-radius:18px;padding:18px;
  background:linear-gradient(180deg,rgba(255,255,255,.06),rgba(255,255,255,.02));
}
.qcard.answered{opacity:.96}
.q-title{margin:0 0 13px;font-size:15.5px;font-weight:700}
.q-title em{color:var(--rose);font-style:normal;margin-right:7px}
.q-opts{display:grid;gap:9px}
.opt{
  text-align:left;padding:11px 15px;border-radius:13px;cursor:pointer;
  border:1px solid var(--line);background:rgba(255,255,255,.03);
  color:var(--text);font-size:14px;font-family:inherit;
  transition:all .3s var(--ease);
}
.opt:hover{border-color:rgba(255,110,169,.5);background:rgba(255,110,169,.1);transform:translateX(3px)}
.opt.right{border-color:#4ddc9b;background:rgba(77,220,155,.16);color:#c6ffe6;font-weight:700}
.opt.wrong{border-color:#ff6b6b;background:rgba(255,107,107,.14);color:#ffd2d2;animation:shake .4s}
@keyframes shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-7px)}75%{transform:translateX(7px)}}
.q-tip{margin:11px 0 0;font-size:12.5px;color:var(--gold);opacity:0;transition:opacity .4s}
.q-tip.show{opacity:1}

/* ---------------- 姣忔棩涓€鍙?---------------- */
.section-quote{padding-top:56px}
.quote-card{
  margin:0;padding:30px 24px;border-radius:var(--radius);
  border:1px solid rgba(255,110,169,.26);
  background:
    radial-gradient(120% 100% at 0% 0%,rgba(255,110,169,.16),transparent 58%),
    linear-gradient(180deg,rgba(255,255,255,.07),rgba(255,255,255,.02));
  box-shadow:0 28px 70px -40px rgba(255,110,169,.6);
}
.quote-card p{
  margin:0;font-size:clamp(17px,4.6vw,22px);font-weight:700;line-height:1.85;
  letter-spacing:.4px;
}
.quote-card footer{margin-top:14px;font-size:12px;color:var(--muted);letter-spacing:1.5px}

/* ---------------- 淇?---------------- */
.letter-card{
  border:1px solid var(--line);border-radius:var(--radius);
  padding:28px 24px 30px;
  background:
    radial-gradient(100% 80% at 100% 0%,rgba(120,96,255,.16),transparent 60%),
    linear-gradient(180deg,rgba(255,255,255,.062),rgba(255,255,255,.018));
  box-shadow:0 30px 80px -50px rgba(0,0,0,.95), inset 0 1px 0 rgba(255,255,255,.12);
}
.letter-to{margin:0 0 14px;font-size:15px;color:var(--rose-soft);font-weight:700}
.letter-body{min-height:60px;font-size:15.5px;white-space:pre-wrap}
.letter-body .cursor{
  display:inline-block;width:8px;height:1.05em;vertical-align:-.16em;
  background:var(--rose);margin-left:3px;animation:caret .9s steps(1) infinite;
}
@keyframes caret{0%,50%{opacity:1}50.01%,100%{opacity:0}}
.letter-sign{margin:18px 0 0;text-align:right;font-size:14.5px;color:var(--gold)}

/* ---------------- 椤佃剼 ---------------- */
.site-footer{
  max-width:var(--maxw);margin:0 auto;
  padding:64px 22px calc(52px + env(safe-area-inset-bottom,0px));
  text-align:center;
}
.foot-line{margin:0 0 10px;font-size:14px;color:var(--rose-soft)}
.foot-small{margin:0;font-size:12px;color:var(--muted);letter-spacing:.6px}
.foot-tip{margin:14px 0 0;font-size:11.5px;color:rgba(182,168,208,.55)}

/* ---------------- 澶у浘 ---------------- */
.lightbox{
  position:fixed;inset:0;z-index:80;display:flex;align-items:center;justify-content:center;
  background:rgba(5,2,12,.94);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  opacity:0;visibility:hidden;transition:opacity .35s var(--ease),visibility .35s;
  padding:18px;
}
.lightbox.open{opacity:1;visibility:visible}
.lb-figure{margin:0;max-width:100%;max-height:100%;display:flex;flex-direction:column;align-items:center;gap:12px}
.lb-figure img{
  max-width:min(94vw,900px);max-height:76dvh;border-radius:14px;
  box-shadow:0 40px 90px -40px #000;
  object-fit:contain;background:#160b26;
}
.lb-figure figcaption{font-size:13px;color:var(--muted);text-align:center;max-width:80vw}
.lb-close,.lb-nav{
  position:absolute;background:rgba(255,255,255,.09);border:1px solid var(--line);
  color:#fff;border-radius:50%;cursor:pointer;font-family:inherit;
  display:flex;align-items:center;justify-content:center;
  transition:background .3s var(--ease),transform .3s var(--ease);
}
.lb-close{top:calc(14px + env(safe-area-inset-top,0px));right:14px;width:42px;height:42px;font-size:24px;line-height:1}
.lb-nav{top:50%;transform:translateY(-50%);width:44px;height:44px;font-size:26px;line-height:1}
.lb-prev{left:10px}.lb-next{right:10px}
.lb-close:hover,.lb-nav:hover{background:rgba(255,110,169,.3);transform:scale(1.06)}
.lb-nav:hover{transform:translateY(-50%) scale(1.06)}

/* ---------------- 椋樺績 ---------------- */
.heart-fly{
  position:absolute;font-size:22px;pointer-events:none;
  animation:fly 1.9s ease-out forwards;
  will-change:transform,opacity;
}
@keyframes fly{
  0%{transform:translate(-50%,-50%) scale(.4) rotate(0);opacity:0}
  18%{opacity:1}
  100%{transform:translate(-50%,-320%) scale(1.25) rotate(14deg);opacity:0}
}

/* ---------------- 鏃犻殰纰?/ 鍑忓皯鍔ㄦ晥 ---------------- */
@media (prefers-reduced-motion:reduce){
  *{animation-duration:.001s!important;animation-iteration-count:1!important;transition-duration:.001s!important}
  .reveal{opacity:1;transform:none}
  html{scroll-behavior:auto}
}
::selection{background:rgba(255,110,169,.4);color:#fff}

/* 缁嗘粴鍔ㄦ潯 */
::-webkit-scrollbar{width:9px}
::-webkit-scrollbar-track{background:#0b0616}
::-webkit-scrollbar-thumb{background:linear-gradient(180deg,var(--rose),#7a60ff);border-radius:9px}


/* ---------------- 第一份礼物 ---------------- */
.gift-card{
  display:grid;gap:20px;
  border:1px solid var(--line);border-radius:var(--radius);
  padding:20px;
  background:
    radial-gradient(120% 100% at 0% 0%,rgba(255,210,122,.14),transparent 58%),
    linear-gradient(180deg,rgba(255,255,255,.062),rgba(255,255,255,.018));
  box-shadow:0 30px 80px -50px rgba(0,0,0,.95), inset 0 1px 0 rgba(255,255,255,.12);
}
@media (min-width:640px){
  .gift-card{grid-template-columns:236px 1fr;gap:28px;padding:26px;align-items:start}
}
.gift-cover{
  position:relative;aspect-ratio:1/1;border-radius:16px;overflow:hidden;
  border:1px solid var(--line);
  background:
    radial-gradient(120% 90% at 25% 8%,rgba(255,210,122,.3),transparent 60%),
    radial-gradient(120% 90% at 100% 100%,rgba(255,110,169,.28),transparent 60%),
    linear-gradient(160deg,#241236,#120a22);
  display:flex;align-items:center;justify-content:center;
}
.gift-cover img{width:100%;height:100%;object-fit:cover;display:block}
.gift-ph{
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;
  padding:18px;text-align:center;font-size:11.5px;line-height:1.6;color:rgba(255,255,255,.7);
}
.gift-ph b{font-size:13.5px;letter-spacing:.5px;color:#ffe9c9}
.gift-ph code{font-size:10.5px;color:rgba(255,255,255,.58);word-break:break-all}
.gift-note{font-size:32px;color:var(--gold);line-height:1;animation:beat 2.4s ease-in-out infinite}
.gift-tag{
  margin:0 0 4px;font-size:11.5px;letter-spacing:2.5px;color:var(--gold);
  text-transform:uppercase;
}
.gift-name{margin:0 0 14px;font-size:clamp(17px,4.4vw,21px);font-weight:800;line-height:1.5}
.gift-text{white-space:pre-wrap;font-size:14.5px;line-height:1.95;color:#e6dcf7}
.gift-notes{
  margin:16px 0 0;letter-spacing:9px;font-size:13px;
  color:rgba(255,210,122,.65);animation:floatNote 4.5s ease-in-out infinite;
}
@keyframes floatNote{0%,100%{transform:translateY(0);opacity:.6}50%{transform:translateY(-5px);opacity:1}}

/* hidden 兜底（防止 display 覆盖 hidden 属性） */
[hidden]{display:none!important}

/* ---------------- 关键词 --------------- */
.chips{
  display:flex;flex-wrap:wrap;gap:9px 10px;
  padding:4px 0 0;
}
.chip{
  display:inline-block;
  padding:8px 15px;border-radius:999px;
  font-size:13.5px;letter-spacing:.5px;color:#ffe3ef;
  border:1px solid rgba(255,110,169,.34);
  background:linear-gradient(180deg,rgba(255,110,169,.16),rgba(255,110,169,.05));
  box-shadow:0 10px 24px -18px rgba(255,110,169,.9), inset 0 1px 0 rgba(255,255,255,.12);
  animation:chipIn .7s var(--ease) both;
}
.chip:nth-child(4n+2){border-color:rgba(120,96,255,.4);
  background:linear-gradient(180deg,rgba(120,96,255,.18),rgba(120,96,255,.05))}
.chip:nth-child(4n+3){border-color:rgba(255,210,122,.34);
  background:linear-gradient(180deg,rgba(255,210,122,.15),rgba(255,210,122,.04));color:#ffefd4}
.chip:last-child{
  border-color:rgba(255,255,255,.5);
  background:linear-gradient(135deg,rgba(255,210,122,.9),rgba(255,110,169,.9));
  color:#2a0616;font-weight:800;
  animation:chipIn .7s var(--ease) both, breatheChip 3.6s ease-in-out infinite 1s;
}
@keyframes chipIn{from{opacity:0;transform:translateY(12px) scale(.94)}to{opacity:1;transform:none}}
@keyframes breatheChip{0%,100%{box-shadow:0 10px 24px -18px rgba(255,110,169,.9)}
  50%{box-shadow:0 14px 30px -14px rgba(255,166,196,.95)}}
.chips-note{
  margin:22px 0 0;font-size:13.5px;line-height:1.9;color:var(--muted);
  max-width:34em;border-left:2px solid rgba(255,110,169,.45);padding-left:13px;
}
