/* roulang page: index */
:root{
  --ink:#101214;
  --forest:#16332A;
  --lime:#C9F24D;
  --paper:#F7F5F0;
  --sand:#E8E2D6;
  --mist:#8C948F;
  --body:#3A4140;
  --ease:cubic-bezier(.2,.7,.3,1);
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;
  font-family:"Noto Sans SC",system-ui,-apple-system,sans-serif;
  font-size:16px;
  line-height:1.75;
  color:var(--ink);
  background:var(--paper);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
img{display:block;max-width:100%;height:auto}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
input,select,textarea{font:inherit;color:inherit}
ul{margin:0;padding:0;list-style:none}
h1,h2,h3,h4{margin:0;font-family:"Noto Serif SC","Source Han Serif SC",serif;font-weight:800;line-height:1.18;letter-spacing:-0.01em}
p{margin:0}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{
  outline:2px solid var(--forest);outline-offset:2px;border-radius:2px;
}
.serif{font-family:"Noto Serif SC","Source Han Serif SC",serif}
.num{font-family:Inter,"Archivo",system-ui,sans-serif;font-variant-numeric:tabular-nums;letter-spacing:.12em;text-transform:uppercase}
.grid-bg{
  background-image:linear-gradient(rgba(16,18,20,.05) 1px,transparent 1px),
                   linear-gradient(90deg,rgba(16,18,20,.05) 1px,transparent 1px);
  background-size:64px 64px;
}
.h1-scale{font-size:clamp(2.1rem,5.4vw,4.1rem);font-weight:900;line-height:1.12}
.h2-scale{font-size:clamp(1.55rem,3.1vw,2.5rem);font-weight:800}
.lead{font-size:.98rem;line-height:1.8;color:var(--body)}
.meta{font-size:.78rem;color:var(--mist)}
.kicker{
  font-family:Inter,"Archivo",system-ui,sans-serif;
  font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;
  color:var(--mist);font-weight:600;
}
/* 导航 */
.nav-link{
  position:relative;display:inline-flex;align-items:center;height:44px;
  font-size:.95rem;font-weight:500;color:var(--ink);
  transition:color 200ms var(--ease);
}
.nav-link::after{
  content:"";position:absolute;left:0;bottom:6px;height:2px;width:0;
  background:var(--lime);transition:width 220ms var(--ease);
}
.nav-link:hover::after,.nav-link.is-active::after{width:100%}
.nav-link.is-active{font-weight:700}
.nav-link:hover{color:var(--forest)}
/* 按钮 */
.btn-primary{
  display:inline-flex;align-items:center;justify-content:center;gap:.5rem;
  min-height:48px;padding:0 26px;border-radius:999px;
  background:var(--lime);color:var(--ink);font-weight:700;font-size:.95rem;
  transition:background 200ms var(--ease),transform 200ms var(--ease);
}
.btn-primary:hover{background:#B8E63C}
.btn-primary svg{transition:transform 200ms var(--ease)}
.btn-primary:hover svg{transform:translateX(4px)}
.btn-ghost{
  display:inline-flex;align-items:center;justify-content:center;gap:.5rem;
  min-height:48px;padding:0 26px;border-radius:999px;
  border:1px solid var(--ink);color:var(--ink);font-weight:600;font-size:.95rem;
  transition:background 200ms var(--ease),color 200ms var(--ease);
}
.btn-ghost:hover{background:var(--ink);color:var(--paper)}
.btn-ghost svg{transition:transform 200ms var(--ease)}
.btn-ghost:hover svg{transform:translateX(4px)}
.btn-mini{
  display:inline-flex;align-items:center;gap:.4rem;min-height:40px;padding:0 18px;
  border-radius:999px;border:1px solid var(--ink);font-size:.85rem;font-weight:600;
  transition:background 180ms var(--ease),color 180ms var(--ease);
}
.btn-mini:hover{background:var(--ink);color:var(--paper)}
.link-arrow{
  display:inline-flex;align-items:center;gap:.4rem;font-size:.88rem;font-weight:600;
  color:var(--forest);border-bottom:1px solid transparent;
  transition:border-color 180ms var(--ease),color 180ms var(--ease);
}
.link-arrow:hover{border-color:var(--lime)}
.link-arrow svg{transition:transform 200ms var(--ease)}
.link-arrow:hover svg{transform:translateX(4px)}
/* 卡片 */
.card{
  background:#fff;border:1px solid var(--sand);border-radius:2px;
  transition:transform 200ms var(--ease),box-shadow 200ms var(--ease);
}
.card:hover{transform:translateY(-4px);box-shadow:0 18px 40px -24px rgba(16,18,20,.35)}
.card-media{overflow:hidden;border-radius:2px}
.card-media img{transition:transform 260ms var(--ease)}
.card:hover .card-media img{transform:scale(1.03)}
.card-title{
  font-family:"Noto Serif SC",serif;font-weight:700;font-size:1.1rem;line-height:1.4;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
  transition:color 180ms var(--ease);
}
.card:hover .card-title{color:var(--forest)}
.clamp-3{
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;
}
.badge{
  display:inline-flex;align-items:center;height:24px;padding:0 10px;border-radius:999px;
  border:1px solid var(--sand);font-size:.7rem;letter-spacing:.08em;
  font-family:Inter,"Archivo",sans-serif;text-transform:uppercase;color:var(--mist);
  white-space:nowrap;
}
/* 时间线 */
.tl-wrap{position:relative;padding-left:30px}
.tl-axis{position:absolute;left:6px;top:0;bottom:0;width:1px;background:var(--sand)}
.tl-row{
  position:relative;border-top:1px solid var(--sand);
  transition:background 200ms var(--ease);
}
.tl-row:last-child{border-bottom:1px solid var(--sand)}
.tl-row:hover{background:rgba(232,226,214,.4)}
.tl-dot{
  position:absolute;left:-30px;top:26px;width:12px;height:12px;border-radius:999px;
  background:var(--paper);border:1px solid var(--mist);
  transition:background 220ms var(--ease),border-color 220ms var(--ease),transform 220ms var(--ease);
}
.tl-row.is-on .tl-dot{background:var(--lime);border-color:var(--lime);transform:scale(1.2)}
.tl-split{
  display:flex;align-items:center;gap:14px;margin-top:36px;
  font-family:Inter,"Archivo",sans-serif;font-size:.72rem;letter-spacing:.16em;
  text-transform:uppercase;color:var(--mist);
}
.tl-split::after{content:"";flex:1;height:1px;background:var(--sand)}
/* 票种 */
.ticket{display:flex;flex-direction:column;height:100%;background:#fff;border:1px solid var(--sand);border-radius:2px;padding:28px 24px}
.ticket.is-featured{
  background:var(--forest);color:var(--paper);border-color:var(--forest);
  box-shadow:0 24px 48px -32px rgba(16,18,20,.55);
}
.ticket.is-featured .ticket-muted{color:rgba(247,245,240,.7)}
.ticket.is-featured .ticket-line{border-color:rgba(247,245,240,.14)}
.price-num{font-family:Inter,"Archivo",sans-serif;font-weight:800;font-size:2.4rem;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.tick{display:flex;gap:10px;font-size:.9rem;line-height:1.6}
.tick svg{flex:none;margin-top:5px}
/* FAQ */
.faq-item{border-top:1px solid var(--sand)}
.faq-item:last-child{border-bottom:1px solid var(--sand)}
.faq-q{
  width:100%;display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:20px 0;text-align:left;font-size:1.05rem;font-weight:600;
  transition:color 180ms var(--ease);
}
.faq-q:hover{color:var(--forest)}
.faq-icon{
  flex:none;width:24px;height:24px;border-radius:999px;border:1px solid var(--sand);
  display:flex;align-items:center;justify-content:center;color:var(--mist);
  transition:border-color 180ms var(--ease),color 180ms var(--ease),transform 240ms var(--ease);
}
.faq-icon::before{content:"";width:9px;height:1px;background:currentColor}
.faq-item.is-open .faq-icon::after{
  content:"";position:absolute;width:9px;height:1px;background:currentColor;transform:rotate(90deg);
}
.faq-item.is-open .faq-icon{border-color:var(--forest);color:var(--forest);transform:rotate(180deg)}
.faq-icon{position:relative}
.faq-panel{max-height:0;overflow:hidden;transition:max-height 240ms var(--ease)}
.faq-panel-inner{padding:0 40px 18px 0;font-size:.92rem;line-height:1.85;color:var(--body)}
/* 表单 */
.field-label{display:block;font-size:.8rem;font-weight:600;margin-bottom:6px;color:var(--ink)}
.field{
  width:100%;height:44px;padding:0 12px;border:1px solid var(--sand);border-radius:2px;
  background:#fff;font-size:.92rem;
  transition:border-color 180ms var(--ease),box-shadow 180ms var(--ease);
}
textarea.field{height:auto;min-height:96px;padding:10px 12px;line-height:1.7;resize:vertical}
.field:focus{border-color:var(--forest);box-shadow:0 0 0 3px rgba(201,242,77,.35);outline:none}
.field::placeholder{color:#A9AFAB}
.field-error{border-color:#B4452E}
.err-text{display:block;margin-top:6px;font-size:.78rem;color:#B4452E}
.ticket-radio{
  position:relative;display:flex;flex-direction:column;gap:2px;cursor:pointer;
  border:1px solid var(--sand);border-radius:2px;padding:12px 14px;background:#fff;
  transition:border-color 180ms var(--ease),box-shadow 180ms var(--ease);
}
.ticket-radio:hover{border-color:var(--mist)}
.ticket-radio::after{
  content:"";position:absolute;top:0;left:0;width:0;height:0;
  border-top:14px solid transparent;border-left:14px solid transparent;
}
input[type="radio"]:checked + .ticket-radio{border-color:var(--forest);box-shadow:0 0 0 3px rgba(201,242,77,.3)}
input[type="radio"]:checked + .ticket-radio::after{border-top-color:var(--lime)}
input[type="radio"]:focus-visible + .ticket-radio{outline:2px solid var(--forest);outline-offset:2px}
/* 页脚 */
.footer-link{color:rgba(247,245,240,.72);font-size:.9rem;transition:color 160ms var(--ease)}
.footer-link:hover{color:var(--lime);text-decoration:underline;text-underline-offset:4px}
/* 入场动效 */
.reveal{opacity:0;transform:translateY(12px);transition:opacity 480ms var(--ease),transform 480ms var(--ease)}
.reveal.is-in{opacity:1;transform:none}
.reveal-delay-1{transition-delay:60ms}
.reveal-delay-2{transition-delay:120ms}
.reveal-delay-3{transition-delay:180ms}
@media (max-width:640px){
  .tl-dot{top:22px}
  .faq-panel-inner{padding-right:0}
  .price-num{font-size:2.1rem}
}
@media (prefers-reduced-motion:reduce){
  *{animation:none !important;transition:none !important;scroll-behavior:auto !important}
  .reveal{opacity:1;transform:none}
}

/* roulang page: article */
:root{
  --ink:#101214;
  --forest:#16332A;
  --lime:#C9F24D;
  --lime-deep:#B8E63C;
  --paper:#F7F5F0;
  --sand:#E8E2D6;
  --mist:#8C948F;
  --ease:cubic-bezier(.2,.7,.3,1);
  --radius-card:2px;
  --radius-pill:999px;
  --shadow-hover:0 18px 40px -24px rgba(16,18,20,.35);
  --serif:"Noto Serif SC","Source Han Serif SC",serif;
  --sans:"Noto Sans SC",system-ui,-apple-system,"Segoe UI",sans-serif;
  --num:"Inter","Archivo",sans-serif;
}

*,*::before,*::after{ box-sizing:border-box; }

html{ scroll-behavior:smooth; -webkit-text-size-adjust:100%; }

body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:var(--sans);
  font-size:16px;
  line-height:1.75;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

img{ max-width:100%; display:block; }
a{ color:inherit; text-decoration:none; }
button{ font:inherit; cursor:pointer; }
ul,ol{ margin:0; padding:0; }
h1,h2,h3,h4,p{ margin:0; }

input,select,textarea{
  font:inherit;
  color:var(--ink);
  background:var(--paper);
  border:1px solid var(--sand);
  border-radius:var(--radius-card);
  min-height:44px;
  padding:.55rem .8rem;
  width:100%;
  transition:border-color .18s var(--ease), box-shadow .18s var(--ease);
}
input:focus,select:focus,textarea:focus{
  outline:none;
  border-color:var(--forest);
  box-shadow:0 0 0 3px rgba(201,242,77,.35);
}

a:focus-visible,button:focus-visible{
  outline:2px solid var(--forest);
  outline-offset:3px;
  border-radius:2px;
}

.container-x{
  width:100%;
  max-width:1200px;
  margin:0 auto;
  padding-left:20px;
  padding-right:20px;
}
@media (min-width:768px){
  .container-x{ padding-left:32px; padding-right:32px; }
}

.num{
  font-family:var(--num);
  font-variant-numeric:tabular-nums;
  letter-spacing:.12em;
  text-transform:uppercase;
}

/* ---------- Header ---------- */
.site-header{
  position:sticky;
  top:0;
  z-index:60;
  background:rgba(247,245,240,.9);
  border-bottom:1px solid transparent;
  transition:border-color .2s var(--ease), background .2s var(--ease);
}
.site-header.is-stuck{
  border-bottom-color:var(--sand);
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
  background:rgba(247,245,240,.82);
}
.header-inner{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  height:64px;
}
@media (min-width:768px){
  .header-inner{ height:72px; }
}

.brand{ display:flex; flex-direction:column; gap:2px; min-height:44px; justify-content:center; }
.brand-mark{
  font-family:var(--num);
  font-weight:800;
  font-size:17px;
  letter-spacing:.18em;
  color:var(--ink);
  line-height:1.1;
}
.brand-sub{
  font-size:.68rem;
  color:var(--mist);
  letter-spacing:.06em;
  line-height:1.2;
}

.nav-link{
  position:relative;
  display:inline-flex;
  align-items:center;
  min-height:44px;
  padding:0 2px;
  font-size:.95rem;
  font-weight:500;
  color:var(--ink);
  transition:color .18s var(--ease);
}
.nav-link::after{
  content:"";
  position:absolute;
  left:0;
  bottom:10px;
  width:0;
  height:2px;
  background:var(--lime);
  transition:width .22s var(--ease);
}
.nav-link:hover{ color:var(--forest); }
.nav-link:hover::after{ width:100%; }
.nav-link.is-active{ color:var(--forest); font-weight:700; }
.nav-link.is-active::after{ width:100%; }

.nav-entry{
  display:inline-flex;
  align-items:center;
  min-height:44px;
  font-size:.88rem;
  font-weight:500;
  color:var(--mist);
  transition:color .18s var(--ease);
}
.nav-entry:hover{ color:var(--forest); }

.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:.5rem;
  min-height:44px;
  padding:0 1.5rem;
  border-radius:var(--radius-pill);
  border:1px solid transparent;
  font-size:.9rem;
  font-weight:700;
  line-height:1;
  white-space:nowrap;
  transition:background-color .2s var(--ease), color .2s var(--ease), border-color .2s var(--ease), transform .2s var(--ease);
}
.btn svg{ transition:transform .2s var(--ease); }
.btn:hover svg{ transform:translateX(4px); }
.btn-primary{ background:var(--lime); color:var(--ink); }
.btn-primary:hover{ background:var(--lime-deep); }
.btn-ghost{ background:transparent; color:var(--ink); border-color:var(--ink); }
.btn-ghost:hover{ background:var(--ink); color:var(--paper); }
.btn-dark{ background:var(--forest); color:var(--paper); }
.btn-dark:hover{ background:var(--ink); }
.btn-sm{ min-height:44px; padding:0 1.25rem; font-size:.84rem; }

.burger{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:44px;
  height:44px;
  border-radius:var(--radius-pill);
  border:1px solid var(--sand);
  background:transparent;
  color:var(--ink);
  transition:border-color .18s var(--ease), color .18s var(--ease);
}
.burger:hover{ border-color:var(--forest); color:var(--forest); }

.mobile-nav{
  position:fixed;
  inset:64px 0 0 0;
  z-index:55;
  background:var(--paper);
  padding:20px;
  display:flex;
  flex-direction:column;
  gap:0;
  overflow-y:auto;
}
@media (min-width:768px){
  .mobile-nav{ display:none !important; }
}
.mobile-nav a.m-link{
  display:flex;
  align-items:center;
  justify-content:space-between;
  min-height:56px;
  font-size:1.15rem;
  font-weight:600;
  color:var(--ink);
  border-bottom:1px solid var(--sand);
}
.mobile-nav a.m-link.is-active{ color:var(--forest); }
.mobile-nav .m-cta{ margin-top:24px; }

/* ---------- Breadcrumb ---------- */
.crumb{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:.5rem;
  font-size:.78rem;
  color:var(--mist);
  padding-top:24px;
}
.crumb-link{ color:var(--mist); transition:color .18s var(--ease); }
.crumb-link:hover{ color:var(--forest); }
.crumb-current{ color:var(--ink); font-weight:700; }

/* ---------- Article head ---------- */
.chip{
  display:inline-flex;
  align-items:center;
  gap:.45rem;
  padding:.35rem .9rem;
  border:1px solid var(--sand);
  border-radius:var(--radius-pill);
  background:rgba(232,226,214,.35);
  font-family:var(--num);
  font-size:.7rem;
  letter-spacing:.12em;
  text-transform:uppercase;
  color:var(--forest);
}
.chip::before{
  content:"";
  width:6px;
  height:6px;
  border-radius:50%;
  background:var(--lime);
}

.article-title{
  font-family:var(--serif);
  font-weight:900;
  font-size:clamp(1.8rem,4.2vw,2.6rem);
  line-height:1.22;
  letter-spacing:-.01em;
  color:var(--ink);
  margin-top:20px;
}

.meta-row{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:.75rem;
  margin-top:20px;
  font-size:.78rem;
  color:var(--mist);
}
.meta-sep{ width:1px; height:12px; background:var(--sand); display:inline-block; }

.rule{ height:1px; background:var(--sand); border:0; }

/* ---------- Article body ---------- */
.prose-xkty{
  margin-top:32px;
  font-size:1rem;
  line-height:1.9;
  color:#1A1D20;
  max-width:40em;
}
.prose-xkty > * + *{ margin-top:1.4em; }
.prose-xkty p{ margin:0; }
.prose-xkty h2{
  font-family:var(--serif);
  font-size:1.4rem;
  font-weight:700;
  line-height:1.45;
  letter-spacing:-.01em;
  color:var(--ink);
  margin-top:2rem;
  margin-bottom:.75rem;
}
.prose-xkty h3{
  font-family:var(--sans);
  font-size:1.15rem;
  font-weight:600;
  line-height:1.5;
  color:var(--ink);
  margin-top:1.6rem;
  margin-bottom:.6rem;
}
.prose-xkty blockquote{
  margin:1.6rem 0;
  padding:20px 24px;
  border-left:3px solid var(--lime);
  background:rgba(232,226,214,.5);
  border-radius:var(--radius-card);
  color:#20262A;
  font-style:normal;
}
.prose-xkty ul{ list-style:none; padding-left:0; }
.prose-xkty ul > li{
  position:relative;
  padding-left:1.4rem;
  line-height:1.9;
}
.prose-xkty ul > li + li{ margin-top:.4rem; }
.prose-xkty ul > li::before{
  content:"";
  position:absolute;
  left:0;
  top:.78em;
  width:6px;
  height:6px;
  background:var(--forest);
}
.prose-xkty ol{ list-style:decimal; padding-left:1.5rem; }
.prose-xkty ol > li + li{ margin-top:.4rem; }
.prose-xkty ol > li::marker{ color:var(--forest); font-weight:700; }
.prose-xkty a{
  color:var(--forest);
  text-decoration:underline;
  text-underline-offset:3px;
  transition:color .18s var(--ease);
}
.prose-xkty a:hover{ color:var(--ink); }
.prose-xkty img{
  width:100%;
  border-radius:var(--radius-card);
  border:1px solid var(--sand);
  margin:1.6rem 0 .6rem;
}
.prose-xkty figure{ margin:1.6rem 0; }
.prose-xkty figcaption{
  font-size:.78rem;
  color:var(--mist);
  text-align:center;
  margin-top:.6rem;
}
.prose-xkty table{
  width:100%;
  border-collapse:collapse;
  font-size:.92rem;
  border:1px solid var(--sand);
  margin:1.6rem 0;
}
.prose-xkty th,
.prose-xkty td{
  border:1px solid var(--sand);
  padding:.6rem .8rem;
  text-align:left;
  font-variant-numeric:tabular-nums;
}
.prose-xkty th{ background:rgba(232,226,214,.6); font-weight:600; }
.prose-xkty code{
  background:var(--sand);
  border-radius:2px;
  padding:.1em .4em;
  font-size:.9em;
}
.prose-xkty strong{ font-weight:700; color:var(--ink); }
.prose-xkty hr{ border:0; height:1px; background:var(--sand); margin:2rem 0; }

/* ---------- Tag & share ---------- */
.tag-row{
  display:flex;
  flex-wrap:wrap;
  gap:.5rem;
  margin-top:40px;
}
.tag-pill{
  display:inline-flex;
  align-items:center;
  min-height:34px;
  padding:0 .9rem;
  border:1px solid var(--sand);
  border-radius:var(--radius-pill);
  font-size:.76rem;
  color:var(--forest);
  background:transparent;
  transition:background-color .18s var(--ease), border-color .18s var(--ease);
}
.tag-pill:hover{ background:rgba(232,226,214,.6); border-color:var(--mist); }

.share-row{
  display:flex;
  align-items:center;
  gap:12px;
  margin-top:24px;
  padding-top:24px;
  border-top:1px solid var(--sand);
}
.share-label{ font-size:.78rem; color:var(--mist); }
.share-btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:48px;
  height:48px;
  border-radius:50%;
  border:1px dashed var(--sand);
  color:var(--forest);
  background:transparent;
  transition:border-color .2s var(--ease), background-color .2s var(--ease), transform .2s var(--ease);
}
.share-btn:hover{
  border-color:var(--forest);
  background:rgba(201,242,77,.25);
  transform:translateY(-2px);
}

/* ---------- Sidebar ---------- */
.side-card{
  border:1px solid var(--sand);
  border-radius:var(--radius-card);
  background:var(--paper);
  padding:22px;
}
.side-cta{
  border-radius:var(--radius-card);
  background:var(--lime);
  color:var(--ink);
  padding:24px 22px;
}
.side-cta h3{
  font-family:var(--serif);
  font-size:1.15rem;
  font-weight:800;
  line-height:1.4;
}
.side-cta p{
  margin-top:10px;
  font-size:.85rem;
  line-height:1.7;
  color:rgba(16,18,20,.72);
}
.side-list{ display:flex; flex-direction:column; }
.side-list a{
  display:flex;
  align-items:center;
  justify-content:space-between;
  min-height:44px;
  font-size:.86rem;
  color:#2A2F33;
  border-bottom:1px solid var(--sand);
  transition:color .18s var(--ease), padding-left .18s var(--ease);
}
.side-list a:last-child{ border-bottom:0; }
.side-list a:hover{ color:var(--forest); padding-left:4px; }

/* ---------- Related ---------- */
.related-card{
  display:flex;
  flex-direction:column;
  border:1px solid var(--sand);
  border-radius:var(--radius-card);
  background:var(--paper);
  overflow:hidden;
  transition:transform .22s var(--ease), box-shadow .22s var(--ease), border-color .22s var(--ease);
}
.related-card:hover{
  transform:translateY(-4px);
  box-shadow:var(--shadow-hover);
  border-color:var(--mist);
}
.related-card .thumb{
  aspect-ratio:16/9;
  width:100%;
  object-fit:cover;
  border-bottom:1px solid var(--sand);
  transition:transform .3s var(--ease);
}
.related-card:hover .thumb{ transform:scale(1.03); }
.thumb-wrap{ overflow:hidden; display:block; }
.related-title{
  font-size:1.02rem;
  font-weight:700;
  line-height:1.55;
  color:var(--ink);
  transition:color .18s var(--ease);
}
.related-card:hover .related-title{ color:var(--forest); }
.related-desc{
  margin-top:10px;
  font-size:.86rem;
  line-height:1.8;
  color:var(--mist);
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
}

/* ---------- Empty state ---------- */
.empty-box{
  border:1px solid var(--sand);
  border-radius:var(--radius-card);
  padding:56px 24px;
  text-align:center;
  background:rgba(232,226,214,.28);
}
.empty-box h2{
  font-family:var(--serif);
  font-size:1.3rem;
  font-weight:800;
  color:var(--ink);
}
.empty-box p{
  margin-top:10px;
  font-size:.9rem;
  color:var(--mist);
}

/* ---------- Footer ---------- */
.footer-link{
  font-size:.88rem;
  color:rgba(247,245,240,.68);
  text-decoration:none;
  transition:color .16s var(--ease), text-decoration-color .16s var(--ease);
  text-decoration-line:underline;
  text-decoration-color:transparent;
  text-underline-offset:4px;
}
.footer-link:hover{
  color:var(--lime);
  text-decoration-color:var(--lime);
}

/* ---------- Motion ---------- */
@media (prefers-reduced-motion: reduce){
  *{ animation:none !important; transition:none !important; scroll-behavior:auto !important; }
}

/* roulang page: category1 */
:root{
    --ink:#101214;
    --forest:#16332A;
    --lime:#C9F24D;
    --lime-deep:#B8E63C;
    --paper:#F7F5F0;
    --sand:#E8E2D6;
    --mist:#8C948F;
    --ease:cubic-bezier(.2,.7,.3,1);
    --shadow-hover:0 18px 40px -24px rgba(16,18,20,.35);
  }

  *,*::before,*::after{box-sizing:border-box;}
  html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;}
  body{
    margin:0;
    background:var(--paper);
    color:var(--ink);
    font-family:"Noto Sans SC",system-ui,-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;
    font-size:16px;
    line-height:1.75;
    -webkit-font-smoothing:antialiased;
    text-rendering:optimizeLegibility;
  }
  @media (max-width:640px){body{font-size:15px;}}
  img{display:block;max-width:100%;height:auto;}
  a{color:inherit;text-decoration:none;}
  button{font:inherit;background:none;border:0;color:inherit;cursor:pointer;}
  input,select,textarea{font:inherit;}
  h1,h2,h3,h4{
    margin:0;
    font-family:"Noto Serif SC","Source Han Serif SC","Songti SC",serif;
    font-weight:800;
    letter-spacing:-.01em;
    line-height:1.15;
  }
  p{margin:0;}
  ul,ol{margin:0;padding:0;list-style:none;}
  :focus-visible{outline:2px solid var(--forest);outline-offset:3px;border-radius:2px;}

  .container-x{width:100%;max-width:1200px;margin:0 auto;padding-left:20px;padding-right:20px;}
  @media (min-width:768px){.container-x{padding-left:32px;padding-right:32px;}}

  .num{
    font-family:"Inter","Archivo",system-ui,sans-serif;
    text-transform:uppercase;
    letter-spacing:.12em;
    font-variant-numeric:tabular-nums;
  }

  /* ---------- header ---------- */
  .site-header{
    position:sticky;
    top:0;
    z-index:60;
    background:rgba(247,245,240,.92);
    backdrop-filter:blur(8px);
    -webkit-backdrop-filter:blur(8px);
    border-bottom:1px solid transparent;
    transition:border-color .22s var(--ease),background-color .22s var(--ease);
  }
  .site-header.is-scrolled{border-bottom-color:var(--sand);}
  .logo-mark{
    font-family:"Inter","Archivo",system-ui,sans-serif;
    font-weight:800;
    letter-spacing:.18em;
    font-size:1.02rem;
    color:var(--ink);
    line-height:1;
  }
  .nav-link{
    position:relative;
    display:inline-block;
    font-size:.95rem;
    color:var(--ink);
    padding:6px 0;
    transition:color .2s var(--ease);
  }
  .nav-link::after{
    content:"";
    position:absolute;
    left:0;
    bottom:-6px;
    width:0;
    height:2px;
    background:var(--lime);
    transition:width .22s var(--ease);
  }
  .nav-link:hover::after,.nav-link.is-active::after{width:100%;}
  .nav-link.is-active{font-weight:700;}
  .nav-link:hover{color:var(--forest);}

  .drawer-link{
    display:flex;
    align-items:center;
    justify-content:space-between;
    padding:18px 0;
    font-size:1.5rem;
    font-weight:700;
    font-family:"Noto Serif SC","Source Han Serif SC",serif;
    border-bottom:1px solid var(--sand);
    transition:color .2s var(--ease);
  }
  .drawer-link:hover,.drawer-link.is-active{color:var(--forest);}
  .drawer-link.is-active::before{
    content:"";
    width:10px;height:2px;background:var(--lime);margin-right:10px;
  }

  #mobileDrawer{
    position:fixed;
    left:0;right:0;
    top:64px;bottom:0;
    z-index:55;
    background:var(--paper);
    transform:translateX(100%);
    transition:transform .28s var(--ease);
    overflow-y:auto;
    padding:16px 20px 32px;
    display:flex;
    flex-direction:column;
  }
  #mobileDrawer.is-open{transform:translateX(0);}
  body.drawer-open{overflow:hidden;}
  @media (min-width:768px){#mobileDrawer{display:none;}}

  /* ---------- buttons ---------- */
  .btn{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:8px;
    height:48px;
    min-height:44px;
    padding:0 24px;
    border-radius:999px;
    border:1px solid transparent;
    font-size:.95rem;
    font-weight:600;
    white-space:nowrap;
    transition:background-color .22s var(--ease),color .22s var(--ease),border-color .22s var(--ease),transform .22s var(--ease),box-shadow .22s var(--ease);
  }
  .btn-primary{background:var(--lime);color:var(--ink);}
  .btn-primary:hover{background:var(--lime-deep);transform:translateY(-1px);box-shadow:var(--shadow-hover);}
  .btn-primary:active{transform:translateY(0);}
  .btn-ghost{border-color:var(--ink);color:var(--ink);}
  .btn-ghost:hover{background:var(--ink);color:var(--paper);}
  .btn-light{border-color:rgba(247,245,240,.45);color:var(--paper);}
  .btn-light:hover{background:var(--paper);color:var(--ink);border-color:var(--paper);}
  .btn-sm{height:44px;padding:0 20px;font-size:.9rem;}
  .btn-block{width:100%;}
  .btn-arrow{transition:transform .22s var(--ease);flex:none;}
  .btn:hover .btn-arrow{transform:translateX(4px);}
  .btn[aria-disabled="true"]{background:var(--sand);color:var(--mist);border-color:transparent;cursor:not-allowed;}

  /* ---------- sections ---------- */
  .section-h2{font-size:clamp(1.55rem,2.6vw,2.05rem);line-height:1.3;}
  .h3-sm{font-size:1.05rem;font-weight:700;line-height:1.45;}
  .point{
    position:relative;
    padding-left:20px;
    font-size:.93rem;
    line-height:1.8;
    color:#2A302D;
  }
  .point::before{
    content:"";
    position:absolute;
    left:0;top:.78em;
    width:10px;height:2px;
    background:var(--lime);
  }
  .badge{
    display:inline-flex;
    align-items:center;
    flex:none;
    padding:4px 12px;
    border:1px solid var(--sand);
    border-radius:999px;
    font-family:"Inter","Archivo",sans-serif;
    font-size:.7rem;
    letter-spacing:.12em;
    text-transform:uppercase;
    color:var(--mist);
    white-space:nowrap;
  }
  .badge-solid{
    background:var(--lime);
    border-color:var(--lime);
    color:var(--ink);
    font-weight:700;
  }

  .media-frame{
    position:relative;
    overflow:hidden;
    border-radius:2px;
    border:1px solid var(--sand);
    background:#EDEAE2;
  }
  .media-frame img{width:100%;height:100%;object-fit:cover;transition:transform .24s var(--ease);}
  .media-frame:hover img{transform:scale(1.03);}

  .hero-grid-bg{
    background-image:linear-gradient(rgba(16,18,20,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(16,18,20,.05) 1px,transparent 1px);
    background-size:64px 64px;
  }
  .page-h1{font-size:clamp(2rem,4.5vw,2.9rem);letter-spacing:-.015em;}

  .stat-value{
    font-family:"Inter","Archivo",sans-serif;
    font-size:clamp(1.7rem,3vw,2.2rem);
    font-weight:800;
    line-height:1;
    font-variant-numeric:tabular-nums;
  }
  .stat-unit{font-size:.8rem;margin-left:5px;font-family:"Noto Sans SC",sans-serif;font-weight:400;letter-spacing:0;}

  .ticker{
    display:flex;
    flex-wrap:wrap;
    align-items:center;
    gap:10px 16px;
    border-top:1px solid var(--sand);
    padding-top:16px;
    font-size:.85rem;
    color:var(--mist);
  }
  .ticker .num{color:var(--ink);font-size:.72rem;}
  .ticker .sep{width:1px;height:12px;background:var(--sand);display:inline-block;}

  /* ---------- steps ---------- */
  .steps{position:relative;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:0;}
  .steps::before{
    content:"";
    position:absolute;
    top:5px;left:0;right:0;
    height:1px;
    background:var(--sand);
  }
  .step{position:relative;padding:32px 24px 0 0;}
  .step-dot{
    position:absolute;
    top:0;left:0;
    width:12px;height:12px;
    border-radius:50%;
    background:var(--paper);
    border:1px solid var(--sand);
    transition:background-color .22s var(--ease),border-color .22s var(--ease),transform .22s var(--ease);
  }
  .step:hover .step-dot{background:var(--lime);border-color:var(--lime);transform:scale(1.2);}
  .step-num{
    font-family:"Inter","Archivo",sans-serif;
    font-size:1.85rem;
    font-weight:800;
    line-height:1;
    letter-spacing:.04em;
    color:#D5CDBC;
    transition:color .22s var(--ease);
  }
  .step:hover .step-num{color:var(--forest);}
  @media (max-width:767px){
    .steps{grid-template-columns:1fr;}
    .steps::before{top:0;bottom:0;left:5px;right:auto;width:1px;height:auto;}
    .step{padding:0 0 28px 32px;}
    .step-dot{top:6px;}
    .step:last-child{padding-bottom:0;}
  }

  /* ---------- list rows ---------- */
  .list-row{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:20px;
    padding:22px 16px;
    border-top:1px solid var(--sand);
    transition:background-color .2s var(--ease);
  }
  .list-row:last-child{border-bottom:1px solid var(--sand);}
  .list-row:hover{background:rgba(232,226,214,.4);}
  @media (max-width:640px){
    .list-row{flex-direction:column;align-items:flex-start;gap:10px;}
  }

  /* ---------- faq ---------- */
  .faq-item{border-top:1px solid var(--sand);}
  .faq-item:last-child{border-bottom:1px solid var(--sand);}
  .faq-q{
    width:100%;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:16px;
    padding:20px 0;
    text-align:left;
    font-size:1.05rem;
    font-weight:600;
    transition:color .2s var(--ease);
  }
  .faq-q:hover{color:var(--forest);}
  .faq-icon{
    flex:none;
    width:24px;height:24px;
    border-radius:50%;
    border:1px solid var(--sand);
    display:flex;align-items:center;justify-content:center;
    font-family:"Inter",sans-serif;
    font-size:.9rem;
    line-height:1;
    color:var(--ink);
    transition:background-color .22s var(--ease),border-color .22s var(--ease);
  }
  .faq-item.is-open .faq-icon{background:var(--lime);border-color:var(--lime);}
  .faq-a{max-height:0;overflow:hidden;transition:max-height .24s var(--ease);}
  .faq-a-inner{padding:0 8px 18px 0;font-size:.92rem;line-height:1.85;color:#3A403D;}

  /* ---------- footer ---------- */
  .footer-link{
    font-size:.9rem;
    color:rgba(247,245,240,.62);
    transition:color .16s var(--ease);
  }
  .footer-link:hover{
    color:var(--lime);
    text-decoration:underline;
    text-underline-offset:4px;
  }

  /* ---------- reveal ---------- */
  .reveal{opacity:0;transform:translateY(12px);transition:opacity .55s var(--ease),transform .55s var(--ease);}
  .reveal.is-in{opacity:1;transform:none;}

  @media (prefers-reduced-motion:reduce){
    *,*::before,*::after{animation-duration:.001ms !important;transition-duration:.001ms !important;}
    html{scroll-behavior:auto;}
    .reveal{opacity:1;transform:none;}
  }

/* roulang page: category2 */
:root{
    --ink:#101214;
    --forest:#16332A;
    --lime:#C9F24D;
    --lime-deep:#B8E63C;
    --paper:#F7F5F0;
    --sand:#E8E2D6;
    --mist:#8C948F;
    --danger:#B4452E;
    --radius-card:2px;
    --radius-pill:999px;
    --ease:cubic-bezier(.2,.7,.3,1);
    --shadow-hover:0 18px 40px -24px rgba(16,18,20,.35);
    --line:1px solid var(--sand);
    --line-invert:1px solid rgba(247,245,240,.14);
    --header-h:64px;
  }
  *,*::before,*::after{box-sizing:border-box}
  html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
  body{
    margin:0;
    background:var(--paper);
    color:var(--ink);
    font-family:"Noto Sans SC",system-ui,-apple-system,"Segoe UI",sans-serif;
    font-size:16px;
    line-height:1.75;
    -webkit-font-smoothing:antialiased;
  }
  img{display:block;max-width:100%;height:auto}
  a{color:inherit;text-decoration:none}
  button,input,select,textarea{font:inherit;color:inherit}
  h1,h2,h3,h4{font-family:"Noto Serif SC","Source Han Serif SC",serif;font-weight:800;line-height:1.15;letter-spacing:-.01em;margin:0}
  p{margin:0}
  ul{margin:0;padding:0;list-style:none}
  :focus-visible{outline:2px solid var(--forest);outline-offset:2px;border-radius:2px}
  .shell{max-width:1200px;margin:0 auto;padding-left:20px;padding-right:20px}
  @media (min-width:768px){.shell{padding-left:32px;padding-right:32px}}
  .num{font-family:"Inter","Archivo",sans-serif;text-transform:uppercase;letter-spacing:.12em;font-variant-numeric:tabular-nums}
  .lead{color:var(--mist);font-size:.95rem;line-height:1.8}
  .eyebrow{font-size:.72rem;letter-spacing:.16em;color:var(--mist);text-transform:uppercase}

  /* ============ 顶部导航 ============ */
  .site-header{
    position:sticky;top:0;z-index:60;
    background:rgba(247,245,240,.94);
    border-bottom:1px solid transparent;
    transition:border-color 200ms var(--ease), background 200ms var(--ease);
  }
  .site-header.is-stuck{
    border-bottom-color:var(--sand);
    backdrop-filter:blur(8px);
    -webkit-backdrop-filter:blur(8px);
  }
  .brand{display:inline-flex;flex-direction:column;gap:2px;line-height:1.1}
  .brand-mark{font-family:"Noto Sans SC",sans-serif;font-weight:800;font-size:18px;letter-spacing:.18em;color:var(--ink)}
  .brand-sub{font-size:.66rem;letter-spacing:.08em;color:var(--mist)}
  .nav-link{
    position:relative;display:inline-flex;align-items:center;height:44px;
    font-size:.95rem;font-weight:500;color:rgba(16,18,20,.72);
    transition:color 180ms var(--ease);
  }
  .nav-link::after{
    content:"";position:absolute;left:0;right:0;bottom:6px;height:2px;
    background:var(--lime);transform:scaleX(0);transform-origin:left center;
    transition:transform 200ms var(--ease);
  }
  .nav-link:hover{color:var(--ink)}
  .nav-link:hover::after,.nav-link.is-active::after{transform:scaleX(1)}
  .nav-link.is-active{color:var(--ink);font-weight:600}
  .nav-ghost{
    display:inline-flex;align-items:center;height:44px;padding:0 .25rem;
    font-size:.9rem;color:rgba(16,18,20,.7);
    border-bottom:1px solid transparent;transition:color 180ms var(--ease),border-color 180ms var(--ease);
  }
  .nav-ghost:hover{color:var(--ink);border-bottom-color:var(--ink)}
  .menu-toggle{
    display:inline-flex;align-items:center;justify-content:center;
    width:44px;height:44px;border:var(--line);border-radius:var(--radius-pill);
    background:transparent;cursor:pointer;transition:border-color 180ms var(--ease),background 180ms var(--ease);
  }
  .menu-toggle:hover{border-color:var(--forest);background:rgba(232,226,214,.5)}
  .drawer{
    position:fixed;inset:var(--header-h) 0 0 0;z-index:55;
    background:var(--paper);padding:8px 20px 24px;
    display:none;flex-direction:column;
    overflow-y:auto;
  }
  .drawer.is-open{display:flex}
  .drawer a.drawer-link{
    display:flex;align-items:center;justify-content:space-between;
    min-height:56px;font-size:1.2rem;font-weight:600;font-family:"Noto Serif SC",serif;
    border-bottom:1px solid var(--sand);
  }
  .drawer a.drawer-link span.tag{font-family:"Inter",sans-serif;font-size:.68rem;letter-spacing:.12em;color:var(--mist);text-transform:uppercase}

  /* ============ 按钮 ============ */
  .btn{
    display:inline-flex;align-items:center;justify-content:center;gap:.55rem;
    min-height:44px;padding:0 1.5rem;border-radius:var(--radius-pill);
    font-size:.92rem;font-weight:600;letter-spacing:.01em;
    border:1px solid transparent;cursor:pointer;
    transition:background-color 200ms var(--ease),color 200ms var(--ease),border-color 200ms var(--ease),transform 200ms var(--ease);
  }
  .btn .arrow{transition:transform 200ms var(--ease)}
  .btn:hover .arrow{transform:translateX(4px)}
  .btn-lime{background:var(--lime);color:var(--ink)}
  .btn-lime:hover{background:var(--lime-deep)}
  .btn-lime:active{background:var(--ink);color:var(--lime)}
  .btn-outline-dark{background:transparent;color:var(--ink);border-color:var(--sand)}
  .btn-outline-dark:hover{border-color:var(--forest);background:rgba(232,226,214,.55)}
  .btn-outline-light{background:transparent;color:var(--paper);border-color:rgba(247,245,240,.34)}
  .btn-outline-light:hover{border-color:var(--lime);color:var(--lime)}
  .btn-sm{min-height:40px;padding:0 1.1rem;font-size:.85rem}
  .btn[aria-disabled="true"]{background:var(--mist);color:var(--paper);cursor:not-allowed}
  .btn[aria-disabled="true"]:hover{background:var(--mist);transform:none}

  .badge{
    display:inline-flex;align-items:center;gap:.35rem;
    padding:.22rem .7rem;border:1px solid var(--sand);border-radius:var(--radius-pill);
    font-family:"Inter",sans-serif;font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ink);
  }
  .badge-lime{background:var(--lime);border-color:var(--lime);font-weight:700}
  .badge-invert{border-color:rgba(247,245,240,.28);color:rgba(247,245,240,.8)}

  /* ============ 首屏 ============ */
  .case-hero{
    position:relative;
    background-image:url('/assets/images/backpic/back-1.webp');
    background-size:cover;background-position:center;
    color:var(--paper);
  }
  .case-hero::before{
    content:"";position:absolute;inset:0;
    background:linear-gradient(102deg,rgba(16,18,20,.93) 0%,rgba(22,51,42,.88) 52%,rgba(22,51,42,.58) 100%);
  }
  .case-hero > .shell{position:relative;z-index:1}
  .crumb{font-size:.78rem;color:rgba(247,245,240,.62)}
  .crumb a:hover{color:var(--lime)}
  .crumb .sep{margin:0 .45rem;color:rgba(247,245,240,.35)}
  .crumb .current{color:var(--paper);font-weight:600}
  .hero-title{font-size:clamp(2.1rem,5.4vw,3.6rem);font-weight:900;color:var(--paper)}

  /* ============ 筛选条 ============ */
  .filter-bar{border-bottom:var(--line);background:var(--paper)}
  .filter-scroll{display:flex;gap:.6rem;overflow-x:auto;padding:18px 0;scrollbar-width:none}
  .filter-scroll::-webkit-scrollbar{display:none}
  .chip{
    flex:0 0 auto;display:inline-flex;align-items:center;min-height:44px;padding:0 1.15rem;
    border:var(--line);border-radius:var(--radius-pill);background:transparent;
    font-size:.85rem;font-weight:500;color:rgba(16,18,20,.75);cursor:pointer;
    transition:background-color 180ms var(--ease),border-color 180ms var(--ease),color 180ms var(--ease);
  }
  .chip:hover{border-color:var(--forest);color:var(--ink)}
  .chip.is-on{background:var(--lime);border-color:var(--lime);color:var(--ink);font-weight:700}

  /* ============ 案例卡 ============ */
  .case-card{
    display:block;position:relative;border-radius:var(--radius-card);
    border:1px solid var(--sand);overflow:hidden;background:var(--ink);
    transition:transform 220ms var(--ease),box-shadow 220ms var(--ease),border-color 220ms var(--ease);
  }
  .case-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-hover);border-color:var(--forest)}
  .case-media{position:relative;aspect-ratio:16/9;overflow:hidden}
  .case-media img{width:100%;height:100%;object-fit:cover;transition:transform 420ms var(--ease)}
  .case-card:hover .case-media img{transform:scale(1.03)}
  .case-mask{
    position:absolute;inset:0;
    background:linear-gradient(to top,rgba(16,18,20,.9) 0%,rgba(16,18,20,.44) 46%,rgba(16,18,20,.04) 100%);
  }
  .case-body{position:absolute;left:0;right:0;bottom:0;padding:1.1rem 1.25rem 1.15rem;color:var(--paper)}
  .case-title{font-size:clamp(1.05rem,2vw,1.3rem);font-weight:800;color:var(--paper)}
  .case-meta{margin-top:.5rem;font-size:.8rem;color:rgba(247,245,240,.72);display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}
  .case-meta .dot{width:3px;height:3px;border-radius:50%;background:rgba(247,245,240,.45)}
  .case-facts{
    display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.75rem;
  }
  .case-facts span{
    font-family:"Inter",sans-serif;font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;
    border:1px solid rgba(247,245,240,.26);border-radius:var(--radius-pill);padding:.16rem .6rem;color:rgba(247,245,240,.82);
  }

  /* ============ 数据条 ============ */
  .stat-cell{padding:1.5rem 0;border-top:var(--line)}
  .stat-num{font-family:"Inter",sans-serif;font-weight:800;font-size:clamp(1.9rem,4vw,2.6rem);letter-spacing:-.02em;line-height:1;font-variant-numeric:tabular-nums}
  .stat-label{margin-top:.55rem;font-size:.8rem;color:var(--mist)}

  /* ============ 下载列表 ============ */
  .dl-row{
    display:flex;align-items:center;gap:1rem;
    padding:1.05rem .35rem;border-top:var(--line);
    transition:background-color 180ms var(--ease);
  }
  .dl-row:last-child{border-bottom:var(--line)}
  .dl-row:hover{background:rgba(232,226,214,.42)}
  .dl-name{font-size:1rem;font-weight:600;transition:color 180ms var(--ease)}
  .dl-row:hover .dl-name{color:var(--forest)}
  .dl-size{font-size:.75rem;color:var(--mist);font-family:"Inter",sans-serif;font-variant-numeric:tabular-nums}

  /* ============ FAQ ============ */
  .faq-item{border-top:var(--line)}
  .faq-item:last-child{border-bottom:var(--line)}
  .faq-q{
    width:100%;display:flex;align-items:center;justify-content:space-between;gap:1rem;
    padding:1.15rem 0;background:none;border:0;text-align:left;cursor:pointer;
    font-family:"Noto Sans SC",sans-serif;font-size:1.03rem;font-weight:600;min-height:52px;
    transition:color 180ms var(--ease);
  }
  .faq-q:hover{color:var(--forest)}
  .faq-icon{
    flex:0 0 auto;width:26px;height:26px;border:1px solid var(--sand);border-radius:50%;
    display:flex;align-items:center;justify-content:center;position:relative;
    transition:border-color 200ms var(--ease),background-color 200ms var(--ease),transform 200ms var(--ease);
  }
  .faq-icon::before,.faq-icon::after{content:"";position:absolute;background:var(--ink);transition:opacity 200ms var(--ease),transform 200ms var(--ease)}
  .faq-icon::before{width:11px;height:1.5px}
  .faq-icon::after{width:1.5px;height:11px}
  .faq-item.is-open .faq-icon{background:var(--lime);border-color:var(--lime)}
  .faq-item.is-open .faq-icon::after{transform:scaleY(0);opacity:0}
  .faq-a{max-height:0;overflow:hidden;transition:max-height 240ms var(--ease)}
  .faq-a p{padding:0 2.5rem 1.1rem 0;font-size:.92rem;line-height:1.85;color:rgba(16,18,20,.78)}

  /* ============ 紧凑 CTA ============ */
  .cta-bar{background:var(--forest);color:var(--paper)}
  .cta-bar .shell{display:flex;flex-direction:column;gap:1rem;padding-top:2rem;padding-bottom:2rem}
  @media (min-width:768px){
    .cta-bar .shell{flex-direction:row;align-items:center;justify-content:space-between;gap:2rem}
  }
  .cta-title{font-size:clamp(1.15rem,2.4vw,1.5rem);font-weight:800;color:var(--paper)}
  .cta-note{margin-top:.4rem;font-size:.85rem;color:rgba(247,245,240,.68)}

  /* ============ 页脚 ============ */
  .footer-link{font-size:.9rem;color:rgba(247,245,240,.6);transition:color 160ms var(--ease)}
  .footer-link:hover{color:var(--lime);text-decoration:underline;text-underline-offset:4px}
  .foot-icon{
    display:flex;align-items:center;justify-content:center;width:40px;height:40px;
    border:1px solid rgba(247,245,240,.2);border-radius:50%;color:rgba(247,245,240,.7);
    transition:border-color 180ms var(--ease),color 180ms var(--ease);
  }
  .foot-icon:hover{border-color:var(--lime);color:var(--lime)}
  .foot-bottom{border-top:var(--line-invert)}

  @media (prefers-reduced-motion:reduce){
    *{transition:none!important;animation:none!important;scroll-behavior:auto!important}
  }
