/* ==========================================================================
   鲸歌科技 Whale Song — 子页面共享样式
   设计语言与首页粒子站同源：#05070c 深空底色 / 等宽字标签 / 衬线斜体标题 / 青色点缀
   ========================================================================== */

:root{
  --ink: #e8f1ff;
  --ink-dim: rgba(232,241,255,.55);
  --ink-faint: rgba(232,241,255,.38);
  --hair: rgba(232,241,255,.14);
  --hair-soft: rgba(232,241,255,.07);
  --glass: rgba(8,12,20,.38);
  --accent: #7df9ff;
  --bg: #05070c;
  --mono: ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, monospace;
  --serif: "New York", "Iowan Old Style", Georgia, "Times New Roman", serif;
  --sans: ui-sans-serif, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif;
  --header-h: 68px;
  --wrap: 1180px;
}

*{ margin:0; padding:0; box-sizing:border-box; }
html{ scrollbar-color: rgba(232,241,255,.18) transparent; scroll-behavior:smooth; }
body{
  background:var(--bg); color:var(--ink);
  font-family:var(--sans);
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
::selection{ background:rgba(125,249,255,.22); }
img{ display:block; }
a{ color:inherit; }

/* ---------- 星尘背景（呼应首页粒子，纯 CSS 轻量实现） ---------- */
.stars{
  position:fixed; inset:0; z-index:-2; pointer-events:none;
  background:
    radial-gradient(1100px 560px at 72% -12%, rgba(125,249,255,.055), transparent 62%),
    radial-gradient(900px 520px at 8% 108%, rgba(94,120,255,.05), transparent 60%),
    radial-gradient(700px 420px at 50% 45%, rgba(125,249,255,.025), transparent 65%),
    var(--bg);
}
.stars::before{
  content:''; position:absolute; inset:0;
  background-image:
    radial-gradient(rgba(232,241,255,.20) 1px, transparent 1.6px),
    radial-gradient(rgba(232,241,255,.11) 1px, transparent 1.6px);
  background-size: 173px 149px, 97px 83px;
  background-position: 0 0, 41px 57px;
  opacity:.5;
  animation:twinkle 7s ease-in-out infinite alternate;
}
.stars::after{
  content:''; position:absolute; inset:0;
  background:linear-gradient(to bottom, rgba(5,7,12,.55) 0%, transparent 22%, transparent 74%, rgba(5,7,12,.72) 100%);
}
@keyframes twinkle{ from{ opacity:.34; } to{ opacity:.62; } }
html.reduced .stars::before{ animation:none; }

/* ---------- 顶部导航（参考图格式：Logo 左 · 菜单右 · 当前页下划线） ---------- */
.site-header{
  position:fixed; top:0; left:0; right:0; z-index:50;
  background:rgba(5,7,12,.78);
  backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid var(--hair);
}
.site-header .wrap{
  max-width:var(--wrap); margin:0 auto;
  height:var(--header-h);
  padding:0 clamp(16px,4vw,32px);
  display:flex; align-items:center; justify-content:space-between; gap:20px;
}
.brand{
  display:flex; align-items:center; gap:10px;
  text-decoration:none; user-select:none; flex-shrink:0;
}
.brand img{ height:clamp(30px,4.2vw,46px); width:auto; }
.brand .pulse-dot{
  width:6px; height:6px; border-radius:50%;
  background:var(--accent); box-shadow:0 0 12px 2px rgba(125,249,255,.8);
  animation:dotbreathe 3.2s ease-in-out infinite;
}
@keyframes dotbreathe{ 0%,100%{ opacity:.45; transform:scale(.8);} 50%{ opacity:1; transform:scale(1.15);} }
html.reduced .brand .pulse-dot{ animation:none; }

.site-nav{ display:flex; align-items:center; gap:clamp(18px,2.6vw,34px); }
.site-nav a{
  position:relative; display:inline-block;
  font-family:var(--mono); font-size:11px; letter-spacing:.22em;
  color:var(--ink-dim); text-decoration:none; white-space:nowrap;
  padding:6px 2px; transition:color .3s;
}
.site-nav a::after{
  content:''; position:absolute; left:10%; right:10%; bottom:0; height:1px;
  background:rgba(125,249,255,0);
  transition:background .3s, box-shadow .3s;
}
.site-nav a:hover{ color:var(--ink); }
.site-nav a:hover::after{ background:rgba(125,249,255,.4); }
.site-nav a:focus-visible{ outline:1px solid rgba(125,249,255,.55); outline-offset:4px; }
.site-nav a[aria-current="page"]{ color:rgba(207,255,255,.95); }
.site-nav a[aria-current="page"]::after{
  background:rgba(125,249,255,.85);
  box-shadow:0 0 8px rgba(125,249,255,.55);
}

/* 移动端汉堡菜单 */
.menu-btn{
  display:none; flex-direction:column; justify-content:center; gap:6px;
  width:40px; height:40px; padding:0 9px;
  background:var(--glass); border:1px solid var(--hair); border-radius:999px;
  cursor:pointer;
}
.menu-btn span{
  display:block; height:1px; background:var(--ink-dim);
  transition:transform .3s, opacity .3s, background .3s;
}
.menu-btn:hover span{ background:var(--ink); }
.menu-btn[aria-expanded="true"] span:first-child{ transform:translateY(3.5px) rotate(45deg); }
.menu-btn[aria-expanded="true"] span:last-child{ transform:translateY(-3.5px) rotate(-45deg); }

@media (max-width:720px){
  .menu-btn{ display:flex; }
  .site-nav{
    position:absolute; top:100%; left:0; right:0;
    flex-direction:column; align-items:stretch; gap:0;
    background:rgba(5,7,12,.96);
    border-bottom:1px solid var(--hair);
    display:none; padding:6px clamp(16px,4vw,32px) 16px;
  }
  .site-nav.open{ display:flex; }
  .site-nav a{ padding:15px 2px; font-size:12px; border-bottom:1px solid var(--hair-soft); }
  .site-nav a:last-child{ border-bottom:none; }
  .site-nav a::after{ display:none; }
  .site-nav a[aria-current="page"]{ color:var(--accent); }
}

/* ---------- 通用排版 ---------- */
.wrap{ max-width:var(--wrap); margin:0 auto; padding:0 clamp(16px,4vw,32px); }
section{ scroll-margin-top:calc(var(--header-h) + 18px); }

.kicker{
  font-family:var(--mono); font-size:10.5px; letter-spacing:.5em;
  color:rgba(232,241,255,.62); text-transform:uppercase;
}
.kicker b{ font-weight:400; color:rgba(125,249,255,.95); }

h1{
  font-family:var(--serif); font-style:italic; font-weight:400;
  font-size:clamp(30px, 5vw, 54px); line-height:1.14; letter-spacing:.01em;
  text-shadow:0 2px 34px rgba(5,7,12,.9), 0 0 90px rgba(5,7,12,.7);
}
h2.sec-title{
  font-family:var(--serif); font-style:italic; font-weight:400;
  font-size:clamp(24px, 3.4vw, 38px); line-height:1.18; letter-spacing:.01em;
}
.lead{
  font-family:var(--serif); font-style:italic; font-weight:400;
  font-size:clamp(15px, 1.8vw, 19px); line-height:1.7;
  color:var(--ink-dim);
}

/* ---------- Hero ---------- */
.hero{
  padding:calc(var(--header-h) + clamp(72px,13vh,140px)) 20px clamp(56px,9vh,100px);
  text-align:center; position:relative;
}
.hero .kicker{ margin-bottom:22px; }
.hero h1{ margin-bottom:22px; }
.hero .lead{ max-width:34em; margin:0 auto; }
.hero::after{
  content:''; display:block; width:1px; height:clamp(40px,7vh,72px);
  margin:clamp(30px,5vh,52px) auto 0;
  background:linear-gradient(to bottom, rgba(125,249,255,.55), transparent);
}

/* ---------- 数据条 ---------- */
.stats{
  display:grid; grid-template-columns:repeat(4,1fr); gap:1px;
  background:var(--hair-soft); border:1px solid var(--hair-soft);
  border-radius:14px; overflow:hidden;
}
.stats > div{
  background:rgba(8,12,20,.5);
  padding:clamp(20px,3vw,34px) clamp(12px,2vw,24px); text-align:center;
}
.stats dt{
  font-family:var(--mono); font-size:8.5px; letter-spacing:.34em;
  color:rgba(232,241,255,.5); margin-bottom:10px; text-transform:uppercase;
}
.stats dd{
  font-family:var(--mono); font-size:clamp(22px,3vw,32px);
  color:rgba(220,246,255,.95); font-variant-numeric:tabular-nums;
  text-shadow:0 0 16px rgba(125,249,255,.3);
}
@media (max-width:720px){
  .stats{ grid-template-columns:repeat(2,1fr); }
}

/* ---------- 玻璃卡片 ---------- */
.card{
  background:var(--glass);
  border:1px solid var(--hair);
  border-radius:16px;
  padding:clamp(22px,3vw,34px);
  backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px);
  transition:transform .35s ease, border-color .35s, box-shadow .35s;
}
.card:hover{
  transform:translateY(-4px);
  border-color:rgba(125,249,255,.3);
  box-shadow:0 18px 44px -18px rgba(0,0,0,.7), 0 0 34px -8px rgba(125,249,255,.12);
}
html.reduced .card:hover{ transform:none; }

.card .ico{
  width:44px; height:44px; border-radius:12px;
  display:flex; align-items:center; justify-content:center;
  background:rgba(125,249,255,.07); border:1px solid rgba(125,249,255,.18);
  margin-bottom:18px;
}
.card .ico svg{ width:20px; height:20px; stroke:var(--accent); fill:none; stroke-width:1.5; stroke-linecap:round; stroke-linejoin:round; }
.card h3{
  font-family:var(--sans); font-size:clamp(16px,1.8vw,19px); font-weight:600;
  letter-spacing:.02em; margin-bottom:12px;
}
.card p{ font-size:13.5px; line-height:1.85; color:var(--ink-dim); }

ul.feat{ list-style:none; margin-top:16px; }
ul.feat li{
  font-family:var(--mono); font-size:11px; letter-spacing:.06em;
  color:rgba(232,241,255,.66); line-height:2.1;
  padding-left:16px; position:relative;
}
ul.feat li::before{
  content:''; position:absolute; left:0; top:.95em;
  width:5px; height:1px; background:rgba(125,249,255,.6);
}

/* 标签胶囊 */
.tags{ display:flex; flex-wrap:wrap; gap:8px; margin-top:18px; }
.tags i{
  font-style:normal; font-family:var(--mono); font-size:9px; letter-spacing:.16em;
  color:var(--ink-dim); padding:4px 10px;
  border:1px solid var(--hair); border-radius:999px;
}

/* ---------- 区块 ---------- */
.sec{ padding:clamp(46px,7vh,84px) 0; }
.sec-head{ margin-bottom:clamp(28px,4vh,46px); }
.sec-head .kicker{ margin-bottom:14px; }
.sec-head p{ margin-top:14px; font-size:13.5px; line-height:1.8; color:var(--ink-dim); max-width:44em; }

.grid-2{ display:grid; grid-template-columns:repeat(2,1fr); gap:clamp(14px,2vw,22px); }
.grid-3{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(14px,2vw,22px); }
.grid-4{ display:grid; grid-template-columns:repeat(4,1fr); gap:clamp(14px,2vw,22px); }
@media (max-width:960px){
  .grid-4{ grid-template-columns:repeat(2,1fr); }
  .grid-3{ grid-template-columns:repeat(2,1fr); }
}
@media (max-width:640px){
  .grid-2, .grid-3, .grid-4{ grid-template-columns:1fr; }
}

/* ---------- 流程时间线 ---------- */
.steps{ display:grid; grid-template-columns:repeat(4,1fr); gap:clamp(14px,2vw,22px); counter-reset:step; }
.step{ position:relative; padding-top:26px; }
.step::before{
  counter-increment:step; content:'0' counter(step);
  position:absolute; top:0; left:0;
  font-family:var(--mono); font-size:11px; letter-spacing:.3em;
  color:rgba(125,249,255,.85);
}
.step::after{
  content:''; position:absolute; top:7px; left:34px; right:0; height:1px;
  background:linear-gradient(to right, rgba(125,249,255,.35), transparent);
}
.step h4{ font-size:15px; font-weight:600; margin-bottom:10px; letter-spacing:.02em; }
.step p{ font-size:12.5px; line-height:1.8; color:var(--ink-dim); }
@media (max-width:960px){ .steps{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:640px){ .steps{ grid-template-columns:1fr; } }

/* ---------- CTA 横幅 ---------- */
.cta-band{
  text-align:center;
  border:1px solid var(--hair);
  border-radius:20px;
  background:
    radial-gradient(560px 220px at 50% 0%, rgba(125,249,255,.07), transparent 70%),
    var(--glass);
  padding:clamp(40px,7vh,72px) clamp(20px,4vw,48px);
}
.cta-band h2.sec-title{ margin-bottom:14px; }
.cta-band p{ font-size:13.5px; color:var(--ink-dim); line-height:1.8; margin-bottom:28px; }

.btn-row{ display:flex; gap:14px; justify-content:center; flex-wrap:wrap; }
.btn{
  display:inline-flex; align-items:center; gap:8px;
  font-family:var(--mono); font-size:11px; letter-spacing:.22em;
  text-decoration:none; padding:13px 26px; border-radius:999px;
  transition:border-color .3s, background .3s, color .3s, box-shadow .3s;
  border:1px solid var(--hair); color:var(--ink-dim);
  background:var(--glass);
}
.btn:hover{ color:var(--ink); border-color:rgba(232,241,255,.32); }
.btn:focus-visible{ outline:1px solid rgba(125,249,255,.55); outline-offset:4px; }
.btn.primary{
  color:#03121a; background:var(--accent); border-color:var(--accent);
  box-shadow:0 0 26px -6px rgba(125,249,255,.55);
}
.btn.primary:hover{ background:#a2fbff; color:#03121a; border-color:#a2fbff; }

/* ---------- 案例筛选 ---------- */
.filters{ display:flex; flex-wrap:wrap; gap:10px; margin-bottom:clamp(24px,4vh,38px); }
.filters button{
  font-family:var(--mono); font-size:10px; letter-spacing:.2em;
  color:var(--ink-dim); background:var(--glass);
  border:1px solid var(--hair); border-radius:999px;
  padding:9px 18px; cursor:pointer;
  transition:color .3s, border-color .3s, background .3s;
}
.filters button:hover{ color:var(--ink); border-color:rgba(232,241,255,.32); }
.filters button[aria-pressed="true"]{
  color:rgba(207,255,255,.95); border-color:rgba(125,249,255,.45);
  background:rgba(125,249,255,.08);
}

/* ---------- 案例卡片 ---------- */
.case{ display:flex; flex-direction:column; padding:0; overflow:hidden; }
.case .case-body{ display:flex; flex-direction:column; flex:1; padding:clamp(22px,3vw,34px); }
.case .case-media{
  aspect-ratio:16/10; overflow:hidden;
  border-bottom:1px solid var(--hair-soft);
  background:rgba(125,249,255,.04);
}
.case .case-media img{
  width:100%; height:100%; object-fit:cover; object-position:center;
  display:block; transition:transform .6s ease;
}
.case:hover .case-media img{ transform:scale(1.05); }
html.reduced .case:hover .case-media img{ transform:none; }
.case .cat{
  font-family:var(--mono); font-size:9px; letter-spacing:.3em;
  color:rgba(125,249,255,.8); margin-bottom:14px; text-transform:uppercase;
}
.case h3{
  font-family:var(--serif); font-style:italic; font-weight:400;
  font-size:clamp(18px,2vw,22px); line-height:1.3; margin-bottom:12px;
}
.case h3 .en{
  display:block; margin-top:7px;
  font-family:var(--mono); font-style:normal; font-weight:400;
  font-size:9px; letter-spacing:.22em;
  color:rgba(232,241,255,.42); text-transform:uppercase;
}
.case p{ font-size:13px; line-height:1.8; color:var(--ink-dim); flex:1; }
.case .result{
  margin-top:18px; padding-top:16px; border-top:1px solid var(--hair-soft);
  font-family:var(--mono); font-size:11px; letter-spacing:.08em; line-height:1.9;
  color:rgba(220,246,255,.9);
}
.case .result b{
  font-weight:400; color:var(--accent);
  text-shadow:0 0 12px rgba(125,249,255,.4);
}
.case.is-hidden{ display:none; }
.case{ cursor:pointer; }
.case-more{
  flex:none !important; margin-top:18px; padding-top:14px;
  border-top:1px solid var(--hair-soft);
  font-family:var(--mono); font-size:10px; letter-spacing:.18em;
  color:rgba(125,249,255,.72); transition:color .3s;
}
.case:hover .case-more, .case:focus-visible .case-more{ color:var(--accent); }
.case:focus-visible{ outline:1px solid rgba(125,249,255,.55); outline-offset:3px; }

/* ---------- 案例详情模态框 ---------- */
.modal-overlay{
  position:fixed; inset:0; z-index:90;
  display:flex; align-items:center; justify-content:center;
  padding:clamp(16px,4vw,44px);
  background:rgba(3,5,10,.82);
  backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px);
  opacity:0; visibility:hidden;
  transition:opacity .28s ease, visibility .28s;
}
.modal-overlay.open{ opacity:1; visibility:visible; }
.modal-card{
  position:relative; display:grid; grid-template-columns:1fr 1.05fr;
  width:min(960px,100%); max-height:min(86vh,880px); overflow:auto;
  background:linear-gradient(180deg, rgba(10,15,24,.97), rgba(6,9,15,.97));
  border:1px solid rgba(125,249,255,.24); border-radius:20px;
  box-shadow:0 40px 90px -30px rgba(0,0,0,.85), 0 0 70px -20px rgba(125,249,255,.16);
  transform:translateY(14px); transition:transform .28s ease;
}
.modal-overlay.open .modal-card{ transform:none; }
@media (max-width:760px){
  .modal-card{ grid-template-columns:1fr; }
  .modal-media{ min-height:0 !important; aspect-ratio:16/10; }
}
.modal-media{
  position:relative; min-height:340px; overflow:hidden;
  background:#04060b; border-radius:20px 0 0 20px;
}
/* 完整呈现画册原图：同图模糊铺底，前景等比 contain 不裁切 */
.modal-media img.bg{
  position:absolute; inset:0; width:100%; height:100%;
  object-fit:cover; object-position:center;
  transform:scale(1.14); transform-origin:center;
  filter:blur(18px) brightness(.5) saturate(1.15);
}
.modal-media img.fg{
  position:absolute; inset:0; z-index:2;
  width:100%; height:100%;
  padding:clamp(14px,2vw,24px); box-sizing:border-box;
  object-fit:contain; object-position:center; display:block;
}
.modal-media::after{
  content:''; position:absolute; inset:0; z-index:1; pointer-events:none;
  background:linear-gradient(180deg, rgba(4,6,11,.14), rgba(4,6,11,.4));
}
.modal-close{
  position:absolute; top:14px; right:14px; z-index:2;
  width:38px; height:38px; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  background:rgba(5,7,12,.72); border:1px solid rgba(125,249,255,.25);
  color:var(--ink-dim); font-size:15px; line-height:1; cursor:pointer;
  backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px);
  transition:border-color .3s, color .3s;
}
.modal-close:hover{ color:#fff; border-color:rgba(125,249,255,.55); }
.modal-close:focus-visible{ outline:1px solid rgba(125,249,255,.55); outline-offset:3px; }
.modal-body{ padding:clamp(26px,3.5vw,42px); display:flex; flex-direction:column; min-width:0; }
.modal-body .cat{
  font-family:var(--mono); font-size:9px; letter-spacing:.3em;
  color:rgba(125,249,255,.8); margin-bottom:14px; text-transform:uppercase;
}
.modal-body h3{
  font-family:var(--serif); font-style:italic; font-weight:400;
  font-size:clamp(22px,2.6vw,28px); line-height:1.3; margin-bottom:8px;
}
.modal-body .en{
  font-family:var(--mono); font-size:9.5px; letter-spacing:.22em;
  color:rgba(232,241,255,.42); text-transform:uppercase; margin-bottom:6px;
}
.modal-feats{ list-style:none; counter-reset:feat; margin-top:16px; }
.modal-feats li{
  counter-increment:feat; position:relative;
  padding:11px 0 11px 38px;
  border-bottom:1px dashed rgba(232,241,255,.08);
  font-size:13px; line-height:1.85; color:var(--ink-dim);
}
.modal-feats li:last-child{ border-bottom:none; }
.modal-feats li::before{
  content:counter(feat, decimal-leading-zero);
  position:absolute; left:0; top:13px;
  font-family:var(--mono); font-size:10px; letter-spacing:.1em;
  color:rgba(125,249,255,.7);
}
@media (prefers-reduced-motion:reduce){
  .modal-overlay, .modal-card{ transition:none; }
}

/* ---------- 关于页 ---------- */
.split{ display:grid; grid-template-columns:1.15fr .85fr; gap:clamp(28px,5vw,64px); align-items:center; }
@media (max-width:880px){ .split{ grid-template-columns:1fr; } }
.split .story p{ font-size:14px; line-height:2; color:var(--ink-dim); }
.split .story p + p{ margin-top:16px; }
.split .story h2.sec-title{ margin:14px 0 22px; }

.visual-card{
  position:relative; border-radius:20px; overflow:hidden;
  background:linear-gradient(135deg, rgba(125,249,255,.16) 0%, rgba(94,120,255,.14) 100%);
  border:1px solid rgba(125,249,255,.22);
  aspect-ratio:4/5;
  display:flex; align-items:center; justify-content:center;
  box-shadow:0 24px 60px -24px rgba(0,0,0,.75), 0 0 50px -14px rgba(125,249,255,.22);
}
.visual-card::before{
  content:''; position:absolute; inset:0;
  background:
    radial-gradient(1px 1px at 18% 26%, rgba(232,241,255,.7) 50%, transparent 51%),
    radial-gradient(1px 1px at 76% 18%, rgba(232,241,255,.55) 50%, transparent 51%),
    radial-gradient(1.5px 1.5px at 64% 72%, rgba(125,249,255,.65) 50%, transparent 51%),
    radial-gradient(1px 1px at 30% 80%, rgba(232,241,255,.5) 50%, transparent 51%),
    radial-gradient(1px 1px at 88% 54%, rgba(232,241,255,.45) 50%, transparent 51%),
    radial-gradient(1.5px 1.5px at 10% 60%, rgba(125,249,255,.5) 50%, transparent 51%);
}
.visual-card video{
  position:relative; width:100%; height:100%;
  object-fit:cover; display:block;
  mix-blend-mode:screen; /* 黑底发光动画：滤掉黑底，光效融入卡片渐变 */
}
@media (prefers-reduced-motion:reduce){
  .visual-card video{ mix-blend-mode:normal; }
}

/* 联系卡片 */
.contact-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(14px,2vw,22px); }
@media (max-width:880px){ .contact-grid{ grid-template-columns:1fr; } }
.contact-card{
  text-align:center; text-decoration:none;
  display:flex; flex-direction:column; justify-content:center; align-items:center;
}
.contact-card .ico{ margin:0 auto 18px; }
.contact-card dt{
  font-family:var(--mono); font-size:8.5px; letter-spacing:.34em;
  color:rgba(232,241,255,.5); margin-bottom:10px; text-transform:uppercase;
}
.contact-card dd{
  font-family:var(--mono); font-size:14px; letter-spacing:.04em;
  color:rgba(220,246,255,.95); line-height:1.7; word-break:break-all;
}
.contact-card:hover dd{ color:var(--accent); }

/* 微信二维码卡片 */
.qr-box{
  width:clamp(120px,14vw,150px); aspect-ratio:1;
  margin:0 auto 18px; padding:10px;
  background:#f2f7fb; border-radius:14px;
  box-shadow:0 0 0 1px rgba(125,249,255,.14), 0 12px 32px -14px rgba(125,249,255,.35);
  transition:transform .35s ease, box-shadow .35s;
}
.qr-box img{ width:100%; height:100%; object-fit:contain; display:block; }
.card:hover .qr-box{
  transform:scale(1.04);
  box-shadow:0 0 0 1px rgba(125,249,255,.3), 0 14px 40px -14px rgba(125,249,255,.5);
}
html.reduced .card:hover .qr-box{ transform:none; }

/* ---------- 页脚 ---------- */
.site-footer{
  border-top:1px solid var(--hair);
  padding:clamp(30px,5vh,46px) 0;
  margin-top:clamp(40px,7vh,72px);
}
.site-footer .wrap{
  display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap;
}
.site-footer .f-brand{
  display:flex; align-items:center; gap:10px;
  font-family:var(--mono); font-size:10px; letter-spacing:.24em; color:var(--ink-dim);
}
.site-footer .f-brand img{ height:18px; width:auto; }
.site-footer .f-copy{
  font-family:var(--mono); font-size:9.5px; letter-spacing:.18em;
  color:var(--ink-faint);
}
.site-footer .f-slogan{
  width:100%; text-align:center; margin-top:14px;
  font-family:var(--serif); font-style:italic;
  font-size:12.5px; color:var(--ink-faint); letter-spacing:.06em;
}

/* ---------- 减少动态 ---------- */
@media (prefers-reduced-motion:reduce){
  html{ scroll-behavior:auto; }
  .stars::before, .visual-card img{ animation:none; }
  .card{ transition:none; }
}
