/* =====================================================================
   188电子站 · 共享样式表  /assets/site.css
   设计逻辑：展览画册式连续画布 · 侧边轨道导航 · 玻璃层与实色层并置
   ===================================================================== */

/* ---------- 01 · 设计变量 ---------- */
:root{
  --ink-900:#0E1A24;
  --ink-800:#16232E;
  --ink-700:#24333F;
  --ink-500:#5A6B78;

  --paper-000:#F5F7F8;
  --paper-100:#EAEEF1;
  --paper-200:#DFE6EB;

  --blue:#1E6CFF;
  --blue-deep:#155DE6;
  --blue-soft:rgba(30,108,255,.12);
  --teal:#00B39B;
  --teal-deep:#00806F;
  --teal-soft:rgba(0,179,155,.14);
  --orange:#FF7A2F;
  --orange-deep:#C24F0D;
  --orange-soft:rgba(255,122,47,.14);

  --glass:rgba(255,255,255,.72);
  --line:#D6DEE4;
  --line-strong:#C3CDD5;

  --rail-w:238px;
  --topbar-h:58px;
  --shell-w:1180px;
  --gutter:clamp(18px,4.2vw,56px);

  --font-sans:"Noto Sans SC","Source Han Sans SC","PingFang SC","Hiragino Sans GB","Microsoft YaHei",system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  --font-mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;

  --ease:cubic-bezier(.22,.61,.36,1);
  --dur:.34s;
  --radius:14px;

  --shadow-panel:0 18px 44px -28px rgba(14,26,36,.42);
  --shadow-float:0 26px 64px -30px rgba(14,26,36,.5);
}

/* ---------- 02 · Reset ---------- */
*,
*::before,
*::after{ box-sizing:border-box; }

html{
  -webkit-text-size-adjust:100%;
  scroll-behavior:smooth;
}

body{
  margin:0;
  min-height:100vh;
  background:var(--paper-000);
  color:var(--ink-700);
  font-family:var(--font-sans);
  font-size:16px;
  line-height:1.75;
  letter-spacing:.01em;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  text-rendering:optimizeLegibility;
  padding-top:var(--topbar-h);
}

body[data-nav-locked]{ overflow:hidden; }

img,svg,video{ display:block; max-width:100%; }
button,input,select,textarea{ font:inherit; color:inherit; }

h1,h2,h3,h4,h5{
  margin:0;
  color:var(--ink-900);
  font-weight:900;
  line-height:1.16;
  letter-spacing:-.01em;
}
h1{ font-size:clamp(2rem,5.2vw,3.5rem); }
h2{ font-size:clamp(1.5rem,3.2vw,2.25rem); }
h3{ font-size:clamp(1.15rem,2vw,1.4rem); }
h4{ font-size:1.05rem; }

p{ margin:0 0 1em; }

a{
  color:var(--blue);
  text-decoration:none;
}
a:hover{
  text-decoration:underline;
  text-underline-offset:.26em;
  text-decoration-thickness:1px;
}

strong{ font-weight:700; }

:focus-visible{
  outline:2px solid var(--blue);
  outline-offset:2px;
  border-radius:4px;
}

/* ---------- 03 · 跳转链接 ---------- */
.skip-link{
  position:fixed;
  top:10px;
  left:10px;
  z-index:200;
  transform:translateY(-180%);
  padding:10px 18px;
  border-radius:999px;
  background:var(--teal);
  color:#04231E;
  font-size:14px;
  font-weight:700;
  letter-spacing:.06em;
  text-decoration:none;
  transition:transform var(--dur) var(--ease);
}
.skip-link:focus,
.skip-link:focus-visible{
  transform:translateY(0);
  text-decoration:none;
  outline-color:var(--ink-900);
}

/* ---------- 04 · 头部与轨道导航 ---------- */
.site-header{
  position:fixed;
  top:0;
  left:0;
  right:0;
  z-index:90;
}

.topbar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  height:var(--topbar-h);
  padding:0 14px;
  background:var(--ink-900);
  color:var(--paper-000);
  border-bottom:1px solid rgba(255,255,255,.09);
}

.brand{
  display:inline-flex;
  align-items:baseline;
  gap:.42em;
  color:inherit;
  text-decoration:none;
  white-space:nowrap;
}
.brand::after{
  content:"";
  align-self:center;
  width:24px;
  height:2px;
  margin-left:.55em;
  border-radius:2px;
  background:linear-gradient(90deg,var(--teal),var(--orange));
}
.brand:hover{ text-decoration:none; }

.brand__num{
  font-family:var(--font-mono);
  font-size:1.14rem;
  font-weight:700;
  letter-spacing:.04em;
  font-variant-numeric:tabular-nums;
  color:#FFFFFF;
}
.brand__word{
  font-size:.98rem;
  font-weight:900;
  letter-spacing:.16em;
  color:rgba(245,247,248,.86);
}

.brand--ink .brand__num{ color:var(--ink-900); }
.brand--ink .brand__word{ color:var(--ink-500); }

.nav-toggle{
  display:inline-flex;
  align-items:center;
  gap:10px;
  padding:8px 13px;
  border:1px solid rgba(255,255,255,.22);
  border-radius:999px;
  background:transparent;
  color:var(--paper-000);
  cursor:pointer;
  transition:border-color var(--dur) var(--ease), background-color var(--dur) var(--ease);
}
.nav-toggle:hover{
  border-color:var(--teal);
  background:rgba(0,179,155,.14);
}
.nav-toggle__label{
  font-size:13px;
  font-weight:700;
  letter-spacing:.16em;
}
.nav-toggle__bars{
  display:inline-grid;
  gap:5px;
  width:18px;
}
.nav-toggle__bars i{
  display:block;
  height:2px;
  border-radius:2px;
  background:currentColor;
  transition:transform var(--dur) var(--ease), opacity var(--dur) var(--ease);
}
.nav-toggle[aria-expanded="true"] .nav-toggle__bars i:first-child{
  transform:translateY(3.5px) rotate(45deg);
}
.nav-toggle[aria-expanded="true"] .nav-toggle__bars i:last-child{
  transform:translateY(-3.5px) rotate(-45deg);
}

.nav-scrim{
  position:fixed;
  inset:0;
  z-index:88;
  background:rgba(9,17,24,.52);
  opacity:0;
  pointer-events:none;
  transition:opacity var(--dur) var(--ease);
}
.nav-scrim[data-open]{
  opacity:1;
  pointer-events:auto;
}

.rail{
  position:fixed;
  top:var(--topbar-h);
  left:0;
  bottom:0;
  z-index:92;
  width:min(86vw,318px);
  display:flex;
  flex-direction:column;
  padding:22px 0 26px;
  background:var(--ink-900);
  color:rgba(245,247,248,.78);
  border-right:1px solid rgba(255,255,255,.08);
  box-shadow:26px 0 70px -32px rgba(9,17,24,.75);
  transform:translateX(-104%);
  transition:transform .42s var(--ease);
  overflow-y:auto;
  overflow-x:hidden;
  -webkit-overflow-scrolling:touch;
}
.rail[data-open]{ transform:translateX(0); }

.site-header :focus-visible,
.rail :focus-visible{
  outline-color:#5FE3CE;
}

.rail__caption{
  margin:0 0 14px;
  padding:0 20px 0 22px;
  font-size:12px;
  font-weight:700;
  letter-spacing:.24em;
  color:rgba(245,247,248,.4);
}

.rail__list{
  list-style:none;
  margin:0;
  padding:0;
}
.rail__item{
  border-top:1px solid rgba(255,255,255,.06);
}
.rail__item:last-child{
  border-bottom:1px solid rgba(255,255,255,.06);
}

.rail__link{
  display:grid;
  grid-template-columns:2.1em 1fr;
  align-items:center;
  gap:12px;
  padding:13px 20px 13px 22px;
  border-left:2px solid transparent;
  color:rgba(245,247,248,.74);
  font-size:15px;
  font-weight:500;
  letter-spacing:.06em;
  text-decoration:none;
  transition:color var(--dur) var(--ease),
             background-color var(--dur) var(--ease),
             border-color var(--dur) var(--ease);
}
.rail__link:hover{
  color:#FFFFFF;
  background:rgba(255,255,255,.05);
  text-decoration:none;
}
.rail__link:hover .rail__num{ color:var(--teal); }

.rail__num{
  font-family:var(--font-mono);
  font-size:11px;
  letter-spacing:.08em;
  font-variant-numeric:tabular-nums;
  color:rgba(245,247,248,.36);
  transition:color var(--dur) var(--ease);
}

.rail__name{ min-width:0; }

.rail__link[aria-current="page"]{
  color:#FFFFFF;
  font-weight:700;
  border-left-color:var(--blue);
  background:linear-gradient(90deg, rgba(30,108,255,.28), rgba(30,108,255,0) 88%);
}
.rail__link[aria-current="page"] .rail__num{
  color:var(--teal);
}

.rail__foot{
  margin-top:auto;
  padding:28px 22px 0;
}
.rail__tagline{
  margin:0 0 12px;
  font-size:14px;
  font-weight:700;
  line-height:1.6;
  letter-spacing:.04em;
  color:#FFFFFF;
}
.rail__tagline::before{
  content:"";
  display:block;
  width:34px;
  height:2px;
  margin-bottom:12px;
  border-radius:2px;
  background:linear-gradient(90deg,var(--blue),var(--teal));
}
.rail__status{
  margin:0;
  padding-top:12px;
  border-top:1px solid rgba(255,255,255,.08);
  font-size:12px;
  line-height:1.7;
  letter-spacing:.05em;
  color:rgba(245,247,248,.5);
}

/* ---------- 05 · 主体容器与布局骨架 ---------- */
.main{ display:block; }

#main-content{
  scroll-margin-top:calc(var(--topbar-h) + 16px);
}

.shell{
  width:100%;
  max-width:var(--shell-w);
  margin-inline:auto;
  padding-inline:var(--gutter);
}

.band{
  padding:clamp(44px,6vw,88px) 0;
}
.band--paper{ background:var(--paper-100); }
.band--ink{
  background:var(--ink-900);
  color:rgba(245,247,248,.8);
}
.band--ink h2,
.band--ink h3{ color:#FFFFFF; }
.band--ink a{ color:#7FE3D6; }

.grid{
  display:grid;
  gap:clamp(18px,2.6vw,30px);
}
.grid--2,
.grid--3{ grid-template-columns:1fr; }

@media (min-width:680px){
  .grid--2{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .grid--3{ grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (min-width:1024px){
  .grid--3{ grid-template-columns:repeat(3,minmax(0,1fr)); }
}

/* ---------- 06 · 章节导览块与旁注 ---------- */
.section-head{
  display:grid;
  gap:10px;
  margin-bottom:clamp(22px,3vw,38px);
}
.section-head__eyebrow{
  display:inline-flex;
  align-items:center;
  gap:.7em;
  font-size:12px;
  font-weight:700;
  letter-spacing:.22em;
  color:var(--teal-deep);
}
.section-head__eyebrow::before{
  content:"";
  width:26px;
  height:2px;
  background:var(--teal);
}
.section-head__lead{
  margin:0;
  max-width:34em;
  font-size:15.5px;
  color:var(--ink-500);
}

.side-note{
  display:inline-block;
  writing-mode:vertical-rl;
  text-orientation:mixed;
  font-size:12px;
  font-weight:500;
  letter-spacing:.26em;
  color:var(--ink-500);
}

/* ---------- 07 · 按钮 ---------- */
.btn{
  display:inline-flex;
  align-items:center;
  gap:.6em;
  padding:12px 22px;
  border:1px solid transparent;
  border-radius:999px;
  font-family:inherit;
  font-size:15px;
  font-weight:700;
  letter-spacing:.04em;
  text-decoration:none;
  cursor:pointer;
  transition:transform var(--dur) var(--ease),
             background-color var(--dur) var(--ease),
             border-color var(--dur) var(--ease),
             color var(--dur) var(--ease),
             box-shadow var(--dur) var(--ease);
}
.btn:hover{
  transform:translateY(-2px);
  text-decoration:none;
}
.btn--primary{
  background:var(--blue);
  color:#FFFFFF;
  box-shadow:0 14px 32px -18px rgba(30,108,255,.95);
}
.btn--primary:hover{ background:var(--blue-deep); }

.btn--ghost{
  background:transparent;
  color:var(--ink-900);
  border-color:var(--line-strong);
}
.btn--ghost:hover{
  border-color:var(--blue);
  color:var(--blue);
}

.btn--teal{
  background:var(--teal);
  color:#02241F;
}
.btn--teal:hover{ background:#00A08B; }

.btn--sm{
  padding:8px 15px;
  font-size:13.5px;
}

.band--ink .btn--ghost{
  color:#FFFFFF;
  border-color:rgba(255,255,255,.36);
}
.band--ink .btn--ghost:hover{
  border-color:var(--teal);
  color:#7FE3D6;
}

/* ---------- 08 · 面包屑 ---------- */
.crumb{
  padding-top:24px;
  font-size:12.5px;
  letter-spacing:.08em;
  color:var(--ink-500);
}
.crumb ol{
  list-style:none;
  margin:0;
  padding:0;
  display:flex;
  flex-wrap:wrap;
  gap:.5em;
}
.crumb li{
  display:inline-flex;
  align-items:center;
  gap:.5em;
}
.crumb li + li::before{
  content:"/";
  color:var(--line-strong);
}
.crumb a{
  color:var(--ink-500);
  text-decoration:none;
}
.crumb a:hover{
  color:var(--blue);
  text-decoration:underline;
}
.crumb [aria-current="page"]{
  color:var(--ink-900);
  font-weight:700;
}

/* ---------- 09 · 面板（玻璃层 + 实色层） ---------- */
.panel{
  position:relative;
  padding:clamp(20px,3vw,34px);
  border:1px solid var(--line);
  border-radius:var(--radius);
  background:#FFFFFF;
}
.panel > :last-child{ margin-bottom:0; }

.panel--glass{
  background:var(--glass);
  border-color:rgba(255,255,255,.7);
  box-shadow:var(--shadow-panel);
  -webkit-backdrop-filter:blur(14px) saturate(1.2);
  backdrop-filter:blur(14px) saturate(1.2);
}

.panel--ink{
  background:var(--ink-900);
  border-color:transparent;
  color:rgba(245,247,248,.82);
}
.panel--ink h2,
.panel--ink h3{ color:#FFFFFF; }

.panel__label{
  display:block;
  margin-bottom:12px;
  font-size:12px;
  font-weight:700;
  letter-spacing:.2em;
  color:var(--teal-deep);
}
.panel--ink .panel__label{ color:#5FE3CE; }

/* 玻璃层先入场、实色层随后跟上的分层进场 */
.panel--glass + .panel,
.panel + .panel--glass{ transition-delay:120ms; }

/* ---------- 10 · 索引列表 ---------- */
.index-list{
  list-style:none;
  margin:0;
  padding:0;
  border-top:1px solid var(--line);
}
.index-list__item{
  display:grid;
  grid-template-columns:auto 1fr auto;
  gap:8px 16px;
  align-items:baseline;
  padding:16px 6px;
  border-bottom:1px solid var(--line);
  transition:background-color var(--dur) var(--ease);
}
.index-list__item:hover{ background:var(--paper-100); }

.index-list__key{
  font-family:var(--font-mono);
  font-size:12px;
  font-variant-numeric:tabular-nums;
  letter-spacing:.06em;
  color:var(--teal-deep);
}
.index-list__title{
  font-weight:700;
  color:var(--ink-900);
}
.index-list__meta{
  font-size:12.5px;
  letter-spacing:.04em;
  color:var(--ink-500);
}

/* ---------- 11 · 标签 ---------- */
.tag{
  display:inline-flex;
  align-items:center;
  padding:4px 11px;
  border-radius:999px;
  background:var(--blue-soft);
  color:var(--blue);
  font-size:12px;
  font-weight:700;
  letter-spacing:.1em;
}
.tag--teal{
  background:var(--teal-soft);
  color:var(--teal-deep);
}
.tag--orange{
  background:var(--orange-soft);
  color:var(--orange-deep);
}

/* ---------- 12 · 步骤编号 ---------- */
.step-num{
  display:inline-block;
  font-family:var(--font-mono);
  font-size:clamp(2.6rem,6vw,4.2rem);
  font-weight:700;
  line-height:1;
  letter-spacing:-.03em;
  font-variant-numeric:tabular-nums;
  color:transparent;
  -webkit-text-stroke:2px var(--orange);
  text-stroke:2px var(--orange);
}
@supports not ((-webkit-text-stroke:1px red)){
  .step-num{ color:var(--orange); }
}

/* ---------- 13 · 图片容器 ---------- */
.media{
  position:relative;
  overflow:hidden;
  border:1px solid var(--line);
  border-radius:var(--radius);
  background:linear-gradient(135deg,#E6ECF0 0%,#F3F6F8 48%,#E2EAEE 100%);
}
.media::after{
  content:"";
  position:absolute;
  inset:0;
  z-index:2;
  pointer-events:none;
  background-image:linear-gradient(rgba(30,108,255,.08) 1px, transparent 1px),
                   linear-gradient(90deg, rgba(30,108,255,.08) 1px, transparent 1px);
  background-size:26px 26px;
  opacity:.7;
}
.media:has(img)::after{ display:none; }

.media > img{
  position:relative;
  z-index:1;
  width:100%;
  height:100%;
  object-fit:cover;
}

.media--wide{ aspect-ratio:16 / 9; }
.media--4-3{ aspect-ratio:4 / 3; }
.media--square{ aspect-ratio:1 / 1; }
.media--board{ aspect-ratio:16 / 10; }
.media--phone{ aspect-ratio:9 / 16; }

.media__cap{
  position:absolute;
  left:12px;
  bottom:12px;
  z-index:3;
  padding:5px 11px;
  border-radius:6px;
  background:rgba(14,26,36,.74);
  color:#FFFFFF;
  font-size:12px;
  letter-spacing:.08em;
  -webkit-backdrop-filter:blur(6px);
  backdrop-filter:blur(6px);
}

/* ---------- 14 · 正文与旁注条 ---------- */
.prose{
  max-width:34em;
  font-size:16.5px;
  line-height:1.8;
  color:var(--ink-700);
}
.prose > p{ margin:0 0 1.15em; }
.prose h2{ margin:2.2em 0 .7em; }
.prose h3{ margin:1.8em 0 .5em; }
.prose ul,
.prose ol{
  margin:0 0 1.2em;
  padding-left:1.35em;
}
.prose ul li{ list-style:disc; margin-bottom:.4em; }
.prose ol li{ list-style:decimal; margin-bottom:.4em; }
.prose strong{ color:var(--ink-900); }
.prose blockquote{
  margin:1.6em 0;
  padding:4px 0 4px 20px;
  border-left:3px solid var(--teal);
  color:var(--ink-500);
  font-size:15.5px;
}

.note{
  display:flex;
  gap:12px;
  padding:14px 18px;
  border-left:3px solid var(--teal);
  border-radius:10px;
  background:var(--paper-100);
  font-size:13.5px;
  line-height:1.75;
  color:var(--ink-500);
}
.note strong{ color:var(--ink-900); }

/* ---------- 15 · 页脚 ---------- */
.site-footer{
  position:relative;
  margin-top:clamp(64px,9vw,132px);
  padding:clamp(44px,5.5vw,76px) var(--gutter) 0;
  background:var(--paper-100);
  border-top:1px solid var(--line);
  color:var(--ink-700);
  font-size:14px;
}
.site-footer::before{
  content:"";
  position:absolute;
  top:-1px;
  left:0;
  width:min(220px,38vw);
  height:3px;
  background:linear-gradient(90deg,var(--blue),var(--teal) 55%,var(--orange));
}

.footer__grid{
  max-width:var(--shell-w);
  margin-inline:auto;
  display:grid;
  grid-template-columns:1fr;
  gap:clamp(30px,4vw,54px);
}

.footer__col{
  min-width:0;
  display:grid;
  align-content:start;
  justify-items:start;
}
.footer__col > .brand--ink{ margin-bottom:16px; }

.footer__lede{
  margin:0;
  max-width:26em;
  font-size:15px;
  line-height:1.85;
  color:var(--ink-500);
}
.footer__lede strong{ color:var(--ink-900); }

.footer__title{
  width:100%;
  margin:0 0 14px;
  padding-bottom:10px;
  border-bottom:1px solid var(--line-strong);
  font-size:12px;
  font-weight:900;
  letter-spacing:.2em;
  color:var(--ink-900);
}
.footer__title + .footer__links{ margin-bottom:28px; }

.footer__links{
  list-style:none;
  margin:0;
  padding:0;
  display:grid;
  gap:9px;
}
.footer__links a{
  display:inline-flex;
  align-items:center;
  gap:.55em;
  color:var(--ink-700);
  font-size:14.5px;
  text-decoration:none;
  transition:color var(--dur) var(--ease), transform var(--dur) var(--ease);
}
.footer__links a::before{
  content:"";
  flex:none;
  width:5px;
  height:5px;
  border-radius:50%;
  background:var(--line-strong);
  transition:background-color var(--dur) var(--ease);
}
.footer__links a:hover{
  color:var(--blue);
  transform:translateX(3px);
  text-decoration:none;
}
.footer__links a:hover::before{ background:var(--blue); }

.footer__meta{
  margin:0;
  display:grid;
  gap:12px;
  width:100%;
}
.footer__meta div{
  display:grid;
  grid-template-columns:5.4em minmax(0,1fr);
  gap:10px;
  align-items:baseline;
}
.footer__meta dt{
  font-size:12px;
  font-weight:700;
  letter-spacing:.12em;
  color:var(--ink-500);
}
.footer__meta dd{
  margin:0;
  font-size:14.5px;
  color:var(--ink-700);
  font-variant-numeric:tabular-nums;
  overflow-wrap:anywhere;
}

.footer__note{
  margin:18px 0 0;
  padding-top:14px;
  border-top:1px dashed var(--line-strong);
  max-width:30em;
  font-size:12.5px;
  line-height:1.8;
  color:var(--ink-500);
}

.footer__base{
  max-width:var(--shell-w);
  margin:clamp(30px,4vw,48px) auto 0;
  padding:18px 0 26px;
  border-top:1px solid var(--line-strong);
  display:flex;
  flex-wrap:wrap;
  gap:10px 26px;
  align-items:center;
  justify-content:space-between;
  font-size:12.5px;
  letter-spacing:.04em;
  color:var(--ink-500);
}
.footer__base p{ margin:0; }
.footer__rule{
  font-weight:700;
  letter-spacing:.1em;
  color:var(--ink-700);
}

/* ---------- 16 · 滚动显现 ---------- */
.js [data-reveal]{
  opacity:0;
  transform:translateY(18px);
  transition:opacity .7s var(--ease), transform .7s var(--ease);
}
.js [data-reveal].is-visible{
  opacity:1;
  transform:none;
}

/* ---------- 17 · 桌面端侧轨布局 ---------- */
@media (min-width:1024px){
  body{
    padding-top:0;
    padding-left:var(--rail-w);
  }
  #main-content{ scroll-margin-top:16px; }

  .site-header{
    top:0;
    bottom:0;
    right:auto;
    width:var(--rail-w);
    display:flex;
    flex-direction:column;
    background:var(--ink-900);
    border-right:1px solid rgba(255,255,255,.08);
  }

  .topbar{
    flex-direction:column;
    align-items:flex-start;
    gap:8px;
    height:auto;
    padding:30px 22px 22px;
    background:transparent;
    border-bottom:1px solid rgba(255,255,255,.08);
  }

  .nav-toggle{ display:none; }
  .nav-scrim{ display:none; }

  .rail{
    position:static;
    top:auto;
    bottom:auto;
    width:auto;
    flex:1 1 auto;
    min-height:0;
    padding:20px 0 0;
    background:transparent;
    border-right:0;
    box-shadow:none;
    transform:none;
    transition:none;
  }
}

/* ---------- 18 · 减弱动效 ---------- */
@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto; }

  *,
  *::before,
  *::after{
    animation-duration:.001ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
  }

  .rail{ transition:none !important; transform:translateX(-104%); }
  .rail[data-open]{ transform:translateX(0); }

  .js [data-reveal]{
    opacity:1 !important;
    transform:none !important;
  }

  .btn:hover{ transform:none; }
}
