/* ============================================================
   VPNWS — components.css
   跨页面组件:窗口 chrome / 胶囊徽章 / tab / 目录条 / FAQ /
   套餐卡 / 线路表 / 平台卡 / 文章卡 / callout / 推广块 /
   悬浮 CTA / design-preview 示例排版类
   ============================================================ */

/* ------------------------------------------------------------
   1. 窗口 chrome(首屏线路目录窗口 + 卖点区详情面板共用)
   ------------------------------------------------------------ */
.window{
  position:relative;
  background:var(--bg-panel);
  border:1px solid var(--border);
  border-radius:var(--r-xl);
  box-shadow:var(--shadow-panel),inset 0 0 0 1px rgba(255,255,255,.7);
  display:grid;
  grid-template-columns:236px minmax(0,1fr);
  overflow:hidden;
}
.window--wide{grid-template-columns:264px minmax(0,1fr)}
.side{
  background:var(--bg-side);
  border-right:1px solid var(--border);
  padding:18px 12px 14px;
  display:flex;flex-direction:column;gap:2px;
  min-width:0;
}
.acct{display:flex;align-items:center;gap:9px;padding:2px 8px 10px;font-weight:700;font-size:14px;color:var(--text)}
.acct i{
  width:22px;height:22px;border-radius:50%;flex-shrink:0;
  background:linear-gradient(140deg,var(--accent),var(--accent-dark));
  color:var(--on-accent);font-size:9px;font-weight:700;font-style:normal;
  display:grid;place-items:center;letter-spacing:.03em;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.3);
}
.side-item{
  display:flex;align-items:center;gap:9px;
  min-height:30px;padding:0 8px;border-radius:var(--r-sm);
  font-size:13.5px;color:var(--text);transition:background .16s;
}
.side-item:hover{background:rgba(255,255,255,.7)}
.side-item svg{width:15px;height:15px;color:var(--text-muted);flex-shrink:0}
.side-item.on{background:var(--bg-panel-2);font-weight:600;box-shadow:inset 0 0 0 1px rgba(184,81,42,.10)}
.side-item .tag{margin-left:auto;font-family:var(--font-mono);font-size:10.5px;color:var(--accent-dark);letter-spacing:.02em;flex-shrink:0}
.side-group{font-size:12px;color:var(--text-soft);padding:12px 8px 6px;letter-spacing:.05em;font-weight:500}

.flag{
  width:20px;height:14px;border-radius:3px;overflow:hidden;
  display:inline-flex;flex-shrink:0;
  box-shadow:inset 0 0 0 1px rgba(38,35,31,.10);
}
.flag svg{width:20px;height:14px}
.f-red{fill:var(--flag-red)}
.f-blue{fill:var(--flag-blue)}
.f-navy{fill:var(--flag-navy)}
.f-white{fill:var(--flag-white)}

.doc{display:flex;flex-direction:column;min-width:0}
.crumbs{
  min-height:44px;display:flex;align-items:center;gap:8px;
  padding:0 24px;border-bottom:1px solid var(--border);
  font-size:13.5px;color:var(--text-muted);
}
.crumbs .crumb{display:inline-flex;align-items:center;gap:6px}
.crumbs .sep{color:var(--border-strong)}
.crumbs .cur{color:var(--text);font-weight:600}
.crumbs svg{width:14px;height:14px;flex-shrink:0}
.crumb-tools{margin-left:auto;display:flex;align-items:center;gap:16px;font-size:13px;color:var(--text-muted)}
.crumb-tools svg{width:15px;height:15px}
.doc-body{padding:20px 28px 22px;min-width:0}
.doc-title{font-family:var(--font-display);font-size:28px;font-weight:800;letter-spacing:-.02em;line-height:1.2;margin-bottom:6px;color:var(--text)}
.doc-lead{font-size:14.5px;color:var(--text-muted);margin-bottom:16px;line-height:1.5}
.spec{display:grid;grid-template-columns:1fr 1fr;gap:10px;max-width:490px}
.spec-card{
  border:1px solid var(--border);border-radius:14px;padding:10px 12px;
  background:var(--bg-panel);box-shadow:var(--hl-edge);min-width:0;
  transition:transform .16s,box-shadow .16s;
}
.spec-card:nth-child(even){background:var(--bg-side)}
.spec-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-soft)}
.spec-card h4{
  font-size:12px;color:var(--text-soft);font-weight:600;letter-spacing:.05em;
  margin-bottom:6px;display:flex;gap:6px;align-items:center;line-height:1.4;
}
.spec-card h4 svg{width:13px;height:13px;flex-shrink:0}
.spec-mono{font-family:var(--font-mono);font-size:13px;font-weight:600;line-height:1.5;color:var(--text)}
.spec-text{font-size:13.5px;font-weight:600;line-height:1.5;color:var(--text)}
.spec-text .dot{color:var(--text-soft);padding:0 4px}

/* 详情面板(卖点区第二段) */
.detail-panel{display:grid;grid-template-columns:264px minmax(0,1fr);min-height:340px}
.detail-panel .side{justify-content:flex-start}
.detail-body{padding:28px 32px 30px;min-width:0}
.detail-body h3{font-size:24px;margin-bottom:12px}
.detail-body p{font-size:16px;color:var(--text-muted);line-height:1.75;margin-bottom:16px;max-width:60ch}
.detail-facts{display:flex;flex-wrap:wrap;gap:8px}

/* ------------------------------------------------------------
   2. 胶囊徽章体系
   ------------------------------------------------------------ */
.chip{
  display:inline-flex;align-items:center;gap:6px;
  min-height:26px;padding:0 11px 0 9px;
  border-radius:var(--r-pill);
  font-size:12.5px;font-weight:600;line-height:1;
  max-width:100%;overflow:hidden;
}
.chip svg{width:13px;height:13px;flex-shrink:0}
.chip-verify{background:var(--success-soft);color:var(--success)}
.chip-catalog{background:var(--catalog-soft);color:var(--catalog)}
.chip-neutral{background:var(--bg-panel-2);color:var(--text-muted)}
.chip-accent{background:var(--accent-soft);color:var(--accent-dark)}

.pills{display:flex;gap:6px;flex-wrap:wrap}
.pill{
  font-family:var(--font-mono);font-size:11.5px;line-height:1;
  padding:5px 8px;border:1px solid var(--border-strong);border-radius:var(--r-pill);
  color:var(--text);background:var(--bg-panel);white-space:nowrap;
}
.badge{
  display:inline-flex;align-items:center;gap:6px;
  min-height:24px;padding:0 10px;border-radius:var(--r-pill);
  font-size:12px;font-weight:700;letter-spacing:.02em;
  max-width:100%;overflow:hidden;
}
.badge--best{background:var(--accent);color:var(--on-accent)}
.badge--soft{background:var(--bg-panel-2);color:var(--accent-dark)}

/* ------------------------------------------------------------
   3. Tab 切换
   ------------------------------------------------------------ */
.tabs{position:relative}
.tablist{
  display:flex;flex-wrap:wrap;gap:6px;
  padding:5px;border:1px solid var(--border);border-radius:var(--r-pill);
  background:var(--bg-panel);box-shadow:var(--hl-edge);
  width:max-content;max-width:100%;
}
.tab{
  display:inline-flex;align-items:center;justify-content:center;gap:7px;
  min-height:36px;padding:0 18px;border-radius:var(--r-pill);
  font-size:14.5px;font-weight:600;color:var(--text-muted);
  background:transparent;border:0;cursor:pointer;white-space:nowrap;
  transition:background .16s,color .16s;
}
.tab:hover{background:var(--bg-panel-2);color:var(--text)}
.tab[aria-selected="true"]{background:var(--accent);color:var(--on-accent);box-shadow:0 10px 20px -12px var(--accent-shadow-strong)}
.tabpanel{padding-top:var(--sp-6)}
.tabpanel[hidden]{display:none}

/* ------------------------------------------------------------
   4. 长页章节目录条
   ------------------------------------------------------------ */
.toc-tabs{
  position:sticky;top:0;z-index:7;
  display:flex;gap:8px;align-items:center;
  min-height:var(--toc-h);
  overflow-x:auto;overflow-y:hidden;
  -webkit-overflow-scrolling:touch;
  scrollbar-width:none;
  background:rgba(251,250,247,.92);
  backdrop-filter:blur(10px);
  border-bottom:1px solid var(--border);
  padding:8px 0;
}
.toc-tabs::-webkit-scrollbar{display:none}
.toc-tabs a{
  display:inline-flex;align-items:center;
  min-height:34px;padding:0 14px;border-radius:var(--r-pill);
  font-size:13.5px;font-weight:500;color:var(--text-muted);
  white-space:nowrap;flex-shrink:0;
  border:1px solid transparent;
  transition:background .16s,color .16s,border-color .16s;
}
.toc-tabs a:hover{background:var(--bg-panel-2);color:var(--text)}
.toc-tabs a.is-active{
  background:var(--bg-panel);border-color:var(--accent);
  color:var(--accent-dark);font-weight:700;
  box-shadow:0 8px 18px -12px var(--accent-shadow-strong);
}
body:has(.toc-tabs) section[id]{scroll-margin-top:var(--anchor-off)}

/* ------------------------------------------------------------
   5. FAQ 折叠项
   ------------------------------------------------------------ */
.faq-list{display:flex;flex-direction:column;gap:10px}
.faq-item{
  background:var(--bg-panel);
  border:1px solid var(--border);
  border-radius:var(--r-lg);
  box-shadow:var(--hl-edge);
  overflow:hidden;
  transition:box-shadow .16s,border-color .16s;
}
.faq-item[open]{border-color:var(--border-strong);box-shadow:var(--shadow-soft)}
.faq-item summary{
  display:flex;align-items:center;gap:12px;
  min-height:56px;padding:14px 20px;
  font-size:16px;font-weight:600;color:var(--text);
  cursor:pointer;list-style:none;
}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary::after{
  content:"";width:8px;height:8px;margin-left:auto;flex-shrink:0;
  border-right:2px solid var(--text-muted);border-bottom:2px solid var(--text-muted);
  transform:rotate(45deg);transition:transform .2s;
}
.faq-item[open] summary::after{transform:rotate(-135deg);border-color:var(--accent)}
.faq-item .faq-body{padding:0 20px 18px;font-size:15.5px;color:var(--text-muted);line-height:1.75}
.faq-item .faq-body p+p{margin-top:10px}

/* ------------------------------------------------------------
   6. 套餐卡
   ------------------------------------------------------------ */
.plan-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-5);align-items:stretch}
.plan-card{
  position:relative;display:flex;flex-direction:column;
  background:var(--bg-panel-2);
  border:1px solid var(--border);
  border-radius:var(--r-xl);
  padding:var(--sp-6) var(--sp-5) var(--sp-5);
  min-width:0;
  box-shadow:var(--hl-edge);
  transition:transform .16s,box-shadow .16s;
}
.plan-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-card)}
.plan-card--current{background:var(--bg-panel);border-color:var(--accent);box-shadow:var(--shadow-card)}
.plan-badge{position:absolute;top:-12px;left:var(--sp-5)}
.plan-name{font-family:var(--font-display);font-size:19px;font-weight:800;letter-spacing:-.015em}
.plan-note{font-size:13.5px;color:var(--text-muted);margin-top:4px}
.plan-price{display:flex;align-items:baseline;gap:6px;margin:var(--sp-4) 0 var(--sp-2)}
.plan-price b{font-family:var(--font-mono);font-size:38px;font-weight:600;letter-spacing:-.03em;line-height:1}
.plan-price span{font-size:14px;color:var(--text-muted)}
.plan-amount{font-family:var(--font-mono);font-size:13px;color:var(--text-muted)}
.plan-list{display:flex;flex-direction:column;gap:8px;margin:var(--sp-5) 0 var(--sp-5)}
.plan-list li{display:flex;align-items:flex-start;gap:9px;font-size:14.5px;color:var(--text);line-height:1.55}
.plan-list li svg{width:15px;height:15px;margin-top:4px;color:var(--accent);flex-shrink:0}
.plan-card .btn{margin-top:auto}
.pack-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-4)}
.pack-card{
  background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--r-lg);
  padding:var(--sp-5);min-width:0;box-shadow:var(--hl-edge);
  transition:transform .16s,box-shadow .16s;
}
.pack-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-soft)}
.pack-card b{font-family:var(--font-mono);font-size:26px;font-weight:600;letter-spacing:-.02em}
.pack-card span{font-size:14px;color:var(--text-muted)}

/* ------------------------------------------------------------
   7. 表格:窄屏必须能横滑,绝不许撑破 body
   ------------------------------------------------------------ */
.table-scroll{
  overflow-x:auto;
  max-width:100%;
  -webkit-overflow-scrolling:touch;
  border:1px solid var(--border);
  border-radius:var(--r-lg);
  background:var(--bg-panel);
  box-shadow:var(--hl-edge);
}
.data-table{width:100%;min-width:640px;border-collapse:collapse;font-size:14.5px}
.data-table th,.data-table td{
  text-align:left;padding:12px 16px;border-bottom:1px solid var(--border);
  word-break:keep-all;
}
.data-table th{
  font-size:12.5px;font-weight:700;letter-spacing:.05em;color:var(--text);
  background:var(--bg-panel-2);white-space:nowrap;position:sticky;top:0;
}
.data-table td{color:var(--text-muted)}
.data-table td:first-child{color:var(--text);font-weight:600}
.data-table tbody tr:hover td{background:var(--bg-side)}
.data-table tbody tr:last-child td{border-bottom:0}
.data-table .num{font-family:var(--font-mono);color:var(--text);letter-spacing:-.01em}
/* 博客正文里可能出现不带容器的裸表格 */
.prose > .data-table{
  display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;
  max-width:100%;min-width:0;
}

/* ------------------------------------------------------------
   8. 平台 / 客户端卡
   ------------------------------------------------------------ */
.client-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:var(--sp-4)}
.client-card{
  display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;
  background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--r-lg);
  padding:var(--sp-5) var(--sp-3);min-width:0;box-shadow:var(--hl-edge);
  transition:transform .16s,box-shadow .16s;
}
.client-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-soft)}
.client-card svg{width:28px;height:28px;color:var(--text)}
.client-card b{font-size:14.5px;font-weight:700}
.client-card small{font-size:12px;color:var(--text-soft)}

/* ------------------------------------------------------------
   9. 博客文章卡
   ------------------------------------------------------------ */
.post-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-5)}
.post-card{
  display:flex;flex-direction:column;
  background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--r-lg);
  padding:var(--sp-5);min-width:0;box-shadow:var(--hl-edge);
  transition:transform .16s,box-shadow .16s;
}
.post-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-card)}
.post-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:var(--sp-3)}
.post-tag{
  display:inline-flex;align-items:center;min-height:24px;padding:0 10px;
  border-radius:var(--r-pill);background:var(--bg-panel-2);color:var(--accent-dark);
  font-size:12px;font-weight:700;max-width:100%;overflow:hidden;white-space:nowrap;
}
.post-date{font-family:var(--font-mono);font-size:12px;color:var(--text-soft)}
.post-card h3{font-size:18px;line-height:1.4;margin-bottom:10px}
.post-card p{font-size:14.5px;color:var(--text-muted);line-height:1.7}
.post-more{
  display:inline-flex;align-items:center;gap:6px;margin-top:var(--sp-4);
  font-size:14px;font-weight:600;color:var(--accent-dark);
}
.post-more svg{width:14px;height:14px;flex-shrink:0}

/* 博客 hero 卡:左侧竖色条 */
.post-hero{
  position:relative;
  background:var(--bg-panel-2);
  border:1px solid var(--border);
  border-radius:var(--r-xl);
  padding:var(--sp-6) var(--sp-6) var(--sp-6) calc(var(--sp-6) + 18px);
  box-shadow:var(--hl-edge);
  overflow:hidden;
}
.post-hero::before{
  content:"";position:absolute;left:18px;top:var(--sp-5);bottom:var(--sp-5);
  width:4px;border-radius:var(--r-pill);
  background:linear-gradient(180deg,var(--accent),var(--accent-dark));
}
.post-hero h1{font-size:clamp(28px,3.6vw,42px);margin-bottom:var(--sp-3)}

/* ------------------------------------------------------------
   10. callout / 引用块
   ------------------------------------------------------------ */
.callout{
  border-left:3px solid var(--accent);
  background:var(--bg-panel-2);
  border-radius:0 var(--r-md) var(--r-md) 0;
  padding:var(--sp-4) var(--sp-5);
  font-size:15.5px;line-height:1.75;color:var(--text);
}
.callout p+p{margin-top:10px}
.callout--verify{border-left-color:var(--success);background:var(--success-soft)}
.callout--catalog{border-left-color:var(--catalog);background:var(--catalog-soft)}
blockquote{
  border-left:3px solid var(--border-strong);
  padding:var(--sp-3) var(--sp-5);
  color:var(--text-muted);font-size:16px;
}

/* ------------------------------------------------------------
   11. 文末推广块(博客文章页用)
   ------------------------------------------------------------ */
.promo-block{
  display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-4) var(--sp-5);
  background:var(--bg-panel-2);
  border:1px solid var(--border);
  border-radius:var(--r-xl);
  padding:var(--sp-5) var(--sp-6);
  box-shadow:var(--hl-edge);
}
.promo-block__brand{
  font-family:var(--font-display);font-size:18px;font-weight:800;letter-spacing:-.015em;
}
.promo-block__text{font-size:14.5px;color:var(--text-muted);max-width:44ch}
.promo-block .btn{margin-left:auto}

/* ------------------------------------------------------------
   12. 右下角常驻悬浮 CTA
   ------------------------------------------------------------ */
.float-cta{
  position:fixed;right:24px;bottom:calc(24px + env(safe-area-inset-bottom,0px));z-index:50;
  display:inline-flex;align-items:center;gap:8px;
  min-height:44px;padding:0 18px;border-radius:var(--r-pill);
  background:var(--bg-panel);border:1.5px solid var(--accent);
  color:var(--accent-dark);font-weight:700;font-size:14px;white-space:nowrap;
  box-shadow:var(--shadow-card),var(--hl-edge);
  transition:transform .16s;
}
.float-cta:hover{transform:translateY(-2px)}
.float-cta svg{width:15px;height:15px;flex-shrink:0}
body:has(.float-cta)::after{
  content:"";display:block;height:calc(88px + env(safe-area-inset-bottom,0px));
}

/* ------------------------------------------------------------
   13. 通用小件
   ------------------------------------------------------------ */
.fact-row{display:flex;flex-wrap:wrap;gap:8px}
.divider{height:1px;background:var(--border);border:0;margin:var(--sp-6) 0}
.link-more{
  display:inline-flex;align-items:center;gap:6px;
  min-height:32px;font-size:14.5px;font-weight:600;color:var(--accent-dark);
}
.link-more svg{width:14px;height:14px;flex-shrink:0}

/* ------------------------------------------------------------
   14. design-preview.html 专用示例排版类
   ------------------------------------------------------------ */
.preview-section{padding-top:var(--sp-9);padding-bottom:var(--sp-9);border-top:1px solid var(--border)}
.preview-head{margin-bottom:var(--sp-6)}
.preview-head h2{font-size:clamp(24px,2.6vw,32px)}
.preview-head p{margin-top:8px;font-size:15.5px;color:var(--text-muted)}
.preview-grid{display:grid;gap:var(--sp-5)}
.preview-grid--2{grid-template-columns:repeat(2,minmax(0,1fr))}
.preview-grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}
.preview-grid--4{grid-template-columns:repeat(4,minmax(0,1fr))}
.preview-panel{
  background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--r-lg);
  padding:var(--sp-5);box-shadow:var(--hl-edge);min-width:0;
}
.preview-label{
  font-family:var(--font-mono);font-size:12px;letter-spacing:.05em;
  color:var(--text-soft);text-transform:uppercase;margin-bottom:var(--sp-3);
}
.preview-swatches{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--sp-4)}
.preview-swatch{min-width:0}
.preview-swatch-chip{
  height:64px;border-radius:var(--r-md);border:1px solid var(--border);
  box-shadow:var(--hl-edge);
}
.preview-swatch-name{font-size:13.5px;font-weight:600;margin-top:8px}
.preview-swatch-val{font-family:var(--font-mono);font-size:11.5px;color:var(--text-soft);overflow-wrap:anywhere}
.preview-typo-row{
  display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--sp-3) var(--sp-5);
  padding:var(--sp-4) 0;border-bottom:1px dashed var(--border);
}
.preview-typo-row:last-child{border-bottom:0}
.preview-typo-label{
  font-family:var(--font-mono);font-size:12px;color:var(--text-soft);
  flex-shrink:0;min-width:88px;
}
.preview-btn-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-4)}
.preview-note{font-size:13.5px;color:var(--text-soft);margin-top:var(--sp-3)}

.sw-bg{background:var(--bg)}
.sw-panel{background:var(--bg-panel)}
.sw-panel2{background:var(--bg-panel-2)}
.sw-side{background:var(--bg-side)}
.sw-border{background:var(--border)}
.sw-border-strong{background:var(--border-strong)}
.sw-accent{background:var(--accent)}
.sw-accent-dark{background:var(--accent-dark)}
.sw-accent-2{background:var(--accent-2)}
.sw-text{background:var(--text)}
.sw-text-muted{background:var(--text-muted)}
.sw-text-soft{background:var(--text-soft)}
.sw-success{background:var(--success)}
.sw-catalog{background:var(--catalog)}
.sw-warn{background:var(--warn)}
.sw-error{background:var(--error)}

/* ------------------------------------------------------------
   15. 组件断点
   ------------------------------------------------------------ */
@media (max-width:1180px){
  .client-grid{grid-template-columns:repeat(3,1fr)}
  .preview-swatches{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media (max-width:960px){
  .plan-grid{grid-template-columns:1fr;gap:var(--sp-4)}
  .post-grid{grid-template-columns:1fr 1fr}
  .pack-grid{grid-template-columns:1fr}
  .preview-grid--3,.preview-grid--4{grid-template-columns:repeat(2,minmax(0,1fr))}
  .detail-panel{grid-template-columns:1fr}
}
@media (max-width:768px){
  .window{grid-template-columns:1fr}
  .window--wide{grid-template-columns:1fr}
  .side{
    flex-direction:row;flex-wrap:wrap;gap:6px;
    border-right:0;border-bottom:1px solid var(--border);
    padding:12px;
  }
  .acct,.side-group,.side-item.tool{display:none}
  .side-item{
    min-height:28px;border:1px solid var(--border);border-radius:var(--r-pill);
    background:var(--bg-panel);padding:0 10px;
  }
  .side-item .tag{margin-left:6px}
  .spec{max-width:none}
  .detail-panel{grid-template-columns:1fr}
  .detail-body{padding:20px}
  .post-hero{padding:var(--sp-5) var(--sp-5) var(--sp-5) calc(var(--sp-5) + 16px)}
  .post-hero::before{left:12px}
  .promo-block .btn{margin-left:0}
  .preview-grid--2{grid-template-columns:1fr}
}
@media (max-width:640px){
  .tablist{width:100%;overflow-x:auto;flex-wrap:nowrap;-webkit-overflow-scrolling:touch}
  .tab{padding:0 14px;font-size:13.5px}
  .spec{grid-template-columns:1fr}
  .doc-body{padding:16px}
  .crumbs{padding:0 14px}
  .crumb-tools{display:none}
  .post-grid{grid-template-columns:1fr}
  .client-grid{grid-template-columns:1fr 1fr}
  .preview-grid--3,.preview-grid--4{grid-template-columns:1fr}
  .preview-swatches{grid-template-columns:repeat(2,minmax(0,1fr))}
  .float-cta{right:16px;bottom:calc(16px + env(safe-area-inset-bottom,0px))}
}