/* ============================================================
   看到这些，你的拳头想喝血了吗？ — 视觉风格
   ============================================================ */

:root{
  --bg:#0a0507;
  --bg-2:#130a0e;
  --ink:#f3e9e6;
  --ink-dim:#a89295;
  --blood:#c8102e;
  --blood-hi:#ff2d4b;
  --blood-deep:#5c0512;
  --line:rgba(255,255,255,.09);
  --card:#160c10;
  --font: "Noto Sans SC","PingFang SC","Microsoft YaHei","Hiragino Sans GB",system-ui,-apple-system,"Segoe UI",sans-serif;
}

*{box-sizing:border-box}

html{scroll-behavior:smooth}

body{
  margin:0;
  background:
    radial-gradient(1200px 600px at 50% -10%, #2a0710 0%, transparent 60%),
    linear-gradient(180deg,var(--bg) 0%, var(--bg-2) 45%, #080406 100%);
  background-attachment:fixed;
  color:var(--ink);
  font-family:var(--font);
  line-height:1.75;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

/* ---------- 氛围层 ---------- */
.grain{
  position:fixed; inset:-50%; z-index:60; pointer-events:none; opacity:.05;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)'/%3E%3C/svg%3E");
  animation:grainShift 1.1s steps(3) infinite;
}
@keyframes grainShift{
  0%{transform:translate(0,0)} 33%{transform:translate(-3%,2%)} 66%{transform:translate(2%,-3%)} 100%{transform:translate(0,0)}
}
.vignette{
  position:fixed; inset:0; z-index:55; pointer-events:none;
  background:radial-gradient(120% 90% at 50% 45%, transparent 45%, rgba(0,0,0,.75) 100%);
}
.drip{position:fixed; inset:0; z-index:1; pointer-events:none; opacity:.55}

/* ---------- 顶栏 ---------- */
.topbar{
  position:sticky; top:0; z-index:50;
  display:flex; align-items:center; justify-content:space-between; gap:16px;
  padding:10px clamp(14px,4vw,38px);
  background:rgba(10,5,7,.82);
  backdrop-filter:blur(14px) saturate(140%);
  border-bottom:1px solid var(--line);
}
.topbar__brand{
  display:flex; align-items:center; gap:9px;
  font-size:13px; letter-spacing:.18em; color:var(--ink-dim); white-space:nowrap;
}
.topbar__brand .dot{
  width:9px; height:9px; border-radius:50%; background:var(--blood-hi);
  box-shadow:0 0 0 0 rgba(255,45,75,.6); animation:beat 1.15s infinite;
}
@keyframes beat{
  0%{box-shadow:0 0 0 0 rgba(255,45,75,.55)}
  70%{box-shadow:0 0 0 12px rgba(255,45,75,0)}
  100%{box-shadow:0 0 0 0 rgba(255,45,75,0)}
}
.meters{display:flex; gap:clamp(10px,3vw,30px); align-items:center}
.meter{display:flex; align-items:center; gap:8px; font-size:12px; letter-spacing:.08em}
.meter__label{color:var(--ink-dim)}
.meter__track{
  width:clamp(56px,12vw,110px); height:7px; border-radius:99px;
  background:rgba(255,255,255,.08); overflow:hidden;
}
.meter__track i{
  display:block; height:100%; width:0%;
  background:linear-gradient(90deg,#ff8a5c,var(--blood-hi),#7a0417);
  transition:width .45s cubic-bezier(.22,1,.36,1);
}
.meter__val{font-variant-numeric:tabular-nums; color:var(--blood-hi); min-width:3.2em}

/* ---------- 通用 ---------- */
main{position:relative; z-index:2}

h1,h2{line-height:1.25; margin:0; font-weight:900; letter-spacing:-.01em}

.btn{
  display:inline-block; cursor:pointer; font-family:inherit; font-size:15px; font-weight:700;
  padding:13px 26px; border-radius:99px; border:1px solid transparent;
  text-decoration:none; transition:transform .18s, box-shadow .25s, background .25s, color .25s;
  letter-spacing:.03em;
}
.btn:active{transform:translateY(1px) scale(.99)}
.btn--blood{
  color:#fff; background:linear-gradient(135deg,var(--blood-hi),#8d0518 70%);
  box-shadow:0 10px 30px -10px rgba(200,16,46,.9), inset 0 1px 0 rgba(255,255,255,.25);
}
.btn--blood:hover{box-shadow:0 16px 44px -10px rgba(255,45,75,1); transform:translateY(-2px)}
.btn--ghost{
  color:var(--ink); background:rgba(255,255,255,.04); border-color:var(--line);
}
.btn--ghost:hover{background:rgba(255,255,255,.1); border-color:rgba(255,255,255,.28)}

/* ---------- Hero ---------- */
.hero{
  max-width:960px; margin:0 auto; padding:clamp(56px,11vw,130px) clamp(18px,5vw,32px) clamp(30px,6vw,64px);
  text-align:center;
}
.hero__kicker{
  display:inline-block; margin:0 0 26px; padding:7px 16px; border-radius:99px;
  font-size:12.5px; letter-spacing:.22em; color:#ffd9dd;
  background:rgba(200,16,46,.16); border:1px solid rgba(255,45,75,.34);
  animation:blink 2.4s ease-in-out infinite;
}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.55}}

.hero__title{
  font-size:clamp(38px,8.4vw,92px);
  position:relative;
  text-shadow:0 0 46px rgba(200,16,46,.42);
}
.hero__title em{
  font-style:normal; color:var(--blood-hi); position:relative; display:inline-block;
  text-shadow:0 0 26px rgba(255,45,75,.75);
}
.hero__title em::after{
  content:""; position:absolute; left:0; right:0; bottom:.06em; height:.09em;
  background:linear-gradient(90deg,transparent,var(--blood-hi),transparent);
  filter:blur(1px); animation:slash 3.4s ease-in-out infinite;
}
@keyframes slash{0%,100%{transform:scaleX(.55);opacity:.6}50%{transform:scaleX(1);opacity:1}}

.hero__sub{
  margin:30px auto 0; max-width:44em;
  color:var(--ink-dim); font-size:clamp(15px,2vw,17.5px);
}
.hero__cta{display:flex; gap:14px; justify-content:center; flex-wrap:wrap; margin-top:38px}
.hero__warn{margin-top:22px; font-size:13px; color:#7d6a6d; letter-spacing:.1em}

/* ---------- 伤情统计 ---------- */
.plate{
  max-width:960px; margin:0 auto; padding:0 clamp(18px,5vw,32px);
  display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:12px;
}
.plate__item{
  background:linear-gradient(180deg,rgba(255,255,255,.05),rgba(255,255,255,.015));
  border:1px solid var(--line); border-radius:16px; padding:18px 16px; text-align:center;
}
.plate__item b{
  display:block; font-size:clamp(26px,4.4vw,38px); color:var(--blood-hi);
  font-variant-numeric:tabular-nums; line-height:1.1;
}
.plate__item span{font-size:12.5px; color:var(--ink-dim); letter-spacing:.06em}

/* ---------- 证物墙 ---------- */
.wall{max-width:1240px; margin:0 auto; padding:clamp(64px,10vw,120px) clamp(16px,4vw,32px) 0}
.wall__head{text-align:center; margin-bottom:clamp(30px,5vw,52px)}
.wall__head h2{
  font-size:clamp(26px,4.6vw,44px); letter-spacing:.3em; text-indent:.3em;
}
.wall__head p{margin:14px 0 0; color:var(--ink-dim); font-size:14px}

.grid{
  display:grid; gap:clamp(16px,2.6vw,28px);
  grid-template-columns:repeat(auto-fill,minmax(250px,1fr));
}

.card{margin:0; perspective:1000px}
.card__inner{
  position:relative; border-radius:18px; overflow:hidden; cursor:zoom-in;
  background:var(--card); border:1px solid var(--line);
  box-shadow:0 24px 60px -30px rgba(0,0,0,.95);
  transition:transform .5s cubic-bezier(.22,1,.36,1), box-shadow .5s, border-color .4s;
}
.card__inner::after{
  content:""; position:absolute; inset:0; pointer-events:none;
  background:linear-gradient(180deg,transparent 45%,rgba(6,2,4,.92) 100%);
}
.card__inner:hover{
  transform:translateY(-8px) rotate(-.5deg);
  border-color:rgba(255,45,75,.55);
  box-shadow:0 34px 70px -26px rgba(200,16,46,.5);
}
.card img{
  display:block; width:100%; height:100%; aspect-ratio:3/4.6; object-fit:cover;
  filter:saturate(.82) contrast(1.08) brightness(.94);
  transition:filter .5s, transform .9s cubic-bezier(.22,1,.36,1);
}
.card__inner:hover img{filter:saturate(1) contrast(1.12) brightness(1); transform:scale(1.045)}

.card figcaption{
  position:absolute; inset:auto 0 0 0; z-index:2;
  padding:16px 16px 18px;
  transform:translateY(0);
}
.card__no{
  display:inline-block; font-size:11px; letter-spacing:.24em; font-weight:700;
  color:#ffb3bf; background:rgba(200,16,46,.28); border:1px solid rgba(255,45,75,.42);
  padding:3px 9px; border-radius:99px; margin-bottom:9px;
}
.card__cap{
  margin:0; font-size:13.2px; line-height:1.62; color:#e6d8d8;
  opacity:.82; transition:opacity .45s;
  display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden;
}
.card__inner:hover .card__cap{opacity:1}

/* ---------- 自检 ---------- */
.checkup{
  max-width:760px; margin:0 auto; padding:clamp(70px,11vw,130px) clamp(18px,5vw,32px) 0;
  text-align:center;
}
.checkup h2{font-size:clamp(22px,3.6vw,34px)}
.checkup__list{list-style:none; margin:30px 0 0; padding:0; display:grid; gap:10px}
.check{
  width:100%; text-align:left; cursor:pointer; font-family:inherit; font-size:15.5px;
  color:var(--ink); background:rgba(255,255,255,.035); border:1px solid var(--line);
  border-radius:14px; padding:15px 18px 15px 52px; position:relative;
  transition:background .3s, border-color .3s, transform .2s, color .3s;
}
.check::before{
  content:""; position:absolute; left:18px; top:50%; transform:translateY(-50%);
  width:20px; height:20px; border-radius:6px; border:1.5px solid rgba(255,255,255,.3);
  transition:background .25s, border-color .25s;
}
.check:hover{background:rgba(255,255,255,.08); transform:translateX(3px)}
.check.on{
  background:rgba(200,16,46,.14); border-color:rgba(255,45,75,.5); color:#ffd9dd;
}
.check.on::before{
  background:var(--blood-hi); border-color:var(--blood-hi);
  box-shadow:0 0 16px rgba(255,45,75,.75);
}
.check.on::after{
  content:"✓"; position:absolute; left:23px; top:50%; transform:translateY(-52%);
  font-size:14px; font-weight:900; color:#fff;
}
.checkup__result{
  margin:26px 0 0; font-size:15px; color:var(--blood-hi); min-height:1.6em; letter-spacing:.02em;
}

/* ---------- 跑掉的按钮 ---------- */
.runaway{
  max-width:760px; margin:0 auto; padding:clamp(70px,11vw,130px) clamp(18px,5vw,32px) 0;
  text-align:center;
}
.runaway h2{font-size:clamp(22px,3.6vw,34px)}
.runaway__zone{
  position:relative; height:210px; margin-top:26px; border:1px dashed rgba(255,255,255,.14);
  border-radius:20px; background:rgba(255,255,255,.02);
  display:flex; align-items:center; justify-content:center; overflow:hidden;
}
.runaway__btn{
  position:absolute; top:50%; left:50%; transform:translate(-50%,-50%);
  transition:top .28s cubic-bezier(.22,1,.36,1), left .28s cubic-bezier(.22,1,.36,1), box-shadow .25s;
  white-space:nowrap;
}
.runaway__hint{position:absolute; bottom:12px; margin:0; font-size:12.5px; color:#7d6a6d}

/* ---------- 结尾 ---------- */
.finale{
  max-width:760px; margin:0 auto; text-align:center;
  padding:clamp(70px,11vw,130px) clamp(18px,5vw,32px) clamp(60px,9vw,110px);
}
.finale h2{font-size:clamp(22px,3.6vw,34px)}
.finale p{color:var(--ink-dim); font-size:15.5px}
.finale__punch{
  margin:26px 0 32px; padding:22px 20px; border-radius:18px;
  background:rgba(200,16,46,.1); border:1px solid rgba(255,45,75,.3); color:#f0dcdc !important;
}
.finale__punch strong{color:var(--blood-hi)}
.finale__foot{margin-top:36px; font-size:12.5px; letter-spacing:.1em; color:#6d5b5e}

/* ---------- 灯箱 ---------- */
.lightbox{
  position:fixed; inset:0; z-index:80; display:grid; place-items:center;
  background:rgba(4,1,2,.94); backdrop-filter:blur(9px);
  padding:clamp(16px,4vw,48px);
  animation:lbIn .3s ease both;
}
.lightbox[hidden]{display:none}
@keyframes lbIn{from{opacity:0}to{opacity:1}}
.lightbox__stage{
  max-width:min(1050px,94vw); max-height:92vh; display:flex; flex-direction:column;
  gap:14px; animation:lbUp .38s cubic-bezier(.22,1,.36,1) both;
}
@keyframes lbUp{from{transform:translateY(16px) scale(.97);opacity:0}to{transform:none;opacity:1}}
.lightbox__stage img{
  max-width:100%; max-height:70vh; margin:0 auto; display:block;
  border-radius:14px; background:#120a0d;
  box-shadow:0 40px 90px -30px rgba(0,0,0,1), 0 0 0 1px rgba(255,255,255,.08);
}
.lightbox__meta{
  display:flex; align-items:flex-start; gap:14px; flex-wrap:wrap;
  border-top:1px solid var(--line); padding-top:14px;
}
.lightbox__meta > span:first-child{
  font-size:11.5px; letter-spacing:.22em; font-weight:700; color:#ffb3bf;
  background:rgba(200,16,46,.28); border:1px solid rgba(255,45,75,.42);
  padding:4px 10px; border-radius:99px; white-space:nowrap;
}
.lightbox__meta p{margin:0; flex:1 1 320px; font-size:14.5px; color:#ded0d0; line-height:1.7}
.lightbox__count{font-size:12.5px; color:var(--ink-dim); font-variant-numeric:tabular-nums; align-self:center}
.lightbox__close,.lightbox__nav{
  position:absolute; cursor:pointer; font-family:inherit; color:var(--ink);
  background:rgba(255,255,255,.06); border:1px solid var(--line); border-radius:50%;
  width:46px; height:46px; display:grid; place-items:center; font-size:20px;
  transition:background .25s, border-color .25s, transform .2s;
}
.lightbox__close{top:18px; right:18px; font-size:16px}
.lightbox__nav--prev{left:14px; top:50%; transform:translateY(-50%)}
.lightbox__nav--next{right:14px; top:50%; transform:translateY(-50%)}
.lightbox__close:hover,.lightbox__nav:hover{
  background:rgba(200,16,46,.5); border-color:var(--blood-hi);
}
.lightbox__nav--prev:hover{transform:translateY(-50%) scale(1.08)}
.lightbox__nav--next:hover{transform:translateY(-50%) scale(1.08)}

/* ---------- toast ---------- */
.toast{
  position:fixed; left:50%; bottom:30px; transform:translate(-50%,120%);
  z-index:90; pointer-events:none;
  padding:12px 22px; border-radius:99px; font-size:14px; font-weight:700;
  color:#fff; background:linear-gradient(135deg,var(--blood-hi),#8d0518);
  box-shadow:0 18px 44px -14px rgba(255,45,75,.85);
  transition:transform .45s cubic-bezier(.22,1,.36,1), opacity .35s; opacity:0;
}
.toast.on{transform:translate(-50%,0); opacity:1}

/* ---------- 屏幕震动 ---------- */
@keyframes shakeScreen{
  0%,100%{transform:translate(0,0)}
  15%{transform:translate(-7px,3px) rotate(-.35deg)}
  30%{transform:translate(6px,-4px) rotate(.4deg)}
  45%{transform:translate(-5px,-2px)}
  60%{transform:translate(4px,3px) rotate(-.2deg)}
  80%{transform:translate(-2px,1px)}
}
body.shaking{animation:shakeScreen .5s cubic-bezier(.36,.07,.19,.97)}

/* ---------- 响应式 ---------- */
@media (max-width:860px){
  .topbar{flex-wrap:wrap; justify-content:center; row-gap:8px}
  .topbar__brand{font-size:11.5px}
  .meters{width:100%; justify-content:center}
  .grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr)); gap:14px}
  .card__cap{-webkit-line-clamp:2; font-size:12.4px}
  .lightbox__nav{width:40px;height:40px;font-size:17px}
  .lightbox__nav--prev{left:6px}
  .lightbox__nav--next{right:6px}
}

@media (prefers-reduced-motion:reduce){
  *{animation-duration:.01ms !important; animation-iteration-count:1 !important; transition-duration:.01ms !important}
  html{scroll-behavior:auto}
}
