/* 广告位 + 自助购买 */
.ad-slot{display:flex;flex-direction:column;gap:12px;margin:10px 0}
.ad-banner,.ad-banner-img{display:block;width:100%;border-radius:10px;overflow:hidden}
.ad-banner-img{height:auto;object-fit:cover;background:#f1f5f9}
.ad-text{
  display:block;padding:12px 14px;border-radius:10px;background:var(--card,#fff);
  border:1px solid var(--line,rgba(0,0,0,.08));color:var(--text,#0f172a);
  font-size:13px;line-height:1.55;text-decoration:none;word-break:break-word
}
.ad-text:hover{border-color:var(--accent,#2563eb);color:var(--accent,#2563eb)}

/* 推广广告位模块：与侧栏 aside-card 一致 */
.ad-promo{
  background:var(--card,#fff);
  border-radius:var(--radius,20px);
  box-shadow:var(--card-shadow,0 1px 2px rgba(0,0,0,.03),0 8px 24px rgba(0,0,0,.05));
  padding:16px;
  box-sizing:border-box
}
.ad-slot > .ad-promo{
  overflow:visible;
  border:0
}
.ad-promo-hd{
  display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 0 10px
}
.ad-promo-hd:has(.ad-promo-help):not(:has(.ad-promo-title)){justify-content:flex-end}
.ad-promo--bare{padding-top:16px}
.ad-promo--bare .ad-promo-large:first-child,
.ad-promo--bare > .ad-promo-small:first-child{margin-top:0}
.ad-promo-title{font-size:15px;font-weight:800;color:var(--text,#0a0a0a);line-height:1.3;letter-spacing:-.01em}
.ad-promo-help{
  appearance:none;border:0;background:transparent;padding:0;margin:0;
  font-size:11px;color:var(--muted,#8a8a8a);cursor:pointer;line-height:1;font-weight:600
}
.ad-promo-help:hover{color:var(--text-soft,#2e2e2e)}
.ad-promo-large{display:flex;flex-direction:column;gap:10px}
.ad-promo-small{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}
.ad-promo-slot{min-width:0}
.ad-promo-slot.is-filled .ad-banner,
.ad-promo-slot.is-filled .ad-banner-img{border-radius:12px}
.ad-promo-slot--large.is-filled,.ad-promo-slot--small.is-filled{line-height:0}
.ad-buy-card{
  appearance:none;width:100%;text-align:center;cursor:pointer;
  display:flex;align-items:center;justify-content:center;padding:16px;
  border-radius:12px;border:1px dashed rgba(0,0,0,.14);background:var(--card,#fff);
  color:var(--muted,#8a8a8a);transition:border-color .15s,background .15s,color .15s;box-sizing:border-box
}
.ad-promo-slot--large.ad-buy-card{min-height:72px}
.ad-promo-slot--small.ad-buy-card{min-height:64px;padding:12px}
.ad-buy-card:hover{border-color:rgba(0,0,0,.28);color:var(--text-soft,#2e2e2e);background:#fafafa}
.ad-buy-card__text{font-size:14px;font-weight:500;letter-spacing:.02em}

.ad-tier-list{display:flex;flex-direction:column;gap:8px;margin-top:8px}
.ad-tier-item{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:12px;border:1px solid #e2e8f0;border-radius:10px;cursor:pointer;background:#f8fafc
}
.ad-tier-item.is-active{border-color:#2563eb;background:#eff6ff}
.ad-tier-days{font-size:14px;font-weight:700;color:#0f172a}
.ad-tier-price{font-size:12px;color:#16a34a;text-align:right}
.ad-tier-check{width:18px;height:18px;border-radius:50%;border:2px solid #cbd5e1;flex:none}
.ad-tier-item.is-active .ad-tier-check{border-color:#2563eb;background:#2563eb;box-shadow:inset 0 0 0 3px #fff}

.ad-modal{position:fixed;inset:0;z-index:10060;display:none;align-items:center;justify-content:center;padding:16px;box-sizing:border-box}
.ad-modal.open{display:flex}
.ad-modal-mask{position:absolute;inset:0;background:rgba(15,23,42,.45)}
.ad-modal-panel{position:relative;z-index:1;width:100%;max-width:480px;max-height:min(90vh,720px);overflow:auto;background:#fff;border-radius:14px;box-shadow:0 20px 50px rgba(0,0,0,.2)}
.ad-modal-hd{display:flex;align-items:center;justify-content:space-between;padding:16px 18px 8px}
.ad-modal-hd h3{margin:0;font-size:16px;font-weight:700}
.ad-modal-close{border:0;background:transparent;font-size:22px;line-height:1;cursor:pointer;color:#64748b}
.ad-modal-body{padding:8px 18px 18px}
.ad-field{margin-top:12px}
.ad-field label{display:block;font-size:12px;color:#64748b;margin:0 0 6px}
.ad-field input,.ad-field textarea{
  width:100%;box-sizing:border-box;border:1px solid #cbd5e1;border-radius:8px;padding:10px 12px;font-size:14px;outline:none
}
.ad-field input:focus,.ad-field textarea:focus{border-color:#2563eb;box-shadow:0 0 0 3px rgba(37,99,235,.12)}
.ad-upload-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.ad-upload-preview{width:96px;height:64px;border-radius:8px;object-fit:cover;background:#f1f5f9;border:1px solid #e2e8f0}
.ad-btn{appearance:none;border-radius:8px;padding:8px 14px;font-size:14px;cursor:pointer;border:1px solid #cbd5e1;background:#fff;color:#334155}
.ad-btn-primary{background:#2563eb;border-color:#2563eb;color:#fff}
.ad-btn-ok{background:#16a34a;border-color:#16a34a;color:#fff}
.ad-modal-ft{display:flex;justify-content:flex-end;gap:10px;padding:0 18px 16px}
.ad-pay-list{display:flex;flex-direction:column;gap:8px;margin-top:8px}
.ad-pay-item{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:12px;border:1px solid #e2e8f0;border-radius:10px;cursor:pointer;background:#f8fafc
}
.ad-pay-item.is-active{border-color:#2563eb;background:#eff6ff}
.ad-pay-item-main{min-width:0}
.ad-pay-item-text{font-size:14px;font-weight:600;color:#0f172a}
.ad-pay-item-desc{font-size:12px;color:#94a3b8;margin-top:2px}
.ad-pay-check{width:18px;height:18px;border-radius:50%;border:2px solid #cbd5e1;flex:none}
.ad-pay-item.is-active .ad-pay-check{border-color:#2563eb;background:#2563eb;box-shadow:inset 0 0 0 3px #fff}
.ad-pkg-meta{font-size:13px;color:#64748b;line-height:1.55;margin:0 0 4px}
.ad-qr-wrap{text-align:center;padding:8px 0}
.ad-qr-wrap img{width:200px;height:200px;object-fit:contain;background:#fff;border:1px solid #e2e8f0;border-radius:8px}
.ad-qr-amount{font-size:22px;font-weight:700;color:#0f172a;margin:4px 0 10px}
.ad-qr-status{font-size:13px;color:#64748b;margin-top:10px}
.ad-qr-no{font-size:12px;color:#94a3b8;margin-top:6px;word-break:break-all}
@media (max-width:420px){
  .ad-promo-small{grid-template-columns:1fr 1fr;gap:8px}
  .ad-promo-slot--small.ad-buy-card{min-height:56px}
}
