:root{ --side:clamp(14rem,12vw,19rem); }
html{ font-size:clamp(16px,0.62vw + 10px,21px); }
body{ margin:0; }
.shell{ display:grid; grid-template-columns:var(--side) minmax(0,1fr); min-height:100dvh; }
.side{ border-right:1px solid var(--ef-rule); padding:1.25rem 1rem; position:sticky; top:0; height:100dvh; display:flex; flex-direction:column; gap:.35rem; background:var(--ef-paper); }
.side__brand{ font-weight:800; font-size:1.05rem; letter-spacing:.02em; margin:.2rem 0 1rem; display:flex; gap:.5rem; align-items:center; }
.side__seal{ width:1.6rem; height:1.6rem; display:grid; place-items:center; background:var(--ef-ink); color:var(--ef-paper); font-size:.8rem; }
.side a{ display:flex; align-items:baseline; justify-content:space-between; gap:.5rem; padding:.55rem .6rem; text-decoration:none; color:var(--ef-ink); border:1px solid transparent; font-size:.86rem; }
.side a small{ font-size:.55rem; letter-spacing:.14em; text-transform:uppercase; color:var(--ef-ink-2); }
.side a:hover{ border-color:var(--ef-rule); }
.side a[aria-current="page"]{ background:var(--ef-signal); border-color:var(--ef-ink); }
.side a[aria-current="page"] small{ color:var(--ef-ink); }
.side__foot{ margin-top:auto; font-size:.62rem; color:var(--ef-ink-2); line-height:1.6; }
.main{ padding:2.6rem 3rem 5rem; max-width:76rem; }
.head{ border-bottom:1px solid var(--ef-rule); padding-bottom:1.25rem; margin-bottom:1.5rem; }
.head h1{ margin:.25rem 0 .4rem; font-size:clamp(1.8rem,3.4vw,2.8rem); font-weight:800; }
.head p{ margin:0; color:var(--ef-ink-2); max-width:36rem; font-size:.88rem; }
table{ width:100%; border-collapse:collapse; font-size:.84rem; }
th{ text-align:left; font-size:.6rem; letter-spacing:.14em; text-transform:uppercase; color:var(--ef-ink-2); border-bottom:1px solid var(--ef-ink); padding:.45rem .5rem; }
td{ border-bottom:1px solid var(--ef-rule); padding:.55rem .5rem; }
code{ font-family:ui-monospace,monospace; background:var(--ef-chip); padding:.1rem .35rem; }
.empty{ border-top:1px solid var(--ef-rule); padding:1.2rem 0; color:var(--ef-ink-2); font-size:.85rem; }
.card{ border:1px solid var(--ef-rule); background:var(--ef-panel); padding:.9rem 1rem; display:grid; gap:.35rem; }
.cards{ display:grid; gap:.75rem; }
@media (max-width:860px){
  .shell{ grid-template-columns:1fr; }
  .side{ position:static; height:auto; border-right:0; border-bottom:1px solid var(--ef-rule); flex-direction:row; flex-wrap:wrap; align-items:center; }
  .side__brand{ margin:0 1rem 0 0; }
  .side a{ padding:.4rem .5rem; }
  .side__foot{ display:none; }
  .main{ padding:1.25rem 1rem 3rem; }
}
.card--link{ text-decoration:none; color:inherit; }
.card--link:hover{ border-color:var(--ef-ink); }
/* 密码房卡片（地图底图 + 大号密码） */
.pw-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(15rem,1fr)); gap:.9rem; }
.pw-card{
  position:relative; aspect-ratio:2.7/1; overflow:hidden;
  border:1px solid var(--ef-rule); background:var(--ef-chip) center/cover no-repeat;
}
.pw-card::after{
  content:''; position:absolute; inset:0; background:rgba(22,22,22,.42); pointer-events:none;
}
.pw-card__map{
  position:absolute; right:.6rem; top:.5rem; z-index:1;
  font-family:var(--ef-font-ui); font-size:clamp(.78rem,2.4vw,1rem); font-weight:700;
  letter-spacing:.08em; color:#fff;
}
.pw-card__code{
  position:absolute; right:.55rem; bottom:.35rem; z-index:1;
  font-family:var(--ef-font-ui); font-weight:800; line-height:1;
  font-size:clamp(1.6rem,4.8vw,2.4rem); letter-spacing:.04em; color:var(--ef-signal);
  font-variant-numeric:tabular-nums; text-shadow:0 2px 6px rgba(0,0,0,.5);
}
/* 卡战备：档位按钮 + 三列 */
.kz-tiers{ display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:.5rem; margin:0 0 1.2rem; }
.kz-tier{
  display:grid; gap:.15rem; justify-items:center; padding:.7rem .4rem;
  border:1px solid var(--ef-rule); background:var(--ef-panel); font:inherit; color:var(--ef-ink);
  cursor:pointer; clip-path:polygon(0 0,100% 0,100% calc(100% - 8px),calc(100% - 8px) 100%,0 100%);
}
.kz-tier b{ font-family:var(--ef-font-ui); font-size:1.15rem; font-weight:800; letter-spacing:.04em; }
.kz-tier span{ font-size:.58rem; color:var(--ef-ink-2); }
.kz-tier[aria-pressed="true"]{ background:var(--ef-signal); border-color:var(--ef-ink); }
.kz-cols{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:.8rem; }
@media (max-width:900px){ .kz-tiers{ grid-template-columns:repeat(5,minmax(0,1fr)); } .kz-cols{ grid-template-columns:1fr; } }
.kz-col{ border:1px solid var(--ef-rule); background:var(--ef-panel); }
.kz-col__head{ display:flex; flex-wrap:wrap; align-items:baseline; gap:.5rem; padding:.7rem .8rem; border-bottom:1px solid var(--ef-ink); }
.kz-col__head b{ font-size:.95rem; }
.kz-col__stat{ font-size:.6rem; color:var(--ef-ink-2); letter-spacing:.04em; }
.kz-col__stat i{ font-style:normal; font-family:var(--ef-font-ui); font-weight:700; color:var(--ef-ink); margin-left:.15rem; }
.kz-row{
  display:grid; grid-template-columns:4rem minmax(0,1fr) auto; gap:.8rem; align-items:center;
  padding:.6rem .8rem; border:1px solid var(--ef-rule); background:var(--ef-panel);
  margin:0 0 .35rem;
}
.kz-row--sub{ margin-left:1.3rem; background:var(--ef-chip); border-left:2px solid var(--ef-line); }
.kz-col__body{ padding:.55rem .7rem .3rem; }
.kz-row:last-child{ border-bottom:0; }
.kz-thumb{ width:3.4rem; height:3.4rem; object-fit:contain; }
.kz-info{ display:grid; gap:.15rem; min-width:0; }
.kz-name{ font-size:.84rem; font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.kz-price{ font-family:var(--ef-font-ui); font-variant-numeric:tabular-nums; font-size:.7rem; color:var(--ef-ink-2); }
.kz-delta{ font-family:var(--ef-font-ui); font-variant-numeric:tabular-nums; font-size:.82rem; font-weight:700; text-align:right; white-space:nowrap; }
.kz-delta.is-up{ color:#c62828; }
.kz-delta.is-down{ color:#1b7f4b; }
.kz-empty{ padding:1rem .8rem; color:var(--ef-ink-2); font-size:.78rem; }
/* 大屏自适应 */
@media (min-width:1200px){
  .side{ padding:1.6rem 1.2rem; }
  .side a{ font-size:.95rem; padding:.6rem .7rem; }
  .pw-grid{ grid-template-columns:repeat(auto-fill,minmax(16rem,1fr)); }
  th{ font-size:.7rem; }
  td{ font-size:.92rem; padding:.65rem .6rem; }
  .kz-row{ font-size:.86rem; padding:.6rem .9rem; }
  .kz-thumb{ width:3.8rem; height:3.8rem; }
}
.kz-row--gear{ margin-left:0; background:var(--ef-panel); border-left:1px solid var(--ef-rule); }
.kz-row--main .kz-name{ font-weight:700; }
/* 首页跳转卡片 */
.entry-links{ display:grid; grid-template-columns:repeat(auto-fit,minmax(16rem,1fr)); gap:.8rem; margin-top:1.8rem; }
.entry-card{ position:relative; display:grid; gap:.3rem; padding:1.1rem 1.2rem; border:1px solid var(--ef-ink); }
.entry-card b{ font-size:1.15rem; }
.entry-card .ef-eyebrow{ color:var(--ef-ink-2); }
.entry-card__go{ position:absolute; right:1rem; top:50%; transform:translateY(-50%); font-size:1.2rem; }
.entry-card:hover{ background:var(--ef-signal); }
.entry-card:hover .ef-eyebrow{ color:var(--ef-ink); }
