/* ============================================================
 * 陪跑馆28天短视频计划任务看板 —— 淡紫色系设计系统
 * ============================================================ */
:root{
  --bg:#F6F4FF;
  --bg-grad-1:#F3EFFF;
  --bg-grad-2:#FBF7FF;
  --bg-grad-3:#EFF1FF;
  --card:#FFFFFF;
  --card-soft:#FAF8FF;
  --primary:#7B5CE7;
  --primary-2:#9B7DF0;
  --primary-dark:#5B3FC4;
  --primary-soft:#EFEAFF;
  --accent:#C062D8;
  --text:#2C2542;
  --text-2:#6E6890;
  --text-3:#A29CBD;
  --border:#E9E3FA;
  --border-2:#F1EDFD;
  --ok:#3FBFA0;
  --warn:#E8964A;
  --shadow-sm:0 2px 8px rgba(123,92,231,.06);
  --shadow:0 6px 24px rgba(123,92,231,.10);
  --shadow-lg:0 14px 44px rgba(123,92,231,.16);
  --r-sm:10px;
  --r:16px;
  --r-lg:22px;
  --max:1080px;
}

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0}
body{
  font-family:"PingFang SC","Hiragino Sans GB","Microsoft YaHei",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  color:var(--text);
  background:var(--bg);
  background-image:
    radial-gradient(1000px 620px at 8% -8%, #E4DBFF 0%, transparent 62%),
    radial-gradient(880px 560px at 100% 0%, #F6E4FF 0%, transparent 58%),
    radial-gradient(900px 700px at 50% 110%, #E2E8FF 0%, transparent 60%);
  background-attachment:fixed;
  min-height:100vh;
  font-size:15.5px;
  line-height:1.72;
  -webkit-font-smoothing:antialiased;
}
a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
input,textarea,select{font-family:inherit;font-size:14.5px;color:var(--text)}
::selection{background:#DCD0FF}

/* ---------- 布局 ---------- */
.wrap{max-width:var(--max);margin:0 auto;padding:0 16px}
.section{margin-bottom:22px}
.sec-head{display:flex;align-items:center;gap:12px;margin:0 0 12px;flex-wrap:wrap}
.sec-title{display:inline-flex;align-items:center;gap:7px;font-size:16.5px;font-weight:700;letter-spacing:.3px;white-space:nowrap}
.sec-title .ic,.sec-title svg{width:17px;height:17px;color:var(--primary);flex:none;display:inline-block}
.sec-sub{font-size:13px;color:var(--text-3);white-space:nowrap}

/* ---------- 顶栏 ---------- */
.topbar{
  position:sticky;top:0;z-index:50;
  backdrop-filter:saturate(180%) blur(14px);
  -webkit-backdrop-filter:saturate(180%) blur(14px);
  background:rgba(255,255,255,.72);
  border-bottom:1px solid var(--border-2);
}
.topbar-in{max-width:var(--max);margin:0 auto;padding:11px 16px;display:flex;align-items:center;gap:11px}
.logo{
  width:38px;height:38px;border-radius:12px;flex:none;
  background:linear-gradient(140deg,var(--primary) 0%,var(--accent) 100%);
  display:flex;align-items:center;justify-content:center;color:#fff;
  box-shadow:0 4px 14px rgba(123,92,231,.34);
}
.logo svg{width:21px;height:21px}
.brand{flex:1;min-width:0}
.brand h1{margin:0;font-size:16.5px;font-weight:800;letter-spacing:.2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.brand p{margin:1px 0 0;font-size:12.5px;color:var(--text-3);letter-spacing:1.4px}
.topbar-act{display:flex;gap:7px;flex:none}
.icon-btn{
  width:35px;height:35px;border-radius:11px;display:flex;align-items:center;justify-content:center;
  background:var(--primary-soft);color:var(--primary);transition:.18s;
}
.icon-btn:hover{background:var(--primary);color:#fff;transform:translateY(-1px)}
.icon-btn svg{width:17px;height:17px}

/* 移动端顶栏留位更多，挤掉 logo 区域 */
@media (max-width:480px){
  .topbar-in{padding:9px 12px;gap:8px}
  .logo{width:34px;height:34px}
  .logo svg{width:19px;height:19px}
  .brand h1{font-size:13.5px}
  .brand p{font-size:10.5px;letter-spacing:1px}
  .icon-btn{width:32px;height:32px;border-radius:10px}
  .icon-btn svg{width:15.5px;height:15.5px}
}

/* ---------- 卡片 ---------- */
.card{
  background:var(--card);border:1px solid var(--border-2);
  border-radius:var(--r-lg);box-shadow:var(--shadow);padding:18px;
}
.card-flat{background:var(--card);border:1px solid var(--border-2);border-radius:var(--r);box-shadow:var(--shadow-sm);padding:14px}

/* ---------- 顶部紫色进度总览（只装陪跑条，回归紫底白字"份量感"） ---------- */
.hero{
  position:relative;overflow:hidden;
  background:linear-gradient(135deg,#7B5CE7 0%,#9366E4 45%,#B762D8 100%);
  border-radius:var(--r-lg);padding:18px 18px 16px;color:#fff;
  box-shadow:0 16px 40px rgba(123,92,231,.30);
  margin:18px 0 22px;
}
.hero::after{
  content:"";position:absolute;right:-70px;top:-90px;width:250px;height:250px;border-radius:50%;
  background:rgba(255,255,255,.13);
}
.hero::before{
  content:"";position:absolute;right:34px;bottom:-108px;width:180px;height:180px;border-radius:50%;
  background:rgba(255,255,255,.09);
}

/* ---------- 陪跑天数对比（紫色 hero 内的白色玻璃卡） ---------- */
.journey{
  position:relative;z-index:2;
  background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.22);
  border-radius:15px;padding:14px 15px 12px;
}
.jn-main{display:flex;align-items:center;gap:8px;flex-wrap:wrap;line-height:1.35;margin-bottom:9px;font-weight:600}
.jn-ic{
  width:30px;height:30px;border-radius:10px;flex:none;
  background:rgba(255,255,255,.22);color:#fff;
  display:flex;align-items:center;justify-content:center;
}
.jn-ic svg{width:16px;height:16px}
.jn-seg{font-size:15px;font-weight:600;letter-spacing:.2px;color:#fff}
.jn-seg b{font-size:28px;font-weight:800;margin:0 3px;letter-spacing:-.5px;color:#fff;display:inline-block;vertical-align:-2px}
.jn-left{opacity:.92}
.jn-slash{opacity:.55;font-size:18px;font-weight:300;color:#fff;margin:0 2px}
.jn-track{
  position:relative;height:9px;border-radius:99px;margin:8px 0 9px;
  background:rgba(255,255,255,.24);overflow:visible;
}
.jn-fill{
  height:100%;width:0;border-radius:99px;
  background:linear-gradient(90deg,#fff,rgba(255,255,255,.82));
  box-shadow:0 0 12px rgba(255,255,255,.55);
  transition:width 1.2s cubic-bezier(.2,.8,.25,1);
}
.jn-flag{position:absolute;right:-3px;top:50%;transform:translateY(-50%);color:#fff;opacity:.85}
.jn-flag svg{width:14px;height:14px;display:block}
.jn-msg{font-size:13px;color:#fff;line-height:1.65}
.jn-msg b{font-weight:800;color:#fff}

/* ---------- 任务类型标签 ---------- */
.tag{
  display:inline-flex;align-items:center;gap:4px;font-size:11.5px;font-weight:700;
  padding:3px 9px;border-radius:99px;line-height:1.6;white-space:nowrap;
}
.tag i{width:5px;height:5px;border-radius:50%;background:currentColor;flex:none}
.tags{display:flex;flex-wrap:wrap;gap:5px}

/* ---------- 今日任务 ---------- */
.today{
  position:relative;background:var(--card);border-radius:var(--r-lg);
  border:1px solid var(--border-2);box-shadow:var(--shadow);overflow:hidden;
}
.today-strip{height:4px;background:linear-gradient(90deg,var(--primary),var(--accent))}
.today-body{padding:18px}
.today-head{display:flex;align-items:flex-start;gap:13px;margin-bottom:12px}
.daybadge{
  flex:none;width:56px;border-radius:14px;background:linear-gradient(150deg,var(--primary-soft),#F8EEFF);
  border:1px solid var(--border);text-align:center;padding:7px 0 6px;
}
.daybadge b{display:block;font-size:24px;font-weight:800;color:var(--primary-dark);line-height:1.1}
.daybadge span{display:block;font-size:11px;color:var(--text-3);letter-spacing:.6px}
.today-meta{flex:1;min-width:0}
.today-date{font-size:13.5px;color:var(--text-3);margin-bottom:5px;display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.today-title{margin:0 0 8px;font-size:20px;font-weight:800;line-height:1.4;letter-spacing:-.2px}
.today-text{color:var(--text-2);font-size:15px;white-space:pre-wrap;margin:0 0 14px;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:7px;
  padding:11px 18px;border-radius:13px;font-size:14.5px;font-weight:700;transition:.18s;
}
.btn svg{width:16px;height:16px}
.btn-primary{background:linear-gradient(135deg,var(--primary),var(--accent));color:#fff;box-shadow:0 6px 18px rgba(123,92,231,.30)}
.btn-primary:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(123,92,231,.38)}
.btn-ghost{background:var(--primary-soft);color:var(--primary)}
.btn-ghost:hover{background:#E4DBFF}
.btn-line{background:#fff;border:1px solid var(--border);color:var(--text-2)}
.btn-line:hover{border-color:var(--primary);color:var(--primary)}
.btn-block{width:100%}
.btn-sm{padding:8px 13px;font-size:13px;border-radius:11px}
.btn:disabled{opacity:.45;cursor:not-allowed;transform:none!important;box-shadow:none!important}

/* 未解锁 */
.locked-box{text-align:center;padding:30px 18px}
.lock-ic{
  width:56px;height:56px;border-radius:19px;margin:0 auto 13px;
  background:linear-gradient(150deg,var(--primary-soft),#F7EDFF);
  display:flex;align-items:center;justify-content:center;color:var(--primary)
}
.lock-ic svg{width:25px;height:25px}
.locked-box h3{margin:0 0 6px;font-size:17px;font-weight:800}
.locked-box p{margin:0 0 14px;font-size:14px;color:var(--text-2)}
.countdown{display:inline-flex;gap:6px;align-items:center}
.cd-box{
  min-width:48px;background:var(--card-soft);border:1px solid var(--border);
  border-radius:11px;padding:7px 8px;text-align:center;
}
.cd-box b{display:block;font-size:20px;font-weight:800;color:var(--primary-dark);line-height:1.15;font-variant-numeric:tabular-nums}
.cd-box span{font-size:10.5px;color:var(--text-3)}

/* ---------- 日历看板 ---------- */
.filters{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.chip{
  font-size:13px;font-weight:600;padding:6px 14px;border-radius:99px;
  background:#fff;border:1px solid var(--border);color:var(--text-2);transition:.16s;
}
.chip:hover{border-color:var(--primary-2);color:var(--primary)}
.chip.on{background:var(--primary);border-color:var(--primary);color:#fff;box-shadow:0 4px 12px rgba(123,92,231,.26)}
.chip.on.c-custom{color:#fff}

/* ---------- 方案B：近7天横滑大卡 + 整月小格 ---------- */
.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:9px}
.cal-wd{
  text-align:center;font-size:12px;color:var(--text-3);font-weight:700;letter-spacing:1px;padding-bottom:2px;
}
.cell{
  position:relative;background:var(--card);border:1px solid var(--border-2);border-radius:14px;
  padding:9px 8px 8px;min-height:96px;display:flex;flex-direction:column;gap:6px;
  box-shadow:var(--shadow-sm);transition:.18s;overflow:hidden;text-align:left;
}
.cell:not(.lock):hover{transform:translateY(-3px);box-shadow:var(--shadow-lg);border-color:#DCD1FA}
.cell .cell-bar{position:absolute;left:0;top:0;bottom:0;width:3px;border-radius:3px 0 0 3px}
.cell-top{display:flex;align-items:center;justify-content:space-between;gap:4px}
.cell-d{font-size:17px;font-weight:800;color:var(--text);line-height:1.1}
.cell-date{font-size:11px;color:var(--text-3);font-weight:600}
.cell-t{
  font-size:12.5px;color:var(--text-2);line-height:1.45;font-weight:600;flex:1;
  display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;
}
.cell-tag{font-size:10.5px;font-weight:700;padding:2px 7px;border-radius:99px;align-self:flex-start;line-height:1.6}
.cell.today-cell{border-color:var(--primary);box-shadow:0 0 0 3px rgba(123,92,231,.13),var(--shadow)}
.cell.today-cell .cell-d{color:var(--primary-dark)}
.cell.lock{background:linear-gradient(160deg,#FBFAFF,#F6F3FF);cursor:not-allowed}
.cell.lock .cell-d,.cell.lock .cell-date{color:var(--text-3)}
.cell.lock .cell-lockic{flex:1;display:flex;align-items:center;justify-content:center;color:#C9C0E8}
.cell.lock .cell-lockic svg{width:19px;height:19px}
.cell.dim{opacity:.32;filter:grayscale(.4)}
.done-mark{
  position:absolute;right:7px;top:7px;width:17px;height:17px;border-radius:50%;
  background:var(--ok);color:#fff;display:flex;align-items:center;justify-content:center;
  box-shadow:0 2px 6px rgba(63,191,160,.4)
}
.done-mark svg{width:10px;height:10px}
.today-pill{
  position:absolute;right:6px;top:6px;font-size:9.5px;font-weight:800;letter-spacing:.5px;
  background:var(--primary);color:#fff;padding:2px 7px;border-radius:99px;
}

/* ---------- 详情页 ---------- */
.detail-hero{
  background:linear-gradient(135deg,#7B5CE7,#A163DE 55%,#C062D8);
  border-radius:var(--r-lg);padding:22px 20px;color:#fff;margin:18px 0 18px;
  box-shadow:0 16px 40px rgba(123,92,231,.28);position:relative;overflow:hidden;
}
.detail-hero::after{content:"";position:absolute;right:-60px;top:-80px;width:220px;height:220px;border-radius:50%;background:rgba(255,255,255,.12)}
.dh-row{position:relative;z-index:2}
.dh-no{
  display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:700;letter-spacing:1.2px;
  background:rgba(255,255,255,.2);border:1px solid rgba(255,255,255,.28);padding:4px 12px;border-radius:99px;
  margin-bottom:11px;white-space:nowrap;max-width:100%;min-width:0;
}
.dh-no>span{display:inline-block;flex:0 0 auto;white-space:nowrap}
.dh-ic{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;flex:none}
.dh-ic svg{width:14px;height:14px;display:block}
.dh-title{margin:0 0 11px;font-size:25px;font-weight:800;line-height:1.35;letter-spacing:-.3px}
.dh-tags{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:11px}
.dh-tag{font-size:12px;font-weight:700;background:rgba(255,255,255,.22);border:1px solid rgba(255,255,255,.3);padding:3px 11px;border-radius:99px}
.dh-meta{font-size:13.5px;opacity:.9;display:flex;gap:14px;flex-wrap:wrap}

.block{
  background:var(--card);border:1px solid var(--border-2);border-radius:var(--r);
  box-shadow:var(--shadow-sm);padding:16px 17px;margin-bottom:13px;
}
.block-h{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.block-ic{
  width:29px;height:29px;border-radius:9px;display:flex;align-items:center;justify-content:center;flex:none;
}
.block-ic svg{width:15px;height:15px}
.block-h h3{margin:0;font-size:15.5px;font-weight:800;letter-spacing:.2px}
.block-body{font-size:15px;line-height:1.85;color:var(--text-2);white-space:pre-wrap;word-break:break-word}
.block.warn-block{background:linear-gradient(160deg,#FFFBF5,#FFF7EE);border-color:#FAE7D0}
.block.warn-block .block-body{color:#7A5A34}

.samples{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:11px}
.sample{
  border:1px solid var(--border);border-radius:13px;overflow:hidden;background:var(--card-soft);transition:.18s;
}
.sample:hover{transform:translateY(-2px);box-shadow:var(--shadow);border-color:#D9CEF8}
.sample-media{width:100%;aspect-ratio:3/4;object-fit:cover;display:block;background:#EFEAFF}
.sample video.sample-media{object-fit:contain;background:#1a1626}
.sample-link{
  aspect-ratio:3/4;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;
  background:linear-gradient(150deg,var(--primary-soft),#F8EEFF);color:var(--primary);padding:12px;text-align:center;
}
.sample-link svg{width:26px;height:26px}
.sample-link span{font-size:12.5px;font-weight:700;word-break:break-all;line-height:1.5}
.sample-cap{padding:8px 10px;font-size:12.5px;color:var(--text-2);line-height:1.5}

.dnav{display:flex;gap:9px;margin:18px 0 30px}
.dnav .btn{flex:1}

/* ---------- 后台 · 站点设置卡 ---------- */
.settings-card{margin-bottom:16px}
.settings-head{display:flex;align-items:center;gap:9px;margin-bottom:14px}
.settings-head h3{margin:0;font-size:16px;font-weight:800}
.settings-head .sh-ic{
  width:32px;height:32px;border-radius:10px;flex:none;
  background:linear-gradient(135deg,#EFEAFF,#FBEBFF);color:var(--primary);
  display:flex;align-items:center;justify-content:center;
}
.settings-head .sh-ic svg{width:17px;height:17px}
.settings-head .hint{color:var(--text-3);font-size:12.5px;margin-left:auto;text-align:right;flex:none}
.settings-grid{display:grid;grid-template-columns:1.15fr 1fr;gap:18px}
@media (max-width:720px){.settings-grid{grid-template-columns:1fr}}
.settings-card .field{margin-bottom:0}
.settings-card input[type=date].inp{padding:8px 11px}
.settings-card input.time{width:60px;text-align:center;padding:9px 6px}
.settings-time{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.settings-time .time-colon{font-weight:800;color:var(--text-2);font-size:18px}
.settings-note{font-size:12.5px;color:var(--text-3);margin-top:9px;line-height:1.6}
.settings-row{display:flex;gap:14px;flex-wrap:wrap;margin-top:11px;font-size:12.5px;color:var(--text-2)}
.settings-row .kv b{color:var(--primary-dark);font-weight:800;margin-right:2px}
.settings-row .kv i{font-style:normal}

/* ---------- 后台 ---------- */
.admin-grid{display:grid;grid-template-columns:250px 1fr;gap:16px;align-items:start}
.adm-list{
  background:var(--card);border:1px solid var(--border-2);border-radius:var(--r);
  box-shadow:var(--shadow-sm);padding:9px;max-height:76vh;overflow:auto;position:sticky;top:74px;
}
.adm-item{
  width:100%;text-align:left;display:flex;align-items:center;gap:9px;padding:9px 11px;border-radius:11px;
  font-size:13.5px;transition:.14s;margin-bottom:2px;
}
.adm-item:hover{background:var(--card-soft)}
.adm-item.on{background:var(--primary-soft);color:var(--primary-dark);font-weight:700}
.adm-item .n{
  width:25px;height:25px;flex:none;border-radius:8px;background:var(--card-soft);border:1px solid var(--border);
  display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;color:var(--text-2)
}
.adm-item.on .n{background:var(--primary);border-color:var(--primary);color:#fff}
.adm-item .t{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.adm-item .dt{font-size:11px;color:var(--text-3);flex:none}

.field{margin-bottom:14px}
.field label{display:block;font-size:13px;font-weight:700;color:var(--text-2);margin-bottom:6px;letter-spacing:.3px}
.field .hint{font-size:12px;color:var(--text-3);font-weight:500;margin-left:6px}
.inp,.ta{
  width:100%;padding:10px 13px;border:1px solid var(--border);border-radius:11px;background:var(--card-soft);
  transition:.16s;line-height:1.7;outline:none;resize:vertical;
}
.inp:focus,.ta:focus{border-color:var(--primary-2);background:#fff;box-shadow:0 0 0 3px rgba(123,92,231,.11)}
.ta{min-height:92px}
.checks{display:flex;flex-wrap:wrap;gap:8px}
.chk{
  display:inline-flex;align-items:center;gap:7px;padding:8px 14px;border-radius:11px;
  border:1.5px solid var(--border);background:#fff;font-size:13.5px;font-weight:600;cursor:pointer;transition:.16s;user-select:none;
}
.chk input{display:none}
.chk .box{
  width:16px;height:16px;border-radius:5px;border:1.5px solid #D5CCF0;display:flex;align-items:center;justify-content:center;
  transition:.14s;flex:none;color:#fff
}
.chk .box svg{width:10px;height:10px;opacity:0;transition:.14s}
.chk.on .box svg{opacity:1}

.uploads{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px;margin-top:10px}
.up-item{position:relative;border:1px solid var(--border);border-radius:12px;overflow:hidden;background:var(--card-soft)}
.up-item img,.up-item video{width:100%;aspect-ratio:3/4;object-fit:cover;display:block}
.up-item .lk{aspect-ratio:3/4;display:flex;align-items:center;justify-content:center;padding:9px;font-size:11.5px;color:var(--primary);word-break:break-all;text-align:center;background:var(--primary-soft)}
.up-del{
  position:absolute;right:5px;top:5px;width:22px;height:22px;border-radius:50%;background:rgba(20,12,40,.62);
  color:#fff;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(4px)
}
.up-del svg{width:11px;height:11px}
.up-cap{padding:6px 8px;font-size:11.5px;color:var(--text-2);border-top:1px solid var(--border-2)}
.up-cap input{width:100%;border:none;background:transparent;font-size:11px;outline:none}
.dropzone{
  border:1.6px dashed #D5CCF0;border-radius:13px;padding:18px;text-align:center;color:var(--text-3);
  font-size:13.5px;transition:.16s;cursor:pointer;background:var(--card-soft)
}
.dropzone:hover{border-color:var(--primary-2);color:var(--primary);background:#F7F3FF}

.adm-bar{
  display:flex;gap:8px;flex-wrap:wrap;padding:13px 0 0;margin-top:6px;border-top:1px solid var(--border-2)
}
.login-wrap{max-width:380px;margin:12vh auto;text-align:center}
.login-wrap .logo{width:56px;height:56px;border-radius:18px;margin:0 auto 16px}
.login-wrap .logo svg{width:29px;height:29px}
.login-wrap h2{margin:0 0 6px;font-size:21px;font-weight:800}
.login-wrap p{margin:0 0 20px;color:var(--text-3);font-size:13.5px}

.toast{
  position:fixed;left:50%;bottom:28px;transform:translate(-50%,20px);z-index:999;
  background:rgba(40,28,70,.94);color:#fff;padding:11px 20px;border-radius:13px;font-size:14px;font-weight:600;
  box-shadow:0 10px 30px rgba(40,28,70,.3);opacity:0;transition:.28s;pointer-events:none;backdrop-filter:blur(8px);
  max-width:88vw;text-align:center;
}
.toast.show{opacity:1;transform:translate(-50%,0)}

/* ---------- 底部励志语 ---------- */
.quote{
  position:relative;margin:22px 0 4px;padding:26px 24px 20px;
  border-radius:20px;overflow:hidden;text-align:center;
  background:linear-gradient(135deg,#F6F1FF 0%,#FBF0FF 52%,#F3F0FF 100%);
  border:1px solid #EBE2FB;
}
.quote::before,.quote::after{
  content:'';position:absolute;border-radius:50%;pointer-events:none;
}
.quote::before{width:150px;height:150px;right:-52px;top:-62px;background:radial-gradient(circle,rgba(192,98,216,.16),transparent 68%)}
.quote::after{width:130px;height:130px;left:-48px;bottom:-58px;background:radial-gradient(circle,rgba(123,92,231,.15),transparent 68%)}
.quote-mark{
  position:relative;z-index:2;display:inline-flex;color:var(--primary);opacity:.28;margin-bottom:2px;
}
.quote-mark svg{width:26px;height:26px;display:block}
.quote-text{
  position:relative;z-index:2;margin:4px auto 12px;max-width:520px;
  font-size:17px;font-weight:700;line-height:1.85;color:#4A3785;letter-spacing:.3px;
}
.quote-by{
  position:relative;z-index:2;display:inline-flex;align-items:center;gap:6px;
  font-size:12px;font-weight:700;letter-spacing:.6px;color:var(--primary);
  background:rgba(255,255,255,.75);border:1px solid #EBE2FB;
  border-radius:99px;padding:4px 13px;
}

.preview-banner{margin-top:8px;background:rgba(123,92,231,.12);color:var(--primary-dark);border:1px dashed #D5CCF0;border-radius:10px;padding:8px 11px;font-size:12.5px;font-weight:600;text-align:center}
.footer{text-align:center;padding:24px 16px 34px;color:var(--text-3);font-size:12.5px;line-height:1.9}
.footer a{color:var(--primary);font-weight:600}

.empty{text-align:center;padding:40px 20px;color:var(--text-3)}
.empty svg{width:42px;height:42px;margin-bottom:10px;opacity:.5}

/* 完成打卡 */
.done-btn{
  display:inline-flex;align-items:center;gap:8px;padding:11px 18px;border-radius:13px;font-size:14px;font-weight:700;
  border:1.5px solid var(--border);background:#fff;color:var(--text-2);transition:.18s;
}
.done-btn:hover{border-color:var(--ok);color:var(--ok)}
.done-btn.on{background:var(--ok);border-color:var(--ok);color:#fff;box-shadow:0 6px 18px rgba(63,191,160,.28)}
.done-btn svg{width:16px;height:16px}

/* ---------- 响应式 ---------- */
@media (max-width:880px){
  .admin-grid{grid-template-columns:1fr}
  .adm-list{position:static;max-height:270px}
}
@media (max-width:640px){
  body{font-size:16px;line-height:1.7}
  .wrap{padding:0 12px}
  .hero{padding:16px 15px 14px;margin:14px 0 18px;border-radius:20px}
  .journey{padding:13px 14px 12px;border-radius:15px;margin:14px 0 11px}
  .jn-main{gap:8px;margin-bottom:8px}
  .jn-ic{width:26px;height:26px;border-radius:9px}
  .jn-ic svg{width:14px;height:14px}
  .jn-seg{font-size:14px}
  .jn-seg b{font-size:24px;margin:0 4px}
  .jn-msg{font-size:12.5px;line-height:1.6}
  .quote{padding:24px 18px 18px;border-radius:18px;margin-top:18px}
  .quote-text{font-size:17px;line-height:1.8;margin-bottom:12px}
  .quote-mark svg{width:24px;height:24px}
  .quote-by{font-size:12px;padding:4px 14px}
  /* mobile 下 .sec-head 保持横排（标题与副标一行显示） */
  .sec-title{font-size:17.5px;gap:8px}
  .sec-title svg{width:19px;height:19px}
  .sec-head .sec-sub{font-size:13px}
  .cal{gap:7px}
  .cell{min-height:92px;padding:8px 7px 7px;border-radius:12px}
  .cell-d{font-size:16px}
  .cell-date{font-size:10.5px}
  .cell-t{font-size:11.5px;-webkit-line-clamp:2}
  .cell-tag{font-size:9.5px;padding:1px 5px}
  .today-title{font-size:20px}
  .today-text{font-size:15.5px}
  .today-date{font-size:13.5px}
  .today-body{padding:16px}
  .daybadge{padding:8px 0 7px}
  .daybadge b{font-size:24px}
  .daybadge span{font-size:11px}
  .dh-title{font-size:23px}
  .dh-no{font-size:12px;padding:5px 13px;margin-bottom:12px}
  .dh-meta{font-size:13.5px}
  .detail-hero{padding:19px 16px}
  .samples{grid-template-columns:repeat(auto-fill,minmax(126px,1fr));gap:9px}
  .brand h1{font-size:15.5px}
  .brand p{font-size:11.5px}
  .block{padding:15px 15px}
  .block-h h3{font-size:16px}
  .block-body{font-size:15px;line-height:1.85}
  .btn{font-size:14.5px;padding:11px 18px}
  .preview-banner{font-size:12px;padding:7px 10px;margin-top:6px}
}
@media (max-width:400px){
  .cal{gap:5px}
  .cell{min-height:84px}
  .hstat b{font-size:26px}
  .hstat span{font-size:12.5px}
}

/* 打印 */
@media print{
  .topbar,.dnav,.filters,.footer{display:none}
  body{background:#fff}
}
