/* =============================================================================
   VPNZM · tutorial.css
   快速上手页专属:首屏双栏(文案 + 主线卡)、正文步骤版式、平台块、面板示意。
   颜色、圆角、字体全部引用 base.css 的 :root 令牌,不写颜色字面量。
   ========================================================================== */

/* ------------------------------------------------------------- page hero -- */
.tut-hero{
  position:relative;
  overflow-x:clip;
  padding-top:34px;
  padding-bottom:36px;
  background:linear-gradient(180deg,var(--hero-top) 0%,var(--hero-mid) 62%,var(--bg) 100%);
  border-bottom:1px solid var(--border);
}
.tut-hero::before{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  background:
    radial-gradient(34% 46% at 16% 4%,var(--halo-amber),transparent 72%),
    radial-gradient(38% 50% at 86% 0%,var(--halo-rose),transparent 74%);
}
.tut-halo{
  position:absolute;
  right:-90px;
  top:-80px;
  width:420px;
  height:420px;
  border-radius:50%;
  background:radial-gradient(circle,var(--halo-rose) 0%,transparent 68%);
  pointer-events:none;
}
.tut-hero .wrap{position:relative;z-index:1}

.tut-hero-grid{
  display:grid;
  grid-template-columns:minmax(0,1.35fr) minmax(0,.85fr);
  gap:32px;
  align-items:center;
}
.tut-copy{min-width:0}
.tut-hero h1{
  margin-top:12px;
  font-size:clamp(36px,4.2vw,54px);
  line-height:1.08;
  letter-spacing:-.03em;
}
.tut-hero .lede{
  margin-top:14px;
  max-width:58ch;
  text-align:left;
}
.tut-hero .cta-row{
  justify-content:flex-start;
  margin-top:20px;
}
.tut-hero .trust{
  justify-content:flex-start;
  margin-top:12px;
}
.tut-hero .stat-band{margin-top:28px}

/* --------------------------------------------------------- route card ---- */
.route-card{
  min-width:0;
  padding:18px;
  background:var(--bg-panel);
  border:1px solid var(--border);
  border-radius:var(--r-lg);
  box-shadow:var(--shadow-card);
}
.route-title{
  font-family:var(--font-mono);
  font-size:10.5px;
  letter-spacing:.14em;
  color:var(--text-muted);
}
.route-list{
  margin-top:10px;
  display:grid;
  gap:2px;
}
.route-list a{
  display:grid;
  grid-template-columns:auto minmax(0,1fr);
  gap:10px;
  align-items:center;
  padding:8px 6px;
  border-radius:var(--r-sm);
  transition:background-color var(--ease);
}
.route-list a:hover{background:var(--bg-panel-2)}
.rn{
  flex:none;
  width:26px;
  height:26px;
  border-radius:50%;
  display:grid;
  place-items:center;
  background:var(--accent-ghost);
  border:1px solid var(--accent-line);
  color:var(--accent);
  font-family:var(--font-mono);
  font-size:10.5px;
  font-weight:700;
}
.rt{min-width:0}
.rt b{
  display:block;
  font-size:13.5px;
  font-weight:700;
  line-height:1.4;
  color:var(--text);
}
.rt small{
  display:block;
  margin-top:1px;
  font-size:11.5px;
  line-height:1.5;
  color:var(--text-muted);
}

/* ------------------------------------------------------------- prose ----- */
.prose{
  max-width:900px;
  margin:0 auto;
  min-width:0;
  color:var(--text);
}
.prose > .callout{margin-bottom:26px}
.prose p{
  margin-top:13px;
  font-size:15.5px;
  line-height:1.85;
  color:var(--text);
}
.prose .step-lead{
  font-size:16px;
  line-height:1.8;
  color:var(--text-muted);
}
.prose ul,
.prose ol{
  margin-top:12px;
  display:grid;
  gap:8px;
}
.prose ul li{
  position:relative;
  padding-left:18px;
  font-size:14.8px;
  line-height:1.8;
  min-width:0;
}
.prose ul li::before{
  content:"";
  position:absolute;
  left:2px;
  top:.72em;
  width:6px;
  height:6px;
  border-radius:50%;
  background:var(--accent);
  opacity:.5;
}
.inline-link{
  color:var(--accent);
  font-weight:700;
  text-decoration:underline;
  text-underline-offset:3px;
  text-decoration-thickness:1px;
}
.inline-link:hover{color:var(--accent-dark)}

/* --------------------------------------------------------------- step ---- */
.step{
  margin-top:30px;
  padding-top:30px;
  border-top:1px dashed var(--border);
}
.step:first-of-type{
  margin-top:0;
  padding-top:0;
  border-top:0;
}
.step-head{
  display:flex;
  align-items:center;
  gap:12px;
  flex-wrap:wrap;
  margin-bottom:4px;
}
.step-num{
  flex:none;
  width:40px;
  height:40px;
  border-radius:var(--r-md);
  display:grid;
  place-items:center;
  background:var(--accent-ghost);
  border:1px solid var(--accent-line);
  color:var(--accent);
  font-family:var(--font-mono);
  font-size:13px;
  font-weight:700;
}
.step-head h2{
  font-size:clamp(22px,2.2vw,30px);
  line-height:1.2;
}
.step-actions{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  margin-top:18px;
}

.num-list{counter-reset:stepn}
.num-list li{
  counter-increment:stepn;
  position:relative;
  padding-left:34px;
  font-size:14.8px;
  line-height:1.8;
  min-width:0;
}
.num-list li::before{
  content:counter(stepn);
  position:absolute;
  left:0;
  top:.18em;
  width:22px;
  height:22px;
  border-radius:50%;
  display:grid;
  place-items:center;
  background:var(--bg-panel-2);
  border:1px solid var(--border);
  color:var(--accent);
  font-family:var(--font-mono);
  font-size:10.5px;
  font-weight:700;
}

/* ------------------------------------------------------- platform block -- */
.plat-block{
  margin-top:16px;
  padding:18px;
  min-width:0;
  background:var(--bg-panel);
  border:1px solid var(--border);
  border-radius:var(--r-lg);
  box-shadow:var(--shadow-soft);
}
.plat-head{
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
}
.plat-ico{
  flex:none;
  width:30px;
  height:30px;
  border-radius:9px;
  display:grid;
  place-items:center;
  background:var(--bg-panel-2);
  color:var(--text);
}
.plat-ico svg{width:16px;height:16px}
.plat-head h3{font-size:17px}
.plat-block p{
  margin-top:10px;
  font-size:14.5px;
  line-height:1.8;
  color:var(--text-muted);
}
.plat-block p strong{color:var(--text);font-weight:700}
.plat-block .plat-tip{
  margin-top:12px;
  padding:9px 12px;
  border-radius:var(--r-sm);
  background:var(--bg-panel-2);
  border:1px dashed var(--border);
  font-family:var(--font-mono);
  font-size:11px;
  line-height:1.65;
  color:var(--text-muted);
}

/* ------------------------------------------------------------ ui mock ---- */
.ui-mock{
  margin-top:18px;
  overflow:hidden;
  background:var(--bg-panel);
  border:1px solid var(--border);
  border-radius:var(--r-md);
  box-shadow:var(--shadow-soft);
}
.ui-mock-body{
  padding:14px 16px;
  display:grid;
  gap:10px;
}
.ui-row{
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
  min-width:0;
}
.ui-label{
  flex:none;
  font-family:var(--font-mono);
  font-size:10.5px;
  letter-spacing:.1em;
  color:var(--text-muted);
}
.ui-link{
  flex:1 1 200px;
  min-width:0;
  padding:7px 10px;
  border-radius:var(--r-sm);
  background:var(--bg-panel-2);
  border:1px solid var(--border);
  font-family:var(--font-mono);
  font-size:11px;
  color:var(--text-muted);
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.ui-btn{
  flex:none;
  padding:6px 12px;
  border-radius:var(--r-pill);
  background:var(--accent);
  color:var(--bg-panel);
  font-size:11px;
  font-weight:700;
  white-space:nowrap;
}
.ui-chips{
  display:flex;
  flex-wrap:wrap;
  gap:6px;
}
.ui-mock .ui-note{
  margin:0;
  font-size:11.5px;
  line-height:1.6;
  color:var(--text-muted);
}

/* ------------------------------------------------------------- next ------ */
.next-panel{margin-top:34px}
.next-title{
  font-family:var(--font-mono);
  font-size:10.5px;
  letter-spacing:.14em;
  color:var(--text-muted);
}
.next-list{
  margin-top:10px;
  display:grid;
  gap:2px;
}
.next-list li{
  display:flex;
  align-items:baseline;
  flex-wrap:wrap;
  gap:6px 10px;
  padding:9px 0;
  border-bottom:1px dashed var(--border);
}
.next-list li:last-child{border-bottom:0}
.next-list a{
  display:inline-flex;
  align-items:center;
  min-height:24px;
  font-size:14px;
  font-weight:700;
  color:var(--accent);
}
.next-list a:hover{color:var(--accent-dark)}
.next-list span{
  font-size:12.5px;
  color:var(--text-muted);
}

/* --------------------------------------------------------- responsive ---- */
@media (max-width:900px){
  .tut-hero-grid{
    grid-template-columns:1fr;
    gap:22px;
  }
}
@media (max-width:640px){
  .tut-hero{
    padding-top:24px;
    padding-bottom:28px;
  }
  .tut-hero h1{font-size:34px}
  .tut-hero .cta-row{gap:10px}
  .tut-hero .cta-row .btn{width:100%;max-width:280px}
  .tut-hero .stat-band{margin-top:22px}
  .prose p{font-size:15px}
  .step{
    margin-top:24px;
    padding-top:24px;
  }
  .step-num{
    width:34px;
    height:34px;
    font-size:12px;
  }
  .plat-block{padding:14px}
  .ui-mock-body{padding:12px}
  .ui-link{flex-basis:100%}
  .next-panel{margin-top:26px}
}