:root{
  --wine:#2b0d1e; --wine-2:#4a1230; --blood:#c8323c;
  --hazard:#f4cf0b; --ink:#16090f; --paper:#f6eef3;
  --holo-pink:#f7a8d9; --holo-blue:#92d8ff;
  --f-display:"ZCOOL QingKe HuangYou","PingFang SC","Microsoft YaHei",sans-serif;
  --f-body:"Noto Sans SC","PingFang SC","Microsoft YaHei",sans-serif;
  box-sizing:border-box;
  padding-top:env(safe-area-inset-top,0px);
  padding-bottom:env(safe-area-inset-bottom,0px);
}
*,*::before,*::after{box-sizing:inherit}
html{scroll-behavior:smooth;scroll-padding-top:env(safe-area-inset-top,0px)}
html,body{overflow-x:clip}
body{margin:0;background:var(--wine);color:var(--paper);font-family:var(--f-body);line-height:1.6}
img{max-width:100%;display:block}
a{color:inherit}
.sr_only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
:focus-visible{outline:3px solid var(--hazard);outline-offset:3px}

b,strong{font-weight:700}
/* ---------- swal ---------- */
.swal2-styled.swal2-confirm{background-color:var(--blood)}
.swal2-styled.swal2-confirm:focus{box-shadow:0 0 0 3px var(--hazard)}
.swal_content{line-height:1.7;text-align:left}

/* ---------- QR（仅电脑） ---------- */
#qr{position:fixed;box-sizing:border-box;z-index:999;right:24px;bottom:24px;width:92px;padding:6px 8px 8px;display:none;
  background:var(--paper);color:var(--ink);text-align:center;cursor:pointer;
  box-shadow:0 0 0 3px var(--hazard),6px 6px 0 3px var(--ink)}
#qr h5{font-size:12px;font-weight:700;padding:2px 0 6px}
#qr img{width:100%;aspect-ratio:1;background:#fff}
#qr.qr_fail img{visibility:hidden}
#qr.qr_fail::after{content:"扫码载入中";position:absolute;left:8px;right:8px;top:50%;font-size:11px;color:var(--ink)}

/* ---------- 导航 ---------- */
.navbar{position:fixed;top:0;left:0;right:0;z-index:100;height:60px;padding-top:env(safe-area-inset-top,0px);
  background:linear-gradient(rgba(22,9,15,.94),rgba(22,9,15,.72));
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-bottom:1px solid rgba(244,207,11,.35)}
.logo{position:absolute;left:14px;top:0;bottom:0;height:40px;margin:auto;display:flex;align-items:center}
.logo img{height:36px;width:auto}
.logo a{display:block}
#menu_control{position:absolute;opacity:0;pointer-events:none}
.menu_btn{position:absolute;right:10px;top:5px;width:50px;height:50px;cursor:pointer}
.menu_btn span,.menu_btn::before,.menu_btn::after{content:"";position:absolute;left:12px;right:12px;height:3px;background:var(--paper);transition:transform .3s,opacity .3s}
.menu_btn span{top:24px}.menu_btn::before{top:15px}.menu_btn::after{top:33px}
#menu_control:checked ~ .menu_btn span{opacity:0}
#menu_control:checked ~ .menu_btn::before{transform:translateY(9px) rotate(45deg)}
#menu_control:checked ~ .menu_btn::after{transform:translateY(-9px) rotate(-45deg)}
#menu_control:focus-visible ~ .menu_btn{outline:3px solid var(--hazard)}
.navbar_nav{position:fixed;top:calc(63px + env(safe-area-inset-top,0px));right:-260px;width:240px;height:100vh;
  background:var(--ink);border-left:3px solid var(--hazard);transition:right .35s ease}
#menu_control:checked ~ .navbar_nav{right:0}
.navbar_nav a{display:block;padding:18px 24px;text-decoration:none;font-size:16px;font-weight:700;border-bottom:1px solid rgba(246,238,243,.1);cursor:pointer}
.navbar_nav a:hover,.navbar_nav a:focus-visible{color:var(--hazard);outline:none}
@media (min-width:768px){
  #qr{display:block}
  .menu_btn{display:none}
  .navbar_nav{position:absolute;top:0;right:16px;width:auto;height:60px;display:flex;background:none;border:0}
  .navbar_nav a{border:0;padding:0 22px;line-height:60px;position:relative}
  .navbar_nav a::after{content:"";position:absolute;left:22px;right:22px;bottom:12px;height:3px;background:var(--hazard);transform:scaleX(0);transition:transform .2s}
  .navbar_nav a:hover::after,.navbar_nav a:focus-visible::after{transform:scaleX(1)}
  .mobile{display:none !important}
}

/* ---------- 首屏 ---------- */
.hero{position:relative;min-height:100svh;overflow:hidden;isolation:isolate;
  background:
    radial-gradient(60% 50% at 50% 40%, rgba(122,26,60,.55) 0%, transparent 70%),
    linear-gradient(180deg,rgba(22,9,15,.55) 0%,rgba(43,13,30,.35) 45%,rgba(43,13,30,.8) 75%,var(--ink) 100%),
    url(https://a.xn--xwrq59aduur60a.com/jswn/sym/bg_city.sym  50% 35% / cover no-repeat,var(--ink)}
.hero_bg{position:absolute;inset:0;z-index:-1;pointer-events:none}
.hero_ghost{position:absolute;left:50%;top:6%;transform:translateX(-50%);
  font-family:var(--f-display);font-size:min(44vw,62vh);line-height:1;white-space:nowrap;
  color:transparent;-webkit-text-stroke:2px rgba(247,168,217,.12)}

.cast{position:absolute;inset:60px 0 0;overflow:hidden}
/* 舞台宽度跟着高度走，五人阵在任何横式萤幕比例都一致 */
.stage{position:absolute;top:0;left:50%;translate:-50% 0;height:100%;width:max(100%,min(100vw,160svh))}
.ch{position:absolute;width:auto;max-width:none;translate:-50% 0}
/* ===== 首屏人物（电脑版）=====
   height＝人物高度（越大越大）　top＝离顶部距离（越大越往下）　left＝水平位置（越大越往右）
   z-index＝前后层次（越大越前面） */
.ch_inner{z-index:4;animation:sway 7.4s ease-in-out infinite}
.ch_outer{z-index:3;animation:sway 8.4s ease-in-out infinite}
/* 由左到右：头顶从中间往两侧依序降低，左右对称 */
.ch_ol    {left:14%;height:80svh;top:9svh;animation-delay:-1.2s}            /* 殷桃 */
.ch_il    {left:32%;height:102svh;top:6svh;animation-delay:-3.6s}            /* 莉娜泽尔 */
.ch_center{left:53%;height:calc(120svh - 60px);top:0;z-index:5}             /* 绯尔 */
.ch_ir    {left:69%;height:106svh;top:-4svh;animation-delay:-5.1s}           /* 艾拉娜（兔耳略被切） */
.ch_or    {left:87%;height:80svh;top:9svh;animation-delay:-2.4s}            /* 卡西 */
@keyframes sway{
  0%,100%{transform:translateY(0) rotate(0)}
  30%{transform:translateY(-18px) rotate(-1.2deg)}
  65%{transform:translateY(8px) rotate(1.3deg)}}

/* 封锁胶带：整个页面唯一的大动作 */
/* 封锁条：固定高度，不受字体载入与否影响 */
.tape{background:repeating-linear-gradient(-45deg,var(--hazard) 0 26px,var(--ink) 26px 52px);padding:5px 0;overflow:hidden;box-sizing:border-box}
.tape_run{display:flex;align-items:center;width:max-content;height:100%;animation:run 38s linear infinite;background:var(--hazard)}
.tape_run span{font-family:var(--f-display);color:var(--ink);font-size:clamp(20px,2.6vw,34px);letter-spacing:.06em;
  padding:2px 0;white-space:pre}
.tape_run_slow{animation-duration:60s}
@keyframes run{to{transform:translateX(-50%)}}
/* 首屏封锁条放在 LOGO 区块里、LOGO 上缘的后面，位置跟着 LOGO 走，不受萤幕高度影响 */
.tape_back{position:absolute;z-index:-1;left:-10%;right:-10%;top:calc(16vh - 30px);height:46px;transform:rotate(-4deg);box-shadow:0 8px 24px rgba(0,0,0,.45)}
.tape_back .tape_run{animation-duration:130s}  /* 文字变长后放慢，维持原本的移动速度 */
.tape_back .tape_run span{font-size:24px;line-height:1}

.hero_front{position:absolute;z-index:5;left:0;right:0;bottom:0;
  padding:16vh 20px calc(28px + env(safe-area-inset-bottom,0px));text-align:center;
  background:linear-gradient(transparent 0, transparent 28%, rgba(22,9,15,.86) 62%, var(--ink))}
.hero_logo{margin:0 auto;width:min(560px,82vw,62vh)}
.hero_logo img{width:100%;height:auto;filter:drop-shadow(0 6px 18px rgba(0,0,0,.6))}
.hero_tag{margin:.2em 0 1em;font-family:var(--f-display);font-size:clamp(20px,2.4vw,30px);
  background:linear-gradient(90deg,var(--holo-pink),var(--holo-blue));-webkit-background-clip:text;background-clip:text;color:transparent}

.download{display:flex;justify-content:center;flex-wrap:wrap;gap:16px 18px}
/* 下载按钮：黄色图示块＋深色本体＋右侧封锁斜纹，悬停时本体转红 */
/* 外层 display 可能被平台的下载脚本改掉（例如 iOS 按钮被设成 block），
   所以版面交给内层 .dl_inner 处理，外层不管变成什么 display 都不会跑版 */
.dl_btn{position:relative;display:inline-flex;align-items:stretch;box-sizing:border-box;min-width:196px;height:54px;cursor:pointer;
  text-decoration:none;color:var(--paper);background:rgba(22,9,15,.88);
  border:2px solid var(--paper);box-shadow:5px 5px 0 var(--blood);
  transition:transform .15s,box-shadow .15s,background .15s}
.dl_inner{display:flex !important;align-items:stretch;width:100%;height:100%}
.dl_btn svg{display:block;box-sizing:content-box;flex:none;width:24px;height:24px;padding:0 13px;align-self:stretch;
  height:auto;fill:var(--ink);background:var(--hazard);border-right:2px solid var(--paper)}
.dl_btn .dl_txt{flex:1;display:flex;align-items:center;justify-content:center;padding:0 30px 0 16px;
  font-weight:900;font-size:17px;letter-spacing:.06em;white-space:nowrap}
.dl_btn::after{content:"";position:absolute;right:0;top:0;bottom:0;width:16px;
  background:repeating-linear-gradient(-45deg,var(--hazard) 0 5px,transparent 5px 10px);opacity:.9}
.dl_btn:hover,.dl_btn:focus-visible{background:var(--blood);transform:translate(-2px,-2px);box-shadow:7px 7px 0 var(--ink);outline:none}
.dl_btn:focus-visible{outline:3px solid var(--hazard);outline-offset:3px}
.dl_btn:active{transform:translate(2px,2px);box-shadow:2px 2px 0 var(--blood)}
.reminder{max-width:36em;margin:16px auto 0;font-size:13px;color:rgba(246,238,243,.72)}
.reminder h4{margin:0;font-size:14px;color:var(--paper)}
.reminder p{margin:2px 0 0}
.reminder strong{color:var(--hazard)}

/* ---------- 游戏特色 ---------- */
.feature{position:relative;isolation:isolate;scroll-margin-top:63px;padding:clamp(50px,7vw,90px) 0 clamp(60px,8vw,110px);
  background:linear-gradient(var(--wine),#1d0a15 60%,var(--ink))}

.swiper{padding-bottom:40px}
.swiper-slide img{width:100%;aspect-ratio:16/9;object-fit:cover;border:3px solid var(--paper);box-shadow:8px 8px 0 var(--blood)}
.swiper-pagination-bullet{background:var(--paper);opacity:.35;width:30px;height:6px;border-radius:0}
.swiper-pagination-bullet-active{background:var(--hazard);opacity:1;width:48px}
.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(to left,rgba(0,0,0,.35),rgba(0,0,0,.15))}
.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(to right,rgba(0,0,0,.35),rgba(0,0,0,.15))}

/* ---------- 段落标题：白色大字＋后方镂空英文（呼应宣传图的标题做法） ---------- */
.sec_title{position:relative;margin:0 auto clamp(30px,4vw,50px);padding-top:.55em;text-align:center;
  font-family:var(--f-display);font-weight:400;font-size:clamp(40px,6vw,76px);line-height:1;color:var(--paper);
  text-shadow:4px 4px 0 var(--blood)}
.sec_title::before{content:attr(data-ghost);position:absolute;left:50%;top:0;translate:-50% 0;z-index:-1;white-space:nowrap;
  font-size:1.35em;letter-spacing:.04em;color:transparent;-webkit-text-stroke:1.5px rgba(247,168,217,.35);text-shadow:none}

/* ---------- 世界观 ---------- */
.story{position:relative;overflow:hidden;isolation:isolate;padding:clamp(50px,7vw,90px) 0 clamp(60px,8vw,110px);scroll-margin-top:63px;
  background:
    linear-gradient(var(--ink) 0%,rgba(22,9,15,.45) 22%,rgba(43,13,30,.55) 60%,var(--wine) 100%),
    url(https://a.xn--xwrq59aduur60a.com/jswn/sym/bg_valley.sym  50% 30% / cover no-repeat,var(--wine)}
.story_prologue{text-align:center;font-family:var(--f-display);font-size:clamp(22px,3vw,36px);line-height:1.3;
  margin:0 auto clamp(36px,5vw,64px);padding:0 20px;
  background:linear-gradient(90deg,var(--holo-pink),var(--holo-blue));-webkit-background-clip:text;background-clip:text;color:transparent}
.chronicle{z-index:2;list-style:none;margin:0 auto;padding:0 clamp(16px,5vw,64px);max-width:1280px;
  display:grid;grid-template-columns:repeat(5,1fr);gap:clamp(12px,1.6vw,22px);position:relative;counter-reset:era}
/* 时间轴：穿过每张图下缘的节点 */
.chronicle::before{content:"";position:absolute;left:clamp(16px,5vw,64px);right:clamp(16px,5vw,64px);
  top:var(--axis);height:4px;background:linear-gradient(90deg,var(--blood),var(--holo-pink),var(--holo-blue))}
.chronicle{--axis:calc((min(1280px,100vw) - 2*clamp(16px,5vw,64px) - 4*clamp(12px,1.6vw,22px))/5*4/3 + 22px)}
.era{position:relative;display:flex;flex-direction:column}
.era_img{position:relative;aspect-ratio:3/4;overflow:hidden;border:3px solid var(--paper)}
.era_img img{width:100%;height:100%;object-fit:cover;filter:saturate(.9)}
.era_img::after{content:"";position:absolute;inset:0;background:linear-gradient(transparent 55%,rgba(22,9,15,.75))}
.era_node{display:block;width:16px;height:16px;margin:14px 0 14px 4px;background:var(--paper);border:3px solid var(--ink);box-shadow:0 0 0 3px var(--blood);position:relative;z-index:1}
.era_time{font-size:13px;font-weight:700;color:var(--holo-blue);margin:0 0 2px}
.era h3{margin:0 0 6px;font-family:var(--f-display);font-weight:400;font-size:clamp(22px,2vw,28px);line-height:1.2}
.era p:not(.era_time){margin:0;font-size:14px;line-height:1.75;color:rgba(246,238,243,.78)}
.era b{color:var(--holo-pink)}
.era_major .era_img{border-color:var(--blood);box-shadow:6px 6px 0 var(--blood)}
.era_major .era_node{background:var(--blood);border-color:var(--paper)}
.era_major h3{color:#ff5a64}
.era_now h3{color:var(--hazard)}
.era_dots{position:relative;z-index:2}

/* 手机／直式平板：横向滑动卡片，避免整段拉太长 */
@media (max-width:899px){
  .chronicle{display:flex;gap:14px;max-width:none;overflow-x:auto;scroll-snap-type:x mandatory;
    padding:0 11vw 6px;scroll-padding:0 11vw;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .chronicle::-webkit-scrollbar{display:none}
  .chronicle{cursor:grab;touch-action:pan-x pan-y}
  .chronicle.is-dragging{cursor:grabbing;scroll-snap-type:none;user-select:none}
  .chronicle img{-webkit-user-drag:none;user-select:none;pointer-events:none}
  .chronicle::before{display:none}
  .era{flex:0 0 78vw;max-width:340px;scroll-snap-align:center;display:flex}
  /* 每张卡片上方的时间轴段，接起来是一条线 */
  .era::before{content:"";position:absolute;top:21px;left:0;right:-14px;height:4px;
    background:linear-gradient(90deg,var(--blood),var(--holo-pink))}
  .era:last-child::before{right:50%}
  .era_node{order:-1;margin:13px 0 14px 2px}
  .era_major .era_img{box-shadow:4px 4px 0 var(--blood)}
  .era_dots{display:flex;justify-content:center;gap:8px;margin-top:18px}
  .era_dots button{width:26px;height:6px;padding:0;border:0;background:rgba(246,238,243,.3);cursor:pointer;transition:width .2s,background .2s}
  .era_dots button[aria-current="true"]{width:44px;background:var(--hazard)}
}
@media (min-width:900px){.era_dots{display:none}}
@media (min-width:600px) and (max-width:899px){.era{flex-basis:46vw}}


/* ---------- 更多游戏 BANNER（仅手机） ---------- */
.more_game{width:90%;max-width:520px;margin:0 auto;padding:0 0 40px;text-align:center;background:var(--ink);box-shadow:0 0 0 100vmax var(--ink);clip-path:inset(0 -100vmax)}
#more_game_btn{display:block;overflow:hidden;border:3px solid var(--hazard);box-shadow:6px 6px 0 var(--blood)}
#more_game_btn img{width:100%;display:block}




/* ---------- 手机 ---------- */
@media (max-width:767px){
  .stage{width:100%}
  /* ===== 首屏人物（手机版）：数值意义同电脑版 =====
     主角往下压，后排两人在上方，前排两人在主角两侧 */
  .ch_center{height:min(88svh,185vw);top:min(23svh,48vw);left:64%}
  .ch_inner{z-index:3;height:min(56svh,118vw);top:1svh}
  .ch_outer{z-index:4;height:min(60svh,124vw);top:min(18svh,38vw)}
  /* 手机版：殷桃与莉娜泽尔位置对调——殷桃在后排上方，莉娜泽尔在前排左侧 */
  .ch_ol{left:38%;top:-1svh;height:min(56svh,118vw);z-index:3}       /* 殷桃（后排左） */
  .ch_ir{left:63%;top:-3svh;height:min(61svh,128vw)}                                          /* 艾拉娜（后排右） */
  .ch_il{left:30%;top:min(18svh,38vw);height:min(78svh,162vw);z-index:4}  /* 莉娜泽尔（前排左） */
  .ch_or{left:82%;height:min(68svh,140vw)}                                                    /* 卡西（前排右） */
  /* 手机版首屏高度缩短，LOGO＋下载区整体往上（可盖到绯尔腹部） */
  .hero{min-height:max(100svh,690px)}
  .tape_back{top:calc(12vh - 26px);height:36px;transform:rotate(-5deg)}
  .tape_back .tape_run span{font-size:17px}
  .hero_front{padding-top:12vh}
  .dl_btn{min-width:0;flex:1 1 40%;height:48px}
  .dl_btn svg{width:20px;padding:0 10px}
  .dl_btn .dl_txt{font-size:15px;padding:0 22px 0 8px;letter-spacing:0}
  .dl_btn::after{width:12px}
    }
/* 矮萤幕手机（iPhone SE 等）：LOGO 区占比较大，绯尔往上、LOGO 区往下，避免封锁条压到胸口 */
@media (max-width:767px) and (max-height:700px){
  .hero{min-height:calc(100svh + 60px)}
  .ch_center{top:16svh}
}
/* 超窄手机（320 宽）：按钮文字缩小避免被切 */
@media (max-width:340px){
  .dl_btn .dl_txt{font-size:13px;padding:0 16px 0 6px}
  .dl_btn svg{width:16px;padding:0 8px}
}
/* 直式平板 */
@media (min-width:768px) and (max-aspect-ratio:4/5){
  .stage{width:100%}
  .ch_center{height:min(82svh,150vw);top:0;left:50%}
  .ch_inner{height:68svh;top:5svh}
  .ch_outer{height:56svh;top:10svh}
  .ch_ol{left:7%} .ch_il{left:25%} .ch_ir{left:75%} .ch_or{left:93%}
}
@media (prefers-reduced-motion:reduce){
  .ch,.tape_run{animation:none}
  .dl_btn,.navbar_nav,.menu_btn span,.menu_btn::before,.menu_btn::after{transition:none}
  html{scroll-behavior:auto}
}
