/* 研芽 — 温馨可爱 × 高级感 样式 */
:root{
  --pink:#f8a5c2; --pink-deep:#ef7fa6; --peach:#ffd9c0; --lav:#c8b6ff; --mint:#b8e6d4;
  --cream:#fdf5f0; --cream2:#fbeef3; --ink:#5a444f; --ink2:#8a737d; --muted:#b6a3ac;
  --white:#ffffff; --card:rgba(255,255,255,.72); --card-solid:#fff6fa;
  --shadow:0 12px 34px rgba(216,150,180,.22), 0 2px 8px rgba(180,120,160,.10);
  --shadow-sm:0 6px 16px rgba(216,150,180,.18);
  --radius:24px; --radius-lg:30px; --radius-md:18px; --radius-sm:14px;
  --grad:linear-gradient(135deg,#ffd0e0 0%,#ffe9d6 45%,#e6dcff 100%);
  --grad-pink:linear-gradient(135deg,#ffb6cf,#ffc9b6);
  --safe-b:max(env(safe-area-inset-bottom),14px);
  --safe-t:max(env(safe-area-inset-top),10px);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
html,body{margin:0;padding:0;height:100%;}
body{
  font-family:"Noto Sans SC","PingFang SC","Microsoft YaHei",system-ui,sans-serif;
  color:var(--ink); background:var(--cream);
  overscroll-behavior-y:contain; -webkit-font-smoothing:antialiased;
}
h1,h2,h3,h4{margin:0;font-weight:600;}
button{font-family:inherit;border:none;background:none;color:inherit;cursor:pointer;}
.hidden{display:none!important;}

/* —— 背景柔光 —— */
body::before{
  content:"";position:fixed;inset:0;z-index:-1;
  background:
    radial-gradient(120% 70% at 100% 0%,#ffe1ec 0%,transparent 55%),
    radial-gradient(120% 70% at 0% 100%,#e7ddff 0%,transparent 55%),
    linear-gradient(180deg,#fdf5f0,#fce9f1);
  transition:background .6s ease;
}

#app{max-width:480px;margin:0 auto;min-height:100%;position:relative;display:flex;flex-direction:column;}

/* ===================== 欢迎页 ===================== */
#view-onboard{min-height:100%;display:flex;align-items:center;justify-content:center;
  background:var(--grad);position:relative;overflow:hidden;padding:24px;text-align:center;}
.onboard-wrap{position:relative;z-index:2;animation:rise .9s cubic-bezier(.2,.8,.2,1) both;}
@keyframes rise{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}
.onboard-art{position:relative;width:200px;height:200px;margin:0 auto 8px;}
.onboard-logo{
  width:140px;height:140px;border-radius:50%;margin:30px auto 0;
  display:flex;align-items:center;justify-content:center;font-size:74px;
  background:radial-gradient(circle at 35% 30%,#fff,#ffe3ee);
  box-shadow:0 18px 40px rgba(230,150,180,.4),inset 0 2px 8px rgba(255,255,255,.8);
  animation:bob 3.4s ease-in-out infinite;
}
@keyframes bob{0%,100%{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-10px) rotate(3deg)}}
.float-petal{position:absolute;width:18px;height:18px;border-radius:50% 0;background:#fff;opacity:.7;
  box-shadow:0 2px 6px rgba(255,255,255,.6);animation:petal 7s linear infinite;}
.float-petal.p1{top:20px;left:6px;animation-delay:0s}.float-petal.p2{top:60px;right:0;animation-delay:1.6s}
.float-petal.p3{bottom:30px;left:0;animation-delay:3s}.float-petal.p4{bottom:0;right:24px;animation-delay:4.8s}
@keyframes petal{0%{transform:translateY(-10px) rotate(0);opacity:0}10%{opacity:.8}100%{transform:translateY(160px) rotate(220deg);opacity:0}}
.onboard-title{font-size:46px;font-weight:700;letter-spacing:8px;color:#fff;text-shadow:0 4px 18px rgba(220,120,160,.5);
  font-family:"Quicksand",sans-serif;margin-top:6px;}
.onboard-sub{color:#fff;font-size:16px;margin-top:10px;text-shadow:0 2px 10px rgba(220,120,160,.4);font-weight:500;}
.onboard-desc{color:#fff;font-size:13px;margin-top:18px;line-height:1.9;text-shadow:0 2px 8px rgba(220,120,160,.35);}
.onboard-start{margin-top:36px;font-size:16px;font-weight:600;color:var(--pink-deep);
  background:#fff;padding:16px 44px;border-radius:30px;box-shadow:0 14px 30px rgba(220,120,160,.35);
  animation:pulse 2.6s ease-in-out infinite;transition:transform .2s;}
.onboard-start:active{transform:scale(.94)}
@keyframes pulse{0%,100%{box-shadow:0 14px 30px rgba(220,120,160,.35)}50%{box-shadow:0 18px 42px rgba(220,120,160,.5)}}
.onboard-note{color:#fff;font-size:11px;margin-top:22px;opacity:.85;text-shadow:0 1px 6px rgba(220,120,160,.3);}

/* ===================== Shell ===================== */
#shell{flex:1;display:flex;flex-direction:column;min-height:100vh;}
#page-container{flex:1;position:relative;overflow-x:hidden;padding-bottom:calc(86px + var(--safe-b));}
.view{display:none;animation:page-in .42s cubic-bezier(.2,.8,.2,1) both;}
.view.active{display:block;}
@keyframes page-in{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}

/* 通用页头 */
.ph{padding:calc(var(--safe-t) + 14px) 22px 8px;}
.ph-row{display:flex;align-items:center;justify-content:space-between;}
.ph-hey{font-size:13px;color:var(--ink2);}
.ph-name{font-size:24px;font-weight:700;color:var(--ink);letter-spacing:.5px;margin-top:2px;font-family:"Quicksand",sans-serif;}
.ph-date{font-size:12px;color:var(--muted);margin-top:4px;}

/* 玻璃卡 */
.card{background:var(--card);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border:1px solid rgba(255,255,255,.7);border-radius:var(--radius);box-shadow:var(--shadow);
  padding:18px;margin:14px 18px 0;}
.card-solid{background:var(--card-solid);backdrop-filter:none;}

.sec-title{font-size:16px;font-weight:700;color:var(--ink);display:flex;align-items:center;gap:8px;margin:0 0 4px;}
.sec-title .dot{width:7px;height:18px;border-radius:6px;background:var(--grad-pink);box-shadow:0 3px 8px rgba(239,127,166,.4);}
.sec-sub{font-size:12px;color:var(--muted);margin-bottom:14px;}

/* ===================== 首页 ===================== */
.home-hero{margin:calc(var(--safe-t) + 10px) 18px 0;padding:22px 22px 24px;border-radius:var(--radius-lg);
  background:var(--grad);color:#fff;box-shadow:0 18px 40px rgba(216,150,180,.34);position:relative;overflow:hidden;}
.home-hero::after{content:"";position:absolute;width:160px;height:160px;border-radius:50%;
  right:-60px;top:-60px;background:rgba(255,255,255,.22);}
.home-hero .emo{font-size:30px;animation:bob 3.6s ease-in-out infinite;display:inline-block;}
.home-hero h2{font-size:21px;margin-top:8px;text-shadow:0 2px 10px rgba(200,120,160,.4);font-weight:700;}
.home-hero p{font-size:13px;margin-top:6px;opacity:.95;line-height:1.6;}

.progress-ring-wrap{display:flex;align-items:center;gap:18px;}
.ring{position:relative;width:104px;height:104px;flex-shrink:0;}
.ring svg{transform:rotate(-90deg);}
.ring .track{fill:none;stroke:rgba(255,255,255,.5);stroke-width:10;}
.ring .bar{fill:none;stroke:#fff;stroke-width:10;stroke-linecap:round;transition:stroke-dashoffset 1s cubic-bezier(.2,.8,.2,1);}
.ring .num{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#fff;}
.ring .num b{font-size:28px;font-weight:700;font-family:"Quicksand",sans-serif;}
.ring .num span{font-size:10px;opacity:.9;margin-top:-2px;}
.ring-info{flex:1;color:#fff;}
.ring-info .l{font-size:12px;opacity:.92;}
.ring-info .v{font-size:20px;font-weight:700;margin:2px 0 8px;font-family:"Quicksand",sans-serif;}
.streak-pill{display:inline-flex;align-items:center;gap:6px;background:rgba(255,255,255,.28);
  padding:6px 12px;border-radius:20px;font-size:12px;font-weight:600;backdrop-filter:blur(6px);}
.streak-pill .flame{font-size:14px;animation:flame 1.4s ease-in-out infinite;}
@keyframes flame{0%,100%{transform:scale(1) rotate(-4deg)}50%{transform:scale(1.18) rotate(4deg)}}

.countdown{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:14px;}
.cd-cell{background:rgba(255,255,255,.22);border-radius:14px;padding:10px 6px;text-align:center;backdrop-filter:blur(6px);}
.cd-cell b{font-size:22px;font-family:"Quicksand",sans-serif;display:block;font-weight:700;}
.cd-cell span{font-size:10px;opacity:.9;}

.quote-card{position:relative;overflow:hidden;}
.quote-card .qmark{position:absolute;right:14px;top:0;font-size:60px;color:rgba(248,165,194,.22);font-family:Georgia;}
.quote-card p{font-size:14px;line-height:1.75;color:var(--ink);position:relative;z-index:1;margin:0;}
.quote-card .q-from{font-size:11px;color:var(--muted);margin-top:10px;}

.today-accept{display:flex;align-items:center;gap:14px;}
.ta-ring{width:54px;height:54px;border-radius:50%;flex-shrink:0;background:conic-gradient(var(--pink-deep) var(--p,0%),rgba(0,0,0,.06) 0);
  display:flex;align-items:center;justify-content:center;transition:background 1s;}
.ta-ring>div{width:46px;height:46px;border-radius:50%;background:#fff;display:flex;align-items:center;justify-content:center;
  font-size:20px;}
.ta-info{flex:1;}
.ta-info .tt{font-size:14px;font-weight:600;color:var(--ink);}
.ta-info .dd{font-size:13px;color:var(--ink2);margin-top:4px;line-height:1.55;}

.quick-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;}
.qg-item{display:flex;flex-direction:column;align-items:center;gap:6px;padding:14px 6px;border-radius:var(--radius-md);
  background:#fff;box-shadow:var(--shadow-sm);transition:transform .18s,box-shadow .18s;}
.qg-item:active{transform:scale(.92);box-shadow:0 4px 10px rgba(216,150,180,.2);}
.qg-item .ico{width:42px;height:42px;border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:22px;
  background:var(--grad-pink);}
.qg-item span{font-size:11px;color:var(--ink2);font-weight:500;}

/* ===================== 30天计划 ===================== */
.group-tabs{display:flex;gap:8px;overflow-x:auto;padding:14px 18px 6px;scrollbar-width:none;}
.group-tabs::-webkit-scrollbar{display:none;}
.gt{flex-shrink:0;padding:9px 16px;border-radius:18px;background:#fff;box-shadow:var(--shadow-sm);
  font-size:13px;color:var(--ink2);transition:all .25s;border:1px solid transparent;}
.gt b{display:block;font-size:11px;color:var(--muted);font-weight:500;margin-bottom:2px;}
.gt.active{background:var(--grad-pink);color:#fff;border-color:rgba(255,255,255,.6);box-shadow:0 10px 22px rgba(239,127,166,.35);}
.gt.active b{color:rgba(255,255,255,.9);}

.group-banner{margin:10px 18px 12px;padding:16px 18px;border-radius:var(--radius);background:var(--grad);
  color:#fff;box-shadow:var(--shadow);}
.group-banner h3{font-size:16px;text-shadow:0 2px 8px rgba(200,120,160,.4);}
.group-banner p{font-size:12px;margin-top:6px;opacity:.95;line-height:1.6;}

.day-list{padding:4px 0 10px;}
.day-card{margin:12px 18px;padding:16px 18px;border-radius:var(--radius);background:#fff;box-shadow:var(--shadow-sm);
  display:flex;align-items:center;gap:14px;cursor:pointer;transition:transform .18s,box-shadow .18s;border:1px solid rgba(255,255,255,.7);}
.day-card:active{transform:scale(.97);}
.day-card.done{background:linear-gradient(135deg,#f3fff8,#fff);}
.day-num{width:50px;height:50px;border-radius:16px;background:var(--grad-pink);color:#fff;flex-shrink:0;
  display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:0 8px 16px rgba(239,127,166,.32);}
.day-num b{font-size:18px;font-family:"Quicksand",sans-serif;line-height:1;}
.day-num span{font-size:9px;opacity:.9;margin-top:2px;}
.day-card.done .day-num{background:linear-gradient(135deg,#aee9cf,#7fd9b4);box-shadow:0 8px 16px rgba(127,201,156,.32);}
.day-info{flex:1;min-width:0;}
.day-info .dt{font-size:13px;color:var(--muted);font-weight:500;}
.day-info .dttl{font-size:14px;color:var(--ink);font-weight:600;margin:2px 0;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.day-info .da{font-size:12px;color:var(--pink-deep);margin-top:3px;display:flex;align-items:center;gap:4px;}
.day-tag{flex-shrink:0;}
.day-tag span{display:inline-block;padding:4px 10px;border-radius:12px;font-size:10px;font-weight:600;
  background:#fff0f4;color:var(--pink-deep);}
.day-tag.review span{background:#efeaff;color:#8a7ad4;}
.day-chk{flex-shrink:0;width:28px;height:28px;border-radius:50%;border:2px solid #ffd0e0;display:flex;
  align-items:center;justify-content:center;font-size:14px;color:transparent;transition:all .25s;}
.day-card.done .day-chk{background:var(--grad-pink);border-color:transparent;color:#fff;}

/* ===================== 今日打卡 ===================== */
.check-hero{padding:calc(var(--safe-t) + 10px) 22px 18px;}
.check-hero .ci{text-align:center}
.check-hero h2{font-size:22px;color:var(--ink);font-weight:700;}
.check-hero .cd{font-size:13px;color:var(--muted);margin-top:4px;}
.check-progress{margin:16px 18px;padding:18px 20px;border-radius:var(--radius);background:#fff;box-shadow:var(--shadow);}
.cp-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;}
.cp-top .lab{font-size:14px;font-weight:600;color:var(--ink);}
.cp-top .pct{font-size:16px;font-weight:700;color:var(--pink-deep);font-family:"Quicksand",sans-serif;}
.cp-bar{height:10px;border-radius:6px;background:#ffe1ec;overflow:hidden;}
.cp-fill{height:100%;border-radius:6px;background:var(--grad-pink);width:0;transition:width .8s cubic-bezier(.2,.8,.2,1);box-shadow:0 0 10px rgba(239,127,166,.5);}
.cp-stat{font-size:12px;color:var(--muted);margin-top:8px;text-align:right;}

.task-item{margin:12px 18px;padding:16px;border-radius:var(--radius);background:#fff;box-shadow:var(--shadow-sm);
  display:flex;gap:14px;transition:all .25s;border:1px solid rgba(255,255,255,.7);}
.task-item.done{opacity:.62;}
.task-item.done .ti-time{text-decoration:line-through;}
.ti-chk{width:30px;height:30px;border-radius:50%;border:2px solid #ffd0e0;flex-shrink:0;display:flex;
  align-items:center;justify-content:center;transition:all .25s;margin-top:2px;background:#fff;}
.ti-chk svg{width:18px;height:18px;stroke:#fff;stroke-width:3;fill:none;stroke-dasharray:30;stroke-dashoffset:30;
  transition:stroke-dashoffset .4s .1s;stroke-linecap:round;stroke-linejoin:round;}
.task-item.done .ti-chk{background:var(--grad-pink);border-color:transparent;}
.task-item.done .ti-chk svg{stroke-dashoffset:0;}
.ti-body{flex:1;min-width:0;}
.ti-time{font-size:11px;color:var(--muted);letter-spacing:.3px;}
.ti-task{font-size:15px;font-weight:600;color:var(--ink);margin:2px 0 4px;}
.ti-req{font-size:12px;color:var(--ink2);line-height:1.6;}
.ti-note{margin-top:8px;}
.ti-note textarea{width:100%;border:1px solid #ffe1ec;border-radius:10px;padding:8px 10px;font-size:12px;
  color:var(--ink2);font-family:inherit;min-height:32px;background:#fffafd;resize:none;}

.all-done-card{margin:16px 18px;padding:22px;text-align:center;border-radius:var(--radius);
  background:var(--grad);color:#fff;box-shadow:var(--shadow);animation:rise .5s both;}
.all-done-card .em{font-size:40px;animation:bob 2.6s ease-in-out infinite;display:inline-block;}
.all-done-card h3{font-size:18px;margin-top:8px;}
.all-done-card p{font-size:12px;margin-top:6px;opacity:.95;}
.btn-soft{background:#fff;color:var(--pink-deep);padding:10px 22px;border-radius:24px;font-weight:600;font-size:13px;
  margin-top:14px;box-shadow:0 8px 18px rgba(220,120,160,.3);}

/* ===================== 复盘 ===================== */
.rev-tabs{display:flex;margin:14px 18px 0;background:#fff;border-radius:18px;padding:5px;box-shadow:var(--shadow-sm);}
.rev-tab{flex:1;text-align:center;padding:10px;border-radius:14px;font-size:13px;color:var(--ink2);transition:all .25s;font-weight:500;}
.rev-tab.active{background:var(--grad-pink);color:#fff;box-shadow:0 6px 14px rgba(239,127,166,.32);}

.subj-pill{display:inline-block;padding:5px 11px;border-radius:12px;font-size:11px;font-weight:600;margin-right:7px;margin-bottom:6px;
  background:#f3eaff;color:#7d6bbf;transition:all .2s;}
.subj-pill.active{background:var(--grad-pink);color:#fff;box-shadow:0 4px 10px rgba(239,127,166,.3);transform:scale(1.04);}

.rev-block{margin:11px 18px;padding:14px 16px;border-radius:var(--radius-md);background:#fff;box-shadow:var(--shadow-sm);
  display:flex;align-items:center;gap:13px;}
.rev-block .rb-time{flex-shrink:0;width:88px;font-size:11px;color:var(--pink-deep);font-weight:600;}
.rev-block .rb-body{flex:1;}
.rev-block .rb-task{font-size:14px;font-weight:600;color:var(--ink);}
.rev-block .rb-line{font-size:12px;color:var(--muted);margin-top:2px;}

.checklist-grid{margin:14px 18px 0;overflow-x:auto;scrollbar-width:none;}
.cl-week{display:grid;grid-template-columns:1.6fr repeat(5,1fr);gap:1px;background:#f7e2ec;border-radius:14px;overflow:hidden;
  margin-bottom:10px;box-shadow:var(--shadow-sm);min-width:380px;}
.cl-h,.cl-c{background:#fff;padding:9px 6px;font-size:10px;text-align:center;color:var(--ink2);}
.cl-h{font-weight:600;background:#fff0f5;color:var(--pink-deep);}
.cl-h.first,.cl-c.first{text-align:left;padding-left:12px;font-size:11px;color:var(--ink);font-weight:500;line-height:1.4;}
.cl-c.day-col{cursor:pointer;font-size:16px;color:#e3c4d2;transition:all .2s;padding:0;display:flex;align-items:center;justify-content:center;}
.cl-c.day-col.active{background:#fff0f5;color:var(--pink-deep);font-weight:700;}
.cl-c.day-col.checked{color:var(--pink-deep);background:#fff5fa;}

.rw-input{margin:12px 18px;padding:16px;border-radius:var(--radius);background:#fff;box-shadow:var(--shadow);}
.rw-input h4{font-size:14px;color:var(--ink);margin-bottom:10px;}.rw-input textarea{width:100%;min-height:90px;border:1px solid #ffe1ec;border-radius:12px;padding:12px;font-size:13px;color:var(--ink);font-family:inherit;background:#fffafd;resize:vertical;line-height:1.6;}
.rw-save{margin-top:10px;}

/* ===================== 我的 ===================== */
.me-hero{padding:calc(var(--safe-t) + 14px) 22px 20px;text-align:center;}
.me-av{width:80px;height:80px;border-radius:50%;background:var(--grad-pink);display:inline-flex;align-items:center;justify-content:center;
  font-size:38px;box-shadow:0 12px 26px rgba(220,120,160,.32);animation:bob 3.8s ease-in-out infinite;}
.me-name{font-size:18px;font-weight:700;color:var(--ink);margin-top:10px;}
.me-sub{font-size:12px;color:var(--muted);margin-top:4px;}
.me-stat{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:16px 18px 0;}
.me-stat .s{background:#fff;border-radius:var(--radius-md);padding:16px 6px;text-align:center;box-shadow:var(--shadow-sm);}
.me-stat .s b{font-size:24px;font-family:"Quicksand",sans-serif;color:var(--pink-deep);display:block;}
.me-stat .s span{font-size:10px;color:var(--muted);}

.me-menu{margin:14px 18px 0;background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;}
.me-mi{display:flex;align-items:center;gap:14px;padding:16px 18px;border-bottom:1px solid #fae6ee;transition:background .2s;cursor:pointer;}
.me-mi:last-child{border-bottom:none;}
.me-mi:active{background:#fff8fb;}
.me-mi .mi-ico{width:40px;height:40px;border-radius:13px;display:flex;align-items:center;justify-content:center;font-size:20px;background:#fff0f5;}
.me-mi .mi-tt{flex:1;font-size:14px;color:var(--ink);font-weight:500;}
.me-mi .mi-tt span{display:block;font-size:11px;color:var(--muted);font-weight:400;margin-top:2px;}
.me-mi .mi-arr{color:#e3c4d2;font-size:18px;}

/* ===================== Modal ===================== */
.modal-mask{position:fixed;inset:0;background:rgba(90,68,79,.32);backdrop-filter:blur(4px);z-index:90;animation:fade .3s both;}
@keyframes fade{from{opacity:0}to{opacity:1}}
.modal{position:fixed;left:0;right:0;bottom:0;z-index:95;max-width:480px;margin:0 auto;
  background:linear-gradient(180deg,#fff,#fff7f9);border-radius:30px 30px 0 0;box-shadow:0 -16px 50px rgba(90,68,79,.3);
  max-height:88vh;overflow-y:auto;animation:sheetUp .42s cubic-bezier(.2,.8,.2,1) both;}
@keyframes sheetUp{from{transform:translateY(100%)}to{transform:none}}
.modal-close{position:absolute;top:14px;right:18px;width:34px;height:34px;border-radius:50%;
  background:#fff;box-shadow:var(--shadow-sm);font-size:22px;line-height:32px;color:var(--ink2);
  z-index:20;transition:transform .18s,background .2s;}
.modal-close:active{transform:scale(.86);background:#fff0f5;}
.modal-grip{width:42px;height:5px;border-radius:3px;background:#f0d6df;margin:12px auto 6px;}
.modal-head{padding:6px 24px 14px;display:flex;align-items:flex-start;gap:14px;}
.modal-head .mn{width:54px;height:54px;border-radius:16px;background:var(--grad-pink);display:flex;flex-direction:column;
  align-items:center;justify-content:center;color:#fff;flex-shrink:0;box-shadow:0 8px 18px rgba(239,127,166,.32);}
.modal-head .mn b{font-size:20px;font-family:"Quicksand",sans-serif;line-height:1}
.modal-head .mn span{font-size:9px;opacity:.9}
.modal-head .mt{font-size:13px;color:var(--muted);}
.modal-head .mtt{font-size:18px;color:var(--ink);font-weight:700;}
.md-tag{margin:14px 24px 6px;font-size:11px;font-weight:600;color:var(--pink-deep);}
.md-block{margin:0 24px 12px;padding:14px 16px;border-radius:18px;background:#fff;box-shadow:var(--shadow-sm);position:relative;overflow:hidden;}
.md-block::before{content:"";position:absolute;left:0;top:14px;bottom:14px;width:4px;border-radius:3px;background:var(--grad-pink);}
.md-block.s333::before{background:linear-gradient(#ffb6cf,#ffc9b6)}
.md-block.s826::before{background:linear-gradient(#c8b6ff,#adc8ff)}
.md-block.seng::before{background:linear-gradient(#b8e6d4,#9fd9ef)}
.md-block.sacc::before{background:linear-gradient(#ffd29c,#ffb6cf)}
.md-block .lb{font-size:11px;color:var(--muted);margin-bottom:4px;margin-left:8px;}
.md-block.s333 .lb{color:#e89bb6}.md-block.s826 .lb{color:#9c8ad6}
.md-block.seng .lb{color:#6db8a3}.md-block.sacc .lb{color:#e0909b}
.md-block .tx{font-size:14px;line-height:1.75;color:var(--ink);margin-left:8px;}
.md-tip{margin:0 24px 14px;padding:13px 16px;border-radius:16px;background:#fff7f0;border:1px dashed #ffd9b8;
  font-size:12px;color:#c08866;line-height:1.7;display:flex;gap:8px;}
.mdtoggle{margin:0 24px 22px;display:flex;align-items:center;justify-content:center;gap:8px;padding:14px;border-radius:20px;
  background:var(--grad-pink);color:#fff;font-weight:600;font-size:14px;box-shadow:0 12px 26px rgba(239,127,166,.36);}
.mdtoggle.done{background:linear-gradient(135deg,#aee9cf,#7fd9b4);box-shadow:0 12px 26px rgba(127,201,156,.36)}

/* ===================== 番茄钟 ===================== */
#pomo-fab{position:fixed;right:18px;bottom:calc(86px + var(--safe-b));width:56px;height:56px;border-radius:50%;
  background:var(--grad-pink);font-size:26px;box-shadow:0 12px 26px rgba(239,127,166,.4);z-index:60;
  display:flex;align-items:center;justify-content:center;transition:transform .2s;animation:bob 3.6s ease-in-out infinite}
#pomo-fab:active{transform:scale(.9)}
.pomo-wrap{padding:30px 24px 32px;text-align:center}
.pomo-dial{width:220px;height:220px;margin:6px auto 18px;position:relative}
.pomo-dial svg{transform:rotate(-90deg)}
.podo-track{fill:none;stroke:#ffe1ec;stroke-width:14}
.podo-bar{fill:none;stroke:url(#pg);stroke-width:14;stroke-linecap:round;transition:stroke-dashoffset 1s linear}
.pomo-time{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;}
.pomo-time b{font-size:50px;font-family:"Quicksand",sans-serif;color:var(--ink);line-height:1;font-weight:700}
.pomo-time span{font-size:12px;color:var(--muted);margin-top:6px}
.pomo-states{display:flex;gap:8px;justify-content:center;margin-bottom:18px}
.pomo-states .ps{padding:8px 16px;border-radius:18px;background:#fff;box-shadow:var(--shadow-sm);font-size:12px;color:var(--ink2);transition:all .2s;font-weight:600;}
.pomo-states .ps.active{background:var(--grad-pink);color:#fff;box-shadow:0 6px 14px rgba(239,127,166,.3)}
.pomo-btns{display:flex;gap:12px;justify-content:center}
.pbtn{padding:14px 28px;border-radius:24px;font-weight:600;font-size:14px;background:#fff;box-shadow:var(--shadow-sm);color:var(--ink);transition:transform .18s}
.pbtn:active{transform:scale(.92)}
.pbtn.primary{background:var(--grad-pink);color:#fff;box-shadow:0 10px 22px rgba(239,127,166,.32)}
.pomo-tag{margin:16px auto 0;padding:12px 16px;border-radius:16px;background:#fff7f0;font-size:12px;color:#c08866;display:flex;align-items:center;gap:8px;max-width:240px;text-align:left;line-height:1.6}

/* ===================== Tabbar ===================== */
#tabbar{position:fixed;left:0;right:0;bottom:0;max-width:480px;margin:0 auto;display:flex;z-index:50;
  background:rgba(255,255,255,.86);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);
  border-top:1px solid rgba(255,255,255,.7);
  box-shadow:0 -8px 26px rgba(216,150,180,.16);padding:8px 6px calc(8px + var(--safe-b));}
.tab{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 0;color:var(--muted);transition:transform .2s, color .2s;position:relative;}
.tab:active{transform:translateY(-2px) scale(.94)}
.tab .tab-ico{font-size:21px;line-height:1;transition:transform .25s}
.tab .tab-label{font-size:10px;font-weight:500;}
.tab.active{color:var(--pink-deep)}
.tab.active .tab-ico{transform:translateY(-2px) scale(1.12)}
.tab.active .tab-ico{filter:drop-shadow(0 4px 6px rgba(239,127,166,.4))}
.check-tab .chk{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:50%;
  background:var(--grad-pink);color:#fff;margin-top:-12px;box-shadow:0 8px 18px rgba(239,127,166,.4);border:3px solid #fff;font-weight:700;font-size:18px}
.check-tab.active .chk{filter:none}

/* ===================== Toast & Confetti ===================== */
.toast{position:fixed;left:50%;top:42%;transform:translateX(-50%);background:rgba(90,68,79,.92);color:#fff;
  padding:14px 24px;border-radius:24px;font-size:13px;z-index:200;box-shadow:0 12px 30px rgba(0,0,0,.3);
  animation:tin .3s both;max-width:300px;text-align:center;line-height:1.6;}
.toast.success{background:linear-gradient(135deg,#ff9ec3,#ffb6cf)}
@keyframes tin{from{opacity:0;transform:translate(-50%,-12px)}to{opacity:1;transform:translate(-50%,0)}}
.confetti{position:fixed;inset:0;pointer-events:none;z-index:300;}

/* 按钮 */
.btn-primary{background:var(--grad-pink);color:#fff;padding:14px 22px;border-radius:22px;font-weight:600;font-size:14px;
  box-shadow:0 10px 22px rgba(239,127,166,.32);transition:transform .15s}
.btn-primary:active{transform:scale(.95)}
.btn-ghost{padding:12px 20px;border-radius:20px;font-weight:600;font-size:13px;color:var(--ink2);
  background:#fff;box-shadow:var(--shadow-sm)}

.empty{text-align:center;color:var(--muted);font-size:13px;padding:50px 20px;line-height:1.8}
.divider{height:1px;background:linear-gradient(90deg,transparent,#f0d6df,transparent);margin:18px 0}

/* method card */
.method-card{margin:12px 18px;padding:18px;border-radius:var(--radius);background:#fff;box-shadow:var(--shadow);cursor:pointer;transition:transform .18s}
.method-card:active{transform:scale(.97)}
.method-card .mh{display:flex;align-items:center;gap:12px;}
.method-card .mi{width:44px;height:44px;border-radius:14px;background:var(--grad-pink);display:flex;align-items:center;justify-content:center;font-size:22px}
.method-card .mn{font-size:16px;font-weight:700;color:var(--ink)}
.method-card .mx{margin-left:auto;color:#e3c4d2;transition:transform .3s;font-size:18px}
.method-card.open .mx{transform:rotate(180deg)}
.method-body{max-height:0;overflow:hidden;transition:max-height .45s ease;opacity:0}
.method-card.open .method-body{max-height:500px;opacity:1;transition:max-height .45s ease, opacity .3s .1s}
.method-body .ms{display:flex;gap:10px;margin:14px 0 10px;flex-wrap:wrap}
.method-body .ms span{padding:6px 12px;border-radius:14px;background:#fff0f5;font-size:12px;color:var(--pink-deep);font-weight:500}
.method-body .mtip{font-size:12px;color:var(--ink2);line-height:1.7;padding:12px;background:#fff7f0;border-radius:14px;border:1px dashed #ffd0b8}

.ref-list{margin:8px 18px 0}
.ref-item{margin-bottom:10px;padding:14px 16px;border-radius:16px;background:#fff;box-shadow:var(--shadow-sm)}
.ref-item .ri-s{font-size:11px;color:var(--pink-deep);font-weight:600}
.ref-item .ri-t{font-size:13px;color:var(--ink);margin:4px 0;line-height:1.5}
.ref-item a{font-size:11px;color:var(--lav);text-decoration:none;word-break:break-all}

/* selectable sheets inside day modal */
.accept-row{margin:0 24px 22px;padding:16px 18px;border-radius:18px;background:linear-gradient(135deg,#fff0f5,#fff7f0);
  box-shadow:var(--shadow-sm);display:flex;align-items:center;gap:14px;}
.accept-row .ar-em{font-size:24px}
.accept-row .ar-tx{flex:1}.accept-row .ar-lb{font-size:11px;color:var(--pink-deep);font-weight:600}
.accept-row .ar-val{font-size:14px;color:var(--ink);font-weight:600;margin-top:2px}