/* finesse · register=h5 · morph=A-app-shell
 * A=中性 #F7F5F2 + GS 珊瑚 #FF7A45 + 紫/黄/薄荷/天蓝（一个功能一个色调）
 * B=ui-rounded（SF Rounded），大字 700 / 小标签 650，字距 -.7px ~ .06em
 * C=大圆弧进度卡 + 三列大数字统计 + 单行横滑标签
 * D=CSS-only：圆弧描边入场 1.1s、页面淡入上浮、按压回弹
 * E=无边框软浮起（大半径扩散阴影），奶油底上浮白卡
 * SOUL=8 SPECTACLE=4 DENSITY=6
 * 参考对象：Gentler Streak（色调 / 圆弧 / 大字 / 卡片形态）
 */
/* app.css —— 苹果式设计语言
   要点：背景 #f5f5f7 而非纯白；卡片靠「白底 vs 灰底」的对比分组，不用边框；
   单一强调色 #0071e3 只给可点元素；字距全线收紧；阴影极少且柔和。
   内容最宽 980px —— 桌面宽度下拉满全屏是之前最明显的观感问题。 */
:root{
  /* ============================================================
     参考 Headspace 的配色系统：
       暖奶油底 + 单一橙色主色 + 6 个柔和色相各司其职。
     和「彩虹」的区别 —— 这里的每个色都有固定含义，不是随机的模块色。
     ============================================================ */
  --page:#FFF6EF;            /* 奶油底 */
  --bg:#FFF6EF;
  --card:#FFFCF9;            /* 卡片：比底更亮一点，但不纯白 */
  --group:#FCEFE4;           /* 内嵌块 / 图标底 */
  --panel-2:#FCEFE4;

  --ink:#2B1D14;             /* 暖近黑 */
  --ink2:#5A4436;
  --muted:#8C7263;
  --faint:#B39C8B;

  --line:rgba(43,29,20,.07);
  --line2:rgba(43,29,20,.045);
  --sep:rgba(43,29,20,.08);

  --brand:#F4701F;           /* Headspace 橙 */
  --brand-2:#FF8A3D;
  --brand-soft:rgba(244,112,31,.12);
  --link:#E05F12;

  /* 6 个柔和色相 —— 每个只承担一个语义 */
  --peach:#FFD9B8;   --peach-ink:#B4651F;
  --coral:#FFB9A8;   --coral-ink:#B74A32;
  --sky:#C3DBF2;     --sky-ink:#2D5F8A;
  --lav:#DCCFF0;     --lav-ink:#62468C;
  --sage:#C9E0C3;    --sage-ink:#3F6B3A;
  --butter:#FFE7A8;  --butter-ink:#8A6412;

  --live:#3FA96B;   --live-soft:rgba(63,169,107,.14);
  --soon:#F4701F;   --soon-soft:rgba(244,112,31,.12);
  --past:#A08C7C;   --past-soft:rgba(43,29,20,.05);

  --ok:#3FA96B;   --ok-soft:rgba(63,169,107,.14);
  --warn:#D9902B; --warn-soft:rgba(217,144,43,.14);
  --no:#D9534F;   --no-soft:rgba(217,83,79,.12);
  --tap:rgba(43,29,20,.05);

  /* 更圆的形状 —— Headspace 的卡片是 24–30 */
  --r:24px;
  --r-lg:30px;
  --r-sm:16px;
  --r-xs:11px;
  --r-pill:980px;

  /* 柔和上浮阴影，不用重投影 */
  --sh:0 2px 6px rgba(120,70,30,.05), 0 10px 28px -14px rgba(120,70,30,.14);
  --sh-lg:0 24px 60px -30px rgba(120,70,30,.28);

  --gap:16px;
  --pad:20px;
  --safe-b:env(safe-area-inset-bottom,0px);
  --safe-t:env(safe-area-inset-top,0px);

  /* 圆体字：Safari 里 ui-rounded 就是 SF Rounded，最接近 Headspace 的字感 */
  --font-round:ui-rounded,"SF Pro Rounded","Hiragino Maru Gothic ProN",
               -apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;
  --font-display:var(--font-round);

  /* 模块配色：一个模块一个固定色相 */
  --c-trip:#F4701F;   --c-trip-bg:#FFE6D2;
  --c-map:#2D5F8A;    --c-map-bg:#C3DBF2;
  --c-money:#B4651F;  --c-money-bg:#FFD9B8;
  --c-prep:#62468C;   --c-prep-bg:#DCCFF0;
  --c-weather:#3F6B3A;--c-weather-bg:#C9E0C3;
  --c-ticket:#8A6412; --c-ticket-bg:#FFE7A8;
  --c-hotel:#3F6B3A;  --c-hotel-bg:#C9E0C3;
  --c-transit:#2D5F8A;--c-transit-bg:#C3DBF2;
  --c-people:#B74A32; --c-people-bg:#FFB9A8;
  --c-fx:#62468C;     --c-fx-bg:#DCCFF0;
}

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0}
body{
  background:var(--bg); color:var(--ink);
  font:16px/1.47 -apple-system,BlinkMacSystemFont,"SF Pro Text","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  letter-spacing:-.374px;
  font-feature-settings:"tnum";
  -webkit-text-size-adjust:100%;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3,.sec-t,.bill-h,.tt,.qhead,.kw-t,.rc-m b,.cloth-h b{letter-spacing:-.28px}
.sec-t,.bill-h,.qhead{font-weight:600}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer;border:none;background:none;padding:0;text-align:left}
a{color:var(--brand);text-decoration:none}

/* ---------------- 顶栏 ---------------- */
.hdr{
  position:sticky; top:0; z-index:40;
  background:rgba(245,245,247,.82); backdrop-filter:saturate(180%) blur(20px);
  -webkit-backdrop-filter:saturate(180%) blur(20px);
  padding:calc(var(--safe-t) + 8px) 16px 9px; border-bottom:1px solid transparent;
  display:flex; align-items:center; gap:8px; min-height:50px;
  transition:border-color .2s;
}
.hdr.scrolled{border-bottom-color:var(--line)}
.hdr .back{font-size:24px;line-height:1;color:var(--brand);padding:2px 8px 4px 0;margin-left:-4px;font-weight:400}
.hdr h1{font-size:17px;font-weight:650;margin:0;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;letter-spacing:-.01em}
.hdr .act{font-size:15px;color:var(--brand);white-space:nowrap;padding:4px 0;font-weight:550}
/* 内容统一最宽 980px 并居中 —— 之前桌面宽度下拉满全屏，是观感最差的一处 */
.wrap{padding:14px 16px calc(44px + var(--safe-b));max-width:980px;margin:0 auto}
.hdr .hdr-in{max-width:980px;margin:0 auto;display:flex;align-items:center;gap:6px}

/* ---------------- 门户 ---------------- */
.focus{border-radius:22px;padding:20px;color:#fff;position:relative;overflow:hidden;margin-bottom:18px}
.focus.live{background:linear-gradient(135deg,#0e9f6e,#12b981)}
.focus.soon{background:linear-gradient(135deg,#2f6bff,#5b8cff)}
.focus.done{background:linear-gradient(135deg,#4b5563,#6b7280)}
.focus::after{content:"";position:absolute;right:-46px;top:-56px;width:172px;height:172px;border-radius:50%;background:rgba(255,255,255,.10)}
.frow{display:flex;align-items:center;gap:8px;margin-bottom:11px;position:relative}
.fphase{font-size:11.5px;font-weight:700;letter-spacing:.06em;background:rgba(255,255,255,.22);border-radius:20px;padding:3px 10px}
.fdays{font-size:12.5px;opacity:.9}
.ftitle{font-size:23px;font-weight:700;letter-spacing:-.02em;line-height:1.25;position:relative}
.fsub{font-size:13.5px;opacity:.88;margin-top:7px;position:relative}
.fmeta{font-size:12.5px;opacity:.8;margin-top:9px;position:relative;line-height:1.5}
.fbar{height:5px;border-radius:5px;background:rgba(255,255,255,.28);overflow:hidden;margin-top:13px;position:relative}
.fbar span{display:block;height:100%;background:#fff;border-radius:5px;transition:width .5s}

.gate{display:grid;grid-template-columns:1fr 1fr;gap:11px;margin-bottom:6px}
.gate a{
  background:var(--card);border-radius:var(--r);padding:16px 15px;color:var(--ink);
  box-shadow:var(--sh);display:block;position:relative;min-height:104px;
}
.gate a:active{background:var(--tap)}
.gate a .ic{font-size:24px;display:block;margin-bottom:11px;line-height:1}
.gate a .gt{display:block;font-weight:650;font-size:15.5px;letter-spacing:-.01em}
.gate a .sub{display:block;font-weight:400;font-size:12.5px;color:var(--muted);margin-top:5px;line-height:1.45}
.gate a .go{display:none}

.sec-t{font-size:12.5px;font-weight:650;color:var(--muted);letter-spacing:.04em;margin:24px 0 10px;padding-left:2px}
.mini{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.mini a{
  background:var(--card);border-radius:var(--r-sm);padding:13px 14px;color:var(--ink);
  box-shadow:var(--sh);display:flex;align-items:flex-start;gap:10px;font-size:14.5px;
}
.mini a:active{background:var(--tap)}
.mini a>span:first-child{flex:0 0 auto;line-height:1.45;font-size:16px}
.mini a>span:last-child{font-weight:600;line-height:1.4;min-width:0}
.mini .sub{display:block;font-size:11.5px;color:var(--muted);margin-top:3px;font-weight:400;line-height:1.42}

/* 旅程行 */
.triprow{
  display:flex;align-items:center;gap:12px;width:100%;background:var(--card);
  border-radius:var(--r-sm);padding:14px;margin-bottom:9px;box-shadow:var(--sh);
}
.triprow:active{background:var(--tap)}
.triprow.on{box-shadow:0 0 0 2px var(--brand), var(--sh)}
.tr-b{
  flex:0 0 auto;font-size:11px;font-weight:700;border-radius:7px;padding:3px 8px;letter-spacing:.03em;
  background:var(--past-soft);color:var(--past);
}
.triprow.active .tr-b,.triprow.live .tr-b{background:var(--live-soft);color:var(--live)}
.triprow.upcoming .tr-b{background:var(--soon-soft);color:var(--soon)}
.tr-m{flex:1;min-width:0}
.tr-m b{display:block;font-size:15px;font-weight:620;letter-spacing:-.01em}
.tr-m i{display:block;font-style:normal;font-size:12.5px;color:var(--muted);margin-top:3px}
.tr-g{color:#c9cfd8;font-size:18px}

/* ---------------- 行程页头（深色 hero，总览与按天回看共用） ---------------- */
.triphead{
  margin-bottom:18px;padding:20px;border-radius:var(--r);color:#fff;
  background:linear-gradient(160deg,#3a4a5c 0%,#26313d 100%);
  position:relative;overflow:hidden;
}
.triphead::after{
  content:"";position:absolute;width:210px;height:210px;border-radius:50%;
  right:-70px;top:-90px;background:rgba(255,255,255,.07);
}
.th-title{font-size:25px;font-weight:680;letter-spacing:-.5px;line-height:1.2;position:relative}
.th-sub{font-size:13px;color:rgba(255,255,255,.66);margin-top:8px;position:relative;letter-spacing:-.12px}
.th-sub .dot{color:rgba(255,255,255,.34)}
.th-cities{display:flex;flex-wrap:wrap;gap:6px;margin-top:13px;position:relative}
.th-cities span{
  font-size:12px;background:rgba(255,255,255,.14);color:rgba(255,255,255,.92);
  border-radius:20px;padding:4px 11px;letter-spacing:-.08px;
}
.fbar{position:relative}
.triphead .fbar{background:rgba(255,255,255,.18)}
.triphead .fbar>span{background:#fff}

.daylist{display:flex;flex-direction:column;gap:9px}
.dcard{
  display:flex;align-items:flex-start;gap:14px;width:100%;background:var(--card);
  border-radius:var(--r);padding:15px 14px;box-shadow:var(--sh);
}
.dcard:active{background:var(--tap)}
.dcard.today{box-shadow:0 0 0 2px var(--brand), var(--sh)}
.dc-left{flex:0 0 40px;text-align:center;padding-top:1px}
.dc-left b{display:block;font-size:21px;font-weight:700;color:var(--brand);line-height:1;letter-spacing:-.02em}
.dc-left i{display:block;font-style:normal;font-size:10.5px;color:var(--muted);margin-top:3px}
.dcard.today .dc-left b{color:var(--live)}
.dc-body{flex:1;min-width:0}
.dc-top{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.dc-top b{font-size:15px;font-weight:650;letter-spacing:-.01em}
.dc-top i{font-style:normal;font-size:12.5px;color:var(--muted)}
.dc-top em{font-style:normal;font-size:11.5px;color:var(--brand);background:var(--brand-soft);border-radius:6px;padding:2px 8px}
.dc-top em.live-em{color:var(--live);background:var(--live-soft)}
.dc-sum{display:block;font-size:13.5px;color:var(--ink2);margin-top:7px;line-height:1.55}
.dc-meta{display:block;font-size:12px;color:var(--muted);margin-top:7px}
.dc-meta em{font-style:normal;color:var(--warn);background:var(--warn-soft);border-radius:5px;padding:1px 6px;font-weight:600}
.dc-go{color:#c9cfd8;font-size:18px;align-self:center}

/* ---------------- 卡片 / 通用 ---------------- */
.card{background:var(--card);border-radius:var(--r);padding:16px 15px;margin-bottom:11px;box-shadow:var(--sh)}
.card.tappable:active,.card.tap:active{background:var(--tap)}
.empty{text-align:center;color:var(--muted);padding:46px 20px;font-size:14.5px;line-height:1.7}
.hint{font-size:12.5px;color:var(--muted);line-height:1.6}

/* ---------------- 条目 ---------------- */
.item{
  background:var(--card);border-radius:var(--r-sm);padding:13px 14px;margin-bottom:8px;
  display:flex;gap:12px;align-items:flex-start;position:relative;box-shadow:var(--sh);
}
.item:active{background:var(--tap)}
.item .tm{flex:0 0 46px;font-size:13.5px;font-weight:650;color:var(--brand);font-variant-numeric:tabular-nums;padding-top:2px}
.item .tm.none{color:#ccd2da;font-weight:400}
.item .bd{flex:1;min-width:0}
.item .tt{font-size:15px;font-weight:600;line-height:1.45;display:flex;gap:7px;align-items:flex-start;letter-spacing:-.005em}
.item .tt .ty{flex:0 0 auto;line-height:1.5}
.item .nt{font-size:13px;color:var(--ink2);margin-top:6px;white-space:pre-wrap;line-height:1.65}
.item .meta{font-size:12px;color:var(--muted);margin-top:7px;display:flex;flex-wrap:wrap;gap:4px 12px;align-items:center}
.item .lk{font-size:12.5px}
.item .lk a{margin-right:11px;white-space:nowrap}
.item.done{opacity:.45}
.item.done .tt{text-decoration:line-through}
.item .ck{position:absolute;right:11px;bottom:10px;font-size:19px;color:#ccd2da;line-height:1}
.item.done .ck{color:var(--ok)}
.item .route{font-size:12.5px;color:var(--ink2);margin-top:7px;background:var(--line2);border-radius:9px;padding:8px 11px;line-height:1.75}
.item .route b{color:var(--ink);font-weight:620}
.item .route .rn{color:var(--brand);font-weight:620}
.item.sel{box-shadow:0 0 0 2px var(--brand), var(--sh)}

.tag{display:inline-block;font-size:11px;font-weight:650;border-radius:6px;padding:2px 7px;line-height:1.6}
.tag.w{background:var(--warn-soft);color:var(--warn)}
.tag.o{background:var(--ok-soft);color:var(--ok)}
.tag.b{background:var(--brand-soft);color:var(--brand)}
.tag.g{background:var(--past-soft);color:var(--ink2)}
.tag.n{background:var(--no-soft);color:var(--no)}

/* ---------------- 表单 ---------------- */
.f{margin-bottom:14px}
.f label{display:block;font-size:12.5px;color:var(--ink2);font-weight:600;margin-bottom:6px}
.f input,.f textarea,.f select{
  width:100%;background:var(--bg);border:1px solid transparent;border-radius:11px;
  padding:11px 13px;font-size:15.5px;outline:none;transition:border-color .15s,background .15s;
}
.f input:focus,.f textarea:focus,.f select:focus{background:var(--card);border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}
.f textarea{min-height:88px;resize:vertical;line-height:1.6}
.f .hint{font-size:12px;color:var(--muted);margin-top:6px}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:11px}

.btn{display:block;width:100%;background:var(--brand);color:#fff;font-weight:620;font-size:16px;border-radius:13px;padding:14px;text-align:center;box-shadow:0 2px 8px rgba(47,107,255,.24)}
.btn:active{opacity:.88}
.btn.ghost{background:var(--card);color:var(--brand);box-shadow:var(--sh)}
.btn.danger{background:var(--card);color:var(--no);box-shadow:var(--sh)}
.typepick{display:flex;flex-wrap:wrap;gap:8px}
.typepick button{border:1px solid var(--line);background:var(--card);border-radius:10px;padding:9px 13px;font-size:13.5px;font-weight:550;color:var(--ink2)}
.typepick button.on{border-color:var(--brand);background:var(--brand-soft);color:var(--brand);font-weight:650}
.typepick a.btn.ghost{box-shadow:none;border:1px solid var(--line)}
.mini-btn{border:1px solid var(--line);background:var(--card);border-radius:8px;padding:5px 11px;font-size:12.5px;color:var(--brand);font-weight:600}

.kv{display:flex;justify-content:space-between;gap:14px;padding:9px 0;border-bottom:1px solid var(--line2);font-size:14.5px}
.kv:last-child{border-bottom:none}
.kv .k{color:var(--ink2);flex:0 0 auto}
.kv .v{font-weight:600;font-variant-numeric:tabular-nums;min-width:0}
.kv.big .v{font-size:19px;color:var(--brand)}

/* ---------------- 记账 ---------------- */
.tabs2{display:flex;gap:8px;margin-bottom:12px;background:var(--past-soft);border-radius:14px;padding:4px}
.tabs2 button{
  flex:1;border-radius:11px;padding:11px 8px;font-size:14px;font-weight:600;color:var(--ink2);
  display:flex;align-items:center;justify-content:center;gap:7px;
}
.tabs2 button b{font-size:11.5px;background:rgba(0,0,0,.06);border-radius:20px;padding:1px 7px;font-weight:700}
.tabs2 button.on{background:var(--card);color:var(--ink);box-shadow:var(--sh)}
.tabs2 button.on b{background:var(--brand-soft);color:var(--brand)}

.lgroup{background:var(--card);border-radius:var(--r);padding:6px 15px;margin-bottom:10px;box-shadow:var(--sh)}
.lg-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:12px 0 9px;border-bottom:1px solid var(--line2)}
.lg-head b{font-size:14.5px;font-weight:650}
.lg-head b i{font-style:normal;font-size:12px;color:var(--muted);font-weight:400;margin-left:3px}
.lg-head span{font-size:12.5px;color:var(--muted);font-variant-numeric:tabular-nums}
.ledrow{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--line2)}
.lgroup .ledrow:last-child{border-bottom:none}
.ledrow .lr-main{min-width:0}
.ledrow .lr-main b{display:block;font-size:14.5px;font-weight:600}
.ledrow .lr-main i{display:block;font-style:normal;font-size:12px;color:var(--muted);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ledrow .lr-right{text-align:right;flex:0 0 auto}
.ledrow .lr-right b{display:block;font-size:14.5px;font-weight:650;font-variant-numeric:tabular-nums}
.ledrow .lr-right i{display:block;font-style:normal;font-size:11.5px;color:var(--muted);margin-top:2px}
.ledrow .lr-right i.warn{color:var(--warn)}

.settle-row{display:flex;align-items:center;gap:10px;padding:11px 0;border-bottom:1px solid var(--line2);font-size:14.5px}
.settle-row:last-child{border-bottom:none}
.settle-row .amt{margin-left:auto;font-weight:700;font-variant-numeric:tabular-nums;color:var(--brand);font-size:15.5px}

/* ---------------- 地图 ---------------- */
#mapwrap{position:relative;border-radius:var(--r);overflow:hidden;background:#e9eef4;box-shadow:var(--sh)}
#map{height:50vh;min-height:290px;width:100%}
.mk{width:26px;height:26px;cursor:pointer}
.mk .mk-d{display:block;width:13px;height:13px;margin:6.5px;border-radius:50%;background:#94a3b8;border:2px solid #fff;box-shadow:0 1px 4px rgba(0,0,0,.28)}
.mk.mk-hl .mk-n{display:flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;
  background:var(--brand);color:#fff;font-size:12.5px;font-weight:700;border:2px solid #fff;box-shadow:0 2px 8px rgba(47,107,255,.5)}
.maplibregl-popup-content{font:13px/1.5 -apple-system,BlinkMacSystemFont,"PingFang SC",sans-serif;padding:9px 12px;border-radius:11px;box-shadow:var(--sh-lg)}
.maplibregl-popup-content b{font-weight:650}
.maplibregl-ctrl-attrib{font-size:10px}
.mapload{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;
  background:#eef2f7;color:var(--ink2);font-size:13.5px;z-index:5;padding:22px}
.spin{width:22px;height:22px;border:2.5px solid #c8d4e0;border-top-color:var(--brand);border-radius:50%;animation:sp .8s linear infinite}
@keyframes sp{to{transform:rotate(360deg)}}

.chips{display:flex;gap:7px;overflow-x:auto;padding:11px 0 2px;-webkit-overflow-scrolling:touch}
.chips::-webkit-scrollbar{display:none}
.chips button{flex:0 0 auto;background:var(--card);border-radius:20px;padding:7px 14px;font-size:13px;color:var(--ink2);box-shadow:var(--sh)}
.chips button.on{background:var(--brand);color:#fff;font-weight:650;box-shadow:0 2px 8px rgba(47,107,255,.28)}

.qcard{background:var(--card);border-radius:var(--r);padding:16px 15px;margin-bottom:11px;box-shadow:var(--sh)}
.qhead{font-size:15px;font-weight:650;letter-spacing:-.01em}
.qask{background:var(--brand-soft);color:var(--brand);border-radius:11px;padding:11px 13px;font-size:14.5px;line-height:1.6;margin-top:11px;font-weight:550}

/* ---------------- 评分条 ---------------- */
.scorebar{position:relative;height:22px;background:var(--line2);border-radius:8px;overflow:hidden;margin:9px 0}
.scorebar span{position:absolute;left:0;top:0;bottom:0;background:linear-gradient(90deg,var(--brand-2),var(--brand));border-radius:8px}
.scorebar b{position:absolute;right:9px;top:0;line-height:22px;font-size:12.5px;font-weight:700}

.tagpick{display:flex;flex-wrap:wrap;gap:7px}

/* ---------------- 下拉 / 提示 ---------------- */
.dd{position:relative}
.dd .list{position:absolute;left:0;right:0;top:100%;z-index:20;background:var(--card);border-radius:13px;margin-top:6px;
  max-height:230px;overflow:auto;box-shadow:var(--sh-lg);display:none}
.dd .list.on{display:block}
.dd .list button{display:block;width:100%;padding:11px 14px;font-size:15px;border-bottom:1px solid var(--line2)}
.dd .list button:last-child{border-bottom:none}
.dd .list button:active{background:var(--tap)}

#toast{
  position:fixed;left:50%;bottom:calc(30px + var(--safe-b));transform:translateX(-50%) translateY(10px);
  background:rgba(17,24,39,.94);color:#fff;font-size:14px;padding:11px 18px;border-radius:13px;
  opacity:0;pointer-events:none;transition:.24s;z-index:99;max-width:86vw;text-align:center;line-height:1.5;
  box-shadow:var(--sh-lg);
}
#toast.on{opacity:1;transform:translateX(-50%) translateY(0)}

/* ---------------- 旅行总帐单 ---------------- */
.bill{background:var(--card);border-radius:var(--r);box-shadow:var(--sh);margin-bottom:14px;overflow:hidden}
.bill-top{background:linear-gradient(135deg,#2f6bff,#5b8cff);color:#fff;padding:19px 17px 17px;position:relative;overflow:hidden}
.bill-top::after{content:"";position:absolute;right:-40px;top:-50px;width:150px;height:150px;border-radius:50%;background:rgba(255,255,255,.10)}
.bill-label{font-size:12px;font-weight:650;letter-spacing:.08em;opacity:.85;position:relative}
.bill-total{font-size:32px;font-weight:700;letter-spacing:-.03em;margin-top:5px;line-height:1.1;position:relative}
.bill-sub{font-size:12.5px;opacity:.85;margin-top:6px;position:relative}
.bill-warn{font-size:12px;margin-top:11px;background:rgba(255,255,255,.18);border-radius:9px;padding:8px 10px;line-height:1.55;position:relative}
.bill-sec{padding:15px 17px;border-top:1px solid var(--line2)}
.bill-h{font-size:12.5px;font-weight:650;color:var(--muted);letter-spacing:.03em;margin-bottom:11px}
.catrow{display:flex;align-items:center;gap:10px;margin-bottom:9px;font-size:13.5px}
.catrow:last-child{margin-bottom:0}
.cr-n{flex:0 0 54px;color:var(--ink2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cr-bar{flex:1;height:7px;background:var(--line2);border-radius:5px;overflow:hidden;min-width:22px}
.cr-bar i{display:block;height:100%;background:linear-gradient(90deg,var(--brand-2),var(--brand));border-radius:5px}
.cr-bar i.dim{background:linear-gradient(90deg,#9db9ff,#7ea3ff)}
.cr-v{flex:0 0 auto;font-weight:620;font-variant-numeric:tabular-nums;font-size:13.5px;min-width:78px;text-align:right}
.cr-p{flex:0 0 34px;text-align:right;color:var(--muted);font-size:12px}
.bill-kv{display:flex;justify-content:space-between;gap:12px;font-size:14px;padding:6px 0;color:var(--ink2)}
.bill-kv b{color:var(--ink);font-weight:650;font-variant-numeric:tabular-nums}
.bill-settle{display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:15px;font-weight:620;margin-top:11px;padding:11px 13px;background:var(--brand-soft);border-radius:11px;color:var(--brand)}
.bill-settle b{font-size:17px;font-variant-numeric:tabular-nums}
.bill-quiet{font-size:13px;color:var(--muted);margin-top:9px}

/* ---------------- 行内入口卡 ---------------- */
.rowcard{display:flex;align-items:center;gap:13px;width:100%;background:var(--card);border-radius:var(--r);
  padding:15px 16px;margin-bottom:11px;box-shadow:var(--sh)}
.rowcard:active{background:var(--tap)}
.rc-ic{flex:0 0 auto;font-size:21px;line-height:1}
.rc-m{flex:1;min-width:0}
.rc-m b{display:block;font-size:15px;font-weight:620}
.rc-m i{display:block;font-style:normal;font-size:12.5px;color:var(--muted);margin-top:3px;line-height:1.45}
.rc-g{color:#c9cfd8;font-size:18px}

/* ---------------- 预约进度 ---------------- */
.tkrow{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--line2)}
.tkrow:last-child{border-bottom:none}
.tk-m{flex:1;min-width:0}
.tk-m b{display:block;font-size:14.5px;font-weight:600}
.tk-m i{display:block;font-style:normal;font-size:12px;color:var(--muted);margin-top:2px}
.tk-s{flex:0 0 auto;font-size:11.5px;font-weight:650;border-radius:20px;padding:4px 11px;background:var(--warn-soft);color:var(--warn)}
.tk-s.on{background:var(--ok-soft);color:var(--ok)}

/* ---------------- 折叠清单组 ---------------- */
.gcard{background:var(--card);border-radius:var(--r);box-shadow:var(--sh);margin-bottom:10px;overflow:hidden}
.ghead{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;padding:15px 16px}
.ghead:active{background:var(--tap)}
.gh-l{display:flex;align-items:baseline;gap:9px;min-width:0}
.gh-l b{font-size:15px;font-weight:620}
.gh-l i{font-style:normal;font-size:12.5px;color:var(--muted);font-variant-numeric:tabular-nums}
.gh-r{font-size:12.5px;color:var(--brand);flex:0 0 auto;display:flex;align-items:center;gap:4px}
.gh-r em{font-style:normal;font-size:15px;line-height:1;transition:transform .18s}
.gh-r em.rr{transform:rotate(90deg)}
.gh-r em.dd{transform:rotate(-90deg)}
.gbody{padding:0 16px 6px}
.gitem{display:flex;align-items:center;gap:11px;padding:10px 0;border-bottom:1px solid var(--line2);font-size:14.5px}
.gitem:last-child{border-bottom:none}
.gitem .gi-b{flex:0 0 auto;font-size:17px;color:#ccd2da;line-height:1}
.gitem .gi-t{flex:1;min-width:0;line-height:1.45}
.gitem.done{opacity:.45}
.gitem.done .gi-b{color:var(--ok)}
.gitem.done .gi-t{text-decoration:line-through}

/* ---------------- 天气表 ---------------- */
.wxwrap{overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:var(--r);background:var(--card);box-shadow:var(--sh);margin-bottom:11px}
.wxwrap::-webkit-scrollbar{height:0}
table.wx{border-collapse:collapse;font-size:12.5px;min-width:100%}
table.wx th,table.wx td{padding:10px 8px;text-align:center;white-space:nowrap;border-bottom:1px solid var(--line2);vertical-align:top}
table.wx thead th{background:var(--line2);font-size:11.5px;color:var(--ink2);font-weight:650;position:sticky;top:0}
table.wx thead th i{display:block;font-style:normal;font-size:10.5px;color:var(--muted);font-weight:400;margin-top:2px}
table.wx tbody th{text-align:left;font-weight:650;font-size:12.5px;position:sticky;left:0;background:var(--card);padding-left:13px}
table.wx td .wx-ic{display:block;font-size:16px;line-height:1.3}
table.wx td .wx-t{display:block;font-weight:650;font-variant-numeric:tabular-nums;margin-top:2px}
table.wx td .wx-n{display:block;font-size:10.5px;color:var(--muted);margin-top:1px}
table.wx td .wx-p{display:block;font-size:10.5px;color:var(--brand);margin-top:1px}
table.wx td.nil{color:#ccd2da}
table.wx tr:last-child th,table.wx tr:last-child td{border-bottom:none}
.tiprow{font-size:13.5px;color:var(--ink2);line-height:1.75}

/* ---------------- 地点关键词 ---------------- */
.kwrow{background:var(--card);border-radius:var(--r);padding:14px 15px;margin-bottom:10px;box-shadow:var(--sh)}
.kw-h{font-size:12.5px;color:var(--muted);margin-bottom:9px;line-height:1.45}
.kw{display:flex;align-items:center;gap:9px;padding:7px 0;border-bottom:1px solid var(--line2)}
.kw:last-of-type{border-bottom:none}
.kw-dot{flex:0 0 auto;width:8px;height:8px;border-radius:50%;background:#d5dbe3}
.kw-dot.on{background:var(--ok)}
.kw-t{flex:1;min-width:0;font-size:14.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kw-s{flex:0 0 auto;font-size:11px;color:var(--muted)}
.kw .mini-btn{flex:0 0 auto;padding:3px 9px;font-size:11.5px}

/* ---------------- 附近 ---------------- */
.nearrow{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line2)}
.nearrow:last-child{border-bottom:none}
.nr-m{flex:1;min-width:0}
.nr-m b{display:block;font-size:14.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nr-m i{display:block;font-style:normal;font-size:11.5px;color:var(--muted);margin-top:2px}
.nr-d{flex:0 0 auto;font-size:13.5px;font-weight:650;color:var(--brand);font-variant-numeric:tabular-nums}

/* ---------------- 分步导航 ---------------- */
.steps{margin-top:4px}
.step{display:flex;gap:11px;padding:9px 0;border-bottom:1px solid var(--line2)}
.step:last-child{border-bottom:none}
.st-n{flex:0 0 22px;height:22px;border-radius:50%;background:var(--brand-soft);color:var(--brand);
  font-size:11.5px;font-weight:700;display:flex;align-items:center;justify-content:center;margin-top:1px}
.st-b{flex:1;min-width:0}
.st-b b{display:block;font-size:14px;font-weight:600;line-height:1.45}
.st-b i{display:block;font-style:normal;font-size:11.5px;color:var(--muted);margin-top:3px}

/* ---------------- 穿衣提示 ---------------- */
.cloth-h{display:flex;align-items:baseline;gap:9px}
.cloth-h b{font-size:14.5px;font-weight:650}
.cloth-h span{font-size:12px;color:var(--muted)}
.cloth-o{font-size:14px;color:var(--ink);margin-top:8px;line-height:1.6}
.cloth-e{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}
.cloth-e span{font-size:11.5px;background:var(--warn-soft);color:var(--warn);border-radius:20px;padding:3px 10px;line-height:1.5}


/* ============================================================
   苹果式表单：白底 + 极淡描边 + 11px 圆角 + 单色聚焦环
   截图里表单在桌面宽度下没有约束、输入框没有可见控件感，就是这一段缺失造成的
   ============================================================ */
.f{margin:0 0 15px}
.f>label{display:block;font-size:13px;font-weight:600;color:var(--ink2);margin-bottom:7px;letter-spacing:-.12px}
.f input[type=text],.f input[type=number],.f input[type=date],.f input[type=time],
.f input:not([type]),.f select,.f textarea,
textarea,input[type=text],input[type=number],select{
  width:100%;display:block;
  background:#fff;
  border:1px solid var(--line);
  border-radius:11px;
  padding:12px 14px;
  font-size:16px;line-height:1.35;
  color:var(--ink);
  -webkit-appearance:none;appearance:none;
  transition:border-color .15s,box-shadow .15s;
}
.f textarea,textarea{min-height:96px;resize:vertical;line-height:1.5}
.f input:focus,.f select:focus,.f textarea:focus,textarea:focus,input:focus,select:focus{
  outline:none;border-color:var(--brand);box-shadow:0 0 0 3.5px rgba(0,113,227,.16);
}
.f select{
  background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%236e6e73' stroke-width='1.8' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 14px center;
  padding-right:38px;
}
input[type=date],input[type=time]{min-height:46px}
input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.row2 .f{margin-bottom:15px}
@media (max-width:339px){.row2{grid-template-columns:1fr;gap:0}}
.hint{font-size:12.5px;color:var(--muted);line-height:1.5;letter-spacing:-.12px}

/* 表单里的卡片：白底靠灰底背景分组，不加边框 */
.card{background:#fff;border-radius:var(--r);padding:16px;margin-bottom:12px;border:none;box-shadow:var(--sh)}

.btn{
  width:100%;background:var(--brand);color:#fff;border-radius:var(--r-pill);
  padding:13px 20px;font-size:16px;font-weight:500;text-align:center;
  letter-spacing:-.2px;transition:background .15s,transform .06s;
}
.btn:active{background:#0062c4;transform:scale(.985)}
.btn.ghost{background:var(--brand-soft);color:var(--brand);font-weight:600}
.btn.ghost:active{background:rgba(0,113,227,.16)}

/* ---------------- 具体安排（分条 + 待办） ---------------- */
/* 每条安排压成一行：序号 · 输入框 · 待办 · 上移 · 删。
   原来是「一条一张卡 + 46px 输入框 + 第二行按钮」，一条要 110px，
   四五条就把屏幕占满了。整块共用一个白容器，条与条之间只用发丝线。 */
#plan{display:flex;flex-direction:column;margin-bottom:9px;
  background:#fff;border-radius:var(--r);box-shadow:var(--sh);padding:0 12px}
.prow{
  display:grid;grid-template-columns:22px 1fr auto;grid-template-areas:"n t b";
  align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid var(--line2);
}
.prow:last-child{border-bottom:0}
.pn{
  grid-area:n;width:20px;height:20px;border-radius:50%;background:var(--brand-soft);color:var(--brand);
  font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;
  font-variant-numeric:tabular-nums;flex:0 0 auto;
}
.prow .ptx{
  grid-area:t;grid-column:t;height:34px;min-height:34px;padding:7px 10px;font-size:14.5px;
  border-radius:8px;border:1px solid transparent;background:var(--tap);line-height:1.35;
  resize:none;overflow:hidden;font-family:inherit;
}
.prow .ptx:focus{background:#fff;border-color:var(--brand)}
.prow-b{grid-area:b;grid-column:b;grid-row:1;display:flex;align-items:center;gap:3px;flex:0 0 auto}
.ptodo{display:inline-flex;align-items:center;gap:3px;font-size:10.5px;color:var(--muted);
  cursor:pointer;background:none;padding:0 2px;border-radius:0}
.ptodo input{width:15px;height:15px;margin:0;accent-color:var(--brand);
  -webkit-appearance:auto;appearance:auto;padding:0;border:none;box-shadow:none}
.ptodo input:checked+span{color:var(--brand);font-weight:600}
.pup,.pdel{
  font-size:11px;color:var(--muted);background:none;border-radius:6px;
  padding:4px 5px;margin:0;line-height:1;
}
.pup{margin-left:auto}
.pdel{margin-left:0;color:var(--no)}
.addrow{
  width:100%;border:1.5px dashed var(--sep);border-radius:var(--r);
  padding:11px;text-align:center;color:var(--brand);font-size:14.5px;font-weight:600;background:transparent;
}
.addrow:active{background:var(--brand-soft)}

/* 阶段徽标 */
.badge{display:inline-block;font-size:11px;font-weight:650;border-radius:var(--r-pill);padding:2px 9px;margin-left:8px;vertical-align:1px}
.badge.b-pre{background:var(--warn-soft);color:var(--warn)}
.badge.b-during{background:var(--live-soft);color:var(--live)}

/* ---------------- 笔记归纳 ---------------- */
.dgrow{display:flex;gap:10px;align-items:flex-start;padding:10px 0;border-bottom:1px solid var(--line2);font-size:14.5px;line-height:1.5}
.dgrow:last-of-type{border-bottom:none}
.dgrow input{flex:0 0 auto;width:18px;height:18px;margin:1px 0 0;accent-color:var(--brand);-webkit-appearance:auto;appearance:auto;padding:0;border:none;box-shadow:none}
.dgrow span{flex:1;min-width:0}
.tagline{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.tagline span{font-size:11.5px;background:var(--brand-soft);color:var(--brand);border-radius:var(--r-pill);padding:3px 10px}

/* ---------------- 评价挖掘结果 ---------------- */
.mine-row{font-size:13px;line-height:1.5;border-radius:var(--r-sm);padding:9px 11px;margin-top:7px;letter-spacing:-.12px}
.mine-row.ok{background:var(--ok-soft);color:var(--ok)}
.mine-row.guess{background:var(--warn-soft);color:var(--warn)}
.mine-row.miss{background:var(--no-soft);color:var(--no);font-weight:600}
.src{display:block;font-size:11px;color:var(--muted);margin-top:4px;min-height:0}
.src.on{color:var(--ok);font-weight:600}
.src.guess{color:var(--warn);font-weight:600}
.src.miss{color:var(--no);font-weight:600}

/* 记账里来自行程条目的行 */
.lr-tag{font-size:10.5px;background:var(--brand-soft);color:var(--brand);border-radius:4px;padding:1px 6px;margin-left:7px;vertical-align:1.5px}
.ledrow.src-item .lr-main b{color:var(--ink2)}

/* 苹果式行卡片 */
.rowcard{
  display:flex;align-items:center;gap:13px;width:100%;
  background:#fff;border-radius:var(--r);padding:15px 16px;margin-bottom:10px;box-shadow:var(--sh);
  transition:transform .06s;
}
.rowcard:active{transform:scale(.99)}


/* ============================================================
   iOS 分组内嵌列表（grouped inset list）—— 苹果最主要的内容形态
   一个白容器装多行，行间发丝线，右端 chevron；分组标题是灰色小字
   ============================================================ */
.gl-h{
  font-size:13px;color:var(--muted);letter-spacing:-.08px;
  padding:0 4px 7px;line-height:1.35;
}
.gl-h:not(:first-child){padding-top:22px}
.gl{
  background:#fff;border-radius:var(--r);overflow:hidden;
  margin-bottom:2px;
}
.gl-row{
  display:flex;align-items:center;gap:10px;width:100%;
  padding:12px 14px;min-height:48px;
  border-bottom:.5px solid var(--sep);
  transition:background .1s;
}
.gl-row:last-child{border-bottom:none}
.gl-row:not(.static):active{background:var(--tap)}
.gl-row.static{cursor:default}
.gl-tm{
  flex:0 0 46px;font-size:14px;font-weight:650;color:var(--brand);
  font-variant-numeric:tabular-nums;letter-spacing:-.2px;
}
.gl-ty{flex:0 0 auto;font-size:15px;width:19px;text-align:center}
.gl-b{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.gl-t{font-size:15.5px;font-weight:550;letter-spacing:-.3px;line-height:1.3}
.gl-sub{font-size:13px;color:var(--muted);letter-spacing:-.1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gl-m{font-size:12px;color:var(--muted);letter-spacing:-.08px}
.gl-v{flex:0 0 auto;font-size:15px;color:var(--ink2);text-align:right;max-width:58%}
.gl-chev{flex:0 0 auto;color:rgba(0,0,0,.22);font-size:19px;font-weight:400;line-height:1;margin-left:-2px}
.gl-row.done .gl-t{color:var(--muted);text-decoration:line-through;text-decoration-thickness:1px}

/* 完成勾圈：苹果式的空心圆，勾选后变实心蓝 + 白勾 */
.ck{flex:0 0 auto;width:22px;height:22px;display:flex;align-items:center;justify-content:center;
  font-size:0;color:transparent;border:1.5px solid rgba(0,0,0,.2);border-radius:50%;
  transition:background .12s,border-color .12s}
.gl-row.done .ck{background:var(--brand);border-color:var(--brand)}
.gl-row.done .ck::after{content:"✓";font-size:13px;font-weight:700;color:#fff;line-height:1}

/* 列表底部的添加行 */
.gl-add{
  justify-content:flex-start;gap:8px;color:var(--brand);
  font-size:15.5px;font-weight:550;letter-spacing:-.3px;
  border-bottom:none;background:#fff;
}
.gl-add:active{background:var(--brand-soft)}
.gl-plus{
  flex:0 0 auto;width:19px;text-align:center;font-size:19px;font-weight:400;
  line-height:1;color:var(--brand);
}
.gl-add .gl-t{color:var(--brand)}


/* 候选住宿：标题可能很长（房源名常常一整句），限两行，别把卡片撑爆 */
.gl[data-cand] .gl-row.static:first-child .gl-t{
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
  overflow:hidden;line-height:1.35;font-size:15px;
}
.gl[data-cand] .gl-row.static:first-child{align-items:flex-start}
.gl[data-cand] .gl-row.static:first-child .gl-score{margin-top:-2px}

/* 候选住宿：评分与来源行 */
.gl-score{
  flex:0 0 auto;font-size:21px;font-weight:650;color:var(--brand);
  font-variant-numeric:tabular-nums;letter-spacing:-.5px;
}
.gl-v.none{color:var(--muted)}
.nodata{color:var(--muted);font-size:13px}
.srcrow{align-items:flex-start;min-height:0;padding-top:10px;padding-bottom:10px}
.src-t{white-space:normal;font-size:12px;line-height:1.45;color:var(--muted)}
.scorebar{display:block;position:relative;height:6px;background:rgba(0,0,0,.07);border-radius:3px;overflow:hidden}
.scorebar>span{display:block;height:100%;background:var(--brand);border-radius:3px}
.mini-btn{
  font-size:13.5px;color:var(--brand);background:var(--brand-soft);
  border-radius:var(--r-sm);padding:6px 12px;font-weight:550;
}
.mini-btn:active{background:rgba(0,113,227,.18)}


/* 本人实测：最高优先级的来源，视觉上要跳出来 */
.srcrow.mine{background:rgba(0,160,107,.055)}
.mine-tag{
  font-size:10.5px;font-weight:650;background:var(--ok-soft);color:var(--ok);
  border-radius:var(--r-pill);padding:2px 8px;margin-left:7px;vertical-align:1.5px;
}


/* 行程页头：状态徽标 + 统计行 */
.th-kind{
  display:inline-block;font-size:11.5px;font-weight:650;letter-spacing:-.08px;
  border-radius:var(--r-pill);padding:3px 10px;margin-bottom:9px;
}
.th-kind.k-active{background:var(--live-soft);color:var(--live)}
.th-kind.k-upcoming{background:var(--soon-soft);color:var(--soon)}
.th-kind.k-past{background:rgba(255,255,255,.18);color:rgba(255,255,255,.9)}
.th-stats{display:flex;flex-wrap:wrap;gap:18px;margin-top:14px}
.th-stats span{font-size:12px;color:rgba(255,255,255,.62);letter-spacing:-.08px}
.th-stats b{display:block;font-size:16px;font-weight:650;color:#fff;letter-spacing:-.3px;margin-bottom:1px}

/* 说明条 */
.note{
  background:#fff;border-radius:var(--r);padding:13px 15px;margin-bottom:12px;
  font-size:13px;color:var(--muted);line-height:1.5;letter-spacing:-.1px;
}


/* ============================================================
   楼层品牌：地图弹出框 + 面板里的品牌筛选
   ============================================================ */
.tp-floor-popup .maplibregl-popup-content{
  padding:0;border-radius:var(--r);box-shadow:0 6px 30px rgba(0,0,0,.22);
  overflow:hidden;font-family:inherit;
}
.tp-floor-popup .maplibregl-popup-close-button{
  font-size:18px;padding:2px 7px;color:var(--muted);
}
.fpop{max-height:52vh;overflow-y:auto}
.fpop-h{
  position:sticky;top:0;background:#fff;z-index:1;
  padding:11px 13px 9px;font-size:14px;font-weight:650;letter-spacing:-.3px;
  border-bottom:.5px solid var(--sep);
}
.fpop-fl{
  font-size:11.5px;font-weight:700;color:var(--brand);letter-spacing:-.08px;
  padding:9px 13px 4px;background:rgba(0,113,227,.05);
}
.fpop-b{display:flex;flex-wrap:wrap;gap:5px;padding:7px 13px 9px;border-bottom:.5px solid var(--line2)}
.fb{
  font-size:12px;background:var(--tap);color:var(--ink2);
  border-radius:var(--r-pill);padding:3px 9px;letter-spacing:-.08px;
}

/* 面板里的楼层行 */
.fb-floor{display:flex;align-items:flex-start;gap:10px;padding:9px 12px;border-bottom:.5px solid var(--line2)}
.fb-floor:last-child{border-bottom:none}
.fb-fl{
  flex:0 0 34px;font-size:12px;font-weight:700;color:var(--brand);
  background:var(--brand-soft);border-radius:7px;padding:3px 0;text-align:center;margin-top:1px;
}
.fb-list{flex:1;display:flex;flex-wrap:wrap;gap:6px}
.fb-chip{
  font-size:12.5px;background:#fff;border:1px solid var(--line);color:var(--ink);
  border-radius:var(--r-pill);padding:4px 11px;letter-spacing:-.08px;line-height:1.3;
  display:inline-flex;align-items:center;gap:5px;
}
.fb-chip i{font-style:normal;font-size:10px;color:var(--muted)}
.fb-chip.off{background:var(--tap);color:var(--muted);border-color:transparent;text-decoration:line-through}
.fb-chip.off i{color:var(--muted)}
.mk-i{font-size:15px;line-height:1}

@media (prefers-color-scheme:dark){
  /* 暂不启用深色，避免半套配色；如需再统一补 */
}
@media (max-width:360px){
  .focus{padding:17px}.ftitle{font-size:21px}.gate a{min-height:96px;padding:14px 13px}
}


/* ---------- 楼层弹框：按品类分组，只显示品类名 + 品牌名 ---------- */
.fpop-g{display:flex;align-items:baseline;gap:8px;margin:6px 0 0}
.fpop-gt{flex:0 0 auto;font-size:10px;letter-spacing:.04em;color:var(--muted-foreground);
  background:var(--accent);border-radius:5px;padding:2px 6px;font-weight:600}
.fpop-gb{display:flex;flex-wrap:wrap;gap:4px}

/* ---------- 行前准备：待办单行列表 ---------- */
#todolist{padding:2px 0}
.todoline{display:flex;align-items:center;gap:9px;padding:9px 15px;
  border-bottom:1px solid var(--line2);cursor:pointer}
.todoline:last-child{border-bottom:0}
.todoline.done .tltx{color:var(--muted-foreground);text-decoration:line-through}
.tld{flex:0 0 auto;font-size:11px;font-weight:700;color:var(--muted-foreground);
  min-width:24px;text-align:center}
.tltx{flex:1 1 auto;min-width:0;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tldt{flex:0 0 auto;font-size:11px;color:var(--muted-foreground);white-space:nowrap;
  font-variant-numeric:tabular-nums}
.tlck{flex:0 0 auto;font-size:17px;color:var(--accent);width:20px;text-align:center}

/* ---------- 汇率换算 ---------- */
.fxrow{padding:11px 0;border-bottom:1px solid var(--line2)}
.fxrow:last-of-type{border-bottom:0}
.fxr-in{display:flex;align-items:center;gap:6px}
.fxamt{flex:1 1 auto;min-width:0;width:auto;font-size:16px;font-weight:600;
  padding:9px 11px;border:0;background:var(--accent);border-radius:9px;color:var(--foreground)}
.fxr-in select{flex:0 0 auto;width:auto;padding:9px 8px;font-size:13px;font-weight:600;
  border:0;background:var(--accent);border-radius:9px;color:var(--foreground)}
.fxarrow{flex:0 0 auto;color:var(--muted-foreground);font-size:13px}
.fxdel{flex:0 0 auto;width:26px;height:26px;border:0;border-radius:50%;font-size:16px;
  line-height:1;background:var(--accent);color:var(--muted-foreground);cursor:pointer}
.fxr-out{display:flex;align-items:baseline;gap:5px;margin-top:8px;flex-wrap:wrap}
.fxres{font-size:21px;font-weight:700;letter-spacing:-.01em;font-variant-numeric:tabular-nums}
.fxcur{font-size:12px;font-weight:600;color:var(--muted-foreground)}
.fxunit{font-size:11px;color:var(--muted-foreground);margin-left:auto;white-space:nowrap}
.fx-na{font-size:13px;color:var(--muted-foreground)}

/* ---------- 分享短码 ---------- */
.sharecode{display:inline-block;font-size:30px;font-weight:700;letter-spacing:.24em;
  padding:10px 6px 10px 16px;border-radius:11px;background:var(--accent);color:var(--foreground);
  font-variant-numeric:tabular-nums;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.sharecode-n{display:block;margin-top:9px;font-size:11.5px;color:var(--muted-foreground);line-height:1.6}

/* ---------- 交通段：搜出来的走法 ---------- */
.rtline{padding:10px 0;border-bottom:1px solid var(--line2)}
.rtline:last-of-type{border-bottom:0}
.rt-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.rt-h b{font-size:14.5px}
.rt-t{font-size:13px;font-weight:600;color:var(--accent)}
.rt-d{font-size:11px;color:var(--muted-foreground)}
.rt-use{margin-left:auto;border:0;border-radius:8px;padding:6px 12px;font-size:12.5px;
  font-weight:600;background:var(--accent);color:var(--foreground);cursor:pointer;flex:0 0 auto}
.rt-legs{margin-top:7px;padding-left:2px}
.rt-leg{display:flex;align-items:baseline;gap:7px;font-size:11.5px;color:var(--muted-foreground);padding:2px 0}
.rt-kind{flex:0 0 auto;font-size:10px;font-weight:600;padding:1px 5px;border-radius:4px;
  background:var(--accent);color:var(--foreground)}
.rt-kind.walk{opacity:.6}
.rt-nm{flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:44%}
.rt-se{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rt-mn{flex:0 0 auto;font-variant-numeric:tabular-nums}
.rtlinks{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:10px;
  padding-top:9px;border-top:1px solid var(--line2)}
.rtmap{font-size:12px;text-decoration:none;padding:6px 11px;border-radius:8px;
  background:var(--accent);color:var(--foreground)}

/* ---------- 交通方案里的票价 ---------- */
.rt-fare{font-size:12.5px;font-weight:700;color:var(--brand);
  background:var(--brand-soft);border-radius:6px;padding:2px 7px;font-variant-numeric:tabular-nums}

/* ---------- 准备清单：每组自己的添加入口 ---------- */
.gadd{padding:11px 15px;font-size:13px;color:var(--accent);cursor:pointer;
  border-top:1px solid var(--line2)}
.gadd:active{background:var(--accent)}

/* ---------- 交通方案里的「地图查看」 ---------- */
.rt-look{font-size:11.5px;color:var(--accent);text-decoration:none;padding:5px 9px;
  border-radius:7px;background:var(--accent);white-space:nowrap;flex:0 0 auto}

/* ---------- 历史足迹地图 ---------- */
.fpmap{height:300px;border-radius:12px;overflow:hidden;margin-bottom:8px;background:#e9e9ee}
.fpmap-legend{font-size:11.5px;color:var(--muted-foreground);margin:0 0 12px 2px}
.fpdot{position:relative;display:flex;align-items:center;justify-content:center;width:0;height:0}
.fpd-ring{position:absolute;width:26px;height:26px;border-radius:50%;
  background:rgba(0,113,227,.22);animation:fppulse 2.4s ease-out infinite}
.fpd-core{position:absolute;width:9px;height:9px;border-radius:50%;background:#0071e3;
  box-shadow:0 0 0 2.5px #fff,0 0 12px rgba(0,113,227,.9)}
.fpd-nm{position:absolute;top:11px;left:50%;transform:translateX(-50%);
  font-size:10.5px;font-weight:600;color:#1d1d1f;white-space:nowrap;
  background:rgba(255,255,255,.92);padding:1px 5px;border-radius:5px}
@keyframes fppulse{0%{transform:scale(.5);opacity:.9}70%{transform:scale(1.7);opacity:0}100%{opacity:0}}

/* ---------- 楼层品牌编辑：拖拽改楼层 / 删除 tag ---------- */
.fb-floor{transition:background .15s}
.fb-floor.over{background:rgba(0,113,227,.12);border-radius:8px}
.fb-wrap{display:inline-flex;align-items:center;gap:0;background:var(--tap);
  border-radius:8px;overflow:hidden;margin:0 4px 4px 0;cursor:grab}
.fb-wrap.dragging{opacity:.4}
.fb-wrap.off{opacity:.42}
.fb-wrap .fb-chip{background:none;padding:5px 4px 5px 9px;margin:0;border:0}
.fb-x{background:none;border:0;color:var(--muted-foreground);font-size:14px;line-height:1;
  padding:4px 7px 5px 3px;cursor:pointer}
.fb-x:hover{color:#d70015}
.fb-empty{font-size:11px;color:var(--muted-foreground);opacity:.7}

.fpdot{width:0;height:0;position:relative}
.fpd-ring,.fpd-core{position:absolute;left:0;top:0;transform:translate(-50%,-50%)}
.fpd-nm{position:absolute;left:0;top:0;transform:translate(-50%,10px)}

@keyframes fppulse{
  0%{transform:translate(-50%,-50%) scale(.5);opacity:.9}
  70%{transform:translate(-50%,-50%) scale(1.7);opacity:0}
  100%{transform:translate(-50%,-50%) scale(1.7);opacity:0}
}

.fb-fl{cursor:grab;user-select:none}
.fb-floor.dragging{opacity:.4}
.fb-floor.over{background:rgba(0,113,227,.12);border-radius:8px}


/* ==========================================================================
   APP 视觉层（覆盖在上面，统一成「白底 + 大圆角 + 胶囊按钮 + 大留白」）
   ========================================================================== */

body{background:var(--bg);color:var(--ink);letter-spacing:-.2px}

/* ---------- 顶栏：白底、去掉分隔线、标题更大 ---------- */
.hdr{
  background:rgba(255,255,255,.86);
  backdrop-filter:saturate(180%) blur(24px);-webkit-backdrop-filter:saturate(180%) blur(24px);
  border-bottom:none; padding:calc(var(--safe-t) + 10px) 20px 10px;
  min-height:56px;
}
.hdr.scrolled{border-bottom-color:transparent;
  box-shadow:0 .5px 0 rgba(0,0,0,.07)}
.hdr h1{font-size:19px;font-weight:700;letter-spacing:-.4px}
.hdr .back{color:var(--brand);font-weight:500}
.hdr .act{font-weight:600}

/* ---------- 内容区：下方留出菜单栏高度 ---------- */
.wrap{
  padding:8px 20px calc(118px + var(--safe-b));
  max-width:760px;margin:0 auto;
}
.hdr .hdr-in{max-width:760px}

/* ---------- 卡片：大圆角、无边框、一层极轻的阴影 ---------- */
.card{
  background:var(--card);border-radius:var(--r);padding:var(--pad);
  box-shadow:var(--sh);border:none;margin-bottom:var(--gap);
}
.sec-t{
  font-size:12.5px;font-weight:600;color:var(--muted);letter-spacing:.02em;
  margin:28px 4px 10px;text-transform:none;
}
.sec-t:first-child{margin-top:8px}

/* ---------- 分组列表：一个白容器装多行 ---------- */
.gl{background:var(--card);border-radius:var(--r);box-shadow:var(--sh);overflow:hidden}
.gl-row, .gl-row.static{padding:15px 18px}
.gl-row + .gl-row{border-top:.5px solid var(--sep)}
.gl-t{font-size:16px;font-weight:500}
.gl-v{color:var(--muted);font-size:15px}

/* ---------- 大按钮：胶囊、够高 ---------- */
.btn{
  border-radius:var(--r-pill);height:52px;display:flex;align-items:center;justify-content:center;
  font-size:16.5px;font-weight:600;background:var(--ink);color:#fff;
  box-shadow:0 6px 18px rgba(0,0,0,.16);margin-top:4px;
}
.btn.ghost{
  background:var(--group);color:var(--ink);box-shadow:none;font-weight:600;
}
.btn:active{transform:scale(.985)}
button:active{opacity:.72}

/* ---------- 行卡片（门户/行程里的功能入口） ---------- */
.rowcard{
  background:var(--card);border-radius:var(--r);box-shadow:var(--sh);
  padding:16px 18px;display:flex;align-items:center;gap:14px;width:100%;
  margin-bottom:12px;
}
.rowcard .rc-ic{
  width:44px;height:44px;border-radius:14px;background:var(--group);
  display:flex;align-items:center;justify-content:center;font-size:20px;flex:0 0 auto;
}
.rowcard .rc-m{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.rowcard .rc-m b{font-size:16.5px;font-weight:600;letter-spacing:-.2px}
.rowcard .rc-m i{font-size:13px;color:var(--muted);font-style:normal}
.rowcard .rc-g{color:#c7c7cc;font-size:20px;flex:0 0 auto}

/* ---------- 门户里的四宫格入口 ---------- */
.mini{
  display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:8px;
}
.mini a{
  background:var(--card);border-radius:var(--r);box-shadow:var(--sh);
  padding:18px 16px;display:flex;flex-direction:column;gap:10px;
  text-decoration:none;color:var(--ink);
}
.mini a > span:first-child{
  width:42px;height:42px;border-radius:13px;background:var(--group);
  display:flex;align-items:center;justify-content:center;font-size:20px;
}
.mini a > span:last-child{font-size:15px;font-weight:600;display:block;letter-spacing:-.2px}
.mini a .sub{display:block;font-size:12px;color:var(--muted);font-weight:400;margin-top:3px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ---------- 行程页头：白卡 + 大标题（不再是深色 hero） ---------- */
.triphead{
  background:var(--card);border-radius:var(--r-lg);padding:24px 22px;
  box-shadow:var(--sh);margin-bottom:var(--gap);position:relative;overflow:hidden;
}
.triphead:before,.triphead:after{display:none}
.th-kind{
  display:inline-flex;align-items:center;height:24px;padding:0 10px;border-radius:var(--r-pill);
  font-size:12px;font-weight:600;background:var(--group);color:var(--muted);margin-bottom:12px;
}
.th-kind.k-active{background:var(--live-soft);color:#1a8f3c}
.th-kind.k-upcoming{background:var(--soon-soft);color:var(--brand)}
.th-title{font-size:27px;font-weight:700;letter-spacing:-.7px;line-height:1.2;color:var(--ink)}
.th-sub{font-size:14px;color:var(--muted);margin-top:8px}
.th-cities{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px}
.th-cities span{
  font-size:12.5px;padding:5px 11px;border-radius:var(--r-pill);
  background:var(--group);color:var(--ink2);
}
.th-stats{display:flex;gap:22px;margin-top:18px;padding-top:16px;border-top:.5px solid var(--sep)}
.th-stats span{font-size:12px;color:var(--muted)}
.th-stats b{display:block;font-size:19px;font-weight:700;color:var(--ink);letter-spacing:-.4px;margin-bottom:2px}

/* ---------- 分段控件 ---------- */
.tabs2{
  display:flex;background:var(--group);border-radius:var(--r-pill);padding:3px;
  margin:4px 0 16px;gap:2px;
}
.tabs2 button{
  flex:1;height:38px;border-radius:var(--r-pill);display:flex;align-items:center;justify-content:center;
  gap:6px;font-size:14px;font-weight:500;color:var(--ink2);background:none;
}
.tabs2 button.on{background:#fff;font-weight:600;color:var(--ink);box-shadow:0 1px 4px rgba(0,0,0,.10)}
.tabs2 b{font-weight:400;color:var(--muted);font-size:12px}

/* ---------- 记账总账：改成白卡 + 大黑数字 ---------- */
.bill{background:var(--card);border-radius:var(--r-lg);box-shadow:var(--sh);
  overflow:hidden;margin-bottom:var(--gap)}
.bill-top{
  background:var(--card);padding:24px 22px 20px;position:relative;
}
.bill-top:after{display:none}
.bill-label{font-size:12.5px;color:var(--muted);font-weight:500;letter-spacing:.02em}
.bill-total{font-size:40px;font-weight:700;letter-spacing:-1.4px;margin-top:6px;color:var(--ink)}
.bill-sub{font-size:12.5px;color:var(--muted);margin-top:6px}
.bill-warn{
  background:#fff8e6;color:#8a5a00;border-radius:var(--r-sm);padding:10px 13px;
  font-size:12.5px;margin:12px 22px 0;
}
.bill-sec{border-top:.5px solid var(--sep);padding:18px 22px}
.bill-h{font-size:12.5px;color:var(--muted);font-weight:600;margin-bottom:12px}
.bill-kv{display:flex;justify-content:space-between;align-items:baseline;padding:9px 0;font-size:15px}
.bill-kv b{font-size:17px;font-weight:650;letter-spacing:-.3px}
.catrow{display:flex;align-items:center;gap:12px;padding:9px 0}
.cr-n{flex:0 0 76px;font-size:14.5px}
.cr-bar{flex:1;height:7px;border-radius:var(--r-pill);background:var(--group);overflow:hidden}
.cr-bar i{display:block;height:100%;border-radius:var(--r-pill);background:var(--brand)}
.cr-v{flex:0 0 auto;font-size:14px;font-weight:600;font-variant-numeric:tabular-nums}
.cr-p{flex:0 0 42px;text-align:right;font-size:12px;color:var(--muted)}
.bill-quiet{font-size:13px;color:var(--muted);padding:6px 0}
.bill-settle{display:flex;justify-content:space-between;padding:11px 14px;margin-top:8px;
  background:var(--brand-soft);border-radius:var(--r-sm);font-size:15px}
.bill-settle b{font-weight:650}

/* ---------- 标签/胶囊按钮 ---------- */
.tagpick button,.typepick button{
  border-radius:var(--r-pill);padding:9px 15px;font-size:14px;font-weight:500;
  background:var(--group);color:var(--ink2);
}
.typepick button.on{background:var(--ink);color:#fff;font-weight:600}
.tagpick button.on{background:var(--ink);color:#fff}
.tag,.badge{border-radius:var(--r-pill)}

/* ---------- 表单 ---------- */
.f label{
  font-size:12.5px;color:var(--muted);font-weight:500;margin-bottom:7px;
}
.f input,.f select,.f textarea{
  border-radius:var(--r-sm);background:var(--group);border:1px solid transparent;
  padding:13px 14px;font-size:16px;
}
.f input:focus,.f select:focus,.f textarea:focus{background:#fff;border-color:var(--brand)}

/* ---------- 底部菜单栏 ---------- */
.tabbar{
  position:fixed;left:0;right:0;bottom:0;z-index:60;
  background:rgba(255,255,255,.92);
  backdrop-filter:saturate(180%) blur(24px);-webkit-backdrop-filter:saturate(180%) blur(24px);
  border-top:.5px solid var(--sep);
  padding:6px 8px calc(6px + var(--safe-b));
  display:grid;grid-template-columns:repeat(4,1fr);
}
.tabbar a{
  display:flex;flex-direction:column;align-items:center;gap:3px;
  text-decoration:none;color:#8e8e93;font-size:10.5px;font-weight:500;
  padding:5px 0;border-radius:12px;
}
.tabbar a svg{width:25px;height:25px;display:block}
.tabbar a.on{color:var(--brand)}
.tabbar a.on svg{color:var(--brand)}
.tabbar a:active{opacity:.6}

/* 桌面宽屏时菜单栏收成居中一条，别拉满整幅 */
@media (min-width:820px){
  .tabbar{max-width:760px;margin:0 auto;border-radius:22px 22px 0 0;border:.5px solid var(--sep);
    left:50%;transform:translateX(-50%);right:auto;width:760px}
}

/* ---------- 行程卡片（主页列表） ---------- */
.tripcard{
  display:block;width:100%;text-align:left;background:var(--card);
  border-radius:var(--r-lg);box-shadow:var(--sh);padding:22px;
  margin-bottom:14px;
}
.tc-top{display:flex;align-items:center;gap:8px;margin-bottom:12px}
.tc-days{margin-left:auto;font-size:12px;color:var(--muted)}
.tc-title{display:block;font-size:22px;font-weight:700;letter-spacing:-.5px;line-height:1.25}
.tc-sub{display:block;font-size:13.5px;color:var(--muted);margin-top:7px}
.tc-cities{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px}
.tc-cities i{font-style:normal;font-size:12px;padding:5px 11px;border-radius:var(--r-pill);
  background:var(--group);color:var(--ink2)}
.tc-foot{display:block;font-size:12.5px;color:var(--muted);margin-top:14px;
  padding-top:13px;border-top:.5px solid var(--sep)}


/* ==========================================================================
   旅行感视觉层：模块配色 + 插画头图 + 路线元素
   原则：颜色只出现在「图标底 / 状态点 / 细线」上，大面积仍然是白，
         所以看着有层次但不花。
   ========================================================================== */

:root{
  /* Headspace 柔和色：每个模块固定一个色相，不再用系统蓝绿橙紫 */
  --c-trip:#B4651F;    --c-trip-bg:#FFE6D2;
  --c-map:#2D5F8A;     --c-map-bg:#C3DBF2;
  --c-money:#B4651F;   --c-money-bg:#FFD9B8;
  --c-prep:#62468C;    --c-prep-bg:#DCCFF0;
  --c-weather:#3F6B3A; --c-weather-bg:#C9E0C3;
  --c-ticket:#8A6412;  --c-ticket-bg:#FFE7A8;
  --c-hotel:#3F6B3A;   --c-hotel-bg:#C9E0C3;
  --c-transit:#2D5F8A; --c-transit-bg:#C3DBF2;
  --c-people:#B74A32;  --c-people-bg:#FFB9A8;
  --c-fx:#62468C;      --c-fx-bg:#DCCFF0;
}

/* ---------- 模块磁贴（首页 / 行程里的功能宫格） ---------- */
.tiles{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.tile{
  background:var(--card);border-radius:20px;box-shadow:var(--sh);
  padding:16px 15px;display:flex;flex-direction:column;gap:12px;
  text-decoration:none;color:var(--ink);position:relative;overflow:hidden;
}
.tile:active{transform:scale(.985)}
.tile .ic{
  width:40px;height:40px;border-radius:13px;display:flex;align-items:center;justify-content:center;
  font-size:19px;background:var(--c-bg,var(--group));
}
.tile .tt{font-size:15px;font-weight:600;letter-spacing:-.2px;line-height:1.25}
.tile .sub{font-size:11.5px;color:var(--muted);margin-top:3px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tile:after{                     /* 右下角一个很淡的同色光斑，增加层次但不抢眼 */
  content:"";position:absolute;right:-26px;bottom:-30px;width:88px;height:88px;border-radius:50%;
  background:var(--c-bg,transparent);opacity:.75;
}
.tile > *{position:relative;z-index:1}

/* ---------- 头图（首页主卡 / 行程卡顶部插画） ---------- */
.hero{
  position:relative;border-radius:26px;overflow:hidden;background:var(--card);
  box-shadow:var(--sh);margin-bottom:16px;
}
.hero-sky{display:block;width:100%;height:112px}
.hero-body{padding:18px 20px 20px}
.hero-eyebrow{
  display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;
  color:var(--c-accent,#007AFF);background:var(--c-accent-bg,#EAF3FF);
  padding:5px 11px;border-radius:var(--r-pill);
}
.hero-title{font-size:26px;font-weight:750;letter-spacing:-.7px;line-height:1.2;margin-top:11px}
.hero-sub{font-size:13.5px;color:var(--muted);margin-top:7px}
.hero-cta{
  margin-top:16px;display:flex;align-items:center;justify-content:center;gap:6px;
  height:46px;border-radius:var(--r-pill);background:var(--ink);color:#fff;
  font-size:15.5px;font-weight:600;width:100%;
}

/* ---------- 路线条：起点 — — — 终点 ---------- */
.route{display:flex;align-items:center;gap:0;margin-top:16px}
.route .pt{display:flex;flex-direction:column;align-items:flex-start;gap:2px;flex:0 0 auto}
.route .pt b{font-size:13px;font-weight:600;letter-spacing:-.1px}
.route .pt i{font-size:10.5px;color:var(--muted);font-style:normal}
.route .dot{width:9px;height:9px;border-radius:50%;background:var(--c-dot,#007AFF);
  box-shadow:0 0 0 3px var(--c-dot-bg,#EAF3FF)}
.route .line{flex:1;height:0;border-top:1.5px dashed var(--sep);margin:0 8px;position:relative}
.route .line em{position:absolute;top:-9px;left:50%;transform:translateX(-50%);
  font-size:11px;background:#fff;padding:0 6px;color:var(--muted);font-style:normal}

/* ---------- 小统计（首页/行程共用） ---------- */
.stats3{display:flex;gap:0;margin-top:16px;padding-top:15px;border-top:.5px solid var(--sep)}
.stats3 > div{flex:1;text-align:left}
.stats3 b{display:block;font-size:17px;font-weight:700;letter-spacing:-.4px}
.stats3 span{font-size:11px;color:var(--muted)}

/* ---------- 标题行 ---------- */
.secrow{display:flex;align-items:baseline;justify-content:space-between;margin:26px 2px 12px}
.secrow h2{font-size:17px;font-weight:700;letter-spacing:-.35px;margin:0}
.secrow a,.secrow button{font-size:13px;color:var(--brand);font-weight:500}
.sec-t{margin-top:22px}

/* ---------- 行程卡加一点旅行感 ---------- */
.tripcard{position:relative;overflow:hidden;padding:0}
.tripcard .tc-band{height:6px;width:100%;display:block}
.tripcard .tc-in{padding:20px 22px}
.tripcard.k-active .tc-band{background:linear-gradient(90deg,#34C759,#30B0C7)}
.tripcard.k-upcoming .tc-band{background:linear-gradient(90deg,#007AFF,#5AC8FA)}
.tripcard.k-past .tc-band{background:linear-gradient(90deg,#C7C7CC,#E5E5EA)}

/* ---------- 空状态 ---------- */
.empty2{text-align:center;padding:38px 22px;color:var(--muted);font-size:14px}
.empty2 .em{font-size:38px;margin-bottom:12px;display:block;opacity:.9}

.tile .tt{display:block}
.tile .sub{display:block}

/* ---------- 行程页：标题卡 ---------- */
.triphero{background:var(--card);border-radius:26px;box-shadow:var(--sh);padding:22px 22px 20px;margin-bottom:6px}
.trh-top{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.trh-top .th-kind{margin-bottom:0}
.trh-edit{margin-left:auto;font-size:12.5px;font-weight:600;color:var(--brand);
  background:var(--brand-soft);border-radius:var(--r-pill);padding:6px 12px}
.trh-title{font-size:30px;font-weight:750;letter-spacing:-.9px;line-height:1.15}
.trh-sub{font-size:13.5px;color:var(--muted);margin-top:9px}
.trh-cities{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px}
.trh-cities span{font-size:12.5px;padding:6px 12px;border-radius:var(--r-pill);
  background:var(--group);color:var(--ink2)}
.trh-stats{display:flex;gap:0;margin-top:18px;padding-top:16px;border-top:.5px solid var(--sep)}
.trh-stats > div{flex:1}
.trh-stats b{display:block;font-size:20px;font-weight:750;letter-spacing:-.5px;line-height:1.15}
.trh-stats span{font-size:11px;color:var(--muted)}

/* ---------- 分区行（行程信息 / 辅助信息） ---------- */
.rrow{display:flex;align-items:center;gap:13px;padding:14px 16px;text-decoration:none;color:var(--ink)}
.rrow + .rrow{border-top:.5px solid var(--sep)}
.rrow:active{background:var(--group)}
.ri{width:36px;height:36px;border-radius:11px;display:flex;align-items:center;justify-content:center;
  font-size:17px;flex:0 0 auto}
.rb{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.rb b{font-size:15.5px;font-weight:600;letter-spacing:-.2px}
.rb i{font-size:12px;color:var(--muted);font-style:normal;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rg{color:#c7c7cc;font-size:19px;flex:0 0 auto}

/* ---------- 历史行程行 ---------- */
.trip-row{width:100%;background:none;border:none;text-align:left;
  display:flex;align-items:center;gap:12px;padding:14px 16px}
.trip-row + .trip-row{border-top:.5px solid var(--sep)}
.tr-l{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.tr-l b{font-size:15.5px;font-weight:600;letter-spacing:-.2px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tr-l i{font-size:12px;color:var(--muted);font-style:normal}
.tr-r{flex:0 0 auto;display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted)}
.tr-r em{font-style:normal;color:#c7c7cc;font-size:18px}


/* ==========================================================================
   底部菜单栏（参考图：白色胶囊装三个图标 + 右边一个独立圆形＋）
   ========================================================================== */
.tabbar{
  position:fixed;left:0;right:0;bottom:0;z-index:60;
  display:flex;align-items:center;justify-content:center;gap:12px;
  padding:8px 16px calc(10px + var(--safe-b));
  background:linear-gradient(to top,rgba(255,255,255,.96) 60%,rgba(255,255,255,0));
  border-top:none;
}
.tb-pill{
  display:flex;align-items:center;gap:2px;
  background:rgba(255,255,255,.94);
  backdrop-filter:saturate(180%) blur(28px);-webkit-backdrop-filter:saturate(180%) blur(28px);
  border:.5px solid rgba(0,0,0,.06);
  border-radius:999px;padding:7px 8px;
  box-shadow:0 8px 28px rgba(0,0,0,.13),0 1px 2px rgba(0,0,0,.05);
}
.tb-pill a{
  width:52px;height:44px;display:flex;align-items:center;justify-content:center;
  border-radius:999px;color:#9a9aa0;text-decoration:none;transition:background .16s,color .16s;
}
.tb-pill a svg{width:23px;height:23px}
.tb-pill a.on{color:#0a0a0a;background:rgba(118,118,128,.13)}
.tb-pill a:active{transform:scale(.93)}
.tb-plus{
  width:58px;height:58px;border-radius:50%;flex:0 0 auto;
  background:#fff;color:#0a0a0a;display:flex;align-items:center;justify-content:center;
  box-shadow:0 8px 28px rgba(0,0,0,.16),0 1px 2px rgba(0,0,0,.06);
  border:.5px solid rgba(0,0,0,.05);
}
.tb-plus svg{width:26px;height:26px}
.tb-plus:active{transform:scale(.93)}
@media (min-width:820px){ .tabbar{max-width:none} }

/* ---------- 首页三个小模块 ---------- */
.trio{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:8px}
.tc2{
  background:var(--card);border-radius:18px;box-shadow:var(--sh);padding:14px 12px;
  display:flex;flex-direction:column;align-items:flex-start;gap:8px;
  text-decoration:none;color:var(--ink);
}
.tc2:active{transform:scale(.97)}
.tc2 .ic{width:34px;height:34px;border-radius:11px;display:flex;align-items:center;justify-content:center;font-size:16px}
.tc2 b{font-size:13.5px;font-weight:600;letter-spacing:-.15px}
.tc2 i{font-size:11px;color:var(--muted);font-style:normal;
  max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ---------- 记账页行 ---------- */
.mgh{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;
  border-bottom:.5px solid var(--sep);background:var(--group)}
.mgh b{font-size:15px;font-weight:650;letter-spacing:-.2px;display:block}
.mgh i{font-size:11.5px;color:var(--muted);font-style:normal;display:block;margin-top:2px}
.mgh em{font-style:normal;font-size:16px;font-weight:700;letter-spacing:-.3px}
.mrow{display:flex;align-items:center;gap:12px;padding:12px 16px}
.mrow + .mrow{border-top:.5px solid var(--sep)}
.mo-d{flex:0 0 40px;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.mo-c{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
.mo-c b{font-size:14.5px;font-weight:500}
.mo-c i{font-size:11.5px;color:var(--muted);font-style:normal;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mo-v{flex:0 0 auto;font-size:14.5px;font-weight:600;font-variant-numeric:tabular-nums}
.mo-a{flex:0 0 auto;font-size:11.5px;color:var(--brand);background:var(--brand-soft);
  border-radius:var(--r-pill);padding:5px 10px}

.bill-note{font-size:11px;color:var(--muted);line-height:1.5;margin-top:10px;
  padding-top:10px;border-top:.5px solid var(--sep)}

/* ---------- 历史账单（收起态一条） ---------- */
.histbar{
  width:100%;margin-top:14px;background:var(--card);border-radius:18px;box-shadow:var(--sh);
  padding:15px 16px;display:flex;align-items:center;justify-content:space-between;
  text-align:left;border:none;
}
.histbar:active{background:var(--group)}
.hb-l{display:flex;flex-direction:column;gap:2px}
.hb-l b{font-size:15.5px;font-weight:650;letter-spacing:-.2px}
.hb-l i{font-size:11.5px;color:var(--muted);font-style:normal}
.hb-r{display:flex;align-items:center;gap:8px;font-size:16px;font-weight:700;letter-spacing:-.3px}
.hb-r em{font-style:normal;color:#c7c7cc;font-size:19px;transition:transform .18s}
.hb-r em.up{transform:rotate(90deg)}
.histwrap{margin-top:12px}

.kv-n{font-size:10.5px;color:var(--muted);font-weight:400;margin-left:3px}

/* ---------- 分摊人选择 ---------- */
.pchips{display:flex;flex-wrap:wrap;gap:8px;padding:2px 0 4px}
.pchip{
  font-size:13.5px;font-weight:500;padding:7px 14px;border-radius:999px;
  background:var(--group);color:var(--muted);border:none;
}
.pchip.on{background:var(--ink);color:#fff}
.pchip:active{transform:scale(.95)}

/* ---------- 结算明细表 ---------- */
.setl{display:grid;grid-template-columns:1.05fr 1fr 1fr 1fr;gap:8px;
  padding:9px 2px;font-size:13px;align-items:baseline;
  border-bottom:.5px solid var(--sep);font-variant-numeric:tabular-nums}
.setl span:nth-child(n+2){text-align:right}
.setl.h{color:var(--muted);font-size:11px;font-weight:500;border-bottom:.5px solid var(--sep);padding-bottom:6px}
.setl .p{font-weight:600}
.setl .neg{color:#c0392b}
.setl .pos{color:#1a7f37;font-weight:600}


/* ==========================================================================
   v2 设计层 —— 按 finesse-ui 的 product 规范收口
   去掉了：每模块一色、渐变光斑、彩虹色带、emoji 当图标、纯白纯黑。
   留下：暖纸基底 + 单一青瓷强调色 + 发丝线分级 + 衬线展示字。
   ========================================================================== */

/* ---- 展示字：行程名 / 大数字用衬线，正文不换 ---- */
.trh-title,.hero-title,.bill-total,.fp-title{font-family:var(--font-display);font-weight:600}
.trh-title{font-size:31px;font-weight:600;letter-spacing:-.6px;line-height:1.22}
.hero-title{font-size:27px;font-weight:600;letter-spacing:-.5px;line-height:1.25}
.bill-total{font-size:40px;font-weight:600;letter-spacing:-1.2px}
.trh-title b,.hero-title b{font-weight:600}

/* ---- 卡片：发丝线取代重阴影，浮起靠明度差 ---- */
.card,.tile,.tc2,.gl,.histbar,.triphro,.triphero{
  box-shadow:none;
  border:1px solid var(--line);
}
.triphero{border-radius:26px}
.card{border-radius:var(--r)}

/* ---- 磁贴：去掉右下角光斑与彩色底 ---- */
.tile{position:relative;overflow:hidden;background:var(--card)}
.tile::after{display:none!important}
.tile .ic{background:var(--group);color:var(--ink2);
  width:34px;height:34px;border-radius:10px;font-size:0}
.tile .ic svg{width:18px;height:18px}
.tc2 .ic{background:var(--group);color:var(--ink2);font-size:0}
.tc2 .ic svg{width:18px;height:18px}

/* ---- 行程卡：去掉渐变色带，改成 1px 顶线 + 状态点 ---- */
.tripcard .tc-band,.tc-band{display:none}
.tripcard{border:1px solid var(--line);box-shadow:none;position:relative}
.tripcard.k-active{border-left:2px solid var(--live)}
.tripcard.k-upcoming{border-left:2px solid var(--brand)}
.tripcard.k-past{border-left:2px solid transparent}

/* ---- 行图标：统一中性，不再一模块一色 ---- */
.ri{background:var(--group);color:var(--ink2);font-size:0}
.ri svg{width:18px;height:18px}
.rrow{border-bottom:1px solid var(--line2)}
.rrow + .rrow{border-top:none}

/* ---- 分区标题：小字 + 字距展开，不用彩色 ---- */
.secrow h2,.sec-t,.bill-h{
  font-size:11.5px;font-weight:600;letter-spacing:.09em;text-transform:none;
  color:var(--muted);
}

/* ---- 按钮：主按钮用青瓷实心，次按钮描边 ---- */
.btn{background:var(--brand);color:#fff;border-radius:var(--r-pill);
  font-size:15.5px;font-weight:600;letter-spacing:-.1px}
.btn.ghost{background:transparent;color:var(--ink);border:1px solid var(--line)}
.btn:active{opacity:.86}

/* ---- 菜单栏：暖白胶囊，选中态用墨色而非彩色 ---- */
.tb-pill{background:rgba(255,253,250,.94);border:1px solid var(--line);
  box-shadow:0 10px 30px -14px rgba(60,42,24,.30)}
.tb-pill a{color:var(--faint)}
.tb-pill a.on{color:var(--ink);background:var(--group)}
.tb-plus{background:var(--brand);color:#fff;border:none;
  box-shadow:0 10px 26px -12px rgba(23,108,107,.55)}
.tabbar{background:linear-gradient(to top,var(--page) 55%,rgba(241,237,230,0))}

/* ---- 顶部栏 ---- */
.hdr{background:rgba(241,237,230,.88);backdrop-filter:blur(20px) saturate(160%);
  border-bottom:1px solid var(--line2)}

/* ---- 数字：等宽数字对齐 ---- */
.mo-v,.setl,.bill-total,.trh-stats b{font-variant-numeric:tabular-nums}

/* ---- 输入：暖底，不要纯白 ---- */
input,select,textarea{background:var(--group);border:1px solid transparent;
  border-radius:12px;color:var(--ink)}
input:focus,select:focus,textarea:focus{background:var(--card);
  border-color:var(--brand);outline:none;box-shadow:0 0 0 3px var(--brand-soft)}

/* ---- 状态胶囊：只有「进行中」用绿，其余中性 ---- */
.th-kind{font-size:11px;font-weight:600;letter-spacing:.02em;padding:4px 9px;
  border-radius:var(--r-pill);background:var(--group);color:var(--muted)}
.th-kind.k-active{background:var(--live-soft);color:var(--live)}
.th-kind.k-upcoming{background:var(--brand-soft);color:var(--brand)}

/* ---- 空状态：去 emoji 大图标，改成一行小字 ---- */
.empty2 .em{font-size:0;display:block;height:0;margin:0}
.empty2{padding:48px 20px;color:var(--muted);font-size:13.5px;line-height:1.7}

/* ---- 高度线条统一 ---- */
.gl,.card{overflow:hidden}

.rc-ic{font-size:0;width:22px;height:22px;display:flex;align-items:center;justify-content:center;color:var(--ink2)}
.rc-ic svg{width:20px;height:20px}
.hero-eyebrow{font-size:11.5px;font-weight:600;letter-spacing:.1em;text-transform:none;color:var(--muted)}
.tile .ic,.tc2 .ic,.ri{display:flex;align-items:center;justify-content:center}
.secrow h2{text-transform:none}

/* ---- Hero：等高线带 + 青瓷主按钮 ---- */
.hero-sky{display:block;width:100%;height:40px;background:var(--group)}
.hero{border:1px solid var(--line);box-shadow:none}
.hero-cta{background:var(--brand);color:#fff}
.hero-cta:active{opacity:.88}
.hero-eyebrow{color:var(--brand);background:var(--brand-soft)}
.route .dot{background:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}
.route .line{border-top-color:var(--line)}
.route .line em{background:var(--card)}

/* ---- 顶栏：标题居中，返回与动作钉到两侧 ---- */
.hdr .hdr-in{position:relative;justify-content:center;height:48px}
.hdr-in .back{position:absolute;left:0;font-size:26px;font-weight:300;color:var(--ink);
  width:36px;height:36px;display:flex;align-items:center;justify-content:center;line-height:1}
.hdr-in .act{position:absolute;right:0;color:var(--ink2);font-size:13.5px;font-weight:500}
.hdr h1{font-size:15.5px;font-weight:600;letter-spacing:-.1px}

/* ---- 行程页「修改」：描边小按钮 ---- */
.trh-edit{display:inline-flex;align-items:center;gap:5px;
  border:1px solid var(--line);background:transparent;color:var(--ink2);
  font-size:12.5px;font-weight:500;padding:6px 11px;border-radius:var(--r-pill)}
.trh-edit svg{width:13px;height:13px}


/* ==========================================================================
   Headspace 层 —— 圆体字 · 大圆角 · 柔和色块 · 有机动效
   参考的是它的语言：奶油底、一个橙色主色、6 个固定含义的柔和色、呼吸感动效。
   ========================================================================== */

body{
  font-family:var(--font-round);
  background:var(--page);
  letter-spacing:-.01em;
  -webkit-font-smoothing:antialiased;
}
h1,h2,h3,.sec-t,.bill-h,.tt,.trh-title,.hero-title,.bill-total{
  font-family:var(--font-round);letter-spacing:-.02em;
}

/* ---------------- 形状：大圆角 + 柔和上浮 ---------------- */
.card,.gl,.histbar,.hero,.tripcard,.tile,.tc2{
  border-radius:var(--r);
  border:1px solid rgba(43,29,20,.05);
  box-shadow:var(--sh);
  background:var(--card);
}
.triphero{border-radius:var(--r-lg);border:1px solid rgba(43,29,20,.05);box-shadow:var(--sh)}

/* ---------------- 图标块：柔和色圆角方块 ---------------- */
.ri{
  width:40px;height:40px;border-radius:13px;
  display:flex;align-items:center;justify-content:center;
  background:var(--group);color:var(--ink2);font-size:0;
}
.ri svg{width:19px;height:19px}
.tc2 .ic{
  width:44px;height:44px;border-radius:15px;font-size:0;
  display:flex;align-items:center;justify-content:center;
  background:var(--brand-soft);color:var(--brand);
}
.tc2 .ic svg{width:21px;height:21px}
.tile .ic{width:38px;height:38px;border-radius:13px}

/* ---------------- 按钮：橙色实心，圆润 ---------------- */
.btn{
  background:var(--brand);color:#fff;border:none;
  border-radius:var(--r-pill);height:50px;font-size:16px;font-weight:600;
  box-shadow:0 6px 18px -8px rgba(244,112,31,.65);
  transition:transform .16s cubic-bezier(.2,.9,.3,1.2), box-shadow .16s, opacity .16s;
}
.btn:active{transform:scale(.975);box-shadow:0 3px 10px -6px rgba(244,112,31,.6)}
.btn.ghost{background:var(--group);color:var(--ink);border:none;box-shadow:none}
.btn.ghost:active{transform:scale(.975);background:var(--peach)}

/* ---------------- 顶栏 / 菜单栏 ---------------- */
.hdr{background:rgba(255,246,239,.86);backdrop-filter:blur(22px) saturate(150%);
  border-bottom:1px solid rgba(43,29,20,.04)}
.hdr h1{font-weight:650;font-size:16px}
.hdr-in .back{color:var(--ink)}
.hdr-in .act{color:var(--brand);font-weight:600}

.tb-pill{background:rgba(255,252,249,.96);border:1px solid rgba(43,29,20,.05);
  box-shadow:0 12px 32px -16px rgba(120,70,30,.35);border-radius:999px}
.tb-pill a{color:var(--faint);transition:color .18s, background .18s, transform .18s}
.tb-pill a.on{color:var(--brand);background:var(--brand-soft)}
.tb-pill a:active{transform:scale(.9)}
.tb-plus{background:var(--brand);color:#fff;border:none;
  box-shadow:0 10px 24px -10px rgba(244,112,31,.7);
  transition:transform .16s cubic-bezier(.2,.9,.3,1.2)}
.tb-plus:active{transform:scale(.92)}
.tabbar{background:linear-gradient(to top,var(--page) 58%,rgba(255,246,239,0))}

/* ---------------- 分区标题：小、圆、暖 ---------------- */
.secrow h2,.sec-t,.bill-h{
  font-size:12px;font-weight:650;letter-spacing:.02em;color:var(--muted);
  text-transform:none;
}

/* ---------------- 状态胶囊 ---------------- */
.th-kind{font-weight:650;padding:5px 11px;border-radius:var(--r-pill);
  background:var(--group);color:var(--muted)}
.th-kind.k-active{background:var(--live-soft);color:var(--live)}
.th-kind.k-upcoming{background:var(--brand-soft);color:var(--brand)}

/* ---------------- 输入 ---------------- */
input,select,textarea{
  background:var(--group);border:1.5px solid transparent;border-radius:14px;
  color:var(--ink);transition:border-color .18s, background .18s, box-shadow .18s;
}
input:focus,select:focus,textarea:focus{
  background:var(--card);border-color:var(--brand);
  box-shadow:0 0 0 4px var(--brand-soft);outline:none;
}

/* ==========================================================================
   动效
   ========================================================================== */

@keyframes hs-rise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@keyframes hs-breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.05)}}
@keyframes hs-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
@keyframes hs-pop{0%{transform:scale(.92);opacity:0}60%{transform:scale(1.02)}100%{transform:scale(1);opacity:1}}

/* 页面进入：淡入 + 轻微上浮 */
#view.enter{animation:hs-rise .34s cubic-bezier(.22,1,.36,1) both}

/* 列表项依次浮起（最多 6 项，再多就不 stagger，避免拖沓） */
#view.enter .gl > *,
#view.enter .trio > *,
#view.enter .card{
  animation:hs-rise .38s cubic-bezier(.22,1,.36,1) both;
}
#view.enter .gl > *:nth-child(1),#view.enter .trio > *:nth-child(1),#view.enter .card:nth-child(1){animation-delay:.02s}
#view.enter .gl > *:nth-child(2),#view.enter .trio > *:nth-child(2),#view.enter .card:nth-child(2){animation-delay:.06s}
#view.enter .gl > *:nth-child(3),#view.enter .trio > *:nth-child(3),#view.enter .card:nth-child(3){animation-delay:.10s}
#view.enter .gl > *:nth-child(4),#view.enter .card:nth-child(4){animation-delay:.14s}
#view.enter .gl > *:nth-child(5),#view.enter .card:nth-child(5){animation-delay:.18s}
#view.enter .gl > *:nth-child(n+6),#view.enter .card:nth-child(n+6){animation-delay:.21s}

/* 首页呼吸的大橙球 */
.hs-orb{
  transform-origin:center;
  animation:hs-breathe 9s ease-in-out infinite;
}
.hs-float{animation:hs-float 7s ease-in-out infinite}

/* 所有可点的东西：按下去有回弹 */
.rrow,.tc2,.tile,.tripcard,.histbar,.mrow,.ledrow,.rc,.trip-row{
  transition:transform .16s cubic-bezier(.2,.9,.3,1.2), background .16s;
}
.rrow:active,.tc2:active,.tile:active,.tripcard:active,.histbar:active,
.mrow:active,.ledrow:active,.rc:active,.trip-row:active{transform:scale(.985)}

/* 数字变化时轻微弹一下 */
.bill-total,.trh-stats b,.hb-r{animation:hs-pop .3s ease-out both}

/* ---------- 尊重系统的「减弱动态效果」 ---------- */
@media (prefers-reduced-motion:reduce){
  .hs-orb,.hs-float{animation:none!important}
  #view.enter,#view.enter .gl > *,#view.enter .trio > *,#view.enter .card,
  .bill-total,.trh-stats b,.hb-r{animation:none!important}
  *,*::before,*::after{transition-duration:.01ms!important;animation-duration:.01ms!important}
}

/* ---- Hero：柔光球场 ---- */
.hero-band{position:relative;height:78px;overflow:hidden;
  background:linear-gradient(180deg,#FFF1E4 0%,#FFFCF9 100%)}
.hero-band .b1{position:absolute;right:-22px;top:-30px;width:136px;height:136px;border-radius:50%;
  background:radial-gradient(circle at 34% 32%,#FFB46B 0%,rgba(255,180,107,.55) 38%,rgba(255,180,107,0) 70%)}
.hero-band .b2{position:absolute;left:-16px;top:14px;width:92px;height:92px;border-radius:50%;
  background:radial-gradient(circle at 40% 36%,#FFD9B8 0%,rgba(255,217,184,.6) 40%,rgba(255,217,184,0) 72%)}
.hero-sky{display:none}

/* ---- 顶栏容器必须撑满，否则标题和右侧动作重叠 ---- */
.hdr{display:block}
.hdr .hdr-in{width:100%;box-sizing:border-box;padding:0 16px}

/* ---- Hero 光球：收小、内收、加模糊，不要贴边切出硬边 ---- */
.hero-band{position:relative;height:86px;overflow:hidden;
  background:linear-gradient(180deg,#FFF0E0 0%,#FFFCF9 100%)}
.hero-band .b1{position:absolute;right:2px;top:-14px;width:112px;height:112px;border-radius:50%;
  filter:blur(2px);
  background:radial-gradient(circle at 50% 50%,#FFA85C 0%,rgba(255,168,92,.5) 44%,rgba(255,168,92,0) 72%)}
.hero-band .b2{position:absolute;left:6px;top:22px;width:76px;height:76px;border-radius:50%;
  filter:blur(1px);
  background:radial-gradient(circle at 46% 44%,#FFD0A6 0%,rgba(255,208,166,.55) 46%,rgba(255,208,166,0) 74%)}

/* ---- 图标块：按模块上色（去掉上一层的 !important 压制） ---- */
.ri{background:var(--group);color:var(--ink2)}
.ri svg{color:inherit}
.tc2 .ic{background:var(--brand-soft);color:var(--brand)}


/* ==========================================================================
   2026-10 最终视觉层 · 参考 Gentler Streak
   奶油底 + 珊瑚主色 + 柔和灰绿/天蓝/薰衣草 + 大圆弧进度 + 大字数字。
   （末尾定义，覆盖上面几版的所有 token）
   ========================================================================== */
:root{
  --page:#FBF6F1;
  --bg:#FBF6F1;
  --card:#FFFDFB;
  --group:#F6EDE6;
  --panel-2:#F6EDE6;

  --ink:#2E2926;
  --ink2:#5B504A;
  --muted:#8E817A;
  --faint:#B8AAA1;

  --line:rgba(46,41,38,.06);
  --line2:rgba(46,41,38,.04);
  --sep:rgba(46,41,38,.07);

  --brand:#EE6A5A;            /* Gentler Streak 珊瑚 */
  --brand-2:#F5836F;
  --brand-soft:rgba(238,106,90,.13);
  --link:#DE5442;

  --peach:#F9D6C8;   --peach-ink:#B05B45;
  --coral:#F7B5A6;   --coral-ink:#A94A38;
  --sky:#C6DAEC;     --sky-ink:#33628C;
  --lav:#DACFEA;     --lav-ink:#5F4880;
  --sage:#C3D9BE;    --sage-ink:#3F6B41;
  --butter:#F7E3B4;  --butter-ink:#8A6A1E;

  --live:#5FA37A;    --live-soft:rgba(95,163,122,.15);
  --soon:#EE6A5A;    --soon-soft:rgba(238,106,90,.13);
  --past:#A99C94;    --past-soft:rgba(46,41,38,.05);

  --ok:#5FA37A;   --ok-soft:rgba(95,163,122,.15);
  --warn:#C99A3E; --warn-soft:rgba(201,154,62,.15);
  --no:#D8695C;   --no-soft:rgba(216,105,92,.13);
  --tap:rgba(46,41,38,.04);

  --r:26px; --r-lg:34px; --r-sm:18px; --r-xs:12px; --r-pill:980px;

  --sh:0 12px 34px -24px rgba(90,50,40,.30), 0 1px 3px rgba(90,50,40,.04);
  --sh-lg:0 26px 64px -34px rgba(90,50,40,.38);

  --font-round:ui-rounded,"SF Pro Rounded","Hiragino Maru Gothic ProN",
               -apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;
  --font-display:var(--font-round);

  --c-trip:#B05B45;   --c-trip-bg:#F9D6C8;
  --c-map:#33628C;    --c-map-bg:#C6DAEC;
  --c-money:#8A6A1E;  --c-money-bg:#F7E3B4;
  --c-prep:#5F4880;   --c-prep-bg:#DACFEA;
  --c-weather:#3F6B41;--c-weather-bg:#C3D9BE;
  --c-ticket:#8A6A1E; --c-ticket-bg:#F7E3B4;
  --c-hotel:#3F6B41;  --c-hotel-bg:#C3D9BE;
  --c-transit:#33628C;--c-transit-bg:#C6DAEC;
  --c-people:#A94A38; --c-people-bg:#F7B5A6;
  --c-fx:#5F4880;     --c-fx-bg:#DACFEA;
}

/* ---------------- 卡片：GS 是几乎无边框的软浮起 ---------------- */
.card,.gl,.histbar,.hero,.tripcard,.tile,.tc2,.gs-card,.triphero{
  background:var(--card);
  border:none;
  box-shadow:var(--sh);
  border-radius:var(--r);
}
.gs-card,.triphero{border-radius:var(--r-lg);padding:22px 22px 20px}

/* ---------------- 页头字：大字 + 小标签 ---------------- */
body{font-family:var(--font-round);letter-spacing:-.015em}
.hd-big{font-size:30px;font-weight:700;letter-spacing:-.8px;line-height:1.15}
.hd-sub{font-size:13.5px;color:var(--muted);margin-top:4px}

/* ============================================================
   行程主卡（Gentler Streak 形态）
   ============================================================ */
.gs-card{position:relative;overflow:hidden;margin-bottom:18px}
.gs-top{display:flex;align-items:flex-start;gap:14px}
.gs-main{flex:1;min-width:0}
.gs-badge{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:650;
  padding:5px 11px;border-radius:var(--r-pill);background:var(--brand-soft);color:var(--brand);
  letter-spacing:.01em}
.gs-title{font-size:29px;font-weight:700;letter-spacing:-.8px;line-height:1.2;margin-top:12px;
  overflow-wrap:anywhere}
.gs-dates{font-size:13.5px;color:var(--muted);margin-top:6px;line-height:1.5}
.gs-cities{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
.gs-cities span{font-size:12px;font-weight:500;padding:5px 11px;border-radius:var(--r-pill);
  background:var(--group);color:var(--ink2)}

/* 圆弧：GS 的视觉锚点，把右上角的空白填掉 */
.gs-ring{flex:0 0 auto;width:88px;height:88px;position:relative;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  margin-top:2px}
.gs-ring svg{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg)}
.gs-ring .rt{position:relative;text-align:center;line-height:1}
.gs-ring .rt b{display:block;font-size:25px;font-weight:700;letter-spacing:-.6px;
  font-variant-numeric:tabular-nums}
.gs-ring .rt i{display:block;font-size:9.5px;font-style:normal;color:var(--muted);
  margin-top:3px;letter-spacing:.02em}

@keyframes gsRingIn{from{stroke-dashoffset:var(--c)}to{stroke-dashoffset:var(--off)}}
.gs-ring .fill{animation:gsRingIn 1.1s cubic-bezier(.22,1,.36,1) both}

/* 统计：三列大字 + 小标签 */
.gs-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;
  margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}
.gs-stats > div{display:flex;flex-direction:column;gap:3px}
.gs-stats b{font-size:19px;font-weight:700;letter-spacing:-.4px;
  font-variant-numeric:tabular-nums;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gs-stats span{font-size:10.5px;color:var(--muted);letter-spacing:.01em}

.gs-cta{margin-top:18px;width:100%;height:50px;border-radius:var(--r-pill);
  background:var(--brand);color:#fff;font-size:15.5px;font-weight:650;
  display:flex;align-items:center;justify-content:center;gap:7px;
  box-shadow:0 10px 24px -14px rgba(238,106,90,.85);
  transition:transform .16s cubic-bezier(.2,.9,.3,1.2)}
.gs-cta:active{transform:scale(.975)}

/* ---------------- 分区标题：小、疏、暖 ---------------- */
.secrow h2,.sec-t,.bill-h{font-size:11.5px;font-weight:650;letter-spacing:.06em;
  color:var(--muted);text-transform:none}

/* ---------------- 菜单栏 ---------------- */
.tb-pill{background:rgba(255,253,251,.96);border:none;
  box-shadow:0 14px 36px -18px rgba(90,50,40,.42)}
.tb-pill a.on{color:var(--brand);background:var(--brand-soft)}
.tb-plus{background:var(--brand);box-shadow:0 12px 26px -12px rgba(238,106,90,.9)}
.tabbar{background:linear-gradient(to top,var(--page) 58%,rgba(251,246,241,0))}
.hdr{background:rgba(251,246,241,.88);border-bottom:none}
.hdr-in .act{color:var(--brand);font-weight:650}

@media (prefers-reduced-motion:reduce){
  .gs-ring .fill{animation:none!important;stroke-dashoffset:var(--off)}
}

/* ---- 行程卡收紧：GS 的卡更紧凑，字更大但行更少 ---- */
.gs-title{font-size:26px;letter-spacing:-.7px;margin-top:10px;line-height:1.18}
.gs-dates{font-size:13px;margin-top:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gs-cities{margin-top:11px;gap:5px}
.gs-cities span{font-size:11.5px;padding:4px 10px}
.gs-ring{width:78px;height:78px}
.gs-ring .rt b{font-size:23px}
.gs-ring .rt i{font-size:9px}
.gs-stats{margin-top:16px;padding-top:14px}
.gs-badge{font-size:11px;padding:4px 10px}

/* ---- 城市标签：单行横向滑动，不再折成两行 ---- */
.gs-cities{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;
  margin:11px -22px 0;padding:0 22px 2px;
  -webkit-overflow-scrolling:touch;scroll-behavior:smooth}
.gs-cities::-webkit-scrollbar{display:none}
.gs-cities span{flex:0 0 auto}

/* ---- 行程详情页头：与首页同一套字阶 ---- */
.triphero{padding:22px 22px 18px}
.trh-title{font-size:29px;font-weight:700;letter-spacing:-.8px;line-height:1.18}
.trh-sub{font-size:13px;color:var(--muted);margin-top:6px}
.trh-cities span{font-size:11.5px;padding:4px 10px;background:var(--group);color:var(--ink2)}
.trh-stats{margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}
.trh-stats b{font-size:23px;font-weight:700;letter-spacing:-.5px}
.trh-stats span{font-size:10.5px;color:var(--muted)}
.trh-edit{border:none;background:var(--group);color:var(--ink2);font-weight:600;
  padding:6px 12px;border-radius:var(--r-pill)}


/* ==========================================================================
   取色修正 —— 按 Gentler Streak 截图拆解采样到的色值：
   珊瑚 #FF7A45 / 紫 #2E1B4E / 黄 #F4C430 / 薄荷 #7ED957 / 天蓝 #8DB4E6
   中性 #F2F2F7 / #E8EAED。它的做法是「一个功能一个色调」。
   ========================================================================== */
:root{
  --page:#F7F5F2;
  --bg:#F7F5F2;
  --card:#FFFEFC;
  --group:#F1EEEA;
  --panel-2:#F1EEEA;

  --ink:#241F1C;
  --ink2:#57504A;
  --muted:#8C8480;
  --faint:#B5ADA7;

  --line:rgba(36,31,28,.06);
  --line2:rgba(36,31,28,.04);
  --sep:rgba(36,31,28,.07);

  --brand:#FF7A45;                 /* GS 珊瑚 */
  --brand-2:#FF9366;
  --brand-soft:rgba(255,122,69,.14);
  --link:#F2662F;

  --peach:#FFD9C6;   --peach-ink:#B25A32;
  --coral:#FFB59A;   --coral-ink:#A94726;
  --sky:#D6E6F7;     --sky-ink:#2E5F92;
  --lav:#E2D8F0;     --lav-ink:#5A3F80;
  --sage:#D8F0CC;    --sage-ink:#3E6B2E;
  --butter:#FBEDBE;  --butter-ink:#8A6B12;

  --live:#5FB054;    --live-soft:rgba(95,176,84,.15);
  --soon:#FF7A45;    --soon-soft:rgba(255,122,69,.14);
  --past:#A9A099;    --past-soft:rgba(36,31,28,.05);

  --ok:#5FB054;   --ok-soft:rgba(95,176,84,.15);
  --warn:#D9A21F; --warn-soft:rgba(217,162,31,.15);
  --no:#E0574A;   --no-soft:rgba(224,87,74,.13);

  --c-trip:#B25A32;   --c-trip-bg:#FFD9C6;
  --c-map:#2E5F92;    --c-map-bg:#D6E6F7;
  --c-money:#8A6B12;  --c-money-bg:#FBEDBE;
  --c-prep:#5A3F80;   --c-prep-bg:#E2D8F0;
  --c-weather:#3E6B2E;--c-weather-bg:#D8F0CC;
  --c-ticket:#8A6B12; --c-ticket-bg:#FBEDBE;
  --c-hotel:#3E6B2E;  --c-hotel-bg:#D8F0CC;
  --c-transit:#2E5F92;--c-transit-bg:#D6E6F7;
  --c-people:#A94726; --c-people-bg:#FFB59A;
  --c-fx:#5A3F80;     --c-fx-bg:#E2D8F0;
}

/* ---- 行程列表卡：整张卡可点，不要左侧色条，不要两头分家的文字 ---- */
.trip-btn{
  display:block;width:100%;text-align:left;border:none!important;
  border-left:none!important;padding:22px 22px 20px;margin:0 0 14px;
  background:var(--card);border-radius:var(--r-lg);box-shadow:var(--sh);
  transition:transform .16s cubic-bezier(.2,.9,.3,1.2);
}
.trip-btn:active{transform:scale(.985)}
.trip-btn .tc-band,.trip-btn .tc-in,.trip-btn .tc-top,.trip-btn .tc-title,
.trip-btn .tc-sub,.trip-btn .tc-cities,.trip-btn .tc-foot{display:none!important}
.trip-btn .gs-stats{margin-top:16px;padding-top:14px}

/* ---- 行程页密一点：卡片之间 14px ---- */
.portal-list .gs-card{margin-bottom:14px}


/* ==========================================================================
   收色 + 居中菜单栏
   GS 是「白底为主，橙色只在按钮和状态上」。之前橙色块太多，这里全部收回。
   ========================================================================== */
:root{
  --page:#F4F2EF;          /* 页面：极浅中性灰 */
  --bg:#F4F2EF;
  --card:#FFFFFF;          /* 卡片：白 */
  --group:#F4F1EE;
  --panel-2:#F4F1EE;

  --ink:#1E1A17;
  --ink2:#544C46;
  --muted:#8B8179;
  --faint:#B6ADA6;

  --line:rgba(30,26,23,.055);
  --line2:rgba(30,26,23,.035);
  --sep:rgba(30,26,23,.065);

  --brand:#FF7A45;
  --brand-2:#FF9366;
  --brand-soft:rgba(255,122,69,.11);
  --link:#EE6A33;

  /* 卡片阴影：几乎不可见，白卡在浅灰上自然浮起 */
  --sh:0 1px 2px rgba(30,20,12,.04), 0 8px 24px -18px rgba(30,20,12,.18);
  --sh-lg:0 20px 50px -30px rgba(30,20,12,.30);
}

/* ---------------- 菜单栏：一整块居中胶囊 ---------------- */
.tabbar{
  position:fixed;left:0;right:0;bottom:0;z-index:60;
  display:flex;justify-content:center;align-items:flex-end;
  padding:8px 16px calc(12px + var(--safe-b));
  background:linear-gradient(to top,rgba(244,242,239,.96) 55%,rgba(244,242,239,0));
  border-top:none;
}
.tb-pill{
  display:flex;align-items:center;gap:4px;
  background:rgba(255,255,255,.97);
  backdrop-filter:saturate(180%) blur(24px);-webkit-backdrop-filter:saturate(180%) blur(24px);
  border-radius:999px;padding:6px;
  box-shadow:0 10px 32px -12px rgba(40,24,14,.30), 0 1px 2px rgba(40,24,14,.05);
  border:none;
}
.tb-pill a{
  width:52px;height:46px;display:flex;align-items:center;justify-content:center;
  border-radius:999px;color:#B4AAA2;text-decoration:none;
  transition:color .16s, background .16s, transform .16s;
}
.tb-pill a svg{width:22px;height:22px}
.tb-pill a.on{color:var(--brand);background:var(--brand-soft)}
.tb-pill a:active{transform:scale(.92)}
.tb-sep{width:1px;height:22px;background:rgba(30,26,23,.08);margin:0 4px}
.tb-plus{
  width:46px;height:46px;border-radius:50%;flex:0 0 auto;
  background:var(--brand);color:#fff;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 6px 16px -6px rgba(255,122,69,.75);
  transition:transform .16s cubic-bezier(.2,.9,.3,1.2);
}
.tb-plus svg{width:21px;height:21px}
.tb-plus:active{transform:scale(.9)}

/* ---------------- 行程卡：去掉橙色大按钮，整张卡可点 ---------------- */
.gs-card{background:var(--card)}
.gs-cta{display:none}
.gs-badge{background:#F4F1EE;color:#7D736B}
.gs-badge::before{content:"";width:5px;height:5px;border-radius:50%;
  background:var(--brand);display:inline-block;margin-right:3px}
.gs-ring .rt b{color:var(--ink)}
.gs-stats b{color:var(--ink)}
.gs-go{display:flex;align-items:center;justify-content:flex-end;gap:4px;
  margin-top:10px;font-size:12.5px;font-weight:600;color:var(--brand)}

/* ---------------- 常用模块：白卡，图标只在描边上给色 ---------------- */
.tc2{background:var(--card);box-shadow:var(--sh);border:none}
.tc2 .ic{background:#F4F1EE!important;color:var(--ink2)!important}
.tc2 i{color:var(--muted)}

/* ---------------- 行程详情：同样的白卡 ---------------- */
.triphero,.ri,.gl,.histbar,.card{background:var(--card)}

/* ---------------- 历史行程删除 ---------------- */
.trip-actions{display:flex;justify-content:flex-end;margin-top:10px;
  padding-top:10px;border-top:1px solid var(--line2)}
.trip-del{font-size:12.5px;font-weight:600;color:#B0564A;
  padding:6px 12px;border-radius:999px;background:rgba(224,87,74,.07)}
.trip-del:active{background:rgba(224,87,74,.14)}
.trip-btn{position:relative}

/* ---------------- 分区标题：带右侧计数 ---------------- */
.secrow{display:flex;align-items:baseline;justify-content:space-between;margin:22px 2px 10px}
.secrow h2{font-size:11.5px;font-weight:650;letter-spacing:.06em;color:var(--muted)}
.secrow > span,.secrow > a{font-size:11.5px;color:var(--faint);text-decoration:none}

/* ---- 常用模块与行程行：恢复浅色图标块（浅，不抢橙色） ---- */
.tc2 .ic{background:var(--brand-soft)!important;color:var(--brand)!important}
.tc2:nth-child(2) .ic{background:#FBEDBE!important;color:#8A6B12!important}
.tc2:nth-child(3) .ic{background:#D6E6F7!important;color:#2E5F92!important}
.tc2:nth-child(1) .ic{background:#FFE0D2!important;color:#B45F38!important}

/* ---- 圆弧用渐变描边，比纯色更有层次 ---- */
.gs-ring svg defs{display:block}

/* ---- 卡片底部动作：更轻 ---- */
.gs-go{font-size:12.5px;margin-top:12px}

/* ---- 主卡：白底 + 极淡描边，阴影只留一丝 ---- */
.gs-card{box-shadow:0 1px 2px rgba(30,20,12,.04),0 10px 26px -22px rgba(30,20,12,.22)}

/* ---- 顶栏标题：不要被拉满，真正居中 ---- */
.hdr .hdr-in h1{flex:0 0 auto;text-align:center;max-width:62%;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}


/* ==========================================================================
   统一弹层（确认 / 输入 / 选择）
   ========================================================================== */
@keyframes uiFade{from{opacity:0}to{opacity:1}}
@keyframes uiPop{from{opacity:0;transform:scale(.94) translateY(6px)}
  to{opacity:1;transform:none}}

.uimask{position:fixed;inset:0;z-index:300;display:flex;align-items:center;justify-content:center;
  padding:26px;background:rgba(30,22,16,.30);
  backdrop-filter:blur(8px) saturate(120%);-webkit-backdrop-filter:blur(8px) saturate(120%);
  animation:uiFade .18s ease-out both}
.uibox{width:100%;max-width:330px;background:#fff;border-radius:26px;overflow:hidden;
  box-shadow:0 30px 80px -28px rgba(30,20,12,.55),0 2px 8px rgba(30,20,12,.06);
  animation:uiPop .26s cubic-bezier(.2,.9,.3,1.15) both}
.uibox-h{padding:24px 22px 0;font-size:17.5px;font-weight:700;letter-spacing:-.45px;
  line-height:1.35;color:var(--ink);text-align:center}
.uibox-b{padding:8px 22px 22px;font-size:13.5px;line-height:1.6;color:var(--muted);text-align:center}
.uibox-h + .uibox-b{padding-top:9px}
.uibox-b:last-child{padding-bottom:24px}
.uibox-i{padding:14px 18px 18px}
.uibox-i input{width:100%;height:48px;background:var(--group);border:1.5px solid transparent;
  border-radius:15px;padding:0 15px;font-size:16px;color:var(--ink);text-align:center}
.uibox-i input:focus{background:#fff;border-color:var(--brand);
  box-shadow:0 0 0 4px var(--brand-soft);outline:none}

.uibox-f{display:flex;border-top:1px solid var(--line)}
.uibox-f:empty{display:none}
.uibox-f button{flex:1;height:54px;font-size:16px;font-weight:650;color:var(--brand);
  border-radius:0;background:none;transition:background .14s}
.uibox-f button:active{background:var(--group)}
.uibox-f button.cancel{color:var(--muted);font-weight:500}
.uibox-f button.danger{color:#D9534F}
.uibox-f button + button{border-left:1px solid var(--line)}

/* 选择列表 */
.uichoices{max-height:52vh;overflow-y:auto;padding:6px 14px 14px}
.uich{display:flex;flex-direction:column;gap:2px;width:100%;text-align:left;
  padding:13px 14px;border-radius:14px;background:var(--group);margin-top:8px}
.uich:active{background:var(--brand-soft)}
.uich b{font-size:14.5px;font-weight:600;color:var(--ink)}
.uich i{font-size:11.5px;font-style:normal;color:var(--muted)}

/* ---- 弹层底部按钮：居中对齐（全局 button 是左对齐，这里要覆盖） ---- */
.uibox-f button{display:flex;align-items:center;justify-content:center;
  text-align:center;width:100%;padding:0}


/* ==========================================================================
   行程总览 · 时间轴
   ========================================================================== */
.itl-head{margin:2px 2px 20px}
.itl-t{font-size:25px;font-weight:700;letter-spacing:-.7px;line-height:1.2}
.itl-s{font-size:12.5px;color:var(--muted);margin-top:5px;line-height:1.5}

.tl{display:flex;flex-direction:column}
.tl-row{display:grid;grid-template-columns:38px minmax(0,1fr);gap:10px}

.tl-rail{position:relative;display:flex;justify-content:center;padding-top:20px}
.tl-rail::before{content:"";position:absolute;left:50%;top:0;bottom:0;
  border-left:2px dashed rgba(30,26,23,.12);transform:translateX(-1px)}
.tl-row:first-child .tl-rail::before{top:20px}
.tl-row:last-child .tl-rail::before{bottom:auto;height:20px}

.tl-dot{position:relative;z-index:1;width:30px;height:30px;border-radius:50%;
  background:#fff;border:2px solid #E6DED7;display:flex;align-items:center;justify-content:center;
  font-size:12.5px;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}

.tl-card{background:#fff;border-radius:22px;box-shadow:var(--sh);overflow:hidden;
  margin-bottom:16px;transition:transform .16s cubic-bezier(.2,.9,.3,1.2)}
.tl-card:active{transform:scale(.985)}

.tl-head{display:flex;align-items:flex-start;gap:10px;padding:14px 16px 13px}
.tl-day{font-size:10px;font-weight:700;letter-spacing:.12em;opacity:.85}
.tl-city{font-size:19px;font-weight:700;letter-spacing:-.45px;margin-top:3px;line-height:1.2}
.tl-date{font-size:11.5px;margin-top:4px;opacity:.9}
.tl-go{color:rgba(0,0,0,.22);font-size:20px;line-height:1;margin-top:2px}

.tl-items{padding:6px 0 10px}
.tl-it{display:flex;gap:10px;padding:7px 16px;align-items:baseline}
.tl-n{flex:0 0 14px;text-align:right;color:var(--faint);font-size:11px;
  font-variant-numeric:tabular-nums}
.tl-t{font-size:13.5px;line-height:1.45;color:var(--ink2);min-width:0;overflow-wrap:anywhere}
.tl-more{padding:4px 16px 0;font-size:11.5px;color:var(--faint)}
.tl-empty{padding:16px;font-size:12.5px;color:var(--faint)}

.tl-foot{display:flex;justify-content:space-between;gap:10px;align-items:center;
  padding:10px 16px;border-top:1px solid var(--line);
  font-size:11px;color:var(--muted)}
.tl-sum{max-width:55%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  color:var(--faint)}

/* 弹窗标题：两端对齐换行，不要出现孤字 */
.uibox-h{text-wrap:balance;overflow-wrap:break-word}

.tl-go2{color:var(--brand);font-weight:600;font-size:11.5px}
.tl-foot{justify-content:space-between}

/* 不再用全大写 + 字距，那是模板味；用正常大小写的「第 N 天」 */
.tl-day{font-size:11px;font-weight:600;letter-spacing:0;opacity:.9}
.itl-s{line-height:1.7}


/* ==========================================================================
   找住宿 · 只显示打过分的，按分排序
   ========================================================================== */
.hcard{background:#fff;border-radius:22px;box-shadow:var(--sh);padding:16px 16px 14px;margin-bottom:14px}
.hc-note{font-size:12px;color:var(--muted);margin:0 2px 12px}

.hc-top{display:flex;align-items:flex-start;gap:10px}
.hc-rank{flex:0 0 auto;width:24px;height:24px;border-radius:8px;background:var(--group);
  color:var(--muted);font-size:12px;font-weight:700;
  display:flex;align-items:center;justify-content:center;font-variant-numeric:tabular-nums}
.hc-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.hc-name{font-size:16.5px;font-weight:700;letter-spacing:-.35px;line-height:1.3;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hc-sub{font-size:12px;color:var(--muted)}
.hc-booked{font-style:normal;color:var(--live);background:var(--live-soft);
  font-size:10.5px;font-weight:650;padding:2px 7px;border-radius:999px;margin-left:6px}
.hc-score{flex:0 0 auto;text-align:right;line-height:1;margin-top:1px}
.hc-score b{font-size:25px;font-weight:700;letter-spacing:-.7px;font-variant-numeric:tabular-nums}
.hc-score i{font-size:10px;font-style:normal;color:var(--muted);margin-left:2px}

.hc-bar{height:5px;border-radius:999px;background:var(--group);margin-top:11px;overflow:hidden}
.hc-bar i{display:block;height:100%;border-radius:999px;
  background:linear-gradient(90deg,var(--brand),var(--brand-2))}

.hc-crit{display:grid;grid-template-columns:1fr 1fr;gap:9px 16px;margin-top:13px}
.hcc{position:relative;display:flex;justify-content:space-between;gap:8px;
  font-size:12px;padding-bottom:6px}
.hcc-l{color:var(--muted)}
.hcc-v{font-weight:650;color:var(--ink);font-variant-numeric:tabular-nums}
.hcc-b{position:absolute;left:0;bottom:0;height:2px;border-radius:2px;
  background:var(--brand);opacity:.45}
.hc-na{color:var(--faint);font-weight:500}

.hc-act{display:flex;gap:8px;margin-top:15px}
.hc-order{flex:1;height:44px;border-radius:999px;background:var(--brand);color:#fff;
  display:flex;align-items:center;justify-content:center;gap:6px;
  font-size:15px;font-weight:650;text-decoration:none;
  box-shadow:0 8px 20px -12px rgba(255,122,69,.9)}
.hc-order:active{transform:scale(.98)}
.hc-more{flex:0 0 92px;height:44px;border-radius:999px;background:var(--group);
  color:var(--ink2);font-size:14px;font-weight:600;
  display:flex;align-items:center;justify-content:center}
.hc-more:active{background:var(--brand-soft)}
.hc-noorder{flex:1;display:flex;align-items:center;font-size:12px;color:var(--faint)}

.hc-detail{margin-top:15px;padding-top:14px;border-top:1px solid var(--line);
  animation:hs-rise .26s cubic-bezier(.22,1,.36,1) both}
.hcd-row{display:flex;gap:10px;font-size:12.5px;padding:5px 0;line-height:1.5}
.hcd-row b{flex:0 0 44px;color:var(--muted);font-weight:500}
.hcd-row span{color:var(--ink2);min-width:0;overflow-wrap:anywhere}
.hcd-src{margin-top:10px;font-size:11.5px;color:var(--faint);line-height:1.7}
.hcd-src div{display:flex;gap:6px}
.hcd-src b{font-weight:600;flex:0 0 auto}
.hcd-note{margin-top:10px;font-size:12.5px;color:var(--ink2);line-height:1.7;
  max-height:240px;overflow-y:auto;padding-right:4px}
.hcd-act{display:flex;gap:8px;margin-top:14px;flex-wrap:wrap}

/* ---- 每天穿什么 ---- */
.wxcloth{background:#fff;border-radius:20px;box-shadow:var(--sh);margin-bottom:10px;overflow:hidden}
.wc-head{width:100%;display:flex;align-items:center;gap:10px;padding:14px 15px;text-align:left}
.wc-d{flex:0 0 auto;font-size:13.5px;font-weight:700;letter-spacing:-.2px}
.wc-prev{flex:1;min-width:0;font-size:12px;color:var(--muted);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wc-n{flex:0 0 auto;font-size:10.5px;color:var(--faint);background:var(--group);
  padding:2px 7px;border-radius:999px}
.wc-g{flex:0 0 auto;color:#C9BEB5;font-size:17px;transition:transform .2s}
.wc-head.open .wc-g{transform:rotate(90deg)}
.wc-body{border-top:1px solid var(--line2);padding:4px 0 6px;
  animation:hs-rise .24s cubic-bezier(.22,1,.36,1) both}
.wc-row{padding:10px 15px}
.wc-row + .wc-row{border-top:1px solid var(--line2)}
.wc-city{font-size:11px;font-weight:650;color:var(--brand);letter-spacing:.02em}
.wc-out{font-size:13.5px;color:var(--ink2);margin-top:4px;line-height:1.5}
.wc-meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:7px;align-items:center;
  font-size:11.5px;color:var(--muted)}
.wc-tag{background:var(--butter);color:#8A6B12;padding:3px 9px;border-radius:999px;font-size:11px}

/* ---- 某天页：事实带 ---- */
.dayfact{display:flex;align-items:flex-end;gap:14px;background:#fff;border-radius:22px;
  box-shadow:var(--sh);padding:16px 18px;margin-bottom:12px}
.df-big{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.df-big b{font-size:21px;font-weight:700;letter-spacing:-.5px;line-height:1.2;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.df-big span{font-size:12px;color:var(--muted)}
.df-kv{flex:0 0 auto;text-align:right;display:flex;flex-direction:column;gap:3px}
.df-kv b{font-size:16px;font-weight:700;letter-spacing:-.3px;font-variant-numeric:tabular-nums}
.df-kv span{font-size:10px;color:var(--faint)}
.df-warn{margin:0 2px 12px;font-size:12px;color:#B0642E;background:rgba(215,150,60,.13);
  padding:8px 12px;border-radius:12px}
.df-note{margin:0 2px 12px;font-size:12px;color:var(--muted)}

/* ---- 天气 meta ---- */
.wxmeta{display:flex;flex-wrap:wrap;gap:6px;margin:2px 2px 12px}
.wxmeta span{font-size:11px;color:var(--muted);background:var(--group);
  padding:4px 10px;border-radius:999px}
.wxnote{margin:0 2px 14px;font-size:11.5px;color:var(--faint);line-height:1.6}

/* 总览的一句话摘要最多两行，超出省略 */
.tl-brief{padding:10px 16px 12px;font-size:12.5px;line-height:1.55;color:var(--ink2);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
/* 总览卡更紧凑 */
.tl-head{padding:11px 15px 10px}
.tl-city{font-size:17px;margin-top:2px}
.tl-date{font-size:11px;margin-top:3px}
.tl-foot{padding:8px 15px;font-size:10.5px}
.tl-card{margin-bottom:12px}

/* 行程卡日期行不换行（同行人多了会挤到第二行） */
.trh-sub{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}


/* ==========================================================================
   横竖交替 + 按天卡固定高度
   ========================================================================== */

/* ---- 竖向卡（默认）：表头在上，条目在下一列 ---- */
.tl-card.v .tl-items{padding:6px 0 10px}

/* ---- 横向卡：表头在左，条目在右两栏，把右侧空白填掉 ---- */
@media (min-width:620px){
  .tl-card.h{
    display:grid;
    grid-template-columns:236px minmax(0,1fr);
    grid-template-areas:"head items" "foot foot";
  }
  .tl-card.h .tl-head{grid-area:head;align-self:stretch}
  .tl-card.h .tl-items{grid-area:items;padding:12px 0 10px;
    display:grid;grid-template-columns:1fr 1fr;column-gap:10px;align-content:start}
  .tl-card.h .tl-foot{grid-area:foot}
  .tl-card.h .tl-it{padding:6px 14px 6px 4px}
  .tl-card.h .tl-empty{grid-area:items}
  .tl-card.h .tl-day{font-size:10.5px}
  .tl-card.h .tl-city{font-size:17px}
}

/* ---- 按天查看：每天独立一块，固定高度，不随条目数变长 ---- */
.dcard{
  height:112px;overflow:hidden;
  border-radius:20px;padding:14px 16px;margin-bottom:10px;
  box-shadow:var(--sh);align-items:flex-start;
}
.dc-left{flex:0 0 44px;padding-top:2px}
.dc-left b{font-size:24px;letter-spacing:-.6px}
.dc-left i{font-size:10.5px;margin-top:4px}
.dc-body{display:flex;flex-direction:column;height:100%;justify-content:flex-start}
.dc-sum{
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
  overflow:hidden;font-size:12.5px;line-height:1.5;margin-top:5px;color:var(--ink2);
}
.dc-meta{font-size:10.5px;color:var(--faint);margin-top:auto;padding-top:6px}
.dc-top b{font-size:15px}
.dc-go{font-size:16px;color:#CFC4BB}

/* 竖向卡在宽屏也用两栏条目，右侧不再留白 */
@media (min-width:620px){
  .tl-card.v .tl-items{display:grid;grid-template-columns:1fr 1fr;column-gap:10px;align-content:start}
  .tl-card.v .tl-it{padding:6px 14px 6px 4px}
  .tl-card.v .tl-more{grid-column:1/-1}
}

/* 按天查看：宽屏两列，卡片等宽等高，互不影响 */
.dcgrid{display:grid;grid-template-columns:1fr;gap:10px}
.dcgrid .dcard{margin-bottom:0}
@media (min-width:640px){ .dcgrid{grid-template-columns:1fr 1fr} }


/* ==========================================================================
   行程总览：横 / 竖 交替
   ========================================================================== */
.tl-grid{display:grid;grid-template-columns:1fr;gap:14px}
.tl-card{margin-bottom:0}

@media (min-width:660px){
  .tl-grid{grid-template-columns:1fr 1fr}
  .tl-card.wide{grid-column:1 / -1}
  /* 通栏那张条目排两栏，把宽度用掉 */
  .tl-card.wide .tl-items{display:grid;grid-template-columns:1fr 1fr;column-gap:14px;align-content:start}
  .tl-card.wide .tl-more{grid-column:1 / -1}
  .tl-card.wide .tl-city{font-size:20px}
}

/* 旧的左侧轨道不再需要 */
.tl-row,.tl-rail,.tl-dot{display:none!important}

/* 半宽卡：条目收一栏，字稍小 */
.tl-card:not(.wide) .tl-city{font-size:17px}
.tl-card:not(.wide) .tl-it{padding:6px 14px}

/* ==========================================================================
   按天查看：图2 模板，单列堆叠，每块独立定长
   ========================================================================== */
.dcgrid{display:grid;grid-template-columns:1fr;gap:10px}
.dcgrid .dcard{margin-bottom:0}
@media (min-width:640px){ .dcgrid{grid-template-columns:1fr} }   /* 保持单列，不再并排 */

/* 按天卡：给摘要两行留够高度 */
.dcard{height:118px}
.dc-sum{line-height:1.45;-webkit-line-clamp:2}
.dc-top{margin-bottom:1px}

/* 摘要真正显示两行（flex 子项里 line-clamp 会被压成一行，用 max-height 兜底） */
.dc-sum{display:block;max-height:2.9em;overflow:hidden;
  -webkit-line-clamp:unset;-webkit-box-orient:unset}


/* ==========================================================================
   行程总览：全部等宽两列（图2 那种）
   ========================================================================== */
.tl-grid{display:grid;grid-template-columns:1fr;gap:14px}
@media (min-width:660px){
  .tl-grid{grid-template-columns:1fr 1fr}
  .tl-card.wide{grid-column:auto}      /* 不再有通栏 */
  .tl-card.wide .tl-items{display:block}
}
.tl-card{display:flex;flex-direction:column;margin-bottom:0}
.tl-card .tl-foot{margin-top:auto}
.tl-head{padding:14px 16px 13px}
.tl-city{font-size:18px}
.tl-items{padding:8px 0 6px}
.tl-it{padding:7px 16px}
.tl-more{padding:2px 16px 6px}

/* ==========================================================================
   按天回看顶部的行程卡：白卡 + 圆弧 + 三等分统计
   ========================================================================== */
.triphead{
  background:#fff;border:none;border-radius:30px;box-shadow:var(--sh);
  padding:22px 22px 18px;margin-bottom:14px;color:var(--ink);
}
.th-top{display:flex;align-items:flex-start;gap:14px}
.th-main{flex:1;min-width:0}
.th-kind{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:650;
  padding:4px 10px;border-radius:999px;background:var(--group);color:var(--muted)}
.th-kind.k-active{background:var(--live-soft);color:var(--live)}
.th-kind.k-upcoming{background:var(--brand-soft);color:var(--brand)}
.th-title{font-size:27px;font-weight:700;letter-spacing:-.75px;line-height:1.18;margin-top:11px;
  overflow-wrap:anywhere}
.th-sub{font-size:13px;color:var(--muted);margin-top:7px;line-height:1.5}
.th-cities{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
.th-cities span{font-size:11.5px;padding:4px 11px;border-radius:999px;
  background:var(--group);color:var(--ink2)}

.th-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:0;
  margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}
.th-stats > div{display:flex;flex-direction:column;gap:3px;
  padding-left:16px;border-left:1px solid var(--line2)}
.th-stats > div:first-child{padding-left:0;border-left:none}
.th-stats b{font-size:21px;font-weight:700;letter-spacing:-.5px;color:var(--ink);
  font-variant-numeric:tabular-nums;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.th-stats span{font-size:10.5px;color:var(--muted)}

/* 日期与天数分开，换行时不会留下孤零零的「·」 */
.th-sub{display:flex;flex-wrap:wrap;gap:2px 12px}
.th-sub span{white-space:nowrap}


/* ==========================================================================
   删除按钮
   ========================================================================== */
/* 按天卡底部：条目数在左，删除在右 */
.dc-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;
  margin-top:auto;padding-top:8px}
.dc-foot .dc-meta{margin-top:0;padding-top:0}
.dc-del{flex:0 0 auto;font-size:11.5px;font-weight:600;color:#B4675C;
  padding:4px 10px;border-radius:999px;background:rgba(216,105,92,.08)}
.dc-del:active{background:rgba(216,105,92,.18)}

/* 条目行里的垃圾桶 */
.gl-del{
  flex:0 0 auto;width:34px;height:34px;margin-left:2px;
  display:flex;align-items:center;justify-content:center;
  border-radius:10px;color:#C0B5AC;background:transparent;
  transition:background .15s, color .15s;
}
.gl-del:active{background:rgba(216,105,92,.12);color:#B4675C}


/* ==========================================================================
   左滑删除（iOS 手势）
   ========================================================================== */
.sw{position:relative;overflow:hidden;border-radius:20px}
.sw-act{
  position:absolute;top:0;right:0;bottom:0;width:84px;
  display:flex;align-items:center;justify-content:center;
}
.sw-del{
  width:76px;height:calc(100% - 12px);border-radius:14px;
  background:#E0574A;color:#fff;font-size:14px;font-weight:650;
  display:flex;align-items:center;justify-content:center;
}
.sw-del:active{background:#C9483C}
.sw-body{
  position:relative;z-index:1;background:#fff;
  transition:transform .26s cubic-bezier(.22,1,.36,1);
  will-change:transform;touch-action:pan-y;
}

/* 天卡：卡片本身有一圈阴影，包在 sw 里不要裁掉 */
.sw .dcard{border-radius:20px;margin-bottom:0}
.dcgrid .sw{margin-bottom:10px}
.dcgrid .sw .dcard{box-shadow:var(--sh)}

/* 条目行：原来靠 .gl-row + .gl-row 画分隔线，现在中间隔了一层 .sw */
.gl > .sw + .sw .sw-body{border-top:1px solid var(--line2)}
.gl > .sw .gl-row{border-top:none!important}

/* 滑开后整行不响应点击跳转由 JS 处理；这里只去阴影 */
.sw .gl-row{background:#fff}
.sw.open .dcard,.sw.open .gl-row{box-shadow:none}


/* 历史行程的左滑：卡片自带的 14px 下边距会露在 .sw 里，把红色删除键露出来。
   所以让 .sw-trip 承担间距，卡片本身归零。 */
.sw-trip { margin-bottom: 14px; }
.sw-trip .sw-body > .gs-card:last-child { margin-bottom: 0; }
.sw-trip .sw-body { border-radius: 20px; }


/* 设置页：只有标题，去掉说明小字 */
.set-h{font-size:17px;font-weight:650;letter-spacing:-.3px;margin:0 0 12px}

/* 分享与同步：默认只露一行按钮，点开才展开 */
.qbody{margin-top:14px}
.qbody[hidden]{display:none}
.qcode{font-size:30px;font-weight:700;letter-spacing:.2em;text-align:center;padding:6px 0 2px}
.qurl{font-size:11.5px;color:var(--muted);word-break:break-all;text-align:center;margin:2px 0 14px}

/* 汇率行：向右滑，左边露出删除 */
/* 汇率行：sw-body 必须有不透明底色，否则后面的红色删除键会透出来 */
.sw[data-swr]{position:relative;border-radius:14px;overflow:hidden;margin:0 -4px}
.sw[data-swr] .sw-body{background:var(--card);padding:0 4px;border-radius:14px}
.sw[data-swr] .sw-act{left:0;right:auto}
.sw[data-swr] .sw-del{width:76px;height:calc(100% - 16px);margin:8px 0 8px 4px}

/* 地图列表右侧的「定位」：原来是塞进 22px 的 .ck 里，字被挤出来 */
.item.hasloc .bd{padding-right:84px}
.item .locwrap{position:absolute;right:12px;top:50%;transform:translateY(-50%)}
.locbtn{display:inline-flex;align-items:center;gap:4px;height:30px;padding:0 12px;border-radius:15px;
  border:0;background:var(--group);color:var(--ink2);font-size:12.5px;font-weight:600;white-space:nowrap}
.locbtn svg{width:13px;height:13px;flex:none}
.locbtn:active{background:var(--brand-soft)}

/* 分享页：「i」小圆钮，点开才显示说明 */
.qhead{display:flex;align-items:center}
.qinfo{width:19px;height:19px;margin-left:7px;border-radius:50%;border:1px solid var(--line);
  background:transparent;color:var(--muted);font-size:11px;font-weight:600;line-height:1;
  display:inline-flex;align-items:center;justify-content:center;padding:0}
.qinfo:active{background:var(--group)}
.qnote{margin-top:10px;font-size:12px;line-height:1.7;color:var(--muted)}
.qnote[hidden]{display:none}

/* Netlify 免费版会在页面底部注入一个「Powered by Netlify」的 iframe，
   正好压在胶囊菜单上。这里让它不显示（想保留的话删掉这行即可）。 */
#nl-badge-frame{display:none!important}

.locbtn.busy{background:#FBE3DA;color:#D3543C}
.locbtn.done{background:#E4EFE5;color:#3C7A4A}
.locbtn:active{transform:scale(.96)}
.locbtn{transition:transform .12s ease,background-color .18s ease}

/* ---------- 首页大看板 ---------- */
.board{position:relative;border-radius:26px;padding:20px 20px 18px;
  background:linear-gradient(158deg,#FFFDFB 0%,#FBF5EE 62%,#F7EFE6 100%);
  border:1px solid rgba(46,41,38,.06);
  box-shadow:0 22px 44px -34px rgba(70,45,25,.55)}
.board:active{transform:scale(.992)}
.board-badge{display:inline-block;font-size:11px;font-weight:600;letter-spacing:.02em;
  color:var(--muted);background:rgba(46,41,38,.05);border-radius:99px;padding:4px 11px}
.board-title{font-size:32px;font-weight:750;letter-spacing:-1px;line-height:1.1;margin-top:13px}
.board-meta{font-size:12.5px;color:var(--muted);margin-top:9px;font-variant-numeric:tabular-nums;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.board-cities{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px}
.board-cities span{font-size:11.5px;color:var(--ink2);background:rgba(46,41,38,.045);
  border-radius:9px;padding:4px 10px}
.board-stats{display:grid;grid-template-columns:1fr 1fr 1.5fr;margin-top:20px;padding-top:16px;
  border-top:1px solid rgba(46,41,38,.07)}
.board-stats b{display:block;font-size:20px;font-weight:700;letter-spacing:-.5px;
  font-variant-numeric:tabular-nums;line-height:1.15}
.board-stats i{font-style:normal;font-size:10.5px;color:var(--muted)}

/* ============================================================
   首页改版（参考：浅色旅行 App）
   全局色调也一并换成偏冷的浅色系
   ============================================================ */
:root{
  --page:#F4F6FA;
  --card:#FFFFFF;
  --group:#F1F4F8;
  --ink:#1B2028;
  --ink2:#4A5563;
  --muted:#8B95A3;
  --line:rgba(27,32,40,.07);
  --line2:rgba(27,32,40,.05);
  --brand:#3C7DF5;
  --brand-2:#5B93F7;
  --link:#2E66D8;
  --brand-soft:#E8F0FE;
}

.ph-top{display:flex;align-items:center;gap:11px;padding:4px 2px 16px}
.ph-ava{width:38px;height:38px;border-radius:50%;background:#E8F0FE;color:#3C7DF5;
  display:flex;align-items:center;justify-content:center}
.ph-brand b{display:block;font-size:15px;font-weight:650;letter-spacing:-.3px}
.ph-brand i{font-style:normal;font-size:11.5px;color:var(--muted)}

.ph-hero{position:relative;border-radius:24px;overflow:hidden;height:214px;
  box-shadow:0 18px 36px -24px rgba(30,60,110,.55)}
.ph-scene{position:absolute;inset:0;width:100%;height:100%}
.ph-scrim{position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(10,25,45,0) 40%,rgba(10,25,45,.66) 100%)}
.ph-hero-in{position:absolute;left:18px;right:18px;bottom:16px;color:#fff}
.ph-badge{display:inline-block;font-size:11px;font-weight:600;
  background:rgba(255,255,255,.22);border-radius:99px;padding:3px 11px;
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.ph-title{font-size:26px;font-weight:750;letter-spacing:-.7px;margin-top:9px;line-height:1.15}
.ph-sub{font-size:12px;opacity:.86;margin-top:6px;font-variant-numeric:tabular-nums}
.ph-pin{display:flex;align-items:center;gap:5px;font-size:11.5px;opacity:.92;margin-top:9px}

.ph-quick{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:18px 0 2px}
.ph-quick button{background:none;border:0;display:flex;flex-direction:column;align-items:center;gap:7px;padding:0}
.ph-quick button:active .qi{transform:scale(.94)}
.qi{width:52px;height:52px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  color:#fff;transition:transform .12s ease}
.q1{background:#5B93F7}.q2{background:#6FAE8E}.q3{background:#F0795E}.q4{background:#9AA6B6}
.ph-quick b{font-size:11.5px;font-weight:550;color:var(--ink2)}

.ph-card{display:flex;align-items:center;justify-content:space-between;gap:14px;
  background:var(--card);border-radius:22px;padding:18px;margin-top:14px;
  box-shadow:0 16px 34px -28px rgba(30,50,80,.55)}
.ph-eyebrow{font-size:11px;color:var(--muted);font-weight:600;letter-spacing:.02em}
.ph-nums{display:flex;gap:28px;margin-top:10px}
.ph-nums b{display:block;font-size:23px;font-weight:750;letter-spacing:-.6px;line-height:1.1}
.ph-nums i{font-style:normal;font-size:10.5px;color:var(--muted)}
.ph-money{margin-top:12px;font-size:17px;font-weight:700;letter-spacing:-.4px}
.ph-money i{font-style:normal;font-size:10.5px;color:var(--muted);font-weight:500;margin-left:5px}
.ph-ring{position:relative;width:64px;height:64px;flex:none}
.ph-ring svg{width:64px;height:64px;display:block}
.ph-ring b{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  font-size:13px;font-weight:700;color:#3C7DF5}

.ph-sec{display:flex;align-items:baseline;justify-content:space-between;margin:24px 2px 10px}
.ph-sec h2{font-size:14px;font-weight:650;letter-spacing:-.2px}
.ph-sec span{font-size:11.5px;color:var(--muted)}
.ph-list{background:var(--card);border-radius:20px;overflow:hidden;
  box-shadow:0 16px 34px -32px rgba(30,50,80,.5)}
.ph-list button{width:100%;display:flex;align-items:center;gap:12px;padding:15px 16px;border:0;
  background:none;border-bottom:1px solid var(--line2);font-size:14.5px;color:var(--ink)}
.ph-list button:last-child{border-bottom:0}
.ph-list button:active{background:var(--group)}
.pi{width:34px;height:34px;border-radius:11px;background:var(--group);display:flex;
  align-items:center;justify-content:center;color:var(--ink2)}
.ph-list b{flex:1;text-align:left;font-weight:550}
.ph-list i{font-style:normal;color:#C3CAD4;font-size:15px}

.ph-empty{text-align:center;padding:56px 24px}
.ph-empty-t{font-size:20px;font-weight:700}
.ph-empty-s{font-size:13.5px;color:var(--muted);margin-top:10px;line-height:1.6}
.ph-empty .btn{margin-top:22px}

/* ---------- 底部菜单：整条白底，图标均分（不再用悬浮胶囊） ---------- */
.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:60;
  display:grid;grid-template-columns:repeat(4,1fr);padding:0;
  background:rgba(255,255,255,.94);
  -webkit-backdrop-filter:saturate(180%) blur(18px);backdrop-filter:saturate(180%) blur(18px);
  border-top:1px solid rgba(27,32,40,.06);
  box-shadow:0 -6px 24px -20px rgba(20,40,80,.5)}
.tabbar .tb-pill{display:flex;align-items:center;justify-content:space-between;
  width:100%;max-width:none;margin:0;padding:9px 22px calc(9px + env(safe-area-inset-bottom));
  background:none;border:0;box-shadow:none;border-radius:0}
.tabbar .tb-sep{display:none}
.tabbar a{flex:1 1 0;display:flex;align-items:center;justify-content:center;
  height:44px;color:#9AA4B2;text-decoration:none}
.tabbar a svg{width:25px;height:25px}
.tabbar a.on{color:#3C7DF5}
.tabbar .tb-plus{flex:1 1 0;display:flex;align-items:center;justify-content:center;
  height:44px;border:0;background:none;color:#3C7DF5}
.tabbar .tb-plus svg{width:25px;height:25px}

.ph-sec.first{margin-top:2px}
.ph-sec span{cursor:pointer}
.ph-stat{display:flex;align-items:center;justify-content:space-between;gap:16px;
  background:var(--card);border-radius:22px;padding:18px 18px 16px;margin-top:12px;
  box-shadow:0 16px 34px -28px rgba(30,50,80,.55)}
.ph-stat-l{flex:1;min-width:0}
.ph-steps{display:flex;align-items:center;gap:0;margin-bottom:14px}
.ph-steps i{flex:1;height:4px;border-radius:2px;background:#E6EDF8;position:relative}
.ph-steps i.on{background:#3C7DF5}
.ph-steps i + i{margin-left:6px}
.ph-srow{display:flex;align-items:baseline;justify-content:space-between;padding:5px 0}
.ph-srow span{font-size:12px;color:var(--muted)}
.ph-srow b{font-size:14.5px;font-weight:650;letter-spacing:-.2px;font-variant-numeric:tabular-nums}
.ph-ring2{position:relative;width:76px;height:76px;flex:none}
.ph-ring2 svg{width:76px;height:76px;display:block}
.ph-ring2-t{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.ph-ring2-t b{font-size:15px;font-weight:750;color:#3C7DF5;letter-spacing:-.4px}
.ph-ring2-t i{font-style:normal;font-size:8.5px;color:var(--muted);margin-top:1px}

.ph-hist{display:flex;gap:12px;overflow-x:auto;padding:2px 2px 6px;margin:0 -2px;
  scrollbar-width:none}
.ph-hist::-webkit-scrollbar{display:none}
.hc{flex:0 0 132px;padding:0;border:0;background:none;text-align:left}
.hc-img{display:block;height:132px;border-radius:20px;box-shadow:0 12px 24px -18px rgba(30,50,80,.6)}
.g1{background:linear-gradient(160deg,#8FC0E8,#5C93C4 60%,#3F6E9B)}
.g2{background:linear-gradient(160deg,#F3C7A8,#DE9367 60%,#B96A3F)}
.g3{background:linear-gradient(160deg,#BFD9B8,#89B58A 60%,#5E8F63)}
.g4{background:linear-gradient(160deg,#CFC6E8,#9C8FC4 60%,#6E5FA0)}
.hc-panel{display:block;margin:-26px 6px 0;background:#fff;border-radius:16px;padding:10px 11px 11px;
  box-shadow:0 10px 22px -18px rgba(30,50,80,.55)}
.hc-dot{display:block;width:8px;height:8px;border-radius:50%;margin-bottom:7px}
.hc-dot.g1{background:#3C7DF5}.hc-dot.g2{background:#F0795E}
.hc-dot.g3{background:#6FAE8E}.hc-dot.g4{background:#8E7FD0}
.hc-t{display:block;font-size:12.5px;font-weight:650;letter-spacing:-.2px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hc-d{display:block;font-size:10.5px;color:var(--muted);margin-top:3px}
.ph-none{font-size:12.5px;color:var(--muted);padding:8px 2px}

.ph-money-card{width:100%;display:flex;align-items:center;justify-content:space-between;
  background:var(--card);border:0;border-radius:20px;padding:16px 18px;
  box-shadow:0 16px 34px -32px rgba(30,50,80,.5)}
.ph-money-card i{font-style:normal;font-size:11.5px;color:var(--muted);display:block}
.ph-money-card b{display:block;font-size:22px;font-weight:750;letter-spacing:-.5px;margin-top:5px;
  font-variant-numeric:tabular-nums}
.ph-money-add{width:36px;height:36px;border-radius:50%;background:#3C7DF5;color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:20px;font-weight:300}

.ph-map{position:relative;height:150px;border-radius:22px;overflow:hidden;
  box-shadow:0 16px 34px -30px rgba(30,50,80,.5)}
.ph-map svg{width:100%;height:100%;display:block}
.ph-map-plus{position:absolute;right:14px;bottom:14px;width:44px;height:44px;border-radius:50%;
  background:#3C7DF5;color:#fff;display:flex;align-items:center;justify-content:center;
  font-size:24px;font-weight:300;box-shadow:0 10px 20px -10px rgba(60,125,245,.9)}

/* ---------- 大图卡：文字分布（上：徽标/标题/日期，下：地点） ---------- */
.ph-hero{height:236px}
.ph-hero-in{position:absolute;inset:0;left:20px;right:20px;top:18px;bottom:16px;
  display:flex;flex-direction:column;color:#fff}
.ph-hero-top{display:block}
.ph-badge{font-size:11px;padding:4px 12px}
.ph-title{font-size:30px;letter-spacing:-.9px;margin-top:14px;line-height:1.12}
.ph-sub{font-size:12.5px;opacity:.9;margin-top:11px;letter-spacing:.01em}
.ph-pin{margin-top:auto;display:inline-flex;align-items:center;gap:6px;font-size:12px;
  background:rgba(255,255,255,.18);border-radius:99px;padding:6px 12px;width:fit-content;
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}

/* ---------- 数据卡：行李箱 + 圆点步进 + 环 ---------- */
.ph-stat{gap:12px;padding:16px 16px 14px}
.ph-bag{width:46px;flex:none;margin-top:2px}
.ph-bag svg{width:46px;height:46px;display:block}
.ph-dots{display:flex;align-items:center;margin-bottom:12px}
.ph-dots i{width:9px;height:9px;border-radius:50%;background:#E2E9F4;flex:none}
.ph-dots i.on{background:#3C7DF5}
.ph-dots span{flex:1;height:2px;background:#E2E9F4;margin:0 3px;border-radius:1px}
.ph-dots i.on + span{background:#BBD2F5}
.ph-srow{padding:4px 0}
.ph-srow span{font-size:11.5px}
.ph-srow b{font-size:14px}
.ph-ring2{width:62px;height:62px}
.ph-ring2 svg{width:62px;height:62px}
.ph-ring2-t b{font-size:14px}
.ph-ring2-t i{font-size:8px}

/* ---------- 历史行程 / 记账：两列图片卡 ---------- */
.ph-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.hc{position:relative;padding:0;border:0;background:none;text-align:left}
.hc-img{display:block;height:158px;border-radius:20px;box-shadow:0 14px 26px -20px rgba(30,50,80,.65)}
.hc-panel{display:block;position:relative;margin:-46px 8px 0;background:#fff;border-radius:16px;
  padding:11px 12px 12px;box-shadow:0 12px 24px -20px rgba(30,50,80,.6)}
.hc-dot{display:block;width:9px;height:9px;border-radius:50%;margin-bottom:8px}
.hc-t{display:block;font-size:12.5px;font-weight:650;letter-spacing:-.2px;line-height:1.3;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hc-d{display:block;font-size:10.5px;color:var(--muted);margin-top:4px;line-height:1.3;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hc:active{transform:scale(.985)}
.hc-wide{width:100%}
.g5{background:linear-gradient(160deg,#BFD6F5,#7FA6DE 60%,#4E7CBE)}
.g6{background:linear-gradient(160deg,#F6D3BC,#E79B77 60%,#C4714E)}
.hc-dot.g5{background:#3C7DF5}.hc-dot.g6{background:#F0795E}

.hc-img{position:relative;overflow:hidden}
.hc-img svg{position:absolute;inset:0;width:100%;height:100%}

/* ---------- 主图用真实照片 ---------- */
.ph-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.ph-scene{display:none}
.ph-card{display:none}
.ph-scrim{background:linear-gradient(180deg,rgba(6,18,34,.42) 0%,rgba(6,18,34,.06) 30%,rgba(6,18,34,0) 46%,rgba(6,18,34,.58) 100%)}

/* ---------- 历史行程 / 记账：一行两张 ---------- */
.ph-grid2{grid-template-columns:1fr 1fr;gap:12px}
.tile2{position:relative;padding:0;border:0;background:none;text-align:left}
.tile2-img{display:block;height:186px;border-radius:22px;background-size:cover;background-position:center;
  box-shadow:0 16px 30px -22px rgba(20,40,80,.7)}
.tile2-panel{display:block;position:relative;margin:-58px 9px 0;background:#fff;border-radius:17px;
  padding:12px 13px 13px;box-shadow:0 14px 26px -22px rgba(20,40,80,.6)}
.tile2-dot{display:block;width:9px;height:9px;border-radius:50%;margin-bottom:9px}
.tile2-panel b{display:block;font-size:15px;font-weight:700;letter-spacing:-.3px;line-height:1.25}
.tile2-panel span{display:block;font-size:11px;color:var(--muted);margin-top:5px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tile2:active{transform:scale(.982)}

/* ---------- 行李箱放大（参考图里约占卡片高度的六成） ---------- */
.ph-bag{width:78px;margin:-4px 0 -4px -2px}
.ph-bag svg{width:78px;height:78px}
.ph-stat{padding:18px 18px 16px;gap:14px}

/* ＋ 去掉胶囊底，跟其它图标一样纯线条 */
.tabbar .tb-plus,.tabbar .tb-plus:active{background:none!important;box-shadow:none!important;
  border-radius:0!important;color:#3C7DF5}
.tabbar .tb-plus svg{width:27px;height:27px}
/* 底部留白，别让地图卡被菜单压住 */
#view{padding-bottom:96px!important}

/* ---------- 版块间距：参考图的呼吸感（26px 段距 / 12px 卡距） ---------- */
.ph-sec{margin:26px 2px 12px!important}
.ph-sec.first{margin-top:0!important}
.ph-hero{height:236px;border-radius:26px!important}
.ph-stat{margin-top:0!important;border-radius:24px!important}
.ph-grid2{gap:14px!important}
.tile2-img{height:190px;border-radius:24px}
.tile2-panel{border-radius:18px}
.ph-map{height:156px;border-radius:24px!important;margin-top:0}

/* ---------- 底栏占比加大（参考图里那一条更厚） ---------- */
.tabbar{padding:0}
.tabbar a,.tabbar .tb-plus{height:54px}
.tabbar a svg,.tabbar .tb-plus svg{width:26px;height:26px}
.tabbar .tb-pill{padding:12px 20px calc(12px + env(safe-area-inset-bottom))!important}

.tabbar{padding:12px 20px calc(12px + env(safe-area-inset-bottom))!important;box-sizing:border-box}
.tabbar a,.tabbar .tb-plus{height:52px}
.ph-scrim{background:linear-gradient(180deg,rgba(6,30,50,.30) 0%,rgba(6,30,50,0) 32%,rgba(6,30,50,0) 52%,rgba(6,30,50,.42) 100%)!important}

.ph-scrim{background:linear-gradient(180deg,rgba(6,30,50,.22) 0%,rgba(6,30,50,0) 26%,rgba(6,30,50,0) 58%,rgba(6,30,50,.30) 100%)!important}

/* 首页不显示标题栏，内容顶到安全区（去掉 68px 空档） */
body.hdr-bare .hdr{display:none!important}
body.hdr-bare .wrap{padding-top:calc(var(--safe-t) + 18px)}

/* 图上文字对比度：顶部压深一点 + 文字带投影 */
.ph-scrim{background:linear-gradient(180deg,rgba(6,26,46,.38) 0%,rgba(6,26,46,.06) 34%,rgba(6,26,46,0) 56%,rgba(6,26,46,.34) 100%)!important}
.ph-title{text-shadow:0 2px 12px rgba(6,26,46,.42)}
.ph-sub{text-shadow:0 1px 8px rgba(6,26,46,.45)}

/* ---------- 进度环：数字必须圈得住 ---------- */
.ph-ring2{width:74px!important;height:74px!important}
.ph-ring2 svg{width:74px!important;height:74px!important}
.ph-ring2-t b{font-size:14.5px!important;line-height:1;letter-spacing:-.5px}
.ph-ring2-t i{font-size:8.5px!important;line-height:1;margin-top:3px}
.ph-bag{width:68px!important;margin:-2px 0 -2px -4px!important}
.ph-bag svg{width:68px!important;height:68px!important}

/* ---------- 记账页：每个栏目一张白卡 + 字号层级 ---------- */
.sec-card{background:#fff;border-radius:22px;padding:18px 18px 16px;margin-top:14px;
  box-shadow:0 16px 34px -30px rgba(30,50,80,.5)}
.sec-h{display:flex;align-items:baseline;justify-content:space-between;
  font-size:16px;font-weight:700;letter-spacing:-.3px;margin-bottom:14px;color:var(--ink)}
.sec-h-s{font-size:11.5px;font-weight:500;color:var(--muted);letter-spacing:0}

/* 环形图 */
.donut{position:relative;width:172px;margin:2px auto 18px}
.donut svg{width:172px;height:172px;display:block}
.donut-c{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.donut-c i{font-style:normal;font-size:11px;color:var(--muted);letter-spacing:.2px}
.donut-c b{font-size:19px;font-weight:750;letter-spacing:-.6px;margin-top:5px;font-variant-numeric:tabular-nums}

/* 分类明细行 */
.catlist{display:block}
.cl-row{display:flex;align-items:center;gap:9px;padding:9px 0;border-top:1px solid var(--line)}
.cl-row:first-child{border-top:0}
.cl-dot{width:9px;height:9px;border-radius:50%;flex:none}
.cl-n{flex:1;font-size:14px;font-weight:550;letter-spacing:-.2px;min-width:0;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cl-pct{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums;width:46px;text-align:right}
.cl-v{font-size:14px;font-weight:650;font-variant-numeric:tabular-nums;width:92px;text-align:right;letter-spacing:-.3px}
.cl-c{font-size:11px;color:var(--muted);width:34px;text-align:right}

/* 结算 / 每日支出 行 */
.sec-card .catrow{padding:8px 0}
.sec-card .cr-n{font-size:13.5px}
.sec-card .cr-v{font-size:13.5px;font-weight:650}
.sec-card .setl{font-size:13px;padding:10px 0}
.sec-card .setl.h{font-size:11px;color:var(--muted);font-weight:500}
.bill-settle{display:flex;align-items:center;justify-content:space-between;
  padding:12px 14px;border-top:0;font-size:14.5px;font-weight:600;
  background:var(--brand-soft);border-radius:12px;color:var(--brand);margin-top:9px}
.bill-settle b{font-size:14.5px;font-weight:700;font-variant-numeric:tabular-nums}
.bill-kv{display:flex;justify-content:space-between;align-items:baseline;padding:9px 0;font-size:13.5px}
.bill-kv b{font-size:15px;font-weight:700;font-variant-numeric:tabular-nums}
.bill-warn{font-size:12px;line-height:1.5;color:#9A6A2E;background:#FDF3E4;border-radius:12px;
  padding:10px 12px;margin:10px 0}
.sec-card .hint{font-size:11.5px;line-height:1.5;color:var(--muted)}

/* 主图顶部再压一点，白字才看得清 */
.ph-scrim{background:linear-gradient(180deg,rgba(6,26,46,.55) 0%,rgba(6,26,46,.18) 30%,rgba(6,26,46,0) 52%,rgba(6,26,46,.42) 100%)!important}

.ph-sub{color:#fff!important;opacity:1!important;font-weight:500;
  text-shadow:0 1px 2px rgba(0,0,0,.55),0 2px 14px rgba(6,26,46,.55)}
.ph-title{text-shadow:0 1px 3px rgba(0,0,0,.45),0 6px 22px rgba(6,26,46,.5)!important}
.ph-badge{background:rgba(255,255,255,.22);text-shadow:0 1px 2px rgba(0,0,0,.35)}

.donut2{width:100%;height:auto;display:block;margin:2px 0 14px}
.donut2 text{font-family:inherit}

/* 环形图 + 右侧图例 */
.dnut{display:flex;align-items:center;gap:14px}
.dnut svg{width:142px;height:142px;flex:none;display:block}
.dleg{flex:1;min-width:0}
.dl-row{display:flex;align-items:center;gap:7px;padding:5px 0}
.dl-dot{width:9px;height:9px;border-radius:50%;flex:none}
.dl-txt{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.25}
.dl-txt b{font-size:12.5px;font-weight:600;letter-spacing:-.2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dl-txt i{font-style:normal;font-size:10px;color:var(--muted);margin-top:2px;font-variant-numeric:tabular-nums;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dl-pct{font-size:11.5px;font-weight:600;color:var(--muted);font-variant-numeric:tabular-nums;flex:none}

/* 环形图（带引线）+ 分类明细行（图2 那种） */
.donut3{width:100%;height:auto;display:block;margin:0 0 6px}
.donut3 text{font-family:inherit}
.crow-list{border-top:1px solid var(--line);margin-top:6px}
.crow{display:flex;align-items:center;gap:11px;padding:13px 0;border-bottom:1px solid var(--line)}
.crow:last-child{border-bottom:0;padding-bottom:4px}
.crow-ic{width:42px;height:42px;border-radius:50%;flex:none;display:flex;align-items:center;
  justify-content:center;font-size:19px;line-height:1}
.crow-mid{flex:1;min-width:0}
.crow-top{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.crow-top b{font-size:14.5px;font-weight:650;letter-spacing:-.2px;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.crow-top span{font-size:11.5px;color:var(--muted);font-variant-numeric:tabular-nums;flex:none}
.crow-bar{height:5px;border-radius:3px;background:#EEF2F8;margin-top:7px;overflow:hidden}
.crow-bar i{display:block;height:100%;border-radius:3px}
.crow-r{text-align:right;flex:none}
.crow-r b{display:block;font-size:14.5px;font-weight:700;letter-spacing:-.3px;font-variant-numeric:tabular-nums}
.crow-r span{display:block;font-size:10.5px;color:var(--muted);margin-top:3px}

/* 环形图收紧：不铺满整宽，四周不留大片空白 */
.donut3{max-width:360px;margin:0 auto 2px}
.crow-list{margin-top:2px}
#panel .hint, .map-hint{font-size:12px;line-height:1.5}
#listhead{font-size:12px;color:var(--muted)}

/* ---- 具体安排：行内左滑删除 + 更小的待办勾选 ---- */
.prow{display:block;position:relative;overflow:hidden;border-bottom:1px solid var(--line2);padding:0}
.prow:last-child{border-bottom:0}
.prow-in{display:grid;grid-template-columns:22px 1fr auto;grid-template-areas:"n t b";
  align-items:center;gap:8px;padding:6px 0;background:var(--card)}
.prow .sw-act{border-radius:0}
.ptodo input{width:13px!important;height:13px!important}
.pn{width:18px!important;height:18px!important;font-size:10px!important}

/* ---- 表单小标题更醒目（全站统一） ---- */
.f label{font-size:14.5px!important;font-weight:700!important;color:var(--ink)!important;
  letter-spacing:-.2px;margin-bottom:8px!important}

.sw-note{margin-bottom:14px}
.sw-note .sw-body{border-radius:18px}
.sw-note .sw-act{border-radius:0 18px 18px 0}

/* ---------- 首页节奏：板块留白 + 图片卡「图大文小」 ---------- */
.ph-stat{margin-top:20px!important}
.ph-grid2{gap:16px!important;margin-top:26px}
.ph-sec{margin:28px 2px 12px!important}

/* 图片占主体，白色信息条只占下缘一小截 */
.tile2-img{height:206px!important;border-radius:22px!important}
.tile2-panel{margin:-42px 9px 0!important;padding:9px 11px 10px!important;border-radius:15px!important}
.tile2-dot{width:8px!important;height:8px!important;margin-bottom:6px!important}
.tile2-panel b{font-size:13px!important;font-weight:650!important;letter-spacing:-.2px!important}
.tile2-panel span{font-size:10px!important;margin-top:3px!important}
.tile2-img + .tile2-panel{box-shadow:0 10px 22px -18px rgba(20,40,80,.55)}

/* 两卡整体等比缩小（图:文比例不变） */
.tile2-img{height:182px!important;border-radius:20px!important}
.tile2-panel{margin:-37px 8px 0!important;padding:8px 10px 9px!important;border-radius:14px!important}
.tile2-dot{width:7px!important;height:7px!important;margin-bottom:5px!important}
.tile2-panel b{font-size:12px!important}
.tile2-panel span{font-size:9.5px!important;margin-top:2px!important}
.tile2-panel{min-height:58px}

/* 待办勾选再小一档 */
.ptodo input{width:11px!important;height:11px!important}
.ptodo{font-size:10px!important;gap:2px!important}
.pn{width:17px!important;height:17px!important;font-size:9.5px!important}

/* 行程大看板：更矮、更静 */
.triphead{padding:17px 18px 14px!important;border-radius:20px!important}
.th-kind{height:20px!important;padding:0 9px!important;font-size:10.5px!important;margin-bottom:8px!important;
  font-weight:550!important}
.th-title{font-size:21px!important;letter-spacing:-.5px!important}
.th-sub{font-size:12px!important;margin-top:6px!important}
.th-cities{margin-top:10px!important;gap:5px!important}
.th-cities span{font-size:11px!important;padding:3px 9px!important}
.th-stats{margin-top:13px!important;padding-top:11px!important;gap:18px!important}
.th-stats b{font-size:15.5px!important;letter-spacing:-.2px!important}
.th-stats span{font-size:10.5px!important}
.gs-ring{transform:scale(.88)}

/* 历史行程卡（gs-card）：更紧凑 */
.gs-card{padding:16px 18px 12px!important;border-radius:20px!important}
.gs-title{font-size:20px!important;letter-spacing:-.5px!important}
.gs-dates{font-size:11.5px!important;margin-top:5px!important}
.gs-badge{font-size:10.5px!important;padding:3px 9px!important}
.gs-cities{margin-top:9px!important}
.gs-cities span{font-size:11px!important;padding:3px 9px!important}
.gs-stats{margin-top:12px!important;padding-top:10px!important}
.gs-stats b{font-size:15.5px!important}
.gs-stats span{font-size:10.5px!important}
.gs-ring{transform:scale(.86)}

/* ---------- 关西行程详情页的看板：矮一点、静一点 ---------- */
.triphero{padding:16px 18px 13px!important;border-radius:22px!important}
.trh-top{margin-bottom:8px!important}
.trh-top .th-kind{height:20px!important;padding:0 9px!important;font-size:10.5px!important;
  font-weight:550!important;background:var(--group)!important;color:var(--muted)!important}
.trh-top .th-kind.k-active{background:var(--live-soft)!important;color:#1a8f3c!important}
.trh-edit{font-size:11px!important;font-weight:550!important;color:var(--ink2)!important;
  background:var(--group)!important;border-radius:99px!important;padding:4px 10px!important;
  display:inline-flex;align-items:center;gap:3px}
.trh-edit svg{width:11px;height:11px;opacity:.65}
.trh-title{font-size:21px!important;font-weight:650!important;letter-spacing:-.45px!important;
  line-height:1.2!important;font-family:inherit!important}
.trh-sub{font-size:11.5px!important;margin-top:5px!important;letter-spacing:0!important}
.trh-cities{margin-top:9px!important;gap:5px!important}
.trh-cities span{font-size:10.5px!important;padding:3px 9px!important}
.trh-stats{margin-top:12px!important;padding-top:10px!important}
.trh-stats b{font-size:15px!important;font-weight:650!important;letter-spacing:-.2px!important}
.trh-stats span{font-size:10px!important}

/* ---------- 删除按钮：没真正滑开之前绝对不显示 ---------- */
.sw .sw-act{visibility:hidden}
.sw.open .sw-act{visibility:visible}
.prow .ptodo input[type="checkbox"]{width:11px!important;height:11px!important;transform:scale(.9)}

.sw.dragging .sw-act{visibility:visible}

/* ---------- 具体安排：大号序号 + 圆形待办按钮 ---------- */
.prow-in{grid-template-columns:28px 1fr auto!important;gap:10px!important}
.pn{width:26px!important;height:26px!important;font-size:12px!important;font-weight:700!important}
.ptodo{width:26px!important;height:26px!important;border-radius:50%!important;
  border:1.5px solid var(--sep)!important;background:transparent!important;padding:0!important;margin:0!important;
  display:inline-flex!important;align-items:center;justify-content:center;flex:none;color:transparent!important;
  transition:background .18s,border-color .18s,color .18s}
.ptodo svg{width:14px;height:14px;display:block}
.ptodo.on{background:#3C7DF5!important;border-color:#3C7DF5!important;color:#fff!important}
.ptodo:active{transform:scale(.92)}

/* 标题旁的 i，说明默认收起 */
.f label.lab-i{display:flex!important;align-items:center;gap:7px}
.info-i{width:17px;height:17px;border-radius:50%;border:1px solid var(--sep);
  display:inline-flex;align-items:center;justify-content:center;font-size:10px;font-style:normal;
  font-weight:650;color:var(--muted);cursor:pointer;flex:none}
.info-i:active{background:var(--group)}
.plan-hint{margin:4px 0 9px!important;font-size:11.5px!important;line-height:1.5}

/* ---------- 编辑条目：标题 / 内容的层级 ---------- */
.sec-t{font-size:16.5px!important;font-weight:700!important;letter-spacing:-.3px!important;color:var(--ink)!important}
.card .sec-t strong,.sec-t b{font-weight:700}
.f label{font-size:12.5px!important;font-weight:600!important;color:var(--ink2)!important;
  letter-spacing:0!important;margin-bottom:6px!important}
.f label.lab-i{font-size:16.5px!important;font-weight:700!important;color:var(--ink)!important;margin-bottom:8px!important}
.f input,.f textarea,.f select{font-size:15px!important}
#cost-phase{font-size:10.5px;padding:2px 8px;margin-left:8px;vertical-align:2px}

/* ---------- 我的页：字号跟其他页面对齐 ---------- */
.sec-t{font-size:12.5px!important;font-weight:650!important;color:var(--muted)!important;letter-spacing:.04em!important}
.card .sec-t{font-size:16.5px!important;font-weight:700!important;color:var(--ink)!important;letter-spacing:-.3px!important}
.rowcard .rc-m b{font-size:15.5px!important;font-weight:600!important}
.rowcard .rc-m i{font-size:12px!important}
.rowcard .rc-g{font-size:17px!important}
