:root{
  --primary:#FE2C55;
  --primary-soft:#ffe6ec;
  --ink:#1d2330;
  --muted:#8a93a6;
  --line:#eceef3;
  --bg:#f5f6f8;
  --ok:#2bb673;
  --card-radius:18px;
  --sidebar-w:230px;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
/* 全局隐藏滚动条（保留滚动能力） */
html,body{scrollbar-width:none;-ms-overflow-style:none;}
::-webkit-scrollbar{width:0;height:0;display:none;}
body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Helvetica Neue",Arial,sans-serif;color:var(--ink);}
button{font-family:inherit;cursor:pointer;border:none;outline:none;}
input,textarea,select{font-family:inherit;}
svg{width:100%;height:100%;display:block;}

/* ============ 图标通用 ============ */
.brand-logo,.side-logo-ico,.top-logo,.top-avatar,.stat-ico,.mi-ico,.mini-btn,
.menu-btn,.cover-placeholder,.lf-ico,.login-logo,.side-logo-ico,.top-avatar{
  display:inline-flex;align-items:center;justify-content:center;
}
.side-logo-ico{width:28px;height:28px;color:#fff;}
.top-logo{width:24px;height:24px;color:var(--primary);}
.top-avatar{width:34px;height:34px;border-radius:10px;background:var(--bg);color:var(--muted);padding:7px;}
.brand-logo{width:20px;height:20px;color:#fff;}
.stat-ico{width:22px;height:22px;color:var(--primary);}
.mi-ico{width:20px;height:20px;}
.mini-btn svg{width:18px;height:18px;}
.menu-btn{width:40px;height:40px;border-radius:10px;background:var(--bg);color:var(--ink);padding:9px;display:none;}
.cover-placeholder svg{width:64px;height:64px;color:#c9ccd4;}
.lf-ico{width:20px;height:20px;color:var(--muted);}
.login-logo{width:46px;height:46px;color:#fff;}

/* ============ 按钮 ============ */
.btn-primary{
  background:linear-gradient(135deg,var(--primary),#ff5c7a);
  color:#fff;font-size:15px;font-weight:600;padding:12px 20px;border-radius:10px;
  box-shadow:0 8px 18px rgba(254,44,85,.22);display:inline-flex;align-items:center;justify-content:center;gap:6px;
}
.btn-primary svg{width:18px;height:18px;}
.btn-primary:active{opacity:.9;}
.btn-primary.btn-sm{padding:9px 16px;font-size:14px;}
.btn-ghost{background:#fff;color:var(--ink);border:1px solid var(--line);padding:9px 14px;border-radius:10px;font-size:14px;}

/* ============ 登录页（左右分栏 商务风） ============ */
.login-body{background:var(--bg);min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;}
.login-card{
  width:100%;max-width:680px;background:#fff;border-radius:18px;overflow:hidden;
  display:flex;box-shadow:0 24px 60px rgba(20,25,40,.16);
}
.login-aside{
  flex:0 0 40%;min-width:0;background:linear-gradient(155deg,var(--primary),#ff6f8a 60%,#ffb199);
  color:#fff;padding:38px 28px;display:flex;flex-direction:column;position:relative;overflow:hidden;
}
.login-aside h1{font-size:23px;margin:16px 0 6px;}
.login-slogan{font-size:14px;line-height:1.7;opacity:.92;margin:0;}
.login-brand{display:flex;}
.login-logo{background:rgba(255,255,255,.18);border-radius:14px;padding:8px;}
.login-deco{position:absolute;right:-30px;bottom:-30px;width:180px;height:180px;opacity:.16;color:#fff;}
.login-deco svg{width:100%;height:100%;}
.login-form{flex:1;min-width:0;padding:44px 36px;display:flex;flex-direction:column;justify-content:center;}
.login-form form{width:100%;}
.login-form h2{margin:0 0 4px;font-size:21px;}
.login-sub{color:var(--muted);margin:0 0 24px;font-size:14px;}
.lf-field{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:12px;padding:0 14px;margin-bottom:22px;background:#fafbfc;}
.lf-field input{flex:1;border:none;background:none;padding:14px 0;font-size:15px;outline:none;}
.login-btn{width:100%;}
.login-msg{color:var(--primary);font-size:13px;min-height:18px;text-align:center;margin-top:14px;}

/* ============ 后台布局 ============ */
.admin-body{background:var(--bg);}
.admin-layout{display:flex;min-height:100vh;}
.sidebar{
  flex:0 0 var(--sidebar-w);width:var(--sidebar-w);background:linear-gradient(180deg,#20232f,#171a24);
  color:#c7ccd6;display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;z-index:40;
}
.side-logo{display:flex;align-items:center;gap:10px;padding:22px 20px;color:#fff;font-size:17px;font-weight:700;}
.side-logo-ico{background:linear-gradient(135deg,var(--primary),#ff6f8a);border-radius:9px;padding:4px;}
.side-menu{flex:1;padding:8px 12px;display:flex;flex-direction:column;gap:4px;}
.menu-item{
  display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:11px;color:#c7ccd6;
  text-decoration:none;font-size:14.5px;transition:background .15s,color .15s;cursor:pointer;
}
.menu-item:hover{background:rgba(255,255,255,.06);color:#fff;}
.menu-item.active{background:rgba(254,44,85,.16);color:#fff;}
.side-foot{padding:12px;border-top:1px solid rgba(255,255,255,.07);}
.side-foot .menu-item{color:#9aa1b1;}
.side-mask{display:none;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:35;}

.main{flex:1;margin-left:var(--sidebar-w);min-width:0;display:flex;flex-direction:column;}
.topbar{
  display:flex;align-items:center;gap:12px;padding:14px 24px;background:#fff;
  border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20;
}
.top-title{display:flex;align-items:center;gap:8px;font-weight:700;font-size:16px;}
.top-user{margin-left:auto;}

.content{padding:24px;flex:1;}
.page-head{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:18px;gap:12px;}
.page-head h2{margin:0;font-size:20px;}
.page-sub{margin:4px 0 0;color:var(--muted);font-size:13px;}

/* 统计卡 */
.stats-row{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px;}
.stat-card{background:#fff;border-radius:14px;padding:18px;box-shadow:0 4px 14px rgba(20,25,40,.05);position:relative;}
.stat-ico{background:var(--primary-soft);border-radius:11px;padding:9px;width:40px;height:40px;margin-bottom:12px;}
.stat-num{font-size:26px;font-weight:800;line-height:1;}
.stat-label{font-size:13px;color:var(--muted);margin-top:6px;}
.stat-sub{font-size:12px;color:#9aa1b1;margin-top:8px;border-top:1px dashed var(--line);padding-top:8px;}

/* 面板 */
.panel{background:#fff;border-radius:14px;box-shadow:0 4px 14px rgba(20,25,40,.05);overflow:hidden;}
.panel-head{display:flex;align-items:center;gap:8px;padding:15px 18px;border-bottom:1px solid var(--line);font-weight:600;font-size:15px;}
.panel-head>span{display:inline-flex;align-items:center;gap:7px;line-height:1;}
.panel-head svg{width:18px;height:18px;color:var(--primary);flex:0 0 auto;}
.panel-body{padding:8px 0;}

/* 热门卡片 */
.top-cards{padding:6px 18px 14px;}
.top-card-row{display:flex;align-items:center;gap:12px;padding:9px 0;border-bottom:1px dashed var(--line);}
.top-card-row:last-child{border-bottom:none;}
.tcr-name{flex:0 0 180px;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.tcr-bar{flex:1;height:8px;background:var(--bg);border-radius:999px;overflow:hidden;}
.tcr-bar span{display:block;height:100%;background:linear-gradient(90deg,var(--primary),#ff8aa0);border-radius:999px;}
.tcr-num{flex:0 0 50px;text-align:right;font-weight:700;font-size:14px;color:var(--primary);}

/* 数据表 */
.data-table{width:100%;border-collapse:collapse;font-size:14px;}
.data-table th,.data-table td{padding:13px 16px;text-align:left;border-bottom:1px solid var(--line);}
.data-table th{background:#fafbfc;color:#7a8295;font-weight:600;font-size:13px;}
.data-table tr:last-child td{border-bottom:none;}
.cover-thumb{width:44px;height:44px;object-fit:cover;border-radius:9px;background:#f0f0f0;}
.cover-thumb.empty{display:flex;align-items:center;justify-content:center;color:#c9ccd4;background:var(--bg);}
.cover-thumb.empty svg{width:18px;height:18px;}
.td-title{max-width:220px;}
.short-link{color:var(--primary);font-size:13px;word-break:break-all;cursor:pointer;}
.badge{font-size:12px;padding:3px 10px;border-radius:999px;}
.badge.on{background:#e6f9ef;color:var(--ok);}
.badge.off{background:#f1f1f1;color:#999;}
.row-actions{display:flex;gap:6px;}
.mini-btn{width:34px;height:34px;border-radius:9px;border:1px solid var(--line);background:#fff;color:#566;display:inline-flex;align-items:center;justify-content:center;}
.mini-btn:hover{background:#f6f7f9;border-color:var(--primary);color:var(--primary);}
.mini-btn.danger:hover{border-color:var(--primary);color:var(--primary);}
.empty-hint{text-align:center;color:var(--muted);padding:30px;}

/* ============ 弹窗 ============ */
.modal-mask{position:fixed;inset:0;background:rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center;padding:16px;z-index:50;}
.modal{
  background:#fff;border-radius:18px;width:100%;max-width:560px;max-height:88vh;
  display:flex;flex-direction:column;overflow:hidden;
  box-shadow:0 30px 80px rgba(20,25,40,.35);
}
.modal-wide{max-width:760px;}
.modal-head{
  flex:0 0 auto;display:flex;align-items:flex-start;justify-content:space-between;gap:12px;
  padding:16px 20px;border-bottom:1px solid var(--line);font-weight:700;font-size:16px;
  background:#fff;position:relative;z-index:3;
}
.modal-sub{margin:4px 0 0;font-size:12.5px;color:var(--muted);font-weight:400;}
.modal-close{
  width:32px;height:32px;border-radius:9px;background:var(--bg);color:var(--muted);padding:7px;
  display:inline-flex;flex:0 0 auto;transition:background .2s,color .2s,transform .2s;
}
.modal-close:hover{background:var(--primary-soft);color:var(--primary);transform:rotate(90deg);}
.modal-body{
  flex:1;min-height:0;overflow-y:auto;padding:16px 20px 20px;
  display:flex;flex-direction:column;gap:16px;
}
.modal-body::-webkit-scrollbar{width:6px;}
.modal-body::-webkit-scrollbar-thumb{background:#dfe3ea;border-radius:999px;}
.modal-body::-webkit-scrollbar-thumb:hover{background:#cbd1db;}

/* 表单分区 */
.form-section{display:flex;flex-direction:column;gap:14px;padding:16px;border:1px solid var(--line);border-radius:14px;background:#fcfcfd;}
.form-section-title{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:700;color:#3d4454;letter-spacing:.3px;}
.form-section-title::before{content:"";width:3px;height:14px;border-radius:2px;background:linear-gradient(180deg,var(--primary),#ff8aa0);}
.form-hint{margin:0;font-size:12px;line-height:1.55;color:var(--muted);}

/* 分享卡片效果预览（模拟微信/抖音链接卡片） */
.share-preview{display:flex;gap:10px;padding:10px;border:1px solid var(--line);border-radius:12px;background:#fff;box-shadow:0 2px 8px rgba(20,25,40,.04);}
.sp-thumb{width:56px;height:56px;border-radius:9px;flex:0 0 auto;background:linear-gradient(135deg,#ffe6ea,#e6fbff);background-size:cover;background-position:center;display:flex;align-items:center;justify-content:center;color:#aab0bd;font-size:11px;}
.sp-info{min-width:0;display:flex;flex-direction:column;justify-content:center;gap:5px;}
.sp-title{font-size:13.5px;font-weight:600;color:#16161a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.sp-desc{font-size:11.5px;color:#9aa1b1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}

.modal-body label{display:flex;flex-direction:column;gap:7px;font-size:13px;color:#5a6273;font-weight:500;}
.modal-body label .req{color:var(--primary);font-style:normal;margin-left:2px;}
.modal-body input,.modal-body textarea,.modal-body select{
  width:100%;padding:11px 13px;border:1px solid var(--line);border-radius:10px;font-size:14px;color:var(--ink);
  background:#fff;transition:border-color .18s,box-shadow .18s,background .18s;
}
.modal-body input::placeholder,.modal-body textarea::placeholder{color:#b3b9c6;}
.modal-body input:hover,.modal-body textarea:hover,.modal-body select:hover{border-color:#d8dce5;}
.modal-body input:focus,.modal-body textarea:focus,.modal-body select:focus{
  outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(254,44,85,.12);
}
.modal-body textarea{resize:vertical;min-height:64px;line-height:1.6;}
.modal-body input:disabled{background:#f3f4f7;color:#9aa1b1;cursor:not-allowed;border-color:var(--line);}
.modal-body select{
  appearance:none;-webkit-appearance:none;cursor:pointer;padding-right:36px;
  background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238a93a6' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 12px center;background-size:14px;
}
.form-2col{display:grid;grid-template-columns:1fr 1fr;gap:12px;}

.up-row{display:flex;gap:8px;}
.up-row input{flex:1;}
.up-btn{flex:0 0 auto;white-space:nowrap;display:inline-flex;align-items:center;gap:5px;height:42px;}
.up-btn svg{width:15px;height:15px;}
.cover-preview{width:84px;height:84px;object-fit:cover;border-radius:10px;border:1px solid var(--line);margin-top:2px;}

.color-row .color-pick{display:flex;gap:10px;align-items:center;}
.color-pick input[type=color]{width:52px;height:42px;border:1px solid var(--line);border-radius:10px;padding:3px;background:#fff;cursor:pointer;}
.color-pick input[type=text]{flex:1;}

/* 胶囊选择（替代下拉） */
.chip-group{display:flex;flex-wrap:wrap;gap:8px;}
.chip{
  padding:8px 15px;border-radius:999px;background:#fff;color:#5a6273;
  font-size:13px;cursor:pointer;transition:all .18s;display:inline-flex;align-items:center;gap:5px;user-select:none;
}
.chip:hover{border-color:var(--primary);color:var(--primary);transform:translateY(-1px);}
.chip.active{background:linear-gradient(135deg,var(--primary),#ff5c7a);border-color:transparent;color:#fff;box-shadow:0 4px 12px rgba(254,44,85,.25);}
.chip:active{transform:translateY(0) scale(.97);}
.chip.sm{padding:5px 13px;font-size:12px;}

/* 卡片列表分类筛选栏 */
.filter-bar{display:flex;flex-wrap:wrap;gap:12px 24px;margin-bottom:16px;}
.filter-group{display:flex;align-items:center;gap:8px;}
.filter-label{font-size:12.5px;color:#8b9099;font-weight:500;flex:0 0 auto;}

/* 预设封面画廊 */
.cover-gallery{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-top:2px;}
.cg-item{position:relative;aspect-ratio:1/1;border-radius:10px;overflow:hidden;border:2px solid transparent;cursor:pointer;background:#f0f0f0;transition:transform .15s,border-color .15s;}
.cg-item img{width:100%;height:100%;object-fit:cover;display:block;}
.cg-item:hover{transform:translateY(-2px);}
.cg-item.active{border-color:var(--primary);box-shadow:0 0 0 3px rgba(254,44,85,.15);}
.cg-item.active::after{content:"✓";position:absolute;right:5px;top:5px;background:var(--primary);color:#fff;width:18px;height:18px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;}

/* 启用开关 */
.switch-row{
  flex-direction:row !important;align-items:center;justify-content:space-between;gap:12px;
  padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:#fcfcfd;cursor:pointer;
}
.switch-row .switch-label{font-size:14px;font-weight:600;color:var(--ink);}
.switch{position:relative;display:inline-flex;flex:0 0 auto;}
.switch input{position:absolute;inset:0;width:100%;height:100%;opacity:0;margin:0;cursor:pointer;z-index:2;padding:0;border:none;}
.switch-track{width:46px;height:26px;border-radius:999px;background:#d9dde6;transition:background .22s;display:block;position:relative;}
.switch-thumb{position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 4px rgba(0,0,0,.22);transition:transform .22s;}
.switch input:checked + .switch-track{background:linear-gradient(135deg,var(--primary),#ff5c7a);}
.switch input:checked + .switch-track .switch-thumb{transform:translateX(20px);}

.modal-foot{
  flex:0 0 auto;display:flex;justify-content:flex-end;gap:10px;padding:14px 20px;
  border-top:1px solid var(--line);background:#fff;box-shadow:0 -6px 18px rgba(20,25,40,.05);
}

/* ============ Toast ============ */
.toast{position:fixed;left:50%;bottom:40px;transform:translateX(-50%);background:rgba(20,25,40,.9);color:#fff;padding:11px 18px;border-radius:10px;font-size:14px;opacity:0;pointer-events:none;transition:opacity .25s;z-index:99;}
.toast.show{opacity:1;}

/* ============ 卡片落地页（极简跳转页） ============ */
.theme-douyin  { --src-bg:#0d0d0d; }
.theme-kuaishou{ --src-bg:#FF4906; }
.theme-xhs     { --src-bg:#FF2442; }
.theme-general { --src-bg:#1b1d23; }

.card-body{
  margin:0;min-height:100vh;background:#fff;color:#111;--accent:#07C160;
  display:flex;flex-direction:column;
  padding:calc(10px + env(safe-area-inset-top)) 22px calc(12px + env(safe-area-inset-bottom));
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
}
.jp-wrap{width:100%;max-width:420px;margin:0 auto;flex:1;display:flex;flex-direction:column;}

/* 顶部一行状态说明 */
.jp-head{flex:0 0 auto;display:flex;align-items:center;justify-content:center;gap:5px;
  padding:10px 0 0;font-size:12px;color:#b7bcc4;letter-spacing:.2px;}
.jp-head-icon{display:inline-flex;color:#c7ccd4;}
.jp-head-icon svg{width:13px;height:13px;}

/* 主区：图标对 → 标题 → 说明 → 按钮 → 二维码 */
.jp-main{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;
  text-align:center;padding:20px 0 5vh;}

.jp-pair{display:flex;align-items:center;justify-content:center;gap:13px;margin-bottom:26px;}
.jp-icon{width:58px;height:58px;border-radius:16px;display:flex;align-items:center;justify-content:center;
  overflow:hidden;color:#fff;background:var(--src-bg,#1b1d23);
  }
.jp-icon svg{width:34px;height:34px;}
.jp-icon img{width:100%;height:100%;object-fit:cover;display:block;}
.jp-icon.tgt{background:var(--accent);}
.jp-icon.is-brand{background:transparent;border-radius:12px;}
.jp-icon.is-brand svg{width:100%;height:100%;}
.jp-icon.brand-wecom{background:#fff;box-shadow:0 8px 22px -10px rgba(17,20,28,.34);}
.jp-dots{display:flex;gap:3px;}
.jp-dots i{display:block;width:4px;height:4px;border-radius:50%;background:#dfe2e7;}

.jp-title{margin:0;font-size:18px;font-weight:600;line-height:1.55;color:#0f1115;letter-spacing:.1px;word-break:break-word;}
.jp-sub{margin:9px 0 0;font-size:13px;line-height:1.8;color:#9aa0a9;word-break:break-word;text-wrap:pretty;}
.jp-paused{display:inline-block;margin-bottom:14px;padding:3px 11px;border-radius:999px;
  background:#fff8e6;border:1px solid #ffe7ba;color:#ad6800;font-size:12px;}

.jp-btn{margin-top:26px;min-width:184px;height:46px;padding:0 30px;border:0;border-radius:10px;
  background:var(--accent);color:#fff;font-family:inherit;font-size:15.5px;font-weight:600;letter-spacing:.6px;
  display:inline-flex;align-items:center;justify-content:center;
  box-shadow:0 10px 22px -12px rgba(17,20,28,.55);transition:filter .15s;}
.jp-btn:active{filter:brightness(.93);}

/* 环境提示：纯文字，不加色块 */
.guide-section{display:none;margin:16px 0 0;max-width:340px;font-size:12.5px;line-height:1.8;color:#adb3bb;text-wrap:pretty;}
.guide-section.show{display:block;}
.guide-section b{color:#6b7280;font-weight:600;}

/* 二维码：小尺寸、无装饰 */
.jp-qr{margin-top:30px;display:flex;flex-direction:column;align-items:center;}
.qr-frame{width:106px;height:106px;padding:5px;border-radius:11px;background:#fff;border:1px solid #eef0f3;}
.qr-img{width:100%;height:100%;display:block;border-radius:7px;}
.qr-fallback{width:100%;height:100%;display:flex;align-items:center;justify-content:center;
  border:1px dashed #e8eaef;border-radius:7px;color:#c2c6ce;font-size:11px;}
/* 微信个人号：突出「加好友」二维码 */
.jp-qr.add-friend .qr-frame{width:136px;height:136px;border-color:#d9f0e3;box-shadow:0 10px 26px -16px rgba(42,174,103,.55);}
.jp-qr.add-friend .qr-sub{color:#5f6b76;}
.jp-qr.add-friend .qr-sub::before{content:'';display:inline-block;width:6px;height:6px;border-radius:50%;background:#2AAE67;margin-right:6px;vertical-align:1px;}
.jp-qr-meta{display:flex;align-items:center;gap:8px;margin-top:10px;}
.qr-sub{font-size:11.5px;color:#bcc1c9;letter-spacing:.2px;}
.jp-qr-meta .jp-copy{margin:0;padding:0;border:0;background:none;color:#c6cad1;font-family:inherit;font-size:11.5px;}
.jp-copy::before{content:'·';margin-right:8px;color:#dfe2e7;}
.jp-copy:active{color:#9aa0a9;}

.jp-foot{flex:0 0 auto;padding:14px 0 4px;text-align:center;font-size:11px;color:#cdd1d8;letter-spacing:.3px;}

/* 空态 */
.jp-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:40px 0;}
.jp-empty-icon{width:52px;height:52px;color:#dfe2e7;}
.jp-empty-icon svg{width:100%;height:100%;}
.jp-empty .jp-title{margin-top:16px;}
.jp-empty .jp-sub{margin-top:6px;}

/* ============ 响应式（H5 / 移动端） ============ */
@media (max-width:900px){
  :root{--sidebar-w:0px;}
  .sidebar{transform:translateX(-100%);transition:transform .25s;width:240px;flex-basis:240px;}
  .sidebar.open{transform:translateX(0);}
  .side-mask.show{display:block;}
  .main{margin-left:0;}
  .menu-btn{display:inline-flex;}
  .stats-row{grid-template-columns:repeat(2,1fr);}
  .content{padding:16px;}
  .page-head{flex-direction:column;align-items:flex-start;gap:12px;}
  .login-card{flex-direction:column;max-width:420px;}
  .login-aside{padding:32px 28px;}
  .login-form{padding:32px 26px;}
  .td-title{max-width:120px;}
  .tcr-name{flex-basis:110px;}
  .data-table th:nth-child(6),.data-table td:nth-child(6){display:none;}
}

/* ============ 动效层 ============ */
@keyframes fadeUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}
@keyframes popIn{from{opacity:0;transform:scale(.92)}to{opacity:1;transform:none}}
@keyframes floatY{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
@keyframes breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.03)}}
@keyframes pulseGlow{0%,100%{box-shadow:0 8px 18px rgba(254,44,85,.22)}50%{box-shadow:0 10px 28px rgba(254,44,85,.42)}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes maskIn{from{opacity:0}to{opacity:1}}
@keyframes modalPop{from{opacity:0;transform:translateY(22px) scale(.96)}to{opacity:1;transform:none}}
@keyframes slideDown{from{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:none}}
@keyframes ripple{to{transform:scale(4);opacity:0}}
@keyframes barGrow{from{width:0 !important}}

.anim-up{animation:fadeUp .6s cubic-bezier(.22,.61,.36,1) both}
.anim-pop{animation:popIn .45s cubic-bezier(.22,.61,.36,1) both}
.delay-1{animation-delay:.08s}.delay-2{animation-delay:.16s}.delay-3{animation-delay:.24s}.delay-4{animation-delay:.32s}

/* 按钮交互增强 */
.btn-primary{transition:transform .15s,box-shadow .2s,filter .2s;position:relative;overflow:hidden}
.btn-primary:hover{transform:translateY(-2px);box-shadow:0 12px 26px rgba(254,44,85,.32);filter:brightness(1.03)}
.btn-primary:active{transform:translateY(0) scale(.98)}
.btn-ghost{transition:transform .15s,border-color .2s,color .2s,background .2s;position:relative;overflow:hidden}
.btn-ghost:hover{transform:translateY(-1px);border-color:var(--primary);color:var(--primary)}
.cta-pulse{animation:pulseGlow 2.2s ease-in-out infinite}
.ripple-dot{position:absolute;border-radius:50%;background:rgba(255,255,255,.55);transform:scale(0);animation:ripple .6s linear;pointer-events:none;z-index:2}

/* 卡片落地页动效（克制，只做轻微上浮淡入） */
.jp-main{animation:fadeUp .5s cubic-bezier(.22,.61,.36,1) both}
.jp-pair{animation:popIn .45s cubic-bezier(.22,.61,.36,1) both}
.jp-btn{animation:fadeUp .5s .06s cubic-bezier(.22,.61,.36,1) both}
.jp-qr{animation:fadeUp .5s .1s cubic-bezier(.22,.61,.36,1) both}
.card-foot{animation:fadeUp .6s .2s both}

/* 登录页动效 */
.login-card{animation:fadeUp .6s cubic-bezier(.22,.61,.36,1) both}
.login-logo{animation:floatY 3.2s ease-in-out infinite}
.login-deco{animation:spin 46s linear infinite;transform-origin:center}
.lf-field{transition:border-color .2s,box-shadow .2s,background .2s}
.lf-field:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px rgba(254,44,85,.12);background:#fff}

/* 后台动效 */
.view{animation:fadeUp .4s both}
.admin-body .stat-card{animation:fadeUp .5s both}
.admin-body .panel{animation:fadeUp .5s .08s both}
.modal-mask{animation:maskIn .2s ease both}
.modal{animation:modalPop .3s cubic-bezier(.22,.61,.36,1) both;transform-origin:center}
.data-table tbody tr{animation:fadeUp .4s both}
.data-table tbody tr:nth-child(2){animation-delay:.05s}
.data-table tbody tr:nth-child(3){animation-delay:.1s}
.data-table tbody tr:nth-child(4){animation-delay:.15s}
.data-table tbody tr:nth-child(5){animation-delay:.2s}
.data-table tbody tr:nth-child(6){animation-delay:.25s}
.data-table tbody tr:nth-child(7){animation-delay:.3s}
.data-table tbody tr:nth-child(8){animation-delay:.35s}
.data-table tbody tr:nth-child(n+9){animation-delay:.4s}
.top-card-row .tcr-bar span{transition:width .9s cubic-bezier(.22,.61,.36,1)}
.stat-ico{transition:transform .3s}
.stat-card:hover .stat-ico{transform:scale(1.12) rotate(-6deg)}
.side-menu .menu-item:hover{transform:translateX(2px)}
.mini-btn{transition:transform .15s,background .2s,border-color .2s,color .2s}
.mini-btn:hover{transform:translateY(-2px)}

/* 数字滚动 */
.stat-num.counting{font-variant-numeric:tabular-nums}

/* 尊重无障碍：减弱动效 */
@media (prefers-reduced-motion:reduce){
  *{animation:none !important;transition:none !important}
}

@media (max-width:520px){
  .form-2col{grid-template-columns:1fr;}
  .modal-body{padding:14px;}
  .modal-head{padding:14px 16px;}
  .modal-foot{padding:12px 14px;}
  .up-row{flex-wrap:wrap;}
  .up-row input{flex:1 1 100%;}
  .up-btn{flex:1 1 100%;justify-content:center;}
  .cover-gallery{grid-template-columns:repeat(6,1fr);gap:5px;}
  .chip-group{gap:6px;}
  .chip{padding:7px 12px;font-size:12.5px;}
}

/* ============ 卡片弹窗：左表单 + 右预览 ============ */
.modal-card{max-width:1000px;}
.modal-split{display:flex;flex:1;min-height:0;}
.modal-card .modal-body{flex:1 1 auto;min-width:0;}

.mc-side{
  flex:0 0 44%;max-width:410px;min-width:320px;
  border-left:1px solid var(--line);background:#f7f8fb;
  padding:16px;overflow-y:auto;display:flex;flex-direction:column;gap:18px;
}
.mc-side::-webkit-scrollbar{width:6px;}
.mc-side::-webkit-scrollbar-thumb{background:#dfe3ea;border-radius:999px;}
.mc-side::-webkit-scrollbar-thumb:hover{background:#cbd1db;}

.pv-label{display:flex;align-items:center;gap:7px;font-size:12.5px;font-weight:700;color:#3d4454;letter-spacing:.3px;}
.pv-label::before{content:"";width:3px;height:12px;border-radius:2px;background:linear-gradient(180deg,var(--primary),#ff8aa0);}
.pv-tip{margin:5px 0 10px;font-size:11.5px;color:var(--muted);}

/* 真实预览：iframe 直接渲染 */
.pv-frame{
  display:block;border:0;background:#fff;width:100%;
  border-radius:12px;border:1px solid var(--line);box-shadow:0 4px 14px rgba(20,25,40,.06);
}
.pv-frame-share{height:96px;}

/* 落地页预览：手机框等比缩小，最宽 300px，比例锁定 1320:2868（竖屏，即你给的 2868×1320 分辨率）；iframe 100% 填满，内容随之等比缩小 */
.pv-phone{
  position:relative;display:flex;width:100%;max-width:300px;margin:0 auto;
  aspect-ratio:110 / 239;
  border-radius:32px;background:#11141a;padding:9px;overflow:hidden;
  box-shadow:0 14px 34px rgba(20,25,40,.20),0 0 0 1px rgba(255,255,255,.08) inset;
}
.pv-notch{
  position:absolute;top:13px;left:50%;transform:translateX(-50%);
  width:52px;height:5px;border-radius:999px;background:#3a3f47;z-index:3;pointer-events:none;
}
.pv-frame-land{
  position:static;flex:1 1 auto;align-self:stretch;
  width:100%;height:100%;min-width:0;min-height:0;
  border:none;border-radius:24px;box-shadow:none;background:#fff;
}
@media (max-width:900px){
  .pv-phone{aspect-ratio:auto;display:block;width:100%;}
  .pv-frame-land{height:460px;border-radius:18px;}
}

@media (max-width:900px){
  .modal-card{max-width:560px;}
  .modal-split{display:block;overflow-y:auto;}
  .modal-card .modal-body{overflow:visible;}
  .mc-side{max-width:none;min-width:0;border-left:none;border-top:1px solid var(--line);}
}
