/* ==========================================================================
   888电子主页 · /assets/site.css
   基础层：reset / 变量 / 中文排版 / 头部 / 页脚 / 通用组件
   ========================================================================== */

:root{
  --ink:#0B0614;
  --panel:#1A1030;
  --panel-deep:#120A24;
  --cyan:#38F2E0;
  --violet:#8B5CFF;
  --gold:#F5C86B;
  --paper:#F4EFE6;
  --mist:#9A8FB8;
  --teal:#0E3B3A;
  --coral:#FF6B8A;

  --line:rgba(154,143,184,.22);
  --line-strong:rgba(154,143,184,.44);

  --rail:252px;
  --gutter:48px;
  --ease:cubic-bezier(.22,.61,.36,1);

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

*,*::before,*::after{box-sizing:border-box;}

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

body{
  margin:0;
  padding-left:var(--rail);
  min-height:100vh;
  background-color:var(--ink);
  background-image:
    radial-gradient(900px 620px at 84% -12%, rgba(139,92,255,.20), transparent 70%),
    radial-gradient(760px 520px at -12% 42%, rgba(56,242,224,.10), transparent 72%);
  background-attachment:fixed;
  color:var(--paper);
  font-family:var(--font-sans);
  font-size:17px;
  font-weight:400;
  line-height:1.75;
  letter-spacing:.01em;
}

img{max-width:100%;display:block;}
ul,ol{margin:0;padding:0;list-style:none;}
button,input,select,textarea{font:inherit;color:inherit;}
button{background:none;border:0;}
a{color:var(--cyan);text-decoration:none;}

h1,h2,h3,h4{
  margin:0 0 .55em;
  line-height:1.22;
  letter-spacing:-.01em;
  font-weight:900;
}
h1{font-size:clamp(34px,4.6vw,62px);}
h2{font-size:clamp(25px,2.6vw,38px);font-weight:700;}
h3{font-size:clamp(19px,1.6vw,24px);font-weight:700;}
p{margin:0 0 1.1em;}

:focus-visible{
  outline:2px solid var(--cyan);
  outline-offset:3px;
}

#main-content{scroll-margin-top:88px;}

/* ---------- 布局基元 ---------- */

.container{
  width:100%;
  max-width:1240px;
  margin:0 auto;
  padding:0 var(--gutter);
}

.grid-12{
  display:grid;
  grid-template-columns:repeat(12,minmax(0,1fr));
  gap:20px;
}

.rule{
  height:1px;
  border:0;
  margin:0;
  background:linear-gradient(90deg,var(--cyan),var(--violet) 45%,transparent);
  opacity:.7;
}

.eyebrow{
  display:flex;
  align-items:center;
  gap:10px;
  margin:0 0 12px;
  font-family:var(--font-mono);
  font-size:11px;
  letter-spacing:.24em;
  text-transform:uppercase;
  color:var(--gold);
}
.eyebrow::before{
  content:"";
  width:26px;
  height:1px;
  background:var(--gold);
  flex:0 0 auto;
}

.annotation{
  font-family:var(--font-mono);
  font-size:12px;
  letter-spacing:.16em;
  color:var(--mist);
  line-height:1.9;
  margin:0 0 1em;
}
.annotation--vertical{
  writing-mode:vertical-rl;
  text-orientation:mixed;
}

.index-chip{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:36px;
  height:22px;
  padding:0 8px;
  font-family:var(--font-mono);
  font-size:11px;
  letter-spacing:.1em;
  color:var(--ink);
  background:var(--gold);
  flex:0 0 auto;
}

.prose{
  max-width:74ch;
}
.prose p{margin:0 0 1.15em;}
.prose h2{margin-top:2.1em;}
.prose h3{margin-top:1.7em;}
.prose ul,.prose ol{
  margin:0 0 1.2em;
  padding-left:1.3em;
  list-style:none;
}
.prose li{
  position:relative;
  margin:0 0 .55em;
}
.prose li::before{
  content:"—";
  position:absolute;
  left:-1.3em;
  color:var(--violet);
}
.prose a{
  color:var(--cyan);
  border-bottom:1px solid rgba(56,242,224,.4);
}
.prose a:hover{border-bottom-color:var(--cyan);}
.prose strong{color:var(--gold);font-weight:700;}

.panel{
  background:linear-gradient(180deg, rgba(26,16,48,.92), rgba(11,6,20,.72));
  border:1px solid var(--line);
  padding:24px;
  transition:border-color .25s var(--ease), box-shadow .25s var(--ease);
}
.panel:hover{
  border-color:var(--line-strong);
  box-shadow:0 0 0 1px rgba(139,92,255,.18), 0 18px 50px -30px rgba(139,92,255,.7);
}

/* ---------- 按钮 ---------- */

.btn{
  display:inline-flex;
  align-items:center;
  gap:10px;
  padding:13px 22px;
  font-size:15px;
  font-weight:700;
  letter-spacing:.02em;
  text-decoration:none;
  border:1px solid var(--line-strong);
  background:transparent;
  color:var(--paper);
  cursor:pointer;
  transition:transform .2s var(--ease), box-shadow .25s var(--ease),
             border-color .25s var(--ease), background .25s var(--ease), color .25s var(--ease);
}
.btn:hover{transform:translateY(-2px);}
.btn--primary{
  background:linear-gradient(120deg,var(--cyan),var(--violet));
  color:var(--ink);
  border-color:transparent;
  box-shadow:0 0 26px rgba(56,242,224,.30);
}
.btn--primary:hover{box-shadow:0 0 34px rgba(56,242,224,.48);}
.btn--ghost{
  border-color:rgba(56,242,224,.6);
  color:var(--cyan);
}
.btn--ghost:hover{
  background:rgba(56,242,224,.10);
  box-shadow:0 0 22px rgba(56,242,224,.26);
}

/* ---------- 面包屑 ---------- */

.breadcrumb{
  font-family:var(--font-mono);
  font-size:12px;
  letter-spacing:.08em;
  color:var(--mist);
}
.breadcrumb__list{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:9px;
  margin:0;
  padding:0;
}
.breadcrumb__item{display:inline-flex;align-items:center;gap:9px;}
.breadcrumb__item + .breadcrumb__item::before{
  content:"/";
  color:var(--line-strong);
}
.breadcrumb__link{
  color:var(--mist);
  border-bottom:1px solid transparent;
}
.breadcrumb__link:hover{color:var(--cyan);border-bottom-color:rgba(56,242,224,.5);}

/* ---------- 图片容器（页面阶段放置占位/图形） ---------- */

.media-frame{
  position:relative;
  display:block;
  margin:0;
  overflow:hidden;
  aspect-ratio:16 / 9;
  background-color:var(--panel);
  background-image:linear-gradient(135deg, rgba(139,92,255,.24), rgba(56,242,224,.10) 55%, rgba(245,200,107,.10));
  border:1px solid var(--line);
}
.media-frame--wide{aspect-ratio:21 / 9;}
.media-frame--tall{aspect-ratio:3 / 4;}
.media-frame > img{
  position:relative;
  z-index:1;
  width:100%;
  height:100%;
  object-fit:cover;
}
.media-frame::before{
  content:"";
  position:absolute;
  inset:0;
  z-index:2;
  pointer-events:none;
  background-image:
    linear-gradient(rgba(154,143,184,.12) 1px, transparent 1px),
    linear-gradient(90deg, rgba(154,143,184,.12) 1px, transparent 1px);
  background-size:32px 32px;
}
.media-frame::after{
  content:"";
  position:absolute;
  inset:10px;
  z-index:3;
  pointer-events:none;
  border:1px solid rgba(56,242,224,.22);
}
.media-frame__caption{
  position:absolute;
  left:14px;
  bottom:12px;
  z-index:4;
  padding:5px 11px;
  font-family:var(--font-mono);
  font-size:11px;
  letter-spacing:.14em;
  color:var(--paper);
  background:rgba(11,6,20,.74);
  border-left:2px solid var(--cyan);
}

/* ---------- 显现动效 ---------- */

.reveal-ready [data-reveal]{
  opacity:0;
  transform:translateY(18px);
  transition:opacity .6s var(--ease), transform .6s var(--ease);
}
.reveal-ready [data-reveal].is-in{
  opacity:1;
  transform:none;
}

/* ==========================================================================
   头部：左侧固定框架导航
   ========================================================================== */

.skip-link{
  position:fixed;
  top:8px;
  left:8px;
  z-index:120;
  padding:11px 18px;
  background:var(--cyan);
  color:var(--ink);
  font-weight:700;
  font-size:14px;
  transform:translateY(-200%);
  transition:transform .2s var(--ease);
}
.skip-link:focus{transform:none;}

.site-header{
  position:fixed;
  top:0;
  left:0;
  bottom:0;
  width:var(--rail);
  z-index:80;
  display:flex;
  flex-direction:column;
  padding:26px 20px 20px;
  background:linear-gradient(180deg, rgba(26,16,48,.97), rgba(11,6,20,.99));
  border-right:1px solid var(--line);
  box-shadow:1px 0 0 rgba(56,242,224,.08);
}

.site-header__top{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding-bottom:20px;
  border-bottom:1px solid var(--line);
}

.brand{
  display:flex;
  align-items:center;
  gap:11px;
  min-width:0;
  color:var(--paper);
  text-decoration:none;
}
.brand__mark{
  width:40px;
  height:40px;
  flex:0 0 40px;
  display:grid;
  place-items:center;
  font-family:var(--font-mono);
  font-size:19px;
  font-weight:700;
  color:var(--ink);
  background:linear-gradient(140deg,var(--cyan),var(--violet));
  box-shadow:0 0 0 1px rgba(56,242,224,.5), 0 0 22px rgba(56,242,224,.32);
}
.brand__text{
  display:flex;
  flex-direction:column;
  gap:2px;
  min-width:0;
}
.brand__name{
  font-size:16px;
  font-weight:900;
  letter-spacing:.02em;
  line-height:1.15;
  white-space:nowrap;
}
.brand__sub{
  font-family:var(--font-mono);
  font-size:10px;
  letter-spacing:.2em;
  color:var(--mist);
  line-height:1;
}

.nav-toggle{
  display:none;
  align-items:center;
  gap:9px;
  padding:9px 11px;
  background:transparent;
  border:1px solid var(--line-strong);
  color:var(--paper);
  font-family:var(--font-mono);
  font-size:11px;
  letter-spacing:.14em;
  cursor:pointer;
  transition:border-color .25s var(--ease), color .25s var(--ease);
}
.nav-toggle:hover{border-color:var(--cyan);color:var(--cyan);}
.nav-toggle__bars{display:grid;gap:4px;width:16px;}
.nav-toggle__bars i{display:block;height:1px;background:currentColor;}
.nav-toggle__label{line-height:1;}

.rail-nav{
  display:flex;
  flex-direction:column;
  flex:1 1 auto;
  min-height:0;
  padding-top:22px;
  overflow-y:auto;
}
.rail-nav__caption{
  margin:0 0 12px;
  font-family:var(--font-mono);
  font-size:10px;
  letter-spacing:.24em;
  text-transform:uppercase;
  color:var(--mist);
}
.rail-nav__list{
  display:flex;
  flex-direction:column;
  gap:2px;
}
.rail-nav__link{
  display:flex;
  align-items:center;
  gap:11px;
  padding:10px 12px;
  color:var(--mist);
  font-size:15px;
  text-decoration:none;
  border-left:2px solid transparent;
  transition:color .25s var(--ease), background .25s var(--ease), border-color .25s var(--ease);
}
.rail-nav__link:hover{
  color:var(--paper);
  background:rgba(139,92,255,.12);
  border-left-color:var(--violet);
}
.rail-nav__link[aria-current="page"]{
  color:var(--cyan);
  background:linear-gradient(90deg, rgba(56,242,224,.14), transparent 85%);
  border-left-color:var(--cyan);
}
.rail-nav__idx{
  font-family:var(--font-mono);
  font-size:11px;
  color:var(--gold);
  opacity:.85;
}
.rail-nav__link[aria-current="page"] .rail-nav__idx{opacity:1;}
.rail-nav__label{min-width:0;}

.rail-nav__tools{
  margin-top:auto;
  padding-top:18px;
  display:flex;
  flex-direction:column;
  gap:8px;
  border-top:1px solid var(--line);
}
.rail-tool{
  display:block;
  width:100%;
  padding:10px 12px;
  font-family:var(--font-mono);
  font-size:11px;
  letter-spacing:.14em;
  text-align:left;
  color:var(--paper);
  background:transparent;
  border:1px solid var(--line-strong);
  text-decoration:none;
  cursor:pointer;
  transition:border-color .25s var(--ease), color .25s var(--ease), box-shadow .25s var(--ease), background .25s var(--ease);
}
.rail-tool:hover{
  border-color:var(--cyan);
  color:var(--cyan);
  box-shadow:0 0 18px rgba(56,242,224,.22);
}
.rail-tool--cmd{
  background:linear-gradient(90deg, rgba(139,92,255,.26), rgba(56,242,224,.12));
  border-color:rgba(139,92,255,.5);
  color:var(--paper);
}
.rail-tool--cmd:hover{
  border-color:var(--gold);
  color:var(--gold);
  box-shadow:0 0 18px rgba(245,200,107,.28);
}

.site-header__foot{
  padding-top:16px;
  border-top:1px solid var(--line);
}
.rail-note{
  font-family:var(--font-mono);
  font-size:10px;
  letter-spacing:.18em;
  color:var(--mist);
}

/* ==========================================================================
   页脚
   ========================================================================== */

.site-footer{
  position:relative;
  margin-top:96px;
  padding:58px var(--gutter) 30px;
  border-top:1px solid var(--line);
  background:linear-gradient(180deg, rgba(26,16,48,.55), rgba(11,6,20,.96));
}

.footer-grid{
  display:grid;
  grid-template-columns:minmax(190px,1.35fr) repeat(5,minmax(0,1fr));
  gap:32px 24px;
  max-width:1240px;
  margin:0 auto;
}

.footer-col--brand{min-width:0;}
.footer-brand{
  margin:0 0 10px;
  font-size:20px;
  font-weight:900;
  letter-spacing:.02em;
  color:var(--paper);
}
.footer-desc{
  margin:0;
  font-size:14px;
  line-height:1.85;
  color:var(--mist);
  max-width:32ch;
}
.footer-col__title{
  margin:0 0 14px;
  font-family:var(--font-mono);
  font-size:11px;
  font-weight:500;
  letter-spacing:.2em;
  color:var(--gold);
}
.footer-list{
  display:flex;
  flex-direction:column;
  gap:9px;
}
.footer-list a{
  font-size:14px;
  color:var(--mist);
  text-decoration:none;
  border-bottom:1px solid transparent;
  transition:color .22s var(--ease), border-color .22s var(--ease);
}
.footer-list a:hover{
  color:var(--cyan);
  border-bottom-color:rgba(56,242,224,.5);
}

.footer-base{
  max-width:1240px;
  margin:46px auto 0;
  padding-top:22px;
  border-top:1px solid var(--line);
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:14px 28px;
  font-family:var(--font-mono);
  font-size:12px;
  letter-spacing:.04em;
  color:var(--mist);
}

.footer-version{
  display:inline-flex;
  align-items:center;
  gap:9px;
  margin:0;
  padding:6px 12px;
  color:var(--gold);
  border:1px solid rgba(245,200,107,.38);
  background:rgba(245,200,107,.06);
}
.footer-version::before{
  content:"";
  width:6px;
  height:6px;
  flex:0 0 6px;
  background:var(--gold);
  box-shadow:0 0 10px var(--gold);
  animation:pulse-dot 2.4s var(--ease) infinite;
}

@keyframes pulse-dot{
  0%,100%{opacity:1;transform:scale(1);}
  50%{opacity:.35;transform:scale(.7);}
}

.footer-contact{
  flex:1 1 340px;
  margin:0;
  display:flex;
  flex-wrap:wrap;
  gap:6px 18px;
  line-height:1.9;
}
.footer-contact span{
  white-space:nowrap;
}

.footer-legal{
  margin:0;
  display:inline-flex;
  flex-wrap:wrap;
  gap:8px 18px;
}
.footer-legal a{
  color:var(--paper);
  text-decoration:none;
  border-bottom:1px solid var(--line-strong);
  padding-bottom:2px;
  transition:color .22s var(--ease), border-color .22s var(--ease);
}
.footer-legal a:hover{color:var(--cyan);border-bottom-color:var(--cyan);}

.footer-copy,.footer-icp{margin:0;}
.footer-icp{color:rgba(154,143,184,.75);}

.to-top{
  margin-left:auto;
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:9px 14px;
  font-family:var(--font-mono);
  font-size:11px;
  letter-spacing:.14em;
  color:var(--paper);
  background:transparent;
  border:1px solid var(--line-strong);
  cursor:pointer;
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transition:opacity .3s var(--ease), visibility .3s linear, border-color .25s var(--ease), color .25s var(--ease), box-shadow .25s var(--ease);
}
.to-top[data-visible]{
  opacity:1;
  visibility:visible;
  pointer-events:auto;
}
.to-top:hover{
  border-color:var(--cyan);
  color:var(--cyan);
  box-shadow:0 0 18px rgba(56,242,224,.24);
}

.scroll-progress{
  position:fixed;
  left:0;
  right:0;
  bottom:0;
  height:2px;
  z-index:90;
  background:rgba(154,143,184,.14);
  pointer-events:none;
}
.scroll-progress__bar{
  height:100%;
  width:100%;
  transform-origin:0 50%;
  transform:scaleX(0);
  background:linear-gradient(90deg,var(--cyan),var(--violet) 55%,var(--gold));
  box-shadow:0 0 12px rgba(56,242,224,.6);
  will-change:transform;
}

/* ---------- 快捷命令面板 ---------- */

.command{
  position:fixed;
  inset:0;
  z-index:110;
  opacity:0;
  visibility:hidden;
  transition:opacity .26s var(--ease), visibility .26s linear;
}
.command[data-open]{
  opacity:1;
  visibility:visible;
}
.command__veil{
  position:absolute;
  inset:0;
  background:rgba(11,6,20,.84);
}
.command__box{
  position:relative;
  width:min(540px, calc(100% - 32px));
  margin:12vh auto 0;
  padding:20px;
  background:linear-gradient(180deg,var(--panel),var(--panel-deep));
  border:1px solid var(--line-strong);
  box-shadow:0 0 60px rgba(139,92,255,.26);
  transform:translateY(-14px);
  transition:transform .3s var(--ease);
}
.command[data-open] .command__box{transform:none;}
.command__head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  padding-bottom:14px;
  border-bottom:1px solid var(--line);
}
.command__label{
  font-family:var(--font-mono);
  font-size:11px;
  letter-spacing:.22em;
  text-transform:uppercase;
  color:var(--gold);
}
.command__close{
  padding:7px 12px;
  font-family:var(--font-mono);
  font-size:11px;
  letter-spacing:.14em;
  color:var(--mist);
  border:1px solid var(--line-strong);
  cursor:pointer;
  transition:border-color .22s var(--ease), color .22s var(--ease);
}
.command__close:hover{border-color:var(--cyan);color:var(--cyan);}
.command__list{
  margin:14px 0 0;
  display:grid;
  gap:2px;
}
.command__item{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  padding:12px;
  font-size:15px;
  color:var(--paper);
  text-decoration:none;
  border:1px solid transparent;
  transition:border-color .22s var(--ease), background .22s var(--ease), color .22s var(--ease);
}
.command__item:hover,
.command__item:focus-visible{
  border-color:var(--cyan);
  background:rgba(56,242,224,.08);
  color:var(--cyan);
}
.command__hint{
  font-family:var(--font-mono);
  font-size:11px;
  letter-spacing:.12em;
  color:var(--gold);
}
.command__tip{
  margin:16px 0 0;
  padding-top:14px;
  border-top:1px solid var(--line);
  font-family:var(--font-mono);
  font-size:11px;
  letter-spacing:.1em;
  color:var(--mist);
}

/* ==========================================================================
   响应式
   ========================================================================== */

@media (max-width:1023px){
  :root{--gutter:24px;}

  body{
    padding-left:0;
    padding-top:64px;
  }

  .site-header{
    top:0;
    left:0;
    right:0;
    bottom:auto;
    width:auto;
    height:64px;
    flex-direction:row;
    align-items:center;
    gap:14px;
    padding:0 16px;
    border-right:0;
    border-bottom:1px solid var(--line);
    box-shadow:0 1px 0 rgba(56,242,224,.08);
  }

  .site-header__top{
    flex:1 1 auto;
    min-width:0;
    padding-bottom:0;
    border-bottom:0;
  }

  .brand__mark{width:34px;height:34px;flex-basis:34px;font-size:16px;}
  .brand__sub{display:none;}
  .nav-toggle{display:inline-flex;}

  .rail-nav{
    position:fixed;
    top:64px;
    left:0;
    right:0;
    bottom:0;
    padding:26px 20px 38px;
    background:rgba(11,6,20,.985);
    border-top:1px solid var(--line);
    border-right:0;
    opacity:0;
    visibility:hidden;
    transform:translateY(-10px);
    transition:opacity .28s var(--ease), transform .28s var(--ease), visibility .28s linear;
  }
  .rail-nav[data-open]{
    opacity:1;
    visibility:visible;
    transform:none;
  }
  .rail-nav__caption{margin-bottom:14px;}
  .rail-nav__link{padding:14px 12px;font-size:16px;}
  .rail-nav__tools{margin-top:24px;padding-top:20px;}

  .site-header__foot{display:none;}

  .grid-12{grid-template-columns:repeat(6,minmax(0,1fr));}

  .footer-grid{
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:28px 20px;
  }
  .footer-col--brand{grid-column:1 / -1;}
  .site-footer{margin-top:64px;padding-top:44px;}
}

@media (max-width:599px){
  :root{--gutter:18px;}

  body{font-size:16px;}

  .footer-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 16px;}
  .footer-base{flex-direction:column;align-items:flex-start;gap:12px;}
  .to-top{margin-left:0;}
  .command__box{margin-top:8vh;}
}

/* ==========================================================================
   无障碍偏好
   ========================================================================== */

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto;}
  *,*::before,*::after{
    animation-duration:.001ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
    scroll-behavior:auto !important;
  }
  .reveal-ready [data-reveal]{opacity:1 !important;transform:none !important;}
}
