:root{
  --ink:#111827; --ink2:#374151; --ink3:#6B7280; --ink4:#9CA3AF;
  --line:#E7E9EE; --bg:#F5F6F8; --card:#FFFFFF;
  --pri:#4F46E5; --pri-700:#4338CA; --pri-soft:#EEF2FF;
  --red:#DC2626; --red-soft:#FEF2F2;
  --green:#15803D; --green-soft:#ECFDF5;
  --orange:#B45309; --orange-soft:#FFFBEB;
  --sky:#0E7490; --sky-soft:#ECFEFF;
  --r-sm:8px; --r-md:12px; --r-lg:16px;
  --sh-card:0 1px 2px rgba(16,24,40,.05),0 1px 3px rgba(16,24,40,.08);
  --sh-pop:0 12px 32px rgba(16,24,40,.16);
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html,body{background:var(--bg);color:var(--ink)}
body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  font-size:15px;line-height:1.55;padding-bottom:calc(24px + env(safe-area-inset-bottom))}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
input,select,textarea{font-family:inherit;font-size:16px;color:var(--ink)}
:focus-visible{outline:2px solid var(--pri);outline-offset:2px;border-radius:4px}
.wrap{max-width:880px;margin:0 auto;padding:14px 14px 8px}
@media (min-width:768px){.wrap{padding:24px 20px 8px}}

/* 吸顶头部 */
.hd{position:sticky;top:0;z-index:40;display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;
  background:rgba(245,246,248,.88);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  padding:10px 2px 12px;margin-bottom:4px}
.hd-l{display:flex;align-items:center;gap:10px;min-width:0}
.hd-l svg{flex:none;filter:drop-shadow(0 2px 6px rgba(79,70,229,.35))}
.hd-t{font-size:18px;font-weight:800;letter-spacing:.3px;line-height:1.2}
.hd-s{font-size:10.5px;color:var(--ink4);margin-top:1px}

/* 卡片 */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--sh-card);
  padding:16px;margin-bottom:14px;transition:box-shadow .2s ease}
@media (min-width:768px){.card:hover{box-shadow:0 4px 16px rgba(16,24,40,.08)}}
.sec-t{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:14px}
.sec-t .tt{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:700}
.tt .ico{width:30px;height:30px;border-radius:9px;background:var(--pri-soft);display:flex;align-items:center;justify-content:center;flex:none}
.sec-t .acts{display:flex;gap:6px;flex-wrap:wrap}

/* 人生全景 */
.pano-labels{display:flex;gap:6px;margin-bottom:6px;font-size:10.5px;color:var(--ink3);font-weight:700;letter-spacing:1px}
.pano-labels span{flex:1;text-align:center}
.pano-row{display:flex;gap:8px;height:48px;background:transparent;border:none}
.pano-grp{display:flex;flex:1;min-width:0;border-radius:12px;overflow:hidden;border:1px solid var(--line)}
.pano-seg{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;color:#fff;position:relative;
  transition:filter .15s;padding:0 2px}
.pano-seg:active{filter:brightness(1.15)}
.pano-seg .n{font-size:14px;font-weight:700;line-height:1}
.pano-seg .c{font-size:10px;opacity:.92;margin-top:3px}
.pano-seg.zero{opacity:.38}
.pano-meta{display:flex;gap:14px;margin-top:10px;font-size:12px;color:var(--ink3);flex-wrap:wrap}
.pano-meta b{color:var(--ink);font-weight:700}

/* 维度条 */
.dimbar{display:none}
.dim-chip{display:flex;align-items:center;gap:4px;height:28px;padding:0 8px;border-radius:999px;background:#fff;
  border:1px solid var(--line);font-size:12px;font-weight:600;color:var(--ink3);white-space:nowrap;
  transition:transform .15s ease,background .15s,color .15s}
.dim-chip:active{transform:scale(.96)}
.dim-chip .cnt{font-size:10px;background:var(--bg);border:1px solid var(--line);border-radius:999px;padding:0 5px;min-width:14px;text-align:center;color:var(--ink3);line-height:1.35}
.dim-chip.on{background:var(--ink);border-color:var(--ink);color:#fff}
.dim-chip.on .cnt{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.22);color:#fff}

/* 方向筛选 */
.dirbar{display:flex;gap:5px;flex-wrap:wrap;padding:0 2px 10px}
.dir-chip{display:flex;align-items:center;gap:5px;height:30px;padding:0 11px;border-radius:999px;background:#fff;
  border:1px solid var(--line);font-size:12px;font-weight:600;color:var(--ink3);white-space:nowrap;transition:transform .15s ease}
.dir-chip:active{transform:scale(.96)}
.dir-chip .dot{width:7px;height:7px;border-radius:50%;flex:none}
.dir-chip .cnt{font-size:10.5px;background:var(--bg);border:1px solid var(--line);border-radius:999px;padding:0 6px;min-width:16px;text-align:center}
.dir-chip.on{color:#fff}
.dir-chip.on .cnt{background:rgba(255,255,255,.22);border-color:rgba(255,255,255,.3);color:#fff}
.dir-chip.drag{opacity:.6;box-shadow:var(--sh-pop);z-index:10;background:var(--pri-soft)}

/* 已完成筛选 */
.donebar{display:flex;gap:5px;flex-wrap:wrap;padding:0 2px 10px}
.done-chip{display:flex;align-items:center;gap:5px;height:30px;padding:0 11px;border-radius:999px;background:#fff;border:1px solid var(--line);font-size:12px;font-weight:600;color:var(--ink3);white-space:nowrap;transition:transform .15s ease,background .15s,color .15s}
.done-chip:active{transform:scale(.96)}
.done-chip.on{background:var(--ink);border-color:var(--ink);color:#fff}
.done-chip .cnt{font-size:10.5px;background:var(--bg);border:1px solid var(--line);border-radius:999px;padding:0 6px;min-width:16px;text-align:center}
.done-chip.on .cnt{background:rgba(255,255,255,.22);border-color:rgba(255,255,255,.3);color:#fff}
.done-wrap{margin-top:12px;border-top:1px dashed var(--line);padding-top:12px}
.done-head{font-size:13px;font-weight:700;color:var(--ink3);margin-bottom:10px;display:flex;align-items:center;gap:6px}
.done-head .cnt{font-size:11px;background:var(--bg);border:1px solid var(--line);border-radius:999px;padding:1px 7px;color:var(--ink3)}
.done-sub{margin-bottom:12px}
.done-sub-lbl{font-size:12px;font-weight:700;margin-bottom:6px;display:inline-block}
.done-list{opacity:.85}

/* 目标视图切换 */
.view-seg{display:flex;gap:6px;margin-bottom:10px;flex-wrap:wrap}
.view-seg .seg-btn{flex:1;min-height:36px;padding:0 12px;border-radius:10px;font-size:12.5px;font-weight:600;color:var(--ink3);background:#fff;border:1px solid var(--line);transition:all .18s}
.view-seg .seg-btn.on{background:var(--ink);border-color:var(--ink);color:#fff}

/* 维度分区 */
.dim-sec{margin-bottom:6px}
.dim-sec:last-child{margin-bottom:0}
.sec-h{display:flex;align-items:center;gap:8px;padding:9px 10px;border-radius:12px;background:var(--bg);border:1px solid var(--line);
  cursor:pointer;margin-bottom:8px;user-select:none}
.sec-h:active{background:#EDEEF2}
.sec-h .bar{width:4px;height:22px;border-radius:2px;flex:none}
.sec-h .nm{font-size:14px;font-weight:700}
.sec-h .sp{font-size:11px;color:var(--ink4);font-weight:500}
.sec-h .meta{margin-left:auto;font-size:11.5px;color:var(--ink3);font-weight:600;display:flex;align-items:center;gap:6px}
.sec-h .chev{flex:none;color:var(--ink4);transition:transform .2s ease;width:20px;height:20px}
.dim-sec.closed .chev{transform:rotate(-90deg)}
.dim-sec.closed .glist{display:none}
/* 方向视图：方向标签放进目标行 */
.dir-sec .glist{margin-top:0}

/* 目标卡片 */
.glist{display:flex;flex-direction:column;gap:10px;position:relative}
.gcard{display:flex;align-items:stretch;gap:0;background:#fff;border:1px solid var(--line);border-radius:14px;
  position:relative;z-index:2;transition:box-shadow .18s ease,border-color .18s ease;border-left:3px solid var(--line)}
.gcard,.grip{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
@media (min-width:768px){.gcard:hover{box-shadow:var(--sh-card)}}
.gcard.drag{opacity:.55;box-shadow:var(--sh-pop);z-index:5}
.gcard.ins-top::before{content:"";position:absolute;left:8px;right:8px;top:-6px;height:3px;border-radius:2px;background:var(--pri)}
.gcard.ins-bottom::after{content:"";position:absolute;left:8px;right:8px;bottom:-6px;height:3px;border-radius:2px;background:var(--pri)}
.grip{flex:none;width:36px;min-height:56px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:6px 0;color:var(--ink4);cursor:grab;touch-action:none;background:var(--bg);border-right:1px solid var(--line)}
.grip:active{cursor:grabbing}
.grip svg{opacity:.7}
.grip .grip-hint{font-size:8.5px;line-height:1;color:var(--ink4);letter-spacing:.3px}
.glist.no-drag .grip{display:none}
/* 访问密码门 */
#appWrap{display:none}
.gate{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#0F172A,#1E293B);z-index:9999;padding:20px}
.gate-card{width:100%;max-width:340px;background:#fff;border-radius:16px;padding:28px 24px;box-shadow:0 20px 60px rgba(0,0,0,.35);text-align:center}
.gate-logo{font-size:40px;margin-bottom:6px}
.gate-t{font-size:20px;margin:0 0 4px;color:#0F172A}
.gate-sub{font-size:13px;color:#64748B;margin:0 0 18px}
.gate-input{width:100%;box-sizing:border-box;padding:12px 14px;margin-bottom:10px;border:1px solid #E2E8F0;border-radius:10px;font-size:15px;outline:none;-webkit-appearance:none;appearance:none}
.gate-input:focus{border-color:#4F46E5}
.gate-btn{width:100%;padding:12px;border:none;border-radius:10px;background:#4F46E5;color:#fff;font-size:15px;font-weight:600;cursor:pointer}
.gate-btn:active{transform:scale(.98)}
.gate-err{color:#DC2626;font-size:13px;min-height:18px;margin-top:8px}
.gate-hint{font-size:11px;color:#94A3B8;margin:12px 0 0;line-height:1.5}
.gc-main{flex:1;min-width:0;padding:11px 12px 10px;display:flex;flex-direction:column;gap:5px}
.gc-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.gc-title{font-size:16px;font-weight:700;word-break:break-word;flex:1;min-width:0;line-height:1.35;letter-spacing:.2px}
.gc-date{flex:none;align-self:flex-start;font-size:11.5px;font-weight:600;color:var(--ink4);white-space:nowrap;padding-top:2px;letter-spacing:.3px}
.gc-note{font-size:13px;color:var(--ink2);line-height:1.5;white-space:pre-wrap;word-break:break-word}
.gc-note.ph{color:var(--ink4);font-style:italic}
.gc-check{flex:none;display:flex;align-items:center;justify-content:center;width:20px;height:20px;margin-right:6px;margin-top:1px;border-radius:50%;background:var(--green);color:#fff}
.gc-check svg{width:12px;height:12px}
.gc-right{display:flex;align-items:center;justify-content:flex-end;gap:5px;flex:none;align-self:flex-start;flex-wrap:wrap;max-width:50%}
.gc-rep{font-size:10px;font-weight:600;color:var(--ink3);background:var(--bg);border:1px solid var(--line);border-radius:999px;padding:1px 7px;white-space:nowrap;letter-spacing:.2px}
.gc-dim{min-width:22px;text-align:center;padding:2px 6px;font-size:10px;font-weight:700}
.gc-dir{min-width:22px;text-align:center;padding:2px 6px;font-size:10px;font-weight:700}
.flat-dim .gc-dir{display:none}
.gcard.done .gc-title{font-weight:500;color:var(--ink4)}
.gcard.done .gc-rep{color:var(--ink4);background:#F3F4F6}
/* 重复事项符号标识 */
.rep-sym{flex:none;display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;background:#E0F2FE;color:#0284C7;vertical-align:-2px}
.rep-sym svg{width:11px;height:11px}
.gcard.done .rep-sym{background:#E5E7EB;color:#9CA3AF}
.badge{font-size:10.5px;font-weight:600;padding:2px 8px;border-radius:999px;white-space:nowrap;letter-spacing:.3px}
.gc-acts{display:flex;flex-direction:column;gap:0;flex:none;width:40px;border-left:1px solid var(--line);background:var(--bg)}
.gc-acts .ibtn{flex:1;display:flex;align-items:center;justify-content:center;color:var(--ink3);transition:background .15s,color .15s}
.gc-acts .ibtn:active{background:#E5E7EB;color:var(--ink)}
.empty{padding:22px 16px;text-align:center;color:var(--ink3);font-size:13px;background:#fff;border:1px dashed var(--line);border-radius:12px}

/* 倒计时 */
.seg{display:flex;background:var(--bg);border:1px solid var(--line);border-radius:11px;padding:3px;margin-bottom:12px}
.seg-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;min-height:38px;border-radius:9px;font-size:13px;font-weight:600;color:var(--ink3);transition:all .18s}
.seg-btn .cnt{font-size:11px;background:#fff;border:1px solid var(--line);border-radius:999px;padding:0 6px;min-width:16px;text-align:center}
.seg-btn.on{background:#fff;color:var(--ink);box-shadow:var(--sh-card)}
.seg-btn.on .cnt{background:var(--pri-soft);border-color:#C7D2FE;color:var(--pri)}
.cd-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.cd-item{position:relative;display:flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px 12px;
  cursor:pointer;transition:transform .15s ease,box-shadow .18s ease}
.cd-grip{flex:none;width:30px;height:38px;display:flex;align-items:center;justify-content:center;color:var(--ink4);border-radius:8px;cursor:grab;touch-action:none}
.cd-grip:active{background:var(--bg)}
.cd-item.cd-drag{opacity:.55;box-shadow:var(--sh-pop);z-index:5}
.cd-item:active{transform:scale(.98)}
@media (min-width:768px){.cd-item:hover{box-shadow:var(--sh-card)}}
.cd-days{flex:none;width:62px;height:56px;border-radius:11px;background:var(--bg);border:1px solid var(--line);display:flex;flex-direction:column;align-items:center;justify-content:center}
.cd-days .d{font-size:17px;font-weight:800;line-height:1}
.cd-days .u{font-size:10px;color:var(--ink4);margin-top:2px}
.cd-days.ov{background:var(--red-soft);border-color:#FECACA;color:var(--red)}
.cd-days.today{background:var(--green-soft);border-color:#BBF7D0;color:var(--green)}
.cd-days.near{background:var(--orange-soft);border-color:#FDE68A;color:var(--orange)}
.cd-days.his{background:#F3F4F6;color:var(--ink4)}
.cd-info{flex:1;min-width:0}
.cd-t{font-size:14px;font-weight:600;word-break:break-all}
.cd-repsym{display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;border-radius:50%;background:#E0F2FE;color:#0284C7;margin-left:5px;vertical-align:-1px}
.cd-repsym svg{width:10px;height:10px}
.cd-d{font-size:11px;color:var(--ink3);margin-top:2px}
.cd-k{font-size:10px;font-weight:600;color:var(--ink4);margin-top:2px}
.cd-note{font-size:10px;color:var(--ink4);margin-top:2px;line-height:1.4;opacity:.9}

/* 重要节日视觉 */
.cd-item.holiday-spring{background:linear-gradient(135deg,#FF6B6B 0%,#DC2626 100%);border-color:#DC2626;color:#fff}
.cd-item.holiday-spring .cd-t{color:#fff}
.cd-item.holiday-spring .cd-d,.cd-item.holiday-spring .cd-k,.cd-item.holiday-spring .cd-note{color:rgba(255,255,255,.84)}
.cd-item.holiday-spring .cd-days{background:rgba(255,255,255,.18);border-color:rgba(255,255,255,.22);color:#fff}
.cd-item.holiday-spring .cd-repsym{background:rgba(255,255,255,.22);color:#fff}
.cd-item.holiday-spring .cd-grip{color:rgba(255,255,255,.7)}

.cd-item.holiday-national{background:#FEF2F2;border-color:#FECACA}
.cd-item.holiday-national .cd-t{color:#991B1B}
.cd-item.holiday-national .cd-d,.cd-item.holiday-national .cd-k,.cd-item.holiday-national .cd-note{color:#B91C1C}
.cd-item.holiday-national .cd-days{background:#FEE2E2;border-color:#FECACA;color:#991B1B}
.cd-item.holiday-national .cd-repsym{background:#FECACA;color:#991B1B}

.cd-item.holiday-midautumn{background:#FFF7ED;border-color:#FED7AA}
.cd-item.holiday-midautumn .cd-t{color:#9A3412}
.cd-item.holiday-midautumn .cd-d,.cd-item.holiday-midautumn .cd-k,.cd-item.holiday-midautumn .cd-note{color:#C2410C}
.cd-item.holiday-midautumn .cd-days{background:#FFEDD5;border-color:#FED7AA;color:#9A3412}
.cd-item.holiday-midautumn .cd-repsym{background:#FED7AA;color:#9A3412}

.cd-item.holiday-dragonboat{background:#F0FDF4;border-color:#BBF7D0}
.cd-item.holiday-dragonboat .cd-t{color:#166534}
.cd-item.holiday-dragonboat .cd-d,.cd-item.holiday-dragonboat .cd-k,.cd-item.holiday-dragonboat .cd-note{color:#15803D}
.cd-item.holiday-dragonboat .cd-days{background:#DCFCE7;border-color:#BBF7D0;color:#166534}
.cd-item.holiday-dragonboat .cd-repsym{background:#BBF7D0;color:#166534}

.cd-item.holiday-lantern{background:#FFF1F2;border-color:#FECDD3}
.cd-item.holiday-lantern .cd-t{color:#9F1239}
.cd-item.holiday-lantern .cd-d,.cd-item.holiday-lantern .cd-k,.cd-item.holiday-lantern .cd-note{color:#BE123C}
.cd-item.holiday-lantern .cd-days{background:#FFE4E6;border-color:#FECDD3;color:#9F1239}
.cd-item.holiday-lantern .cd-repsym{background:#FECDD3;color:#9F1239}

.cd-item.holiday-wealth{background:linear-gradient(135deg,#FDE68A 0%,#F59E0B 100%);border-color:#F59E0B;color:#78350F}
.cd-item.holiday-wealth .cd-t{color:#78350F}
.cd-item.holiday-wealth .cd-d,.cd-item.holiday-wealth .cd-k,.cd-item.holiday-wealth .cd-note{color:#92400E}
.cd-item.holiday-wealth .cd-days{background:#FEF3C7;border-color:#FCD34D;color:#78350F}
.cd-item.holiday-wealth .cd-repsym{background:#FCD34D;color:#78350F}
.cd-item.holiday-wealth .cd-grip{color:#B45309}

/* 目标复盘 */
.rev-stats{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.rev-stat{display:flex;flex-direction:column;align-items:center;min-width:72px;flex:1;background:var(--bg);border:1px solid var(--line);
  border-radius:12px;padding:9px 8px;cursor:pointer;transition:transform .15s,background .15s,border-color .15s}
.rev-stat:active{transform:scale(.96)}
.rev-stat.on{background:#fff;border-color:var(--ink)}
.rev-stat .v{font-size:17px;font-weight:800;line-height:1.2}
.rev-stat .k{font-size:10.5px;color:var(--ink4);margin-top:2px}
.rev-stat.g .v{color:var(--green)} .rev-stat.p .v{color:var(--pri)} .rev-stat.r .v{color:var(--red)} .rev-stat.o .v{color:var(--orange)}
.rev-filtered{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}
.rf-h{display:flex;align-items:center;justify-content:space-between;padding:2px 2px 6px}
.rf-h span{font-size:12px;font-weight:600;color:var(--ink3)}
.rf-h button{font-size:12px;color:var(--ink4);background:none;border:none;padding:2px 6px;cursor:pointer}
.rf-item{display:flex;gap:9px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:12px;padding:9px 12px;cursor:pointer;transition:background .15s}
.rf-item:active{background:var(--bg)}
.rf-main{flex:1;min-width:0;display:flex;align-items:center;gap:10px}
.rf-title{font-size:15px;font-weight:600;line-height:1.35;word-break:break-word;flex:1;min-width:0}
.rf-title.done{font-weight:500;color:var(--ink4)}
.rf-check{flex:none;display:flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:var(--green);color:#fff}
.rf-check svg{width:11px;height:11px}
.rf-right{display:flex;align-items:center;gap:7px;flex:none;white-space:nowrap}
.rf-dim{font-size:10.5px;font-weight:700;padding:2px 8px;border-radius:999px;background:var(--bg);color:var(--ink3)}
.rf-rep{font-size:10.5px;font-weight:600;padding:2px 8px;border-radius:999px;background:#F0FDF4;color:var(--green)}
.rf-date{font-size:11px;color:var(--ink4)}
.rev-list{display:flex;flex-direction:column;gap:8px}
.rev-item{display:flex;gap:10px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px;align-items:flex-start}
.rev-item .ri-main{flex:1;min-width:0}
.rev-item .ri-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.rev-period{font-size:11px;font-weight:700;padding:2px 9px;border-radius:999px;background:var(--pri-soft);color:var(--pri)}
.rev-date{font-size:11px;color:var(--ink4)}
.rev-content{font-size:13px;color:var(--ink2);margin-top:7px;white-space:pre-wrap;word-break:break-all;line-height:1.6}
.rev-item .gc-acts{flex:none;flex-direction:row;border-left:none;background:none;width:auto}
.rev-item .ibtn{width:40px;height:40px}

/* 底部 */
.foot{text-align:center;font-size:12px;color:var(--ink4);padding:18px 16px calc(14px + env(safe-area-inset-bottom));line-height:1.7;margin-top:6px;border-top:1px solid var(--line)}
.foot-actions{display:flex;justify-content:center;gap:10px;margin-bottom:10px;flex-wrap:wrap}
.foot-caption{opacity:.75}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:5px;min-height:44px;padding:0 13px;border-radius:10px;
  font-size:13px;font-weight:600;background:#fff;border:1px solid var(--line);color:var(--ink);
  transition:transform .18s ease,box-shadow .18s ease,background .18s}
.btn:hover{box-shadow:var(--sh-card)}
.btn:active{transform:scale(.96)}
.btn.pri{background:var(--pri);border-color:var(--pri);color:#fff;box-shadow:0 2px 8px rgba(79,70,229,.3)}
.btn.pri:hover{background:var(--pri-700)}
.btn.danger{background:var(--red-soft);border-color:#FECACA;color:var(--red)}
.btn svg{flex:none}
.btn.sm{min-height:34px;padding:0 10px;font-size:12px;border-radius:8px}

/* 弹窗 */
.mask{position:fixed;inset:0;background:rgba(17,24,39,.45);z-index:50;opacity:0;pointer-events:none;transition:opacity .18s}
.mask.show{opacity:1;pointer-events:auto}
.modal{position:fixed;left:50%;bottom:0;transform:translate(-50%,100%);width:100%;max-width:540px;background:#fff;border-radius:22px 22px 0 0;
  z-index:51;transition:transform .26s cubic-bezier(.22,1,.36,1),opacity .18s;max-height:90vh;display:flex;flex-direction:column;padding-bottom:env(safe-area-inset-bottom);opacity:0}
.modal.show{transform:translate(-50%,0);opacity:1}
@media (min-width:640px){.modal{bottom:7%;transform:translate(-50%,100%);border-radius:22px;box-shadow:var(--sh-pop)}
  .modal.show{transform:translate(-50%,0)}}
.m-grab{width:38px;height:4px;border-radius:2px;background:#E3E5EA;margin:10px auto 2px}
.m-head{display:flex;align-items:center;justify-content:space-between;padding:6px 18px 0}
.m-head b{font-size:13px;font-weight:600;color:var(--ink4);letter-spacing:.4px}
.m-x{width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:10px;color:var(--ink3);font-size:22px;transition:background .15s}
.m-x:active{background:var(--bg)}
.m-body{padding:14px 20px 8px;overflow-y:auto}
.fld-hero{margin:2px 0 18px;padding-bottom:14px;border-bottom:1px solid var(--line)}
.fld-hero input{width:100%;border:none;outline:none;font-size:21px;font-weight:700;color:var(--ink);background:transparent;padding:2px 0}
.fld-hero input::placeholder{color:var(--ink4);font-weight:600}
.grp{margin-bottom:18px}
.grp-label{font-size:12px;font-weight:600;color:var(--ink3);margin-bottom:9px;letter-spacing:.3px}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{flex:none;display:inline-flex;align-items:center;justify-content:center;min-height:38px;padding:0 15px;border-radius:999px;
  background:#fff;border:1px solid var(--line);color:var(--ink3);font-size:13px;font-weight:600;white-space:nowrap;transition:transform .15s ease,background .15s,color .15s,border-color .15s}
.chip:active{transform:scale(.95)}
.chip.on{background:var(--ink);border-color:var(--ink);color:#fff}
.chip.colored.on{background:var(--cc);border-color:var(--cc);color:#fff}
.chip.colored:not(.on){border-color:var(--cc);color:var(--cc)}
.chip.add-dir{background:var(--pri-soft);border-color:transparent;color:var(--pri);font-weight:700}
.chip.add-dir:active{transform:scale(.95)}
.dir-remove{margin-left:7px;color:currentColor;opacity:.55;font-size:16px;line-height:1;cursor:pointer}
.dir-remove:hover,.dir-remove:focus{opacity:1}
.dir-adder{display:flex;gap:8px;width:100%}
.dir-adder input{flex:1;min-width:0;height:38px;border:1px solid var(--line);border-radius:10px;padding:0 12px;outline:none;font-size:14px}
.dir-adder input:focus{border-color:var(--pri);box-shadow:0 0 0 3px rgba(79,70,229,.12)}
.clean-input{width:100%;min-height:44px;border:1px solid var(--line);border-radius:12px;padding:11px 13px;background:#fff;outline:none;
  font-size:15px;transition:border-color .15s,box-shadow .15s}
.clean-input:focus{border-color:var(--pri);box-shadow:0 0 0 3px rgba(79,70,229,.12)}
textarea.clean-input{resize:vertical;line-height:1.6;min-height:78px}
.sel{width:100%;height:44px;border:1px solid var(--line);border-radius:12px;padding:0 38px 0 13px;background:#fff url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%236B7280' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'><path d='M6 9l6 6 6-6'/></svg>") no-repeat right 13px center / 14px;
  font-size:15px;color:var(--ink);outline:none;-webkit-appearance:none;appearance:none;cursor:pointer;transition:border-color .15s,box-shadow .15s}
.sel:focus{border-color:var(--pri);box-shadow:0 0 0 3px rgba(79,70,229,.12)}
.sel:active{background:#FAFAFB}
.sel.sm2{flex:1;min-width:0;height:44px}
.lunar-pick{display:flex;gap:10px;align-items:center;margin-top:10px}
.switch{width:50px;height:30px;border-radius:999px;background:#E3E5EA;position:relative;transition:background .18s;flex:none}
.switch[aria-pressed="true"]{background:var(--pri)}
.switch .knob{position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(16,24,40,.25);transition:transform .18s}
.switch[aria-pressed="true"] .knob{transform:translateX(20px)}
.m-err{color:var(--red);font-size:12px;margin-top:2px;display:none}
.m-foot{display:flex;gap:10px;padding:8px 20px calc(16px + env(safe-area-inset-bottom));border-top:1px solid var(--line)}
.m-foot .btn{flex:none}
.btn.flex1{flex:1}
.btn.danger.ghost{background:transparent;border-color:transparent;color:var(--red);min-width:auto;padding:0 10px}
.btn.danger.ghost:active{background:var(--red-soft)}

/* 自绘确认弹窗 */
.mask2{position:fixed;inset:0;background:rgba(17,24,39,.45);z-index:55;opacity:0;pointer-events:none;transition:opacity .18s}
.mask2.show{opacity:1;pointer-events:auto}
.confirm{position:fixed;left:50%;top:50%;transform:translate(-50%,-46%) scale(.97);width:min(86vw,360px);background:#fff;border-radius:16px;
  box-shadow:var(--sh-pop);z-index:56;opacity:0;pointer-events:none;transition:all .2s ease;padding:20px 18px 14px}
.confirm.show{opacity:1;transform:translate(-50%,-50%) scale(1);pointer-events:auto}
.cf-title{font-size:16px;font-weight:700;margin-bottom:8px}
.cf-body{font-size:14px;color:var(--ink2);line-height:1.6;margin-bottom:16px;word-break:break-all}
.cf-foot{display:flex;gap:10px}
.cf-foot .btn{flex:1}

/* toast */
.toast{position:fixed;left:50%;bottom:calc(30px + env(safe-area-inset-bottom));transform:translateX(-50%) translateY(20px);background:#111827;color:#fff;
  font-size:13px;padding:10px 16px;border-radius:10px;opacity:0;pointer-events:none;transition:all .25s;z-index:60;max-width:86vw;text-align:center}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
