/* 游客一码通 · 水彩江南：白墙 / 黑瓦 / 淡彩晕染，素雅为要 */
/* 设计令牌不在本文件：统一引用 tokens.css（单一真源），本文件只放组件样式 */

* { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }

/* 键盘焦点可见（R-VIS-008）：键盘导航给 3px 焦点圈；鼠标/触摸点按不出圈 */
:focus-visible { outline: 3px solid #6593B5; outline-offset: 2px; }
:focus:not(:focus-visible) { outline: none; }

/* 线性 SVG 图标通用：随字号缩放，与文字基线对齐 */
.ico { display: inline-block; width: 1.05em; height: 1.05em; vertical-align: -.16em; }
.ico svg { width: 100%; height: 100%; display: block; }

/* 精致细节：黛青选择色 / 细滚动条 / 数字等宽 */
::selection { background: rgba(61,107,111,.22); }
.pool-list::-webkit-scrollbar, .modal-body::-webkit-scrollbar,
.modal-banner::-webkit-scrollbar, .days::-webkit-scrollbar { width: 6px; height: 6px; }
.pool-list::-webkit-scrollbar-thumb, .modal-body::-webkit-scrollbar-thumb,
.modal-banner::-webkit-scrollbar-thumb, .days::-webkit-scrollbar-thumb {
  background: rgba(127,163,168,.45); border-radius: 4px;
}
.pool-list::-webkit-scrollbar-track, .modal-body::-webkit-scrollbar-track { background: transparent; }
.time-chip, .iti-summary, .day-total, .item-meta, .config-summary {
  font-variant-numeric: tabular-nums;
}
body {
  font-family: -apple-system, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
  color: var(--ink);
  line-height: 1.6;
  background-color: var(--paper);
  /* 水彩晕染：远山青 + 水色 + 淡金，极淡地洇在宣纸上 */
  background-image:
    radial-gradient(ellipse 480px 300px at 12% 8%, rgba(127,163,168,.16), transparent 70%),
    radial-gradient(ellipse 520px 340px at 88% 4%, rgba(169,195,203,.18), transparent 70%),
    radial-gradient(ellipse 420px 300px at 85% 78%, rgba(201,180,137,.10), transparent 70%),
    radial-gradient(ellipse 460px 320px at 8% 90%, rgba(127,163,168,.12), transparent 70%);
  background-attachment: fixed;
}
.wrap { max-width: 1280px; margin: 0 auto; padding: 0 20px; }

/* ---------- 头部：白墙为底，墨色题字 ---------- */
.site-header {
  position: relative;
  border-bottom: none;
  background:
    /* 远山·最淡一层 */
    radial-gradient(ellipse 420px 60px at 12% 100%, rgba(169,195,203,.35), transparent 72%),
    radial-gradient(ellipse 560px 75px at 55% 100%, rgba(169,195,203,.30), transparent 72%),
    radial-gradient(ellipse 480px 65px at 92% 100%, rgba(169,195,203,.33), transparent 72%),
    /* 近山·黛色一层 */
    radial-gradient(ellipse 300px 42px at 28% 102%, rgba(127,163,168,.45), transparent 70%),
    radial-gradient(ellipse 380px 48px at 68% 103%, rgba(127,163,168,.40), transparent 70%),
    radial-gradient(ellipse 260px 38px at 5% 104%, rgba(127,163,168,.38), transparent 70%),
    /* 山脚水色倒影 */
    linear-gradient(to bottom, transparent 82%, rgba(169,195,203,.22) 96%, rgba(169,195,203,.30)),
    /* 宣纸底 */
    linear-gradient(to bottom, #faf8f2 0%, var(--paper) 75%, #eef0ea 100%);
}
.site-header::after {
  /* 水墨笔触分割线 */
  content: ""; display: block; height: 2px;
  background: linear-gradient(90deg, transparent, var(--ink) 18%, var(--ink) 55%, rgba(47,53,56,.35) 80%, transparent);
  opacity: .4;
}
.header-inner {
  display: flex; align-items: center; justify-content: space-between;
  padding: 26px 20px 34px;
}
.brand { display: flex; align-items: center; gap: 14px; }
.site-header h1 {
  font-family: "Kaiti SC", "STKaiti", "KaiTi", "BiauKai", serif;
  font-size: 30px; letter-spacing: 6px; color: var(--ink); font-weight: 700;
}
.tagline {
  font-family: "Kaiti SC", "STKaiti", "KaiTi", serif;
  font-size: 14px; color: var(--ink-soft); margin-top: 4px; letter-spacing: 2px;
}
.header-nav a {
  color: var(--ink-soft); text-decoration: none; margin-left: 24px; font-size: 14px;
  padding-bottom: 2px; border-bottom: 2px solid transparent;
}
.header-nav a:hover { color: var(--ink); border-bottom-color: var(--accent); }

/* ---------- 配置栏 ---------- */
.config-bar {
  display: flex; flex-wrap: wrap; gap: 14px 28px;
  padding: 16px 20px; margin-top: 18px;
  background: rgba(255,255,255,.85);
  border: 1px solid var(--line);
  border-radius: var(--radius); box-shadow: var(--shadow-2);
}
.config-group { display: flex; align-items: center; gap: 10px; }
.config-label { font-size: 14px; font-weight: 600; color: var(--ink); white-space: nowrap; }
.config-label em { font-style: normal; font-weight: 400; font-size: 12px; color: var(--ink-soft); }
.seg { display: flex; flex-wrap: wrap; gap: 6px; }
.seg button {
  border: 1px solid var(--line); background: #fff;
  padding: 6px 12px; border-radius: 999px; font-size: 13px;
  cursor: pointer; color: var(--ink); transition: all .15s;
  font-variant-numeric: tabular-nums;
}
.seg button:hover { border-color: var(--wash-qing); background: rgba(127,163,168,.08); }
.seg button.on { background: var(--ink); color: #fff; border-color: var(--ink); }
.seg.multi button.on { background: var(--accent); border-color: var(--accent); }

/* ---------- 主区域（桌面：左待选 右行程；手机：上行程 下待选） ---------- */
.planner {
  display: grid; grid-template-columns: 380px 1fr; gap: 18px;
  margin-top: 18px; align-items: start;
}

/* 待选池 */
.pool {
  background: rgba(255,255,255,.92); border: 1px solid var(--line);
  border-radius: var(--radius); box-shadow: var(--shadow-2);
  position: sticky; top: 12px;
  display: flex; flex-direction: column; max-height: calc(100vh - 24px);
}
.pool-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 14px 16px 8px;
}
.pool-head h2, .itinerary h2, .panel h2 {
  font-size: 18px; color: var(--ink); letter-spacing: 1px;
  display: flex; align-items: center; gap: 7px;
}
/* 面板标题左侧墨线装饰（题字旁的一笔） */
.panel h2::before {
  content: ""; width: 4px; height: 17px; border-radius: 4px; flex: none;
  background: linear-gradient(to bottom, var(--ink), var(--wash-qing));
}
.h2-ico { width: 19px; height: 19px; vertical-align: -3px; color: var(--accent); }
.h-ico { width: 16px; height: 16px; vertical-align: -2.5px; color: var(--accent); }
#area-filter {
  border: 1px solid var(--line); border-radius: 8px; padding: 5px 8px;
  font-size: 13px; background: #fff; color: var(--ink);
}
.pool-tabs { display: flex; gap: 6px; padding: 0 16px 10px; border-bottom: 1px solid var(--line); }
.pool-tabs button {
  flex: 1; border: none; background: var(--paper-warm); border-radius: 8px;
  padding: 8px 4px; font-size: 14px; cursor: pointer; color: var(--ink-soft);
}
.pool-tabs button small { display: block; font-size: 10px; color: var(--ink-faint); }
.pool-tabs button.on { background: var(--ink); color: #fff; }
.pool-tabs button.on small { color: rgba(255,255,255,.65); }
.pool-list { overflow-y: auto; padding: 10px 12px 14px; min-height: 200px; }
/* 提示在列表尾部随滚动滚走，不固定占位 */
.pool-hint {
  padding: 8px 6px 4px; font-size: 12px; color: var(--ink-faint);
  text-align: center; line-height: 1.7;
}

/* 卡片：白墙上的一帧小景 */
.item-card {
  position: relative;
  background: #fff; border: 1px solid var(--line);
  border-radius: 10px; padding: 10px 34px 40px 12px; margin-bottom: 8px;
  cursor: grab; transition: box-shadow .18s, border-color .18s, transform .18s;
}
.item-card:hover {
  box-shadow: var(--shadow-2);
  border-color: var(--wash-qing);
  transform: translateY(-1px);
}
.item-card:active { cursor: grabbing; }
/* 人群匹配：淡青晕染（渐变末端带透明度，必须叠白底——否则滑动删除红钮从右侧透出） */
.item-card.match {
  border: 1px solid rgba(127,163,168,.65);
  background: linear-gradient(135deg, #fff 60%, rgba(127,163,168,.12)), #fff;
}
.item-card.match .item-name::after {
  content: "✓ 适合你们"; font-size: 11px; color: var(--accent); margin-left: 6px;
}
.item-title-row { display: flex; align-items: baseline; gap: 8px; }
.item-name {
  font-weight: 700; font-size: 15px; color: var(--ink); cursor: pointer;
  border-bottom: 1px dashed rgba(61,107,111,.4); padding-bottom: 1px;
}
.item-name:hover { color: var(--accent); border-bottom-style: solid; }
.item-cat {
  font-size: 11px; color: var(--wash-qing); background: rgba(127,163,168,.18);
  padding: 1px 7px; border-radius: 999px; white-space: nowrap;
}
.item-meta { font-size: 12px; color: var(--ink-soft); margin-top: 3px; }
.item-meta b { color: var(--accent); font-weight: 600; }
.item-summary { font-size: 13px; color: var(--ink); margin-top: 4px; }
.item-tips {
  margin-top: 6px; font-size: 12px; color: var(--ink);
  background: var(--paper-warm); border: 1px dashed var(--line);
  border-radius: 8px; padding: 7px 9px;
}
.item-tips li { margin-left: 16px; margin-bottom: 2px; }
/* 卡片操作行：详情 + 加入（详情要一眼能看到） */
.item-actions {
  position: absolute; right: 8px; bottom: 8px; left: 12px;
  display: flex; justify-content: flex-end; gap: 8px; align-items: center;
}
.item-detail {
  border: 1px solid rgba(61,107,111,.45); background: rgba(61,107,111,.06);
  color: var(--accent); font-size: 12px; border-radius: 999px;
  padding: 4px 12px; cursor: pointer; font-family: inherit;
  display: inline-flex; align-items: center; gap: 3px;
}
.item-detail .ico { width: 13px; height: 13px; }
.item-detail:active, .item-detail:hover { background: var(--accent); color: #fff; border-color: var(--accent); }
.item-add {
  border: 1px solid var(--ink); background: #fff; color: var(--ink);
  font-size: 12px; border-radius: 999px; padding: 4px 12px; cursor: pointer;
  font-family: inherit;
}
.item-add:active, .item-add:hover { background: var(--ink); color: #fff; }
.item-tip-btn {
  position: absolute; top: 8px; right: 8px;
  border: none; background: none; font-size: 15px; cursor: pointer; opacity: .65;
  color: var(--accent); padding: 3px;
}
.item-tip-btn svg { width: 17px; height: 17px; display: block; }
.item-tip-btn:hover { opacity: 1; }
.item-remove {
  position: absolute; top: 8px; right: 8px;
  border: none; background: none; font-size: 13px; cursor: pointer;
  color: var(--ink-faint);
}
.item-remove:hover { color: var(--accent); }

/* iOS 式滑动删除：卡片包在 swipe-wrap 里，左滑露出底层朱砂「删除」钮 */
.swipe-wrap { position: relative; overflow: hidden; border-radius: 10px; margin-bottom: 8px; }
.swipe-wrap .item-card { margin-bottom: 0; }
.swipe-del {
  position: absolute; top: 0; right: 0; bottom: 0; width: 76px;
  border: none; background: #b14a3f; color: #fff;
  font-size: 14px; letter-spacing: 4px; font-family: inherit; cursor: pointer;
}
.swipe-del:active { background: #9c3f35; }
/* 触摸设备：删除走滑动，隐藏常驻 ✕（桌面窄窗 pointer 仍是 fine，✕ 保留） */
@media (pointer: coarse) {
  .day-card .item-remove { display: none; }
}

/* 行程列内 */
.day-card { cursor: grab; padding-bottom: 10px; }
.time-chip {
  display: inline-block; font-size: 11px; color: #fff; background: var(--ink);
  border-radius: 6px; padding: 1px 7px; margin-bottom: 4px;
}
.time-chip.meal { background: var(--wash-gold); color: var(--ink-deep); }
.transit-chip {
  display: block; font-size: 11px; color: var(--ink-soft);
  padding: 2px 0 2px 4px; margin: -4px 0 4px;
  border-left: 2px dashed var(--ink-faint); margin-left: 8px;
}
/* 跨城转移块（0.11.1）：比城内交通醒目一档，火车是关键路径 */
.transit-chip.intercity-chip {
  font-size: 12px; color: var(--accent); font-weight: 600;
  border-left-color: var(--accent); padding: 5px 0 5px 6px;
  background: rgba(61,107,111,.06); border-radius: 0 6px 6px 0;
}

/* 行程流转（0.11.2）：当前环节面板 + 已玩打卡 */
.live-panel { margin: 0 0 12px; }
.live-start, .live-now {
  border: 1.5px solid var(--accent); border-radius: 12px; padding: 14px;
  background: linear-gradient(180deg, rgba(61,107,111,.05), rgba(61,107,111,.02));
}
.live-start p { margin: 0 0 10px; font-size: 13.5px; line-height: 1.7; color: var(--ink); }
#live-start-btn, .live-nav {
  display: inline-block; padding: 11px 18px; border: none; border-radius: 8px;
  background: var(--accent); color: #fff; font-size: 14.5px; font-weight: 600;
  cursor: pointer; text-decoration: none; font-family: inherit;
}
.live-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.live-tag {
  font-size: 11px; padding: 2px 8px; border-radius: 999px;
  background: var(--accent); color: #fff;
}
.live-head b { font-size: 16px; }
.live-time { font-size: 12px; color: var(--ink-soft); }
.live-sub { font-size: 12.5px; color: var(--ink-soft); margin: 6px 0 10px; }
.live-actions { display: flex; gap: 8px; flex-wrap: wrap; }
#live-done-btn {
  padding: 11px 18px; border: 1.5px solid var(--accent); border-radius: 8px;
  background: #fff; color: var(--accent); font-size: 14.5px; font-weight: 600;
  cursor: pointer; font-family: inherit;
}
.live-end {
  padding: 11px 12px; border: none; background: none; color: var(--ink-faint);
  font-size: 12px; cursor: pointer; font-family: inherit; margin-left: auto;
}
.live-next { margin: 10px 0 0; font-size: 12.5px; color: var(--ink-soft); }
.live-feedback {
  border: 1px dashed var(--accent); border-radius: 10px; padding: 10px 12px;
  margin: 8px 0 12px; background: #fff;
}
.live-feedback p { margin: 0 0 8px; font-size: 13px; }
.live-fb-btns { display: flex; gap: 8px; }
.live-fb-btns button {
  padding: 8px 12px; border-radius: 8px; border: 1px solid var(--line);
  background: #fff; font-size: 13px; cursor: pointer; font-family: inherit;
}
.live-fb-btns button[data-fb="review"] { border-color: var(--accent); color: var(--accent); font-weight: 600; }
.live-fb-btns button.quiet { color: var(--ink-faint); border: none; }
/* 已玩过的卡（游玩中）：淡掉 + 左侧 ✓ */
body[data-phase="playing"] .item-card.played { opacity: .55; }
body[data-phase="playing"] .item-card.played .item-name::before { content: '✓ '; color: var(--accent); font-weight: 700; }

/* 行程区 */
.itinerary {
  background: rgba(255,255,255,.92); border: 1px solid var(--line);
  border-radius: var(--radius); box-shadow: var(--shadow-2); padding-bottom: 14px;
  /* grid(桌面)/flex-column(手机)子项默认 min-width:auto 会被内容(如 5 个天标签)撑宽出屏；
     min-width:0 允许缩到列宽内，溢出交给天标签行自己横滚 */
  min-width: 0;
}
.iti-head {
  display: flex; align-items: center; justify-content: space-between;
  flex-wrap: wrap; gap: 8px; padding: 14px 16px 10px;
  position: relative;   /* share-btn 绝对定位锚点 */
  padding-right: 150px;  /* 为独立分享工具预留列，避免与阶段按钮重叠 */
}
.iti-head h2 { min-width: 0; }
.iti-summary { font-size: 13px; color: var(--ink-soft); }
.iti-summary b { color: var(--accent); }

/* 天标签页（桌面端隐藏，手机端每次只看一天） */
.day-tabs { display: none; }

.days { display: flex; gap: 12px; padding: 0 14px; overflow-x: auto; }
.day-col {
  flex: 1 0 240px; min-width: 240px;
  background:
    radial-gradient(ellipse 220px 130px at 85% -5%, rgba(169,195,203,.22), transparent 70%),
    radial-gradient(ellipse 200px 120px at 10% 105%, rgba(127,163,168,.14), transparent 70%),
    var(--paper);
  border: 1px dashed var(--ink-faint);
  border-radius: 10px; padding: 10px; min-height: 260px;
}
.day-col.drag-over { border-color: var(--accent); background: var(--accent-soft); }
.day-head {
  display: flex; align-items: center; flex-wrap: wrap; gap: 4px 8px;
  margin-bottom: 8px; padding-bottom: 6px; border-bottom: 1px solid var(--line);
}
.day-head h3 {
  font-family: "Kaiti SC", "STKaiti", "KaiTi", serif;
  font-size: 17px; color: var(--ink); letter-spacing: 3px; flex: 1;
}
.day-head .day-meta { font-size: 11px; color: var(--ink-soft); flex-basis: 100%; order: 3; }
.day-target {
  border: 1px solid var(--line); background: #fff; color: var(--ink-soft);
  font-size: 11px; border-radius: 999px; padding: 3px 10px; cursor: pointer;
}
.day-target.on {
  background: var(--ink); color: #fff; border-color: var(--ink);
}
.day-target.on::before { content: "✓ "; }
.day-body { min-height: 180px; }
.day-total {
  margin-top: 8px; padding: 7px 10px;
  border-top: 1px solid var(--line);
  font-size: 12px; color: var(--ink-soft); text-align: right;
}
.day-total b { color: var(--accent); }
.day-empty {
  color: var(--ink-faint); font-size: 13px; text-align: center; padding: 30px 8px;
  border: 1px dashed var(--line); border-radius: 8px; background: rgba(255,255,255,.5);
}
.sortable-ghost { opacity: .4; }

/* 当天提醒（融在该天行程下面） */
.day-tips { margin-top: 10px; }
.day-tips[hidden] { display: none; }
.day-tips-title {
  font-size: 13px; font-weight: 700; color: var(--accent);
  padding: 7px 2px 6px; border-top: 1px dashed var(--line); margin-top: 4px;
}
.day-tips .tips-block { margin-bottom: 8px; }
.day-tips .tips-block h4 { font-size: 13px; }
.day-tips .tips-block li { font-size: 12.5px; }
/* 今日提醒折叠（P2/4.7）：默认只显示第一块（天气），其余收进「展开全部提醒」 */
.day-tips-more[hidden] { display: none; }
.day-tips-toggle {
  border: none; background: none; color: var(--accent); font-size: 12.5px;
  padding: 4px 2px; cursor: pointer; font-family: inherit;
}

/* 全程通用提醒（行程区底部） */
.tips-common { margin: 12px 14px 0; }
.tips-common[hidden] { display: none; }
.tips-common .tips-block { margin-bottom: 10px; }

/* 天栏内添加入口：点分类跳待选（置顶，跟着该天走） */
.add-bar {
  margin: 8px 0 0;
  display: flex; align-items: center; gap: 6px;
}
.add-bar button {
  flex: 1; min-width: 0;
  border: 1px dashed rgba(61,107,111,.5); background: rgba(61,107,111,.05);
  color: var(--accent); border-radius: 8px; padding: 8px 2px;
  font-size: 12.5px; cursor: pointer; font-family: inherit; transition: all .15s;
  white-space: nowrap;
}
.add-bar button:hover { border-style: solid; }
.add-bar button:active { background: var(--accent); color: #fff; border-color: var(--accent); }

/* 每日设置：出门时间 + 出行方式（一行，手机端换行） */
.day-setup {
  margin-top: 8px; display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
}
.day-setup-time {
  display: inline-flex; align-items: center; gap: 5px;
  font-size: 12.5px; color: var(--ink-soft); white-space: nowrap;
}
.day-setup-time .ico { font-size: 14px; color: var(--accent); }
.day-start {
  border: 1px solid var(--line); border-radius: 999px; background: #fff;
  padding: 4px 10px; font-size: 12.5px; color: var(--ink); font-family: inherit;
}
.day-start:focus { border-color: var(--ink); }
.day-mode-seg { display: flex; gap: 4px; flex: 1; min-width: 200px; }
.day-mode-seg button {
  flex: 1; border: 1px solid var(--line); background: #fff; color: var(--ink-soft);
  border-radius: 999px; padding: 5px 4px; font-size: 12px; cursor: pointer;
  font-family: inherit; transition: all .15s; white-space: nowrap;
}
.day-mode-seg button.on {
  background: var(--accent); border-color: var(--accent); color: #fff; font-weight: 600;
}
.day-mode-rec {
  margin-top: 5px; font-size: 11.5px; color: var(--ink-faint);
  display: flex; align-items: center; gap: 4px;
}
.day-mode-rec[hidden] { display: none; }
.day-mode-rec .ico { font-size: 13px; color: var(--accent); flex-shrink: 0; }

/* 每日设置折叠（P2/4.7）：默认只出摘要行「09:00 出发 · 地铁 ✎」，点摘要展开编辑；推荐理由行在展开体内 */
.day-setup-summary {
  width: 100%; border: none; background: none; text-align: left; cursor: pointer;
  font-size: 12.5px; color: var(--ink-soft); padding: 3px 2px; font-family: inherit;
}
.day-setup-summary .ico { color: var(--accent); }
.day-setup-summary b { color: var(--accent); font-weight: 400; }
.day-setup-body { display: none; width: 100%; }
.day-setup.open .day-setup-body { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: 6px; }
.day-setup.open .day-mode-rec { flex-basis: 100%; }

/* 当晚住宿行（天栏内，第N晚跟第N天） */
.stay-row-wrap { margin-top: 10px; }
.stay-row {
  display: flex; align-items: center; gap: 8px;
  background: rgba(127,163,168,.12); border: 1px dashed rgba(127,163,168,.55);
  border-radius: 8px; padding: 7px 10px; font-size: 13px; min-height: 38px;
}
.stay-row.picked { border-style: solid; background: rgba(255,255,255,.75); }
.stay-night { font-weight: 600; color: var(--ink); white-space: nowrap; font-size: 12px; display: inline-flex; align-items: center; gap: 4px; }
.stay-night .ico { font-size: 14px; color: var(--accent); }
.stay-empty { color: var(--ink-faint); font-size: 12px; }
.stay-name .price { color: var(--accent); margin-left: 4px; }
.link-btn {
  border: none; background: none; color: var(--accent);
  font-size: 13px; cursor: pointer; text-decoration: underline; white-space: nowrap;
}

/* ---------- 行程码分享 ---------- */
.share-btn {
  position: absolute; top: 16px; right: 16px;
  display: inline-flex; align-items: center; gap: 5px;
  border: 1px solid var(--line); background: rgba(255,255,255,.9);
  color: var(--accent); border-radius: 999px; padding: 6px 12px;
  font-size: 12.5px; cursor: pointer; font-family: inherit; transition: all .15s;
}
.share-btn svg { width: 15px; height: 15px; }
.share-btn:hover { border-color: var(--accent); background: rgba(61,107,111,.06); }
.share-code {
  text-align: center; font-size: 34px; font-weight: 700; letter-spacing: 10px;
  color: var(--accent); padding: 14px 0 6px; text-indent: 10px;   /* 抵消末字符间距视觉偏移 */
  font-family: "Courier New", monospace;
}
.share-tip { font-size: 12.5px; color: var(--ink-soft); text-align: center; margin: 6px 0; }
.share-url {
  font-size: 12px; color: var(--ink-faint); word-break: break-all;
  background: rgba(43,52,54,.05); border-radius: 8px; padding: 8px 10px; margin: 8px 0;
  text-align: center;
}
.share-btns { display: flex; gap: 8px; }
.share-btns button {
  flex: 1; border: 1px solid var(--accent); background: var(--accent); color: #fff;
  border-radius: 8px; padding: 9px; font-size: 13.5px; cursor: pointer; font-family: inherit;
}
.share-btns button:first-child { background: #fff; color: var(--accent); }
.share-note { font-size: 11px; color: var(--ink-faint); text-align: center; margin-top: 8px; }
.share-open { margin-top: 16px; border-top: 1px dashed var(--line); padding-top: 12px; }
.share-open p { font-size: 12.5px; color: var(--ink-soft); margin: 0 0 8px; }
.share-open-row { display: flex; gap: 8px; }
.share-open-row input {
  flex: 1; border: 1px solid var(--line); border-radius: 8px; padding: 10px 12px;
  font-size: 16px; letter-spacing: 4px; text-transform: uppercase; font-family: inherit;
  color: var(--ink); background: #fff; min-width: 0;
}
.share-open-row input:focus { border-color: var(--accent); }
.share-open-row button {
  border: none; background: var(--ink); color: #fff; border-radius: 8px;
  padding: 0 20px; font-size: 14px; cursor: pointer; font-family: inherit; white-space: nowrap;
}
.share-modal { max-width: 420px; }

/* ---------- 待选地图 ---------- */
.pool-map-toggle {
  width: 100%; margin-top: 8px;
  border: 1px solid var(--line); background: rgba(255,255,255,.85);
  border-radius: 8px; padding: 8px 10px;
  display: flex; align-items: center; justify-content: center; gap: 6px;
  font-size: 13px; color: var(--accent); cursor: pointer; font-family: inherit;
}
.pool-map-toggle svg { width: 16px; height: 16px; }
.pool-map-toggle b { font-weight: 400; color: var(--ink-faint); font-size: 11px; margin-left: auto; }
.pool-map-toggle.on { border-color: var(--accent); background: rgba(61,107,111,.07); }
.pool-map-wrap { margin-top: 8px; }
.pool-map-wrap[hidden] { display: none; }
#pool-map {
  height: 320px; border-radius: 10px; border: 1px solid var(--line);
  z-index: 0;   /* 压住 leaflet 内部 z-index，别盖住顶部 sticky 栏 */
}
.map-hint { font-size: 11px; color: var(--ink-faint); text-align: center; margin: 5px 0 0; }
/* 黛青圆点标记（按类型微调色相） */
.map-dot {
  border-radius: 50%; border: 2px solid #fff;
  background: #3d6b6b; box-shadow: var(--shadow-1);
}
.dot-food { background: #b07a3f; }
.dot-hotel { background: #7b6a9e; }
.dot-experience { background: #4e7fa0; }
/* popup 内容 */
.map-pop b { font-size: 13.5px; }
.map-pop p { margin: 3px 0 7px; font-size: 12px; color: #666; }
.map-pop-btns { display: flex; gap: 6px; }
.map-pop-btns button {
  flex: 1; border: 1px solid #3d6b6b; background: #fff; color: #3d6b6b;
  border-radius: 6px; padding: 4px 8px; font-size: 12px; cursor: pointer; font-family: inherit;
}
.map-pop-btns button[data-map-add] { background: #3d6b6b; color: #fff; }
.leaflet-popup-content-wrapper { border-radius: 10px; }
.leaflet-popup-content { margin: 10px 12px; }

/* ---------- 面板 ---------- */
.panel {
  margin-top: 22px; background: rgba(255,255,255,.92); border: 1px solid var(--line);
  border-radius: var(--radius); box-shadow: var(--shadow-2); padding: 20px;
  position: relative; overflow: hidden;
}
.panel::before {
  content: ""; position: absolute; top: 0; left: 0; right: 0; height: 5px;
  background: linear-gradient(90deg,
    transparent, rgba(127,163,168,.55) 20%, rgba(169,195,203,.6) 50%,
    rgba(201,180,137,.35) 78%, transparent);
}
.panel-sub { font-size: 13px; color: var(--ink-soft); margin-top: 2px; }
.tips-content { margin-top: 12px; }
.tips-content.empty { color: var(--ink-faint); font-size: 14px; }
.tips-more-hint { color: var(--ink-faint); font-size: 13px; text-align: center; margin: 4px 0 2px; }
.tips-block { margin-bottom: 14px; }
/* 带底色的提示块（警告/雨天/天气/通用）统一精致化 */
.tips-block.warn-block, .tips-block.rain-block,
.tips-block.weather-block, .tips-block.common-block {
  border: 1px solid; border-radius: 10px; padding: 10px 12px;
}
.tips-block h4 { font-size: 14px; color: var(--ink); margin-bottom: 4px; }
.tips-block li { font-size: 13px; margin-left: 20px; margin-bottom: 2px; }
.tips-block .booking {
  display: inline-block; font-size: 12px; background: var(--accent-soft);
  color: var(--accent); border-radius: 6px; padding: 2px 8px; margin-top: 4px;
}

/* ---------- 管家服务 ---------- */
.svc-cat { margin-top: 18px; }
.svc-cat:first-of-type { margin-top: 12px; }
.svc-cat-title {
  font-size: 15px; color: var(--ink); letter-spacing: 1px;
  display: flex; align-items: center; gap: 6px;
  padding-bottom: 6px; border-bottom: 1px solid var(--line); margin-bottom: 10px;
}
.svc-cat-title .ico { width: 17px; height: 17px; color: var(--accent); }
.svc-grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 10px;
}
.svc-card {
  position: relative;
  background: #fff; border: 1px solid var(--line); border-radius: 10px;
  padding: 10px 12px 44px;
  transition: box-shadow .18s, border-color .18s;
}
.svc-card:hover { box-shadow: var(--shadow-2); border-color: var(--wash-qing); }
.svc-top { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
.svc-name { font-weight: 700; font-size: 14px; color: var(--ink); }
.svc-price { font-size: 12px; color: var(--accent); font-weight: 600; white-space: nowrap; }
.svc-desc { font-size: 12.5px; color: var(--ink-soft); margin-top: 4px; line-height: 1.6; }
.svc-book {
  position: absolute; right: 10px; bottom: 9px;
  border: 1px solid var(--accent); background: rgba(61,107,111,.06); color: var(--accent);
  font-size: 12px; border-radius: 999px; padding: 4px 14px; cursor: pointer; font-family: inherit;
}
.svc-book:active, .svc-book:hover { background: var(--accent); color: #fff; }
.svc-contact {
  margin-top: 14px; border: 1px dashed rgba(61,107,111,.4); border-radius: 10px;
  background: rgba(61,107,111,.05); padding: 12px 14px;
}
.svc-contact h5 { font-size: 13px; color: var(--accent); margin-bottom: 6px; }
.svc-contact p { font-size: 13px; color: var(--ink); line-height: 1.8; }
.svc-price-big { color: var(--accent); }

/* 服务在线预订表单（手机号+验证码 → leads，管家回电） */
.book-form {
  margin-top: 14px; border: 1px solid rgba(61,107,111,.45); border-radius: 10px;
  background: rgba(61,107,111,.07); padding: 12px 14px;
}
.book-form h5 { font-size: 13px; color: var(--accent); margin-bottom: 10px; }
.book-row { display: flex; gap: 8px; margin-bottom: 8px; }
.book-row input {
  flex: 1; min-width: 0; border: 1px solid rgba(61,107,111,.35); border-radius: 8px;
  padding: 9px 10px; font-size: 14px; font-family: inherit; background: #fff; color: var(--ink);
}
.book-row input:focus { border-color: var(--accent); }
#book-send {
  flex-shrink: 0; border: 1px solid var(--accent); background: transparent; color: var(--accent);
  border-radius: 8px; padding: 0 12px; font-size: 13px; cursor: pointer; font-family: inherit; white-space: nowrap;
}
#book-send:disabled { opacity: .45; cursor: default; }
#book-send:not(:disabled):hover { background: var(--accent); color: #fff; }
.book-note {
  width: 100%; box-sizing: border-box; border: 1px solid rgba(61,107,111,.35); border-radius: 8px;
  padding: 9px 10px; font-size: 13.5px; font-family: inherit; background: #fff; color: var(--ink);
  margin-bottom: 10px;
}
.book-note:focus { border-color: var(--accent); }
.book-submit {
  width: 100%; border: none; border-radius: 8px; background: var(--accent); color: #fff;
  font-size: 15px; padding: 11px 0; cursor: pointer; font-family: inherit; letter-spacing: 2px;
}
.book-submit:disabled { opacity: .55; cursor: default; }
.book-verified { font-size: 12.5px; color: var(--accent); margin-bottom: 10px; line-height: 1.6; }
.book-verified svg { width: 1.1em; height: 1.1em; vertical-align: -2px; }
.book-ok {
  font-size: 13.5px; color: var(--accent); line-height: 1.8; padding: 6px 2px;
}
.book-ok svg { width: 1.2em; height: 1.2em; vertical-align: -3px; }

/* 交通指南（卡片折叠：标题+一句话常显，痛点/方案点开看） */
.transport-grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(330px, 1fr));
  gap: 14px; margin-top: 14px;
}
.tg-card {
  border: 1px solid var(--line); border-radius: 10px; overflow: hidden;
  background: #fff;
}
.tg-head {
  width: 100%; border: none; cursor: pointer; font-family: inherit;
  background: linear-gradient(135deg, var(--ink) 0%, #3d4a4e 100%);
  color: #fff; padding: 11px 14px;
  display: flex; justify-content: space-between; align-items: flex-start; gap: 8px;
  text-align: left;
}
.tg-title { font-size: 15px; letter-spacing: 1px; font-weight: 600; line-height: 1.45; }
/* 价格说明常较长，独立一行小字，不挤标题 */
.tg-title .price {
  display: block; font-size: 11px; color: rgba(255,255,255,.72);
  margin-top: 2px; letter-spacing: .3px; font-weight: 400; line-height: 1.5;
}
.tg-chev { display: flex; opacity: .8; transition: transform .2s; flex: none; padding-top: 3px; }
.tg-chev .ico { width: 16px; height: 16px; }
.tg-card.open .tg-chev { transform: rotate(180deg); }
.tg-tips { font-size: 12.5px; color: var(--ink-soft); padding: 9px 14px; line-height: 1.7; }
.tg-body { padding: 12px 14px; border-top: 1px dashed var(--line); background: rgba(249,247,241,.6); }
.tg-sec { margin-bottom: 10px; }
.tg-sec:last-child { margin-bottom: 0; }
.tg-sec h5 { font-size: 12px; margin-bottom: 4px; }
.tg-sec.pains h5 { color: var(--accent); }
.tg-sec.solutions h5 { color: var(--wash-qing); }
.tg-sec li { font-size: 12.5px; margin-left: 18px; margin-bottom: 3px; color: var(--ink); }

/* ---------- 入园时间警告 ---------- */
.warn-chips { margin-top: 5px; display: flex; flex-direction: column; gap: 3px; }
.warn-chip {
  display: inline-block; font-size: 11.5px; line-height: 1.5;
  color: #8a6d1a; background: rgba(216,178,74,.14);
  border: 1px solid rgba(216,178,74,.38); border-radius: 6px;
  padding: 2px 8px;
}
/* 滑动删除红钮在卡片底层：has-warn 的 5% 金 tint 必须叠在不透明白底上，否则右侧 76px 红条透出 */
.item-card.has-warn { border-color: rgba(216,178,74,.55); background: linear-gradient(rgba(216,178,74,.05), rgba(216,178,74,.05)), #fff; }
.tips-block.warn-block { border-color: rgba(216,178,74,.55); background: rgba(216,178,74,.07); }
.tips-block.warn-block h4 { color: #8a6d1a; }
.tips-block.rain-block { border-color: rgba(107,141,166,.4); background: rgba(107,141,166,.06); }
.tips-block.rain-block h4 { color: #4a6b80; }
/* 天气块：水色淡蓝 */
.tips-block.weather-block { border-color: rgba(107,141,166,.45); background: rgba(107,141,166,.08); }
.tips-block.weather-block h4 { color: #41657a; }
.tips-block.weather-block .w-summary { font-size: 13px; color: var(--ink); margin: 2px 0 4px; }
.tips-block.weather-block .w-outfit { font-size: 13px; color: var(--accent); margin: 2px 0 4px; }
.tips-block.weather-block .w-outfit .ico { width: 14px; height: 14px; vertical-align: -2px; }
/* 通用避坑块：墨色淡灰 */
.tips-block.common-block { border-color: var(--line); background: rgba(243,239,228,.5); }
.tips-block.common-block h4 { color: var(--ink-soft); }

/* 应季看点行（卡片上） */
.season-line {
  display: inline-block; margin-top: 5px; font-size: 11.5px; line-height: 1.55;
  padding: 2px 9px; border-radius: 6px;
}
.season-line.on { color: #5c6e35; background: rgba(139,164,90,.13); border: 1px solid rgba(139,164,90,.32); }
.season-line.off { color: var(--ink-faint); background: rgba(168,173,174,.10); border: 1px dashed var(--line); }
.season-line .ico { width: 12px; height: 12px; vertical-align: -1.5px; }
/* 天栏节奏提醒 */
.day-warn { padding: 6px 10px 0; display: flex; flex-direction: column; gap: 3px; }
.day-warn[hidden] { display: none; }

/* 出行日期输入与出门时间同款胶囊 */
#start-date {
  border: 1px solid var(--line); border-radius: 999px;
  padding: 6px 12px; font-size: 13px; color: var(--ink);
  background: rgba(255,255,255,.85); font-family: inherit;
}

/* ---------- 详情弹窗 ---------- */
body.modal-open { overflow: hidden; }
.modal-mask {
  position: fixed; inset: 0; z-index: 90;
  background: rgba(43,52,54,.45);
  display: flex; align-items: center; justify-content: center;
  padding: 18px;
  backdrop-filter: blur(2px);
}
.modal-mask[hidden] { display: none !important; }  /* hidden 必须压过 display:flex，否则一直显示 */
.modal {
  position: relative; width: 100%; max-width: 560px; max-height: 88vh;
  background: #fdfcf8; border-radius: 16px; overflow: hidden;
  box-shadow: var(--shadow-3);
  display: flex; flex-direction: column;
}
.modal-close {
  position: absolute; top: 10px; right: 10px; z-index: 2;
  width: 34px; height: 34px; border-radius: 50%;
  border: none; background: rgba(255,255,255,.9); color: var(--ink);
  font-size: 15px; cursor: pointer; box-shadow: var(--shadow-1);
}
.svc-modal { max-width: 460px; }
/* 轻量确认弹层（替代原生 confirm，模式同 admin uiConfirm）：居中卡，Esc/点遮罩取消，危险操作主按钮红色 */
.cf-modal { max-width: 380px; padding: 20px; }
.cf-title { font-size: 16px; font-weight: 600; color: var(--ink-deep); margin-bottom: 8px; }
.cf-body { font-size: 14px; color: var(--ink-soft); line-height: 1.7; margin-bottom: 16px; }
.cf-ops { display: flex; justify-content: flex-end; gap: 10px; }
.cf-btn {
  min-height: 40px; border-radius: 10px; padding: 8px 20px; font-size: 14px; cursor: pointer;
  font-family: inherit; border: 1px solid var(--line); background: #fff; color: var(--ink);
}
.cf-btn.ok-danger { background: #B04A3A; border-color: #B04A3A; color: #fff; }
.cf-btn.ok-normal { background: var(--accent); border-color: var(--accent); color: #fff; }
.modal-banner { flex: none; }
/* 有实拍图：横向滑动看全部 */
.modal-banner.has-img {
  display: flex; overflow-x: auto; gap: 0;
  scroll-snap-type: x mandatory; max-height: 240px;
  background: #222;
}
.modal-banner.has-img img {
  width: 100%; flex: none; height: 240px; object-fit: cover;
  scroll-snap-align: start;
}
/* 无图：分类水彩占位（延续素雅水彩） */
.modal-banner.no-img {
  height: 130px; display: flex; align-items: center; justify-content: center;
}
.banner-attraction { background: linear-gradient(135deg, rgba(138,164,152,.35), rgba(61,107,111,.28) 55%, rgba(200,214,196,.3)), #eef1ea; }
.banner-experience { background: linear-gradient(135deg, rgba(107,141,166,.32), rgba(61,107,111,.3) 60%, rgba(180,200,214,.3)), #edf1f3; }
.banner-food { background: linear-gradient(135deg, rgba(216,178,74,.25), rgba(196,120,84,.2) 60%, rgba(230,210,170,.3)), #f5f1e6; }
.banner-hotel { background: linear-gradient(135deg, rgba(150,120,160,.22), rgba(61,107,111,.24) 60%, rgba(210,200,220,.28)), #f1efF4; }
.banner-emoji { opacity: .75; }
.banner-emoji .ico { width: 56px; height: 56px; vertical-align: baseline; color: rgba(61,107,111,.55); }

.modal-body { padding: 18px 20px 20px; overflow-y: auto; }
/* 详情页头部：标题 + 加入行程（R02，2026-09-10） */
.d-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.d-head-main { min-width: 0; }
.d-head h3 { font-family: "Kaiti SC","STKaiti",serif; font-size: 22px; letter-spacing: 1px; }
.d-cat { font-size: 12px; color: var(--ink-soft); display: block; margin-top: 3px; }
.d-summary {
  margin-top: 10px; font-size: 13.5px; color: var(--accent);
  border-left: 3px solid rgba(61,107,111,.35); padding-left: 10px; line-height: 1.6;
}
.d-desc { margin-top: 10px; font-size: 14px; line-height: 1.85; color: var(--ink); text-align: justify; }
.d-info { margin-top: 14px; border-top: 1px dashed var(--line); padding-top: 10px; }
.d-row { display: flex; gap: 10px; font-size: 13px; margin-bottom: 6px; line-height: 1.6; }
.d-k { flex: none; width: 62px; color: var(--ink-soft); }
.d-v { flex: 1; color: var(--ink); }
.d-v small { color: var(--ink-soft); }
.d-tips { margin-top: 12px; }
.d-tips h5 { font-size: 13px; margin-bottom: 6px; color: var(--accent); }
.d-tips li { font-size: 12.5px; margin-left: 18px; margin-bottom: 4px; line-height: 1.6; }
/* 加入行程：R02 起移到标题右侧（2026-09-10） */
.d-add {
  margin-top: 2px; flex: none; width: auto; padding: 9px 14px;
  border: none; border-radius: 999px; cursor: pointer;
  background: var(--accent); color: #fff; font-size: 13.5px; letter-spacing: 1px;
  box-shadow: var(--shadow-1);
}
.d-add:active { transform: scale(.98); }

/* 房型表（住宿详情） */
.d-rooms { margin-top: 12px; }
.d-rooms h5 { font-size: 13px; margin-bottom: 6px; color: var(--accent); }
.room-table { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.room-table th, .room-table td {
  text-align: left; padding: 7px 8px; border-bottom: 1px solid var(--line);
  line-height: 1.5; vertical-align: top;
}
.room-table th { color: var(--ink-soft); font-weight: normal; font-size: 12px; }
.room-table td.fit { color: var(--accent); }
.room-note { font-size: 11px; color: var(--ink-soft); margin-top: 6px; }

/* ---------- 轻提示 toast（P1-2 队列版）：最多 2 条叠放，新条从下方顶入 ---------- */
#toast-stack {
  position: fixed; left: 50%; bottom: 84px; transform: translateX(-50%);
  z-index: 120; max-width: 86vw;
  display: flex; flex-direction: column; align-items: center; gap: 8px;
  pointer-events: none;
}
.toast-item {
  background: rgba(35,41,44,.92); color: #fff;   /* 信息=墨色 */
  font-size: 13px; padding: 9px 16px; border-radius: 999px;
  opacity: 0; transform: translateY(12px);
  transition: opacity .2s, transform .2s;
  box-shadow: var(--shadow-2);
  text-align: center; max-width: 86vw;
}
.toast-item.show { opacity: 1; transform: translateY(0); }
.toast-item.t-ok { background: rgba(61,107,111,.94); }    /* 成功=黛青 */
.toast-item.t-err { background: rgba(156,63,53,.94); }    /* 错误=朱砂（同滑动删除钮色系） */
/* 撤销条：#toast-stack 整体 pointer-events:none，动作钮单独开点击 */
.toast-undo {
  pointer-events: auto; margin-left: 10px; border: none; cursor: pointer;
  background: none; color: #fff; font-size: 13px; font-weight: 600;
  text-decoration: underline; text-underline-offset: 3px; padding: 2px 4px;
}
@media (max-width: 980px) {
  body[data-mtab="iti"] #toast-stack { bottom: 140px; }   /* 行程 tab 让开吸底主按钮（P1-3） */
}

/* ---------- 隐私授权引导卡（价值前置：行程产生价值后才弹出；每会话至多1次） ---------- */
.consent-bar {
  position: fixed; left: 50%; bottom: 18px; transform: translateX(-50%);
  z-index: 110; width: min(460px, calc(100vw - 24px));
  background: var(--paper); border: 1px solid var(--line); border-radius: 16px;
  box-shadow: var(--shadow-3);
  padding: 20px 20px 14px;
  animation: consent-up .35s ease;
}
@keyframes consent-up { from { transform: translateX(-50%) translateY(24px); opacity: 0; } to { transform: translateX(-50%) translateY(0); opacity: 1; } }
.consent-bar h3 { font-size: 17px; color: var(--ink-deep); margin: 0 0 8px; display: flex; align-items: center; gap: 7px; }
.consent-bar h3 .ico { color: var(--accent); }
.consent-perks { margin: 0 0 10px; padding: 0; list-style: none; }
.consent-perks li { font-size: 13.5px; color: var(--ink); line-height: 1.5; padding: 4px 0 4px 26px; position: relative; }
.consent-perks li::before {
  content: "✓"; position: absolute; left: 2px; top: 4px;
  color: var(--accent); font-weight: bold;
}
.consent-fine { font-size: 11.5px; color: var(--ink-faint); line-height: 1.6; margin: 0 0 12px; }
.consent-fine a { color: var(--ink-soft); }
.consent-btns { display: flex; flex-direction: column; gap: 2px; align-items: stretch; }
.consent-yes {
  border: none; background: var(--accent); color: #fff; border-radius: 10px;
  padding: 12px 18px; font-size: 15px; cursor: pointer; font-weight: 600;
}
.consent-no {
  background: none; border: none; color: var(--ink-faint);
  font-size: 12px; cursor: pointer; padding: 7px;
}
/* 行程区常驻轻入口（未开启同步时显示；主动弹窗3次后只剩它） */
.sync-hint {
  font-size: 12px; color: var(--ink-soft); cursor: pointer;
  border: 1px dashed var(--line); border-radius: 999px; padding: 3px 12px;
  background: none; display: inline-flex; align-items: center; gap: 5px;
}
.sync-hint:hover { color: var(--accent); border-color: var(--accent); }
.sync-hint .ico { width: 13px; height: 13px; }
@media (max-width: 980px) {
  .consent-bar { bottom: 72px; width: calc(100vw - 20px); }   /* 让开手机端底部 tabbar */
}

/* ---------- 手机端底部 Tab 导航（桌面隐藏） ---------- */
.mobile-tabbar { display: none; }
.config-summary { display: none; }
.config-done { display: none; }  /* 桌面配置栏常开，不需要收起按钮 */
.config-body { display: contents; }  /* 包裹层不占布局，桌面端 groups 仍直接进 flex */

@media (max-width: 980px) {
  /* 头部紧凑：手机空间寸土寸金，远山只留薄薄一层 */
  .site-header {
    background:
      radial-gradient(ellipse 320px 26px at 15% 100%, rgba(169,195,203,.30), transparent 72%),
      radial-gradient(ellipse 380px 30px at 60% 102%, rgba(127,163,168,.32), transparent 70%),
      radial-gradient(ellipse 300px 24px at 90% 100%, rgba(169,195,203,.28), transparent 72%),
      linear-gradient(to bottom, #faf8f2 0%, var(--paper) 80%, #eef0ea 100%);
  }
  .header-inner { padding: 12px 4px 14px; }
  .site-header h1 { font-size: 19px; letter-spacing: 4px; }
  .tagline { font-size: 11px; letter-spacing: 1px; margin-top: 1px; }
  .site-header::after { height: 1px; }

  /* 整体节奏收紧 */
  .config-bar { margin-top: 8px; gap: 10px; }
  .planner { margin-top: 8px; gap: 10px; }
  .panel { margin-top: 12px; padding: 14px; }
  .pool-head { padding: 10px 12px 6px; }
  .pool-tabs { padding: 0 12px 8px; }
  .iti-head { padding: 10px 112px 8px 12px; }

  /* 底部 tab bar 固定 */
  .mobile-tabbar {
    display: flex; position: fixed; left: 0; right: 0; bottom: 0; z-index: 80;
    background: rgba(253,252,248,.97); border-top: 1px solid var(--line);
    padding: 6px 4px calc(6px + env(safe-area-inset-bottom));
    box-shadow: var(--shadow-1);
  }
  .mobile-tabbar button {
    flex: 1; border: none; background: none; cursor: pointer;
    font-size: 11.5px; color: var(--ink-soft); padding: 4px 0;
    display: flex; flex-direction: column; align-items: center; gap: 2px;
    position: relative; font-family: inherit;
  }
  .mobile-tabbar button.on { color: var(--accent); font-weight: bold; }
  .tb-ico {
    display: flex; align-items: center; justify-content: center;
    width: 34px; height: 26px; border-radius: 50%;
  }
  .tb-ico svg { width: 22px; height: 22px; }
  /* 选中态：图标背后淡青晕染（水彩笔触） */
  .mobile-tabbar button.on .tb-ico {
    background: radial-gradient(ellipse 80% 70% at 50% 55%, rgba(61,107,111,.16), rgba(61,107,111,0) 72%);
  }
  .tb-badge {
    position: absolute; top: -2px; right: calc(50% - 24px);
    background: #c0532f; color: #fff; font-size: 10px;
    min-width: 16px; height: 16px; border-radius: 8px; line-height: 16px;
    padding: 0 4px;
  }
  body { padding-bottom: 64px; }  /* 给 tab bar 让位 */

  /* ===== 四大板块：待选(pool) / 行程(iti) / 服务(svc) / 指南(guide) =====
     抬头只留指南页；页脚指南+待选两页都留（待选是落地首页，备案号须在主页可见——0.21.3 合规）；配置摘要行常驻待选/行程两 tab 顶部（P0-1） */
  body[data-mtab="pool"] .itinerary,
  body[data-mtab="pool"] #service,
  body[data-mtab="pool"] #transport,
  body[data-mtab="pool"] .site-header,
  body[data-mtab="iti"] .pool,
  body[data-mtab="iti"] #service,
  body[data-mtab="iti"] #transport,
  body[data-mtab="iti"] .site-header,
  body[data-mtab="iti"] .site-footer,
  body[data-mtab="svc"] .planner,
  body[data-mtab="svc"] .config-bar,
  body[data-mtab="svc"] #transport,
  body[data-mtab="svc"] .site-header,
  body[data-mtab="svc"] .site-footer,
  body[data-mtab="guide"] .config-bar,
  body[data-mtab="guide"] .planner,
  body[data-mtab="guide"] #service { display: none; }

  /* 板块各自独占一屏：整页一条滚动；
     align-items 必须盖回 stretch——桌面 grid 的 align-items:start 在列向 flex 下变成水平不拉伸，
     子板块会按内容定宽（5 个天标签时行程区撑出屏幕） */
  .planner { display: flex; flex-direction: column; align-items: stretch; }
  .pool { position: static; max-height: none; }
  .pool-list { max-height: none; overflow: visible; min-height: 0; }

  /* 待选四分类置顶：滚卡片时钉在顶部，随时切换 */
  .pool-tabs {
    position: sticky; top: 0; z-index: 20;
    background: rgba(253,252,248,.96);
    padding-top: 8px; backdrop-filter: blur(3px);
  }

  /* 天标签页：每次只看一天 */
  .day-tabs {
    display: flex; gap: 6px; padding: 2px 14px 10px;
    overflow-x: auto;
  }
  .day-tab {
    /* 1 0 auto：标签按内容定宽——少时撑满整行，多时行内横滚（容器已 overflow-x:auto），不撑破页面 */
    flex: 1 0 auto; white-space: nowrap;
    border: 1px solid var(--line); background: var(--paper-warm);
    border-radius: 999px; padding: 7px 10px;
    font-size: 13px; color: var(--ink-soft); cursor: pointer; font-family: inherit;
    display: flex; align-items: center; justify-content: center; gap: 5px;
  }
  .day-tab small { font-size: 10px; color: var(--ink-faint); }
  .day-tab small.cnt { color: var(--accent); font-weight: 600; }
  .day-tab.on { background: var(--ink); color: #fff; border-color: var(--ink); }
  .day-tab.on small { color: rgba(255,255,255,.7); }
  .day-tab.on small.cnt { color: #ffd98a; }
  /* 非当前天隐藏（桌面端不受影响，全显示） */
  .day-col { display: none; }
  .day-col.current { display: block; }
  /* 天标签已承担"选天"职责，天栏头精简：只留 meta 行 */
  .day-head h3, .day-target { display: none; }
  .day-head { border-bottom: none; margin-bottom: 2px; padding-bottom: 0; }
  .day-head .day-meta { flex-basis: auto; order: 0; }
  .day-col { min-height: 0; }
  .day-body { min-height: 120px; }

  /* 配置栏折叠：默认只显示摘要一行 */
  .config-summary {
    display: block; width: 100%; border: none; background: none; cursor: pointer;
    font-size: 13.5px; color: var(--ink); text-align: center; padding: 4px 0;
    font-family: inherit;
  }
  .config-summary b { color: var(--accent); font-size: 12px; }
  .config-body { display: none; }
  .config-bar.open .config-body { display: contents; }
  .config-bar { padding: 10px 14px; }
  .config-bar.open { padding: 14px; }
  .config-bar.open .config-summary { border-bottom: 1px dashed var(--line); padding-bottom: 10px; margin-bottom: 4px; }
  /* 展开态底部明显的收起按钮（不然用户不知道在哪收） */
  .config-done {
    display: block; width: 100%; margin-top: 10px; padding: 11px;
    border: none; border-radius: 10px; cursor: pointer; font-family: inherit;
    background: var(--ink); color: #fff; font-size: 14px; letter-spacing: 2px;
  }
  .config-done:active { background: var(--accent); }
}

/* ---------- 页脚（精简为一行，手机端只在指南页显示） ---------- */
.site-footer {
  margin-top: 24px;
  color: var(--ink-faint);
  padding: 14px 0 16px; font-size: 11.5px; text-align: center;
  border-top: 1px solid var(--line);
  letter-spacing: .3px;
}

/* ---------- 响应式 ---------- */
@media (max-width: 980px) {
  .days { flex-direction: column; }
  .day-col.current { flex: none; width: 100%; }

  /* 手机触控目标 ≥ 40px */
  .seg button { padding: 9px 15px; font-size: 14px; }
  .pool-tabs button { padding: 12px 4px; font-size: 15px; }
  .item-card { padding: 12px 40px 48px 14px; }
  .item-actions { right: 10px; bottom: 10px; left: 14px; }
  .item-detail { font-size: 13px; padding: 7px 14px; }
  .item-add { font-size: 13px; padding: 7px 16px; }
  .item-tip-btn { font-size: 18px; padding: 6px; }
  .item-remove { font-size: 16px; padding: 6px; }
  .stay-row { padding: 9px 12px; flex-wrap: wrap; }
  .day-start { padding: 8px 12px; font-size: 14px; }
  .day-mode-seg { min-width: 100%; }
  .day-mode-seg button { padding: 9px 4px; font-size: 13px; }
  .add-bar button { padding: 11px 2px; font-size: 14px; }
  #pool-map { height: 260px; }
  .config-bar { gap: 12px; }
  .config-group { flex-direction: column; align-items: flex-start; gap: 7px; }
  .crowd-group .seg { max-width: 100%; }
  .wrap { padding: 0 12px; }
  .svc-grid { grid-template-columns: 1fr; }
  .svc-card { padding: 12px 14px 48px; }
  .svc-book { font-size: 13px; padding: 7px 16px; }
  .header-nav { display: none; }
}

/* ================= 0.7.0：UGC 共建 / 热门行程 / 分享图 / 分城市 ================= */

/* 城市切换（待选池头部） */
#city-switch {
  border: 1px solid var(--line); border-radius: 8px; background: var(--paper);
  color: var(--ink); font-size: 13px; padding: 4px 8px; margin-right: 6px;
  font-family: inherit;
}

/* UGC 卡片角标：审核中 / 游客共建 */
.ugc-chip {
  display: inline-block; font-size: 11px; line-height: 1; padding: 3px 7px;
  border-radius: 999px; margin-left: 6px; vertical-align: 1px;
  background: var(--accent-soft); color: var(--accent);
  border: 1px solid rgba(61,107,111,.25);
}
.ugc-chip.pending { background: #fdf3e3; color: #9a6b1f; border-color: rgba(201,180,137,.6); }
/* 信息刚核实（14天内更新） */
.fresh-chip {
  display: inline-block; font-size: 11px; line-height: 1; padding: 3px 7px;
  border-radius: 999px; margin-left: 6px; vertical-align: 1px;
  background: #eef6ee; color: #3d7a4a; border: 1px solid rgba(61,122,74,.25);
}
/* 已核验标签（0.8.0）：踩点核验日期外显——比 fresh-chip 更正式的信任证据 */
.verified-chip {
  display: inline-block; font-size: 11px; line-height: 1; padding: 3px 7px;
  border-radius: 999px; margin-left: 6px; vertical-align: 1px;
  background: #eef6ee; color: #2f6b3c; border: 1px solid rgba(61,122,74,.4);
  font-weight: 600;
}
/* 内容整理标签（0.16.0）：无真实核验时如实标注整理时间，与"已核验"绿标区分 */
.seeded-chip {
  display: inline-block; font-size: 11px; line-height: 1; padding: 3px 7px;
  border-radius: 999px; margin-left: 6px; vertical-align: 1px;
  background: #f3f2ef; color: #7d7a72; border: 1px solid rgba(125,122,114,.28);
}
/* 详情弹窗核验行 */
.verified-line { color: #2f6b3c; font-weight: 600; }
.verified-line small { color: var(--ink-soft); font-weight: 400; }
/* 卡片"今日已确认营业"小标 */
.today-ok { color: #2f6b3c; font-size: 12px; white-space: nowrap; }
/* 一键踩坑区（0.8.0）：零文字实时反馈，三选一 */
.d-flag-zone { margin-top: 14px; border-top: 1px dashed var(--line); padding-top: 12px; }
.d-flag-q { font-size: 13px; color: var(--ink-soft); margin: 0 0 8px; }
.d-flag-btns { display: flex; gap: 8px; }
.d-flag-btns button {
  flex: 1; padding: 9px 4px; font-size: 13px; font-family: inherit;
  border: 1px solid rgba(177,74,63,.35); border-radius: 8px;
  background: #fdf6f4; color: #8f4038; cursor: pointer;
  transition: background .2s;
}
.d-flag-btns button:hover { background: #f9ebe7; }
.d-flag-btns button:disabled { opacity: .55; cursor: default; }

/* 游客点评（0.9.0 等级信任制；0.10.0 绿色系收敛进黛青 var(--accent)） */
.d-review-zone { margin-top: 14px; border-top: 1px dashed var(--line); padding-top: 12px; }
.d-review-loading { font-size: 13px; color: var(--ink-soft); margin: 0; }
.d-review-head { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
.d-review-head h5 { margin: 0; font-size: 14px; }
.d-review-head .d-review-score, .d-review-head .d-review-empty { margin-right: auto; }
.d-review-score { font-size: 13px; color: var(--accent); font-weight: 600; }
.d-review-empty { font-size: 13px; color: var(--ink-soft); }
.d-review-item { padding: 8px 0; border-bottom: 1px dashed var(--line); }
.d-review-list .d-review-item:last-child { border-bottom: none; }   /* 修：列表包容器内 :last-child 才命中（:last-of-type 会被表单 div 顶掉） */
.d-review-item.mine-pending { opacity: .72; }
.d-review-pending-chip {
  font-size: 11px; padding: 1px 7px; border-radius: 999px;
  background: rgba(168,173,174,.16); color: var(--ink-soft); border: 1px dashed var(--ink-faint);
}
.d-review-meta { display: flex; align-items: center; gap: 6px; margin-bottom: 4px; }
.d-review-badge {
  font-size: 11px; padding: 1px 7px; border-radius: 999px;
  background: var(--accent-soft); color: var(--accent); border: 1px solid rgba(61,107,111,.3);
}
.d-review-badge.lv2 { background: #fdf3e3; color: #9a6b1e; border-color: rgba(154,107,30,.35); }
.d-review-badge.lv3 { background: #f3ecfa; color: #6d4a9d; border-color: rgba(109,74,157,.35); }
.d-review-vote { font-size: 13px; }
.d-review-time { font-size: 12px; color: var(--ink-soft); margin-left: auto; }
.d-review-text { margin: 0; font-size: 13.5px; line-height: 1.65; word-break: break-word; }
.d-review-photos { display: flex; gap: 6px; margin-top: 6px; overflow-x: auto; }
.d-review-photos img { height: 72px; border-radius: 6px; flex: none; cursor: zoom-in; }
/* 举报：默认一个小入口，点开四选零文字 */
.d-review-acts { margin-top: 4px; min-height: 18px; }
.d-review-report {
  border: none; background: none; padding: 2px 0; cursor: pointer;
  font-size: 11.5px; color: var(--ink-faint); font-family: inherit;
}
.d-review-report:hover { color: var(--accent); }
.d-report-btns { display: flex; flex-wrap: wrap; gap: 6px; }
.d-report-btns button {
  border: 1px solid var(--line); border-radius: 999px; background: #fff;
  padding: 4px 12px; font-size: 12px; color: var(--ink-soft); cursor: pointer; font-family: inherit;
}
.d-report-btns button:hover { border-color: var(--accent); color: var(--accent); }
.d-report-btns .d-report-cancel { border-style: dashed; }
.d-report-done { font-size: 12px; color: var(--accent); }
/* 分页 / 重试 */
.d-review-more-wrap { margin-top: 8px; }
.d-review-more, .d-review-retry {
  width: 100%; padding: 8px; font-size: 13px; font-family: inherit; cursor: pointer;
  border: 1px dashed var(--line); border-radius: 8px; background: none; color: var(--ink-soft);
}
.d-review-more:hover, .d-review-retry:hover { border-color: var(--accent); color: var(--accent); }
.d-review-retry { margin-top: 6px; width: auto; padding: 6px 16px; }
/* R02：写点评移到「游客点评」标题右侧（2026-09-10） */
.d-review-write {
  width: auto; margin-top: 0; padding: 6px 12px; font-size: 12.5px; font-family: inherit;
  border: 1px dashed rgba(61,107,111,.4); border-radius: 999px;
  background: rgba(61,107,111,.05); color: var(--accent); cursor: pointer; transition: background .2s;
  white-space: nowrap;
}
.d-review-write:hover { background: var(--accent-soft); }
.d-review-form { margin-top: 10px; }
.d-rv-level {
  font-size: 12.5px; color: var(--accent); background: var(--accent-soft);
  border: 1px solid rgba(61,107,111,.25); border-radius: 8px; padding: 7px 10px; margin-bottom: 8px;
}
.d-rv-level .ico { width: 13px; height: 13px; }
.d-rv-verify {
  border: 1px solid rgba(61,107,111,.35); border-radius: 8px;
  background: rgba(61,107,111,.05); padding: 10px 12px; margin-bottom: 8px;
}
.d-rv-verify .rv-verify-tip { font-size: 12.5px; color: var(--ink-soft); margin: 0 0 8px; }
.d-rv-verify .rv-verify-tip .ico { color: var(--accent); }
.d-rv-down-tip { font-size: 12px; color: #8f4038; margin: 0 0 6px; }
.d-review-vote-row { display: flex; gap: 8px; margin-bottom: 8px; }
.d-review-vote-row button {
  flex: 1; padding: 8px 4px; font-size: 13px; font-family: inherit;
  border: 1px solid var(--line); border-radius: 8px; background: #fff;
  color: var(--ink-soft); cursor: pointer; transition: all .2s;
}
.d-review-vote-row button.on { border-color: var(--accent); color: var(--accent); background: var(--accent-soft); font-weight: 600; }
.d-review-form textarea {
  width: 100%; box-sizing: border-box; padding: 9px 10px; font-size: 13.5px; font-family: inherit;
  border: 1px solid var(--line); border-radius: 8px; resize: vertical; line-height: 1.6;
}
.d-review-count { text-align: right; font-size: 11px; color: var(--ink-soft); margin: 2px 0 6px; }
.d-review-photo-row { display: flex; align-items: center; gap: 8px; }
.d-review-photo-btn {
  font-size: 12.5px; padding: 6px 12px; border: 1px solid var(--line); border-radius: 8px;
  background: #fff; color: var(--ink-soft); cursor: pointer;
}
.d-review-photo-tip { font-size: 11px; color: var(--ink-soft); }
.d-review-thumbs { display: flex; gap: 6px; margin-top: 8px; }
.d-review-thumb { position: relative; display: inline-block; }
.d-review-thumb img { height: 56px; border-radius: 6px; display: block; }
.d-review-thumb-x {
  position: absolute; top: -6px; right: -6px; width: 20px; height: 20px;
  border: none; border-radius: 50%; background: rgba(35,41,44,.85); color: #fff;
  font-size: 11px; line-height: 1; cursor: pointer; padding: 0;
}
.d-review-submit {
  width: 100%; margin-top: 10px; padding: 10px; font-size: 14px; font-family: inherit;
  border: none; border-radius: 8px; background: var(--accent); color: #fff; cursor: pointer;
  transition: opacity .2s;
}
.d-review-submit:disabled { opacity: .55; cursor: default; }

/* 赛事演出（0.11.0 event 类型）：日期+场馆是首要信息 */
.event-date { font-weight: 600; color: var(--accent); }

/* 待选池尾部「添加我的发现」 */
.ugc-add-btn {
  display: block; width: 100%; margin: 14px 0 4px; padding: 12px;
  border: 1.5px dashed rgba(61,107,111,.45); border-radius: var(--radius);
  background: rgba(233,240,240,.4); color: var(--accent);
  font-size: 14px; cursor: pointer; font-family: inherit;
  transition: background .2s;
}
.ugc-add-btn:hover { background: var(--accent-soft); }

/* UGC 弹窗 */
.ugc-modal { max-width: 440px; }
.ugc-tip { font-size: 13px; color: var(--ink-soft); margin: 8px 0 14px; }
.ugc-form { display: flex; flex-direction: column; gap: 10px; }
.ugc-form input, .ugc-form select, .ugc-form textarea {
  border: 1px solid var(--line); border-radius: 8px; padding: 9px 12px;
  font-size: 14px; font-family: inherit; background: #fff; color: var(--ink);
}
.ugc-form textarea { resize: vertical; }
.ugc-row { display: flex; gap: 10px; }
.ugc-row select { flex: 0 0 110px; }
.ugc-row input { flex: 1; }
#ugc-submit {
  background: var(--accent); color: #fff; border: none; border-radius: 8px;
  padding: 11px; font-size: 15px; cursor: pointer; font-family: inherit;
}
#ugc-submit:disabled { opacity: .5; cursor: default; }

/* 详情弹窗：UGC 提示条 + 纠错表单 */
.d-ugc-note {
  font-size: 13px; color: #9a6b1f; background: #fdf3e3;
  border: 1px solid rgba(201,180,137,.5); border-radius: 8px;
  padding: 8px 12px; margin: 10px 0;
}
.d-edit-link {
  display: inline-block; margin: 10px 0 0; font-size: 13px; color: var(--accent);
  cursor: pointer; text-decoration: underline dotted;
}
.d-edit-box { margin-top: 10px; border-top: 1px dashed var(--line); padding-top: 12px; }
.d-edit-box h5 { font-size: 14px; color: var(--ink); margin-bottom: 8px; }
.d-edit-row { display: flex; gap: 8px; }
.d-edit-row select, .d-edit-row input {
  border: 1px solid var(--line); border-radius: 8px; padding: 7px 10px;
  font-size: 13px; font-family: inherit; background: #fff;
}
.d-edit-row input { flex: 1; }
.d-edit-row button {
  background: var(--accent); color: #fff; border: none; border-radius: 8px;
  padding: 7px 14px; font-size: 13px; cursor: pointer; font-family: inherit;
}
.d-edit-tip { font-size: 12px; color: var(--ink-faint); margin-top: 6px; }

/* 服务区空态 + 商家入驻卡 */
.svc-empty {
  text-align: center; color: var(--ink-soft); padding: 28px 16px;
  border: 1px dashed var(--line); border-radius: var(--radius);
  background: rgba(249,247,241,.6);
}
.svc-merchant {
  margin-top: 18px; border: 1.5px dashed rgba(61,107,111,.4);
  border-radius: var(--radius); padding: 16px; background: rgba(233,240,240,.35);
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
}
.svc-merchant .m-ico { color: var(--accent); width: 30px; height: 30px; flex: none; }
.svc-merchant .m-ico svg { width: 100%; height: 100%; }
.svc-merchant p { flex: 1; min-width: 200px; font-size: 14px; color: var(--ink-soft); margin: 0; }
.svc-merchant p b { color: var(--ink); display: block; font-size: 15px; }
.merchant-apply {
  background: var(--accent); color: #fff; border: none; border-radius: 8px;
  padding: 9px 18px; font-size: 14px; cursor: pointer; font-family: inherit;
}

/* 行程区分段：我的行程 / 热门行程 / 收藏夹 / 定制我的行程（0.15.0 四视图） */
.iti-seg {
  display: flex; gap: 0; margin: 12px 0 14px;
  border: 1px solid var(--line); border-radius: 10px; overflow: hidden;
  background: var(--paper-warm); width: 100%;   /* 四视图等宽（移动/桌面一致） */
}
.iti-seg button {
  flex: 1; text-align: center;
  border: none; background: transparent; padding: 8px 6px; font-size: 14px;
  color: var(--ink-soft); cursor: pointer; font-family: inherit;
  transition: all .2s;
}
.iti-seg button.on { background: var(--accent); color: #fff; }

/* 热门行程 */
.hot-filters { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; margin-bottom: 14px; }
.hot-filters select {
  border: 1px solid var(--line); border-radius: 8px; padding: 6px 10px;
  font-size: 13px; font-family: inherit; background: #fff; color: var(--ink);
}
.hot-crowds { display: flex; gap: 6px; flex-wrap: wrap; }
.hot-crowds button {
  border: 1px solid var(--line); border-radius: 999px; background: #fff;
  padding: 4px 12px; font-size: 12px; color: var(--ink-soft); cursor: pointer;
  font-family: inherit; transition: all .15s;
}
.hot-crowds button.on { background: var(--accent); border-color: var(--accent); color: #fff; }
.hot-sec { margin-bottom: 22px; }
.hot-sec h4 {
  font-size: 15px; color: var(--ink); margin-bottom: 10px;
  display: flex; align-items: center; gap: 6px;
}
.hot-sec h4 .ico { color: var(--accent); }
.hot-card {
  background: #fff; border: 1px solid var(--line); border-radius: var(--radius);
  padding: 14px 16px; margin-bottom: 10px; box-shadow: var(--shadow-2);
}
.hot-card-head { display: flex; align-items: center; gap: 8px; margin-bottom: 4px; }
.hot-title { font-size: 16px; font-weight: 600; color: var(--ink); }
.hot-fresh {
  font-size: 11px; padding: 2px 8px; border-radius: 999px;
  background: #fdf3e3; color: #9a6b1f; border: 1px solid rgba(201,180,137,.6);
}
.hot-summary { font-size: 13px; color: var(--ink-soft); margin: 4px 0 8px; }
.hot-meta {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  font-size: 12px; color: var(--ink-soft); margin-bottom: 10px;
}
.hot-tag {
  padding: 2px 8px; border-radius: 999px; background: var(--accent-soft);
  color: var(--accent);
}
.hot-uses { display: inline-flex; align-items: center; gap: 3px; }
.hot-use {
  width: 100%; background: var(--accent); color: #fff; border: none;
  border-radius: 8px; padding: 9px; font-size: 14px; cursor: pointer;
  font-family: inherit;
}
.hot-use:disabled { opacity: .5; cursor: default; }
.hot-empty { text-align: center; padding: 40px 16px; color: var(--ink-soft); }
.hot-empty-sub { font-size: 13px; color: var(--ink-faint); margin-top: 6px; }
.hot-loading { text-align: center; color: var(--ink-faint); padding: 30px; }

/* 行程码弹窗：公开申请区 + 分享图 */
.share-pub {
  margin-top: 16px; border-top: 1px dashed var(--line); padding-top: 14px;
}
.share-pub h5 { font-size: 14px; color: var(--ink); display: flex; align-items: center; gap: 5px; }
.share-pub h5 .ico { color: var(--accent); }
.share-pub-tip { font-size: 12px; color: var(--ink-soft); margin: 6px 0 10px; }
.share-pub-row { display: flex; gap: 8px; }
.share-pub-row input {
  flex: 1; border: 1px solid var(--line); border-radius: 8px; padding: 8px 12px;
  font-size: 14px; font-family: inherit; background: #fff;
}
.share-pub-row button {
  background: var(--accent); color: #fff; border: none; border-radius: 8px;
  padding: 8px 16px; font-size: 14px; cursor: pointer; font-family: inherit;
  white-space: nowrap;
}
.share-pub-row button:disabled { opacity: .5; cursor: default; }

/* 手机端适配（P2/3.3：900 并入主断点 980，消除 900-980px 错乱带） */
@media (max-width: 980px) {
  .iti-seg { width: 100%; }
  /* 四个 seg 等宽排布：字号收小保证「定制我的行程」6 字不换行 */
  .iti-seg button { flex: 1; text-align: center; font-size: 12.5px; padding: 9px 2px; white-space: nowrap; }
  .share-pub-row { flex-direction: column; }
  .ugc-row { flex-direction: column; }
  .ugc-row select { flex: none; }
}

/* ================= 0.10.0：点评改版 / 一键导航 / 行程状态机 / 分享图 / 收口 ================= */

/* 启动失败重试（boot 兜底渲染在待选池里） */
.boot-retry {
  display: block; width: 100%; margin: 30px 0; padding: 14px;
  border: 1.5px dashed rgba(61,107,111,.45); border-radius: var(--radius);
  background: rgba(233,240,240,.4); color: var(--accent);
  font-size: 14px; cursor: pointer; font-family: inherit;
}

/* 卡片口碑一句话（待选卡 meta 行） */
.item-review-brief { color: var(--accent); white-space: nowrap; }

/* 一键导航：详情弹窗主按钮样式（在「加入行程」之上） */
.d-nav {
  display: flex; align-items: center; justify-content: center; gap: 6px;
  margin-top: 14px; padding: 11px; border-radius: 10px;
  border: 1px solid var(--accent); color: var(--accent); background: rgba(61,107,111,.06);
  font-size: 14.5px; text-decoration: none;
}
.d-nav:hover { background: var(--accent); color: #fff; }
.d-nav .ico { width: 16px; height: 16px; }
/* 天栏卡片内联小入口（游玩中放大突出，见下） */
.card-nav {
  display: inline-flex; align-items: center; gap: 3px; margin-left: 6px;
  color: var(--accent); font-size: 12px; text-decoration: none; white-space: nowrap;
}
.card-nav .ico { width: 13px; height: 13px; }
.card-nav:hover { text-decoration: underline; }

/* 行程状态机按钮（行程头部，行程码按钮左侧） */
.phase-btn {
  display: inline-flex; align-items: center; gap: 5px;
  border: 1px solid var(--accent); background: rgba(61,107,111,.06); color: var(--accent);
  border-radius: 999px; padding: 6px 14px; font-size: 12.5px; cursor: pointer; font-family: inherit;
  position: absolute; top: 16px; right: 118px; /* 与分享按钮各占固定工具位 */
  margin-right: 0;
}
.phase-btn .ico { width: 14px; height: 14px; }
.phase-btn:hover { background: var(--accent); color: #fff; }
.phase-btn.playing { background: var(--paper-warm); border-color: var(--line); color: var(--ink-soft); }
/* 0 卡灰显（P1-3）：≥1 张卡才点亮 */
.phase-btn:disabled {
  border-color: var(--line); background: var(--paper-warm); color: var(--ink-faint);
  cursor: not-allowed;
}

/* 热门行程卡：用这个行程 + 分享 一行两键 */
.hot-card-btns { display: flex; gap: 8px; }
.hot-card-btns .hot-use { flex: 1; }
.hot-share {
  border: 1px solid var(--accent); background: #fff; color: var(--accent);
  border-radius: 8px; padding: 9px 16px; font-size: 14px; cursor: pointer; font-family: inherit;
  white-space: nowrap;
}
.hot-share:active, .hot-share:hover { background: var(--accent); color: #fff; }

/* 热门卡 ♡ 收藏（卡头右侧小字钮；已收藏 ♥ 变朱红）+ 收藏夹存档时间戳 */
.hot-fav {
  margin-left: auto; border: none; background: none; cursor: pointer;
  font-size: 12.5px; color: var(--ink-soft); font-family: inherit; white-space: nowrap;
  padding: 2px 4px;
}
.hot-fav.on { color: #b14a3f; font-weight: 600; }
span.hot-fav.on { cursor: default; }   /* 收藏夹里的已收藏标（非按钮） */
.fav-saved { margin-left: auto; font-size: 11.5px; color: var(--ink-faint); white-space: nowrap; }

/* 行程区头部小号文字按钮行：♡ 收藏当前行程 / 清空（独占一行，避开绝对定位的行程码按钮；清空仅编辑态显示） */
.iti-tools { flex-basis: 100%; display: flex; align-items: center; justify-content: space-between; }
.iti-tool { font-size: 12.5px; }
.iti-tool:disabled { color: var(--ink-faint); text-decoration: none; cursor: not-allowed; }
body[data-phase="playing"] #clear-trip-btn { display: none; }

/* 导航选择层：多地图大按钮选项（移动端底部抽屉复用全局 sheet 样式；鸿蒙微信仍两选项降级） */
.nav-modal { max-width: 420px; }
.nav-tip { font-size: 13px; color: var(--ink-soft); margin: 4px 0 12px; }
.nav-opt {
  display: block; width: 100%; text-align: center; text-decoration: none;
  border: 1px solid var(--accent); background: rgba(61,107,111,.06); color: var(--accent);
  border-radius: 10px; padding: 12px; font-size: 14.5px; cursor: pointer; font-family: inherit;
  margin-bottom: 10px;
}
.nav-opt:active, .nav-opt:hover { background: var(--accent); color: #fff; }
/* 选项两行式：地图名 + 一行小字提示（如「已装 App 直接打开，没装走网页」） */
.nav-opt-name { display: block; }
.nav-opt-sub { display: block; font-size: 12px; font-weight: normal; opacity: .72; margin-top: 3px; }

/* 分享弹窗底部内联授权引导（不再弹卡盖行程码） */
.share-consent-line {
  margin-top: 14px; border-top: 1px dashed var(--line); padding-top: 10px;
  font-size: 12px; color: var(--ink-soft); text-align: center;
  display: flex; align-items: center; justify-content: center; gap: 5px; flex-wrap: wrap;
}
.share-consent-line .ico { width: 13px; height: 13px; color: var(--accent); }

/* 点评图 lightbox：全屏遮罩+原图，点任意处关闭 */
.lightbox {
  position: fixed; inset: 0; z-index: 130; cursor: zoom-out;
  background: rgba(20,24,26,.92); display: flex; align-items: center; justify-content: center;
  padding: 20px;
}
.lightbox[hidden] { display: none !important; }
.lightbox img { max-width: 96vw; max-height: 92vh; border-radius: 8px; }

/* 游玩中：卡片大字号、导航放大突出。P1-2 解锁编辑后——待选池不再整池隐藏：
   移动端待选 tab 保留（改名「＋加点」，JS 处理），桌面端左栏折叠为「临时加一个点」展开条；
   行程卡的删除/拖动保持可用（重排是游玩中最高频的编辑），只收起草向的添加条/加到这/UGC 入口 */
body[data-phase="playing"] .add-bar,
body[data-phase="playing"] .day-target,
body[data-phase="playing"] .ugc-add-btn,
body[data-phase="playing"] .stay-clear { display: none; }
body[data-phase="playing"] .pool .item-card { cursor: default; }   /* 待选卡游玩中不出拖拽 */
body[data-phase="playing"] .day-card .item-name { font-size: 17px; }
body[data-phase="playing"] .day-card .item-summary { font-size: 14px; }
body[data-phase="playing"] .card-nav {
  display: flex; justify-content: center; gap: 6px; margin: 8px 0 0; padding: 10px;
  background: var(--accent); color: #fff; border-radius: 8px;
  font-size: 15px; font-weight: 600; text-decoration: none;
}
body[data-phase="playing"] .card-nav .ico { width: 16px; height: 16px; }
body[data-phase="playing"] .card-nav:hover { text-decoration: none; background: #355a5e; }

/* 游玩中待选卡操作行：「加到今天/明天」两键（黛青描边，与主操作同色） */
.item-add.playing-add { border-color: var(--accent); color: var(--accent); background: rgba(61,107,111,.06); }
.item-add.playing-add:active, .item-add.playing-add:hover { background: var(--accent); color: #fff; }

/* 桌面端游玩中：左栏待选折叠为一根展开条（.pool-peek），点击展开还原正常待选池 */
.pool-peek { display: none; }
@media (min-width: 981px) {
  body[data-phase="playing"] .pool:not(.peek-open) { padding: 10px; max-height: none; }
  body[data-phase="playing"] .pool:not(.peek-open) > :not(.pool-peek) { display: none; }
  body[data-phase="playing"] .pool-peek {
    display: block; width: 100%; border: 1px dashed var(--wash-qing); border-radius: 10px;
    background: rgba(127,163,168,.10); color: var(--accent);
    font-size: 13.5px; padding: 12px; cursor: pointer; font-family: inherit;
  }
  body[data-phase="playing"] .pool-peek:hover { background: rgba(127,163,168,.22); }
}

@media (max-width: 980px) {
  /* 游玩中：待选 tab 保留并改名「＋加点」（P1-2，JS 改文案），不再整 tab 隐藏 */

  /* iOS 输入框统一 16px：小于 16px 聚焦会触发整页缩放 */
  input[type="text"], input[type="tel"], input[type="date"], input[type="time"],
  input:not([type]), textarea, select { font-size: 16px; }

  /* 触控目标 ≥ 40px：点评区/踩坑/弹窗关闭 */
  .modal-close { width: 40px; height: 40px; }
  .d-flag-btns button { min-height: 40px; }
  .d-review-vote-row button,
  .d-review-write, .d-review-submit, .d-review-more { min-height: 40px; }
  .d-review-report { min-height: 40px; padding: 8px 0; }
  .d-report-btns button { min-height: 40px; padding: 8px 14px; }
  .d-review-photo-btn { min-height: 40px; display: inline-flex; align-items: center; }
  .d-review-retry { min-height: 40px; }
}

/* 出行指南点位（0.11.2）：可点导航的小芯片 */
.tg-spots { display: flex; flex-wrap: wrap; gap: 6px; margin: 6px 0 2px; }
.tg-spot {
  font-size: 12px; padding: 5px 10px; border: 1px solid var(--line); border-radius: 999px;
  color: var(--accent); text-decoration: none; background: #fff;
}
.tg-spot:active { background: var(--accent-soft, #eef4f3); }

/* ================= P0-1：首屏骨架 / 移动迷你品牌栏 / 待选空态 ================= */

/* 首屏骨架：boot 拉数期间整页占位（fixed 覆盖，宣纸底色与 body 一致，撤下无跳变），
   bootCore 完成后由 JS 移除；失败时原位换成整页错误卡 */
#boot-skeleton {
  position: fixed; inset: 0; z-index: 200;
  background: var(--paper);
  display: flex; flex-direction: column;
}
.sk-block {
  display: block; background: rgba(47,53,56,.09); border-radius: 8px;
  animation: sk-breath 1.5s ease-in-out infinite;
}
@keyframes sk-breath { 0%, 100% { opacity: .45; } 50% { opacity: 1; } }
.sk-mini { display: none; }   /* 桌面骨架不出迷你栏 */
.sk-wrap { flex: 1; width: 100%; max-width: 1280px; margin: 0 auto; padding: 18px 20px; }
.sk-config { height: 46px; border-radius: var(--radius); }
.sk-body { margin-top: 14px; }
.sk-cards { display: flex; flex-direction: column; gap: 12px; }
.sk-card {
  background: rgba(255,255,255,.85); border: 1px solid var(--line);
  border-radius: var(--radius); padding: 14px;
}
.sk-l1 { width: 42%; height: 15px; }
.sk-l2 { width: 68%; height: 11px; margin-top: 9px; }
.sk-l3 { width: 88%; height: 11px; margin-top: 7px; }
.sk-side { display: none; }
.sk-tabbar { display: none; }
@media (min-width: 981px) {
  /* 桌面骨架对应真实双栏：左 380px 待选列 + 右行程大块 */
  .sk-body { display: grid; grid-template-columns: 380px 1fr; gap: 18px; }
  .sk-side { display: block; min-height: 280px; border-radius: var(--radius); }
}
@media (max-width: 980px) {
  .sk-mini {
    display: flex; align-items: center;
    height: 36px; padding: 0 14px;
    background: rgba(250,248,242,.97); border-bottom: 1px solid var(--line);
  }
  .sk-brand, .mb-name {
    font-family: "Kaiti SC", "STKaiti", "KaiTi", "BiauKai", serif;
    font-size: 15px; letter-spacing: 2px; font-weight: 700; color: var(--ink);
  }
  .sk-wrap { padding: 10px 14px; }
  .sk-tabbar {
    display: flex; gap: 8px;
    padding: 10px 24px calc(10px + env(safe-area-inset-bottom));
    background: rgba(253,252,248,.97); border-top: 1px solid var(--line);
  }
  .sk-tabbar .sk-block { flex: 1; height: 32px; border-radius: 10px; }
}

/* boot 失败：骨架位整页错误卡（按钮复用 .boot-retry 样式） */
.boot-error { margin: auto; max-width: 420px; padding: 30px 24px; text-align: center; }
.boot-error-title { font-size: 17px; font-weight: 600; color: var(--ink); }
.boot-error-desc { margin-top: 8px; font-size: 13.5px; color: var(--ink-soft); }
.boot-error-msg { font-size: 12px; color: var(--ink-faint); }

/* 移动端迷你品牌栏（P0-1）：≤980px 在 待选/行程/服务 tab 顶部显示，只放品牌名；
   指南 tab 保持完整大 header（不出迷你栏）；桌面端不变 */
.mini-brand { display: none; }
@media (max-width: 980px) {
  .mini-brand {
    display: flex; align-items: center;
    height: 36px; padding: 0 14px;
    background: rgba(250,248,242,.97); border-bottom: 1px solid var(--line);
  }
  body[data-mtab="guide"] .mini-brand { display: none; }
}

/* 待选池空态（P0-1）：分类×区域筛选无结果时给反馈 + 并排两个动作 */
.pool-empty {
  border: 1px dashed var(--line); border-radius: var(--radius);
  background: rgba(255,255,255,.6); padding: 26px 16px; text-align: center;
}
.pool-empty-text { font-size: 13.5px; color: var(--ink-soft); }
.pool-empty-btns { display: flex; gap: 10px; justify-content: center; margin-top: 12px; }
.pool-empty-btns button {
  min-height: 40px; padding: 8px 16px; border-radius: 999px;
  font-size: 13px; cursor: pointer; font-family: inherit;
}
.pe-clear { border: 1px solid var(--line); background: #fff; color: var(--ink-soft); }
.pe-clear:hover { border-color: var(--wash-qing); color: var(--ink); }
.pe-ugc { border: 1px solid var(--accent); background: rgba(61,107,111,.06); color: var(--accent); }
.pe-ugc:hover { background: var(--accent); color: #fff; }

/* ================= P1-1：弹窗体系重构（移动端底部抽屉 + 行程码弹窗拆分） ================= */

/* 抽屉抓手条：仅移动端显示（桌面居中卡不变）；同一套 DOM，JS 在抓手上绑下滑关闭 */
.sheet-grab { display: none; }

@media (max-width: 980px) {
  /* 弹层一律底部抽屉：遮罩点上方空白关闭；抽屉内部滚动（.modal-body 本就 overflow-y:auto） */
  .modal-mask { align-items: flex-end; padding: 0; }
  .modal {
    max-width: none; max-height: 90vh;
    border-radius: 16px 16px 0 0;
    animation: sheet-up .22s ease;
  }
  @keyframes sheet-up { from { transform: translateY(48px); opacity: .6; } to { transform: none; opacity: 1; } }
  .sheet-grab {
    display: block; flex: none; padding: 9px 0 5px;
    touch-action: none; cursor: grab;
  }
  .sheet-grab::before {
    content: ""; display: block; width: 38px; height: 4px; margin: 0 auto;
    border-radius: 4px; background: rgba(43,52,54,.22);
  }
  /* 内容较短的弹窗：自适应高度，封顶 70vh（详情/分享撑满到 90vh 上限） */
  .svc-modal, .ugc-modal, .nav-modal { max-height: 70vh; }
  .modal-body { padding-bottom: calc(20px + env(safe-area-inset-bottom)); }
}

/* 分享弹层一级：低频入口折叠为一行小字（渐进披露，4.6） */
.share-open-toggle, .share-more-toggle {
  display: block; width: 100%; border: none; background: none; cursor: pointer;
  font-size: 12.5px; color: var(--ink-soft); text-align: center;
  padding: 6px 0; font-family: inherit;
}
.share-open-toggle:hover, .share-more-toggle:hover { color: var(--accent); }
.share-open-row { margin-top: 8px; }
/* .share-open-row 的 display:flex 会压过 UA 的 [hidden]，折叠必须显式声明 */
.share-open-row[hidden], .share-more-body[hidden] { display: none !important; }
/* 同类既有问题：.ugc-row 的 flex 也压过 [hidden]，导致非赛事类型误显示日期/场馆行 */
.ugc-row[hidden] { display: none !important; }
.share-gen-btns { margin-top: 8px; }
.share-more-body { padding-top: 6px; }

/* 分享图/路线图二级全屏预览：不再 append 在弹窗里；图 + 长按保存提示 + 返回/关闭 */
.share-preview {
  position: fixed; inset: 0; z-index: 125;   /* 低于 lightbox(130)，高于弹窗(90)与 toast(120) */
  background: rgba(20,24,26,.94);
  display: flex; flex-direction: column;
}
.share-preview[hidden] { display: none !important; }
.sp-top {
  display: flex; justify-content: space-between; align-items: center;
  padding: calc(10px + env(safe-area-inset-top)) 14px 8px;
}
.sp-top button {
  border: none; background: rgba(255,255,255,.12); color: #fff;
  min-width: 40px; min-height: 40px; border-radius: 999px; padding: 8px 16px;
  font-size: 14px; cursor: pointer; font-family: inherit;
}
.sp-top button:hover { background: rgba(255,255,255,.22); }
.sp-stage {
  flex: 1; overflow-y: auto; display: flex; align-items: flex-start; justify-content: center;
  padding: 4px 16px 10px;
}
.sp-stage img { width: min(100%, 520px); border-radius: 10px; box-shadow: var(--shadow-2); }
.sp-tip {
  margin: 0; padding: 8px 0 calc(14px + env(safe-area-inset-bottom));
  color: rgba(255,255,255,.72); font-size: 12.5px; text-align: center;
}

/* ================= P1-3：桌面天栏网格 + 移动端确定行程吸底 ================= */

/* ≥1280px：天栏横滚改自适应网格，一行最多 3 列（右栏可用宽约 840px，260px 列宽下限天然封顶 3 列）；
   <1280px 保持横向滚动 flex 不变 */
@media (min-width: 1280px) {
  .days { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); overflow-x: visible; align-items: start; }
  .day-col { flex: none; min-width: 0; }
}

/* 移动端行程 tab 主操作吸底（P1-3）：编辑态=确定行程（0 卡灰显「先加几个想去的」），
   游玩未开始=开始行程；游玩中 phase-btn 变「重新编辑」退回行内，不抢主按钮位。
   与 tabbar(80) 错层取 85；授权浮卡在场时由 JS 设 --sticky-extra 抬高，上下错开不重叠 */
@media (max-width: 980px) {
  body[data-mtab="iti"][data-phase="editing"] .phase-btn,
  body[data-mtab="iti"][data-phase="playing"] #live-start-btn {
    position: fixed; top: auto; left: 14px; right: 14px;
    bottom: calc(72px + env(safe-area-inset-bottom) + var(--sticky-extra, 0px));
    z-index: 85;
    display: flex; justify-content: center; align-items: center; gap: 6px;
    height: 46px; min-height: 46px; max-height: 46px;
    padding: 13px 18px; border-radius: 12px; border: none;
    background: var(--accent); color: #fff; font-size: 15px; font-weight: 600;
    font-family: inherit; cursor: pointer;
    box-shadow: var(--shadow-2);
  }
  body[data-mtab="iti"][data-phase="editing"] .phase-btn:disabled {
    background: var(--paper-warm); color: var(--ink-faint);
    border: 1px dashed var(--line); box-shadow: none; font-weight: 400;
  }
  body[data-mtab="iti"] { padding-bottom: 140px; }   /* 吸底主按钮 + tabbar 都让位 */
  .phase-btn { margin-right: 0; }
}

/* ================= 0.15.0：行程模块四视图 + 只读查看器 ================= */

/* 「我的行程」视图：正在编辑的行程卡（黛青淡底区别于存档卡） */
.editing-card { background: var(--accent-soft); border-color: rgba(61,107,111,.4); }

/* 只读查看器：逐天明细（移动端底部抽屉/桌面居中卡由 P1-1 弹窗体系通用规则承担） */
.tv-day { margin-top: 14px; }
.tv-day h4 { font-size: 14.5px; color: var(--ink); margin-bottom: 2px; }
.tv-item {
  display: flex; align-items: baseline; gap: 8px;
  padding: 6px 0; border-bottom: 1px dashed var(--line);
  font-size: 13.5px; color: var(--ink);
}
.tv-item:last-child { border-bottom: none; }
.tv-time { flex: none; width: 92px; font-size: 12px; color: var(--ink-soft); }
.tv-main { flex: 1; display: flex; align-items: baseline; justify-content: space-between; gap: 8px; flex-wrap: wrap; }
.tv-meta { font-size: 12px; color: var(--ink-faint); white-space: nowrap; }
.tv-stay .tv-name { color: var(--ink-soft); }
.tv-stay .ico { width: 13px; height: 13px; }
.tv-transit { padding: 2px 0 2px 100px; font-size: 12px; color: var(--ink-faint); }
.tv-off { color: var(--ink-faint); font-size: 13px; }
.tv-total {
  margin-top: 16px; padding: 10px 12px; border-radius: 10px;
  background: var(--paper-warm); font-size: 13.5px; color: var(--ink-soft);
}
.tv-total b { color: var(--ink); }
.tv-total small { color: var(--ink-faint); }
.tv-cost-detail {
  margin-top: 8px; padding: 0 12px 10px; border: 1px solid var(--line);
  border-radius: 10px; background: var(--paper);
  font-size: 13px; color: var(--ink-soft);
}
.tv-cost-detail summary { padding: 9px 0; cursor: pointer; color: var(--ink); font-weight: 600; }
.tv-cost-day { padding: 4px 0 8px; border-top: 1px dashed var(--line); }
.tv-cost-row { display: flex; justify-content: space-between; gap: 12px; padding-top: 5px; }
.tv-cost-row b { color: var(--ink); white-space: nowrap; }
.tv-cost-estimate { color: var(--accent); }
.tv-cost-empty { padding: 5px 0; color: var(--ink-faint); }
.tv-actions { display: flex; gap: 8px; margin-top: 14px; }
.tv-actions .hot-use { flex: 1; }


/* ---------- 纠错/反馈（R03，2026-09-10）：详情页与行程进行中两处入口 ---------- */
.d-nav-inline { margin-left: 6px; color: var(--accent); font-size: 12.5px; text-decoration: none; white-space: nowrap; }
.d-nav-inline .ico { width: 13px; height: 13px; vertical-align: -2px; }
.d-feedback-link { margin-left: 6px; color: var(--accent); font-size: 12.5px; cursor: pointer; text-decoration: underline dotted; }
.d-feedback-btn {
  width: 100%; margin-top: 14px; padding: 10px; font-size: 13.5px; font-family: inherit;
  border: 1px dashed rgba(177,74,63,.45); border-radius: 8px;
  background: #fdf6f4; color: #8f4038; cursor: pointer;
}
.d-feedback-btn:hover { background: #f9ebe7; }
.live-feedback-btn {
  padding: 11px 14px; border: 1px dashed rgba(177,74,63,.5); border-radius: 8px;
  background: #fdf6f4; color: #8f4038; font-size: 13.5px; cursor: pointer; font-family: inherit;
}
.feedback-modal { max-width: 460px; }
.fb-hint { font-size: 12.5px; color: var(--ink-soft); margin: 10px 0 12px; line-height: 1.6; }
.fb-opts { display: flex; flex-wrap: wrap; gap: 8px; }
.fb-opt {
  display: inline-flex; align-items: center; gap: 6px; padding: 8px 12px;
  border: 1px solid var(--line); border-radius: 999px; font-size: 13.5px; cursor: pointer; background: #fff;
}
.fb-opt:has(input:checked) { border-color: var(--accent); background: var(--accent-soft); color: var(--accent); }
.fb-opt input { accent-color: var(--accent); }
.fb-extra { margin-top: 12px; padding: 10px 12px; border: 1px dashed var(--line); border-radius: 10px; background: #faf9f6; }
.fb-extra label, .fb-note-label { display: block; font-size: 12.5px; color: var(--ink-soft); margin-bottom: 8px; }
.fb-extra label:last-child { margin-bottom: 0; }
.fb-extra select, .fb-extra input, .fb-extra textarea, .fb-note-label textarea {
  display: block; width: 100%; margin-top: 5px; padding: 8px 10px; font-size: 13.5px;
  font-family: inherit; border: 1px solid var(--line); border-radius: 8px; background: #fff; color: var(--ink);
}
.fb-note-label { margin-top: 12px; }
.fb-submit {
  width: 100%; margin-top: 14px; padding: 11px; font-size: 15px; font-family: inherit; letter-spacing: 1px;
  border: none; border-radius: 10px; background: var(--accent); color: #fff; cursor: pointer;
}
.fb-submit:disabled { opacity: .6; cursor: default; }
