/* ============================================================
   广告位（前台自动投放 / 简码 / 会员投放）
   ============================================================ */
.ad-wrap{margin:0 0 16px}
.ad-wrap:last-child{margin-bottom:0}
.ad-ctx-shortcode{margin:18px 0}

/* 宫格布局：一行 N 条，每格一条广告；小屏自动降为 2 列 / 1 列 */
.ad-grid{display:grid;gap:12px}
.ad-grid .ad-item + .ad-item{margin-top:0}
.ad-cols-2{grid-template-columns:repeat(2,1fr)}
.ad-cols-4{grid-template-columns:repeat(4,1fr)}
.ad-cols-6{grid-template-columns:repeat(6,1fr)}
@media (max-width:960px){
  .ad-cols-4{grid-template-columns:repeat(2,1fr)}
  .ad-cols-6{grid-template-columns:repeat(3,1fr)}
}
@media (max-width:600px){
  .ad-cols-4,.ad-cols-6{grid-template-columns:repeat(2,1fr)}
}

/* 空位招募：「虚位以待 · 订阅广告」占位（纯提示，不可点击） */
.ad-slot-empty{display:flex;align-items:center;gap:10px;padding:14px;
  border:1.5px dashed var(--primary,#f60);border-radius:10px;
  background:repeating-linear-gradient(45deg,rgba(255,150,50,.04) 0 10px,transparent 10px 20px);
  color:inherit;cursor:default;user-select:none}
.ad-slot-ico{font-size:22px;flex-shrink:0}
.ad-slot-main{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}
.ad-slot-main b{font-size:14px;color:var(--ink,#2f3439)}
.ad-slot-main em{font-style:normal;font-size:12px;color:#8a919f;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

.ad-item{display:block;position:relative;overflow:hidden;border-radius:10px;text-decoration:none;color:inherit}
.ad-item + .ad-item{margin-top:12px}
.ad-grid .ad-item + .ad-item{margin-top:0}
.ad-item img{display:block;width:100%;height:auto}

/* 广告标识（法规要求的可识别标识） */
.ad-tag{position:absolute;top:0;right:0;z-index:2;background:rgba(0,0,0,.42);color:#fff;
  font-size:11px;line-height:1;padding:4px 8px;border-bottom-left-radius:8px;letter-spacing:.5px}

/* 图片广告 */
.ad-image img{border-radius:10px}

/* 文字广告 */
.ad-text{display:flex;align-items:center;gap:10px;
  background:linear-gradient(90deg,var(--primary-light,#eef4ff),#fff);
  border:1px solid var(--line,#eef0f4);padding:12px 14px;border-radius:10px}
.ad-text .ad-tag{position:static;background:var(--primary,#2f6fed);border-radius:4px;padding:2px 6px;flex-shrink:0}
.ad-text-main{flex:1;font-size:13.5px;color:var(--ink,#2f3439);line-height:1.6;word-break:break-word}
.ad-btn{flex-shrink:0;background:var(--primary,#2f6fed);color:#fff;font-size:12.5px;
  padding:5px 12px;border-radius:14px;white-space:nowrap}
.ad-text:hover .ad-btn{filter:brightness(1.08)}

/* 多图轮播 */
.ad-slideshow{position:relative}
.ad-slide{display:none;width:100%}
.ad-slide.is-active{display:block}
.ad-dots{position:absolute;left:0;right:0;bottom:8px;display:flex;justify-content:center;gap:6px;z-index:2}
.ad-dots i{width:7px;height:7px;border-radius:50%;background:rgba(255,255,255,.6);
  box-shadow:0 0 4px rgba(0,0,0,.35);cursor:pointer;transition:.2s}
.ad-dots i.is-active{background:#fff;width:16px;border-radius:4px}

/* 自定义代码广告 */
.ad-code{overflow:hidden;border-radius:10px}

/* 会员中心投放页 */
.ad-my-item{border:1px solid #eef0f4;border-radius:12px;padding:14px;margin-bottom:12px}
.ad-my-item h4{margin:0 0 8px;font-size:15px}
.ad-st{display:inline-block;padding:1px 8px;border-radius:10px;font-size:12px;margin-left:6px}
.ad-st.live{background:#e9f8ee;color:#1a9c4a}
.ad-st.review{background:#fff4e5;color:#d46b08}
.ad-st.reject{background:#fdecec;color:#c0392b}
.ad-st.off,.ad-st.expired{background:#f2f4f8;color:#8a919f}

/* 空位占位（可点击按钮，弹购买层） */
.ad-slot-empty{position:relative;width:100%;text-align:left;font-family:inherit;border:none;background:repeating-linear-gradient(45deg,rgba(255,150,50,.05) 0 10px,transparent 10px 20px);cursor:pointer}
.ad-slot-empty:hover{background:rgba(255,150,50,.1)}
.ad-slot-empty:focus-visible{outline:2px solid var(--primary,#f60);outline-offset:2px}
.ad-slot-price{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  font-size:13px;font-weight:700;color:var(--primary,#f60)}
.ad-slot-price i{font-style:normal;display:inline-block;background:rgba(255,150,50,.12);padding:5px 14px;
  border-radius:14px;white-space:nowrap}

/* 购买弹层 */
.ad-modal-mask{position:fixed;inset:0;background:rgba(20,24,32,.55);z-index:9999;
  display:none;align-items:center;justify-content:center;padding:16px}
.ad-modal-mask.ad-show{display:flex}
.ad-modal{width:480px;max-width:100%;max-height:88vh;overflow:auto;background:#fff;
  border-radius:14px;box-shadow:0 18px 50px rgba(0,0,0,.25)}
.ad-modal-head{display:flex;align-items:center;justify-content:space-between;
  padding:14px 18px;border-bottom:1px solid #eef0f4;position:sticky;top:0;background:#fff}
.ad-modal-title{font-size:16px;font-weight:700;color:#2f3439}
.ad-modal-close{border:none;background:none;font-size:22px;line-height:1;color:#8a919f;cursor:pointer;padding:0 2px}
.ad-modal-body{padding:16px 18px}
.ad-mf{margin-bottom:14px}
.ad-mf>label{display:block;font-size:13px;color:#5a6370;margin-bottom:6px;font-weight:600}
.ad-mf input[type=text],.ad-mf input[type=password],.ad-mf input[type=url],.ad-mf textarea,.ad-mf select{
  width:100%;box-sizing:border-box;border:1px solid #dfe3ea;border-radius:8px;padding:8px 10px;
  font-size:14px;font-family:inherit;color:#2f3439;background:#fff}
.ad-mf textarea{min-height:72px;resize:vertical}
.ad-mf .ad-tip{font-size:12px;color:#8a919f;margin-top:4px}
.ad-tabs{display:flex;gap:8px;margin-bottom:8px}
.ad-tab{flex:1;border:1px solid #dfe3ea;background:#f7f8fa;border-radius:8px;padding:7px 0;
  font-size:13px;cursor:pointer;color:#5a6370;font-family:inherit}
.ad-tab.is-active{border-color:var(--primary,#f60);color:var(--primary,#f60);background:rgba(255,150,50,.07);font-weight:600}
.ad-pricebox{background:#fff7ef;border:1px dashed rgba(255,150,50,.5);border-radius:10px;
  padding:10px 12px;font-size:13px;color:#5a6370}
.ad-pricebox b{color:var(--primary,#f60);font-size:17px}
.ad-pay-btn{display:block;width:100%;border:none;border-radius:10px;padding:11px 0;margin-top:4px;
  background:var(--primary,#f60);color:#fff;font-size:15px;font-weight:700;cursor:pointer;font-family:inherit}
.ad-pay-btn[disabled]{opacity:.6;cursor:not-allowed}
.ad-modal-denied{text-align:center;padding:26px 8px;color:#5a6370}
.ad-modal-denied .ico{font-size:34px;margin-bottom:8px}
.ad-modal-denied .ad-login-btn{display:inline-block;margin-top:12px;background:var(--primary,#f60);
  color:#fff;text-decoration:none;padding:9px 26px;border-radius:10px;font-size:14px}
.ad-thumb-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.ad-thumb{position:relative;width:56px;height:56px;border-radius:8px;overflow:hidden;border:1px solid #eef0f4}
.ad-thumb img{width:100%;height:100%;object-fit:cover}
.ad-thumb .del{position:absolute;top:0;right:0;width:16px;height:16px;line-height:15px;text-align:center;
  background:rgba(0,0,0,.55);color:#fff;font-size:12px;cursor:pointer;border-radius:0 0 0 6px}

/* 窄容器（侧栏 300px）：纵向堆叠，价签不再绝对居中避免与标题重叠 */
.ad-pos-sidebar .ad-slot-empty{flex-direction:column;align-items:stretch;gap:6px;text-align:center}
.ad-pos-sidebar .ad-slot-main{align-items:center}
.ad-pos-sidebar .ad-slot-price{position:static;transform:none}
.ad-pos-sidebar .ad-slot-main em{white-space:normal}
.ad-pos-sidebar .ad-wrap,.ad-pos-sidebar{max-width:100%;overflow:hidden}

/* 窄屏：空位占位纵向堆叠，价签不再绝对居中避免与标题重叠 */
@media (max-width:640px){
  .ad-slot-empty{flex-direction:column;align-items:stretch;gap:6px;text-align:center}
  .ad-slot-main{align-items:center}
  .ad-slot-price{position:static;transform:none}
  .ad-slot-main em{white-space:normal}
}

/* ---------- 多条广告轮换（同一广告位多条广告按顺序每隔 N 秒换一条） ---------- */
.ad-wrap.ad-rotating{position:relative}
.ad-wrap.ad-rotating > .ad-item{display:none}
.ad-wrap.ad-rotating > .ad-item.is-cur{display:block}
.ad-wrap.ad-rotating > .ad-item.is-cur.ad-text{display:flex}
.ad-rot-n{position:absolute;top:7px;right:9px;z-index:3;font-style:normal;font-size:10.5px;
    line-height:1;padding:3px 7px;border-radius:9px;background:rgba(0,0,0,.42);color:#fff;
    pointer-events:none;letter-spacing:.5px}
.ad-rot-n::before{content:'⇄ ';font-size:9px;opacity:.8}

/* ---------- 「投放广告」购买入口（有广告在投时也显示） ---------- */
.ad-buy{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;
    margin-top:8px;padding:8px 12px;border:1px dashed var(--primary,#2f6fed);border-radius:9px;
    background:rgba(47,111,237,.06);color:var(--primary,#2f6fed);font-size:12.5px;
    cursor:pointer;transition:background .15s}
.ad-buy i{font-style:normal;opacity:.85;font-size:12px}
.ad-buy:hover{background:rgba(47,111,237,.14)}
.ad-slot-empty + .ad-buy{display:none}
