/* ============================================================
   网盘系统 - 全局样式（移动端优先）
   设计原则：控件要么纯图标、要么纯文字，保持干净一致
   ============================================================ */
:root{
  --primary:#2563EB; --primary-dark:#1D4ED8; --teal:#06B6D4;
  --bg:#F4F6FB; --card:#FFFFFF; --text:#0F172A; --muted:#64748B;
  --line:#E4E9F2; --danger:#DC2626; --success:#16A34A; --warn:#D97706; --gold:#F59E0B;
  --radius:16px; --shadow:0 1px 3px rgba(15,23,42,.05), 0 10px 28px rgba(15,23,42,.06);
  --grad:linear-gradient(135deg,#2563EB 0%,#06B6D4 100%);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0}
body{
  background:var(--bg); color:var(--text);
  font:14px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
  padding-bottom:env(safe-area-inset-bottom);
}
img{max-width:100%}
a{color:var(--primary);text-decoration:none}

.container{max-width:640px;margin:0 auto;padding:0 16px}

/* ---------- 顶栏 ---------- */
.topbar{
  position:sticky;top:0;z-index:50;background:rgba(255,255,255,.92);
  backdrop-filter:blur(12px);border-bottom:1px solid var(--line);
}
.topbar .inner{max-width:640px;margin:0 auto;padding:10px 16px;display:flex;align-items:center;gap:10px}
.brand{display:flex;align-items:center;gap:8px;font-size:17px;font-weight:700;color:var(--text)}
.brand .logo{width:30px;height:30px;border-radius:9px;background:var(--grad);display:flex;align-items:center;justify-content:center;color:#fff}
.topbar .spacer{flex:1}

/* ---------- 按钮（纯文字） ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;border:none;cursor:pointer;
  border-radius:12px;font-size:15px;font-weight:600;padding:11px 22px;
  transition:transform .08s ease,opacity .15s ease;user-select:none;
}
.btn:active{transform:scale(.97)}
.btn-primary{background:var(--primary);color:#fff}
.btn-primary:hover{background:var(--primary-dark)}
.btn-ghost{background:#EEF2FF;color:var(--primary)}
.btn-soft{background:#F1F5F9;color:var(--text)}
.btn-gold{background:var(--gold);color:#fff}
.btn-danger{background:#FEF2F2;color:var(--danger)}
.btn-block{width:100%}
.btn[disabled]{opacity:.55;cursor:not-allowed}

/* ---------- 图标按钮（纯图标，带 aria-label） ---------- */
.ibtn{
  display:inline-flex;align-items:center;justify-content:center;border:none;cursor:pointer;
  width:36px;height:36px;border-radius:10px;background:transparent;color:var(--muted);
  transition:background .15s ease,color .15s ease;
}
.ibtn:hover{background:#F1F5F9;color:var(--text)}
.ibtn.danger:hover{background:#FEF2F2;color:var(--danger)}
.ibtn.primary:hover{background:#EEF2FF;color:var(--primary)}
.ibtn:active{transform:scale(.93)}

/* ---------- 卡片 ---------- */
.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px;margin-bottom:16px}
.card-title{font-size:16px;font-weight:700;margin:0 0 14px;display:flex;align-items:center;gap:8px}
.card-title .tint{width:4px;height:16px;border-radius:2px;background:var(--grad)}

/* ---------- 上传区 ---------- */
.dropzone{
  border:2px dashed #C7D2FE;border-radius:var(--radius);background:#F8FAFF;
  padding:34px 18px;text-align:center;cursor:pointer;transition:border-color .15s,background .15s;
}
.dropzone.drag{border-color:var(--primary);background:#EEF2FF}
.dropzone .dz-icon{width:54px;height:54px;margin:0 auto 12px;border-radius:16px;background:var(--grad);display:flex;align-items:center;justify-content:center;color:#fff}
.dropzone p{margin:4px 0;color:var(--muted);font-size:13px}
.dropzone .dz-tip{font-size:12px;color:#94A3B8}

/* 上传进度 */
.uptask{display:flex;align-items:center;gap:12px;padding:12px 0;border-top:1px solid var(--line)}
.uptask:first-of-type{border-top:none}
.uptask .bar{flex:1;height:6px;border-radius:3px;background:#EEF2FF;overflow:hidden}
.uptask .bar i{display:block;height:100%;width:0;border-radius:3px;background:var(--grad);transition:width .2s}
.uptask .pct{font-size:12px;color:var(--muted);width:38px;text-align:right;font-variant-numeric:tabular-nums}

/* ---------- 文件列表 ---------- */
.fitem{display:flex;align-items:center;gap:12px;padding:13px 0;border-bottom:1px solid var(--line)}
.fitem:last-child{border-bottom:none}
.fitem .ficon{width:42px;height:42px;border-radius:12px;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:#fff}
.ficon.image{background:linear-gradient(135deg,#34D399,#059669)}
.ficon.video{background:linear-gradient(135deg,#F472B6,#DB2777)}
.ficon.audio{background:linear-gradient(135deg,#38BDF8,#0284C7)}
.ficon.pdf{background:linear-gradient(135deg,#F87171,#DC2626)}
.ficon.text{background:linear-gradient(135deg,#A78BFA,#7C3AED)}
.ficon.zip{background:linear-gradient(135deg,#FBBF24,#D97706)}
.ficon.office{background:linear-gradient(135deg,#60A5FA,#2563EB)}
.ficon.other{background:linear-gradient(135deg,#94A3B8,#64748B)}
.fitem .fmeta{flex:1;min-width:0}
.fitem .fname{font-weight:600;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fitem .fsub{font-size:12px;color:var(--muted);display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.fitem .fops{display:flex;gap:2px;flex-shrink:0}
.badge{display:inline-flex;align-items:center;font-size:11px;padding:2px 8px;border-radius:999px;font-weight:600}
.badge.share{background:#ECFDF5;color:var(--success)}
.badge.vip{background:#FEF3C7;color:#B45309}

/* ---------- 空状态 ---------- */
.empty{text-align:center;padding:44px 16px;color:var(--muted)}
.empty .empty-icon{width:64px;height:64px;margin:0 auto 14px;border-radius:20px;background:#EEF2FF;display:flex;align-items:center;justify-content:center;color:#A5B4FC}
.empty p{margin:4px 0}

/* ---------- 表单 ---------- */
.field{margin-bottom:14px}
.field label{display:block;font-size:13px;font-weight:600;margin-bottom:6px;color:#334155}
.input{
  width:100%;border:1px solid var(--line);border-radius:12px;padding:12px 14px;font-size:15px;
  background:#FBFCFE;outline:none;transition:border-color .15s,box-shadow .15s;color:var(--text);
}
.input:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(37,99,235,.12);background:#fff}
textarea.input{min-height:110px;resize:vertical;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:13px}
.hint{font-size:12px;color:var(--muted);margin-top:5px}
.errline{display:none;background:#FEF2F2;color:var(--danger);border:1px solid #FECACA;border-radius:10px;padding:10px 12px;font-size:13px;margin-bottom:12px}
.errline.show{display:block}

/* ---------- 弹窗 ---------- */
.mask{position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:100;display:flex;align-items:flex-end;justify-content:center;opacity:0;pointer-events:none;transition:opacity .2s}
.mask.show{opacity:1;pointer-events:auto}
.modal{width:100%;max-width:520px;background:#fff;border-radius:20px 20px 0 0;padding:20px 20px 26px;transform:translateY(24px);transition:transform .22s ease;max-height:88vh;overflow:auto}
.mask.show .modal{transform:none}
@media(min-width:560px){
  .mask{align-items:center}
  .modal{border-radius:20px;padding:26px}
}
.modal-head{display:flex;align-items:center;margin-bottom:14px}
.modal-head h3{margin:0;font-size:17px;font-weight:700;flex:1}
.mclose{width:34px;height:34px;border-radius:10px;background:#F1F5F9;color:var(--muted);display:flex;align-items:center;justify-content:center;border:none;cursor:pointer}

/* ---------- Toast ---------- */
#toast{position:fixed;left:50%;bottom:34px;transform:translateX(-50%) translateY(80px);z-index:200;opacity:0;transition:all .25s ease;pointer-events:none}
#toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
#toast .tbox{background:rgba(15,23,42,.92);color:#fff;border-radius:12px;padding:11px 20px;font-size:14px;box-shadow:0 8px 24px rgba(15,23,42,.25);white-space:nowrap;max-width:86vw;overflow:hidden;text-overflow:ellipsis}

/* ---------- 分享页 ---------- */
.share-hero{background:var(--grad);border-radius:20px;padding:26px 20px;color:#fff;margin:16px 0;position:relative;overflow:hidden}
.share-hero .big-name{font-size:19px;font-weight:700;word-break:break-all;margin-bottom:8px}
.share-hero .meta{font-size:13px;opacity:.9;display:flex;gap:14px;flex-wrap:wrap}
.share-hero .meta span{display:inline-flex;align-items:center;gap:5px}
.dl-card{border:1px solid var(--line);border-radius:14px;padding:14px 16px;display:flex;align-items:center;gap:14px;margin-bottom:12px;background:#fff}
.dl-card .dl-ic{width:44px;height:44px;border-radius:12px;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:#fff}
.dl-card .dl-mid{flex:1;min-width:0}
.dl-card .dl-t{font-weight:700;font-size:15px}
.dl-card .dl-s{font-size:12px;color:var(--muted);margin-top:2px}
.dl-card .dl-price{font-size:14px;font-weight:700;color:var(--gold);flex-shrink:0}
.dl-card .dl-btn{flex-shrink:0}
.dl-card.dl-free{background:#F8FAFC;border-color:#E2E8F0}
.dl-card.dl-free .dl-btn{background:#E2E8F0;color:#334155}
.dl-card.dl-hot{border-color:#FDE68A;background:#FFFDF5}
.free-tip{font-size:12px;color:var(--muted);text-align:center;padding:6px 0 2px}
.dl-progress{background:#F8FAFC;border:1px solid #E2E8F0;border-radius:14px;padding:14px 16px;margin-bottom:12px}
.dl-progress .dp-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;font-size:14px;font-weight:700}
.dl-progress .dp-cancel{border:none;background:#F1F5F9;color:#64748B;border-radius:9px;padding:6px 14px;font-size:13px;cursor:pointer}
.dl-progress .dp-cancel:active{transform:scale(.96)}
.dl-progress .bar{height:8px;border-radius:4px;background:#E2E8F0;overflow:hidden}
.dl-progress .bar i{display:block;height:100%;border-radius:4px;background:linear-gradient(90deg,#2563EB,#06B6D4);transition:width .2s ease}
.dl-progress .dp-meta{display:flex;justify-content:space-between;margin-top:8px;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.vip-flag{display:flex;align-items:center;gap:8px;background:#FFF7E6;border:1px solid #FDE68A;color:#92400E;border-radius:12px;padding:10px 14px;font-size:13px;margin-bottom:14px}

/* ---------- 支付弹窗 ---------- */
.pay-methods{display:flex;gap:10px;margin-bottom:16px}
.pay-method{flex:1;border:1.5px solid var(--line);border-radius:12px;padding:12px 8px;text-align:center;cursor:pointer;font-size:13px;font-weight:600;color:var(--muted);transition:all .15s}
.pay-method.active{border-color:var(--primary);color:var(--primary);background:#EEF2FF}
.qr-box{display:flex;flex-direction:column;align-items:center;padding:10px 0}
.qr-box canvas,.qr-box img{border-radius:10px;border:1px solid var(--line)}
.qr-tip{font-size:13px;color:var(--muted);margin-top:12px;text-align:center}
.pay-status{display:flex;align-items:center;gap:10px;background:#F0FDF4;border:1px solid #BBF7D0;color:#166534;border-radius:12px;padding:12px 14px;font-size:14px;font-weight:600}

/* ---------- 预览 ---------- */
.preview-wrap{display:flex;flex-direction:column;align-items:center;min-height:200px;justify-content:center;gap:12px}
.preview-wrap img{max-width:100%;max-height:62vh;border-radius:12px}
.preview-wrap video{max-width:100%;max-height:62vh;border-radius:12px;background:#000}
.preview-wrap audio{width:100%}
.preview-wrap iframe{width:100%;height:62vh;border:none;border-radius:12px;background:#fff}
.preview-wrap pre{width:100%;max-height:62vh;overflow:auto;background:#0F172A;color:#E2E8F0;border-radius:12px;padding:16px;font-size:13px;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;white-space:pre-wrap;word-break:break-all;margin:0}
.preview-load{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:14px}

/* ---------- 登录页 ---------- */
.auth-wrap{max-width:420px;margin:0 auto;padding:40px 16px}
.auth-logo{width:60px;height:60px;border-radius:18px;background:var(--grad);display:flex;align-items:center;justify-content:center;color:#fff;margin:0 auto 14px}
.auth-title{text-align:center;font-size:22px;font-weight:800;margin-bottom:6px}
.auth-sub{text-align:center;color:var(--muted);font-size:13px;margin-bottom:26px}
.auth-tabs{display:flex;background:#EDF1F7;border-radius:12px;padding:4px;margin-bottom:20px}
.auth-tab{flex:1;text-align:center;padding:9px 0;border-radius:9px;font-weight:600;font-size:14px;color:var(--muted);cursor:pointer;transition:all .15s}
.auth-tab.active{background:#fff;color:var(--primary);box-shadow:0 1px 4px rgba(15,23,42,.08)}

/* ---------- VIP 横幅 ---------- */
.vip-banner{display:flex;align-items:center;gap:12px;background:linear-gradient(135deg,#F59E0B,#F97316);color:#fff;border-radius:var(--radius);padding:14px 16px;margin-bottom:16px;box-shadow:var(--shadow)}
.vip-banner .vb-icon{width:38px;height:38px;border-radius:11px;background:rgba(255,255,255,.22);display:flex;align-items:center;justify-content:center}
.vip-banner .vb-mid{flex:1}
.vip-banner .vb-t{font-weight:700;font-size:15px}
.vip-banner .vb-s{font-size:12px;opacity:.92}
.vip-banner .vb-btn{background:#fff;color:#B45309;border-radius:10px;padding:8px 16px;font-weight:700;font-size:13px}

/* ---------- 页脚 ---------- */
.footer{text-align:center;color:#94A3B8;font-size:12px;padding:22px 16px 30px}

/* 骨架屏 */
.skel{background:linear-gradient(90deg,#EDF1F7 25%,#F8FAFC 50%,#EDF1F7 75%);background-size:200% 100%;animation:sk 1.2s infinite;border-radius:10px}
@keyframes sk{0%{background-position:200% 0}100%{background-position:-200% 0}}
