/* 站长殿 · 组件层（Alpine 驱动，样式沿用 app.css 的 token） */

/* ---------- 模态框 ---------- */
.zz-modal{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;padding:20px}
.zz-modal[hidden]{display:none}
.zz-modal__mask{position:absolute;inset:0;background:rgba(10,16,32,.5);backdrop-filter:blur(3px)}
.zz-modal__panel{
  position:relative;background:#fff;border-radius:14px;width:100%;max-width:460px;
  box-shadow:0 30px 80px rgba(10,16,32,.28);overflow:hidden;
}
.zz-modal__head{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid var(--line)}
.zz-modal__head b{font-size:15px}
.zz-modal__body{padding:20px 22px;font-size:14px;color:var(--ink-2)}
.zz-modal__foot{display:flex;justify-content:flex-end;gap:10px;padding:14px 22px;border-top:1px solid var(--line);background:#fafbfc}
.zz-x{width:30px;height:30px;border:0;background:transparent;border-radius:8px;cursor:pointer;color:var(--faint);font-size:18px;line-height:1}
.zz-x:hover{background:#f0f2f5;color:var(--ink)}

/* ---------- 抽屉 ---------- */
.zz-drawer{position:fixed;inset:0;z-index:200}
.zz-drawer[hidden]{display:none}
.zz-drawer__mask{position:absolute;inset:0;background:rgba(10,16,32,.5)}
.zz-drawer__panel{
  position:absolute;top:0;right:0;bottom:0;width:min(380px,86vw);background:#fff;
  box-shadow:-20px 0 60px rgba(10,16,32,.22);display:flex;flex-direction:column;
}
.zz-drawer__head{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid var(--line)}
.zz-drawer__body{padding:20px 22px;overflow:auto;flex:1}

/* ---------- 下拉 ---------- */
.zz-drop{position:relative;display:inline-block}
.zz-drop__menu{
  position:absolute;right:0;top:calc(100% + 8px);min-width:180px;background:#fff;
  border:1px solid var(--line);border-radius:12px;box-shadow:0 18px 40px rgba(23,28,45,.14);
  padding:6px;z-index:100;
}
.zz-drop__item{display:block;padding:8px 12px;border-radius:8px;font-size:13.5px;color:var(--ink-2);cursor:pointer}
.zz-drop__item:hover{background:#f3f4f8;color:var(--ink)}
.zz-drop__sep{height:1px;background:var(--line-2);margin:6px 4px}

/* ---------- Tabs ---------- */
.zz-tabs{display:flex;gap:6px;border-bottom:1px solid var(--line);margin-bottom:16px}
.zz-tab{
  padding:10px 14px;font-size:13.5px;color:var(--muted);border:0;background:transparent;
  cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;
}
.zz-tab.is-active{color:var(--ink);font-weight:600;border-bottom-color:var(--brand)}
.zz-panel[hidden]{display:none}

/* ---------- Toast ---------- */
.zz-toasts{position:fixed;right:20px;bottom:20px;z-index:300;display:flex;flex-direction:column;gap:10px}
.zz-toast{
  display:flex;align-items:center;gap:10px;background:#111827;color:#fff;border-radius:10px;
  padding:12px 16px;font-size:13px;box-shadow:0 16px 40px rgba(10,16,32,.28);min-width:220px;
}
.zz-toast.ok:before{content:"";width:7px;height:7px;border-radius:50%;background:#4ade80;flex:0 0 auto}
.zz-toast.err:before{content:"";width:7px;height:7px;border-radius:50%;background:#f87171;flex:0 0 auto}

/* ---------- Tooltip ---------- */
.zz-tip{position:relative;display:inline-block}
.zz-tip__body{
  position:absolute;left:50%;bottom:calc(100% + 8px);transform:translateX(-50%);
  background:#111827;color:#fff;font-size:12px;padding:6px 10px;border-radius:7px;white-space:nowrap;
  opacity:0;pointer-events:none;transition:.15s;z-index:50;
}
.zz-tip:hover .zz-tip__body{opacity:1}

/* ---------- 表单控件 ---------- */
.zz-input,.zz-select,.zz-textarea{
  width:100%;height:42px;border:1px solid var(--line);border-radius:10px;background:#fff;
  padding:0 12px;font-size:14px;color:var(--ink);outline:0;transition:.15s;
}
.zz-textarea{height:auto;padding:10px 12px;min-height:96px;resize:vertical;line-height:1.7}
.zz-input:focus,.zz-select:focus,.zz-textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(47,111,235,.12)}
.zz-label{display:block;font-size:12.5px;color:var(--muted);margin:0 0 6px}
.zz-field{margin-bottom:16px}

/* ---------- 开关 ---------- */
.zz-switch{position:relative;display:inline-block;width:42px;height:24px;flex:0 0 auto}
.zz-switch input{opacity:0;width:0;height:0}
.zz-switch i{position:absolute;inset:0;background:#d5dae2;border-radius:999px;transition:.2s;cursor:pointer}
.zz-switch i:before{content:"";position:absolute;width:18px;height:18px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.2s;box-shadow:0 1px 3px rgba(0,0,0,.2)}
.zz-switch input:checked + i{background:var(--brand)}
.zz-switch input:checked + i:before{transform:translateX(18px)}

/* ---------- 组件展示页 ---------- */
.kit{padding:48px 0 72px}
.kit h1{font-size:28px;margin:0 0 8px}
.kit .lead{color:var(--muted);margin:0 0 32px}
.kit-row{display:flex;gap:12px;flex-wrap:wrap;align-items:center}
.kit-block{border-top:1px solid var(--line);padding:26px 0}
.kit-block h2{font-size:15px;margin:0 0 14px;color:var(--ink)}
.kit-block .hint{font-size:12.5px;color:var(--faint);margin-top:10px}

[x-cloak]{display:none!important}

/* ---------- 认证 / 账户 / 支付 ---------- */
.auth-wrap{display:flex;justify-content:center;padding:64px 0 96px}
.auth-card{width:100%;max-width:420px;background:#fff;border:1px solid var(--line);border-radius:16px;padding:28px}
.auth-card h1{font-size:22px;margin:0 0 6px}
.auth-card > p{margin:0 0 20px;font-size:13.5px;color:var(--muted)}
.auth-check{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--muted);margin:4px 0 18px}
.auth-fine{font-size:12px;color:var(--faint);margin:14px 0 0;text-align:center}
.zz-alert{border-radius:10px;padding:10px 12px;font-size:13px;margin-bottom:16px}
.zz-alert.err{background:#fef2f2;color:#b91c1c;border:1px solid #fecaca}
.zz-alert.ok{background:#ecfdf5;color:#047857;border:1px solid #a7f3d0}
.acct{display:grid;grid-template-columns:260px 1fr;gap:20px;padding:40px 0 80px}
.panel{background:#fff;border:1px solid var(--line);border-radius:14px;padding:20px}
.panel h2{font-size:15px;margin:0 0 14px}
.balance{font-size:28px;font-weight:700;letter-spacing:-.8px}
.order-row{display:grid;grid-template-columns:1.6fr .9fr .7fr .7fr auto;gap:12px;padding:14px 0;border-top:1px solid var(--line-2);align-items:center;font-size:13px}
.order-row:first-child{border-top:0}
.status{font-size:12px;padding:2px 8px;border-radius:6px;background:#eef0f4;color:#3d4450;font-style:normal;white-space:nowrap}
.status.paid{background:#e6f6ec;color:#18794e}
.status.pending{background:#fff7e6;color:#b45309}
.order-detail{display:grid;gap:10px;margin-top:18px}
.order-detail div{display:flex;justify-content:space-between;font-size:13.5px;gap:16px}
.order-detail span{color:var(--muted)}
.pay-box{max-width:560px;margin:40px auto 80px;background:#fff;border:1px solid var(--line);border-radius:16px;padding:28px}
.pay-addr{font-family:var(--mono);font-size:12.5px;word-break:break-all;background:#f5f6f8;border-radius:8px;padding:10px 12px;margin:6px 0 16px}
.qr{width:180px;height:180px;border:1px solid var(--line);border-radius:10px;display:block;margin:0 auto 18px;background:#fff}
@media(max-width:760px){.acct{grid-template-columns:1fr}.order-row{grid-template-columns:1fr auto}.order-row span:nth-child(2),.order-row span:nth-child(4){display:none}}

/* 详情页右栏布局保护：避免窄容器下两块重叠 */
.buy-col{position:relative}
.buy-col > .buy,.buy-col > .assure{position:relative;z-index:1}
@media (max-width:980px){
  .buy{position:static!important}
  .buy-col{gap:14px}
}

/* ---------- 模态框优化（公告弹窗） ---------- */
.zz-modal__mask{
  background:rgba(16,20,28,.32);
  backdrop-filter:none;
}
.zz-modal__panel{
  max-width:420px;border-radius:16px;
  box-shadow:0 24px 60px rgba(16,20,28,.18),0 2px 8px rgba(16,20,28,.06);
  animation:zzModalIn .22s cubic-bezier(.2,.7,.2,1);
}
@keyframes zzModalIn{from{opacity:0;transform:translateY(8px) scale(.985)}to{opacity:1;transform:none}}
.zz-modal__head{
  padding:18px 20px 0;border-bottom:0;align-items:flex-start;
}
.zz-modal__head b{font-size:16px;line-height:1.45;letter-spacing:-.2px;color:#161a20}
.zz-modal__body{
  padding:10px 20px 4px;font-size:13.5px;line-height:1.78;color:#5a616b;
}
.zz-modal__foot{
  padding:16px 20px 18px;border-top:0;background:transparent;
}
.zz-modal__foot .btn{min-width:96px;height:38px;border-radius:8px;font-size:13.5px}
.zz-x{
  width:28px;height:28px;border-radius:8px;font-size:17px;color:#9aa1ae;
  display:grid;place-items:center;flex:0 0 auto;margin-left:12px;
}
.zz-x:hover{background:#f4f5f7;color:#303133}

@media (max-width:640px){
  .zz-modal{align-items:flex-end;padding:0}
  .zz-modal__panel{
    max-width:none;border-radius:16px 16px 0 0;
    animation:zzSheetIn .26s cubic-bezier(.2,.7,.2,1);
  }
  @keyframes zzSheetIn{from{transform:translateY(100%)}to{transform:none}}
  .zz-modal__panel::before{
    content:"";display:block;width:36px;height:4px;border-radius:2px;
    background:#e4e7ed;margin:8px auto 0;
  }
  .zz-modal__head{padding-top:14px}
  .zz-modal__foot{padding-bottom:calc(18px + env(safe-area-inset-bottom))}
}

/* 公告弹窗遮罩：去模糊，只留淡灰（实际类是 sf-backdrop） */
.sf-backdrop{
  background:rgba(16,22,32,.26) !important;
  backdrop-filter:none !important;
  -webkit-backdrop-filter:none !important;
}
