/* ============================================================
   海蛞蝓科普站 · V1 深海版
   依照设计稿 haikuoyu-v1-deepsea.png 逐项还原
   画布 1440 / 内容宽 1312（左右各 64）/ 分区背景与原稿一致
   ============================================================ */

:root{
  /* 分区底色 */
  --bg-hero:#030C19;
  --bg-home:#04121F;   /* 故事区 */
  --bg-alt:#061A2C;    /* 画廊区 / 商店区 */
  --bg-alt3:#071F33;   /* 知识区 */
  --bg-footer:#03101C;

  /* 组件底色 */
  --card:#142A3D;
  --panel:#11283B;
  --line:rgba(255,255,255,.08);
  --line2:rgba(255,255,255,.14);
  --chip:rgba(255,255,255,.06);

  /* 品牌色 */
  --cyan:#35E0D0;
  --cyan-dim:rgba(53,224,208,.35);
  --magenta:#FF4FA3;

  /* 文字 */
  --t1:#F2FAFF;        /* 标题白 */
  --t2:#9FC1D6;        /* 次级 */
  --t3:#7E9FB5;        /* 正文灰 */
  --t4:#6E8FA6;        /* 弱化 */
  --t5:#55748A;

  /* 图片占位（原稿为浅灰块） */
  --ph:#E5E7EB;
  --ph-ink:#6B7280;

  --serif:"Source Han Serif SC","Noto Serif SC","Songti SC","SimSun",serif;
  --sans:"Noto Sans SC","PingFang SC","Microsoft YaHei",system-ui,sans-serif;
  --display:"Playfair Display","Times New Roman",Georgia,serif;
  --micro:"Inter","Helvetica Neue",Arial,sans-serif;

  --pad:64px;
  --max:1440px;
  --r:14px;
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;background:var(--bg-home);color:var(--t3);
  font:400 14px/1.8 var(--sans);
  -webkit-font-smoothing:antialiased;
}
a{color:inherit;text-decoration:none}
img{max-width:100%;display:block}
button{font-family:inherit;cursor:pointer;border:0;background:none;color:inherit}
h1,h2,h3,h4{margin:0;color:var(--t1);font-family:var(--serif);font-weight:700;letter-spacing:0}
p{margin:0}
ul{margin:0;padding:0;list-style:none}
figure{margin:0}
[id]{scroll-margin-top:110px}

.wrap{max-width:var(--max);margin:0 auto;padding:0 var(--pad)}
.sec{padding:96px 0}
.sec--home{background:var(--bg-home)}
.sec--alt{background:var(--bg-alt)}
.sec--alt3{background:var(--bg-alt3)}

/* ---------------- 顶部导航 ---------------- */
.nav{position:sticky;top:0;z-index:60;height:76px;
  background:rgba(3,12,25,.72);backdrop-filter:blur(16px);
  border-bottom:1px solid rgba(255,255,255,.06)}
.nav__in{max-width:var(--max);margin:0 auto;padding:0 var(--pad);height:76px;
  display:flex;align-items:center;gap:40px}
.brand{display:flex;align-items:center;gap:12px;flex:0 0 auto}
.brand__mark{width:30px;height:30px;flex:none}
.brand__name{font:500 15px/1 var(--sans);color:var(--t1);white-space:nowrap}
.brand__name i{font-style:normal;color:var(--t4)}
.nav__links{display:flex;align-items:center;gap:34px;flex:1 1 auto;justify-content:center}
.nav__links a{font:400 14px/1 var(--sans);color:var(--t2);transition:color .2s}
.nav__links a:hover,.nav__links a.is-active{color:var(--cyan)}
.nav__act{display:flex;align-items:center;gap:22px;flex:0 0 auto}
.icon-btn{width:20px;height:20px;color:var(--t2);transition:color .2s}
.icon-btn:hover{color:var(--cyan)}

/* 按钮 */
.btn{display:inline-flex;align-items:center;justify-content:center;
  height:40px;padding:0 24px;border-radius:999px;
  font:500 14px/1 var(--sans);background:var(--cyan);color:#05231F;
  transition:transform .2s,box-shadow .2s,background .2s}
.btn:hover{transform:translateY(-1px);box-shadow:0 8px 24px rgba(53,224,208,.3)}
.btn--lg{height:52px;padding:0 32px;font-size:15px}
.btn--ghost{background:transparent;color:var(--t1);
  border:1px solid rgba(255,255,255,.22)}
.btn--ghost:hover{border-color:var(--cyan);color:var(--cyan);
  box-shadow:none;background:rgba(53,224,208,.06)}

/* ---------------- Hero ---------------- */
.hero{position:relative;overflow:hidden;background:var(--bg-hero);
  background-image:
    radial-gradient(760px 300px at 50% 205px,rgba(53,224,208,.30),rgba(53,224,208,0) 72%),
    radial-gradient(1400px 620px at 50% 120px,rgba(18,86,104,.55),rgba(3,12,25,0) 70%),
    linear-gradient(180deg,#030C19 0%,#041425 52%,#031120 100%);
  padding:16px 0 64px}
.hero__in{position:relative;z-index:2;text-align:center}
.hero__pill{display:inline-flex;align-items:center;gap:9px;height:26px;padding:0 14px;
  border-radius:999px;background:rgba(53,224,208,.07);border:1px solid var(--cyan-dim);
  font:500 12px/1 var(--sans);color:var(--cyan)}
.hero__pill::before{content:"";width:6px;height:6px;border-radius:50%;
  background:var(--cyan);box-shadow:0 0 8px rgba(53,224,208,.9)}
.hero h1{margin-top:60px;font-size:64px;line-height:1.25;letter-spacing:.01em}
.hero__lede{margin:14px auto 0;max-width:760px;font:300 15px/1.8 var(--sans);color:var(--t2)}
.hero__btns{margin-top:32px;display:flex;justify-content:center;gap:12px;flex-wrap:wrap}

/* 视频位 */
.banner{position:relative;margin-top:56px;border-radius:24px;overflow:hidden;
  aspect-ratio:1312/580;background:linear-gradient(160deg,#2340A0 0%,#5A309E 55%,#8C2999 100%)}
.banner__badge{position:absolute;left:20px;top:20px;height:26px;padding:0 12px;
  display:inline-flex;align-items:center;border-radius:999px;
  background:var(--magenta);color:#3A0518;font:600 11px/1 var(--micro);letter-spacing:.06em}
.banner__time{position:absolute;right:20px;top:20px;height:26px;padding:0 12px;
  display:inline-flex;align-items:center;border-radius:999px;
  background:rgba(3,12,25,.42);color:#fff;font:500 12px/1 var(--micro);letter-spacing:.04em}
.banner__cap{position:absolute;left:24px;bottom:22px;
  font:400 12px/1.6 var(--sans);color:rgba(255,255,255,.86)}
.banner__play{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  width:96px;height:96px;border-radius:50%;display:grid;place-items:center;
  background:var(--cyan);box-shadow:0 0 0 14px rgba(53,224,208,.12);transition:.25s}
.banner:hover .banner__play{transform:translate(-50%,-50%) scale(1.06)}
.banner__play svg{width:26px;height:26px;color:#05231F}
.banner__deco{position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(70% 90% at 78% 22%,rgba(255,255,255,.14),transparent 62%),
             radial-gradient(60% 80% at 12% 88%,rgba(53,224,208,.18),transparent 66%)}

/* ---------------- 区块标题 ---------------- */
.label{display:block;font:600 12px/1 var(--micro);letter-spacing:.18em;
  text-transform:uppercase;color:var(--cyan)}
.label--m{color:var(--magenta)}
.sec-head{display:flex;align-items:flex-start;justify-content:space-between;gap:56px}
.sec-head h2{margin-top:18px;font-size:44px;line-height:1.3}
.sec-head p{margin-top:16px;max-width:820px;font:300 14px/1.8 var(--sans);color:var(--t3)}
.link-more{flex:none;margin-top:34px;font:500 13px/1 var(--sans);color:var(--cyan);white-space:nowrap}
.link-more:hover{opacity:.8}
.link-more--m{color:var(--magenta)}

/* ---------------- 标签筛选 / 标签 chip ---------------- */
.chips{display:flex;gap:10px;flex-wrap:wrap;margin-top:28px}
.chip{display:inline-flex;align-items:center;justify-content:center;gap:6px;
  height:34px;padding:0 18px;border-radius:999px;line-height:1;text-align:center;white-space:nowrap;
  background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.14);
  font:400 13px/1 var(--sans);color:var(--t2);
  transition:background .2s,border-color .2s,color .2s,box-shadow .2s,transform .2s}
.chip:hover{background:rgba(53,224,208,.10);border-color:var(--cyan-dim);color:var(--t1)}
.chip.is-on{background:var(--cyan);border-color:var(--cyan);color:#05231F;font-weight:600;
  box-shadow:0 6px 18px rgba(53,224,208,.25)}
.chip:active{transform:translateY(1px)}

/* ---------------- 图片占位（原稿：浅灰块 + 灰字） ---------------- */
.ph{position:relative;display:grid;place-items:center;overflow:hidden;
  background:var(--ph);border-radius:10px;text-align:center;padding:16px}
.ph::after{content:attr(data-label);font:500 20px/1.4 var(--sans);color:var(--ph-ink);
  letter-spacing:.01em}
.ph--d1::after{font-size:34px}
.ph--d2::after{font-size:26px}
.ph--d3::after{font-size:24px}
.ph--d4::after{font-size:18px}
.ph--d5::after{font-size:15px}
.ph--d6::after{font-size:12px}
/* 真实配图：宽度一致、高度随图片自身比例、不留白边、圆角沿用各上下文（与灰块一致） */
.ph--img{padding:0;display:block;background:var(--panel);overflow:hidden}
.ph--img img{display:block;width:100%;height:auto}
/* 关键修复：有真实图片时绝不能渲染占位文字
   （.ph::after 的 content:attr(data-label) 会在图片下方叠加一行大字，右侧推荐栏的"巨大文字"即由此产生）。
   仅当图片加载失败（.ph--failed）时才回退显示占位文字，见文件末尾的兜底规则。 */
.ph--img::after{content:none}
/* 图片署名（CC BY 4.0） */
.credit{margin-top:8px;font:400 11px/1.5 var(--micro);color:var(--t4)}
.credit__k{color:var(--t3);margin-right:6px}
.credit a{color:var(--t4);border-bottom:1px dotted var(--line2)}
.credit a:hover{color:var(--cyan);border-color:var(--cyan)}

/* ---------------- 画廊（四列错落） ---------------- */
.masonry{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:32px}
.mcol{display:flex;flex-direction:column;gap:26px}
.gcard{display:block}
.gcard__link{display:block}
.gcard .ph{width:100%}
.gcard figcaption{margin-top:14px}
.gcard b{display:block;font:600 15px/1.4 var(--sans);color:var(--t1)}
.gcard span{display:block;margin-top:5px;font:400 12px/1.5 var(--sans);color:var(--t4)}
.h1{height:170px}.h2{height:230px}.h3{height:260px}.h4{height:290px}.h5{height:300px}.h6{height:340px}
/* 关键：画廊卡片是固定高的取景框（.h1~.h6），图片必须铺满这个框（object-fit:cover）。
   否则图片按自身比例只占顶部一小条，而播放角标是按「框」居中的 —— 看起来就"跑偏"了。 */
.gcard .ph--img img{height:100%;object-fit:cover}

/* ---------------- 数据条 ---------------- */
.data{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;
  margin-top:48px;padding:40px 48px;border-radius:16px;
  background:var(--panel);border:1px solid var(--line)}
.data b{display:block;font:700 34px/1 var(--display);color:var(--cyan);letter-spacing:.01em}
.data b.m{color:var(--magenta)}
.data span{display:block;margin-top:12px;font:300 12px/1.6 var(--sans);color:var(--t4)}

/* ---------------- 知识卡 ---------------- */
.kcards{display:grid;grid-template-columns:repeat(3,1fr);
  row-gap:32px;column-gap:20px;margin-top:32px}
.kcard{padding:30px 30px 20px;border-radius:var(--r);
  background:var(--card);border:1px solid var(--line);transition:.22s}
.kcard:hover{background:#172F44;border-color:var(--line2)}
.kcard svg{width:26px;height:26px;color:var(--cyan);display:block}
/* 知识卡：图标取自设计稿，固定 35px 图标位、垂直居中、按原始像素尺寸显示 */
.kcard__ico{display:flex;align-items:center;height:35px}
.kcard__ico img{display:block;flex:none}
.kcard h3{margin-top:22px;font:700 18px/1.4 var(--sans);font-family:var(--sans);color:var(--t1)}
.kcard p{margin-top:13px;font:300 14px/1.85 var(--sans);color:var(--t3)}

/* ---------------- 问答（原稿为常显列表） ---------------- */
.faq-h{margin-top:56px;font-size:22px}
.faq-list{margin-top:22px;display:grid;gap:16px}
.faq{display:flex;gap:22px;padding:26px 32px;border-radius:12px;
  background:var(--panel);border:1px solid var(--line)}
.faq__n{flex:none;font:700 15px/1.6 var(--display);color:var(--magenta);letter-spacing:.04em}
.faq__t{font:600 16px/1.6 var(--sans);color:var(--t1)}
.faq__a{margin-top:8px;font:300 13px/1.8 var(--sans);color:var(--t3);max-width:1080px}

/* ---------------- 故事 ----------------
   对齐设计稿 3:131「故事内容行」几何：
   主故事卡 780×628（VERTICAL：配图 780×380 在上，正文在下）
   故事侧栏 508×612，侧栏卡内 缩略图 132×96 + 文本 328，内边距 16，卡间距 20 */
.story{display:grid;grid-template-columns:minmax(0,1.54fr) minmax(0,1fr);gap:24px;margin-top:44px;align-items:start}
.story-main{display:block;border-radius:var(--r);overflow:hidden;background:var(--card);border:1px solid var(--line)}
.story-main__img{display:block}
.story-main h3 a:hover{color:var(--cyan)}
.story-main .ph{width:100%;border-radius:0;height:380px}
.story-main__b{padding:26px 32px 32px;min-height:248px}
.tag{display:inline-flex;align-items:center;height:24px;padding:0 12px;border-radius:999px;
  background:rgba(255,79,163,.16);color:var(--magenta);
  font:500 11px/1 var(--micro);letter-spacing:.08em}
.story-main h3{margin-top:16px;font-size:26px;line-height:1.4}
.story-main p{margin-top:14px;font:300 14px/1.9 var(--sans);color:var(--t3)}
.story-meta{margin-top:20px;font:400 12px/1.6 var(--sans);color:var(--t4)}
.story-list{display:grid;gap:20px;align-content:space-between;min-height:612px}
.story-list .link-more{display:block;padding-top:4px}
.srow{display:grid;grid-template-columns:132px 1fr;gap:16px;align-items:center;
  padding:16px;border-radius:12px;background:var(--panel);border:1px solid var(--line);transition:.2s}
.srow:hover{background:#162E43}
.srow .ph{width:132px;height:96px}
.srow b{display:block;font:600 15px/1.45 var(--sans);color:var(--t1)}
.srow span{display:block;margin-top:6px;font:400 12px/1.5 var(--sans);color:var(--t4)}

/* ---------------- 商店 ---------------- */
.shop{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:32px}
.pcard{padding:14px 14px 18px;border-radius:var(--r);
  background:var(--card);border:1px solid var(--line);transition:.22s}
.pcard:hover{border-color:var(--line2)}
.pcard .ph{height:200px;border-radius:10px}
.pcard h3{margin-top:18px;font:600 15px/1.45 var(--sans);font-family:var(--sans);color:var(--t1)}
.pcard .spec{margin-top:7px;font:300 12px/1.6 var(--sans);color:var(--t4)}
.pcard .row{margin-top:16px;display:flex;align-items:center;justify-content:space-between}
.pcard .row b{font:700 24px/1 var(--display);color:var(--cyan)}
.pcard .row b i{font:700 15px/1 var(--display);font-style:normal}
.pcard .row span{font:500 13px/1 var(--sans);color:var(--cyan);cursor:pointer}
.pcard .row span:hover{opacity:.75}
.ship-note{margin-top:26px;font:300 12px/1.7 var(--sans);color:var(--t5)}

/* ---------------- 订阅 ---------------- */
.subscribe{position:relative;overflow:hidden;padding:96px 0;text-align:center;
  background:linear-gradient(180deg,#0A1A2E 0%,#1C1E3E 55%,#03101C 100%)}
.subscribe::before{content:"";position:absolute;left:50%;top:52%;width:1400px;height:560px;
  transform:translate(-50%,-50%);border-radius:50%;pointer-events:none;
  background:radial-gradient(closest-side,rgba(53,224,208,.16),rgba(90,70,180,.16) 55%,rgba(3,16,28,0) 100%)}
.subscribe__in{position:relative;z-index:2;max-width:760px;margin:0 auto}
.subscribe h2{margin-top:20px;font-size:44px;line-height:1.3}
.subscribe p{margin-top:18px;font:300 14px/1.8 var(--sans);color:var(--t2)}
.form{margin-top:32px;display:flex;justify-content:center;gap:12px;flex-wrap:wrap}
.form input{width:310px;height:48px;padding:0 22px;border-radius:999px;
  background:rgba(255,255,255,.05);border:1px solid var(--line2);
  font:400 14px/1 var(--sans);color:var(--t1);outline:none;transition:.2s}
.form input::placeholder{color:var(--t5)}
.form input:focus{border-color:var(--cyan-dim)}
.form .btn{height:48px;padding:0 26px}
.subscribe .note{margin-top:18px;font:300 12px/1.7 var(--sans);color:var(--t5)}
.note--ok{color:#35E0D0!important}
.note--err{color:#FF4FA3!important}

/* ---------------- 页脚 ---------------- */
.footer{background:var(--bg-footer);padding:48px 0 40px}
.footer__mark{font:700 144px/1 var(--display);color:#0E3550;text-align:center;
  letter-spacing:.03em;user-select:none}
.footer__cols{display:grid;grid-template-columns:470px 1fr 1fr 1fr;gap:44px;margin-top:84px}
.footer__brand{display:flex;align-items:center;gap:12px}
.footer__brand .brand__mark{width:28px;height:28px}
.footer__desc{margin-top:16px;font:300 12px/1.9 var(--sans);color:var(--t4);max-width:400px}
.footer__cols h5{margin:0 0 18px;font:600 14px/1 var(--sans);color:var(--t1)}
.footer__cols li{margin-bottom:12px}
.footer__cols a{font:300 13px/1.5 var(--sans);color:var(--t4);transition:color .2s}
.footer__cols a:hover{color:var(--cyan)}
.footer__bot{margin-top:44px;padding-top:22px;border-top:1px solid var(--line);
  display:flex;justify-content:space-between;gap:24px;flex-wrap:wrap;
  font:300 12px/1.7 var(--sans);color:var(--t5)}
.footer__bot span:last-child{display:flex;gap:20px}

/* ---------------- 内页头部 ---------------- */
.page-head{position:relative;overflow:hidden;padding:40px 0 72px;text-align:center;
  background:var(--bg-hero);
  background-image:
    radial-gradient(680px 260px at 50% 165px,rgba(53,224,208,.24),rgba(53,224,208,0) 72%),
    linear-gradient(180deg,#030C19 0%,#041425 60%,#031120 100%)}
.page-head__in{position:relative;z-index:2}
.crumb{margin-bottom:26px;font:400 12px/1 var(--sans);color:var(--t5)}
.crumb a:hover{color:var(--cyan)}
.crumb span{margin:0 8px}
.page-head h1{margin-top:22px;font-size:52px;line-height:1.3}
.page-head p{margin:16px auto 0;max-width:760px;font:300 15px/1.85 var(--sans);color:var(--t2)}

/* 搜索条 */
.searchbar{display:flex;align-items:center;gap:12px;width:460px;max-width:100%;
  height:48px;margin:32px auto 0;padding:0 22px;border-radius:999px;
  background:rgba(255,255,255,.05);border:1px solid var(--line2)}
.searchbar svg{width:18px;height:18px;flex:none;color:var(--t4)}
.searchbar input{flex:1;background:none;border:0;outline:none;
  font:400 14px/1 var(--sans);color:var(--t1)}
.searchbar input::placeholder{color:var(--t5)}

/* ---------------- 物种卡 ---------------- */
.species{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;margin-top:32px}
.sp{padding:12px 12px 18px;border-radius:var(--r);
  background:var(--card);border:1px solid var(--line);transition:.22s}
.sp:hover{border-color:var(--line2);transform:translateY(-3px)}
.sp .ph{height:150px;border-radius:10px}
.sp h3{margin-top:16px;font:600 16px/1.4 var(--sans);font-family:var(--sans);color:var(--t1)}
.sp em{display:block;margin-top:5px;font:italic 400 12px/1.4 var(--display);color:var(--t4)}
.sp dl{margin:12px 0 0;display:grid;gap:6px}
.sp dl div{display:flex;gap:10px;font:300 12px/1.6 var(--sans)}
.sp dt{flex:none;width:34px;color:var(--t5)}
.sp dd{margin:0;color:var(--t3)}
.sp__desc{margin:10px 0 0;font:300 12.5px/1.75 var(--sans);color:var(--t4);
  display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
.sp:hover .sp__desc{color:var(--t3)}
.sp .chips{margin-top:14px;gap:6px}
.sp__link{display:block;text-decoration:none;color:inherit}
.sp__link:hover h3{color:#35E0D0}
.sp__link h3{margin-top:16px}
/* 术语对照 · 示例列（等高配图） */
.table--gloss td{vertical-align:middle}
.table--gloss .gloss-cell{width:170px;padding:8px 10px}
.gloss-img{display:block;width:170px;height:106px;object-fit:cover;border-radius:8px;
  border:1px solid var(--line);background:var(--ph)}
@media(max-width:760px){
  /* 示例列保留，小屏改为横向滚动，避免丢信息 */
  .table--gloss{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .table--gloss .gloss-cell{width:132px}
  .gloss-img{width:132px;height:83px}
}
/* 物种详情页：一组影像 */
.detail__desc{margin:14px 0 0;font:300 14px/1.8 var(--sans);color:var(--t2)}
.shotgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.shot{margin:0;background:var(--card);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.shot img{display:block;width:100%;height:200px;object-fit:cover;cursor:zoom-in;background:var(--ph)}
.shot figcaption{display:flex;flex-wrap:wrap;gap:8px;padding:10px 12px;font:300 11.5px/1.5 var(--sans);color:var(--t5)}
.shot__by{color:var(--t3)}
.shot__lic{color:#35E0D0}
@media(max-width:900px){.shotgrid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.shotgrid{grid-template-columns:1fr}.shot img{height:180px}}
.sp .chip{height:22px;padding:0 9px;font-size:11px;pointer-events:none}

/* ---------------- 表格 ---------------- */
.table{width:100%;border-collapse:collapse;margin-top:32px;font:300 13px/1.7 var(--sans)}
.table th,.table td{padding:18px 20px;text-align:left;border-bottom:1px solid var(--line)}
.table th{font:600 11px/1 var(--micro);letter-spacing:.14em;text-transform:uppercase;color:var(--t5)}
.table td{color:var(--t3)}
.table td:first-child{color:var(--t1)}
.table tbody tr:hover td{background:rgba(255,255,255,.03)}

/* 表格内「代表物种」：链到图鉴详情页 */
.table .sp-link{color:var(--cyan);border-bottom:1px dotted var(--line2);transition:.2s}
.table .sp-link:hover{color:#fff;border-color:var(--cyan)}

/* ---------------- 步骤 ---------------- */
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:32px}
.step{padding:28px 30px 30px;border-radius:var(--r);
  background:var(--card);border:1px solid var(--line)}
.step b{display:block;font:700 28px/1 var(--display);color:var(--magenta)}
.step h3{margin-top:16px;font:600 17px/1.4 var(--sans);font-family:var(--sans)}
.step p{margin-top:10px;font:300 13px/1.8 var(--sans);color:var(--t3)}

/* ---------------- 文章 ---------------- */
.article{max-width:820px;margin:0 auto;text-align:left}
.article h1{font-size:44px;line-height:1.35}
.article h2{margin:52px 0 16px;font-size:26px}
.article h2:first-child{margin-top:0}
.article p{margin-bottom:20px;font:300 16px/2 var(--sans);color:var(--t2)}
.article .ph{height:420px;margin:36px 0 14px;border-radius:12px}
.article figcaption{font:400 12px/1.7 var(--sans);color:var(--t4);text-align:center}
.quote{margin:36px 0;padding:26px 32px;border-left:2px solid var(--cyan);
  background:rgba(53,224,208,.05);border-radius:0 12px 12px 0}
.quote p{margin:0;font-family:var(--serif);font-size:19px;line-height:1.8;color:var(--t1);font-weight:400}
.article-meta{display:flex;gap:26px;flex-wrap:wrap;margin:24px 0 8px;padding-bottom:24px;
  border-bottom:1px solid var(--line);font:400 12px/1.6 var(--sans);color:var(--t4)}

/* ---------------- 人物 / 联系 ---------------- */
.people{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;margin-top:32px}
.person{text-align:center}
.person .ph{width:150px;height:150px;margin:0 auto;border-radius:50%}
.person h4{margin-top:18px;font:600 15px/1.4 var(--sans);font-family:var(--sans)}
.person span{display:block;margin-top:6px;font:300 12px/1.6 var(--sans);color:var(--t4)}
.contact{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:32px}
.contact .kcard p{margin-top:10px;font:300 13px/1.9 var(--sans)}
.about-split{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:center;margin-top:32px}
.about-split h2{font-size:32px}
.about-split p{margin-top:16px;font:300 14px/1.95 var(--sans);color:var(--t3)}
.about-split .ph{height:340px}

/* ---------------- 响应式 ---------------- */
@media (max-width:1180px){
  :root{--pad:32px}
  .masonry{grid-template-columns:repeat(2,1fr)}
  .kcards,.shop,.steps,.contact{grid-template-columns:repeat(2,1fr)}
  .species{grid-template-columns:repeat(3,1fr)}
  .story-main .ph{height:320px}
  .hero h1{font-size:50px}
  .sec-head h2,.subscribe h2{font-size:36px}
  .page-head h1{font-size:40px}
  .footer__cols{grid-template-columns:1fr 1fr;gap:36px}
  .footer__mark{font-size:96px}
  .about-split{grid-template-columns:1fr;gap:32px}
  .data{padding:32px;gap:20px}
}
@media (max-width:760px){
  :root{--pad:20px}
  .nav__links{display:none}
  .masonry,.kcards,.shop,.steps,.contact,.species,.data{grid-template-columns:1fr}
  .story{grid-template-columns:1fr}
  .hero{padding-bottom:40px}
  .hero h1{font-size:32px;margin-top:36px}
  .hero__lede{font-size:14px}
  .banner{border-radius:16px}
  .banner__play{width:64px;height:64px}
  .banner__play svg{width:18px;height:18px}
  .banner__cap{display:none}
  .sec{padding:64px 0}
  .sec-head{flex-direction:column;gap:16px}
  .sec-head h2,.subscribe h2{font-size:28px}
  .sec-head .link-more{margin-top:0}
  .page-head h1{font-size:28px}
  .page-head{padding-bottom:48px}
  .story-main .ph{height:220px}
  .story-main__b,.story-list{min-height:0}
  .article h1{font-size:28px}
  .article .ph{height:220px}
  .footer__mark{font-size:56px}
  .footer__cols{grid-template-columns:1fr}
  .form input{width:100%}
  .form .btn{width:100%}
  .people{grid-template-columns:repeat(2,1fr)}
  .person .ph{width:110px;height:110px}
  .table th,.table td{padding:12px 10px;font-size:12px}
}

/* ---------------- 后台 CMS ---------------- */
.admin{background:#04121F;color:var(--t3);min-height:100vh;font:400 14px/1.6 var(--sans)}
.admin__bar{display:flex;align-items:center;justify-content:space-between;padding:16px 32px;border-bottom:1px solid var(--line);background:#03101C;position:sticky;top:0;z-index:10}
.admin__bar a{color:var(--t2)}
.admin__bar .brand{display:flex;align-items:center;gap:10px}
.admin__bar .brand img{width:26px;height:26px}
.admin__bar .links{display:flex;gap:18px}
.admin__wrap{max-width:1120px;margin:0 auto;padding:32px}
.admin h1,.admin h2{color:var(--t1);font-family:var(--sans)}
.admin .muted{color:var(--t4);font-size:13px}
.admin table{width:100%;border-collapse:collapse;margin-top:18px}
.admin th,.admin td{padding:10px 12px;border-bottom:1px solid var(--line);text-align:left;font-size:13px}
.admin th{color:var(--t5);font-size:11px;text-transform:uppercase;letter-spacing:.1em}
.admin td a{color:var(--cyan)}
.admin .btn{display:inline-flex;align-items:center;height:36px;padding:0 18px;border-radius:8px;background:var(--cyan);color:#05231F;font-weight:500;cursor:pointer;border:0;font-size:13px}
.admin .btn--ghost{background:transparent;color:var(--t1);border:1px solid var(--line2)}
.admin .btn--sm{height:30px;padding:0 12px;font-size:12px}
.admin .btn--danger{background:var(--magenta);color:#3A0518}
.admin input,.admin textarea,.admin select{width:100%;padding:10px 12px;border-radius:8px;background:rgba(255,255,255,.05);border:1px solid var(--line2);color:var(--t1);font:400 14px/1.6 var(--sans);outline:none;margin-top:4px}
.admin label{display:block;margin-top:16px;color:var(--t2);font-size:13px}
.admin label .hint{color:var(--t5);font-size:12px;margin-left:6px}
.admin .row{display:flex;gap:12px;flex-wrap:wrap;margin-top:24px}
.admin .cards{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:22px}
.admin .card{padding:20px;border-radius:12px;background:var(--card);border:1px solid var(--line)}
.admin .card b{font-size:30px;color:var(--cyan);display:block}
.admin .card a{color:var(--t1);font-weight:500}
.admin .login{max-width:380px;margin:12vh auto 0;padding:32px;border-radius:16px;background:var(--card);border:1px solid var(--line)}
.admin .login .err{color:var(--magenta);font-size:13px;margin-top:10px}
.admin .login .btn{width:100%;justify-content:center;margin-top:20px}

/* ============================================================
   真实配图覆盖：取消各上下文对 .ph--img 的固定高度，
   缩略图宽度一致、高度按图片自身比例（不要求等高、不裁切、不留白边）。
   灰块（无 --img）仍保留原固定高度与形状。圆形头像保持等比裁切。
   ============================================================ */
.ph.ph--img{height:auto}
.person .ph--img{height:150px}
.person .ph--img img{height:100%;object-fit:cover}

/* ============================================================
   新增：影像详情页 / 灯箱 / 视频播放 / 图片加载兜底
   ============================================================ */

/* 图片加载失败兜底：img 出错时隐藏，露出灰块 + 文案 */
.ph--img.ph--failed{background:var(--ph);display:grid;place-items:center}
.ph--img.ph--failed img{display:none}
.ph--img.ph--failed::after{content:attr(data-label);font:500 20px/1.4 var(--sans);color:var(--ph-ink);padding:16px}

/* 画廊卡片：整卡可点击进入详情页 */
.gcard__link{display:block;color:inherit;cursor:pointer}
.gcard__link:hover .ph{filter:brightness(1.06)}
/* 视频条目居中播放角标：与首页大视频的播放按钮同一套视觉（实心青圆 + 深色三角 + 外扩光晕） */
.gcard__play{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  width:56px;height:56px;border-radius:50%;display:grid;place-items:center;
  background:var(--cyan);border:0;
  box-shadow:0 0 0 9px rgba(53,224,208,.16),0 10px 24px rgba(3,12,25,.42);
  z-index:4;transition:transform .22s,box-shadow .22s;cursor:pointer}
.gcard__play svg{width:17px;height:17px;color:#05231F}
.gcard:hover .gcard__play{transform:translate(-50%,-50%) scale(1.07);
  box-shadow:0 0 0 12px rgba(53,224,208,.20),0 12px 28px rgba(3,12,25,.45)}
@media(max-width:760px){
  .gcard__play{width:44px;height:44px;box-shadow:0 0 0 7px rgba(53,224,208,.16)}
  .gcard__play svg{width:14px;height:14px}
}

/* 首页 banner 视频位：poster 图 + 点击懒加载播放（视频不预载） */
.banner__poster{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:1}
.banner__deco{z-index:2}
.banner__badge,.banner__time,.banner__cap{z-index:3}
.banner__play{z-index:4;cursor:pointer}
.banner{cursor:pointer}
.banner__video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:1;background:#030C19}
.banner.is-playing .banner__poster,
.banner.is-playing .banner__deco{opacity:0}
.banner.is-playing .banner__play{display:none}
.banner__hint{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:4;display:none;
  font:500 13px/1 var(--sans);color:#fff;background:rgba(3,12,25,.55);padding:10px 16px;border-radius:999px}
.banner.is-error .banner__hint{display:block}

/* 影像详情页 */
.detail{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:48px;margin-top:44px;align-items:start}
.detail__media{position:relative;border-radius:var(--r);overflow:hidden;background:var(--panel);border:1px solid var(--line)}
.detail__media img{display:block;width:100%;height:auto;cursor:zoom-in}
.detail__media.is-video{aspect-ratio:16/9;background:#030C19}
.detail__media.is-video video{display:block;width:100%;height:100%;object-fit:cover;cursor:default}
.detail__cap{margin-top:12px;font:400 12px/1.6 var(--sans);color:var(--t4)}
.detail__info h1{font-size:36px;line-height:1.3}
.detail__sub{margin-top:12px;font:300 15px/1.8 var(--sans);color:var(--t2)}
.detail__meta{margin-top:26px;display:grid;gap:14px}
.detail__meta div{display:flex;gap:14px;font:300 13px/1.7 var(--sans);border-top:1px solid var(--line);padding-top:14px}
.detail__meta dt{flex:none;width:64px;color:var(--t5)}
.detail__meta dd{margin:0;color:var(--t3)}
.detail__actions{margin-top:28px}

/* 可点击卡片（整卡跳转）—— stretched-link 模式：
   卡片 <div> position:relative，主目标 <a class="cardlink"> 的 ::after 铺满整卡，
   点击卡片任意处都跳转；卡片内真实链接（署名/关键词/加购）z-index 抬升，保持可点 */
.kcard,.pcard,.gcard{position:relative}
.pcard__link,.gcard__link,.cardlink{text-decoration:none;color:inherit}
.cardlink::after{content:"";position:absolute;inset:0;z-index:1}
.cardlink .kwlink,.cardlink .credit a,
.kcard .kwlink,.pcard .kwlink,.gcard .kwlink,
.kcard .credit a,.pcard .credit a,.gcard .credit a,
.pcard .row span.buy{position:relative;z-index:2}

/* 灯箱（支持同一页面内左右切换浏览） */
#lb{position:fixed;inset:0;z-index:200;display:none;align-items:center;justify-content:center;
  background:rgba(2,8,16,.94);padding:40px;cursor:zoom-out}
#lb.open{display:flex}
#lb img{max-width:94vw;max-height:88vh;border-radius:10px;
  box-shadow:0 20px 60px rgba(0,0,0,.55);cursor:default}
#lb__close{position:absolute;right:24px;top:20px;width:42px;height:42px;border-radius:50%;
  display:grid;place-items:center;background:rgba(255,255,255,.12);color:#fff;font-size:22px;
  line-height:1;cursor:pointer;transition:background .2s}
#lb__close:hover{background:rgba(255,79,163,.85)}
#lb__prev,#lb__next{position:absolute;top:50%;transform:translateY(-50%);
  width:52px;height:52px;border-radius:50%;display:grid;place-items:center;
  background:rgba(255,255,255,.12);color:#fff;font-size:24px;line-height:1;
  cursor:pointer;user-select:none;transition:background .2s,color .2s}
#lb__prev{left:26px}
#lb__next{right:26px}
#lb__prev:hover,#lb__next:hover{background:rgba(53,224,208,.9);color:#05231F}
#lb__prev.is-off,#lb__next.is-off{opacity:.28;cursor:not-allowed;background:rgba(255,255,255,.08)}
#lb__count{position:absolute;left:50%;bottom:24px;transform:translateX(-50%);
  padding:7px 15px;border-radius:999px;background:rgba(3,12,25,.62);
  border:1px solid rgba(255,255,255,.16);color:#EAF6FF;
  font:500 13px/1 var(--micro);letter-spacing:.05em}
#lb__count:empty{display:none}
@media(max-width:760px){
  #lb{padding:16px}
  #lb__prev{left:10px}#lb__next{right:10px}
  #lb__prev,#lb__next{width:44px;height:44px}
  #lb__close{right:12px;top:12px}
}

/* ================= 故事详情：两列（正文 + 右侧推荐） ================= */
.sdetail{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:44px;
  margin-top:28px;align-items:start}
.sdetail .article{max-width:100%}
.recs{display:grid;gap:22px}
.rec{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:20px}
.rec__h{display:flex;flex-direction:column;gap:5px;margin-bottom:14px}
.rec__h .label{font-size:10px;letter-spacing:.16em;text-transform:uppercase}
.rec__h b{font:700 16px/1.3 var(--sans);color:var(--t1)}
.rec__list{display:grid;gap:10px}
.rec .srow{display:grid;grid-template-columns:76px 1fr;gap:12px;align-items:center;
  padding:10px;border-radius:10px;background:var(--panel);border:1px solid var(--line);transition:.18s}
.rec .srow:hover{background:#162E43;border-color:var(--line2)}
.rec .srow .ph{width:76px;height:56px;border-radius:8px}
.rec .srow__txt{display:block;min-width:0}
.rec .srow__txt b{display:block;font:600 14px/1.4 var(--sans);color:var(--t1);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rec .srow__txt span{display:block;margin-top:4px;font:400 12px/1.4 var(--sans);color:var(--t4);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rec__tags{display:flex;flex-wrap:wrap;gap:8px}
.rec__tags .chip{cursor:pointer}
.rec__line{display:block;padding:10px 12px;border-radius:10px;background:var(--panel);
  border:1px solid var(--line);transition:.18s}
.rec__line:hover{background:#162E43;border-color:var(--line2)}
.rec__line b{display:block;font:600 14px/1.45 var(--sans);color:var(--t1)}
.rec__line span{display:block;margin-top:5px;font:300 12px/1.6 var(--sans);color:var(--t4);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* ================= 评论区 ================= */
.cform{flex-direction:column;align-items:stretch;max-width:820px;gap:12px;margin-top:20px}
.cform input{width:100%!important;height:48px;padding:0 20px;border-radius:12px}
.cform .btn{width:100%;height:48px}
.cnote{margin-top:12px;text-align:left;font:300 12px/1.7 var(--sans);color:var(--t5)}
.clist{margin-top:26px;display:grid;gap:14px}
.cempty{padding:24px;border-radius:12px;border:1px dashed var(--line2);color:var(--t4);
  font:300 13px/1.6 var(--sans);text-align:center}
.citem{padding:16px 18px;border-radius:12px;background:var(--panel);border:1px solid var(--line)}
.citem__top{display:flex;align-items:center;justify-content:space-between;gap:10px}
.citem__top b{font:600 14px/1.4 var(--sans);color:var(--t1)}
.citem__top span{font:400 12px/1.4 var(--sans);color:var(--t5)}
.citem p{margin-top:9px;font:300 14px/1.8 var(--sans);color:var(--t3);white-space:normal;
  overflow-wrap:anywhere}

@media (max-width:760px){
  .sdetail{grid-template-columns:1fr;gap:32px}
  .rec .srow{grid-template-columns:64px 1fr}
  .rec .srow .ph{width:64px;height:48px}
}

/* ================= 图片角标（详情页图片组「第 n / 共 m」） ================= */
.shot{position:relative}
.imgcount{position:absolute;right:10px;bottom:10px;z-index:5;
  min-width:38px;height:24px;padding:0 9px;border-radius:999px;
  display:inline-flex;align-items:center;justify-content:center;
  background:rgba(3,12,25,.66);border:1px solid rgba(255,255,255,.22);
  backdrop-filter:blur(6px);color:#EAF6FF;
  font:600 12px/1 var(--micro);letter-spacing:.03em}
.detail__media .imgcount{right:14px;bottom:14px;height:26px}

/* ================= 分页条 =================
   页码默认「无框」只留数字，当前页用实心青色药丸强调（深色字，干净不脏）；
   上一页/下一页为描边药丸。所有按钮同尺寸，选中不缩小、不跳动。 */
.pager{display:flex;align-items:center;justify-content:center;gap:16px;flex-wrap:wrap;margin-top:52px}
.pager__nums{display:inline-flex;align-items:center;gap:6px}
.pager a,.pager .pager__cur,.pager .pager__nav{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:42px;height:42px;padding:0 14px;border-radius:999px;line-height:1;
  font:600 13px/1 var(--sans);color:var(--t2);box-sizing:border-box;
  background:transparent;border:1px solid transparent;
  transition:background .18s,border-color .18s,color .18s,box-shadow .18s}
.pager__nums a:hover{color:var(--t1);background:rgba(53,224,208,.14)}
.pager .pager__cur{background:var(--cyan);color:#04241F;font-weight:700;cursor:default;
  box-shadow:0 6px 18px rgba(53,224,208,.28)}
.pager .pager__nav{padding:0 20px;color:var(--t2);
  background:rgba(255,255,255,.04);border-color:var(--line2)}
.pager .pager__nav:hover{color:var(--t1);background:rgba(255,255,255,.09);border-color:rgba(255,255,255,.24)}
.pager .pager__nav.is-off{opacity:.3;cursor:not-allowed;pointer-events:none}
.pager .pager__info{background:none;border:0;min-width:auto;height:auto;padding:0 4px;
  color:var(--t4);font:500 12px/1 var(--sans);letter-spacing:.02em}
.pager .pager__gap{background:none;border:0;min-width:auto;padding:0 4px;color:var(--t5)}
@media(max-width:760px){
  .pager{margin-top:34px;gap:12px}
  .pager a,.pager .pager__cur,.pager .pager__nav{min-width:38px;height:38px;padding:0 12px}
  .pager .pager__nav{padding:0 15px}
  .pager .pager__info{order:9;width:100%;justify-content:center;margin-top:6px}
}

/* ================= 导航搜索框 ================= */
.nav__search{display:flex;align-items:center;gap:6px;position:relative;
  background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.16);
  border-radius:999px;padding:5px 6px 5px 12px;transition:border-color .18s,background .18s}
.nav__search:focus-within{border-color:var(--cyan);background:rgba(255,255,255,.1)}
.nav__search-ico{width:16px;height:16px;color:var(--t3);flex:0 0 auto}
.nav__search-in{flex:1 1 auto;min-width:120px;max-width:200px;border:0;outline:0;background:transparent;
  color:var(--t1);font:500 13px/1 var(--sans)}
.nav__search-in::placeholder{color:var(--t4)}
.nav__search-btn{flex:0 0 auto;border:0;cursor:pointer;color:#05231F;font:600 13px/1 var(--sans);
  background:var(--cyan);border-radius:999px;padding:7px 14px;transition:filter .18s}
.nav__search-btn:hover{filter:brightness(1.08)}
@media(max-width:860px){.nav__search-in{min-width:90px;max-width:130px}}
@media(max-width:760px){
  .nav__search{order:3;width:100%;margin-top:8px;padding:7px 8px 7px 12px}
  .nav__search-in{max-width:none}
}

/* ================= 关键词锚文本 ================= */
.kwlink{color:var(--cyan);text-decoration:none;border-bottom:1px solid rgba(53,224,208,.4);
  transition:color .15s,border-color .15s}
.kwlink:hover{color:#7df3e6;border-color:rgba(125,243,230,.8)}
mark{background:rgba(53,224,208,.22);color:inherit;border-radius:3px;padding:0 2px}

/* ================= 搜索结果页 / 集合页 ================= */
.so__head{margin-bottom:26px}
.so__count{margin-top:8px;color:var(--t3);font-size:14px}
.so__count b{color:var(--cyan)}
.so__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:14px}
.so__item{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.1);
  border-radius:14px;padding:18px 20px;transition:border-color .18s,background .18s}
.so__item:hover{border-color:var(--cyan-dim);background:rgba(53,224,208,.07)}
.so__type{display:inline-block;font:600 11px/1 var(--micro);letter-spacing:.04em;
  color:var(--cyan);background:rgba(53,224,208,.12);border-radius:6px;padding:5px 8px;margin-bottom:10px}
.so__title{display:block;font:600 17px/1.4 var(--sans);color:var(--t1);text-decoration:none}
.so__title:hover{color:var(--cyan)}
.so__snippet{margin:8px 0 0;color:var(--t3);font-size:14px;line-height:1.7}
.so__empty{padding:30px 0;color:var(--t3);line-height:1.8}
.so__empty .muted{color:var(--t4);font-size:13px}
.so__empty a{color:var(--cyan);text-decoration:none}
.so-index{display:flex;flex-wrap:wrap;gap:10px}
.so-index__tag{display:inline-flex;align-items:center;background:rgba(53,224,208,.1);
  border:1px solid rgba(53,224,208,.28);border-radius:999px;padding:9px 16px;font-size:14px}

