/* roulang page: index */
:root{
  --bg-0:#0A0A0E; --bg-1:#121219; --bg-2:#1A1A23;
  --line:rgba(255,255,255,.08); --line-strong:rgba(255,255,255,.16);
  --brand:#FF3D6E; --brand-700:#D9204F; --brand-glow:rgba(255,61,110,.35);
  --accent:#2EE6D6; --accent-glow:rgba(46,230,214,.28);
  --lime:#D8FF4D;
  --ink:#F2F3F7; --ink-2:#A6AABB; --ink-3:#6C7086;
  --paper:#F4F1EA; --paper-ink:#14141A; --paper-ink-2:#55565F;
  --r-card:16px; --r-img:12px; --r-input:10px; --r-badge:6px;
  --shadow-1:0 8px 24px rgba(0,0,0,.35);
  --shadow-2:0 14px 36px rgba(0,0,0,.5);
  --ease:cubic-bezier(.2,.7,.3,1);
  --sec-pad:56px;
}
@media (min-width:640px){ :root{ --sec-pad:80px; } }
@media (min-width:1024px){ :root{ --sec-pad:112px; } }

*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{
  margin:0;
  background:var(--bg-0);
  color:var(--ink);
  font-family:'PingFang SC','HarmonyOS Sans SC','Microsoft YaHei','Noto Sans SC',system-ui,sans-serif;
  font-size:16px; line-height:1.9;
  padding-bottom:calc(88px + env(safe-area-inset-bottom));
  overflow-x:hidden;
}
@media (min-width:1024px){ body{ padding-bottom:0; } }
img{max-width:100%;display:block;border-radius:var(--r-img)}
a{color:inherit;text-decoration:none}
button,input,textarea{font-family:inherit;font-size:inherit}
h1,h2,h3,h4{margin:0;letter-spacing:-0.01em;line-height:1.3}
p{margin:0}
ul{margin:0;padding:0;list-style:none}
:focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-radius:4px}
::selection{background:rgba(255,61,110,.35);color:#fff}

::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-track{background:var(--bg-1)}
::-webkit-scrollbar-thumb{background:#2A2A36;border-radius:8px;border:2px solid var(--bg-1)}
::-webkit-scrollbar-thumb:hover{background:#3A3A48}

.container{width:100%;max-width:1200px;margin:0 auto;padding-left:20px;padding-right:20px}
@media (min-width:640px){ .container{padding-left:32px;padding-right:32px} }
@media (min-width:1024px){ .container{padding-left:40px;padding-right:40px} }

section[id],div[id]{scroll-margin-top:88px}

.h1{font-size:clamp(28px,5vw,44px);font-weight:800;line-height:1.25}
.h2{font-size:clamp(22px,3.4vw,32px);font-weight:700;line-height:1.3}
.h3{font-size:19px;font-weight:700;line-height:1.45}
.lead{font-size:17px;line-height:1.9;color:var(--ink-2)}
.tiny{font-size:13px;line-height:1.7;color:var(--ink-3)}
.mono{font-family:'Inter',ui-monospace,SFMono-Regular,Menlo,monospace;font-variant-numeric:tabular-nums}
.label-en{font-family:'Inter',ui-monospace,monospace;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--accent)}

.clamp-1{display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}
.clamp-2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.clamp-3{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}

.rule-neon{height:1px;width:100%;background:linear-gradient(90deg,var(--brand),var(--accent) 55%,transparent)}
.rule-soft{height:1px;width:100%;background:var(--line)}

.tex-stripes{background-image:repeating-linear-gradient(135deg,rgba(255,255,255,.08) 0 1px,transparent 1px 12px)}

/* header */
.site-header{position:sticky;top:0;z-index:60;height:60px;background:rgba(10,10,14,.86);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--line);transition:border-color 220ms var(--ease)}
@media (min-width:1024px){ .site-header{height:68px} }
.site-header.is-scrolled{border-bottom-color:transparent;background-image:linear-gradient(90deg,rgba(255,61,110,.55),rgba(255,61,110,0) 70%);background-repeat:no-repeat;background-position:bottom left;background-size:100% 1px}
.header-inner{display:flex;align-items:center;justify-content:space-between;height:100%;gap:20px}
.logo{display:inline-flex;align-items:center;gap:9px;font-weight:800;font-size:16px;color:var(--ink);white-space:nowrap}
@media (min-width:1024px){ .logo{font-size:17px} }
.logo-mark{width:26px;height:26px;flex:0 0 26px;border-radius:8px;border:1px solid rgba(255,61,110,.5);display:flex;align-items:center;justify-content:center;color:var(--brand);background:rgba(255,61,110,.08)}
.nav-main{display:none}
@media (min-width:1024px){ .nav-main{display:flex;align-items:center;gap:4px} }
.nav-link{position:relative;display:inline-flex;align-items:center;height:68px;padding:0 11px;font-size:14.5px;color:var(--ink-2);transition:color 180ms var(--ease)}
.nav-link::after{content:'';position:absolute;left:20%;right:20%;bottom:17px;height:2px;border-radius:2px;background:var(--brand);opacity:0;transition:opacity 180ms var(--ease)}
.nav-link.is-active{color:var(--brand);text-shadow:0 0 12px var(--brand-glow)}
.nav-link.is-active::after{opacity:1}
.header-cta{display:none}
@media (min-width:1024px){ .header-cta{display:inline-flex} }
.burger{display:inline-flex;flex-direction:column;justify-content:center;gap:5px;width:44px;height:44px;padding:0 10px;background:none;border:0;cursor:pointer}
@media (min-width:1024px){ .burger{display:none} }
.burger span{display:block;height:2px;width:100%;background:var(--ink);border-radius:2px;transition:transform 200ms var(--ease),opacity 200ms var(--ease)}
.burger.is-open span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.burger.is-open span:nth-child(2){opacity:0}
.burger.is-open span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
.drawer{position:fixed;inset:60px 0 0 0;z-index:55;background:rgba(10,10,14,.98);display:none;flex-direction:column;overflow-y:auto}
.drawer.is-open{display:flex}
.drawer-group{padding:12px 20px 0;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}
.drawer a.drawer-link{display:flex;align-items:center;justify-content:space-between;height:56px;padding:0 20px;border-bottom:1px solid var(--line);font-size:16px;color:var(--ink)}
.drawer-foot{margin-top:auto;padding:16px 20px calc(16px + env(safe-area-inset-bottom));border-top:1px solid var(--line)}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 22px;border-radius:999px;font-size:15px;font-weight:700;border:1px solid transparent;cursor:pointer;transition:filter 180ms var(--ease),transform 180ms var(--ease),border-color 180ms var(--ease),background-color 180ms var(--ease),box-shadow 180ms var(--ease)}
.btn-primary{background:var(--brand);color:#fff;box-shadow:0 6px 20px rgba(255,61,110,.28)}
.btn-outline{background:transparent;border-color:var(--line-strong);color:var(--ink)}
.btn-outline:hover{border-color:var(--brand)}
.btn-sm{min-height:38px;padding:0 16px;font-size:14px}
.btn-block{width:100%}
.link-arrow{display:inline-flex;align-items:center;gap:6px;color:var(--accent);font-weight:600;font-size:15px;transition:gap 180ms var(--ease)}
.link-arrow svg{transition:transform 180ms var(--ease)}
.link-arrow:hover svg{transform:translateX(4px)}

/* badges */
.badge{display:inline-flex;align-items:center;height:23px;padding:0 10px;border-radius:var(--r-badge);font-size:12px;font-weight:700;letter-spacing:.02em;background:rgba(255,61,110,.12);color:#FF7A9B;white-space:nowrap}
.badge-accent{background:rgba(46,230,214,.12);color:var(--accent)}
.badge-lime{background:rgba(216,255,77,.14);color:var(--lime)}

/* cards */
.card{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-card);padding:20px;box-shadow:var(--shadow-1);transition:transform 180ms var(--ease),border-color 180ms var(--ease),box-shadow 180ms var(--ease)}
.thumb{border-radius:var(--r-img);overflow:hidden;border:1px solid var(--line);background:var(--bg-1)}
.thumb img{width:100%;height:100%;object-fit:cover;border-radius:0}
.img-fallback{display:flex;align-items:center;justify-content:center;background-color:var(--bg-1);background-image:repeating-linear-gradient(135deg,rgba(46,230,214,.08) 0 1px,transparent 1px 10px);color:var(--accent)}

/* hero */
.hero{position:relative;overflow:hidden;padding-top:56px;padding-bottom:56px}
@media (min-width:640px){ .hero{padding-top:72px;padding-bottom:72px} }
@media (min-width:1024px){ .hero{min-height:88vh;padding-top:88px;padding-bottom:88px;display:flex;align-items:center} }
.hero-bg{position:absolute;inset:0;background-image:url('/assets/images/backpic/back-1.webp');background-size:cover;background-position:center}
.hero-bg::after{content:'';position:absolute;inset:0;background:rgba(10,10,14,.78)}
.hero-tex{position:absolute;inset:0;background-image:repeating-linear-gradient(135deg,rgba(255,255,255,.08) 0 1px,transparent 1px 14px);opacity:.5}
.hero-inner{position:relative;z-index:2}
.hero-visual{position:relative;z-index:1}
.hero-visual::after{content:'';position:absolute;inset:0;transform:translate(12px,12px);border:1px solid rgba(255,61,110,.38);border-radius:16px;z-index:-1}
.hero-visual img{aspect-ratio:16/10;width:100%;object-fit:cover;border-radius:16px;border:1px solid rgba(255,61,110,.45)}
.stat-num{font-family:'Inter',ui-monospace,monospace;font-size:24px;font-weight:700;color:var(--ink);line-height:1.2;display:block}
.stat-label{font-size:13px;color:var(--ink-3);line-height:1.6;display:block;margin-top:2px}
.stat-cell{border-left:1px solid var(--line);padding-left:16px}
.stat-cell:first-child{border-left:0;padding-left:0}

/* value grid */
.value-card{position:relative;display:flex;flex-direction:column;justify-content:space-between;gap:14px}
.value-num{font-family:'Inter',ui-monospace,monospace;font-size:13px;font-weight:700;color:var(--lime);letter-spacing:.08em}
.value-img{margin-top:auto;border-radius:var(--r-img);overflow:hidden;border:1px solid var(--line);aspect-ratio:16/7}
.value-img img{width:100%;height:100%;object-fit:cover;border-radius:0}
.value-strip{display:flex;align-items:center;gap:14px;min-height:88px;padding:16px 20px;background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-card);box-shadow:var(--shadow-1);transition:transform 180ms var(--ease),border-color 180ms var(--ease)}

/* demo steps */
.step-item{position:relative;display:flex;gap:16px;padding:18px 0 18px 16px;border-bottom:1px solid var(--line)}
.step-item:last-child{border-bottom:0}
.step-item.is-current::before{content:'';position:absolute;left:0;top:14px;bottom:14px;width:3px;border-radius:3px;background:var(--brand)}
.step-num{font-family:'Inter',ui-monospace,monospace;font-size:15px;font-weight:700;color:var(--accent);flex:0 0 34px;line-height:1.6}

/* proof (paper) */
.proof{background:var(--paper);color:var(--paper-ink);border-top:1px solid #14141A;border-bottom:1px solid #14141A}
.proof .paper-num{font-family:'Inter',ui-monospace,monospace;font-size:clamp(30px,4vw,42px);font-weight:800;line-height:1.1;color:var(--paper-ink)}
.proof .paper-label{font-size:14px;color:var(--paper-ink-2);line-height:1.8;margin-top:6px;display:block}
.proof .card-light{background:#fff;border:1px solid #E4DFD4;border-radius:14px;padding:20px}
.proof .badge-paper{background:#fff;border:1px solid #E4DFD4;color:#0E7C7B}

/* price */
.price-card{position:relative;background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-card);padding:24px;display:flex;flex-direction:column;gap:16px;box-shadow:var(--shadow-1);transition:transform 180ms var(--ease),border-color 180ms var(--ease),box-shadow 180ms var(--ease)}
.price-card.is-featured{border-color:rgba(255,61,110,.6);box-shadow:0 14px 36px rgba(0,0,0,.5)}
.price-card.is-featured::before{content:'';position:absolute;left:0;right:0;top:-1px;height:4px;border-radius:16px 16px 0 0;background:linear-gradient(90deg,var(--brand),var(--accent))}
.price-num{font-family:'Inter',ui-monospace,monospace;font-size:clamp(32px,4vw,40px);font-weight:800;color:var(--brand);line-height:1.1}
.feature-item{display:flex;gap:10px;align-items:flex-start;font-size:14.5px;color:var(--ink-2);line-height:1.75;padding:7px 0}
.dot{flex:0 0 8px;width:8px;height:8px;border-radius:50%;margin-top:8px;background:var(--brand)}
.dot-accent{background:var(--accent)}

/* news */
.news-card{display:block;background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-card);overflow:hidden;box-shadow:var(--shadow-1);transition:transform 180ms var(--ease),border-color 180ms var(--ease),box-shadow 180ms var(--ease)}
.news-card .news-body{padding:18px 20px 20px}
.news-card .news-thumb{aspect-ratio:16/9;overflow:hidden;border-bottom:1px solid var(--line)}
.news-card .news-thumb img{width:100%;height:100%;object-fit:cover;border-radius:0}
.news-row{display:flex;align-items:center;gap:16px;min-height:96px;padding:12px 0;border-bottom:1px solid var(--line);transition:background 180ms var(--ease)}
.news-row:last-child{border-bottom:0}
.news-row .row-thumb{flex:0 0 96px;width:96px;height:64px;border-radius:8px;overflow:hidden;border:1px solid var(--line);background:var(--bg-1)}
.news-row .row-thumb img{width:100%;height:100%;object-fit:cover;border-radius:0}
.news-meta{display:flex;align-items:center;gap:12px;margin-top:10px;font-family:'Inter',ui-monospace,monospace;font-size:13px;color:var(--ink-3)}
.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;min-height:240px;text-align:center;border:1px dashed var(--line-strong);border-radius:var(--r-card);background:var(--bg-1);padding:32px 20px}
.empty-state svg{color:var(--accent)}

/* faq */
.faq-wrap{max-width:880px;margin:0 auto}
.faq-item{background:var(--bg-2);border:1px solid var(--line);border-radius:14px;margin-bottom:12px;overflow:hidden;transition:background 180ms var(--ease),border-color 180ms var(--ease)}
.faq-q{width:100%;min-height:64px;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 20px;background:none;border:0;color:var(--ink);font-size:17px;font-weight:700;text-align:left;cursor:pointer;line-height:1.5}
.faq-icon{position:relative;width:16px;height:16px;flex:0 0 16px}
.faq-icon::before,.faq-icon::after{content:'';position:absolute;background:var(--brand);border-radius:2px;transition:transform 200ms var(--ease)}
.faq-icon::before{left:0;top:7px;width:16px;height:2px}
.faq-icon::after{left:7px;top:0;width:2px;height:16px}
.faq-item.is-open{background:#1F1F29;border-color:rgba(255,61,110,.4);box-shadow:inset 3px 0 0 var(--brand)}
.faq-item.is-open .faq-icon::after{transform:rotate(90deg) scaleY(0)}
.faq-a{max-height:0;overflow:hidden;transition:max-height 280ms var(--ease)}
.faq-item.is-open .faq-a{max-height:400px}
.faq-a-inner{padding:0 20px 20px;font-size:15px;line-height:1.9;color:var(--ink-2)}

/* contact */
.contact{background:var(--bg-0);position:relative;padding-top:56px;padding-bottom:56px}
@media (min-width:640px){ .contact{padding-top:80px;padding-bottom:80px} }
@media (min-width:1024px){ .contact{padding-top:112px;padding-bottom:112px} }
.contact::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,var(--brand),var(--accent) 50%,transparent)}
.field{display:block;width:100%;height:48px;background:var(--bg-1);border:1px solid var(--line);border-radius:var(--r-input);color:var(--ink);padding:0 14px;transition:border-color 180ms var(--ease),box-shadow 180ms var(--ease)}
textarea.field{height:auto;padding:12px 14px;line-height:1.8;resize:vertical;min-height:120px}
.field::placeholder{color:var(--ink-3)}
.field:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 4px rgba(255,61,110,.12)}
.field-label{display:block;font-size:13px;color:var(--ink-3);margin-bottom:6px}

/* footer */
.site-footer{position:relative;background:var(--bg-1);border-top:1px solid var(--line)}
.site-footer::before{content:'';position:absolute;top:-1px;left:0;right:0;height:1px;background:linear-gradient(90deg,var(--brand),var(--accent) 55%,transparent)}
.footer-link{display:inline-block;font-size:14px;color:var(--ink-2);padding:5px 0;transition:color 180ms var(--ease)}
.footer-link:hover{color:var(--brand)}
.footer-social{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:10px;border:1px solid var(--line);color:var(--ink-2);transition:border-color 180ms var(--ease),color 180ms var(--ease)}
.footer-social:hover{border-color:var(--brand);color:var(--brand)}
.footer-details summary{list-style:none;cursor:pointer;font-size:14px;font-weight:700;color:var(--ink);padding:12px 0;border-bottom:1px solid var(--line)}
.footer-details summary::-webkit-details-marker{display:none}
@media (min-width:1024px){ .footer-details summary{display:none} }

/* float cta */
.float-cta{position:fixed;z-index:70;left:16px;right:16px;bottom:calc(16px + env(safe-area-inset-bottom));height:52px;display:flex;align-items:center;justify-content:center;gap:8px;border-radius:14px;background:var(--brand);color:#fff;font-weight:700;font-size:15px;box-shadow:0 10px 28px rgba(255,61,110,.32);opacity:0;transform:translateY(10px);pointer-events:none;transition:opacity 200ms var(--ease),transform 200ms var(--ease)}
.float-cta.is-visible{opacity:1;transform:translateY(0);pointer-events:auto}
.float-cta.is-hidden{opacity:0;pointer-events:none}
@media (min-width:1024px){
  .float-cta{left:auto;right:24px;bottom:24px;height:48px;padding:0 22px;border-radius:999px;font-size:14.5px;width:auto}
}

.reveal{opacity:0;transform:translateY(12px);transition:opacity 520ms var(--ease),transform 520ms var(--ease)}
.reveal.is-in{opacity:1;transform:none}

@media (hover:hover) and (pointer:fine){
  .btn-primary:hover{filter:brightness(1.06);box-shadow:0 10px 30px rgba(255,61,110,.45)}
  .btn:active{transform:scale(.98)}
  .card:hover{transform:translateY(-3px);border-color:rgba(255,61,110,.4);box-shadow:var(--shadow-2)}
  .news-card:hover{transform:translateY(-3px);border-color:rgba(255,61,110,.4);box-shadow:var(--shadow-2)}
  .value-strip:hover{transform:translateY(-3px);border-color:rgba(255,61,110,.4)}
  .price-card:hover{transform:translateY(-3px);border-color:rgba(255,61,110,.4);box-shadow:var(--shadow-2)}
  .price-card.is-featured:hover{transform:translateY(-3px) scale(1.04)}
  .news-row:hover{background:rgba(255,255,255,.04)}
  .nav-link:hover{color:var(--ink)}
  .faq-q:hover{color:var(--brand)}
  .footer-link:hover{color:var(--brand)}
}
@media (min-width:1024px){
  .price-card.is-featured{transform:scale(1.04)}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{transition:none!important;animation:none!important}
  .reveal{opacity:1;transform:none}
}

/* roulang page: category1 */
:root{
    --bg-0:#0A0A0E;
    --bg-1:#121219;
    --bg-2:#1A1A23;
    --line:rgba(255,255,255,.08);
    --line-strong:rgba(255,255,255,.16);
    --brand:#FF3D6E;
    --brand-700:#D9204F;
    --brand-glow:rgba(255,61,110,.35);
    --accent:#2EE6D6;
    --accent-glow:rgba(46,230,214,.28);
    --lime:#D8FF4D;
    --ink:#F2F3F7;
    --ink-2:#A6AABB;
    --ink-3:#6C7086;
    --paper:#F4F1EA;
    --paper-ink:#14141A;
    --paper-ink-2:#55565F;
    --r-card:16px;
    --r-img:12px;
    --r-input:10px;
    --shadow-1:0 8px 24px rgba(0,0,0,.35);
    --shadow-2:0 14px 36px rgba(0,0,0,.5);
    --ease:cubic-bezier(.2,.7,.3,1);
  }

  *,*::before,*::after{ box-sizing:border-box; }
  html{ scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
  body{
    margin:0;
    background:var(--bg-0);
    color:var(--ink);
    font-family:'PingFang SC','HarmonyOS Sans SC','Microsoft YaHei','Noto Sans SC',system-ui,sans-serif;
    font-size:16px;
    line-height:1.9;
    -webkit-font-smoothing:antialiased;
  }
  h1,h2,h3,h4,p,ul,ol,figure{ margin:0; }
  ul,ol{ padding:0; list-style:none; }
  a{ color:inherit; text-decoration:none; }
  img{ display:block; max-width:100%; height:auto; }
  button{ font:inherit; color:inherit; background:none; border:0; cursor:pointer; }
  input,textarea{ font:inherit; color:inherit; }
  :focus-visible{ outline:2px solid var(--brand); outline-offset:2px; }
  section[id],div[id]{ scroll-margin-top:88px; }

  ::-webkit-scrollbar{ width:10px; height:10px; }
  ::-webkit-scrollbar-track{ background:var(--bg-1); }
  ::-webkit-scrollbar-thumb{ background:#2a2a35; border-radius:8px; border:2px solid var(--bg-1); }
  ::-webkit-scrollbar-thumb:hover{ background:#3a3a48; }

  .container-x{ width:100%; max-width:1200px; margin:0 auto; padding:0 20px; }
  @media (min-width:768px){ .container-x{ padding:0 32px; } }
  @media (min-width:1024px){ .container-x{ padding:0 40px; } }

  .section{ padding:56px 0; }
  @media (min-width:640px){ .section{ padding:80px 0; } }
  @media (min-width:1024px){ .section{ padding:112px 0; } }
  .section-tight{ padding:40px 0; }
  @media (min-width:1024px){ .section-tight{ padding:56px 0; } }

  .h1{
    font-size:clamp(28px,5vw,44px);
    line-height:1.25;
    font-weight:800;
    letter-spacing:-0.01em;
  }
  .h2{
    font-size:clamp(22px,3.4vw,32px);
    line-height:1.3;
    font-weight:700;
    letter-spacing:-0.01em;
  }
  .h3{ font-size:19px; line-height:1.45; font-weight:700; }
  .lead{ font-size:17px; line-height:1.9; color:var(--ink-2); max-width:780px; }
  .tiny{ font-size:13px; line-height:1.7; color:var(--ink-3); }
  .mono{ font-family:'Inter',ui-monospace,SFMono-Regular,Consolas,monospace; }
  .eyebrow{
    font-family:'Inter',ui-monospace,monospace;
    font-size:12px;
    letter-spacing:.08em;
    text-transform:uppercase;
    color:var(--ink-3);
    display:inline-flex;
    align-items:center;
    gap:8px;
  }
  .eyebrow::before{
    content:'';
    width:6px;height:6px;border-radius:50%;
    background:var(--brand);
    box-shadow:0 0 10px var(--brand-glow);
  }
  .clamp-1{ display:-webkit-box; -webkit-line-clamp:1; -webkit-box-orient:vertical; overflow:hidden; }
  .clamp-2{ display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
  .clamp-3{ display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; }

  .rule-neon{
    height:1px; border:0; margin:0;
    background:linear-gradient(90deg,var(--brand),var(--accent),rgba(255,255,255,0));
  }
  .tex-stripes{
    background-image:repeating-linear-gradient(135deg,rgba(255,255,255,.045) 0 1px,transparent 1px 9px);
  }
  .glow-brand{ box-shadow:0 0 0 1px rgba(255,61,110,.5),0 8px 28px var(--brand-glow); }
  .glow-accent{ box-shadow:0 0 0 1px rgba(46,230,214,.35),0 6px 22px var(--accent-glow); }

  /* ---------- header ---------- */
  .site-header{
    position:sticky; top:0; z-index:60;
    background:rgba(10,10,14,.86);
    backdrop-filter:blur(12px);
    border-bottom:1px solid var(--line);
    transition:border-color 180ms var(--ease), background 180ms var(--ease);
  }
  .site-header.is-scrolled{
    border-bottom:1px solid transparent;
    background-image:linear-gradient(rgba(10,10,14,.92),rgba(10,10,14,.92)),linear-gradient(90deg,var(--brand),rgba(255,61,110,0));
    background-origin:border-box;
    border-bottom-color:transparent;
    box-shadow:0 1px 0 0 var(--brand-glow);
  }
  .logo{ display:inline-flex; align-items:center; gap:9px; font-weight:800; font-size:16px; letter-spacing:.01em; }
  .logo-mark{
    width:28px;height:28px;border-radius:8px;
    display:inline-flex;align-items:center;justify-content:center;
    color:var(--brand);
    background:rgba(255,61,110,.12);
    border:1px solid rgba(255,61,110,.35);
  }
  .nav-main{ display:none; }
  .nav-link{
    position:relative;
    display:inline-flex; align-items:center;
    padding:8px 11px;
    font-size:14px;
    color:var(--ink-2);
    border-radius:8px;
    transition:color 180ms var(--ease), background 180ms var(--ease);
  }
  .nav-link::after{
    content:'';
    position:absolute; left:11px; right:11px; bottom:1px;
    height:2px; width:0; border-radius:2px;
    background:var(--brand);
    box-shadow:0 0 10px var(--brand-glow);
    transition:width 180ms var(--ease);
  }
  .nav-link.active{ color:var(--brand); text-shadow:0 0 12px var(--brand-glow); }
  .nav-link.active::after{ width:60%; }

  .hamburger{
    width:44px;height:44px;border-radius:10px;
    display:inline-flex;align-items:center;justify-content:center;
    border:1px solid var(--line);
  }
  .hamburger span{ display:block; width:20px; height:2px; background:var(--ink); border-radius:2px; transition:transform 180ms var(--ease), opacity 180ms var(--ease); }
  .hamburger span + span{ margin-top:5px; }
  .hamburger.is-open span:nth-child(1){ transform:translateY(7px) rotate(45deg); }
  .hamburger.is-open span:nth-child(2){ opacity:0; }
  .hamburger.is-open span:nth-child(3){ transform:translateY(-7px) rotate(-45deg); }

  .drawer{
    position:fixed; inset:60px 0 0 0; z-index:55;
    background:var(--bg-0);
    transform:translateY(-8px);
    opacity:0; visibility:hidden;
    transition:opacity 200ms var(--ease), transform 200ms var(--ease), visibility 200ms;
    display:flex; flex-direction:column;
    overflow-y:auto;
  }
  .drawer.is-open{ opacity:1; visibility:visible; transform:translateY(0); }
  .drawer-link{
    display:flex; align-items:center; justify-content:space-between;
    min-height:56px; padding:0 20px;
    border-bottom:1px solid var(--line);
    color:var(--ink-2); font-size:15px;
  }
  .drawer-link.active{ color:var(--brand); }
  .drawer-foot{ margin-top:auto; padding:20px; }

  /* ---------- buttons ---------- */
  .btn-primary{
    display:inline-flex; align-items:center; justify-content:center; gap:8px;
    min-height:44px; padding:0 22px;
    border-radius:999px;
    background:var(--brand);
    color:#fff; font-weight:700; font-size:15px;
    box-shadow:0 6px 20px var(--brand-glow);
    transition:filter 180ms var(--ease), transform 180ms var(--ease), box-shadow 180ms var(--ease);
  }
  .btn-ghost{
    display:inline-flex; align-items:center; justify-content:center; gap:8px;
    min-height:44px; padding:0 22px;
    border-radius:10px;
    border:1px solid var(--line-strong);
    color:var(--ink); font-weight:600; font-size:15px;
    transition:border-color 180ms var(--ease), color 180ms var(--ease), transform 180ms var(--ease), background 180ms var(--ease);
  }
  .btn-sm{ min-height:38px; padding:0 16px; font-size:14px; }
  .link-arrow{
    display:inline-flex; align-items:center; gap:6px;
    color:var(--accent); font-size:14px; font-weight:600;
  }
  .link-arrow svg{ transition:transform 180ms var(--ease); }

  /* ---------- surfaces ---------- */
  .card{
    background:var(--bg-2);
    border:1px solid var(--line);
    border-radius:var(--r-card);
    padding:16px;
    box-shadow:var(--shadow-1);
    transition:border-color 180ms var(--ease), transform 180ms var(--ease), box-shadow 180ms var(--ease);
  }
  @media (min-width:640px){ .card{ padding:20px; } }
  .badge{
    display:inline-flex; align-items:center;
    height:23px; padding:0 9px;
    border-radius:6px;
    background:rgba(255,61,110,.12);
    color:var(--brand);
    font-size:12px; font-weight:600; letter-spacing:.02em;
  }
  .badge-accent{ background:rgba(46,230,214,.12); color:var(--accent); }
  .badge-lime{ background:rgba(216,255,77,.14); color:var(--lime); }
  .img-frame{
    border-radius:var(--r-img);
    border:1px solid rgba(255,255,255,.08);
    overflow:hidden;
    background:var(--bg-1);
  }
  .img-frame img{ width:100%; height:100%; object-fit:cover; }
  .ratio-16-10{ aspect-ratio:16/10; }
  .ratio-16-9{ aspect-ratio:16/9; }
  .fallback{
    background-color:var(--bg-1);
    background-image:repeating-linear-gradient(135deg,rgba(46,230,214,.08) 0 1px,transparent 1px 10px);
    display:flex; align-items:center; justify-content:center;
    color:var(--accent);
  }
  .dot{ width:8px; height:8px; border-radius:50%; background:var(--brand); flex:none; }
  .dot-accent{ background:var(--accent); }
  .point-list li{ display:flex; gap:12px; align-items:flex-start; font-size:16px; color:var(--ink); }
  .point-list li + li{ margin-top:12px; }
  .point-list .dot{ margin-top:10px; }

  .stat-num{
    font-family:'Inter',ui-monospace,monospace;
    font-size:26px; font-weight:700; line-height:1.2;
  }
  .stat-bar{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px 0; }
  @media (min-width:768px){ .stat-bar{ grid-template-columns:repeat(4,minmax(0,1fr)); } }
  .stat-bar > div{ padding-left:18px; border-left:1px solid var(--line); }
  .stat-bar > div:first-child{ padding-left:0; border-left:0; }
  @media (max-width:767px){
    .stat-bar > div:nth-child(odd){ padding-left:0; border-left:0; }
  }

  .step-row{
    display:flex; gap:18px; align-items:flex-start;
    padding:18px 0;
    border-bottom:1px solid var(--line);
  }
  .step-row:last-child{ border-bottom:0; }
  .step-index{
    font-family:'Inter',ui-monospace,monospace;
    font-size:15px; font-weight:700; color:var(--lime);
    flex:none; width:34px;
  }

  /* ---------- paper block ---------- */
  .paper-block{
    background:var(--paper);
    color:var(--paper-ink);
    border-top:1px solid #1b1b20;
    border-bottom:1px solid #1b1b20;
  }
  .paper-block .lead,
  .paper-block .tiny{ color:var(--paper-ink-2); }
  .paper-card{
    background:#FFFFFF;
    border:1px solid #E4DFD4;
    border-radius:14px;
    padding:20px;
  }
  .paper-card .paper-badge{
    display:inline-flex; align-items:center; height:23px; padding:0 9px;
    border-radius:6px; background:#fff; border:1px solid #E4DFD4;
    color:#0E7C7B; font-size:12px; font-weight:700;
  }
  .paper-num{
    font-family:'Inter',ui-monospace,monospace;
    font-size:38px; font-weight:800; line-height:1.1; color:var(--paper-ink);
  }

  /* ---------- faq ---------- */
  .faq-list{ max-width:880px; margin:0 auto; }
  .faq-item{
    background:var(--bg-2);
    border:1px solid var(--line);
    border-radius:14px;
    margin-bottom:12px;
    overflow:hidden;
    transition:border-color 180ms var(--ease), background 180ms var(--ease);
  }
  .faq-q{
    width:100%;
    display:flex; align-items:center; justify-content:space-between; gap:16px;
    min-height:64px; padding:14px 20px;
    text-align:left;
    font-size:17px; font-weight:700; color:var(--ink);
  }
  .faq-icon{ position:relative; width:18px; height:18px; flex:none; }
  .faq-icon::before,.faq-icon::after{
    content:''; position:absolute; left:50%; top:50%;
    background:var(--brand); border-radius:2px;
    transform:translate(-50%,-50%);
    transition:transform 180ms var(--ease), opacity 180ms var(--ease);
  }
  .faq-icon::before{ width:14px; height:2px; }
  .faq-icon::after{ width:2px; height:14px; }
  .faq-a{
    display:none;
    padding:0 20px 20px;
    font-size:15px; line-height:1.9; color:var(--ink-2);
  }
  .faq-item.is-open{ border-color:rgba(255,61,110,.45); background:#1e1e28; box-shadow:0 0 0 1px rgba(255,61,110,.18); }
  .faq-item.is-open .faq-q{ border-left:3px solid var(--brand); }
  .faq-item.is-open .faq-a{ display:block; }
  .faq-item.is-open .faq-icon::after{ transform:translate(-50%,-50%) rotate(90deg); opacity:0; }

  /* ---------- form ---------- */
  .field{
    width:100%; min-height:48px;
    background:var(--bg-1);
    border:1px solid var(--line);
    border-radius:var(--r-input);
    padding:12px 14px;
    color:var(--ink);
    transition:border-color 180ms var(--ease), box-shadow 180ms var(--ease);
  }
  .field::placeholder{ color:var(--ink-3); }
  .field:focus{ outline:none; border-color:var(--brand); box-shadow:0 0 0 4px rgba(255,61,110,.12); }
  textarea.field{ min-height:112px; resize:vertical; }

  /* ---------- footer ---------- */
  .site-footer{
    background:var(--bg-1);
    border-top:0;
    position:relative;
    padding-bottom:88px;
  }
  .site-footer::before{
    content:''; position:absolute; top:0; left:0; right:0; height:1px;
    background:linear-gradient(90deg,var(--brand),var(--accent),transparent);
  }
  .footer-link{
    display:block; padding:7px 0;
    font-size:14px; color:var(--ink-2);
    transition:color 180ms var(--ease);
  }
  .footer-social{
    width:36px;height:36px;border-radius:10px;
    display:inline-flex;align-items:center;justify-content:center;
    border:1px solid var(--line); color:var(--ink-2);
  }
  .footer-note{ font-size:13px; color:var(--ink-3); line-height:1.8; }
  details.footer-fold summary{
    cursor:pointer; list-style:none;
    font-size:15px; font-weight:700; color:var(--ink);
    padding:12px 0;
    border-bottom:1px solid var(--line);
  }
  details.footer-fold summary::-webkit-details-marker{ display:none; }

  /* ---------- floating cta ---------- */
  .float-cta{
    position:fixed; z-index:58;
    right:16px; left:16px; bottom:calc(16px + env(safe-area-inset-bottom));
    height:52px;
    display:inline-flex; align-items:center; justify-content:center; gap:8px;
    border-radius:14px;
    background:var(--brand);
    color:#fff; font-weight:700; font-size:15px;
    box-shadow:0 10px 30px var(--brand-glow);
    opacity:0; transform:translateY(8px); pointer-events:none;
    transition:opacity 200ms var(--ease), transform 200ms var(--ease);
  }
  .float-cta.is-visible{ opacity:1; transform:translateY(0); pointer-events:auto; }
  @media (min-width:1024px){
    .float-cta{
      left:auto; right:24px; bottom:24px;
      height:50px; padding:0 22px; border-radius:999px;
      box-shadow:0 0 0 1px rgba(255,61,110,.4),0 12px 30px var(--brand-glow);
    }
  }

  /* ---------- reveal ---------- */
  .reveal{ opacity:0; transform:translateY(12px); transition:opacity 480ms var(--ease), transform 480ms var(--ease); }
  .reveal.is-in{ opacity:1; transform:none; }

  @media (hover:hover) and (pointer:fine){
    .nav-link:hover{ color:var(--ink); background:rgba(255,255,255,.04); }
    .card:hover{ transform:translateY(-3px); border-color:rgba(255,61,110,.4); box-shadow:var(--shadow-2); }
    .btn-primary:hover{ filter:brightness(1.06); box-shadow:0 10px 30px var(--brand-glow); }
    .btn-ghost:hover{ border-color:var(--brand); color:var(--brand); }
    .link-arrow:hover svg{ transform:translateX(4px); }
    .footer-link:hover{ color:var(--brand); }
    .footer-social:hover{ border-color:var(--brand); color:var(--brand); }
    .paper-card:hover{ border-color:#C9C2B2; }
  }

  @media (prefers-reduced-motion: reduce){
    html{ scroll-behavior:auto; }
    *,*::before,*::after{
      animation-duration:.001ms !important;
      animation-iteration-count:1 !important;
      transition-duration:.001ms !important;
    }
    .reveal{ opacity:1; transform:none; }
  }

/* roulang page: article */
:root{
  --bg-0:#0A0A0E; --bg-1:#121219; --bg-2:#1A1A23;
  --line:rgba(255,255,255,.08); --line-strong:rgba(255,255,255,.16);
  --brand:#FF3D6E; --brand-700:#D9204F; --brand-glow:rgba(255,61,110,.35);
  --accent:#2EE6D6; --accent-glow:rgba(46,230,214,.28);
  --lime:#D8FF4D;
  --ink:#F2F3F7; --ink-2:#A6AABB; --ink-3:#6C7086;
  --paper:#F4F1EA; --paper-ink:#14141A; --paper-ink-2:#55565F;
  --r-card:16px; --r-img:12px; --r-input:10px; --r-pill:999px; --r-badge:6px;
  --shadow-1:0 8px 24px rgba(0,0,0,.35);
  --shadow-2:0 14px 36px rgba(0,0,0,.5);
  --ease:cubic-bezier(.2,.7,.3,1);
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{
  margin:0;background:var(--bg-0);color:var(--ink);
  font-family:"PingFang SC","HarmonyOS Sans SC","Microsoft YaHei","Noto Sans SC",system-ui,-apple-system,sans-serif;
  font-size:17px;line-height:1.9;-webkit-font-smoothing:antialiased;
  padding-bottom:96px;
}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
button,input,textarea,select{font:inherit;color:inherit}
h1,h2,h3,h4,p{margin:0}
::selection{background:rgba(255,61,110,.32);color:#fff}
.container{width:100%;max-width:1200px;margin:0 auto;padding-left:20px;padding-right:20px}
@media (min-width:768px){.container{padding-left:32px;padding-right:32px}}
@media (min-width:1024px){.container{padding-left:40px;padding-right:40px}}
.mono{font-family:Inter,ui-monospace,SFMono-Regular,Menlo,monospace}
.tiny{font-size:13px;color:var(--ink-3);line-height:1.7}
.clamp-2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.clamp-3{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.rule-neon{height:1px;border:0;margin:0;background:linear-gradient(90deg,var(--brand),var(--accent),rgba(255,255,255,0))}
.rule-soft{height:1px;border:0;margin:0;background:var(--line)}
.tex-stripes{background-image:repeating-linear-gradient(135deg,rgba(255,255,255,.05) 0 1px,transparent 1px 10px)}
.glow-brand{box-shadow:0 0 0 1px rgba(255,61,110,.4),0 10px 30px var(--brand-glow)}
.glow-accent{box-shadow:0 0 0 1px rgba(46,230,214,.32),0 10px 28px var(--accent-glow)}
:focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-radius:6px}

/* ---------- Header ---------- */
.site-header{position:sticky;top:0;z-index:60;background:rgba(10,10,14,.86);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.site-header::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:linear-gradient(90deg,var(--brand),rgba(255,61,110,0));opacity:0;transition:opacity 180ms var(--ease)}
.site-header.is-scrolled::after{opacity:1}
.header-inner{display:flex;align-items:center;justify-content:space-between;gap:14px;height:60px}
@media (min-width:1024px){.header-inner{height:68px}}
.logo{display:inline-flex;align-items:center;gap:8px;font-size:16px;font-weight:800;letter-spacing:.01em;color:var(--ink);white-space:nowrap}
@media (min-width:1024px){.logo{font-size:17px}}
.logo-mark{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:9px;background:rgba(255,61,110,.14);border:1px solid rgba(255,61,110,.32);color:var(--brand);flex:none}
.nav-main{display:none;align-items:center;gap:1px}
@media (min-width:1180px){.nav-main{display:flex}}
.nav-link{position:relative;display:inline-flex;align-items:center;height:40px;padding:0 10px;font-size:14px;color:var(--ink-2);border-radius:8px;transition:color 180ms var(--ease),background 180ms var(--ease)}
.nav-link::after{content:"";position:absolute;left:10px;right:10px;bottom:3px;height:2px;border-radius:2px;background:var(--brand);transform:scaleX(0);transform-origin:left;transition:transform 180ms var(--ease)}
.nav-link.is-active{color:var(--brand);text-shadow:0 0 14px var(--brand-glow)}
.nav-link.is-active::after{transform:scaleX(.6)}
.header-actions{display:flex;align-items:center;gap:10px}
.nav-toggle{display:inline-flex;flex-direction:column;justify-content:center;gap:5px;width:44px;height:44px;padding:0 10px;background:transparent;border:1px solid var(--line-strong);border-radius:10px;cursor:pointer;transition:border-color 180ms var(--ease)}
.nav-toggle span{display:block;height:2px;border-radius:2px;background:var(--ink);transition:transform 180ms var(--ease),opacity 180ms var(--ease)}
body.nav-open .nav-toggle span:nth-child(1){transform:translateY(7px) rotate(45deg)}
body.nav-open .nav-toggle span:nth-child(2){opacity:0}
body.nav-open .nav-toggle span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
@media (min-width:1180px){.nav-toggle{display:none}}
.nav-drawer{position:fixed;left:0;right:0;top:60px;bottom:0;z-index:55;display:flex;flex-direction:column;padding:10px 20px 24px;background:rgba(10,10,14,.98);overflow-y:auto;opacity:0;visibility:hidden;transform:translateY(-12px);transition:opacity 200ms var(--ease),transform 200ms var(--ease),visibility 200ms var(--ease)}
body.nav-open .nav-drawer{opacity:1;visibility:visible;transform:translateY(0)}
body.nav-open{overflow:hidden}
@media (min-width:1180px){.nav-drawer{display:none}}
.drawer-link{display:flex;align-items:center;justify-content:space-between;height:56px;border-bottom:1px solid var(--line);color:var(--ink-2);font-size:16px}
.drawer-link span.arrow{color:var(--ink-3)}
.drawer-cta{margin-top:auto;padding-top:20px}

/* ---------- Buttons / badges ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 20px;border-radius:var(--r-pill);font-size:15px;font-weight:700;border:1px solid transparent;cursor:pointer;transition:all 180ms var(--ease);text-align:center}
.btn-primary{background:var(--brand);color:#fff;box-shadow:0 6px 18px rgba(255,61,110,.24)}
.btn-ghost{background:transparent;border-color:var(--line-strong);color:var(--ink)}
.btn-sm{min-height:38px;padding:0 16px;font-size:14px}
.btn-block{width:100%}
.link-arrow{display:inline-flex;align-items:center;gap:6px;color:var(--accent);font-size:14px;font-weight:600}
.link-arrow svg{transition:transform 180ms var(--ease)}
.chip{display:inline-flex;align-items:center;height:24px;padding:0 10px;border-radius:var(--r-badge);font-size:13px;font-weight:600}
.chip-brand{background:rgba(255,61,110,.12);color:var(--brand)}
.chip-accent{background:rgba(46,230,214,.12);color:var(--accent)}
.badge{display:inline-flex;align-items:center;height:24px;padding:0 10px;border-radius:var(--r-badge);font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;background:rgba(46,230,214,.12);color:var(--accent)}

@media (hover:hover) and (pointer:fine){
  .nav-link:hover{color:var(--ink);background:rgba(255,255,255,.04)}
  .nav-link:hover::after{transform:scaleX(.4);background:var(--line-strong)}
  .nav-link.is-active:hover{color:var(--brand)}
  .btn-primary:hover{filter:brightness(1.06);box-shadow:0 10px 28px var(--brand-glow)}
  .btn-ghost:hover{border-color:var(--brand);color:var(--ink)}
  .link-arrow:hover svg{transform:translateX(4px)}
  .drawer-link:hover{color:var(--ink)}
}
.btn:active{transform:scale(.98)}

/* ---------- Breadcrumb ---------- */
.breadcrumb-bar{border-bottom:1px solid var(--line);background:rgba(18,18,25,.5)}
.breadcrumb{display:flex;align-items:center;gap:8px;height:56px;font-size:13px;color:var(--ink-3);overflow:hidden;white-space:nowrap}
.breadcrumb a{color:var(--ink-3);transition:color 180ms var(--ease)}
.breadcrumb .sep{color:#3A3C4A}
.crumb-current{color:var(--ink-2);max-width:46vw;overflow:hidden;text-overflow:ellipsis}
@media (min-width:1024px){.crumb-current{max-width:640px}}
@media (hover:hover) and (pointer:fine){.breadcrumb a:hover{color:var(--brand)}}

/* ---------- Article head ---------- */
.article-head{padding:44px 0 28px}
@media (min-width:1024px){.article-head{padding:64px 0 32px}}
.article-head-inner{max-width:900px}
.article-title{font-size:clamp(26px,4.4vw,40px);line-height:1.28;font-weight:800;letter-spacing:-.005em;margin-top:16px;color:var(--ink)}
.article-meta{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-top:22px;padding-top:18px;border-top:1px solid var(--line)}
.meta-left{display:flex;flex-wrap:wrap;align-items:center;gap:14px;flex:1 1 260px;min-width:0}
.meta-item{font-size:13px;color:var(--ink-3);line-height:1.7}
.meta-divider{width:1px;height:14px;background:var(--line-strong)}

/* ---------- Article body ---------- */
.article-section{padding:12px 0 72px}
@media (min-width:1024px){.article-section{padding:24px 0 104px}}
.article-wrap{max-width:780px;margin:0 auto}
.article-body{font-size:17px;line-height:1.95;color:var(--ink);word-break:break-word}
.article-body > *:first-child{margin-top:0}
.article-body p{margin:0 0 1.15em}
.article-body h2{position:relative;font-size:clamp(21px,3vw,25px);line-height:1.42;font-weight:700;margin:40px 0 16px;padding-left:16px;scroll-margin-top:88px}
.article-body h2::before{content:"";position:absolute;left:0;top:.34em;width:4px;height:20px;border-radius:2px;background:var(--brand)}
.article-body h3{position:relative;font-size:18.5px;line-height:1.5;font-weight:700;margin:30px 0 12px;padding-left:18px;scroll-margin-top:88px}
.article-body h3::before{content:"";position:absolute;left:2px;top:.60em;width:7px;height:7px;border-radius:50%;background:var(--accent)}
.article-body h4{font-size:17px;font-weight:700;margin:24px 0 10px;color:var(--ink)}
.article-body strong{color:#fff;font-weight:700}
.article-body blockquote{margin:24px 0;padding:16px 20px;background:var(--bg-1);border-left:3px solid var(--brand);border-radius:var(--r-img);color:var(--ink-2);font-size:16px}
.article-body blockquote p:last-child{margin-bottom:0}
.article-body ul,.article-body ol{margin:0 0 1.15em;padding:0;list-style:none}
.article-body ul li{position:relative;padding-left:20px;margin-bottom:8px;line-height:1.9}
.article-body ul li::before{content:"";position:absolute;left:2px;top:.72em;width:8px;height:8px;border-radius:50%;background:var(--brand)}
.article-body ol{counter-reset:artc}
.article-body ol li{position:relative;padding-left:28px;margin-bottom:8px;line-height:1.9;counter-increment:artc}
.article-body ol li::before{content:counter(artc,decimal-leading-zero);position:absolute;left:0;top:.34em;font-family:Inter,ui-monospace,monospace;font-size:13px;color:var(--accent)}
.article-body img{margin:24px auto;border-radius:var(--r-img);border:1px solid var(--line);background:var(--bg-1)}
.article-body figure{margin:24px 0}
.article-body figcaption{margin-top:10px;font-size:13px;color:var(--ink-3);text-align:center;line-height:1.7}
.article-body a{color:var(--accent);border-bottom:1px dashed rgba(46,230,214,.55);transition:border-color 180ms var(--ease)}
.article-body table{width:100%;border-collapse:separate;border-spacing:0;margin:24px 0;background:var(--bg-1);border:1px solid var(--line);border-radius:var(--r-img);overflow:hidden;font-size:15px;line-height:1.8}
.article-body th,.article-body td{padding:12px 16px;text-align:left;border-bottom:1px solid var(--line)}
.article-body th{background:rgba(255,255,255,.03);font-weight:700;color:var(--ink)}
.article-body tr:last-child td,.article-body tr:last-child th{border-bottom:0}
.article-body td:first-child{font-weight:700}
.article-body code{font-family:Inter,ui-monospace,monospace;font-size:14px;background:var(--bg-1);border:1px solid var(--line);border-radius:6px;padding:2px 6px;color:var(--accent)}
.article-body hr{border:0;height:1px;background:var(--line);margin:36px 0}
@media (hover:hover) and (pointer:fine){.article-body a:hover{border-bottom-style:solid}}

/* ---------- Empty state ---------- */
.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;min-height:280px;padding:48px 24px;background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-card);text-align:center}
.empty-state .empty-icon{display:inline-flex;align-items:center;justify-content:center;width:52px;height:52px;border-radius:14px;background:rgba(46,230,214,.1);color:var(--accent)}
.empty-title{font-size:19px;font-weight:700;color:var(--ink)}
.empty-desc{font-size:15px;color:var(--ink-2);max-width:420px}

/* ---------- Article footer ---------- */
.article-foot{padding:0 0 56px}
@media (min-width:1024px){.article-foot{padding:0 0 88px}}
.foot-tags{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:32px}
.foot-actions{display:flex;flex-wrap:wrap;gap:12px;padding-top:28px;border-top:1px solid var(--line)}

/* ---------- Related / cards ---------- */
.section-block{padding:56px 0}
@media (min-width:1024px){.section-block{padding:88px 0}}
.section-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:14px;margin-bottom:28px}
.section-title{font-size:clamp(22px,3.4vw,30px);line-height:1.32;font-weight:700}
.card{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-card);box-shadow:var(--shadow-1);transition:transform 180ms var(--ease),border-color 180ms var(--ease),box-shadow 180ms var(--ease)}
.card-body{padding:18px 20px}
.card-title{font-size:17px;font-weight:700;line-height:1.5;color:var(--ink)}
.card-text{font-size:14.5px;color:var(--ink-2);line-height:1.8;margin-top:8px}
.img-frame{overflow:hidden;border-radius:var(--r-img);border:1px solid var(--line);background:var(--bg-1)}
.img-frame img{width:100%;height:100%;object-fit:cover;aspect-ratio:16/9}
@media (hover:hover) and (pointer:fine){
  .card:hover{transform:translateY(-3px);border-color:rgba(255,61,110,.4);box-shadow:var(--shadow-2)}
}

/* ---------- CTA strip ---------- */
.cta-strip{position:relative;background:var(--bg-1);border-top:1px solid var(--line)}
.cta-strip::before{content:"";position:absolute;top:-1px;left:0;right:0;height:1px;background:linear-gradient(90deg,var(--brand),var(--accent),rgba(255,255,255,0))}
.cta-grid{display:grid;grid-template-columns:1fr;gap:28px;padding:48px 0}
@media (min-width:1024px){.cta-grid{grid-template-columns:7fr 5fr;gap:48px;padding:64px 0}}
.cta-title{font-size:clamp(22px,3.2vw,28px);line-height:1.34;font-weight:700}
.cta-desc{margin-top:12px;color:var(--ink-2);font-size:16px}
.form-field{margin-bottom:14px}
.form-input{width:100%;height:48px;padding:0 14px;background:var(--bg-0);border:1px solid var(--line);border-radius:var(--r-input);color:var(--ink);font-size:15px;transition:border-color 180ms var(--ease),box-shadow 180ms var(--ease)}
textarea.form-input{height:104px;padding:12px 14px;resize:vertical;line-height:1.7}
.form-input::placeholder{color:var(--ink-3)}
.form-input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 4px rgba(255,61,110,.12)}

/* ---------- Footer ---------- */
.site-footer{position:relative;background:var(--bg-0);border-top:1px solid var(--line)}
.site-footer::before{content:"";position:absolute;top:-1px;left:0;right:0;height:1px;background:linear-gradient(90deg,var(--brand),var(--accent),rgba(255,255,255,0))}
.footer-link{display:block;padding:7px 0;font-size:14.5px;color:var(--ink-2);transition:color 180ms var(--ease)}
.footer-social{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:10px;border:1px solid var(--line);color:var(--ink-2);transition:border-color 180ms var(--ease),color 180ms var(--ease)}
.footer-bottom{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;padding:18px 0 26px;border-top:1px solid var(--line);font-size:13px;color:var(--ink-3)}
details.footer-fold{border-top:1px solid var(--line);padding:14px 0}
details.footer-fold summary{list-style:none;cursor:pointer;font-size:15px;font-weight:700;color:var(--ink);display:flex;align-items:center;justify-content:space-between}
details.footer-fold summary::-webkit-details-marker{display:none}
details.footer-fold summary::after{content:"+";color:var(--ink-3);font-weight:400}
details.footer-fold[open] summary::after{content:"−"}
@media (hover:hover) and (pointer:fine){
  .footer-link:hover{color:var(--brand)}
  .footer-social:hover{border-color:var(--brand);color:var(--brand)}
}

/* ---------- Floating CTA ---------- */
.float-cta{position:fixed;left:16px;right:16px;bottom:calc(14px + env(safe-area-inset-bottom,0px));z-index:70;display:inline-flex;align-items:center;justify-content:center;gap:8px;height:52px;border:0;border-radius:14px;background:var(--brand);color:#fff;font-size:15px;font-weight:700;cursor:pointer;box-shadow:0 10px 30px var(--brand-glow);opacity:0;visibility:hidden;transform:translateY(8px);transition:opacity 200ms var(--ease),transform 200ms var(--ease),visibility 200ms var(--ease),filter 180ms var(--ease)}
.float-cta.is-visible{opacity:1;visibility:visible;transform:translateY(0)}
@media (min-width:1024px){
  body{padding-bottom:0}
  .float-cta{left:auto;right:24px;bottom:24px;height:48px;padding:0 22px;border-radius:var(--r-pill)}
}
@media (hover:hover) and (pointer:fine){.float-cta:hover{filter:brightness(1.06)}}
.float-cta:active{transform:scale(.98)}

/* ---------- Custom scrollbar ---------- */
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-track{background:#0C0C11}
::-webkit-scrollbar-thumb{background:#262634;border-radius:8px;border:2px solid #0C0C11}
::-webkit-scrollbar-thumb:hover{background:#3A3A4D}

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001ms !important;transition-duration:.001ms !important}
}

/* roulang page: category2 */
:root{
    --bg-0:#0A0A0E; --bg-1:#121219; --bg-2:#1A1A23;
    --line:rgba(255,255,255,.08); --line-strong:rgba(255,255,255,.16);
    --brand:#FF3D6E; --brand-700:#D9204F; --brand-glow:rgba(255,61,110,.35);
    --accent:#2EE6D6; --accent-glow:rgba(46,230,214,.28);
    --lime:#D8FF4D;
    --ink:#F2F3F7; --ink-2:#A6AABB; --ink-3:#6C7086;
    --paper:#F4F1EA; --paper-ink:#14141A; --paper-ink-2:#55565F;
    --r-card:16px; --r-img:12px; --r-input:10px; --r-pill:999px; --r-badge:6px;
    --shadow-1:0 8px 24px rgba(0,0,0,.35);
    --shadow-2:0 14px 36px rgba(0,0,0,.5);
    --tr:180ms cubic-bezier(.2,.7,.3,1);
    --font-cn:'PingFang SC','HarmonyOS Sans SC','Microsoft YaHei','Noto Sans SC',system-ui,sans-serif;
    --font-en:'Inter',ui-monospace,'SFMono-Regular',monospace;
  }
  *,*::before,*::after{box-sizing:border-box}
  html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
  body{
    margin:0;background:var(--bg-0);color:var(--ink);
    font-family:var(--font-cn);font-size:16px;line-height:1.9;
    letter-spacing:-0.01em;overflow-x:hidden;
  }
  img{max-width:100%;display:block}
  a{color:inherit;text-decoration:none}
  button,input,textarea{font:inherit;color:inherit}
  :focus-visible{outline:2px solid var(--brand);outline-offset:2px}
  section[id],div[id]{scroll-margin-top:88px}
  ::selection{background:rgba(255,61,110,.35)}
  ::-webkit-scrollbar{width:10px;height:10px}
  ::-webkit-scrollbar-track{background:var(--bg-1)}
  ::-webkit-scrollbar-thumb{background:#2A2A36;border-radius:999px;border:2px solid var(--bg-1)}
  ::-webkit-scrollbar-thumb:hover{background:#3A3A48}

  .container{width:100%;max-width:1200px;margin:0 auto;padding-left:20px;padding-right:20px}
  @media(min-width:640px){.container{padding-left:32px;padding-right:32px}}
  @media(min-width:1024px){.container{padding-left:40px;padding-right:40px}}

  .section{padding:56px 0}
  @media(min-width:640px){.section{padding:80px 0}}
  @media(min-width:1024px){.section{padding:112px 0}}
  .section-tight{padding:40px 0}
  .rule-neon{height:1px;width:100%;background:linear-gradient(90deg,var(--brand),var(--accent),transparent);border:0;margin:0}
  .tex-stripes{
    background-image:repeating-linear-gradient(135deg,rgba(255,255,255,.08) 0 1px,transparent 1px 12px);
  }
  .clamp-2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .clamp-3{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
  .mono{font-family:var(--font-en);font-variant-numeric:tabular-nums}
  .eyebrow{
    display:inline-flex;align-items:center;gap:8px;font-size:12px;letter-spacing:.08em;
    text-transform:uppercase;color:var(--ink-2);font-family:var(--font-en);
  }
  .eyebrow .dot{width:6px;height:6px;border-radius:999px;background:var(--brand);box-shadow:0 0 10px var(--brand-glow)}

  h1,h2,h3{letter-spacing:-0.01em;margin:0}
  h1{font-size:clamp(28px,5vw,44px);line-height:1.25;font-weight:800}
  h2{font-size:clamp(22px,3.4vw,32px);line-height:1.3;font-weight:700}
  h3{font-size:19px;line-height:1.45;font-weight:700}

  /* ---------- header ---------- */
  .site-header{
    position:sticky;top:0;z-index:60;
    background:rgba(10,10,14,.86);backdrop-filter:blur(12px);
    border-bottom:1px solid var(--line);transition:border-color var(--tr),background-color var(--tr);
  }
  .site-header.is-scrolled{border-bottom-color:rgba(255,61,110,.55);background:rgba(10,10,14,.94)}
  .header-inner{display:flex;align-items:center;gap:14px;height:60px}
  @media(min-width:1024px){.header-inner{height:68px;gap:20px}}
  .logo{display:inline-flex;align-items:center;gap:10px;font-weight:800;font-size:15px;white-space:nowrap;color:var(--ink)}
  @media(min-width:1024px){.logo{font-size:16px}}
  .logo-mark{
    width:28px;height:28px;flex:none;display:grid;place-items:center;border-radius:9px;
    background:linear-gradient(135deg,var(--brand),var(--brand-700));color:#fff;
  }
  .nav-main{display:none}
  @media(min-width:1024px){
    .nav-main{display:flex;align-items:center;gap:2px;margin-left:auto;flex-wrap:nowrap}
  }
  .nav-link{
    position:relative;padding:8px 9px;font-size:13px;color:var(--ink-2);
    border-radius:8px;white-space:nowrap;transition:color var(--tr),background-color var(--tr);
  }
  .nav-link::after{
    content:'';position:absolute;left:22%;right:22%;bottom:1px;height:2px;border-radius:2px;
    background:var(--brand);opacity:0;transition:opacity var(--tr);
  }
  .nav-link.is-active{color:var(--brand);text-shadow:0 0 10px var(--brand-glow)}
  .nav-link.is-active::after{opacity:1}
  .header-cta{display:none}
  @media(min-width:1024px){.header-cta{display:inline-flex;margin-left:12px}}

  .btn{
    display:inline-flex;align-items:center;justify-content:center;gap:8px;
    min-height:44px;padding:0 22px;border-radius:var(--r-pill);border:1px solid transparent;
    font-weight:700;font-size:15px;cursor:pointer;
    transition:filter var(--tr),transform var(--tr),box-shadow var(--tr),border-color var(--tr),color var(--tr),background-color var(--tr);
  }
  .btn-sm{min-height:40px;padding:0 16px;font-size:14px}
  .btn-primary{
    background:var(--brand);color:#fff;
    box-shadow:0 8px 20px rgba(0,0,0,.35),0 0 0 1px rgba(255,61,110,.35);
  }
  .btn-ghost{background:transparent;color:var(--ink);border-color:var(--line-strong);border-radius:10px}
  .btn:active{transform:scale(.98)}

  .link-arrow{
    display:inline-flex;align-items:center;gap:6px;color:var(--accent);font-size:14px;font-weight:700;
  }
  .link-arrow svg{transition:transform var(--tr)}
  .link-arrow:hover svg{transform:translateX(4px)}

  .badge{
    display:inline-flex;align-items:center;height:23px;padding:0 9px;border-radius:var(--r-badge);
    font-size:12px;font-weight:700;letter-spacing:.02em;
    background:rgba(255,61,110,.12);color:var(--brand);
  }
  .badge-accent{background:rgba(46,230,214,.12);color:var(--accent)}
  .badge-lime{background:rgba(216,255,77,.14);color:var(--lime)}

  .nav-toggle{
    margin-left:auto;width:44px;height:44px;display:grid;place-items:center;
    background:transparent;border:1px solid var(--line-strong);border-radius:10px;cursor:pointer;
  }
  .nav-toggle span{display:block;width:18px;height:2px;background:var(--ink);border-radius:2px;transition:transform var(--tr),opacity var(--tr)}
  .nav-toggle span+span{margin-top:4px}
  .nav-toggle.is-open span:nth-child(1){transform:translateY(6px) rotate(45deg)}
  .nav-toggle.is-open span:nth-child(2){opacity:0}
  .nav-toggle.is-open span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}
  @media(min-width:1024px){.nav-toggle{display:none}}

  .mobile-drawer{
    position:fixed;left:0;right:0;top:60px;bottom:0;z-index:55;
    background:rgba(10,10,14,.98);border-top:1px solid var(--line);
    display:flex;flex-direction:column;
    opacity:0;visibility:hidden;transform:translateY(-8px);
    transition:opacity var(--tr),transform var(--tr),visibility var(--tr);
  }
  .mobile-drawer.is-open{opacity:1;visibility:visible;transform:none}
  .drawer-scroll{overflow-y:auto;flex:1}
  .drawer-link{
    display:flex;align-items:center;justify-content:space-between;
    height:56px;padding:0 20px;border-bottom:1px solid var(--line);
    color:var(--ink-2);font-size:15px;
  }
  .drawer-link.is-active{color:var(--brand)}
  .drawer-foot{padding:16px 20px 24px;border-top:1px solid var(--line);background:var(--bg-1)}
  @media(min-width:1024px){.mobile-drawer{display:none}}

  /* ---------- banner ---------- */
  .cat-banner{position:relative;overflow:hidden;border-bottom:1px solid var(--line);background:#0C0C12}
  .cat-banner::before{
    content:'';position:absolute;inset:0;
    background-image:url('/assets/images/backpic/back-2.png');
    background-size:cover;background-position:center;opacity:.55;
  }
  .cat-banner::after{
    content:'';position:absolute;inset:0;
    background:linear-gradient(180deg,rgba(10,10,14,.88),rgba(10,10,14,.72));
  }
  .cat-banner-inner{
    position:relative;z-index:1;display:flex;flex-direction:column;justify-content:flex-end;
    min-height:260px;padding-top:24px;padding-bottom:44px;
  }
  @media(min-width:1024px){
    .cat-banner-inner{min-height:280px;padding-bottom:48px}
  }
  .cat-banner h1{max-width:720px;margin-top:14px}
  .cat-banner .cat-lead{max-width:720px;margin:16px 0 0;color:var(--ink-2);font-size:17px;line-height:1.9}

  .crumb{font-size:13px;color:var(--ink-3);display:flex;flex-wrap:wrap;align-items:center;gap:8px}
  .crumb a{color:var(--ink-2)}
  .crumb .cur{color:var(--ink-2);max-width:60vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .crumb .sep{color:var(--ink-3);opacity:.7}

  /* ---------- section head ---------- */
  .section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:28px;flex-wrap:wrap}
  .section-head p{margin:10px 0 0;color:var(--ink-2);font-size:16px;max-width:700px}

  /* ---------- card ---------- */
  .card{
    background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-card);
    padding:18px;box-shadow:var(--shadow-1);
    transition:border-color var(--tr),transform var(--tr),box-shadow var(--tr);
  }
  .card h3{margin-bottom:10px}
  .card p{margin:0 0 14px;color:var(--ink-2);font-size:15px;line-height:1.85}
  .media{
    aspect-ratio:16/9;border-radius:var(--r-img);overflow:hidden;
    border:1px solid var(--line);margin-bottom:16px;background:var(--bg-1);
  }
  .media img{width:100%;height:100%;object-fit:cover}

  /* ---------- stats strip ---------- */
  .stat-strip{
    display:grid;grid-template-columns:repeat(2,1fr);gap:0;
    border:1px solid var(--line);border-radius:var(--r-card);overflow:hidden;background:var(--bg-1);
  }
  @media(min-width:768px){.stat-strip{grid-template-columns:repeat(4,1fr)}}
  .stat-cell{padding:20px 18px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}
  .stat-cell:nth-child(2n){border-right:0}
  @media(min-width:768px){
    .stat-cell{border-bottom:0}
    .stat-cell:nth-child(2n){border-right:1px solid var(--line)}
    .stat-cell:last-child{border-right:0}
  }
  .stat-num{font-family:var(--font-en);font-size:24px;font-weight:700;color:var(--ink);line-height:1.2}
  .stat-label{margin-top:6px;font-size:13px;color:var(--ink-3)}

  /* ---------- row list ---------- */
  .row-list{border-top:1px solid var(--line)}
  .row-item{
    display:grid;grid-template-columns:56px 1fr;gap:14px;align-items:start;
    min-height:88px;padding:18px 0;border-bottom:1px solid var(--line);
  }
  @media(min-width:768px){.row-item{grid-template-columns:80px 1fr;gap:20px}}
  .row-idx{font-family:var(--font-en);font-size:20px;font-weight:700;color:var(--brand);line-height:1.4}
  @media(min-width:768px){.row-idx{font-size:24px}}
  .row-item h3{margin-bottom:6px}
  .row-item p{margin:0;color:var(--ink-2);font-size:15px}

  /* ---------- switch ---------- */
  .cat-switch{display:grid;grid-template-columns:1fr;gap:14px;margin-top:8px}
  @media(min-width:768px){.cat-switch{grid-template-columns:1fr 1fr}}
  .switch-item{
    display:flex;flex-direction:column;gap:6px;
    background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-card);
    padding:18px 20px;transition:border-color var(--tr),transform var(--tr),box-shadow var(--tr);
  }
  .switch-item.next{align-items:flex-end;text-align:right}
  .switch-label{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);font-family:var(--font-en)}
  .switch-title{font-size:17px;font-weight:700}

  /* ---------- cta ---------- */
  .cta-panel{
    position:relative;background:var(--bg-1);border-top:1px solid transparent;
    border-image:linear-gradient(90deg,var(--brand),var(--accent),transparent) 1;
  }
  .cta-grid{display:grid;grid-template-columns:1fr;gap:28px}
  @media(min-width:1024px){.cta-grid{grid-template-columns:7fr 5fr;gap:48px;align-items:start}}
  .cta-panel p.lead{color:var(--ink-2);font-size:16px;margin:12px 0 0;max-width:560px}
  .field{display:flex;flex-direction:column;gap:8px;margin-bottom:14px}
  .field label{font-size:13px;color:var(--ink-2)}
  .field input,.field textarea{
    width:100%;background:var(--bg-0);border:1px solid var(--line);border-radius:var(--r-input);
    min-height:48px;padding:12px 14px;font-size:15px;color:var(--ink);
    transition:border-color var(--tr),box-shadow var(--tr);
  }
  .field textarea{min-height:112px;resize:vertical;line-height:1.8}
  .field input::placeholder,.field textarea::placeholder{color:var(--ink-3)}
  .field input:focus,.field textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 4px rgba(255,61,110,.12)}
  .form-tip{font-size:13px;color:var(--ink-3);margin-top:12px;min-height:20px}

  /* ---------- footer ---------- */
  .site-footer{position:relative;background:var(--bg-1);border-top:1px solid transparent;
    border-image:linear-gradient(90deg,var(--brand),var(--accent),transparent) 1;}
  .footer-link{display:inline-flex;align-items:center;min-height:36px;color:var(--ink-2);font-size:14px;transition:color var(--tr)}
  .footer-link:hover{color:var(--brand)}
  .footer-social{
    width:36px;height:36px;display:grid;place-items:center;border-radius:10px;
    border:1px solid var(--line);color:var(--ink-2);background:var(--bg-2);
  }
  .footer-bottom{
    border-top:1px solid var(--line);margin-top:28px;padding-top:18px;
    display:flex;flex-wrap:wrap;gap:8px;justify-content:space-between;
    font-size:13px;color:var(--ink-3);
  }
  .tiny{font-size:13px;color:var(--ink-3);margin:0}
  details.footer-fold{border-top:1px solid var(--line);padding:14px 0}
  details.footer-fold summary{
    list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;
    font-size:15px;font-weight:700;min-height:44px;
  }
  details.footer-fold summary::-webkit-details-marker{display:none}
  details.footer-fold summary::after{content:'+';color:var(--brand);font-size:18px;font-weight:700}
  details.footer-fold[open] summary::after{content:'−'}

  /* ---------- float cta ---------- */
  .float-cta{
    position:fixed;right:24px;bottom:24px;z-index:70;
    display:inline-flex;align-items:center;justify-content:center;gap:8px;
    height:48px;padding:0 20px;border-radius:var(--r-pill);
    background:var(--brand);color:#fff;font-weight:700;font-size:15px;
    box-shadow:0 8px 24px rgba(0,0,0,.4),0 0 22px var(--brand-glow);
    opacity:0;transform:translateY(8px);pointer-events:none;
    transition:opacity 200ms var(--tr),transform 200ms var(--tr),filter var(--tr);
  }
  .float-cta.is-show{opacity:1;transform:none;pointer-events:auto}
  @media(max-width:639px){
    .float-cta{
      left:16px;right:16px;bottom:calc(12px + env(safe-area-inset-bottom));
      height:52px;border-radius:14px;
    }
    body{padding-bottom:88px}
  }

  /* ---------- reveal ---------- */
  .reveal{opacity:0;transform:translateY(12px);transition:opacity 420ms var(--tr),transform 420ms var(--tr)}
  .reveal.is-in{opacity:1;transform:none}

  @media (hover:hover) and (pointer:fine){
    .btn-primary:hover{filter:brightness(1.06);box-shadow:0 12px 30px rgba(0,0,0,.45),0 0 26px var(--brand-glow)}
    .btn-ghost:hover{border-color:var(--brand);color:var(--ink)}
    .nav-link:hover{color:var(--ink)}
    .card:hover{transform:translateY(-3px);border-color:rgba(255,61,110,.4);box-shadow:var(--shadow-2)}
    .switch-item:hover{transform:translateY(-3px);border-color:rgba(255,61,110,.4);box-shadow:var(--shadow-2)}
    .row-item:hover{background:rgba(255,255,255,.04)}
  }
  @media (prefers-reduced-motion:reduce){
    html{scroll-behavior:auto}
    *,*::before,*::after{transition-duration:.01ms !important;animation-duration:.01ms !important}
    .reveal{opacity:1;transform:none}
  }

/* roulang page: category3 */
:root{
  --bg-0:#0A0A0E;
  --bg-1:#121219;
  --bg-2:#1A1A23;
  --line:rgba(255,255,255,.08);
  --line-strong:rgba(255,255,255,.16);
  --brand:#FF3D6E;
  --brand-700:#D9204F;
  --brand-glow:rgba(255,61,110,.35);
  --accent:#2EE6D6;
  --accent-glow:rgba(46,230,214,.28);
  --lime:#D8FF4D;
  --ink:#F2F3F7;
  --ink-2:#A6AABB;
  --ink-3:#6C7086;
  --paper:#F4F1EA;
  --paper-ink:#14141A;
  --paper-ink-2:#55565F;
  --radius-card:16px;
  --radius-img:12px;
  --radius-input:10px;
  --shadow-card:0 8px 24px rgba(0,0,0,.35);
  --shadow-hover:0 14px 36px rgba(0,0,0,.5);
  --ease:cubic-bezier(.2,.7,.3,1);
}

*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{
  margin:0;
  background:var(--bg-0);
  color:var(--ink);
  font-family:"PingFang SC","HarmonyOS Sans SC","Microsoft YaHei","Noto Sans SC",system-ui,sans-serif;
  font-size:16px;
  line-height:1.9;
  -webkit-font-smoothing:antialiased;
  padding-bottom:env(safe-area-inset-bottom);
}
img{max-width:100%;display:block;border-style:none}
a{color:inherit;text-decoration:none;transition:color 180ms var(--ease),border-color 180ms var(--ease),background-color 180ms var(--ease)}
button,input,textarea,select{font:inherit;color:inherit}
button{background:none;border:0;cursor:pointer}
h1,h2,h3,h4,p,ul,ol,figure{margin:0}
ul,ol{padding:0;list-style:none}
:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
[id]{scroll-margin-top:88px}
.mono{font-family:ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace}
.clamp-2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.clamp-3{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.tiny{font-size:13px;line-height:1.7;color:var(--ink-3)}
.rule-neon{height:1px;background:linear-gradient(90deg,var(--brand),var(--accent),rgba(255,255,255,0));border:0;margin:0}
.tex-stripes{background-image:repeating-linear-gradient(135deg,rgba(255,255,255,.05) 0 1px,transparent 1px 9px)}
.glow-brand{box-shadow:0 0 0 1px rgba(255,61,110,.45),0 8px 24px rgba(255,61,110,.28)}
.glow-accent{box-shadow:0 0 0 1px rgba(46,230,214,.35),0 8px 24px rgba(46,230,214,.18)}

::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-track{background:var(--bg-0)}
::-webkit-scrollbar-thumb{background:rgba(255,255,255,.12);border-radius:8px;border:2px solid var(--bg-0)}
::-webkit-scrollbar-thumb:hover{background:rgba(255,61,110,.5)}

/* ---------- 容器 ---------- */
.shell{
  width:100%;
  max-width:1200px;
  margin:0 auto;
  padding-left:20px;
  padding-right:20px;
}
@media (min-width:768px){.shell{padding-left:32px;padding-right:32px}}
@media (min-width:1024px){.shell{padding-left:40px;padding-right:40px}}

/* ---------- 头部导航 ---------- */
.site-header{
  position:sticky;
  top:0;
  z-index:60;
  height:60px;
  background-color:rgba(10,10,14,.86);
  -webkit-backdrop-filter:blur(12px);
  backdrop-filter:blur(12px);
  border-bottom:1px solid var(--line);
  transition:border-color 180ms var(--ease),background-image 180ms var(--ease);
}
.site-header.is-scrolled{
  border-bottom-color:transparent;
  background-image:linear-gradient(90deg,var(--brand),rgba(255,61,110,.15),rgba(255,61,110,0));
  background-repeat:no-repeat;
  background-size:100% 1px;
  background-position:0 100%;
}
@media (min-width:1024px){.site-header{height:68px}}
.header-inner{
  height:100%;
  display:flex;
  align-items:center;
  gap:16px;
}
.logo{
  display:inline-flex;
  align-items:center;
  gap:9px;
  font-size:16px;
  font-weight:800;
  letter-spacing:-.01em;
  color:var(--ink);
  white-space:nowrap;
}
.logo-mark{
  width:28px;height:28px;
  display:inline-flex;align-items:center;justify-content:center;
  border-radius:9px;
  background:rgba(255,61,110,.12);
  border:1px solid rgba(255,61,110,.42);
  color:var(--brand);
  flex:0 0 28px;
}
@media (min-width:1024px){.logo{font-size:17px}}

.nav-main{
  display:none;
  flex:1 1 auto;
  align-items:center;
  justify-content:center;
  gap:2px;
  min-width:0;
}
@media (min-width:1100px){.nav-main{display:flex}}
.nav-link{
  position:relative;
  padding:10px 10px;
  font-size:14px;
  color:var(--ink-2);
  white-space:nowrap;
  border-radius:8px;
}
.nav-link:hover{color:var(--ink);background:rgba(255,255,255,.04)}
.nav-link.active{color:var(--brand);text-shadow:0 0 12px var(--brand-glow)}
.nav-link.active::after{
  content:"";
  position:absolute;
  left:50%;transform:translateX(-50%);
  bottom:4px;
  width:60%;
  height:2px;
  border-radius:2px;
  background:var(--brand);
  box-shadow:0 0 10px var(--brand-glow);
}
.header-cta{display:none;margin-left:auto}
@media (min-width:640px){.header-cta{display:inline-flex}}

.nav-toggle{
  margin-left:auto;
  width:44px;height:44px;
  display:inline-flex;flex-direction:column;
  align-items:center;justify-content:center;
  gap:5px;
  border-radius:10px;
  border:1px solid var(--line);
}
@media (min-width:1100px){.nav-toggle{display:none}}
.nav-toggle span{
  display:block;width:18px;height:2px;border-radius:2px;
  background:var(--ink);
  transition:transform 180ms var(--ease),opacity 180ms var(--ease);
}
.nav-toggle.is-open span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.nav-toggle.is-open span:nth-child(2){opacity:0}
.nav-toggle.is-open span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

.drawer{
  position:fixed;
  inset:60px 0 0 0;
  z-index:55;
  background:rgba(10,10,14,.98);
  border-top:1px solid var(--line);
  padding:12px 20px calc(96px + env(safe-area-inset-bottom));
  overflow-y:auto;
  display:flex;
  flex-direction:column;
  gap:0;
  transform:translateY(-8px);
  opacity:0;
  visibility:hidden;
  transition:opacity 180ms var(--ease),transform 180ms var(--ease),visibility 180ms var(--ease);
}
.drawer.is-open{opacity:1;visibility:visible;transform:none}
@media (min-width:1100px){.drawer{display:none}}
.drawer-link{
  display:flex;
  align-items:center;
  justify-content:space-between;
  min-height:56px;
  font-size:16px;
  color:var(--ink-2);
  border-bottom:1px solid var(--line);
}
.drawer-link.active{color:var(--brand)}
.drawer-link svg{opacity:.5}
.drawer-cta{margin-top:20px}

/* ---------- 按钮 ---------- */
.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  min-height:44px;
  padding:0 22px;
  font-size:15px;
  font-weight:700;
  border-radius:999px;
  border:1px solid transparent;
  transition:filter 180ms var(--ease),transform 180ms var(--ease),box-shadow 180ms var(--ease),border-color 180ms var(--ease),color 180ms var(--ease);
}
.btn-primary{
  background:var(--brand);
  color:#fff;
  box-shadow:0 0 0 1px rgba(255,61,110,.4),0 8px 20px rgba(255,61,110,.24);
}
.btn-primary:hover{filter:brightness(1.06);box-shadow:0 0 0 1px rgba(255,61,110,.5),0 12px 28px rgba(255,61,110,.34)}
.btn-primary:active{transform:scale(.98)}
.btn-ghost{
  background:transparent;
  color:var(--ink);
  border-color:var(--line-strong);
}
.btn-ghost:hover{border-color:var(--brand);color:var(--brand)}
.btn-ghost:active{transform:scale(.98)}
.btn-sm{min-height:40px;padding:0 16px;font-size:14px}

.link-arrow{
  display:inline-flex;align-items:center;gap:6px;
  color:var(--accent);
  font-size:14px;
  font-weight:600;
}
.link-arrow svg{transition:transform 180ms var(--ease)}
.link-arrow:hover svg{transform:translateX(4px)}

/* ---------- 徽章 / 标签 ---------- */
.badge{
  display:inline-flex;
  align-items:center;
  height:23px;
  padding:0 9px;
  border-radius:6px;
  font-size:12px;
  font-weight:700;
  letter-spacing:.02em;
  background:rgba(255,61,110,.12);
  color:var(--brand);
}
.badge-accent{background:rgba(46,230,214,.12);color:var(--accent)}
.tag-row{display:flex;flex-wrap:wrap;gap:10px}
.tag{
  display:inline-flex;align-items:center;gap:8px;
  min-height:38px;
  padding:0 16px;
  border-radius:999px;
  border:1px solid var(--line);
  background:var(--bg-1);
  color:var(--ink-2);
  font-size:14px;
}
.tag::before{
  content:"";width:6px;height:6px;border-radius:50%;
  background:var(--accent);
}
.tag:hover{border-color:rgba(255,61,110,.45);color:var(--ink)}

.eyebrow{
  display:inline-flex;align-items:center;gap:8px;
  font-size:12px;
  font-weight:700;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:var(--ink-3);
  font-family:ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;
}
.eyebrow .dot{width:7px;height:7px;border-radius:50%;background:var(--brand);box-shadow:0 0 10px var(--brand-glow)}

/* ---------- 板块 ---------- */
.section{padding-top:56px;padding-bottom:56px}
@media (min-width:768px){.section{padding-top:80px;padding-bottom:80px}}
@media (min-width:1024px){.section{padding-top:112px;padding-bottom:112px}}
.section-line{border-top:1px solid var(--line)}
h1{
  font-size:clamp(28px,5vw,44px);
  line-height:1.25;
  font-weight:800;
  letter-spacing:-.01em;
}
h2{
  font-size:clamp(22px,3.4vw,32px);
  line-height:1.3;
  font-weight:700;
  letter-spacing:-.01em;
}
h3{font-size:18px;line-height:1.45;font-weight:700}
@media (min-width:1024px){h3{font-size:20px}}
.section-head{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-end;justify-content:space-between}
.section-sub{margin-top:14px;font-size:16px;color:var(--ink-2);max-width:720px;line-height:1.9}

/* ---------- 面包屑 ---------- */
.crumb{
  display:flex;
  align-items:center;
  gap:10px;
  min-height:56px;
  font-size:13px;
  color:var(--ink-3);
  overflow:hidden;
}
.crumb a{color:var(--ink-3)}
.crumb a:hover{color:var(--brand)}
.crumb-sep{opacity:.5}
.crumb-current{
  color:var(--ink-2);
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  max-width:60vw;
}

/* ---------- 分类 Hero ---------- */
.cat-hero{
  position:relative;
  padding:32px 0 56px;
  background-image:
    linear-gradient(rgba(10,10,14,.9),rgba(10,10,14,.96)),
    url('/assets/images/backpic/back-2.png');
  background-size:cover,cover;
  background-position:center,center;
  background-repeat:no-repeat,no-repeat;
  border-bottom:1px solid var(--line);
  overflow:hidden;
}
.cat-hero::after{
  content:"";
  position:absolute;
  inset:0;
  background-image:repeating-linear-gradient(135deg,rgba(255,255,255,.08) 0 1px,transparent 1px 10px);
  opacity:.5;
  pointer-events:none;
}
.cat-hero .shell{position:relative;z-index:1}
.cat-hero-grid{
  display:grid;
  grid-template-columns:1fr;
  gap:32px;
  align-items:center;
  margin-top:12px;
}
@media (min-width:1024px){
  .cat-hero-grid{grid-template-columns:6fr 6fr;gap:48px}
}
.cat-hero h1{margin-top:16px}
.cat-hero .lead{
  margin-top:18px;
  font-size:17px;
  line-height:1.9;
  color:var(--ink-2);
  max-width:620px;
}
.hero-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}
.hero-meta{
  display:flex;flex-wrap:wrap;gap:12px 28px;
  margin-top:32px;
  padding-top:24px;
  border-top:1px solid var(--line);
}
.hero-meta-item{display:flex;flex-direction:column;gap:2px}
.hero-meta-num{
  font-family:ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;
  font-size:22px;font-weight:700;color:var(--ink);line-height:1.2;
}
.hero-meta-label{font-size:13px;color:var(--ink-3)}
.hero-figure{
  position:relative;
  border-radius:var(--radius-card);
  overflow:hidden;
  border:1px solid rgba(255,61,110,.38);
  box-shadow:var(--shadow-card);
}
.hero-figure img{
  width:100%;
  aspect-ratio:16/10;
  object-fit:cover;
  border-radius:0;
}
.hero-figure::after{
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(180deg,rgba(10,10,14,0) 45%,rgba(10,10,14,.45));
  pointer-events:none;
}

/* ---------- 标签条板块 ---------- */
.tagline-panel{
  display:grid;
  grid-template-columns:1fr;
  gap:20px;
  padding:24px;
  border-radius:var(--radius-card);
  border:1px solid var(--line);
  background:var(--bg-1);
}
@media (min-width:1024px){
  .tagline-panel{grid-template-columns:3fr 9fr;align-items:center;gap:32px;padding:28px 32px}
}
.tagline-panel h2{font-size:clamp(20px,2.4vw,24px)}

/* ---------- 时间轴 ---------- */
.timeline{
  position:relative;
  margin-top:36px;
}
.timeline::before{
  content:"";
  position:absolute;
  left:27px;
  top:14px;
  bottom:24px;
  width:1px;
  background:linear-gradient(180deg,rgba(255,61,110,.6),rgba(255,61,110,.06));
}
@media (min-width:768px){
  .timeline::before{left:35px}
}
.tl-item{
  position:relative;
  display:grid;
  grid-template-columns:56px 1fr;
  gap:16px;
  padding-bottom:36px;
}
@media (min-width:768px){
  .tl-item{grid-template-columns:80px 1fr;gap:24px;padding-bottom:44px}
}
.tl-item::before{
  content:"";
  position:absolute;
  left:23px;
  top:14px;
  width:9px;height:9px;
  border-radius:50%;
  background:var(--brand);
  box-shadow:0 0 0 4px rgba(255,61,110,.14),0 0 12px var(--brand-glow);
}
@media (min-width:768px){
  .tl-item::before{left:31px}
}
.tl-item:last-child{padding-bottom:0}
.tl-num{
  font-family:ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;
  font-size:26px;
  font-weight:800;
  line-height:1.15;
  color:var(--brand);
  letter-spacing:-.02em;
  padding-left:4px;
}
@media (min-width:768px){.tl-num{font-size:34px}}
.tl-body h3{margin-bottom:8px}
.tl-body p{font-size:16px;color:var(--ink-2);max-width:620px}
.tl-body .tl-note{
  margin-top:12px;
  display:inline-flex;
  align-items:center;
  gap:8px;
  font-size:13px;
  color:var(--ink-3);
}
.tl-note .bar{width:14px;height:2px;border-radius:2px;background:var(--accent)}

/* ---------- 侧栏 ---------- */
.sticky-side{
  border:1px solid var(--line);
  border-radius:var(--radius-card);
  background:var(--bg-1);
  padding:20px;
}
@media (min-width:1024px){
  .sticky-side{position:sticky;top:96px}
}
.side-title{
  font-size:15px;
  font-weight:700;
  padding-bottom:14px;
  border-bottom:1px solid var(--line);
}
.side-list{margin-top:6px}
.side-list li + li{border-top:1px solid var(--line)}
.side-item{
  display:block;
  padding:16px 4px;
  min-height:88px;
}
.side-item:hover{background:rgba(255,255,255,.03)}
.side-name{
  display:flex;
  align-items:center;
  gap:8px;
  font-size:16px;
  font-weight:700;
  color:var(--ink);
}
.side-name::before{
  content:"";
  width:6px;height:6px;border-radius:50%;
  background:var(--brand);
  flex:0 0 6px;
}
.side-item:hover .side-name{color:var(--brand)}
.side-desc{
  display:block;
  margin-top:8px;
  font-size:13px;
  line-height:1.8;
  color:var(--ink-3);
}

/* ---------- FAQ ---------- */
.faq-wrap{max-width:880px;margin:32px auto 0;display:flex;flex-direction:column;gap:12px}
.faq-item{
  position:relative;
  background:var(--bg-2);
  border:1px solid var(--line);
  border-radius:14px;
  overflow:hidden;
  transition:border-color 180ms var(--ease),background-color 180ms var(--ease),box-shadow 180ms var(--ease);
}
.faq-q{
  width:100%;
  min-height:64px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  padding:16px 20px;
  text-align:left;
  font-size:17px;
  font-weight:700;
  color:var(--ink);
}
.faq-icon{
  position:relative;
  width:18px;height:18px;
  flex:0 0 18px;
}
.faq-icon::before,.faq-icon::after{
  content:"";
  position:absolute;
  background:var(--brand);
  border-radius:2px;
}
.faq-icon::before{left:0;top:8px;width:18px;height:2px}
.faq-icon::after{left:8px;top:0;width:2px;height:18px;transition:transform 180ms var(--ease)}
.faq-a{
  max-height:0;
  overflow:hidden;
  transition:max-height 260ms var(--ease);
}
.faq-a p{
  padding:0 20px 20px;
  font-size:15px;
  line-height:1.9;
  color:var(--ink-2);
  max-width:720px;
}
.faq-item.open{
  background:#1F1F29;
  border-color:rgba(255,61,110,.45);
  box-shadow:0 0 0 1px rgba(255,61,110,.18),0 10px 28px rgba(255,61,110,.12);
}
.faq-item.open::before{
  content:"";
  position:absolute;
  left:0;top:0;bottom:0;
  width:3px;
  background:var(--brand);
}
.faq-item.open .faq-icon::after{transform:scaleY(0)}

/* ---------- 上下栏目切换 ---------- */
.pager{
  display:grid;
  grid-template-columns:1fr;
  gap:16px;
}
@media (min-width:768px){.pager{grid-template-columns:1fr 1fr}}
.pager-card{
  display:flex;
  flex-direction:column;
  gap:6px;
  padding:20px;
  border-radius:var(--radius-card);
  border:1px solid var(--line);
  background:var(--bg-2);
  min-height:88px;
  transition:border-color 180ms var(--ease),transform 180ms var(--ease),box-shadow 180ms var(--ease);
}
.pager-dir{
  font-size:12px;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:var(--ink-3);
  font-family:ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;
}
.pager-name{font-size:17px;font-weight:700;color:var(--ink)}
.pager-next{text-align:right}
.pager-card:hover{border-color:rgba(255,61,110,.45);transform:translateY(-3px);box-shadow:var(--shadow-hover)}
.pager-card:hover .pager-name{color:var(--brand)}

/* ---------- 转化条 ---------- */
.contact-band{
  border-top:1px solid transparent;
  border-image:linear-gradient(90deg,var(--brand),var(--accent),rgba(255,255,255,0)) 1;
  background:var(--bg-1);
  padding-top:56px;
  padding-bottom:56px;
}
@media (min-width:1024px){.contact-band{padding-top:80px;padding-bottom:80px}}
.contact-grid{
  display:grid;
  grid-template-columns:1fr;
  gap:32px;
}
@media (min-width:1024px){
  .contact-grid{grid-template-columns:7fr 5fr;gap:56px;align-items:start}
}
.contact-form{display:flex;flex-direction:column;gap:14px}
.field label{display:block;font-size:13px;color:var(--ink-3);margin-bottom:6px}
.field input,.field textarea{
  width:100%;
  height:48px;
  padding:0 14px;
  background:var(--bg-0);
  border:1px solid var(--line);
  border-radius:var(--radius-input);
  color:var(--ink);
  font-size:15px;
  transition:border-color 180ms var(--ease),box-shadow 180ms var(--ease);
}
.field textarea{height:112px;padding:12px 14px;resize:vertical;line-height:1.8}
.field input::placeholder,.field textarea::placeholder{color:var(--ink-3)}
.field input:focus,.field textarea:focus{
  outline:none;
  border-color:var(--brand);
  box-shadow:0 0 0 4px rgba(255,61,110,.12);
}
.form-note{font-size:13px;color:var(--ink-3);line-height:1.7}

/* ---------- 页脚 ---------- */
.site-footer{
  position:relative;
  background:var(--bg-0);
  border-top:1px solid var(--line);
}
.site-footer::before{
  content:"";
  position:absolute;
  top:-1px;left:0;right:0;height:1px;
  background:linear-gradient(90deg,var(--brand),var(--accent),rgba(255,255,255,0));
}
.site-footer .container{
  max-width:1200px;
  margin:0 auto;
  padding-left:20px;
  padding-right:20px;
}
@media (min-width:768px){.site-footer .container{padding-left:32px;padding-right:32px}}
@media (min-width:1024px){.site-footer .container{padding-left:40px;padding-right:40px}}
.site-footer h3{font-size:15px;font-weight:700}
.footer-link{
  display:block;
  padding:7px 0;
  font-size:14px;
  color:var(--ink-2);
}
.footer-link:hover{color:var(--brand)}
.footer-social{
  width:38px;height:38px;
  display:inline-flex;align-items:center;justify-content:center;
  border-radius:50%;
  border:1px solid var(--line);
  color:var(--ink-2);
}
.footer-social:hover{border-color:var(--brand);color:var(--brand)}
.footer-bottom{
  border-top:1px solid var(--line);
  padding:18px 0 24px;
  display:flex;
  flex-wrap:wrap;
  gap:8px 16px;
  justify-content:space-between;
  font-size:13px;
  color:var(--ink-3);
}
.footer-details summary{
  min-height:44px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  font-size:15px;
  font-weight:700;
  cursor:pointer;
  border-bottom:1px solid var(--line);
  list-style:none;
}
.footer-details summary::-webkit-details-marker{display:none}
.footer-details summary::after{
  content:"+";
  color:var(--brand);
  font-size:18px;
  line-height:1;
}
.footer-details[open] summary::after{content:"−"}

/* ---------- 浮动 CTA ---------- */
.float-cta{
  position:fixed;
  z-index:70;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  background:var(--brand);
  color:#fff;
  font-weight:700;
  border-radius:999px;
  box-shadow:0 0 0 1px rgba(255,61,110,.45),0 10px 26px rgba(255,61,110,.3);
  opacity:0;
  transform:translateY(8px);
  transition:opacity 200ms var(--ease),transform 200ms var(--ease);
  pointer-events:none;
}
.float-cta.is-visible{opacity:1;transform:none;pointer-events:auto}
@media (min-width:768px){
  .float-cta{right:24px;bottom:24px;min-height:52px;padding:0 22px;font-size:15px}
}
@media (max-width:767px){
  .float-cta{
    left:16px;right:16px;
    bottom:calc(16px + env(safe-area-inset-bottom));
    min-height:52px;
    font-size:15px;
    border-radius:14px;
  }
}

/* ---------- 进场 ---------- */
.reveal{opacity:0;transform:translateY(12px);transition:opacity .5s var(--ease),transform .5s var(--ease)}
.reveal.in{opacity:1;transform:none}

@media (hover:hover) and (pointer:fine){
  .tl-item:hover .tl-num{filter:brightness(1.08)}
}
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}
  .reveal{opacity:1;transform:none;transition:none}
  *{transition-duration:.01ms !important;animation-duration:.01ms !important}
}

/* roulang page: category4 */
:root{
  --bg-0:#0A0A0E;
  --bg-1:#121219;
  --bg-2:#1A1A23;
  --line:rgba(255,255,255,.08);
  --line-strong:rgba(255,255,255,.16);
  --brand:#FF3D6E;
  --brand-700:#D9204F;
  --brand-glow:rgba(255,61,110,.35);
  --accent:#2EE6D6;
  --accent-glow:rgba(46,230,214,.28);
  --lime:#D8FF4D;
  --ink:#F2F3F7;
  --ink-2:#A6AABB;
  --ink-3:#6C7086;
  --paper:#F4F1EA;
  --paper-ink:#14141A;
  --paper-ink-2:#55565F;
  --r-card:16px;
  --r-img:12px;
  --r-input:10px;
  --ease:cubic-bezier(.2,.7,.3,1);
  --shadow-1:0 8px 24px rgba(0,0,0,.35);
  --shadow-2:0 14px 36px rgba(0,0,0,.5);
  --font-cn:"PingFang SC","HarmonyOS Sans SC","Microsoft YaHei","Noto Sans SC",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --font-mono:Inter,ui-monospace,SFMono-Regular,Menlo,monospace;
}

*,*::before,*::after{box-sizing:border-box;}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;}
body{
  margin:0;
  background:var(--bg-0);
  color:var(--ink);
  font-family:var(--font-cn);
  font-size:16px;
  line-height:1.9;
  letter-spacing:0;
  -webkit-font-smoothing:antialiased;
}
body.no-scroll{overflow:hidden;}
img{max-width:100%;display:block;object-fit:cover;}
a{color:inherit;text-decoration:none;}
button,input,textarea{font:inherit;color:inherit;}
h1,h2,h3,h4,p{margin:0;}
ul,ol{margin:0;padding:0;list-style:none;}
:focus-visible{outline:2px solid var(--brand);outline-offset:2px;}

.container{width:100%;max-width:1200px;margin:0 auto;padding-left:20px;padding-right:20px;}
@media (min-width:768px){.container{padding-left:32px;padding-right:32px;}}
@media (min-width:1024px){.container{padding-left:40px;padding-right:40px;}}

.skip-link{position:absolute;left:-9999px;top:0;background:var(--brand);color:#fff;padding:10px 16px;border-radius:0 0 10px 0;z-index:200;}
.skip-link:focus{left:0;}

/* ---------- 顶栏 ---------- */
.site-header{
  position:sticky;top:0;z-index:60;
  background:rgba(10,10,14,.86);
  -webkit-backdrop-filter:blur(12px);
  backdrop-filter:blur(12px);
  border-bottom:1px solid var(--line);
}
.site-header::after{
  content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;
  background:linear-gradient(90deg,var(--brand),rgba(255,61,110,0) 65%);
  opacity:0;transition:opacity 180ms var(--ease);
}
.site-header.is-scrolled::after{opacity:1;}
.header-inner{
  display:flex;align-items:center;justify-content:space-between;
  gap:16px;height:60px;
}
@media (min-width:1024px){.header-inner{height:68px;}}

.logo{display:inline-flex;align-items:center;gap:9px;font-weight:800;font-size:15px;letter-spacing:.01em;white-space:nowrap;}
.logo-mark{
  width:28px;height:28px;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;
  color:var(--brand);background:rgba(255,61,110,.10);border:1px solid rgba(255,61,110,.35);flex:none;
}
@media (min-width:768px){.logo{font-size:16px;}.logo-mark{width:30px;height:30px;}}

.nav-main{display:none;align-items:center;gap:22px;}
@media (min-width:1024px){.nav-main{display:flex;}}
.nav-link{
  position:relative;font-size:14px;color:var(--ink-2);padding:6px 0;
  transition:color 180ms var(--ease);
}
.nav-link::after{
  content:"";position:absolute;left:20%;right:20%;bottom:-2px;height:2px;border-radius:2px;
  background:var(--brand);opacity:0;transition:opacity 180ms var(--ease);
  box-shadow:0 0 10px var(--brand-glow);
}
.nav-link.active{color:var(--brand);text-shadow:0 0 12px var(--brand-glow);}
.nav-link.active::after{opacity:1;}

.header-right{display:flex;align-items:center;gap:10px;}
.header-cta{display:none;}
@media (min-width:1024px){.header-cta{display:inline-flex;}}

.nav-toggle{
  width:44px;height:44px;border:1px solid var(--line-strong);border-radius:12px;background:transparent;
  display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;cursor:pointer;
  transition:border-color 180ms var(--ease);
}
@media (min-width:1024px){.nav-toggle{display:none;}}
.nav-toggle span{display:block;width:18px;height:2px;border-radius:2px;background:var(--ink);transition:transform 180ms var(--ease),opacity 180ms var(--ease);}
.nav-toggle.open span:nth-child(1){transform:translateY(7px) rotate(45deg);}
.nav-toggle.open span:nth-child(2){opacity:0;}
.nav-toggle.open span:nth-child(3){transform:translateY(-7px) rotate(-45deg);}

.mobile-drawer{
  display:none;flex-direction:column;
  position:fixed;left:0;right:0;top:60px;bottom:0;z-index:55;
  background:rgba(10,10,14,.98);
  border-top:1px solid var(--line);
  padding:8px 20px calc(20px + env(safe-area-inset-bottom));
  overflow-y:auto;
}
.mobile-drawer.open{display:flex;}
.mobile-drawer a.m-link{
  display:flex;align-items:center;justify-content:space-between;
  min-height:56px;border-bottom:1px solid var(--line);color:var(--ink);font-size:15px;
}
.mobile-drawer a.m-link.active{color:var(--brand);}
.mobile-drawer .m-cta{margin-top:20px;}

/* ---------- 按钮 ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  min-height:44px;padding:0 22px;border-radius:999px;font-weight:700;font-size:15px;
  border:1px solid transparent;cursor:pointer;
  transition:filter 180ms var(--ease),transform 180ms var(--ease),border-color 180ms var(--ease),background-color 180ms var(--ease),box-shadow 180ms var(--ease);
}
.btn-sm{min-height:40px;padding:0 18px;font-size:14px;}
.btn-primary{background:var(--brand);color:#fff;box-shadow:0 0 0 rgba(255,61,110,0);}
.btn-primary:hover{filter:brightness(1.06);box-shadow:0 0 22px var(--brand-glow);}
.btn-primary:active{transform:scale(.98);}
.btn-ghost{background:transparent;color:var(--ink);border-color:var(--line-strong);border-radius:10px;}
.btn-ghost:hover{border-color:var(--brand);}
.btn-ghost:active{transform:scale(.98);}
.btn-wide{width:100%;}

.link-arrow{
  display:inline-flex;align-items:center;gap:6px;color:var(--accent);font-size:14px;font-weight:600;
}
.link-arrow svg{transition:transform 180ms var(--ease);}
.link-arrow:hover svg{transform:translateX(4px);}

/* ---------- 通用区块 ---------- */
.section{padding:56px 0;}
@media (min-width:768px){.section{padding:80px 0;}}
@media (min-width:1024px){.section{padding:112px 0;}}
.section-alt{background:var(--bg-1);border-top:1px solid var(--line);border-bottom:1px solid var(--line);}
.section-head{max-width:780px;margin-bottom:36px;}
.section-head h2{font-size:clamp(22px,3.4vw,32px);line-height:1.3;font-weight:700;}
.section-head p{margin-top:14px;color:var(--ink-2);font-size:16px;}
.eyebrow{
  display:inline-flex;align-items:center;gap:8px;
  font-family:var(--font-mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;
  color:var(--ink-2);
}
.eyebrow .dot{width:7px;height:7px;border-radius:50%;background:var(--brand);box-shadow:0 0 10px var(--brand-glow);}
.rule-neon{height:1px;background:linear-gradient(90deg,var(--brand),var(--accent) 55%,rgba(46,230,214,0));border:0;margin:0;}

/* ---------- 面包屑 ---------- */
.breadcrumb{border-bottom:1px solid var(--line);background:var(--bg-0);}
.breadcrumb ol{display:flex;align-items:center;gap:10px;height:56px;font-size:13px;color:var(--ink-3);overflow:hidden;}
.breadcrumb a{color:var(--ink-3);}
.breadcrumb a:hover{color:var(--accent);}
.breadcrumb .current{color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}

/* ---------- 栏目头部 ---------- */
.page-hero{padding:48px 0 52px;position:relative;overflow:hidden;}
@media (min-width:768px){.page-hero{padding:64px 0 72px;}}
.page-hero::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background-image:repeating-linear-gradient(135deg,rgba(255,255,255,.05) 0 1px,transparent 1px 10px);
  opacity:.75;
}
.page-hero .container{position:relative;}
.page-title{
  font-size:clamp(28px,5vw,44px);line-height:1.25;font-weight:800;margin-top:16px;
  letter-spacing:-.01em;
}
.page-lead{margin-top:20px;color:var(--ink-2);font-size:17px;max-width:780px;}
.figure-16-10{
  position:relative;aspect-ratio:16/10;border-radius:var(--r-card);overflow:hidden;
  border:1px solid rgba(255,255,255,.10);box-shadow:var(--shadow-1);background:var(--bg-1);margin:0;
}
.figure-16-10 img{width:100%;height:100%;}
.figure-fallback{
  position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--accent);
  background:var(--bg-1);
  background-image:repeating-linear-gradient(135deg,rgba(46,230,214,.08) 0 1px,transparent 1px 9px);
}

/* ---------- 对照表版式 ---------- */
.compare{border-top:1px solid var(--line);}
.compare-row{
  display:grid;grid-template-columns:1fr;gap:10px;
  padding:26px 0;border-bottom:1px solid var(--line);
}
@media (min-width:1024px){
  .compare-row{grid-template-columns:4fr 8fr;gap:32px;padding:34px 0;align-items:start;}
}
.compare-row h3{
  font-size:18px;font-weight:700;line-height:1.5;display:flex;align-items:center;gap:12px;
}
.compare-row h3 .cn{font-family:var(--font-mono);font-size:13px;color:var(--lime);letter-spacing:.06em;}
.compare-row p{color:var(--ink-2);font-size:16px;line-height:1.9;}

/* ---------- 胶囊标签条 ---------- */
.pill-bar{display:flex;flex-wrap:wrap;gap:12px;margin-top:40px;}
.pill{
  flex:1 1 calc(50% - 12px);min-width:140px;min-height:46px;
  display:inline-flex;align-items:center;justify-content:center;
  border-radius:999px;border:1px solid var(--line-strong);
  color:var(--ink-2);font-size:14px;letter-spacing:.02em;
  transition:border-color 180ms var(--ease),color 180ms var(--ease),background-color 180ms var(--ease);
}
@media (min-width:768px){.pill{flex:1 1 0;}}
.pill:hover{border-color:var(--accent);color:var(--accent);background:rgba(46,230,214,.06);}

/* ---------- 列表行 ---------- */
.row-list{border-top:1px solid var(--line);}
.row-item{
  display:flex;gap:18px;align-items:flex-start;
  padding:22px 0;border-bottom:1px solid var(--line);
  transition:background-color 180ms var(--ease);
}
@media (min-width:1024px){.row-item{padding:26px 8px;min-height:88px;}}
.row-num{
  font-family:var(--font-mono);font-size:14px;color:var(--brand);flex:none;width:34px;padding-top:2px;letter-spacing:.06em;
}
.row-body h3{font-size:17px;font-weight:700;line-height:1.5;}
.row-body p{margin-top:6px;color:var(--ink-2);font-size:15px;line-height:1.85;}

/* ---------- FAQ ---------- */
.faq-wrap{max-width:880px;margin:0 auto;}
.faq-item{
  background:var(--bg-2);border:1px solid var(--line);border-radius:14px;
  margin-bottom:12px;overflow:hidden;position:relative;
  transition:background-color 180ms var(--ease),border-color 180ms var(--ease);
}
.faq-item::before{
  content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--brand);
  opacity:0;transition:opacity 180ms var(--ease);
}
.faq-item.open{background:#20202B;border-color:rgba(255,61,110,.4);}
.faq-item.open::before{opacity:1;}
.faq-q{
  width:100%;display:flex;align-items:center;justify-content:space-between;gap:16px;
  min-height:64px;padding:12px 20px;background:transparent;border:0;cursor:pointer;
  text-align:left;font-size:17px;font-weight:700;color:var(--ink);
}
.faq-icon{position:relative;width:16px;height:16px;flex:none;}
.faq-icon::before,.faq-icon::after{
  content:"";position:absolute;left:50%;top:50%;background:var(--brand);border-radius:2px;
  transform:translate(-50%,-50%);transition:transform 180ms var(--ease),opacity 180ms var(--ease);
}
.faq-icon::before{width:16px;height:2px;}
.faq-icon::after{width:2px;height:16px;}
.faq-item.open .faq-icon::after{transform:translate(-50%,-50%) rotate(90deg);opacity:0;}
.faq-a{
  max-height:0;overflow:hidden;transition:max-height 240ms var(--ease);
}
.faq-a p{padding:0 20px 20px;color:var(--ink-2);font-size:15px;line-height:1.9;}

/* ---------- 转化条 ---------- */
.cta-band{
  position:relative;background:var(--bg-0);border-top:1px solid var(--line);
}
.cta-band::before{
  content:"";position:absolute;left:0;right:0;top:-1px;height:1px;
  background:linear-gradient(90deg,var(--brand),var(--accent),rgba(46,230,214,0));
}
.cta-band h2{font-size:clamp(22px,3.4vw,32px);line-height:1.3;font-weight:700;}
.cta-band p.lead{margin-top:14px;color:var(--ink-2);font-size:16px;max-width:520px;}
.form-field{margin-bottom:14px;}
.form-field label{display:block;font-size:13px;color:var(--ink-3);margin-bottom:7px;}
.form-field input,.form-field textarea{
  width:100%;background:var(--bg-1);border:1px solid var(--line);border-radius:var(--r-input);
  padding:12px 14px;font-size:15px;min-height:48px;
  transition:border-color 180ms var(--ease),box-shadow 180ms var(--ease);
}
.form-field textarea{min-height:110px;resize:vertical;}
.form-field input::placeholder,.form-field textarea::placeholder{color:var(--ink-3);}
.form-field input:focus,.form-field textarea:focus{
  outline:none;border-color:var(--brand);box-shadow:0 0 0 4px rgba(255,61,110,.12);
}
.form-note{margin-top:12px;font-size:13px;color:var(--ink-3);}

/* ---------- 栏目切换 ---------- */
.switch-bar{display:grid;grid-template-columns:1fr;gap:14px;}
@media (min-width:768px){.switch-bar{grid-template-columns:1fr 1fr;}}
.switch-card{
  display:flex;align-items:center;gap:14px;
  background:var(--bg-2);border:1px solid var(--line);border-radius:var(--r-card);
  padding:18px 20px;transition:border-color 180ms var(--ease),transform 180ms var(--ease),box-shadow 180ms var(--ease);
}
.switch-card .dir{font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);}
.switch-card .ttl{font-size:16px;font-weight:700;margin-top:4px;}
.switch-card.next{justify-content:flex-end;text-align:right;}

/* ---------- 页脚 ---------- */
.site-footer{
  position:relative;background:var(--bg-1);border-top:1px solid var(--line);
}
.site-footer::before{
  content:"";position:absolute;left:0;right:0;top:-1px;height:1px;
  background:linear-gradient(90deg,var(--brand),var(--accent) 45%,rgba(46,230,214,0));
}
.site-footer h3{font-size:15px;font-weight:700;}
.footer-link{
  display:block;padding:7px 0;color:var(--ink-2);font-size:14px;
  transition:color 180ms var(--ease),transform 180ms var(--ease);
}
.footer-social{
  width:38px;height:38px;border-radius:11px;border:1px solid var(--line-strong);
  display:inline-flex;align-items:center;justify-content:center;color:var(--ink-2);
  transition:border-color 180ms var(--ease),color 180ms var(--ease);
}
.tiny{font-size:13px;line-height:1.7;color:var(--ink-3);}
.footer-bottom{
  border-top:1px solid var(--line);padding:18px 0 calc(18px + env(safe-area-inset-bottom));
  display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between;align-items:center;
}
details.f-details{border-bottom:1px solid var(--line);}
details.f-details summary{
  list-style:none;cursor:pointer;min-height:52px;display:flex;align-items:center;justify-content:space-between;
  font-size:15px;font-weight:700;
}
details.f-details summary::-webkit-details-marker{display:none;}
details.f-details summary::after{content:"+";color:var(--brand);font-size:18px;}
details.f-details[open] summary::after{content:"−";}

/* ---------- 浮动 CTA ---------- */
.float-cta{
  position:fixed;right:24px;bottom:24px;z-index:70;
  display:inline-flex;align-items:center;gap:8px;
  min-height:48px;padding:0 22px;border-radius:999px;
  background:var(--brand);color:#fff;font-weight:700;font-size:15px;
  box-shadow:0 0 22px var(--brand-glow),var(--shadow-2);
  opacity:0;transform:translateY(8px);pointer-events:none;
  transition:opacity 200ms var(--ease),transform 200ms var(--ease),filter 180ms var(--ease);
}
.float-cta.show{opacity:1;transform:translateY(0);pointer-events:auto;}
.float-cta:hover{filter:brightness(1.06);}
@media (max-width:639px){
  .float-cta{
    left:16px;right:16px;bottom:calc(12px + env(safe-area-inset-bottom));
    justify-content:center;border-radius:14px;height:52px;min-height:52px;
  }
  body{padding-bottom:88px;}
}

/* ---------- 动效 ---------- */
.reveal{opacity:0;transform:translateY(12px);transition:opacity 500ms var(--ease),transform 500ms var(--ease);}
.reveal.in{opacity:1;transform:none;}

@media (hover:hover) and (pointer:fine){
  .row-item:hover{background-color:rgba(255,255,255,.04);}
  .switch-card:hover{border-color:rgba(255,61,110,.4);transform:translateY(-3px);box-shadow:var(--shadow-2);}
  .footer-link:hover{color:var(--brand);transform:translateX(3px);}
  .footer-social:hover{border-color:var(--brand);color:var(--brand);}
  .nav-link:hover{color:var(--ink);}
  .nav-link.active:hover{color:var(--brand);}
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto;}
  *,*::before,*::after{animation-duration:.001ms !important;transition-duration:.001ms !important;}
  .reveal{opacity:1;transform:none;}
}
