/* ==========================================================================
   VPNUJ — components.css
   Hero first screen (approved), route table, pricing cards, tabs, toc, FAQ,
   platform cards, post cards, callout, promo block, preview helpers.
   ========================================================================== */

/* ==========================================================================
   1. Hero — approved first screen
   ========================================================================== */

.hero{
  position:relative;
  max-width:100%;
  overflow-x:clip;
  padding:22px 0 14px;
}

.hero-glow{
  position:absolute;
  top:-190px;
  right:-110px;
  width:560px;
  height:560px;
  max-width:100%;
  border-radius:50%;
  pointer-events:none;
  z-index:0;
  background:radial-gradient(circle at 50% 50%,var(--glow-1),var(--glow-2) 48%,var(--glow-0) 72%);
}

.hero-inner{
  position:relative;
  z-index:1;
  display:flex;
  flex-direction:column;
  align-items:center;
  text-align:center;
}

.hero-badge{
  display:inline-flex;
  align-items:center;
  gap:8px;
  margin:0;
  padding:6px 13px;
  border-radius:var(--r-pill);
  background:var(--bg-panel);
  border:1px solid var(--border);
  font-size:12.5px;
  color:var(--text-muted);
  box-shadow:var(--shadow-xs);
}

.hero-badge .dot{
  width:6px;height:6px;
  border-radius:50%;
  background:var(--accent);
  box-shadow:0 0 0 3px var(--halo-accent);
  flex:none;
}

.hero-title{
  margin:15px 0 0;
  font-family:var(--font-display);
  font-weight:800;
  font-size:clamp(34px,4.9vw,66px);
  line-height:1.06;
  letter-spacing:-.035em;
  color:var(--text);
}

.hero-title .accent{color:var(--accent);}

.hero-sub{
  margin:13px 0 0;
  max-width:840px;
  font-size:17px;
  line-height:1.6;
  color:var(--text-muted);
}

.hero-sub strong{color:var(--text);font-weight:600;}

.hero-cta{
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  gap:12px;
  margin-top:20px;
}

/* route search — static decoration */
.route-search{
  position:relative;
  display:flex;
  align-items:center;
  width:min(100%,640px);
  height:60px;
  margin-top:18px;
  padding:0 9px 0 22px;
  background:var(--bg-panel);
  border:1px solid var(--border);
  border-radius:var(--r-lg);
  box-shadow:var(--shadow-search);
  text-align:left;
}

.rs-status{
  position:absolute;
  top:-12px;
  right:20px;
  display:inline-flex;
  align-items:center;
  gap:6px;
  height:24px;
  padding:0 10px;
  border-radius:var(--r-pill);
  background:var(--bg-panel);
  border:1px solid var(--border);
  font-family:var(--font-mono);
  font-size:10.5px;
  letter-spacing:.02em;
  color:var(--text-muted);
  box-shadow:var(--shadow-xs);
}

.rs-status .dot{
  width:5px;height:5px;border-radius:50%;
  background:var(--accent);
  flex:none;
}

.rs-field{display:flex;align-items:center;gap:8px;flex:1;min-width:0;}
.rs-label{font-size:13.5px;color:var(--text-muted);white-space:nowrap;}
.rs-chev{width:11px;height:11px;color:var(--text-soft);flex:none;}
.rs-sep{width:1px;height:22px;background:var(--border);margin:0 16px;flex:none;}

.rs-go{
  width:42px;height:42px;
  border-radius:50%;
  flex:none;
  margin-left:10px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  background:var(--bg-panel-2);
  color:var(--text);
}

.rs-go svg{width:15px;height:15px;}

/* quick pills */
.hero-pills{
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  gap:8px;
  margin-top:13px;
}

/* trust row */
.hero-trust{
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  align-items:center;
  gap:6px 18px;
  margin-top:11px;
  font-family:var(--font-mono);
  font-size:11.5px;
  letter-spacing:.01em;
  color:var(--text-soft);
}

.hero-trust li{position:relative;padding-left:15px;}

.hero-trust li::before{
  content:"";
  position:absolute;
  left:0;top:50%;
  width:3px;height:3px;
  border-radius:50%;
  background:var(--border-strong);
  transform:translateY(-50%);
}

.hero-trust .is-key{color:var(--text);font-weight:600;}
.hero-trust .is-key::before{background:var(--text);}

/* platform + flag row */
.hero-meta{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:center;
  gap:12px 26px;
  margin-top:16px;
}

.meta-group{display:flex;align-items:center;gap:14px;}
.meta-label{font-size:11px;letter-spacing:.08em;color:var(--text-soft);white-space:nowrap;}
.meta-list{display:flex;align-items:center;gap:14px;}

.meta-item{
  display:inline-flex;
  align-items:center;
  gap:6px;
  font-size:12.5px;
  color:var(--text-muted);
  white-space:nowrap;
}

.meta-item svg{flex:none;}

.pi{width:15px;height:15px;color:var(--text-muted);}
.flag{width:18px;height:18px;}

.meta-div{width:1px;height:18px;background:var(--border);flex:none;}

.f-red{fill:var(--flag-red);}
.f-blue{fill:var(--flag-blue);}
.f-white{fill:var(--flag-white);}
.flag-ring{fill:none;stroke:var(--border);stroke-width:1;}

/* ==========================================================================
   2. Sky card — line dome device
   ========================================================================== */

.sky-wrap{position:relative;width:100%;margin-top:18px;text-align:left;}

.sky-card{
  position:relative;
  height:352px;
  display:flex;
  flex-direction:column;
  justify-content:space-between;
  padding:24px 30px 22px;
  border-radius:var(--r-xl);
  overflow:hidden;
  color:var(--white);
  background:linear-gradient(180deg,var(--ink-2) 0%,var(--ink) 54%,var(--ink-3) 100%);
  box-shadow:inset 0 1px 0 var(--ink-line-hi),var(--shadow-sky);
}

.sky-glow{
  position:absolute;
  left:10%;top:-46%;
  width:76%;height:136%;
  pointer-events:none;
  background:radial-gradient(closest-side,var(--glow-sun),var(--glow-sun-2) 48%,var(--glow-sun-0) 74%);
}

.sky-lines{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;}

.horizon{fill:none;stroke:url(#horizonGrad);stroke-width:1.6;}
.horizon-glow{fill:none;stroke:url(#horizonGrad);stroke-width:9;opacity:.22;filter:blur(7px);}
.link{fill:none;stroke:url(#linkGrad);stroke-width:1.2;}
.stars circle{fill:var(--white);opacity:.22;}

.hg-1{stop-color:var(--accent);stop-opacity:.95;}
.hg-2{stop-color:var(--accent-dark);stop-opacity:.55;}
.hg-3{stop-color:var(--space-blue);stop-opacity:.9;}
.lg-1{stop-color:var(--white);stop-opacity:.05;}
.lg-2{stop-color:var(--white);stop-opacity:.42;}

.sky-top{
  position:relative;
  z-index:2;
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:20px;
}

.sky-id{display:flex;flex-direction:column;gap:7px;}

.sky-eyebrow{
  display:inline-flex;
  align-items:center;
  gap:7px;
  font-size:12px;
  letter-spacing:.06em;
  color:var(--ink-text);
}

.sky-eyebrow .dot{
  width:6px;height:6px;
  border-radius:50%;
  background:var(--accent);
  box-shadow:0 0 0 3px var(--halo-accent);
  flex:none;
}

.sky-platforms{
  font-family:var(--font-mono);
  font-size:10.5px;
  letter-spacing:.04em;
  color:var(--ink-muted);
}

.sky-count{display:flex;flex-direction:column;align-items:flex-end;gap:2px;}

.sky-count .num{
  font-family:var(--font-mono);
  font-weight:700;
  font-size:62px;
  line-height:1;
  letter-spacing:-.04em;
  color:var(--white);
}

.sky-count .cap{
  font-family:var(--font-mono);
  font-size:11px;
  letter-spacing:.14em;
  color:var(--ink-muted);
}

.sky-nodes{position:absolute;inset:0;pointer-events:none;}

.sky-node{
  position:absolute;
  transform:translateX(-50%);
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:6px;
}

.n-us{left:10%;top:52%;}
.n-jp{left:27%;top:44%;}
.n-sg{left:44%;top:56%;}
.n-hk{left:61%;top:44%;}
.n-ch{left:78%;top:58%;}

.node-dots{display:flex;align-items:center;gap:5px;height:6px;}
.node-dots i{display:block;border-radius:50%;background:var(--white);}
.node-dots i:nth-child(1),
.node-dots i:nth-child(3){width:3px;height:3px;opacity:.45;}
.node-dots i:nth-child(2){width:6px;height:6px;opacity:.95;box-shadow:0 0 0 4px var(--ink-halo);}

.node-name{
  font-family:var(--font-mono);
  font-size:11px;
  letter-spacing:.06em;
  color:var(--ink-muted);
  white-space:nowrap;
}

.sky-foot{
  position:relative;
  z-index:2;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:18px;
}

.sky-pill{
  display:inline-flex;
  align-items:center;
  flex:none;
  height:28px;
  padding:0 13px;
  border-radius:var(--r-pill);
  background:var(--white);
  color:var(--ink);
  font-family:var(--font-mono);
  font-size:11.5px;
  font-weight:600;
  letter-spacing:.02em;
  box-shadow:0 8px 18px -10px rgba(0,0,0,.6);
}

.sky-facts{
  display:flex;
  flex-wrap:wrap;
  justify-content:flex-end;
  gap:4px 16px;
  font-family:var(--font-mono);
  font-size:11px;
  color:var(--ink-muted);
}

.sky-facts li{position:relative;padding-left:14px;white-space:nowrap;}

.sky-facts li::before{
  content:"";
  position:absolute;
  left:0;top:50%;
  width:3px;height:3px;
  border-radius:50%;
  background:var(--ink-faint);
  transform:translateY(-50%);
}

.sky-badge{
  position:absolute;
  right:-16px;
  bottom:66px;
  width:66px;height:66px;
  border-radius:50%;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:1px;
  background:var(--bg-panel);
  border:1px solid var(--border);
  box-shadow:var(--shadow-float);
}

.sky-badge svg{width:15px;height:15px;color:var(--accent);}
.sky-badge span{font-size:10px;letter-spacing:.04em;color:var(--text-muted);}

/* ==========================================================================
   3. Tabs
   ========================================================================== */

.tabs{
  display:flex;
  flex-wrap:wrap;
  gap:4px;
  padding:5px;
  width:max-content;
  max-width:100%;
  background:var(--bg-panel-2);
  border:1px solid var(--border);
  border-radius:var(--r-pill);
}

.tabs[role="tablist"]{align-items:center;}

.tab{
  appearance:none;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:34px;
  padding:0 16px;
  border:0;
  border-radius:var(--r-pill);
  background:transparent;
  font-family:var(--font-body);
  font-size:13.5px;
  font-weight:600;
  color:var(--text-muted);
  white-space:nowrap;
  cursor:pointer;
  transition:background-color var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease);
}

.tab:hover{color:var(--text);}

.tab[aria-selected="true"]{
  background:var(--bg-panel);
  color:var(--text);
  box-shadow:var(--shadow-xs);
}

.tabpanel{padding-top:var(--sp-5);}
.tabpanel[hidden]{display:none;}

.tabpanel-note{
  margin-top:var(--sp-3);
  font-family:var(--font-mono);
  font-size:11.5px;
  color:var(--text-soft);
}

/* ==========================================================================
   4. Toc (sticky chapter bar)
   ========================================================================== */

.toc-tabs{
  position:sticky;
  top:calc(var(--header-h) + 8px);
  z-index:20;
  display:flex;
  gap:6px;
  max-width:100%;
  overflow-x:auto;
  -webkit-overflow-scrolling:touch;
  padding:8px;
  background:var(--bg-panel);
  border:1px solid var(--border);
  border-radius:var(--r-pill);
  box-shadow:var(--shadow-card);
}

.toc-tabs a{
  flex:none;
  display:inline-flex;
  align-items:center;
  min-height:32px;
  padding:0 13px;
  border-radius:var(--r-pill);
  font-size:13px;
  color:var(--text-muted);
  text-decoration:none;
  white-space:nowrap;
  transition:background-color var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease);
}

.toc-tabs a:hover{background:var(--bg-panel-2);color:var(--text);}

.toc-tabs a.is-current{
  background:var(--text);
  color:var(--white);
  font-weight:600;
}

body:has(.toc-tabs) section[id],
body:has(.toc-tabs) h2[id],
body:has(.toc-tabs) h3[id]{
  scroll-margin-top:calc(var(--header-h) + 76px);
}

/* ==========================================================================
   5. FAQ
   ========================================================================== */

.faq{display:grid;gap:10px;}

.faq-item{
  background:var(--bg-panel);
  border:1px solid var(--border);
  border-radius:var(--r-md);
  box-shadow:var(--shadow-xs);
  overflow:hidden;
  transition:border-color var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease);
}

.faq-item:hover{border-color:var(--border-strong);}

.faq-item summary{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  min-height:52px;
  padding:14px 18px;
  font-size:15px;
  font-weight:600;
  color:var(--text);
  cursor:pointer;
  list-style:none;
}

.faq-item summary::-webkit-details-marker{display:none;}

.faq-item summary::after{
  content:"+";
  flex:none;
  width:22px;height:22px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border-radius:50%;
  border:1px solid var(--border);
  background:var(--bg-panel-2);
  font-family:var(--font-mono);
  font-size:13px;
  line-height:1;
  color:var(--text-muted);
}

.faq-item[open] summary::after{
  content:"−";
  background:var(--accent-soft);
  border-color:var(--accent-line);
  color:var(--accent-dark);
}

.faq-a{
  padding:0 18px 18px;
  font-size:14px;
  line-height:1.7;
  color:var(--text-muted);
}

.faq-a p + p{margin-top:10px;}
.faq-a strong{color:var(--text);}

/* ==========================================================================
   6. Pricing cards
   ========================================================================== */

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

.plan-card{
  position:relative;
  display:flex;
  flex-direction:column;
  gap:14px;
  min-width:0;
  padding:26px 22px 22px;
  background:var(--bg-panel);
  border:1px solid var(--border);
  border-radius:var(--r-lg);
  box-shadow:var(--shadow-card);
  transition:transform var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease);
}

.plan-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-card-hover);}

.plan-card.is-current{
  border-color:var(--accent-line);
  box-shadow:var(--shadow-card-hover);
}

.plan-card.is-current::before{
  content:"";
  position:absolute;
  left:0;right:0;top:0;
  height:2px;
  border-radius:var(--r-lg) var(--r-lg) 0 0;
  background:linear-gradient(90deg,var(--accent),var(--accent-soft-2));
}

.plan-flag{
  position:absolute;
  top:-11px;
  right:18px;
  display:inline-flex;
  align-items:center;
  gap:5px;
  height:22px;
  padding:0 10px;
  border-radius:var(--r-pill);
  background:var(--accent);
  color:var(--white);
  font-family:var(--font-mono);
  font-size:10.5px;
  font-weight:600;
  letter-spacing:.04em;
  white-space:nowrap;
  box-shadow:var(--shadow-sm);
}

.plan-name{
  margin:0;
  font-family:var(--font-mono);
  font-size:11.5px;
  letter-spacing:.1em;
  color:var(--text-soft);
}

.plan-price{
  display:flex;
  align-items:baseline;
  gap:6px;
  font-family:var(--font-mono);
  font-size:34px;
  font-weight:700;
  letter-spacing:-.03em;
  line-height:1;
  color:var(--text);
}

.plan-price .unit{
  font-family:var(--font-body);
  font-size:12.5px;
  font-weight:500;
  letter-spacing:0;
  color:var(--text-muted);
}

.plan-traffic{
  font-size:13.5px;
  color:var(--text-muted);
}

.plan-specs{
  display:grid;
  gap:0;
  margin:0;
  padding:0;
  list-style:none;
  font-family:var(--font-mono);
  font-size:12px;
  color:var(--text-muted);
}

.plan-specs li{
  display:flex;
  align-items:baseline;
  justify-content:space-between;
  gap:10px;
  padding-block:7px;
  border-bottom:1px dashed var(--border);
}

.plan-specs li:last-child{border-bottom:0;}
.plan-specs b{color:var(--text);font-weight:600;white-space:nowrap;}

.plan-cta{margin-top:auto;padding-top:4px;}
.plan-cta .btn{width:100%;}

.plan-note{
  font-family:var(--font-mono);
  font-size:11px;
  color:var(--text-soft);
  text-align:center;
}

/* ==========================================================================
   7. Tables (route list / comparison / article data tables)
   ========================================================================== */

.table-scroll{
  max-width:100%;
  overflow-x:auto;
  -webkit-overflow-scrolling:touch;
  border:1px solid var(--border);
  border-radius:var(--r-lg);
  background:var(--bg-panel);
  box-shadow:var(--shadow-xs);
}

.table-scroll table{margin:0;}

.route-table{
  width:100%;
  min-width:640px;
  border-collapse:collapse;
  font-size:13.5px;
  color:var(--text);
}

.route-table th,
.route-table td{
  text-align:left;
  padding:12px 16px;
  border-bottom:1px solid var(--border);
  word-break:keep-all;
}

.route-table th{
  font-family:var(--font-mono);
  font-size:11px;
  font-weight:600;
  letter-spacing:.08em;
  color:var(--text-muted);
  background:var(--bg-panel-2);
  white-space:nowrap;
}

.route-table tbody tr:last-child td{border-bottom:0;}
.route-table tbody tr:hover td{background:var(--bg-panel-2);}

.route-table .row-group td{
  background:var(--bg-panel-2);
  font-family:var(--font-mono);
  font-size:11px;
  letter-spacing:.08em;
  color:var(--text-muted);
  white-space:nowrap;
}

.route-country{
  display:inline-flex;
  align-items:center;
  gap:8px;
  white-space:nowrap;
}

.route-country .flag{width:16px;height:16px;flex:none;}

.route-type{
  display:inline-flex;
  align-items:center;
  gap:6px;
  font-family:var(--font-mono);
  font-size:11.5px;
  color:var(--text-muted);
  white-space:nowrap;
}

.route-type i{
  width:5px;height:5px;border-radius:50%;
  background:var(--accent);
  flex:none;
}

.data-table{
  width:100%;
  min-width:520px;
  border-collapse:collapse;
  font-size:13.5px;
  background:var(--bg-panel);
}

.data-table th,
.data-table td{
  text-align:left;
  padding:11px 14px;
  border:1px solid var(--border);
  word-break:keep-all;
}

.data-table th{
  background:var(--bg-panel-2);
  font-weight:600;
  color:var(--text-muted);
  white-space:nowrap;
}

.prose > .data-table{
  display:block;
  overflow-x:auto;
  -webkit-overflow-scrolling:touch;
  max-width:100%;
  min-width:0;
}

/* ==========================================================================
   8. Platform cards
   ========================================================================== */

.platform-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(160px,1fr));
  gap:12px;
}

.platform-card{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:10px;
  min-width:0;
  padding:18px;
  background:var(--bg-panel);
  border:1px solid var(--border);
  border-radius:var(--r-md);
  box-shadow:var(--shadow-xs);
  transition:transform var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease);
}

.platform-card:hover{
  transform:translateY(-2px);
  border-color:var(--border-strong);
  box-shadow:var(--shadow-card);
}

.platform-card .pi{width:22px;height:22px;color:var(--text);}

.platform-name{
  font-size:14px;
  font-weight:600;
  color:var(--text);
}

.platform-note{
  font-size:12px;
  color:var(--text-muted);
  line-height:1.5;
}

.platform-card .btn{margin-top:auto;width:100%;}

/* ==========================================================================
   9. Post cards
   ========================================================================== */

.post-list{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(280px,1fr));
  gap:18px;
}

.post-list > *{min-width:0;}

.post-card{
  display:flex;
  flex-direction:column;
  gap:10px;
  min-width:0;
  padding:22px;
  background:var(--bg-panel);
  border:1px solid var(--border);
  border-radius:var(--r-lg);
  box-shadow:var(--shadow-xs);
  text-decoration:none;
  color:inherit;
  transition:transform var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease);
}

.post-card:hover{
  transform:translateY(-2px);
  border-color:var(--border-strong);
  box-shadow:var(--shadow-card);
}

.post-card h3{
  font-size:17px;
  line-height:1.38;
  letter-spacing:-.01em;
}

.post-meta{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:10px;
  font-family:var(--font-mono);
  font-size:11.5px;
  color:var(--text-soft);
}

.post-meta .sep{
  width:1px;height:10px;
  background:var(--border-strong);
  flex:none;
}

.post-card .post-summary{
  font-size:13.5px;
  line-height:1.65;
  color:var(--text-muted);
}

.post-card .post-more{
  margin-top:auto;
  padding-top:6px;
  font-family:var(--font-mono);
  font-size:11.5px;
  color:var(--accent-dark);
}

/* ==========================================================================
   10. Callout
   ========================================================================== */

.callout{
  position:relative;
  margin-block:var(--sp-5);
  padding:16px 20px 16px 22px;
  background:var(--accent-soft);
  border:1px solid var(--accent-line);
  border-left:3px solid var(--accent);
  border-radius:var(--r-md);
  font-size:14.5px;
  line-height:1.7;
  color:var(--text);
}

.callout p + p{margin-top:10px;}
.callout strong{color:var(--accent-dark);}
.callout .callout-title{
  display:block;
  margin-bottom:6px;
  font-family:var(--font-mono);
  font-size:11.5px;
  letter-spacing:.08em;
  color:var(--accent-dark);
}

/* ==========================================================================
   11. Promo block (end of article)
   ========================================================================== */

.promo-block{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:space-between;
  gap:18px;
  margin-block:var(--sp-6) 0;
  padding:24px 26px;
  border-radius:var(--r-lg);
  color:var(--ink-text);
  background:linear-gradient(180deg,var(--ink-2) 0%,var(--ink) 100%);
  box-shadow:inset 0 1px 0 var(--ink-line-hi),var(--shadow-card);
}

.promo-block .promo-brand{
  font-family:var(--font-display);
  font-size:18px;
  font-weight:800;
  letter-spacing:-.02em;
  color:var(--white);
}

.promo-block .promo-text{
  margin-top:4px;
  font-size:13.5px;
  line-height:1.6;
  color:var(--ink-muted);
}

.promo-block .btn{
  flex-shrink:0;
  white-space:nowrap;
}

.promo-block .btn-primary{
  background:var(--white);
  color:var(--ink);
  box-shadow:none;
}

.promo-block .btn-primary:hover{background:var(--bg-panel-2);color:var(--ink);}

/* ==========================================================================
   12. Feature flow (asymmetric info stream) + fact ledger
   ========================================================================== */

.feature-flow{
  display:grid;
  grid-template-columns:minmax(0,2fr) minmax(0,1fr);
  gap:16px;
}

.feature-flow > *{min-width:0;}

.feature-hero{
  position:relative;
  display:flex;
  flex-direction:column;
  justify-content:flex-end;
  gap:12px;
  min-height:340px;
  padding:28px;
  overflow:hidden;
  border-radius:var(--r-xl);
  color:var(--ink-text);
  background:linear-gradient(180deg,var(--ink-2) 0%,var(--ink) 62%,var(--ink-3) 100%);
  box-shadow:inset 0 1px 0 var(--ink-line-hi),var(--shadow-sky);
}

.feature-hero::after{
  content:"";
  position:absolute;
  left:8%;top:-40%;
  width:70%;height:120%;
  pointer-events:none;
  background:radial-gradient(closest-side,var(--glow-sun),var(--glow-sun-2) 48%,var(--glow-sun-0) 74%);
}

.feature-hero > *{position:relative;z-index:1;}

.feature-hero .feature-title{
  font-family:var(--font-display);
  font-size:clamp(24px,2.4vw,32px);
  font-weight:800;
  line-height:1.16;
  letter-spacing:-.02em;
  color:var(--white);
}

.feature-hero .feature-text{
  font-size:14px;
  line-height:1.7;
  color:var(--ink-muted);
  max-width:52ch;
}

.feature-side{display:grid;gap:16px;grid-auto-rows:1fr;}
.feature-side > *{min-width:0;}

.feature-mini{
  position:relative;
  display:flex;
  flex-direction:column;
  gap:8px;
  padding:20px;
  background:var(--bg-panel);
  border:1px solid var(--border);
  border-radius:var(--r-lg);
  box-shadow:var(--shadow-xs);
  transition:transform var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease);
}

.feature-mini::before{
  content:"";
  position:absolute;
  left:0;right:0;top:0;
  height:2px;
  border-radius:var(--r-lg) var(--r-lg) 0 0;
  background:var(--border);
  transition:background-color var(--dur-fast) var(--ease);
}

.feature-mini:hover{transform:translateY(-2px);box-shadow:var(--shadow-card);}
.feature-mini:hover::before{background:var(--accent);}

.feature-mini h3{font-size:15.5px;}
.feature-mini p{font-size:13px;line-height:1.65;color:var(--text-muted);}

.fact-ledger{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(210px,1fr));
  gap:0 28px;
  margin:var(--sp-5) 0 0;
  padding:0;
  border-top:1px solid var(--border);
}

.fact-ledger > div{
  display:flex;
  align-items:baseline;
  justify-content:space-between;
  gap:12px;
  padding:13px 0;
  border-bottom:1px solid var(--border);
  font-family:var(--font-mono);
  font-size:12.5px;
}

.fact-ledger dt{color:var(--text-soft);letter-spacing:.04em;white-space:nowrap;}
.fact-ledger dd{margin:0;color:var(--text);font-weight:600;text-align:right;}

/* ==========================================================================
   13. Prose (long-form reading column)
   ========================================================================== */

.prose{
  max-width:var(--measure);
  font-size:15.5px;
  line-height:1.78;
  color:var(--text-muted);
}

.prose > *{min-width:0;}
.prose h2{margin-top:var(--sp-7);margin-bottom:var(--sp-3);color:var(--text);}
.prose h3{margin-top:var(--sp-5);margin-bottom:var(--sp-2);color:var(--text);}
.prose p{margin-block:0 var(--sp-4);}
.prose ul,
.prose ol{margin-block:0 var(--sp-4);padding-left:20px;list-style:disc;}
.prose ol{list-style:decimal;}
.prose li + li{margin-top:6px;}
.prose strong{color:var(--text);}
.prose a{color:var(--accent-dark);text-underline-offset:2px;}
.prose blockquote{
  margin-block:var(--sp-4);
  padding-left:16px;
  border-left:3px solid var(--border-strong);
  color:var(--text-muted);
}
.prose .table-scroll{margin-block:var(--sp-5);}

/* ==========================================================================
   14. Preview-only helpers (design-preview.html)
   ========================================================================== */

.demo-block{
  padding-block:clamp(36px,4.5vw,64px);
  border-top:1px solid var(--border);
}

.demo-head{
  display:flex;
  flex-direction:column;
  gap:8px;
  margin-bottom:var(--sp-5);
}

.demo-head h2{font-size:clamp(22px,2.4vw,28px);}
.demo-head p{font-size:13.5px;color:var(--text-muted);}

.demo-row{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:12px;
}

.demo-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(240px,1fr));
  gap:16px;
}

.demo-grid > *{min-width:0;}

.swatches{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(150px,1fr));
  gap:12px;
}

.swatch{
  display:flex;
  flex-direction:column;
  gap:8px;
  padding:12px;
  background:var(--bg-panel);
  border:1px solid var(--border);
  border-radius:var(--r-md);
}

.swatch-chip{
  height:44px;
  border-radius:var(--r-sm);
  border:1px solid var(--border);
}

.swatch-name{
  font-family:var(--font-mono);
  font-size:11.5px;
  color:var(--text);
  overflow-wrap:anywhere;
}

.swatch-val{
  font-family:var(--font-mono);
  font-size:11px;
  color:var(--text-soft);
  overflow-wrap:anywhere;
}

.sw-bg{background:var(--bg);}
.sw-bg-panel{background:var(--bg-panel);}
.sw-bg-panel-2{background:var(--bg-panel-2);}
.sw-border{background:var(--border);}
.sw-border-strong{background:var(--border-strong);}
.sw-text{background:var(--text);}
.sw-text-muted{background:var(--text-muted);}
.sw-text-soft{background:var(--text-soft);}
.sw-accent{background:var(--accent);}
.sw-accent-dark{background:var(--accent-dark);}
.sw-ink{background:var(--ink);}
.sw-ink-2{background:var(--ink-2);}
.sw-ink-3{background:var(--ink-3);}
.sw-space-blue{background:var(--space-blue);}
.sw-success{background:var(--success);}
.sw-warn{background:var(--warn);}
.sw-error{background:var(--error);}
.sw-flag-red{background:var(--flag-red);}
.sw-flag-blue{background:var(--flag-blue);}

.type-row{
  display:grid;
  gap:6px;
  padding-block:14px;
  border-bottom:1px solid var(--border);
}

.type-row:last-child{border-bottom:0;}

.type-label{
  font-family:var(--font-mono);
  font-size:11px;
  letter-spacing:.06em;
  color:var(--text-soft);
}

.type-sample{color:var(--text);}

/* ==========================================================================
   15. Hero responsive
   ========================================================================== */

@media (max-width:1180px){
  .hero-title{font-size:clamp(32px,5.2vw,56px);}
  .sky-count .num{font-size:52px;}
  .sky-card{height:334px;}
}

@media (max-width:980px){
  .hero-sub{font-size:16px;}
  .sky-foot{flex-direction:column;align-items:flex-start;gap:10px;}
  .sky-facts{justify-content:flex-start;}
  .sky-badge{bottom:88px;right:-12px;width:60px;height:60px;}
  .plan-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
  .feature-flow{grid-template-columns:minmax(0,1fr);}
  .feature-hero{min-height:280px;}
}

@media (max-width:760px){
  .hero-glow{width:340px;height:340px;top:-140px;right:-100px<|place_holder_mm_span_0442|>;}
  .hero-meta{gap:10px 18px;}
  .meta-div{display:none;}
  .meta-group{flex-wrap:wrap;justify-content:center;gap:8px 12px;max-width:100%;}
  .meta-list{flex-wrap:wrap;justify-content:center;gap:10px 14px;min-width:0;}
}

@media (max-width:640px){
  .hero{padding:16px 0 12px;}
  .hero-title{font-size:34px;letter-spacing:-.02em;}
  .hero-sub{font-size:15px;}
  .route-search{height:54px;padding:0 8px 0 16px;}
  .rs-label{font-size:12.5px;}
  .rs-sep{margin:0 10px;}
  .rs-go{width:38px;height:38px;margin-left:6px;}
  .rs-status{right:12px;font-size:10px;}

  .sky-card{height:auto;min-height:320px;padding:20px 18px 18px;}
  .sky-count .num{font-size:38px;}
  .sky-platforms{font-size:9.5px;}
  .sky-nodes{
    position:static;
    display:flex;
    flex-wrap:wrap;
    justify-content:center;
    gap:12px 18px;
    margin:18px 0 16px;
  }
  .sky-node{position:static;transform:none;}
  .sky-badge{display:none;}
  .hero-trust{font-size:11px;}

  .plan-grid{grid-template-columns:minmax(0,1fr);}
  .post-list{grid-template-columns:minmax(0,1fr);}
  .platform-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
  .feature-hero{padding:22px;min-height:240px;}
  .feature-mini{padding:16px;}
  .promo-block{padding:20px;}
  .promo-block .btn{width:100%;}
  .toc-tabs{top:calc(var(--header-h) + 4px);border-radius:var(--r-md);}
  .fact-ledger{grid-template-columns:minmax(0,1fr);gap:0;}
}