/* roulang page: index */
:root{
  --bg:#100C12;
  --bg-soft:#171118;
  --surface:#1E1620;
  --surface-2:#261C28;
  --line:rgba(255,255,255,.09);
  --line-strong:rgba(255,95,126,.35);
  --text:#F5EEF1;
  --muted:#B9A9B3;
  --primary:#FF5F7E;
  --primary-600:#E84566;
  --primary-100:rgba(255,95,126,.12);
  --accent:#F2B36B;
  --accent-soft:#FFD9AE;
  --success:#7FC8A9;
  --danger:#FF8A7A;
  --radius:16px;
  --radius-sm:10px;
  --shadow:0 18px 40px rgba(0,0,0,.35);
  --font-sans:"Noto Sans SC","PingFang SC","Microsoft YaHei",system-ui,sans-serif;
  --font-serif:"Noto Serif SC","Songti SC",Georgia,serif;
  --font-mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;
  background:var(--bg);
  color:var(--text);
  font-family:var(--font-sans);
  font-size:16px;
  line-height:1.75;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit;color:inherit}
h1,h2,h3,h4,p{margin:0}
ul{margin:0;padding:0;list-style:none}
::selection{background:var(--primary);color:#1A0E12}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{
  outline:2px solid var(--accent);
  outline-offset:3px;
  border-radius:6px;
}
.container{width:100%;max-width:1320px;margin:0 auto;padding:0 24px}
.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}

/* ---------- header ---------- */
.site-header{
  position:sticky;top:0;z-index:60;
  background:#140F18;
  border-bottom:1px solid var(--line);
}
.hdr{
  max-width:1320px;margin:0 auto;padding:0 24px;
  height:64px;display:flex;align-items:center;gap:22px;justify-content:space-between;
}
.brand{display:flex;flex-direction:column;line-height:1.15;flex-shrink:0}
.brand-name{font-family:var(--font-serif);font-weight:800;font-size:18px;letter-spacing:.01em}
.brand-name .dot{color:var(--primary)}
.brand-sub{font-size:11px;color:var(--muted);letter-spacing:.1em;margin-top:2px}
.hdr-search{position:relative;flex:1;max-width:330px;display:none}
.hdr-search i{position:absolute;left:13px;top:50%;transform:translateY(-50%);font-size:13px;color:var(--muted);pointer-events:none}
.search-input{
  width:100%;height:38px;padding:0 14px 0 38px;
  background:#1B1522;border:1px solid var(--line);border-radius:10px;
  font-size:13.5px;color:var(--text);outline:none;
  transition:border-color .18s ease,box-shadow .18s ease,background .18s ease;
}
.search-input::placeholder{color:#7E6E79}
.search-input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-100);background:#201828}
.hdr-tools{display:flex;align-items:center;gap:10px}
.mini-select{
  height:34px;padding:0 10px;background:#1B1522;border:1px solid var(--line);
  border-radius:8px;font-size:12.5px;color:var(--muted);cursor:pointer;outline:none;display:none;
  transition:border-color .18s ease,color .18s ease;
}
.mini-select:hover{color:var(--text);border-color:rgba(255,255,255,.2)}
.drawer-toggle{
  display:inline-flex;align-items:center;justify-content:center;
  width:38px;height:38px;border-radius:9px;border:1px solid var(--line);
  background:#1B1522;color:var(--text);cursor:pointer;
}
.drawer-toggle:hover{border-color:var(--line-strong);color:var(--primary)}
@media(min-width:900px){.hdr-search{display:block}}
@media(min-width:1100px){.mini-select{display:block}}
@media(min-width:1024px){.drawer-toggle{display:none}}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  height:46px;padding:0 22px;border-radius:var(--radius-sm);
  font-size:15px;font-weight:600;border:1px solid transparent;cursor:pointer;
  transition:background .18s ease,color .18s ease,border-color .18s ease,box-shadow .18s ease,transform .18s ease;
}
.btn-primary{background:var(--primary);color:#1A0E12}
.btn-primary:hover{background:#FF7D95;box-shadow:0 12px 28px rgba(255,95,126,.28);transform:translateY(-1px)}
.btn-primary:active{background:var(--primary-600);transform:translateY(0)}
.btn-ghost{background:transparent;border-color:rgba(255,255,255,.16);color:var(--text)}
.btn-ghost:hover{background:var(--primary-100);border-color:var(--line-strong);color:var(--primary)}
.btn-ghost:active{background:rgba(255,95,126,.2)}
.btn-sm{height:38px;padding:0 16px;font-size:13.5px;border-radius:9px;font-weight:600}
.btn-block{width:100%}

/* ---------- chips / badges ---------- */
.chip{
  display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 12px;
  border-radius:999px;border:1px solid var(--line);background:rgba(255,255,255,.03);
  font-size:11.5px;color:var(--muted);font-family:var(--font-mono);letter-spacing:.04em;
}
.badge{
  display:inline-flex;align-items:center;height:24px;padding:0 10px;border-radius:999px;
  font-family:var(--font-mono);font-size:11px;letter-spacing:.06em;
  background:var(--primary-100);color:var(--primary);border:1px solid rgba(255,95,126,.24);
  white-space:nowrap;
}
.badge-amber{background:rgba(242,179,107,.14);color:var(--accent);border-color:rgba(242,179,107,.3)}
.badge-sage{background:rgba(127,200,169,.14);color:var(--success);border-color:rgba(127,200,169,.3)}

/* ---------- hero ---------- */
.hero{
  position:relative;isolation:isolate;overflow:hidden;
  border-bottom:1px solid var(--line);
  background:var(--bg) url('/assets/images/fb77053cd6bbd4d1.webp') center/cover no-repeat;
}
.hero::before{
  content:"";position:absolute;inset:0;z-index:-1;
  background:linear-gradient(98deg,rgba(16,12,18,.97) 0%,rgba(16,12,18,.92) 40%,rgba(16,12,18,.72) 68%,rgba(16,12,18,.55) 100%);
}
.hero::after{
  content:"";position:absolute;z-index:-1;left:-12%;top:-38%;width:620px;height:620px;
  background:radial-gradient(circle,rgba(255,95,126,.22),transparent 66%);
}
.hero-inner{max-width:1320px;margin:0 auto;padding:72px 24px 62px}
.eyebrow{
  font-family:var(--font-mono);font-size:11.5px;letter-spacing:.18em;
  color:var(--primary);text-transform:uppercase;margin-bottom:18px;
}
.hero h1{
  font-family:var(--font-serif);font-weight:800;
  font-size:clamp(2rem,4.4vw,3.3rem);line-height:1.14;letter-spacing:-.02em;
  max-width:900px;
}
.hero-copy{max-width:730px;margin-top:20px;color:var(--muted);font-size:15.5px;line-height:1.9}
.hero-cta{display:flex;flex-wrap:wrap;gap:14px;margin-top:28px}
.hero-meta{display:flex;flex-wrap:wrap;gap:10px;margin-top:26px}

/* ---------- layout ---------- */
.layout{max-width:1320px;margin:0 auto;padding:0 24px;display:grid;grid-template-columns:1fr;gap:0}
@media(min-width:1024px){
  .layout{grid-template-columns:240px minmax(0,1fr);gap:40px}
}
.side-nav{display:none}
@media(min-width:1024px){
  .side-nav{
    display:block;position:sticky;top:88px;align-self:start;
    max-height:calc(100vh - 110px);overflow-y:auto;
    border-right:1px solid var(--line);padding:34px 20px 40px 0;
  }
}
.side-nav::-webkit-scrollbar{width:5px}
.side-nav::-webkit-scrollbar-thumb{background:rgba(255,255,255,.12);border-radius:4px}
.side-label{
  font-family:var(--font-mono);font-size:10.5px;letter-spacing:.2em;
  color:#7E6E79;text-transform:uppercase;margin:0 0 12px;
}
.side-sec + .side-sec{margin-top:32px;padding-top:26px;border-top:1px solid var(--line)}
.side-link{
  display:block;padding:7px 10px;border-left:2px solid transparent;
  font-size:14px;color:var(--muted);border-radius:0 8px 8px 0;
  transition:color .16s ease,background .16s ease,border-color .16s ease;
}
.side-link:hover{color:var(--text);background:rgba(255,255,255,.04)}
.side-link.active{color:var(--text);border-left-color:var(--primary);background:var(--primary-100)}
.toc-link{
  display:block;padding:6px 10px;border-left:2px solid transparent;
  font-size:13px;line-height:1.9;color:#94838F;border-radius:0 8px 8px 0;
  transition:color .16s ease,background .16s ease,border-color .16s ease;
}
.toc-link:hover{color:var(--text);background:rgba(255,255,255,.04)}
.toc-link.active{color:var(--text);border-left-color:var(--primary);background:var(--primary-100)}
.toc-link .num{font-family:var(--font-mono);font-size:11px;color:var(--primary);margin-right:6px}

/* ---------- sections ---------- */
.content{padding-bottom:20px;min-width:0}
.section{padding:56px 0}
.section + .section{border-top:1px solid var(--line)}
@media(min-width:1024px){.section{padding:74px 0}}
.sec-head{margin-bottom:34px;max-width:760px}
.sec-num{font-family:var(--font-mono);font-size:11.5px;letter-spacing:.16em;color:var(--primary)}
.sec-title{
  font-family:var(--font-serif);font-weight:700;
  font-size:clamp(1.45rem,2.3vw,1.95rem);line-height:1.3;margin-top:10px;
}
.sec-desc{color:var(--muted);font-size:14.5px;line-height:1.85;margin-top:12px}
.sec-head-row{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;flex-wrap:wrap}

/* ---------- stat strip ---------- */
.stat-strip{
  display:grid;grid-template-columns:repeat(2,1fr);gap:1px;
  background:var(--line);border:1px solid var(--line);
  border-radius:var(--radius);overflow:hidden;
}
@media(min-width:768px){.stat-strip{grid-template-columns:repeat(4,1fr)}}
.stat{background:var(--surface);padding:24px 20px}
.stat b{display:block;font-family:var(--font-mono);font-size:26px;letter-spacing:-.02em;color:var(--text)}
.stat b em{font-style:normal;font-size:13px;color:var(--muted);margin-left:4px}
.stat span{display:block;margin-top:6px;font-size:12.5px;color:var(--muted)}

/* ---------- cards ---------- */
.card{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);
  padding:24px;transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease;
}
.card:hover{transform:translateY(-3px);border-color:var(--line-strong);box-shadow:var(--shadow)}
.card-top-line{position:relative;overflow:hidden}
.card-top-line::before{
  content:"";position:absolute;left:0;right:0;top:0;height:2px;
  background:linear-gradient(90deg,var(--primary),rgba(255,95,126,0));
}
.card h3{font-size:19px;font-weight:700;line-height:1.4}
.card p{color:var(--muted);font-size:14px;line-height:1.8;margin-top:10px}

/* ---------- bento ---------- */
.bento{display:grid;gap:18px;grid-template-columns:1fr}
@media(min-width:900px){
  .bento{grid-template-columns:2fr 1fr 1fr;grid-template-rows:auto auto}
  .bento .b-a{grid-column:1/2;grid-row:1/3}
  .bento .b-b{grid-column:2/4;grid-row:1/2}
  .bento .b-c{grid-column:2/3;grid-row:2/3}
  .bento .b-d{grid-column:3/4;grid-row:2/3}
}
.bento .card{display:flex;flex-direction:column;justify-content:space-between;min-height:170px}
.bento .b-a{min-height:260px}
.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}
.card-idx{font-family:var(--font-mono);font-size:11.5px;color:var(--primary);letter-spacing:.12em}
.mini-panel{
  margin-top:18px;background:#171020;border:1px solid var(--line);border-radius:12px;padding:14px;
}
.mini-row{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:12.5px;color:var(--muted);padding:7px 0}
.mini-row + .mini-row{border-top:1px dashed rgba(255,255,255,.07)}
.mini-row b{color:var(--text);font-weight:500}
.dot-on{width:8px;height:8px;border-radius:50%;background:var(--success);display:inline-block}
.dot-off{width:8px;height:8px;border-radius:50%;background:#56454F;display:inline-block}
.pill-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}

/* ---------- scenes ---------- */
.scene-grid{display:grid;gap:20px;grid-template-columns:1fr}
@media(min-width:640px){.scene-grid{grid-template-columns:repeat(2,1fr)}}
.scene-card{
  position:relative;overflow:hidden;border-radius:var(--radius);
  border:1px solid var(--line);background:var(--surface);
  transition:transform .22s ease,border-color .22s ease,box-shadow .22s ease;
}
.scene-card:hover{transform:translateY(-3px);border-color:var(--line-strong);box-shadow:var(--shadow)}
.scene-media{position:relative;aspect-ratio:4/3;overflow:hidden}
.scene-media img{width:100%;height:100%;object-fit:cover;transition:transform .32s ease}
.scene-card:hover .scene-media img{transform:scale(1.04)}
.scene-media::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(16,12,18,.05) 30%,rgba(16,12,18,.85) 100%);
}
.scene-idx{
  position:absolute;top:14px;left:14px;z-index:2;
  font-family:var(--font-mono);font-size:11.5px;letter-spacing:.14em;
  color:var(--accent);background:rgba(16,12,18,.68);
  border:1px solid rgba(242,179,107,.35);border-radius:999px;padding:2px 10px;
}
.scene-body{padding:18px 20px 22px}
.scene-body h3{font-size:17.5px;font-weight:700}
.scene-body p{color:var(--muted);font-size:13.5px;line-height:1.8;margin-top:8px}
.scene-tags{display:flex;flex-wrap:wrap;gap:7px;margin-top:14px}

/* ---------- cases ---------- */
.case-grid{display:grid;gap:20px;grid-template-columns:1fr}
@media(min-width:768px){.case-grid{grid-template-columns:repeat(3,1fr)}}
.case-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:24px;display:flex;flex-direction:column;transition:transform .2s ease,border-color .2s ease}
.case-card:hover{transform:translateY(-3px);border-color:var(--line-strong)}
.case-top{display:flex;align-items:center;gap:12px}
.avatar{
  width:44px;height:44px;border-radius:50%;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
  font-family:var(--font-serif);font-weight:700;font-size:16px;
  background:var(--surface-2);color:var(--primary);border:1px solid var(--line-strong);
}
.case-meta{font-family:var(--font-mono);font-size:11.5px;color:var(--muted);letter-spacing:.06em}
.case-card h3{font-size:16.5px;font-weight:700;margin-top:16px}
.case-card p{color:var(--muted);font-size:13.5px;line-height:1.85;margin-top:8px;flex:1}
.case-note{font-size:11.5px;color:#7E6E79;margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}

/* ---------- score ---------- */
.score-wrap{display:grid;gap:22px;grid-template-columns:1fr}
@media(min-width:860px){.score-wrap{grid-template-columns:1fr 1.1fr}}
.score-card{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius);padding:28px;position:relative;overflow:hidden}
.score-card::before{content:"";position:absolute;left:0;top:0;height:2px;width:100%;background:linear-gradient(90deg,var(--primary),rgba(255,95,126,0))}
.score-big{display:flex;align-items:baseline;gap:8px}
.score-big b{font-family:var(--font-mono);font-size:52px;line-height:1;letter-spacing:-.04em;color:var(--accent)}
.score-big span{font-family:var(--font-mono);font-size:14px;color:var(--muted)}
.score-cap{font-size:13px;color:var(--muted);margin-top:10px}
.bar-row{margin-top:20px}
.bar-label{display:flex;justify-content:space-between;font-size:13px;color:var(--muted);margin-bottom:7px}
.bar-label b{font-family:var(--font-mono);color:var(--text);font-weight:500}
.bar-track{height:6px;border-radius:999px;background:rgba(255,255,255,.08);overflow:hidden}
.bar-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,var(--primary),var(--accent))}
.score-list{display:grid;gap:14px}
.score-item{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:16px 18px;display:flex;gap:14px;align-items:flex-start}
.score-item i{color:var(--primary);font-size:14px;margin-top:5px}
.score-item h4{font-size:14.5px;font-weight:700}
.score-item p{color:var(--muted);font-size:13px;line-height:1.75;margin-top:4px}

/* ---------- compare ---------- */
.compare{display:grid;gap:18px;grid-template-columns:1fr}
@media(min-width:820px){.compare{grid-template-columns:1fr 1fr}}
.compare-col{border:1px solid var(--line);border-radius:var(--radius);padding:26px;background:var(--surface)}
.compare-col.after{background:var(--surface-2);border-color:var(--line-strong)}
.compare-tag{font-family:var(--font-mono);font-size:11px;letter-spacing:.16em;color:var(--muted)}
.compare-col.after .compare-tag{color:var(--success)}
.compare-col h3{font-size:18px;font-weight:700;margin-top:10px}
.compare-list{margin-top:16px;display:grid;gap:10px}
.compare-list li{display:flex;gap:10px;font-size:13.5px;color:var(--muted);line-height:1.75}
.compare-list li i{margin-top:5px;font-size:12px}
.compare-col .no i{color:#8B7784}
.compare-col .yes i{color:var(--success)}

/* ---------- safety ---------- */
.safety-grid{display:grid;gap:18px;grid-template-columns:1fr}
@media(min-width:860px){.safety-grid{grid-template-columns:1.6fr 1fr}}
.safety-main{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:28px}
.safety-item{display:flex;gap:14px;padding:16px 0;border-bottom:1px dashed rgba(255,255,255,.08)}
.safety-item:last-child{border-bottom:none;padding-bottom:0}
.safety-ico{
  width:38px;height:38px;border-radius:10px;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
  background:var(--primary-100);color:var(--primary);font-size:15px;
}
.safety-item h4{font-size:15px;font-weight:700}
.safety-item p{color:var(--muted);font-size:13.5px;line-height:1.8;margin-top:4px}
.safety-side{display:grid;gap:18px}

/* ---------- demo ---------- */
.demo-grid{display:grid;gap:22px;grid-template-columns:1fr}
@media(min-width:900px){.demo-grid{grid-template-columns:.9fr 1.1fr}}
.demo-shot{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--surface)}
.demo-shot img{width:100%;aspect-ratio:16/9;object-fit:cover}
.demo-cap{font-size:12px;color:#7E6E79;padding:12px 16px;border-top:1px solid var(--line)}
.step-list{display:grid;gap:14px}
.step{display:flex;gap:14px;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:16px 18px;transition:border-color .18s ease,background .18s ease}
.step:hover{border-color:var(--line-strong);background:var(--surface-2)}
.step-num{font-family:var(--font-mono);font-size:13px;color:var(--accent);flex-shrink:0;padding-top:1px}
.step h4{font-size:14.5px;font-weight:700}
.step p{color:var(--muted);font-size:13px;line-height:1.75;margin-top:4px}
.demo-small{display:grid;gap:18px;grid-template-columns:1fr 1fr;margin-top:22px}
@media(max-width:600px){.demo-small{grid-template-columns:1fr}}

/* ---------- version table ---------- */
.table-wrap{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--surface)}
.v-table{width:100%;border-collapse:collapse;font-size:14px}
.v-table thead th{
  font-family:var(--font-mono);font-size:11px;letter-spacing:.14em;
  color:var(--muted);text-align:left;padding:14px 16px;
  background:#171020;border-bottom:1px solid var(--line);font-weight:500;
}
.v-table td{padding:15px 16px;border-bottom:1px solid var(--line);color:var(--muted);font-size:13.5px}
.v-table td:first-child{color:var(--text);font-weight:600}
.v-table tbody tr:last-child td{border-bottom:none}
.v-table tbody tr:hover td{background:var(--surface-2)}
.v-table .mono{font-size:12.5px}
@media(max-width:720px){
  .v-table thead{display:none}
  .v-table,.v-table tbody,.v-table tr,.v-table td{display:block;width:100%}
  .v-table tr{border-bottom:1px solid var(--line);padding:8px 0}
  .v-table tr:last-child{border-bottom:none}
  .v-table td{border:none;padding:7px 16px;display:flex;justify-content:space-between;gap:16px}
  .v-table td::before{content:attr(data-label);font-family:var(--font-mono);font-size:11.5px;color:#7E6E79;letter-spacing:.1em}
  .v-table td:first-child{padding-top:14px;background:transparent}
}

/* ---------- reviews ---------- */
.review-wall{columns:1;column-gap:18px}
@media(min-width:640px){.review-wall{columns:2}}
@media(min-width:1100px){.review-wall{columns:3}}
.review-card{
  break-inside:avoid;margin:0 0 18px;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--radius);padding:20px;
  transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease;
}
.review-card:hover{transform:translateY(-3px);border-color:var(--line-strong);box-shadow:var(--shadow)}
.review-top{display:flex;align-items:center;justify-content:space-between;gap:10px}
.review-score{font-family:var(--font-mono);font-size:16px;color:var(--accent)}
.review-score small{font-size:11px;color:#7E6E79}
.review-nick{font-size:13px;color:var(--muted);margin-top:12px}
.review-text{font-size:13.5px;line-height:1.85;color:var(--text);margin-top:8px}
.review-date{font-family:var(--font-mono);font-size:11px;color:#7E6E79;margin-top:12px}

/* ---------- quotes ---------- */
.quote-grid{display:grid;gap:18px;grid-template-columns:1fr}
@media(min-width:900px){.quote-grid{grid-template-columns:1.15fr 1fr}}
.quote-main{
  background:var(--surface-2);border:1px solid var(--line-strong);border-radius:var(--radius);
  padding:30px;display:flex;flex-direction:column;justify-content:space-between;
}
.quote-main blockquote{
  font-family:var(--font-serif);font-size:clamp(1.1rem,1.7vw,1.35rem);
  line-height:1.7;color:var(--text);margin:0;
}
.quote-src{font-family:var(--font-mono);font-size:11.5px;color:var(--muted);letter-spacing:.08em;margin-top:22px}
.quote-side{display:grid;gap:18px}
.quote-mini{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:22px}
.quote-mini p{font-size:14px;line-height:1.85;color:var(--text)}
.quote-mini span{display:block;font-family:var(--font-mono);font-size:11px;color:var(--muted);margin-top:14px;letter-spacing:.08em}

/* ---------- news ---------- */
.news-grid{display:grid;gap:18px;grid-template-columns:1fr}
@media(min-width:760px){.news-grid{grid-template-columns:repeat(2,1fr)}}
.news-card{
  display:flex;flex-direction:column;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--radius);padding:22px;
  transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease;
}
.news-card:hover{transform:translateY(-3px);border-color:var(--line-strong);box-shadow:var(--shadow)}
.news-card h3{font-size:16px;font-weight:700;line-height:1.55;margin-top:14px}
.news-card:hover h3{color:var(--primary)}
.news-card p{color:var(--muted);font-size:13.5px;line-height:1.8;margin-top:8px;flex:1}
.news-foot{display:flex;align-items:center;justify-content:space-between;margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}
.news-date{font-family:var(--font-mono);font-size:11.5px;color:#7E6E79}
.news-more{font-size:12.5px;color:var(--primary)}
.empty-state{grid-column:1/-1;padding:36px;text-align:center;color:var(--muted);font-size:14px;border:1px dashed var(--line);border-radius:var(--radius)}

/* ---------- faq ---------- */
.faq-list{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--surface)}
.faq-item + .faq-item{border-top:1px solid var(--line)}
.faq-item summary{
  list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;
  gap:18px;padding:18px 22px;font-size:15px;font-weight:600;
  transition:background .18s ease,color .18s ease;
}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary:hover{background:var(--surface-2)}
.faq-item summary i{color:var(--primary);font-size:13px;transition:transform .2s ease}
.faq-item[open] summary{background:var(--surface-2);color:var(--primary)}
.faq-item[open] summary i{transform:rotate(45deg)}
.faq-body{padding:0 22px 20px;color:var(--muted);font-size:14px;line-height:1.9}

/* ---------- doc entries ---------- */
.doc-grid{display:grid;gap:18px;grid-template-columns:1fr}
@media(min-width:800px){.doc-grid{grid-template-columns:repeat(3,1fr)}}
.doc-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:24px;display:flex;flex-direction:column;transition:transform .2s ease,border-color .2s ease}
.doc-card:hover{transform:translateY(-3px);border-color:var(--line-strong)}
.doc-card .card-idx{display:block;margin-bottom:12px}
.doc-card h3{font-size:17px;font-weight:700}
.doc-card > p{color:var(--muted);font-size:13.5px;line-height:1.8;margin-top:8px}
.doc-links{margin-top:16px;display:grid;gap:8px;flex:1}
.doc-links a{font-size:13.5px;color:var(--muted);display:flex;gap:8px;align-items:flex-start;transition:color .16s ease}
.doc-links a::before{content:"›";color:var(--primary);line-height:1.4}
.doc-links a:hover{color:var(--primary)}
.doc-enter{display:inline-flex;align-items:center;gap:7px;margin-top:18px;font-size:13px;color:var(--primary);font-weight:600}
.doc-enter:hover{color:#FF7D95}

/* ---------- form ---------- */
.open-wrap{display:grid;gap:26px;grid-template-columns:1fr}
@media(min-width:900px){.open-wrap{grid-template-columns:1fr 1fr;align-items:start}}
.open-copy h2{font-family:var(--font-serif);font-size:clamp(1.5rem,2.4vw,2rem);line-height:1.3;font-weight:700}
.open-copy > p{color:var(--muted);font-size:14.5px;line-height:1.9;margin-top:14px}
.open-points{display:grid;gap:12px;margin-top:22px}
.open-points li{display:flex;gap:12px;align-items:flex-start;font-size:14px;color:var(--muted)}
.open-points i{color:var(--primary);margin-top:5px;font-size:13px}
.form-card{background:var(--surface-2);border:1px solid var(--line-strong);border-radius:var(--radius);padding:26px}
.field{margin-bottom:16px}
.field label{display:block;font-size:13px;color:var(--muted);margin-bottom:7px}
.field input[type="text"],.field input[type="email"],.field input[type="tel"]{
  width:100%;height:46px;padding:0 14px;background:#171020;
  border:1px solid var(--line);border-radius:var(--radius-sm);
  font-size:14px;color:var(--text);outline:none;
  transition:border-color .18s ease,box-shadow .18s ease;
}
.field input::placeholder{color:#6F5F6A}
.field input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-100)}
.field .helper{font-size:12px;color:#7E6E79;margin-top:6px}
.field.error input{border-color:var(--danger);box-shadow:0 0 0 3px rgba(255,138,122,.14)}
.field.error .helper{color:var(--danger)}
.check-row{display:flex;gap:10px;align-items:flex-start;font-size:12.5px;color:var(--muted);line-height:1.7;margin:4px 0 18px}
.check-row input{margin-top:3px;accent-color:var(--primary);width:15px;height:15px;flex-shrink:0}
.form-actions{display:grid;gap:12px}
.form-success{
  display:none;margin-top:16px;padding:13px 16px;border-radius:var(--radius-sm);
  background:rgba(127,200,169,.12);border:1px solid rgba(127,200,169,.35);
  color:var(--success);font-size:13px;
}
.form-success.show{display:block}

/* ---------- drawer ---------- */
.drawer-mask{
  position:fixed;inset:0;background:rgba(9,6,10,.72);z-index:80;
  opacity:0;pointer-events:none;transition:opacity .2s ease;
}
.drawer-mask.open{opacity:1;pointer-events:auto}
.drawer{
  position:fixed;top:0;left:0;bottom:0;width:min(86vw,320px);z-index:90;
  background:#171118;border-right:1px solid var(--line);
  transform:translateX(-102%);transition:transform .24s ease;
  display:flex;flex-direction:column;
}
.drawer.open{transform:translateX(0)}
.drawer-head{
  display:flex;align-items:center;justify-content:space-between;
  padding:16px 18px;border-bottom:1px solid var(--line);
}
.drawer-head span{font-family:var(--font-mono);font-size:11px;letter-spacing:.16em;color:var(--muted)}
.drawer-head button{background:none;border:none;color:var(--text);font-size:17px;cursor:pointer;padding:4px}
.drawer-body{padding:18px;overflow-y:auto}
.drawer-body .search-input{margin-bottom:18px}
.drawer-group + .drawer-group{margin-top:24px;padding-top:20px;border-top:1px solid var(--line)}

/* ---------- footer ---------- */
.site-footer{background:var(--bg-soft);border-top:1px solid var(--line);margin-top:40px}
.ftr{max-width:1320px;margin:0 auto;padding:52px 24px 34px;display:grid;gap:32px;grid-template-columns:1fr}
@media(min-width:700px){.ftr{grid-template-columns:repeat(2,1fr)}}
@media(min-width:1024px){.ftr{grid-template-columns:1.6fr 1fr 1fr 1fr 1fr}}
.ftr-brand .brand-name{font-size:17px}
.ftr-desc{color:var(--muted);font-size:13px;line-height:1.85;margin-top:12px;max-width:280px}
.ftr-col h4{
  font-size:12px;font-family:var(--font-mono);letter-spacing:.14em;
  color:#7E6E79;font-weight:500;margin-bottom:14px;text-transform:uppercase;
}
.ftr-col a{display:block;font-size:13.5px;color:var(--muted);padding:5px 0;transition:color .16s ease}
.ftr-col a:hover{color:var(--primary)}
.ftr-bottom{
  max-width:1320px;margin:0 auto;padding:18px 24px 30px;
  border-top:1px solid var(--line);
  display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between;
  font-size:12px;color:#7E6E79;
}
.ftr-bottom .mono{letter-spacing:.06em}

@media (prefers-reduced-motion: reduce){
  *{animation:none !important;transition:none !important;scroll-behavior:auto !important}
}
@media(max-width:520px){
  .hero-inner{padding:52px 20px 46px}
  .hero-cta .btn{width:100%}
  .mini-select{display:none}
  .stat{padding:20px 16px}
  .section{padding:48px 0}
}

/* roulang page: category1 */
:root{
  --bg:#100C12;
  --bg-soft:#171118;
  --surface:#1E1620;
  --surface-2:#261C28;
  --line:rgba(255,255,255,.09);
  --line-strong:rgba(255,95,126,.35);
  --text:#F5EEF1;
  --muted:#B9A9B3;
  --primary:#FF5F7E;
  --primary-600:#E84566;
  --primary-100:rgba(255,95,126,.12);
  --accent:#F2B36B;
  --accent-soft:#FFD9AE;
  --success:#7FC8A9;
  --danger:#FF8A7A;
  --radius:16px;
  --radius-sm:10px;
  --shadow:0 18px 40px rgba(0,0,0,.35);
  --font-sans:"Noto Sans SC","PingFang SC","Microsoft YaHei",system-ui,sans-serif;
  --font-serif:"Noto Serif SC","Songti SC",Georgia,serif;
  --font-mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;background:var(--bg);color:var(--text);
  font-family:var(--font-sans);font-size:16px;line-height:1.75;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
}
h1,h2,h3,h4,p,dl,dd,figure{margin:0}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
ul,ol{list-style:none;margin:0;padding:0}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:6px}
.container{width:100%;max-width:1320px;margin:0 auto;padding:0 24px}
.mono{font-family:var(--font-mono)}

/* ---------- header ---------- */
.site-header{position:sticky;top:0;z-index:60;background:#140F18;border-bottom:1px solid var(--line)}
.hdr{display:flex;align-items:center;gap:20px;height:64px;max-width:1320px;margin:0 auto;padding:0 24px}
.brand{display:flex;flex-direction:column;line-height:1.15;flex-shrink:0}
.brand-name{font-family:var(--font-serif);font-weight:800;font-size:18px;letter-spacing:.01em}
.brand-name .dot{color:var(--primary)}
.brand-sub{font-size:11px;color:var(--muted);letter-spacing:.1em;margin-top:2px}
.hdr-search{position:relative;flex:1;max-width:330px}
.hdr-search i{position:absolute;left:13px;top:50%;transform:translateY(-50%);font-size:13px;color:var(--muted);pointer-events:none}
.search-input{
  width:100%;height:38px;padding:0 14px 0 38px;background:#1B1522;
  border:1px solid var(--line);border-radius:10px;font-size:13.5px;color:var(--text);
  outline:none;transition:border-color .18s ease,box-shadow .18s ease,background .18s ease;
}
.search-input::placeholder{color:#7E6E79}
.search-input:hover{border-color:rgba(255,255,255,.18)}
.search-input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-100);background:#201828}
.hdr-tools{display:flex;align-items:center;gap:10px;margin-left:auto;flex-shrink:0}
.mini-select{
  height:34px;padding:0 10px;background:#1B1522;border:1px solid var(--line);
  border-radius:8px;font-size:12.5px;color:var(--muted);cursor:pointer;outline:none;
  transition:border-color .18s ease,color .18s ease;
}
.mini-select:hover{color:var(--text);border-color:rgba(255,255,255,.2)}
.mini-select:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-100)}
.hdr-nav{border-top:1px solid var(--line)}
.nav-inner{display:flex;gap:4px;overflow-x:auto;max-width:1320px;margin:0 auto;padding:0 24px;scrollbar-width:none}
.nav-inner::-webkit-scrollbar{display:none}
.nav-link{
  padding:11px 14px;font-size:14px;color:var(--muted);white-space:nowrap;
  border-bottom:2px solid transparent;transition:color .18s ease,border-color .18s ease,background .18s ease;
}
.nav-link:hover{color:var(--text);background:rgba(255,255,255,.03)}
.nav-link.active{color:var(--primary);border-bottom-color:var(--primary)}
.drawer-toggle{
  display:none;align-items:center;justify-content:center;width:38px;height:38px;
  border-radius:9px;border:1px solid var(--line);background:#1B1522;color:var(--text);cursor:pointer;
}
.drawer-toggle:hover{border-color:var(--line-strong);color:var(--primary)}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  height:46px;padding:0 22px;border-radius:var(--radius-sm);font-size:15px;font-weight:600;
  border:1px solid transparent;cursor:pointer;
  transition:background .18s ease,color .18s ease,border-color .18s ease,box-shadow .18s ease,transform .18s ease;
}
.btn-primary{background:var(--primary);color:#1A0E12}
.btn-primary:hover{background:#FF7D95;box-shadow:0 12px 28px rgba(255,95,126,.28);transform:translateY(-1px)}
.btn-primary:active{background:var(--primary-600);transform:translateY(0)}
.btn-ghost{background:transparent;border-color:rgba(255,255,255,.16);color:var(--text)}
.btn-ghost:hover{background:var(--primary-100);border-color:var(--line-strong);color:var(--primary)}
.btn-ghost:active{background:rgba(255,95,126,.2)}
.btn-sm{height:38px;padding:0 16px;font-size:13.5px;border-radius:9px}

/* ---------- chips / badges ---------- */
.chip{
  display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 12px;border-radius:999px;
  border:1px solid var(--line);background:rgba(255,255,255,.03);font-size:11.5px;color:var(--muted);
  font-family:var(--font-mono);letter-spacing:.04em;
}
.badge{
  display:inline-flex;align-items:center;height:24px;padding:0 10px;border-radius:999px;
  font-family:var(--font-mono);font-size:11px;letter-spacing:.06em;white-space:nowrap;
  background:var(--primary-100);color:var(--primary);border:1px solid rgba(255,95,126,.24);
}
.badge-amber{background:rgba(242,179,107,.14);color:var(--accent);border-color:rgba(242,179,107,.3)}
.badge-sage{background:rgba(127,200,169,.14);color:var(--success);border-color:rgba(127,200,169,.3)}

/* ---------- document head ---------- */
.doc-head{
  background:var(--bg-soft) url('/assets/images/d81f25c01b63d7ef.webp') center/cover no-repeat;
  border-bottom:1px solid var(--line);position:relative;isolation:isolate;
}
.doc-head::before{
  content:"";position:absolute;inset:0;z-index:-1;
  background:linear-gradient(96deg,rgba(23,17,24,.98) 0%,rgba(23,17,24,.94) 46%,rgba(23,17,24,.78) 100%);
}
.doc-inner{padding:38px 0 40px;max-width:1040px}
.crumb{display:flex;align-items:center;gap:8px;font-family:var(--font-mono);font-size:11.5px;color:var(--muted);letter-spacing:.06em}
.crumb a:hover{color:var(--primary)}
.crumb .sep{opacity:.5}
.doc-head h1{
  font-family:var(--font-serif);font-weight:800;letter-spacing:-.01em;
  font-size:clamp(1.75rem,3.2vw,2.5rem);line-height:1.24;margin-top:16px;max-width:880px;
}
.doc-lead{margin-top:14px;color:var(--muted);font-size:15.5px;max-width:780px}
.doc-meta{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}
.doc-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:22px}

/* ---------- sections ---------- */
.section{padding:68px 0;border-bottom:1px solid var(--line)}
.section-alt{background:var(--bg-soft)}
.sec-head{margin-bottom:32px;max-width:820px}
.sec-kicker{
  font-family:var(--font-mono);font-size:11.5px;letter-spacing:.16em;
  color:var(--primary);text-transform:uppercase;margin-bottom:10px;
}
.sec-title{font-family:var(--font-serif);font-weight:800;font-size:clamp(1.45rem,2.5vw,2rem);line-height:1.32;letter-spacing:-.01em}
.sec-desc{color:var(--muted);font-size:15px;margin-top:12px;max-width:760px}

/* ---------- toc strip ---------- */
.toc-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.toc-item{
  display:flex;align-items:center;gap:10px;padding:14px 16px;border:1px solid var(--line);
  border-radius:var(--radius-sm);background:var(--surface);font-size:13.5px;color:var(--muted);
  transition:border-color .18s ease,color .18s ease,transform .18s ease,background .18s ease;
}
.toc-item span{font-family:var(--font-mono);font-size:11px;color:var(--primary);opacity:.85}
.toc-item:hover{color:var(--text);border-color:var(--line-strong);transform:translateY(-2px);background:var(--surface-2)}

/* ---------- timeline steps ---------- */
.steps{display:grid;gap:14px}
.step{
  display:grid;grid-template-columns:56px 1fr;gap:18px;padding:22px;
  border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);
  transition:border-color .18s ease,transform .18s ease,box-shadow .18s ease;
}
.step:hover{border-color:var(--line-strong);transform:translateY(-2px);box-shadow:var(--shadow)}
.step-no{
  font-family:var(--font-mono);font-size:13px;font-weight:700;color:var(--primary);
  border-right:1px solid var(--line);padding-right:14px;letter-spacing:.06em;
}
.step h3{font-size:17px;font-weight:700;margin-bottom:6px}
.step p{font-size:14.5px;color:var(--muted)}

/* ---------- bento ---------- */
.bento{display:grid;grid-template-columns:1.55fr 1fr;gap:18px}
.bcard{
  border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);
  padding:24px;display:flex;flex-direction:column;gap:14px;position:relative;overflow:hidden;
  transition:border-color .18s ease,transform .18s ease,box-shadow .18s ease;
}
.bcard:hover{border-color:var(--line-strong);transform:translateY(-3px);box-shadow:var(--shadow)}
.bcard-main{grid-row:span 2;background:var(--surface-2);border-top:2px solid var(--primary)}
.bcard-top{display:flex;align-items:center;justify-content:space-between;gap:12px}
.bcard h3{font-size:18px;font-weight:700}
.bcard p{font-size:14.5px;color:var(--muted)}
.bcard-figure{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#120D15}
.bcard-figure img{width:100%;aspect-ratio:16/10;object-fit:cover}
.figcap{font-size:12px;color:var(--muted);font-family:var(--font-mono);padding:8px 10px;border-top:1px solid var(--line)}
.mini-panel{display:grid;gap:8px}
.mini-row{
  display:flex;align-items:center;justify-content:space-between;
  padding:10px 13px;border:1px dashed rgba(255,255,255,.14);border-radius:9px;
  font-size:13px;color:var(--muted);background:rgba(255,255,255,.02);
}
.mini-row b{color:var(--text);font-weight:500;font-size:13px}
.dot-sage{width:7px;height:7px;border-radius:999px;background:var(--success);display:inline-block}
.dot-amber{width:7px;height:7px;border-radius:999px;background:var(--accent);display:inline-block}
.point-list{display:grid;gap:9px}
.point-list li{font-size:14px;color:var(--muted);display:flex;gap:9px;align-items:flex-start}
.point-list li i{color:var(--primary);font-size:12px;margin-top:6px}

/* ---------- two column lists ---------- */
.split{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.panel{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);padding:24px}
.panel h3{font-size:17px;font-weight:700;margin-bottom:14px;display:flex;align-items:center;gap:10px}
.panel h3 i{color:var(--primary);font-size:14px}
.feed-item{padding:13px 0;border-bottom:1px dashed rgba(255,255,255,.1)}
.feed-item:last-child{border-bottom:0;padding-bottom:0}
.feed-item .who{font-family:var(--font-mono);font-size:11.5px;color:var(--primary);letter-spacing:.05em}
.feed-item p{font-size:14px;color:var(--muted);margin-top:5px}
.rule-item{display:flex;gap:11px;padding:10px 0;border-bottom:1px dashed rgba(255,255,255,.1);font-size:14px;color:var(--muted)}
.rule-item:last-child{border-bottom:0}
.rule-item span{
  flex-shrink:0;width:22px;height:22px;border-radius:7px;background:rgba(127,200,169,.14);
  color:var(--success);font-family:var(--font-mono);font-size:11px;display:flex;
  align-items:center;justify-content:center;margin-top:3px;
}

/* ---------- week accordion ---------- */
.week{display:grid;gap:10px}
.week details{
  border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);
  transition:border-color .18s ease,background .18s ease;
}
.week details[open]{background:var(--surface-2);border-color:var(--line-strong)}
.week summary{
  display:flex;align-items:center;gap:14px;padding:15px 18px;cursor:pointer;
  list-style:none;font-size:15px;font-weight:500;
}
.week summary::-webkit-details-marker{display:none}
.week summary .day{font-family:var(--font-mono);font-size:12px;color:var(--primary);letter-spacing:.08em;flex-shrink:0}
.week summary .plus{margin-left:auto;color:var(--muted);font-size:14px;transition:transform .18s ease,color .18s ease}
.week details[open] summary .plus{transform:rotate(45deg);color:var(--primary)}
.week .wk-body{padding:0 18px 18px 18px;font-size:14.5px;color:var(--muted);border-top:1px dashed rgba(255,255,255,.1);margin-top:0;padding-top:14px}

/* ---------- glossary ---------- */
.glossary{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
.term{border:1px solid var(--line);border-radius:var(--radius-sm);padding:18px 20px;background:var(--surface)}
.term dt{font-family:var(--font-mono);font-size:12.5px;color:var(--accent);letter-spacing:.08em;margin-bottom:7px}
.term dd{font-size:14.5px;color:var(--muted)}
.note{
  margin-top:20px;border:1px solid rgba(127,200,169,.28);background:rgba(127,200,169,.08);
  border-radius:var(--radius);padding:20px 22px;
}
.note h4{font-size:15px;color:var(--success);display:flex;align-items:center;gap:9px;margin-bottom:8px}
.note p{font-size:14px;color:var(--muted)}

/* ---------- checklist ---------- */
.check-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:18px}
.check-list{display:grid;gap:10px}
.check-row{
  display:flex;align-items:center;gap:12px;padding:13px 16px;border:1px solid var(--line);
  border-radius:var(--radius-sm);background:var(--surface);font-size:14.5px;color:var(--muted);
  transition:border-color .18s ease,background .18s ease;
}
.check-row:hover{border-color:var(--line-strong);background:var(--surface-2)}
.check-row i{color:var(--success);font-size:13px}
.check-row .val{margin-left:auto;font-family:var(--font-mono);font-size:11.5px;color:var(--accent);letter-spacing:.06em}
.aside-card{
  border:1px solid var(--line);border-radius:var(--radius);background:var(--surface-2);
  border-top:2px solid var(--primary);padding:24px;
}
.aside-card h3{font-size:17px;margin-bottom:12px}
.aside-card p{font-size:14px;color:var(--muted)}
.aside-card .btn{margin-top:18px}

/* ---------- faq ---------- */
.faq{display:grid;gap:10px}
.faq details{
  border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);
  transition:border-color .18s ease,background .18s ease;
}
.faq details[open]{background:var(--surface-2);border-color:var(--line-strong)}
.faq summary{
  display:flex;align-items:center;gap:12px;padding:16px 18px;cursor:pointer;list-style:none;
  font-size:15.5px;font-weight:500;
}
.faq summary::-webkit-details-marker{display:none}
.faq summary .plus{margin-left:auto;color:var(--muted);transition:transform .18s ease,color .18s ease;font-size:14px}
.faq details[open] summary .plus{transform:rotate(45deg);color:var(--primary)}
.faq .ans{padding:0 18px 18px;color:var(--muted);font-size:14.5px;border-top:1px dashed rgba(255,255,255,.1);padding-top:14px}
.faq .ans a{color:var(--primary);text-decoration:underline;text-underline-offset:3px}
.faq .ans a:hover{color:#FF7D95}

/* ---------- cta ---------- */
.cta-band{
  position:relative;isolation:isolate;overflow:hidden;border-radius:var(--radius);
  border:1px solid var(--line-strong);
  background:var(--surface-2) url('/assets/images/2abef1d5ef571bc6.webp') center/cover no-repeat;
  padding:40px;
  display:flex;align-items:center;justify-content:space-between;gap:28px;flex-wrap:wrap;
}
.cta-band::before{
  content:"";position:absolute;inset:0;z-index:-1;
  background:linear-gradient(94deg,rgba(38,28,40,.97),rgba(38,28,40,.86));
}
.cta-band h2{font-family:var(--font-serif);font-size:clamp(1.35rem,2.4vw,1.85rem);line-height:1.36;max-width:620px}
.cta-band p{color:var(--muted);font-size:14.5px;margin-top:10px;max-width:560px}
.cta-actions{display:flex;gap:12px;flex-wrap:wrap}

/* ---------- footer ---------- */
.site-footer{border-top:1px solid var(--line);background:#0C0910;padding:56px 0 0}
.ftr{
  max-width:1320px;margin:0 auto;padding:0 24px 40px;display:grid;
  grid-template-columns:1.6fr repeat(4,1fr);gap:32px;
}
.ftr-col h4{font-size:13px;letter-spacing:.1em;color:var(--text);margin-bottom:14px;font-family:var(--font-mono)}
.ftr-col a{display:block;font-size:14px;color:var(--muted);padding:6px 0;transition:color .18s ease}
.ftr-col a:hover{color:var(--primary)}
.ftr-desc{font-size:13.5px;color:var(--muted);margin-top:12px;max-width:320px;line-height:1.85}
.ftr-bottom{
  border-top:1px solid var(--line);max-width:1320px;margin:0 auto;padding:20px 24px 26px;
  display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap;
  font-size:12.5px;color:var(--muted);
}

/* ---------- drawer ---------- */
.drawer{position:fixed;inset:0;z-index:80;display:none;background:rgba(8,5,10,.72)}
.drawer.open{display:block}
.drawer-panel{
  position:absolute;top:0;right:0;width:min(86vw,340px);height:100%;overflow-y:auto;
  background:var(--bg-soft);border-left:1px solid var(--line);padding:20px;
}
.drawer-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}
.drawer-top span{font-family:var(--font-mono);font-size:12px;letter-spacing:.12em;color:var(--muted)}
.drawer-close{width:34px;height:34px;border-radius:8px;border:1px solid var(--line);background:var(--surface);cursor:pointer}
.drawer-close:hover{color:var(--primary);border-color:var(--line-strong)}
.drawer a.d-link{display:block;padding:12px 10px;font-size:14.5px;color:var(--muted);border-bottom:1px solid var(--line)}
.drawer a.d-link:hover,.drawer a.d-link.active{color:var(--primary)}
.drawer .search-input{margin:14px 0 6px}

/* ---------- responsive ---------- */
@media (min-width:768px){
  .hdr-search{display:block}
}
@media (max-width:1024px){
  .toc-grid{grid-template-columns:repeat(2,1fr)}
  .bento{grid-template-columns:1fr}
  .bcard-main{grid-row:auto}
  .split{grid-template-columns:1fr}
  .glossary{grid-template-columns:1fr}
  .check-grid{grid-template-columns:1fr}
  .ftr{grid-template-columns:1fr 1fr;gap:26px}
}
@media (max-width:820px){
  .hdr-search{display:none}
  .mini-select{display:none}
  .drawer-toggle{display:inline-flex}
  .section{padding:52px 0}
  .doc-inner{padding:30px 0 32px}
  .cta-band{padding:28px}
}
@media (max-width:640px){
  .container,.hdr,.nav-inner,.ftr,.ftr-bottom{padding-left:16px;padding-right:16px}
  .toc-grid{grid-template-columns:1fr}
  .step{grid-template-columns:1fr;gap:10px}
  .step-no{border-right:0;border-bottom:1px solid var(--line);padding:0 0 8px}
  .ftr{grid-template-columns:1fr}
  .doc-actions .btn,.cta-actions .btn{width:100%}
  .cta-actions{width:100%}
  .doc-head h1{font-size:1.6rem}
}
@media (prefers-reduced-motion:reduce){
  *{transition:none!important;animation:none!important;scroll-behavior:auto!important}
}

/* roulang page: article */
:root{
  --bg:#100C12;
  --bg-soft:#171118;
  --surface:#1E1620;
  --surface-2:#261C28;
  --line:rgba(255,255,255,.09);
  --line-strong:rgba(255,95,126,.35);
  --text:#F5EEF1;
  --muted:#B9A9B3;
  --primary:#FF5F7E;
  --primary-600:#E84566;
  --primary-100:rgba(255,95,126,.12);
  --accent:#F2B36B;
  --accent-soft:#FFD9AE;
  --success:#7FC8A9;
  --danger:#FF8A7A;
  --radius:16px;
  --radius-sm:10px;
  --shadow:0 18px 40px rgba(0,0,0,.35);
  --font-sans:"Noto Sans SC","PingFang SC","Microsoft YaHei",system-ui,sans-serif;
  --font-serif:"Noto Serif SC","Songti SC",Georgia,serif;
  --font-mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
}
*,*::before,*::after{box-sizing:border-box}
.page-body{
  margin:0;
  background:var(--bg);
  color:var(--text);
  font-family:var(--font-sans);
  font-size:16px;
  line-height:1.75;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit;color:inherit}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{
  outline:2px solid var(--accent);outline-offset:3px;border-radius:6px;
}
::selection{background:rgba(255,95,126,.3);color:#fff}

/* ---------- header ---------- */
.site-header{position:sticky;top:0;z-index:60;background:#140F18;border-bottom:1px solid var(--line)}
.hdr{display:flex;align-items:center;gap:20px;height:64px;max-width:1320px;margin:0 auto;padding:0 24px}
.brand{display:flex;flex-direction:column;line-height:1.15;flex-shrink:0}
.brand-name{font-family:var(--font-serif);font-weight:800;font-size:18px;letter-spacing:.01em;color:var(--text)}
.brand-name .dot{color:var(--primary)}
.brand-sub{font-size:11px;color:var(--muted);letter-spacing:.1em;margin-top:2px}
.hdr-search{position:relative;flex:1;max-width:330px;margin-left:8px}
.hdr-search i{position:absolute;left:13px;top:50%;transform:translateY(-50%);font-size:13px;color:var(--muted);pointer-events:none}
.search-input{
  width:100%;height:38px;padding:0 14px 0 38px;background:#1B1522;border:1px solid var(--line);
  border-radius:10px;font-size:13.5px;color:var(--text);outline:none;
  transition:border-color .18s ease,box-shadow .18s ease,background .18s ease;
}
.search-input::placeholder{color:#7E6E79}
.search-input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-100);background:#201828}
.hdr-tools{display:flex;align-items:center;gap:10px;margin-left:auto}
.mini-select{
  height:34px;padding:0 10px;background:#1B1522;border:1px solid var(--line);
  border-radius:8px;font-size:12.5px;color:var(--muted);cursor:pointer;outline:none;
  transition:border-color .18s ease,color .18s ease;
}
.mini-select:hover{color:var(--text);border-color:rgba(255,255,255,.2)}
.mini-select option{background:#1B1522;color:var(--text)}
.drawer-toggle{
  display:none;align-items:center;justify-content:center;width:38px;height:38px;border-radius:9px;
  border:1px solid var(--line);background:#1B1522;color:var(--text);cursor:pointer;
}
.drawer-toggle:hover{border-color:var(--line-strong);color:var(--primary)}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;height:46px;padding:0 22px;
  border-radius:var(--radius-sm);font-size:15px;font-weight:600;border:1px solid transparent;cursor:pointer;
  transition:background .18s ease,color .18s ease,border-color .18s ease,box-shadow .18s ease,transform .18s ease;
}
.btn-primary{background:var(--primary);color:#1A0E12}
.btn-primary:hover{background:#FF7D95;box-shadow:0 12px 28px rgba(255,95,126,.28);transform:translateY(-1px)}
.btn-primary:active{background:var(--primary-600);transform:translateY(0)}
.btn-ghost{background:transparent;border-color:rgba(255,255,255,.16);color:var(--text)}
.btn-ghost:hover{background:var(--primary-100);border-color:var(--line-strong);color:var(--primary)}
.btn-sm{height:38px;padding:0 16px;font-size:13.5px;border-radius:9px;font-weight:600}
.btn-block{width:100%}

/* ---------- badges / chips ---------- */
.badge{
  display:inline-flex;align-items:center;height:24px;padding:0 10px;border-radius:999px;
  font-family:var(--font-mono);font-size:11px;letter-spacing:.06em;
  background:var(--primary-100);color:var(--primary);border:1px solid rgba(255,95,126,.24);white-space:nowrap;
}
.badge-amber{background:rgba(242,179,107,.14);color:var(--accent);border-color:rgba(242,179,107,.3)}
.badge-sage{background:rgba(127,200,169,.14);color:var(--success);border-color:rgba(127,200,169,.3)}
.chip{
  display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 12px;border-radius:999px;
  border:1px solid var(--line);background:rgba(255,255,255,.03);font-size:11.5px;color:var(--muted);
  font-family:var(--font-mono);letter-spacing:.04em;
}

/* ---------- layout ---------- */
.layout{
  display:grid;grid-template-columns:240px minmax(0,1fr);gap:44px;
  max-width:1320px;margin:0 auto;padding:0 24px;align-items:start;
}
.side-nav{
  position:sticky;top:64px;align-self:start;max-height:calc(100vh - 64px);overflow-y:auto;
  padding:34px 20px 44px 0;border-right:1px solid var(--line);
}
.side-nav::-webkit-scrollbar{width:5px}
.side-nav::-webkit-scrollbar-thumb{background:rgba(255,255,255,.12);border-radius:4px}
.side-title{
  font-family:var(--font-mono);font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;
  color:#7E6E79;margin:0 0 12px;
}
.side-title + .side-links{margin-bottom:30px}
.side-links{display:flex;flex-direction:column;gap:2px}
.side-link{
  position:relative;display:block;padding:7px 12px;border-radius:8px;font-size:14px;color:var(--muted);
  transition:color .16s ease,background .16s ease;line-height:1.5;
}
.side-link:hover{color:var(--text);background:rgba(255,255,255,.04)}
.side-link.is-active{color:var(--text);background:var(--primary-100)}
.side-link.is-active::before{
  content:"";position:absolute;left:0;top:8px;bottom:8px;width:2px;border-radius:2px;background:var(--primary);
}
.main-col{min-width:0;padding:36px 0 84px}

/* ---------- article head ---------- */
.crumbs{
  display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:12.5px;color:#7E6E79;
  font-family:var(--font-mono);letter-spacing:.03em;
}
.crumbs a:hover{color:var(--primary)}
.crumb-cur{color:var(--muted)}
.art-head{padding:0 0 28px}
.art-flag{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:18px 0 16px}
.meta-mono{font-family:var(--font-mono);font-size:12px;color:var(--muted);letter-spacing:.04em}
.art-h1{
  font-family:var(--font-serif);font-weight:800;letter-spacing:-.02em;
  font-size:clamp(1.7rem,3.4vw,2.6rem);line-height:1.24;margin:0;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;
}
.art-lead{margin:18px 0 0;color:var(--muted);font-size:15.5px;line-height:1.9;max-width:760px}
.art-foot{display:flex;flex-wrap:wrap;gap:10px;margin-top:20px}
.cover{border-radius:var(--radius);overflow:hidden;border:1px solid var(--line);margin-top:26px;background:var(--surface)}
.cover img{width:100%;aspect-ratio:16/9;object-fit:cover}
.cover figcaption{padding:10px 16px;font-size:12px;color:var(--muted);border-top:1px solid var(--line);font-family:var(--font-mono);letter-spacing:.03em}

/* ---------- section ---------- */
.sec{padding:42px 0;border-top:1px solid var(--line)}
.sec:first-of-type{border-top:0;padding-top:0}
.sec-num{
  display:block;font-family:var(--font-mono);font-size:11px;letter-spacing:.2em;
  color:var(--primary);text-transform:uppercase;margin-bottom:8px;
}
.sec-title{
  font-family:var(--font-serif);font-weight:700;font-size:clamp(1.25rem,2.2vw,1.6rem);
  margin:0 0 6px;line-height:1.4;
}
.sec-sub{color:var(--muted);font-size:14px;margin:0 0 22px}

/* ---------- overview ---------- */
.ov-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(0,1fr);gap:20px;align-items:start}
.ov-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:22px 24px}
.ov-card h3{font-size:15px;margin:0 0 14px;font-weight:600;letter-spacing:.02em}
.ov-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}
.ov-list li{display:flex;gap:12px;font-size:14.5px;color:var(--muted);line-height:1.7}
.ov-list i{color:var(--primary);font-size:11px;margin-top:7px;flex-shrink:0}
.toc-card{background:var(--surface-2);border:1px solid var(--line);border-top:2px solid var(--primary);border-radius:var(--radius);padding:20px 22px}
.toc-card h3{font-size:15px;margin:0 0 12px}
.toc-mini{display:flex;flex-direction:column;gap:2px}
.toc-mini a{font-size:13.5px;color:var(--muted);padding:6px 0;border-bottom:1px dashed rgba(255,255,255,.06);transition:color .16s ease}
.toc-mini a:last-child{border-bottom:0}
.toc-mini a:hover{color:var(--primary)}

/* ---------- article body ---------- */
.article-body{max-width:760px;font-size:17px;line-height:1.95;color:#E7DCE2;overflow-wrap:break-word}
.article-body > *:first-child{margin-top:0}
.article-body h2{
  font-family:var(--font-serif);font-size:28px;line-height:1.4;font-weight:700;color:var(--text);
  margin:2.1em 0 .75em;padding-left:14px;border-left:3px solid var(--primary);
}
.article-body h3{font-size:22px;line-height:1.5;font-weight:600;color:var(--text);margin:1.8em 0 .6em}
.article-body h4{font-size:17px;font-weight:600;color:var(--text);margin:1.6em 0 .5em}
.article-body p{margin:0 0 1.4em}
.article-body ul,.article-body ol{margin:0 0 1.4em;padding-left:1.4em}
.article-body li{margin:.45em 0}
.article-body li::marker{color:var(--primary)}
.article-body blockquote{
  margin:1.8em 0;padding:18px 22px;background:var(--surface);border-left:3px solid var(--line-strong);
  border-radius:0 var(--radius-sm) var(--radius-sm) 0;font-family:var(--font-serif);color:var(--muted);
}
.article-body img{border-radius:12px;border:1px solid var(--line);margin:1.6em 0 .7em;width:100%}
.article-body figure{margin:1.6em 0}
.article-body figcaption{font-size:12.5px;color:var(--muted);text-align:center;margin-top:8px}
.article-body a{color:var(--primary);text-decoration:underline;text-underline-offset:3px}
.article-body a:hover{color:#FF8AA0}
.article-body table{width:100%;border-collapse:collapse;font-size:14.5px;margin:1.6em 0;border-radius:8px;overflow:hidden}
.article-body th,.article-body td{border:1px solid var(--line);padding:10px 12px;text-align:left;vertical-align:top}
.article-body th{background:var(--surface-2);font-family:var(--font-mono);font-size:12.5px;letter-spacing:.04em;color:var(--muted)}
.article-body code{
  font-family:var(--font-mono);background:var(--surface-2);padding:2px 6px;border-radius:6px;font-size:14px;color:var(--accent-soft);
}
.article-body hr{border:0;border-top:1px solid var(--line);margin:2em 0}
.article-body strong{color:#fff;font-weight:600}

/* ---------- conclusion ---------- */
.concl{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.concl-col{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:22px 24px}
.concl-col.ok{border-top:2px solid var(--success)}
.concl-col.warn{border-top:2px solid var(--accent)}
.concl-col h3{display:flex;align-items:center;gap:9px;font-size:15px;margin:0 0 14px;font-weight:600}
.concl-col.ok h3 i{color:var(--success)}
.concl-col.warn h3 i{color:var(--accent)}
.concl-col ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.concl-col li{font-size:14px;color:var(--muted);line-height:1.75;padding-left:16px;position:relative}
.concl-col li::before{content:"";position:absolute;left:0;top:9px;width:5px;height:5px;border-radius:50%;background:var(--line-strong)}

/* ---------- related ---------- */
.rel-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.rel-card{
  display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--radius);overflow:hidden;
  transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease;
}
.rel-card:hover{transform:translateY(-3px);border-color:var(--line-strong);box-shadow:var(--shadow)}
.rel-thumb{aspect-ratio:16/10;overflow:hidden;background:var(--surface-2)}
.rel-thumb img{width:100%;height:100%;object-fit:cover;transition:transform .3s ease}
.rel-card:hover .rel-thumb img{transform:scale(1.04)}
.rel-body{padding:16px 18px 18px;display:flex;flex-direction:column;gap:9px;flex:1}
.rel-body h3{font-size:14.5px;font-weight:600;line-height:1.55;margin:0;color:var(--text)}
.rel-body p{font-size:13px;color:var(--muted);line-height:1.7;margin:0}
.rel-date{font-family:var(--font-mono);font-size:11px;color:#7E6E79;letter-spacing:.05em}

/* ---------- pager ---------- */
.pager{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.pager-link{
  display:flex;flex-direction:column;gap:6px;padding:20px 22px;border-radius:var(--radius);
  border:1px solid var(--line);background:var(--surface);
  transition:border-color .18s ease,background .18s ease,transform .18s ease;
}
.pager-link:hover{border-color:var(--line-strong);background:var(--surface-2);transform:translateY(-2px)}
.pager-link .k{font-family:var(--font-mono);font-size:11px;letter-spacing:.16em;color:var(--primary);text-transform:uppercase}
.pager-link .v{font-size:15px;font-weight:600;color:var(--text)}

/* ---------- safety ---------- */
.safety{
  background:linear-gradient(180deg,rgba(127,200,169,.07),rgba(127,200,169,.02));
  border:1px solid rgba(127,200,169,.24);border-radius:var(--radius);padding:24px 26px;
}
.safety h3{display:flex;align-items:center;gap:10px;font-size:16px;margin:0 0 12px;color:var(--text)}
.safety h3 i{color:var(--success)}
.safety p{color:var(--muted);font-size:14.5px;line-height:1.85;margin:0 0 10px}
.safety p:last-child{margin-bottom:0}

/* ---------- empty ---------- */
.empty-state{
  background:var(--surface);border:1px dashed rgba(255,255,255,.16);border-radius:var(--radius);
  padding:52px 28px;text-align:center;
}
.empty-state h2{font-family:var(--font-serif);font-size:22px;margin:0 0 10px}
.empty-state p{color:var(--muted);font-size:14.5px;margin:0 0 20px}

/* ---------- footer ---------- */
.site-footer{border-top:1px solid var(--line);background:var(--bg-soft);margin-top:0}
.ftr{
  display:grid;grid-template-columns:1.6fr repeat(4,1fr);gap:32px;
  max-width:1320px;margin:0 auto;padding:56px 24px 40px;
}
.ftr-col{display:flex;flex-direction:column;gap:9px;min-width:0}
.ftr-col h4{
  font-family:var(--font-mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;
  color:#7E6E79;margin:0 0 6px;font-weight:500;
}
.ftr-col a{font-size:13.5px;color:var(--muted);line-height:1.9;transition:color .16s ease}
.ftr-col a:hover{color:var(--primary)}
.ftr-brand .brand-name{font-size:17px}
.ftr-desc{font-size:13px;color:var(--muted);line-height:1.85;margin:10px 0 0;max-width:290px}
.ftr-bottom{
  display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;align-items:center;
  max-width:1320px;margin:0 auto;padding:18px 24px 26px;border-top:1px solid var(--line);
  font-size:12px;color:#7E6E79;
}
.mono{font-family:var(--font-mono);letter-spacing:.05em}

/* ---------- drawer ---------- */
.drawer{
  position:fixed;top:0;left:0;bottom:0;width:300px;max-width:86vw;z-index:100;
  background:var(--bg-soft);border-right:1px solid var(--line);padding:20px 20px 40px;
  overflow-y:auto;transform:translateX(-102%);transition:transform .22s ease;
}
.drawer.open{transform:translateX(0)}
.drawer-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}
.drawer-close{
  width:36px;height:36px;border-radius:9px;border:1px solid var(--line);background:#1B1522;
  color:var(--text);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;
}
.drawer-close:hover{color:var(--primary);border-color:var(--line-strong)}
.drawer-mask{
  position:fixed;inset:0;z-index:90;background:rgba(8,5,10,.72);opacity:0;pointer-events:none;
  transition:opacity .2s ease;
}
.drawer-mask.show{opacity:1;pointer-events:auto}
.drawer .search-input{margin-bottom:22px}

/* ---------- responsive ---------- */
@media (min-width:1024px){
  .drawer,.drawer-mask{display:none !important}
}
@media (max-width:1023px){
  .hdr-search{display:none}
  .mini-select{display:none}
  .drawer-toggle{display:inline-flex}
  .layout{grid-template-columns:minmax(0,1fr);gap:0}
  .side-nav{display:none}
  .main-col{padding:28px 0 64px}
  .ov-grid{grid-template-columns:1fr}
  .rel-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ftr{grid-template-columns:repeat(2,1fr);gap:26px;padding:42px 24px 32px}
}
@media (max-width:767px){
  .hdr{padding:0 16px;gap:12px}
  .layout{padding:0 16px}
  .art-h1{font-size:1.55rem}
  .art-lead{font-size:14.5px}
  .sec{padding:34px 0}
  .concl{grid-template-columns:1fr}
  .rel-grid{grid-template-columns:1fr}
  .pager{grid-template-columns:1fr}
  .article-body{font-size:16.5px;line-height:1.9}
  .article-body h2{font-size:23px}
  .article-body h3{font-size:19px}
  .article-body table{display:block;overflow-x:auto;white-space:nowrap}
  .ftr{grid-template-columns:1fr;padding:36px 16px 26px}
  .ftr-bottom{padding:16px 16px 24px;font-size:11.5px}
  .btn-sm{padding:0 13px;font-size:12.5px}
}
@media (max-width:519px){
  .brand-sub{display:none}
  .hdr-tools .mini-select{display:none}
  .art-flag{gap:8px}
  .ov-card,.toc-card{padding:18px}
}
@media (prefers-reduced-motion:reduce){
  *{transition:none !important;animation:none !important}
  html{scroll-behavior:auto}
}

/* roulang page: category2 */
:root{
  --bg:#100C12;
  --bg-soft:#171118;
  --surface:#1E1620;
  --surface-2:#261C28;
  --line:rgba(255,255,255,.09);
  --line-strong:rgba(255,95,126,.35);
  --text:#F5EEF1;
  --muted:#B9A9B3;
  --primary:#FF5F7E;
  --primary-600:#E84566;
  --primary-100:rgba(255,95,126,.12);
  --accent:#F2B36B;
  --accent-soft:#FFD9AE;
  --success:#7FC8A9;
  --danger:#FF8A7A;
  --radius:16px;
  --radius-sm:10px;
  --shadow:0 18px 40px rgba(0,0,0,.35);
  --font-sans:"Noto Sans SC","PingFang SC","Microsoft YaHei",system-ui,sans-serif;
  --font-serif:"Noto Serif SC","Songti SC",Georgia,serif;
  --font-mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:96px}
body{
  margin:0;background:var(--bg);color:var(--text);
  font-family:var(--font-sans);font-size:16px;line-height:1.75;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit;color:inherit}
p{margin:0}
h1,h2,h3,h4{margin:0;line-height:1.32}
ul,ol{margin:0;padding:0;list-style:none}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{
  outline:2px solid var(--accent);outline-offset:3px;border-radius:6px;
}
.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}
.container{width:100%;max-width:1320px;margin:0 auto;padding:0 24px}

/* ============ header ============ */
.site-header{position:sticky;top:0;z-index:60;background:#140F18;border-bottom:1px solid var(--line)}
.hdr{display:flex;align-items:center;gap:18px;max-width:1320px;margin:0 auto;padding:11px 24px}
.brand{display:flex;flex-direction:column;line-height:1.15;flex-shrink:0}
.brand-name{font-family:var(--font-serif);font-weight:800;font-size:18px;letter-spacing:.01em;margin:0}
.brand-name .dot{color:var(--primary)}
.brand-sub{font-size:11px;color:var(--muted);letter-spacing:.1em;margin-top:2px}
.hdr-search{position:relative;flex:1;max-width:330px;display:block}
.hdr-search i{position:absolute;left:13px;top:50%;transform:translateY(-50%);font-size:13px;color:var(--muted);pointer-events:none}
.search-input{
  width:100%;height:38px;padding:0 14px 0 38px;background:#1B1522;border:1px solid var(--line);
  border-radius:10px;font-size:13.5px;color:var(--text);outline:none;
  transition:border-color .18s ease,box-shadow .18s ease,background .18s ease;
}
.search-input::placeholder{color:#7E6E79}
.search-input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-100);background:#201828}
.hdr-tools{display:flex;align-items:center;gap:12px;margin-left:auto}
.mini-select{
  height:34px;padding:0 10px;background:#1B1522;border:1px solid var(--line);
  border-radius:8px;font-size:12.5px;color:var(--muted);cursor:pointer;outline:none;display:block;
  transition:border-color .18s ease,color .18s ease;
}
.mini-select:hover{color:var(--text);border-color:rgba(255,255,255,.2)}
.drawer-toggle{
  display:none;align-items:center;justify-content:center;width:38px;height:38px;
  border-radius:9px;border:1px solid var(--line);background:#1B1522;color:var(--text);cursor:pointer;
  transition:border-color .18s ease,color .18s ease;
}
.drawer-toggle:hover{border-color:var(--line-strong);color:var(--primary)}

/* ============ buttons ============ */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  height:46px;padding:0 22px;border-radius:var(--radius-sm);
  font-size:15px;font-weight:600;border:1px solid transparent;cursor:pointer;
  transition:background .18s ease,color .18s ease,border-color .18s ease,box-shadow .18s ease,transform .18s ease;
}
.btn-primary{background:var(--primary);color:#1A0E12}
.btn-primary:hover{background:#FF7D95;box-shadow:0 12px 28px rgba(255,95,126,.28);transform:translateY(-1px)}
.btn-primary:active{background:var(--primary-600);transform:translateY(0)}
.btn-ghost{background:transparent;border-color:rgba(255,255,255,.16);color:var(--text)}
.btn-ghost:hover{background:var(--primary-100);border-color:var(--line-strong);color:var(--primary)}
.btn-ghost:active{background:rgba(255,95,126,.2)}
.btn-sm{height:38px;padding:0 16px;font-size:13.5px;border-radius:9px}
.btn-block{width:100%}

/* ============ chips / badges ============ */
.chip{
  display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 12px;border-radius:999px;
  border:1px solid var(--line);background:rgba(255,255,255,.03);
  font-size:11.5px;color:var(--muted);font-family:var(--font-mono);letter-spacing:.04em;white-space:nowrap;
}
.badge{
  display:inline-flex;align-items:center;height:24px;padding:0 10px;border-radius:999px;
  font-family:var(--font-mono);font-size:11px;letter-spacing:.06em;white-space:nowrap;
  background:var(--primary-100);color:var(--primary);border:1px solid rgba(255,95,126,.24);
}
.badge-amber{background:rgba(242,179,107,.14);color:var(--accent);border-color:rgba(242,179,107,.3)}
.badge-sage{background:rgba(127,200,169,.14);color:var(--success);border-color:rgba(127,200,169,.3)}
.chip-row{display:flex;flex-wrap:wrap;gap:8px}

/* ============ layout ============ */
.doc-shell{max-width:1320px;margin:0 auto;padding:0 24px;display:grid;grid-template-columns:240px minmax(0,1fr);gap:44px}
.side-nav{
  position:sticky;top:76px;align-self:start;max-height:calc(100vh - 100px);overflow-y:auto;
  padding:34px 20px 44px 0;border-right:1px solid var(--line);
}
.side-nav::-webkit-scrollbar{width:5px}
.side-nav::-webkit-scrollbar-thumb{background:rgba(255,255,255,.12);border-radius:4px}
.sn-title{
  font-family:var(--font-mono);font-size:11px;letter-spacing:.18em;color:#8C7A86;
  text-transform:uppercase;margin-bottom:10px;
}
.sn-block + .sn-block{margin-top:28px}
.sn-link{
  display:block;padding:7px 12px;font-size:14px;color:var(--muted);border-radius:8px;
  border-left:2px solid transparent;line-height:1.5;transition:color .16s ease,background .16s ease,border-color .16s ease;
}
.sn-link:hover{color:var(--text);background:rgba(255,255,255,.04)}
.sn-link.active{color:var(--text);background:var(--primary-100);border-left-color:var(--primary)}
.doc-main{min-width:0;padding-bottom:20px}

/* ============ section base ============ */
.sec{padding:52px 0;border-top:1px solid var(--line)}
.sec:first-of-type{border-top:0;padding-top:34px}
.sec-tag{
  display:flex;align-items:center;gap:10px;font-family:var(--font-mono);font-size:11px;
  letter-spacing:.16em;color:var(--primary);text-transform:uppercase;margin-bottom:14px;
}
.sec-tag .num{color:#7E6E79}
.sec-title{font-family:var(--font-serif);font-weight:700;font-size:clamp(1.35rem,2.4vw,1.85rem);letter-spacing:-.01em}
.sec-sub{color:var(--muted);font-size:14.5px;line-height:1.9;margin-top:12px;max-width:760px}
.sec-head{margin-bottom:28px}

/* ============ breadcrumb ============ */
.crumb{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:12.5px;color:#8C7A86;padding:22px 0 0}
.crumb a{color:var(--muted)}
.crumb a:hover{color:var(--primary)}
.crumb i{font-size:9px}

/* ============ eval head ============ */
.eval-head{padding:20px 0 46px}
.eval-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:34px;align-items:start}
.eyebrow{
  font-family:var(--font-mono);font-size:11.5px;letter-spacing:.18em;color:var(--primary);
  text-transform:uppercase;margin-bottom:16px;
}
.eval-head h1{
  font-family:var(--font-serif);font-weight:800;font-size:clamp(1.7rem,3.3vw,2.5rem);
  line-height:1.2;letter-spacing:-.02em;max-width:720px;
}
.lede{color:var(--muted);font-size:15px;line-height:1.95;margin-top:16px;max-width:700px}
.eval-meta{display:flex;flex-wrap:wrap;gap:8px;margin-top:20px}
.score-card{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);
  padding:22px;box-shadow:var(--shadow);position:relative;overflow:hidden;
}
.score-card::before{content:"";position:absolute;left:0;right:0;top:0;height:2px;background:var(--primary)}
.score-top{display:flex;align-items:flex-end;gap:10px;padding-bottom:14px;border-bottom:1px solid var(--line)}
.score-big{font-family:var(--font-mono);font-size:46px;font-weight:700;line-height:1;color:var(--accent-soft)}
.score-big span{font-size:14px;color:var(--muted);margin-left:4px}
.score-cap{font-size:12px;color:var(--muted);line-height:1.6;padding-bottom:6px}
.bar-row{display:grid;grid-template-columns:44px 1fr 34px;align-items:center;gap:10px;margin-top:11px}
.bar-label{font-size:12px;color:var(--muted)}
.bar-track{height:6px;border-radius:99px;background:rgba(255,255,255,.08);overflow:hidden}
.bar-fill{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,var(--primary),var(--accent))}
.bar-val{font-family:var(--font-mono);font-size:12px;color:var(--accent);text-align:right}
.score-foot{margin-top:16px;padding-top:14px;border-top:1px solid var(--line);font-family:var(--font-mono);font-size:11.5px;color:#8C7A86;line-height:1.8}
.anchor-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:24px}
.anchor-btn{
  display:inline-flex;align-items:center;gap:7px;height:34px;padding:0 14px;border-radius:999px;
  border:1px solid var(--line);background:rgba(255,255,255,.03);font-size:12.5px;color:var(--muted);
  transition:border-color .16s ease,color .16s ease,background .16s ease;
}
.anchor-btn:hover{color:var(--primary);border-color:var(--line-strong);background:var(--primary-100)}

/* ============ table ============ */
.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}
table{width:100%;border-collapse:collapse;font-size:14px}
thead th{
  text-align:left;font-family:var(--font-mono);font-size:11px;letter-spacing:.1em;color:#8C7A86;
  font-weight:500;text-transform:uppercase;padding:14px 18px;border-bottom:1px solid var(--line);background:#1A1320;
}
tbody td{padding:15px 18px;border-bottom:1px solid var(--line);color:var(--muted);vertical-align:top;line-height:1.7}
tbody tr:last-child td{border-bottom:0}
tbody tr:hover td{background:rgba(255,255,255,.025);color:var(--text)}
tbody td:first-child{color:var(--text);font-weight:500}
.td-mono{font-family:var(--font-mono);font-size:12.5px;color:var(--accent)}

/* ============ bento ============ */
.bento{display:grid;grid-template-columns:1.35fr 1fr 1fr;gap:18px}
.bcard{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:22px;
  display:flex;flex-direction:column;gap:12px;
  transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease;
}
.bcard:hover{transform:translateY(-3px);border-color:var(--line-strong);box-shadow:var(--shadow)}
.bcard-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.bcard-num{font-family:var(--font-mono);font-size:11.5px;color:#7E6E79;letter-spacing:.12em}
.bcard h3{font-size:17px;font-weight:700}
.bcard p{font-size:13.5px;color:var(--muted);line-height:1.85}
.mini-ui{background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:12px;display:flex;flex-direction:column;gap:8px}
.mini-line{height:8px;border-radius:99px;background:rgba(255,255,255,.09)}
.mini-line.w70{width:70%}
.mini-line.w50{width:50%}
.mini-line.w40{width:40%}
.mini-pill{display:inline-flex;align-items:center;height:22px;padding:0 9px;border-radius:999px;background:var(--primary-100);color:var(--primary);font-size:10.5px;font-family:var(--font-mono)}
.mini-pills{display:flex;flex-wrap:wrap;gap:6px}
.mini-toggle{display:flex;align-items:center;justify-content:space-between;font-size:11.5px;color:var(--muted)}
.mini-switch{width:30px;height:16px;border-radius:99px;background:rgba(127,200,169,.35);position:relative}
.mini-switch::after{content:"";position:absolute;right:2px;top:2px;width:12px;height:12px;border-radius:50%;background:var(--success)}
.mini-switch.off{background:rgba(255,255,255,.12)}
.mini-switch.off::after{right:auto;left:2px;background:#8C7A86}
.bcard-note{font-family:var(--font-mono);font-size:11.5px;color:var(--accent);margin-top:auto}

/* ============ checklist ============ */
.check-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.check-card{
  display:flex;gap:14px;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--radius);padding:20px;
  transition:border-color .2s ease,transform .2s ease;
}
.check-card:hover{border-color:rgba(127,200,169,.4);transform:translateY(-2px)}
.check-ico{
  flex-shrink:0;width:34px;height:34px;border-radius:9px;display:flex;align-items:center;justify-content:center;
  background:rgba(127,200,169,.14);color:var(--success);font-size:13px;
}
.check-card h3{font-size:15.5px;font-weight:700;margin-bottom:6px}
.check-card p{font-size:13.5px;color:var(--muted);line-height:1.8}

/* ============ screenshots ============ */
.shot-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:24px;align-items:start}
.shot{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--surface)}
.shot img{width:100%;aspect-ratio:16/9;object-fit:cover}
.shot figcaption{padding:12px 16px;font-size:12px;color:#8C7A86;border-top:1px solid var(--line)}
.notes{display:flex;flex-direction:column;gap:12px}
.note-item{display:flex;gap:12px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);padding:14px 16px}
.note-num{font-family:var(--font-mono);font-size:12px;color:var(--primary);flex-shrink:0}
.note-item p{font-size:13.5px;color:var(--muted);line-height:1.8}
.shot-two{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:18px}

/* ============ compare ============ */
.cmp-table thead th:not(:first-child){text-align:center}
.cmp-table tbody td:not(:first-child){text-align:center}
.cmp-yes{color:var(--success);font-family:var(--font-mono);font-size:12.5px}
.cmp-half{color:var(--accent);font-family:var(--font-mono);font-size:12.5px}
.cmp-no{color:#8C7A86;font-family:var(--font-mono);font-size:12.5px}

/* ============ voices ============ */
.voice-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.voice-card{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:20px;
  display:flex;flex-direction:column;gap:12px;
  transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease;
}
.voice-card:hover{transform:translateY(-3px);border-color:var(--line-strong);box-shadow:var(--shadow)}
.voice-top{display:flex;align-items:center;justify-content:space-between;gap:10px}
.voice-score{font-family:var(--font-mono);font-size:20px;font-weight:700;color:var(--accent)}
.voice-score span{font-size:11px;color:var(--muted);margin-left:2px}
.voice-name{font-size:13px;color:var(--text)}
.voice-date{font-family:var(--font-mono);font-size:11px;color:#7E6E79}
.voice-card p{font-size:13.5px;color:var(--muted);line-height:1.85}
.tag-row{display:flex;flex-wrap:wrap;gap:6px;margin-top:auto}

/* ============ verdict ============ */
.verdict-box{
  background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius);
  padding:26px;position:relative;overflow:hidden;
}
.verdict-box::before{content:"";position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--primary)}
.verdict-grid{display:grid;grid-template-columns:1fr 1fr;gap:26px;margin-top:18px}
.verdict-col h3{font-size:14px;font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;margin-bottom:12px}
.verdict-col.yes h3{color:var(--success)}
.verdict-col.no h3{color:var(--danger)}
.verdict-col li{display:flex;gap:10px;font-size:14px;color:var(--muted);line-height:1.8;padding:7px 0;border-bottom:1px dashed rgba(255,255,255,.06)}
.verdict-col li:last-child{border-bottom:0}
.verdict-col li i{font-size:11px;margin-top:7px;flex-shrink:0}

/* ============ post list ============ */
.post-list{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--surface)}
.post-row{
  display:grid;grid-template-columns:96px minmax(0,1fr) auto 18px;align-items:center;gap:18px;
  padding:18px 20px;border-bottom:1px solid var(--line);
  transition:background .18s ease;
}
.post-row:last-child{border-bottom:0}
.post-row:hover{background:rgba(255,255,255,.035)}
.post-date{font-family:var(--font-mono);font-size:12px;color:#8C7A86}
.post-title{font-size:15px;font-weight:600;display:block;transition:color .18s ease}
.post-row:hover .post-title{color:var(--primary)}
.post-sum{display:block;font-size:13px;color:var(--muted);line-height:1.75;margin-top:4px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.post-arrow{color:#7E6E79;font-size:12px}
.post-row:hover .post-arrow{color:var(--primary)}
.list-empty{padding:26px 20px;color:var(--muted);font-size:14px;text-align:center}
.list-foot{display:flex;justify-content:flex-end;margin-top:16px}

/* ============ cta ============ */
.cta-band{
  background:linear-gradient(120deg,rgba(255,95,126,.16),rgba(38,28,40,.9) 60%),var(--surface-2);
  border:1px solid var(--line-strong);border-radius:var(--radius);padding:32px;
}
.cta-inner{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:28px;align-items:center}
.cta-band h2{font-family:var(--font-serif);font-size:clamp(1.25rem,2.2vw,1.6rem);font-weight:700;line-height:1.35}
.cta-band p{color:var(--muted);font-size:14px;line-height:1.9;margin-top:10px;max-width:620px}
.cta-points{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.cta-actions{display:flex;flex-direction:column;gap:12px;min-width:190px}
.cta-actions .btn{width:100%}

/* ============ drawer ============ */
.drawer{position:fixed;inset:0;z-index:90;display:none}
.drawer.open{display:block}
.drawer-mask{position:absolute;inset:0;background:rgba(8,6,10,.72);border:0;padding:0;cursor:pointer;width:100%;height:100%}
.drawer-panel{
  position:relative;width:min(320px,86vw);height:100%;background:var(--surface);
  border-right:1px solid var(--line);padding:20px 18px 40px;overflow-y:auto;
  display:flex;flex-direction:column;gap:20px;box-shadow:var(--shadow);
}
.drawer-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.drawer-close{width:34px;height:34px;border-radius:8px;border:1px solid var(--line);background:#1B1522;color:var(--text);cursor:pointer}
.drawer-close:hover{color:var(--primary);border-color:var(--line-strong)}
.drawer-panel .search-input{height:40px}
.drawer-nav a{display:block;padding:9px 10px;border-radius:8px;font-size:14.5px;color:var(--muted)}
.drawer-nav a:hover{background:rgba(255,255,255,.05);color:var(--text)}
.drawer-nav a.active{background:var(--primary-100);color:var(--primary)}
.drawer-toc a{display:block;padding:6px 10px;font-size:13px;color:#8C7A86;border-left:2px solid transparent}
.drawer-toc a:hover{color:var(--text)}

/* ============ footer ============ */
.site-footer{border-top:1px solid var(--line);background:var(--bg-soft);margin-top:40px}
.ftr{max-width:1320px;margin:0 auto;padding:54px 24px 34px;display:grid;grid-template-columns:1.6fr repeat(4,1fr);gap:32px}
.ftr-col h4{font-family:var(--font-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:#8C7A86;margin-bottom:12px}
.ftr-col a{display:block;font-size:13.5px;color:var(--muted);line-height:2.1;transition:color .16s ease}
.ftr-col a:hover{color:var(--primary)}
.ftr-desc{font-size:13.5px;color:var(--muted);line-height:1.9;margin-top:12px;max-width:300px}
.ftr .brand-name{font-size:17px}
.ftr-bottom{
  border-top:1px solid var(--line);max-width:1320px;margin:0 auto;padding:16px 24px;
  display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between;font-size:12.5px;color:#8C7A86;
}
.ftr-bottom .mono{font-family:var(--font-mono);letter-spacing:.06em}

/* ============ responsive ============ */
@media (max-width:1200px){
  .doc-shell{grid-template-columns:216px minmax(0,1fr);gap:32px}
  .hdr-search{max-width:260px}
}
@media (max-width:1024px){
  .side-nav{display:none}
  .doc-shell{grid-template-columns:minmax(0,1fr);gap:0}
  .hdr-search{display:none}
  .drawer-toggle{display:inline-flex}
  .eval-grid{grid-template-columns:minmax(0,1fr) 280px;gap:24px}
  .bento{grid-template-columns:1fr 1fr}
  .voice-grid{grid-template-columns:1fr 1fr}
  .ftr{grid-template-columns:1fr 1fr 1fr}
}
@media (max-width:768px){
  .hdr{padding:10px 16px;gap:12px}
  .brand-name{font-size:16px}
  .brand-sub{font-size:10px}
  .mini-select{display:none}
  .hdr-tools .btn-sm{display:none}
  .container,.doc-shell{padding:0 18px}
  .eval-grid{grid-template-columns:1fr}
  .bento{grid-template-columns:1fr}
  .check-grid{grid-template-columns:1fr}
  .shot-grid{grid-template-columns:1fr}
  .shot-two{grid-template-columns:1fr}
  .voice-grid{grid-template-columns:1fr}
  .verdict-grid{grid-template-columns:1fr}
  .cta-inner{grid-template-columns:1fr}
  .cta-actions{flex-direction:row;flex-wrap:wrap;min-width:0}
  .cta-actions .btn{width:auto;flex:1 1 160px}
  .post-row{grid-template-columns:1fr;gap:8px;padding:16px}
  .post-date{order:-1}
  .post-arrow{display:none}
  .sec{padding:42px 0}
  .ftr{grid-template-columns:1fr 1fr;padding:40px 18px 28px;gap:24px}
  .ftr-bottom{padding:14px 18px;flex-direction:column;gap:6px}
  .spec-table thead,.cmp-table thead{display:none}
  .spec-table,.cmp-table{display:block}
  .spec-table tbody,.cmp-table tbody{display:block}
  .spec-table tr,.cmp-table tr{
    display:block;background:var(--surface);border:1px solid var(--line);border-radius:12px;
    padding:14px 16px;margin:0 0 12px;
  }
  .table-wrap{overflow:visible;background:transparent;border:0;border-radius:0}
  .spec-table td,.cmp-table td{
    display:flex;justify-content:space-between;gap:16px;border:0;padding:5px 0;font-size:13.5px;
  }
  .spec-table td::before,.cmp-table td::before{
    content:attr(data-label);color:#8C7A86;font-family:var(--font-mono);font-size:11.5px;flex-shrink:0;
  }
  .cmp-table td:not(:first-child){text-align:right}
}
@media (max-width:520px){
  .ftr{grid-template-columns:1fr}
  .eval-head h1{font-size:1.6rem}
  .score-big{font-size:38px}
  .cta-band{padding:22px}
  .sec-title{font-size:1.3rem}
  .anchor-btn{font-size:12px;height:32px;padding:0 12px}
}
@media (prefers-reduced-motion:reduce){
  *{transition:none!important;animation:none!important;scroll-behavior:auto!important}
}

/* roulang page: category3 */
:root{
  --bg:#100C12;
  --bg-soft:#171118;
  --surface:#1E1620;
  --surface-2:#261C28;
  --line:rgba(255,255,255,.09);
  --line-strong:rgba(255,95,126,.35);
  --text:#F5EEF1;
  --muted:#B9A9B3;
  --primary:#FF5F7E;
  --primary-600:#E84566;
  --primary-100:rgba(255,95,126,.12);
  --accent:#F2B36B;
  --accent-soft:#FFD9AE;
  --success:#7FC8A9;
  --danger:#FF8A7A;
  --radius:16px;
  --radius-sm:10px;
  --shadow:0 18px 40px rgba(0,0,0,.35);
  --font-sans:"Noto Sans SC","PingFang SC","Microsoft YaHei",system-ui,sans-serif;
  --font-serif:"Noto Serif SC","Songti SC",Georgia,serif;
  --font-mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:132px}
body{
  margin:0;background:var(--bg);color:var(--text);
  font-family:var(--font-sans);font-size:16px;line-height:1.75;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit;color:inherit}
h1,h2,h3,h4,p,ul,ol{margin:0}
ul,ol{padding:0;list-style:none}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{
  outline:2px solid var(--accent);outline-offset:3px;border-radius:6px;
}
.mono{font-family:var(--font-mono)}

/* ---------- header ---------- */
.site-header{position:sticky;top:0;z-index:60;background:#140F18;border-bottom:1px solid var(--line)}
.hdr{display:flex;align-items:center;gap:20px;height:64px;max-width:1320px;margin:0 auto;padding:0 24px}
.brand{display:flex;flex-direction:column;line-height:1.15;flex-shrink:0}
.brand-name{font-family:var(--font-serif);font-weight:800;font-size:18px;letter-spacing:.01em}
.brand-name .dot{color:var(--primary)}
.brand-sub{font-size:11px;color:var(--muted);letter-spacing:.1em;margin-top:2px}
.hdr-search{position:relative;flex:1;max-width:330px;display:block}
.hdr-search i{position:absolute;left:13px;top:50%;transform:translateY(-50%);font-size:13px;color:var(--muted);pointer-events:none}
.search-input{
  width:100%;height:38px;padding:0 14px 0 38px;background:#1B1522;border:1px solid var(--line);
  border-radius:10px;font-size:13.5px;color:var(--text);outline:none;
  transition:border-color .18s ease,box-shadow .18s ease,background .18s ease;
}
.search-input::placeholder{color:#7E6E79}
.search-input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-100);background:#201828}
.hdr-tools{display:flex;align-items:center;gap:10px;margin-left:auto}
.mini-select{
  display:block;height:34px;padding:0 10px;background:#1B1522;border:1px solid var(--line);
  border-radius:8px;font-size:12.5px;color:var(--muted);cursor:pointer;outline:none;
  transition:border-color .18s ease,color .18s ease;
}
.mini-select:hover{color:var(--text);border-color:rgba(255,255,255,.2)}
.drawer-toggle{
  display:none;align-items:center;justify-content:center;width:38px;height:38px;
  border-radius:9px;border:1px solid var(--line);background:#1B1522;color:var(--text);cursor:pointer;
}
.drawer-toggle:hover{border-color:var(--line-strong);color:var(--primary)}
.hdr-nav{border-top:1px solid var(--line);background:#120D16}
.hdr-nav-inner{max-width:1320px;margin:0 auto;padding:0 24px;display:flex;gap:4px;overflow-x:auto;scrollbar-width:none}
.hdr-nav-inner::-webkit-scrollbar{display:none}
.nav-link{display:inline-flex;align-items:center;height:44px;padding:0 14px;font-size:14px;color:var(--muted);border-bottom:2px solid transparent;white-space:nowrap;transition:color .18s ease,border-color .18s ease,background .18s ease}
.nav-link:hover{color:var(--text);background:rgba(255,255,255,.03)}
.nav-link.is-active{color:var(--primary);border-bottom-color:var(--primary);font-weight:600}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  height:46px;padding:0 22px;border-radius:var(--radius-sm);
  font-size:15px;font-weight:600;border:1px solid transparent;cursor:pointer;
  transition:background .18s ease,color .18s ease,border-color .18s ease,box-shadow .18s ease,transform .18s ease;
}
.btn-primary{background:var(--primary);color:#1A0E12}
.btn-primary:hover{background:#FF7D95;box-shadow:0 12px 28px rgba(255,95,126,.28);transform:translateY(-1px)}
.btn-primary:active{background:var(--primary-600);transform:translateY(0)}
.btn-ghost{background:transparent;border-color:rgba(255,255,255,.16);color:var(--text)}
.btn-ghost:hover{background:var(--primary-100);border-color:var(--line-strong);color:var(--primary)}
.btn-ghost:active{background:rgba(255,95,126,.2)}
.btn-sm{height:38px;padding:0 16px;font-size:13.5px;border-radius:9px;font-weight:600}
.btn-block{width:100%}

/* ---------- chips / badges ---------- */
.chip{
  display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 12px;border-radius:999px;
  border:1px solid var(--line);background:rgba(255,255,255,.03);
  font-size:11.5px;color:var(--muted);font-family:var(--font-mono);letter-spacing:.04em;white-space:nowrap;
}
.badge{
  display:inline-flex;align-items:center;height:24px;padding:0 10px;border-radius:999px;
  font-family:var(--font-mono);font-size:11px;letter-spacing:.06em;
  background:var(--primary-100);color:var(--primary);border:1px solid rgba(255,95,126,.24);white-space:nowrap;
}
.badge-amber{background:rgba(242,179,107,.14);color:var(--accent);border-color:rgba(242,179,107,.3)}
.badge-sage{background:rgba(127,200,169,.14);color:var(--success);border-color:rgba(127,200,169,.3)}

/* ---------- shell ---------- */
.shell{
  width:100%;max-width:1320px;margin:0 auto;padding:0 24px;
  display:grid;grid-template-columns:236px minmax(0,1fr);gap:44px;align-items:start;
}
.side-nav{
  position:sticky;top:126px;align-self:start;max-height:calc(100vh - 146px);overflow-y:auto;
  border-right:1px solid var(--line);padding:34px 22px 44px 0;
}
.side-nav::-webkit-scrollbar{width:5px}
.side-nav::-webkit-scrollbar-thumb{background:rgba(255,255,255,.12);border-radius:4px}
.side-group + .side-group{margin-top:28px}
.side-title{
  font-family:var(--font-mono);font-size:10.5px;letter-spacing:.18em;color:#7E6E79;
  text-transform:uppercase;margin-bottom:10px;padding-left:12px;
}
.side-link{
  display:block;font-size:14px;line-height:2.2;color:var(--muted);
  padding:0 10px 0 12px;border-left:2px solid transparent;
  transition:color .18s ease,border-color .18s ease,background .18s ease;
}
.side-link:hover{color:var(--text);background:rgba(255,255,255,.03)}
.side-link.is-active{
  color:var(--text);border-left-color:var(--primary);
  background:linear-gradient(90deg,var(--primary-100),transparent);
}
.main-col{min-width:0;padding:34px 0 88px}

/* ---------- doc head ---------- */
.doc-head{
  position:relative;overflow:hidden;border:1px solid var(--line);border-radius:var(--radius);
  background:var(--surface) url('/assets/images/2abef1d5ef571bc6.webp') center/cover no-repeat;
  padding:34px 32px 32px;
}
.doc-head::before{
  content:"";position:absolute;inset:0;
  background:linear-gradient(104deg,rgba(16,12,18,.96) 0%,rgba(16,12,18,.9) 52%,rgba(16,12,18,.68) 100%);
}
.doc-head > *{position:relative;z-index:1}
.crumb{font-size:12.5px;color:var(--muted);display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.crumb a{transition:color .18s ease}
.crumb a:hover{color:var(--primary)}
.crumb span{color:#6D5D68}
.doc-meta{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.doc-head h1{
  font-family:var(--font-serif);font-weight:800;letter-spacing:-.02em;
  font-size:clamp(1.7rem,3.3vw,2.5rem);line-height:1.28;margin-top:18px;max-width:780px;
}
.doc-lead{margin-top:16px;color:var(--muted);font-size:14.8px;line-height:1.95;max-width:740px}
.doc-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px}

/* ---------- sections ---------- */
.sec{padding:56px 0;border-top:1px solid var(--line)}
.sec:first-of-type{border-top:0;padding-top:44px}
.sec-head{margin-bottom:26px}
.sec-eyebrow{
  font-family:var(--font-mono);font-size:11.5px;letter-spacing:.16em;
  color:var(--primary);display:flex;align-items:center;gap:10px;
}
.sec-eyebrow::after{content:"";flex:1;height:1px;background:var(--line);max-width:180px}
.sec-title{font-family:var(--font-serif);font-weight:700;letter-spacing:-.01em;font-size:clamp(1.32rem,2.4vw,1.78rem);line-height:1.36;margin-top:10px}
.sec-desc{margin-top:12px;color:var(--muted);font-size:14.5px;line-height:1.9;max-width:760px}

/* ---------- filter chips ---------- */
.filter-block{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);padding:22px 24px 24px}
.filter-row + .filter-row{margin-top:18px;padding-top:18px;border-top:1px dashed rgba(255,255,255,.08)}
.filter-label{
  font-family:var(--font-mono);font-size:11px;letter-spacing:.14em;color:#8E7C88;
  margin-bottom:10px;display:block;text-transform:uppercase;
}
.chip-row{display:flex;flex-wrap:wrap;gap:8px}
.filter-chip{
  display:inline-flex;align-items:center;height:32px;padding:0 14px;border-radius:999px;
  border:1px solid var(--line);background:rgba(255,255,255,.03);
  font-size:13px;color:var(--muted);cursor:pointer;
  transition:background .18s ease,color .18s ease,border-color .18s ease,transform .18s ease;
}
.filter-chip:hover{border-color:var(--line-strong);color:var(--text);transform:translateY(-1px)}
.filter-chip.is-on{background:var(--primary-100);border-color:rgba(255,95,126,.45);color:var(--primary);font-weight:600}
.filter-note{margin-top:16px;font-size:12.5px;color:#8E7C88;font-family:var(--font-mono)}

/* ---------- scene grid ---------- */
.scene-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
.scene-card{
  border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);overflow:hidden;
  transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease;
}
.scene-card:hover{transform:translateY(-3px);border-color:var(--line-strong);box-shadow:var(--shadow)}
.scene-media{position:relative;aspect-ratio:4/3;overflow:hidden;background:#241A26}
.scene-media img{width:100%;height:100%;object-fit:cover;transition:transform .35s ease}
.scene-card:hover .scene-media img{transform:scale(1.04)}
.scene-media::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(16,12,18,.04) 30%,rgba(16,12,18,.76) 100%)}
.scene-num{
  position:absolute;left:14px;top:12px;z-index:2;font-family:var(--font-mono);
  font-size:12px;letter-spacing:.12em;color:var(--accent);
}
.scene-body{padding:18px 20px 20px}
.scene-body h3{font-size:17.5px;font-weight:700;letter-spacing:-.01em}
.scene-body p{margin-top:8px;color:var(--muted);font-size:13.8px;line-height:1.85}
.scene-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px}

/* ---------- timeline ---------- */
.tl{border-left:1px solid var(--line);margin-left:6px;padding-left:24px}
.tl-row{position:relative;padding:15px 0;border-bottom:1px dashed rgba(255,255,255,.07)}
.tl-row:last-child{border-bottom:0;padding-bottom:0}
.tl-row::before{
  content:"";position:absolute;left:-29px;top:23px;width:9px;height:9px;border-radius:50%;
  background:var(--surface-2);border:1px solid var(--line-strong);
}
.tl-day{font-family:var(--font-mono);font-size:11.5px;letter-spacing:.12em;color:var(--accent)}
.tl-txt{margin-top:5px;font-size:14.5px;color:var(--muted);line-height:1.88;max-width:720px}

/* ---------- safety lists ---------- */
.check-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
.check-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);padding:22px 24px 24px}
.check-card h3{font-size:16.5px;font-weight:700;display:flex;align-items:center;gap:9px}
.check-card h3 i{color:var(--primary);font-size:14px}
.check-list{margin-top:16px;display:flex;flex-direction:column;gap:11px}
.check-list li{position:relative;padding-left:22px;font-size:14px;line-height:1.82;color:var(--muted)}
.check-list li::before{
  content:"\f00c";font-family:"Font Awesome 6 Free";font-weight:900;
  position:absolute;left:0;top:4px;font-size:11px;color:var(--success);
}
.notice{
  margin-top:20px;border:1px solid rgba(127,200,169,.26);background:rgba(127,200,169,.07);
  border-radius:var(--radius);padding:18px 22px;font-size:13.8px;line-height:1.9;color:#CFE9DD;
}
.notice strong{color:var(--success);font-weight:700}

/* ---------- stories ---------- */
.story-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
.story-card{
  border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);
  padding:24px;transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease;
}
.story-card:hover{transform:translateY(-3px);border-color:var(--line-strong);box-shadow:var(--shadow)}
.story-top{display:flex;align-items:center;gap:12px}
.avatar{
  width:44px;height:44px;border-radius:50%;flex-shrink:0;
  background:linear-gradient(135deg,var(--primary),var(--accent));
  display:flex;align-items:center;justify-content:center;
  font-family:var(--font-mono);font-size:14px;font-weight:700;color:#1A0E12;
}
.story-name{font-size:14px;font-weight:600}
.story-meta{font-size:12px;color:#8E7C88;font-family:var(--font-mono);margin-top:3px}
.story-quote{
  margin-top:16px;font-family:var(--font-serif);font-size:15.5px;line-height:1.92;color:#E7DAE0;
  border-left:2px solid var(--line-strong);padding-left:14px;
}
.story-foot{margin-top:18px;display:flex;flex-wrap:wrap;gap:6px}
.story-note{margin-top:16px;font-size:12px;color:#7E6E79}

/* ---------- post list ---------- */
.post-list{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--surface)}
.post-row{
  display:grid;grid-template-columns:110px minmax(0,1fr) 22px;gap:18px;align-items:center;
  padding:18px 22px;border-bottom:1px solid var(--line);
  transition:background .18s ease;
}
.post-row:last-child{border-bottom:0}
.post-row:hover{background:var(--surface-2)}
.post-date{font-family:var(--font-mono);font-size:12px;color:#8E7C88;letter-spacing:.03em}
.post-main h3{font-size:15.5px;font-weight:600;line-height:1.62;transition:color .18s ease}
.post-row:hover .post-main h3{color:var(--primary)}
.post-main p{
  margin-top:5px;font-size:13px;color:var(--muted);line-height:1.78;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.post-row > i{color:#6D5D68;font-size:12px;justify-self:end;transition:color .18s ease,transform .18s ease}
.post-row:hover > i{color:var(--primary);transform:translateX(2px)}
.list-more{display:flex;justify-content:flex-end;margin-top:16px}
.empty-state{
  border:1px dashed rgba(255,255,255,.14);border-radius:var(--radius);
  padding:34px 22px;text-align:center;color:#8E7C88;font-size:14px;background:rgba(255,255,255,.02);
}

/* ---------- faq ---------- */
.faq{border-top:1px solid var(--line)}
.faq-item{border-bottom:1px solid var(--line)}
.faq-item summary{
  display:flex;justify-content:space-between;align-items:center;gap:16px;
  padding:18px 4px;cursor:pointer;list-style:none;font-size:15.5px;font-weight:600;
  transition:color .18s ease;
}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary:hover{color:var(--primary)}
.faq-item summary i{color:var(--primary);font-size:13px;transition:transform .2s ease;flex-shrink:0}
.faq-item[open] summary i{transform:rotate(45deg)}
.faq-item[open] summary{color:var(--primary)}
.faq-a{padding:0 4px 20px;color:var(--muted);font-size:14.3px;line-height:1.92;max-width:800px}

/* ---------- cta band ---------- */
.cta-band{
  display:grid;grid-template-columns:minmax(0,1fr) auto;gap:28px;align-items:center;
  border:1px solid var(--line-strong);border-radius:var(--radius);
  background:radial-gradient(560px 240px at 12% 0%,rgba(255,95,126,.18),transparent 70%),var(--surface);
  padding:34px 34px;
}
.cta-band h2{font-family:var(--font-serif);font-size:clamp(1.25rem,2.2vw,1.6rem);line-height:1.4;letter-spacing:-.01em}
.cta-band p{margin-top:10px;color:var(--muted);font-size:14px;line-height:1.88;max-width:520px}
.cta-actions{display:flex;flex-wrap:wrap;gap:12px}

/* ---------- footer ---------- */
.site-footer{border-top:1px solid var(--line);background:#0C0910;margin-top:20px}
.ftr{
  max-width:1320px;margin:0 auto;padding:54px 24px 34px;
  display:grid;grid-template-columns:1.5fr repeat(4,1fr);gap:32px;
}
.ftr-brand .brand-name{font-family:var(--font-serif);font-weight:800;font-size:17px}
.ftr-desc{margin-top:12px;font-size:13px;color:var(--muted);line-height:1.85;max-width:280px}
.ftr-col h4{
  font-family:var(--font-mono);font-size:11px;letter-spacing:.16em;color:#8E7C88;
  text-transform:uppercase;font-weight:500;margin-bottom:12px;
}
.ftr-col a{display:block;font-size:13.5px;color:var(--muted);line-height:2.1;transition:color .18s ease}
.ftr-col a:hover{color:var(--primary)}
.ftr-bottom{
  max-width:1320px;margin:0 auto;padding:18px 24px 30px;border-top:1px solid var(--line);
  display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between;
  font-size:12.5px;color:#7E6E79;
}
.ftr-bottom .mono{letter-spacing:.04em}

/* ---------- drawer ---------- */
.drawer-mask{
  position:fixed;inset:0;background:rgba(6,4,8,.7);z-index:80;
  opacity:0;pointer-events:none;transition:opacity .24s ease;
}
.drawer-mask.is-open{opacity:1;pointer-events:auto}
.drawer{
  position:fixed;top:0;left:0;bottom:0;width:300px;max-width:86vw;z-index:90;
  background:#171118;border-right:1px solid var(--line);padding:20px 18px 40px;
  overflow-y:auto;transform:translateX(-102%);transition:transform .24s ease;
}
.drawer.is-open{transform:translateX(0)}
.drawer-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-bottom:16px;border-bottom:1px solid var(--line)}
.drawer-close{
  width:34px;height:34px;border-radius:9px;border:1px solid var(--line);
  background:#1B1522;color:var(--text);cursor:pointer;
}
.drawer-close:hover{color:var(--primary);border-color:var(--line-strong)}
.drawer-body{margin-top:18px}

/* ---------- responsive ---------- */
@media (max-width:1180px){
  .shell{grid-template-columns:206px minmax(0,1fr);gap:32px}
  .ftr{grid-template-columns:1.4fr repeat(2,1fr)}
  .ftr-col:nth-child(4),.ftr-col:nth-child(5){grid-column:span 1}
}
@media (max-width:1023px){
  .shell{grid-template-columns:minmax(0,1fr);gap:0}
  .side-nav{display:none}
  .main-col{padding:26px 0 72px}
  .drawer-toggle{display:inline-flex}
  .hdr-search{display:none}
  .mini-select{display:none}
  .scene-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .check-grid,.story-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ftr{grid-template-columns:1fr 1fr;gap:26px}
  .cta-band{grid-template-columns:minmax(0,1fr);padding:28px 24px}
}
@media (max-width:767px){
  .hdr{height:60px;gap:12px;padding:0 16px}
  .shell{padding:0 16px}
  .hdr-nav-inner{padding:0 16px}
  .brand-name{font-size:16px}
  .brand-sub{font-size:10px}
  .btn-sm{height:34px;padding:0 13px;font-size:12.5px}
  .doc-head{padding:26px 20px 26px}
  .sec{padding:44px 0}
  .scene-grid{grid-template-columns:minmax(0,1fr)}
  .check-grid,.story-grid{grid-template-columns:minmax(0,1fr)}
  .post-row{grid-template-columns:minmax(0,1fr) 20px;gap:10px;padding:16px 18px}
  .post-date{grid-column:1/-1;font-size:11.5px}
  .post-main h3{font-size:15px}
  .cta-actions .btn{width:100%}
  .ftr{grid-template-columns:1fr;padding:40px 16px 26px}
  .ftr-bottom{padding:16px 16px 26px;flex-direction:column}
  .doc-actions .btn{width:100%}
}
@media (max-width:520px){
  .hdr-tools .btn{display:none}
  .doc-head h1{font-size:1.5rem}
  .filter-block{padding:18px 16px}
  .filter-chip{height:30px;padding:0 12px;font-size:12.5px}
  .sec-eyebrow::after{max-width:80px}
}
@media (prefers-reduced-motion:reduce){
  *{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
}
