/**
 * 优惠中心 - 干净卡片风格
 * 参考：工具目录网格卡片设计
 */

/* ==================================
   1. 变量
   ================================== */
:root{
    --dp-green:#16a34a;
    --dp-green-h:#15803d;
    --dp-green-bg:#f0fdf4;
    --dp-red:#dc2626;
    --dp-red-h:#b91c1c;
    --dp-red-bg:#fef2f2;
    --dp-orange:#ea580c;
    --dp-blue:#2563eb;
    --dp-yellow:#fef3c7;

    --dp-bg:#f8fafc;
    --dp-card:#fff;
    --dp-line:#e5e7eb;
    --dp-line-l:#f3f4f6;
    --dp-tx:#111827;
    --dp-tx-s:#374151;
    --dp-tx-m:#6b7280;
    --dp-tx-l:#9ca3af;

    --dp-r:10px;
    --dp-r-s:6px;
    --dp-r-f:999px;
    --dp-sh:0 1px 2px rgba(0,0,0,.04),0 1px 3px rgba(0,0,0,.02);
    --dp-sh-h:0 4px 12px rgba(0,0,0,.08);
    --dp-g:24px;
    --dp-mw:1200px;
}

/* ==================================
   2. 页面框架
   ================================== */
.dp{
    min-height:100vh;
    background:var(--dp-bg);
    padding-bottom:4rem;
}
.dp-inner,.dp-body{
    max-width:var(--dp-mw);
    margin:0 auto;
    padding:0 1.5rem;
}

/* ==================================
   3. 头部
   ================================== */
.dp-head{
    background:var(--dp-card);
    border-bottom:1px solid var(--dp-line);
    padding:2.5rem 0 0;
    text-align:center;
}
.dp-title{
    font-size:2rem;
    font-weight:700;
    color:var(--dp-tx);
    margin:0 0 .5rem;
    letter-spacing:-.02em;
}
.dp-desc{
    font-size:.9375rem;
    color:var(--dp-tx-m);
    margin:0;
}
.dp-desc strong{
    color:var(--dp-green);
    font-weight:700;
}

/* ==================================
   4. 筛选标签
   ================================== */
.dp-tabs{
    display:flex;
    justify-content:flex-start;
    gap:.25rem;
    margin-top:1.5rem;
    padding-bottom:1.25rem;
    overflow-x:auto;
    scrollbar-width:none;
    -webkit-overflow-scrolling:touch;
    scroll-snap-type:x proximity;
    position:relative;
}
/* 右侧渐变遮罩 - 提示可滚动 */
.dp-tabs::after{
    content:'';
    position:absolute;
    top:0;
    right:0;
    bottom:.25rem;
    width:36px;
    background:linear-gradient(to right,rgba(255,255,255,0),rgba(255,255,255,.95));
    pointer-events:none;
    z-index:1;
    opacity:0;
    transition:opacity .2s;
}
.dp-tabs.can-scroll::after{opacity:1;}
.dp-tabs::-webkit-scrollbar{display:none;}

.dp-tab{
    display:inline-flex;
    align-items:center;
    gap:.375rem;
    padding:.625rem 1.25rem;
    font-size:.9375rem;
    font-weight:500;
    color:var(--dp-tx-s);
    text-decoration:none;
    border-radius:var(--dp-r-s);
    white-space:nowrap;
    transition:all .2s;
    border:1px solid transparent;
}
.dp-tab:hover{background:var(--dp-line-l);color:var(--dp-tx);}
.dp-tab.on{
    background:var(--dp-tx);
    color:#fff;
    font-weight:600;
    border-color:var(--dp-tx);
}

/* 特殊标签色 */
.dp-tab-green:hover{background:var(--dp-green-bg);color:var(--dp-green);}
.dp-tab-green.on{background:var(--dp-green);border-color:var(--dp-green);}

.dp-tab-red:hover{background:var(--dp-red-bg);color:var(--dp-red);}
.dp-tab-red.on{background:var(--dp-red);border-color:var(--dp-red);}

.dp-tab-n{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    min-width:20px;
    height:20px;
    padding:0 5px;
    font-size:.6875rem;
    font-weight:700;
    background:rgba(255,255,255,.25);
    border-radius:var(--dp-r-f);
}
.dp-tab.on .dp-tab-n{background:rgba(255,255,255,.3);}

.dn-g{background:var(--dp-green-bg);color:var(--dp-green);}
.dn-r{background:var(--dp-red-bg);color:var(--dp-red);}

/* ==================================
   5. 卡片网格
   ================================== */
.dp-body{padding-top:1.5rem;}

.dp-grid{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:var(--dp-g);
}

/* 单个卡片 */
.dc{
    position:relative;
    display:flex;
    flex-direction:column;
    background:var(--dp-card);
    border:1px solid var(--dp-line);
    border-radius:var(--dp-r);
    padding:1.25rem;
    box-shadow:var(--dp-sh);
    transition:all .2s ease;
}
.dc:hover{
    transform:translateY(-2px);
    box-shadow:var(--dp-sh-h);
    border-color:#d1d5db;
}

/* 折扣角标 */
.dc-badge{
    position:absolute;
    top:12px;
    right:12px;
    padding:3px 8px;
    background:var(--dp-red);
    color:#fff;
    font-size:.75rem;
    font-weight:700;
    border-radius:var(--dp-r-s);
    z-index:1;
}

/* 已过期 */
.dc-end{opacity:.55;}
.dc-end:hover{transform:none;box-shadow:var(--dp-sh);border-color:var(--dp-line);}
.dc-end .dc-btn{
    background:var(--dp-line);
    color:var(--dp-tx-m);
    pointer-events:none;
}
.dc-end .dc-old,.dc-end .dc-now{color:var(--dp-tx-l);text-decoration:none;}

/* 紧急 */
.dc-hot{border-color:rgba(220,38,38,.2);}
.dc-hot:hover{border-color:rgba(220,38,38,.4);}

/* ==================================
   6. 卡片内容
   ================================== */
.dc-icon{
    width:52px;
    height:52px;
    border-radius:var(--dp-r-s);
    overflow:hidden;
    background:var(--dp-line-l);
    display:flex;
    align-items:center;
    justify-content:center;
    flex-shrink:0;
    margin-bottom:.75rem;
}
.dc-icon img{
    width:100%;
    height:100%;
    object-fit:cover;
}
.dc-ico-letter{
    font-size:1.25rem;
    font-weight:700;
    color:var(--dp-blue);
    line-height:1;
}

.dc-info{flex:1;min-width:0;margin-bottom:.75rem;}

.dc-name{
    font-size:1.0625rem;
    font-weight:600;
    color:var(--dp-tx);
    margin:0 0 .375rem;
    line-height:1.3;
    display:-webkit-box;
    -webkit-line-clamp:1;
    -webkit-box-orient:vertical;
    overflow:hidden;
}
.dc-name a{color:inherit;text-decoration:none;}
.dc-name a:hover{color:var(--dp-green);}

.dc-brief{
    font-size:.8125rem;
    color:var(--dp-tx-m);
    margin:0 0 .5rem;
    line-height:1.5;
    display:-webkit-box;
    -webkit-line-clamp:2;
    -webkit-box-orient:vertical;
    overflow:hidden;
}

/* 标签行 */
.dc-tags{
    display:flex;
    flex-wrap:wrap;
    gap:.375rem;
    align-items:center;
}
.dc-tag{
    display:inline-flex;
    padding:.1875rem .5rem;
    background:var(--dp-yellow);
    color:#92400e;
    font-size:.6875rem;
    font-weight:600;
    border-radius:var(--dp-r-s);
}
/* 优惠码 */
.dc-code{
    display:inline-flex;
    align-items:center;
    gap:.25rem;
    padding:.25rem .5rem;
    background:var(--dp-blue);
    color:#fff;
    font-size:.6875rem;
    font-weight:700;
    border-radius:var(--dp-r-s);
    cursor:pointer;
    transition:background .2s;
    letter-spacing:.02em;
}
.dc-code:hover{background:#1d4ed8;}
.dc-copy-ico{opacity:.7;flex-shrink:0;transition:opacity .2s;}
.dc-code:hover .dc-copy-ico{opacity:1;}
.dc-code.copied{
    background:var(--dp-green);
    cursor:default;
}
.dc-code.copied::after{
    content:'✓';
    font-size:.75rem;
    margin-left:2px;
}

/* 过期时间 */
.dc-expiry{
    font-size:.6875rem;
    color:var(--dp-tx-l);
    display:inline-flex;
    align-items:center;
}
.dc-expiry.wr{color:var(--dp-red);font-weight:600;}
.dc-expiry.wn{color:var(--dp-orange);font-weight:500;}

/* ==================================
   7. 底部（价格+按钮）
   ================================== */
.dc-foot{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:.75rem;
    margin-top:auto;
    padding-top:.75rem;
    border-top:1px solid var(--dp-line-l);
}

.dc-price{
    display:flex;
    align-items:baseline;
    gap:.375rem;
    min-width:0;
}
.dc-old{
    font-size:.8125rem;
    color:var(--dp-tx-l);
    text-decoration:line-through;
}
.dc-now{
    font-size:1.0625rem;
    font-weight:700;
    color:var(--dp-tx);
}
.dc-now.free{color:var(--dp-green);font-weight:700;}
.dc-now.free::before{content:'💰';font-size:.875rem;margin-right:2px;}

.dc-btn{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    padding:.5rem 1rem;
    background:var(--dp-green);
    color:#fff;
    font-size:.8125rem;
    font-weight:600;
    border-radius:var(--dp-r-s);
    text-decoration:none;
    border:none;
    cursor:pointer;
    white-space:nowrap;
    flex-shrink:0;
    transition:background .2s,transform .2s;
}
.dc-btn:hover{background:var(--dp-green-h);transform:translateY(-1px);}
.dc-btn.off{background:var(--dp-line);color:var(--dp-tx-m);cursor:default;transform:none;}

/* ==================================
   8. 分页
   ================================== */
.dp-paginate{
    display:flex;
    justify-content:center;
    gap:.25rem;
    margin-top:2rem;
}
.dp-paginate a,.dp-paginate span{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    min-width:38px;
    height:38px;
    padding:0 .75rem;
    font-size:.875rem;
    font-weight:500;
    background:var(--dp-card);
    border:1px solid var(--dp-line);
    border-radius:var(--dp-r-s);
    color:var(--dp-tx-s);
    text-decoration:none;
    transition:all .2s;
}
.dp-paginate a:hover{
    background:var(--dp-tx);
    border-color:var(--dp-tx);
    color:#fff;
}
.dp-paginate .current{
    background:var(--dp-tx);
    border-color:var(--dp-tx);
    color:#fff;
    font-weight:600;
}

/* ==================================
   9. 空状态
   ================================== */
.dp-empty{
    display:flex;
    flex-direction:column;
    align-items:center;
    gap:.75rem;
    padding:4rem 1.5rem;
    text-align:center;
    background:var(--dp-card);
    border:1px solid var(--dp-line);
    border-radius:var(--dp-r);
}
.dp-empty-icon{font-size:3rem;}
.dp-empty p{font-size:.9375rem;color:var(--dp-tx-m);margin:0 0 .5rem;}

/* ==================================
   10. 返回顶部
   ================================== */
.dp-btt{
    position:fixed;
    bottom:2rem;
    right:2rem;
    width:42px;
    height:42px;
    display:flex;
    align-items:center;
    justify-content:center;
    background:var(--dp-card);
    color:var(--dp-tx-s);
    border:1px solid var(--dp-line);
    border-radius:50%;
    box-shadow:0 2px 8px rgba(0,0,0,.1);
    cursor:pointer;
    opacity:0;
    visibility:hidden;
    transform:translateY(8px);
    transition:all .25s ease;
    z-index:999;
}
.dp-btt.show{
    opacity:1;
    visibility:visible;
    transform:translateY(0);
}
.dp-btt:hover{
    background:var(--dp-tx);
    color:#fff;
    border-color:var(--dp-tx);
}
.dp-btt svg{pointer-events:none;}

/* ==================================
   11. Toast
   ================================== */
.dp-toast{
    position:fixed;
    bottom:1.5rem;
    left:50%;
    transform:translateX(-50%) translateY(120px);
    padding:.75rem 1.25rem;
    background:var(--dp-tx);
    color:#fff;
    font-size:.875rem;
    font-weight:500;
    border-radius:var(--dp-r);
    box-shadow:0 8px 24px rgba(0,0,0,.15);
    opacity:0;
    transition:all .3s ease;
    z-index:9999;
    pointer-events:none;
    white-space:nowrap;
}
.dp-toast.show{
    opacity:1;
    transform:translateX(-50%) translateY(0);
}

/* ==================================
   11. 响应式
   ================================== */
@media (max-width:1024px){
    .dp-grid{grid-template-columns:repeat(2,1fr);gap:18px;}
    .dp-title{font-size:1.75rem;}
    .dp-head{padding-top:2rem;}
}
@media (max-width:640px){
    .dp-grid{grid-template-columns:1fr;gap:14px;}
    .dp-head{padding-top:1.5rem;}
    .dp-title{font-size:1.5rem;}
    .dp-desc{font-size:.875rem;}
    .dp-tabs{padding-bottom:1rem;justify-content:flex-start;}
    .dp-tab{padding:.5rem 1rem;font-size:.875rem;flex-shrink:0;scroll-snap-align:start;}
    .dp-body{padding-top:1rem;}
    .dp-inner,.dp-body{padding:0 1rem;}

    /* 筛选栏移动端优化 - 延伸到屏幕边缘 */
    .dp-head{
        margin-left:-1rem;
        margin-right:-1rem;
        padding-left:1rem;
        padding-right:1rem;
    }
    .dp-tabs{
        margin-left:-1rem;
        margin-right:-1rem;
        padding-left:1rem;
        padding-right:2rem;
    }
    .dc{padding:1rem;}

    /* 移动端卡片增强 */
    .dc-foot{
        flex-direction:column;
        align-items:stretch;
        gap:.625rem;
    }
    .dc-price{
        font-size:.9375rem;
    }
    .dc-btn{
        width:100%;
        justify-content:center;
        padding:.625rem;
        font-size:.875rem;
        border-radius:var(--dp-r);
    }
    .dc-icon{
        width:46px;
        height:46px;
    }
    .dc-tags{
        gap:.25rem;
    }

    /* 移动端返回顶部 */
    .dp-btt{
        bottom:1.25rem;
        right:1.25rem;
        width:38px;
        height:38px;
    }
}

/* 超小屏 480px 及以下 */
@media (max-width:480px){
    .dp-title{font-size:1.25rem;}
    .dp-desc{font-size:.8125rem;}
    .dp-tab{padding:.4375rem .75rem;font-size:.8125rem;}
    .dp-tab-n{min-width:18px;height:18px;font-size:.625rem;}
    .dp-icon{width:40px;height:40px;}
    .dc-name{font-size:1rem;}
}
