/* ============ Base ============ */
* { box-sizing: border-box; -webkit-tap-highlight-color: transparent; }
html, body { margin: 0; padding: 0; }
html { -webkit-text-size-adjust: 100%; }
body {
  font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Segoe UI',
               'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei',
               'Noto Sans CJK SC', sans-serif;
  color: #1e3a5f;
  background: #eaf3fa;
  min-height: 100vh;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: hidden;
  font-size: 15px;
  line-height: 1.55;
}

/* ============ Background · 冰雪 + 苔原 ============ */
.bg-gradient {
  position: fixed; inset: 0; z-index: -3;
  background:
    radial-gradient(ellipse 80% 60% at 12% -5%, rgba(255, 255, 255, 0.85), transparent 65%),
    radial-gradient(ellipse 70% 55% at 85% 25%, rgba(168, 200, 179, 0.30), transparent 65%),
    radial-gradient(ellipse 60% 45% at 95% 80%, rgba(126, 167, 212, 0.22), transparent 65%),
    linear-gradient(180deg, #f6fbfe 0%, #ecf4fb 38%, #e3eef7 70%, #dde9f3 100%);
}

/* 极光层换成"冰雾 + 苔原" —— 蓝绿淡淡飘动 */
.bg-aurora {
  position: fixed; inset: -10% -10% auto -10%; height: 60vh; z-index: -2;
  background:
    conic-gradient(from 200deg at 35% 30%,
      rgba(168, 200, 179, 0.0) 0deg,
      rgba(180, 215, 195, 0.32) 60deg,
      rgba(168, 200, 220, 0.30) 140deg,
      rgba(195, 220, 232, 0.28) 220deg,
      rgba(168, 200, 179, 0.0) 360deg);
  filter: blur(120px);
  opacity: 0.55;
  animation: drift 28s ease-in-out infinite alternate;
  pointer-events: none;
}
@keyframes drift {
  0% { transform: translateX(-2%) translateY(-1%) rotate(0deg); }
  100% { transform: translateX(2%) translateY(1%) rotate(5deg); }
}

/* 雪粒噪点 */
.bg-noise {
  position: fixed; inset: 0; z-index: -1;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='240' height='240'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.12  0 0 0 0 0.22  0 0 0 0 0.37  0 0 0 0.05 0'/></filter><rect width='240' height='240' filter='url(%23n)'/></svg>");
  opacity: 0.45;
  pointer-events: none;
  mix-blend-mode: multiply;
}

/* ============ Hero ============ */
.hero {
  max-width: 1180px;
  margin: 48px auto 28px;
  padding: 0 20px;
  text-align: center;
}
.hero-tag {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
  font-size: 11px;
  letter-spacing: 0.30em;
  color: #4d6580;
  padding: 6px 14px;
  border: 1px solid rgba(60, 100, 150, 0.18);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.65);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  margin-bottom: 22px;
  box-shadow: 0 2px 10px -4px rgba(60, 100, 150, 0.12);
}
.hero-tag::before { content: '🍁'; font-size: 12px; }
.hero-title {
  font-size: clamp(34px, 6.5vw, 68px);
  font-weight: 700;
  margin: 0 0 12px;
  line-height: 1.1;
  letter-spacing: -0.01em;
  color: #1e3a5f;
}
.hero-accent {
  background: linear-gradient(135deg, #3b6da8 0%, #6c9b7e 60%, #9ec5d8 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  font-style: italic;
}
.hero-sub {
  font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
  font-size: 12px;
  color: #6f8198;
  letter-spacing: 0.06em;
  margin-bottom: 24px;
}
.hero-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  justify-content: center;
  margin-bottom: 14px;
}
.hero-pill {
  font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
  font-size: 12px;
  color: #2c4868;
  padding: 7px 14px;
  border: 1px solid rgba(60, 100, 150, 0.18);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.60);
  box-shadow: 0 2px 8px -4px rgba(60, 100, 150, 0.12);
}
.hero-tags { display: flex; flex-wrap: wrap; gap: 6px; justify-content: center; }
.hero-tags span {
  font-size: 11px;
  padding: 4px 10px;
  border-radius: 999px;
  background: rgba(168, 200, 179, 0.20);
  color: #3a6a4a;
  border: 1px solid rgba(140, 180, 155, 0.32);
}

/* ============ 主导航 · 左上角浮动小按钮 ============ */
.navbar {
  position: fixed;
  top: 14px;
  left: 14px;
  z-index: 50;
  width: auto;
  margin: 0;
  padding: 0;
}
.nav-toggle {
  width: 44px;
  height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0;
  padding: 0;
  font-family: inherit;
  color: #1e3a5f;
  background: rgba(255, 255, 255, 0.92);
  backdrop-filter: blur(20px) saturate(1.2);
  -webkit-backdrop-filter: blur(20px) saturate(1.2);
  border: 1px solid rgba(60, 100, 150, 0.20);
  border-radius: 12px;
  cursor: pointer;
  transition: all .2s;
  box-shadow: 0 6px 20px -6px rgba(60, 100, 150, 0.32);
  position: relative;
}
.nav-toggle:hover {
  border-color: rgba(60, 100, 150, 0.42);
  box-shadow: 0 8px 22px -6px rgba(60, 100, 150, 0.45);
}

/* 汉堡图标:三横,展开时变 X */
.nav-burger {
  width: 18px;
  height: 14px;
  position: relative;
  display: inline-block;
}
.nav-burger span {
  position: absolute;
  left: 0; right: 0;
  height: 2px;
  background: #1e3a5f;
  border-radius: 2px;
  transition: transform .25s cubic-bezier(.4,0,.2,1), opacity .15s, top .25s;
}
.nav-burger span:nth-child(1) { top: 1px; }
.nav-burger span:nth-child(2) { top: 6px; }
.nav-burger span:nth-child(3) { top: 11px; }
.navbar.nav-open .nav-burger span:nth-child(1) { top: 6px; transform: rotate(45deg); }
.navbar.nav-open .nav-burger span:nth-child(2) { opacity: 0; }
.navbar.nav-open .nav-burger span:nth-child(3) { top: 6px; transform: rotate(-45deg); }

/* 显示当前所选 —— 浮在按钮右边的小标签 */
.nav-current {
  position: absolute;
  top: 50%;
  left: calc(100% + 8px);
  transform: translateY(-50%);
  display: inline-flex;
  align-items: center;
  background: rgba(255, 255, 255, 0.85);
  backdrop-filter: blur(14px);
  border: 1px solid rgba(60, 100, 150, 0.16);
  border-radius: 10px;
  padding: 6px 10px;
  pointer-events: none;
  white-space: nowrap;
  box-shadow: 0 4px 14px -6px rgba(60, 100, 150, 0.28);
}
.nav-current .nc-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px; height: 18px;
  font-size: 12px;
  color: #3b6da8;
  font-weight: 700;
}
.navbar.nav-open .nav-current { opacity: 0; transform: translateY(-50%) translateX(-4px); transition: opacity .15s, transform .15s; }

/* 下拉菜单:从按钮左下方展开,纵向列表 */
.nav-menu {
  position: absolute;
  top: calc(100% + 8px);
  left: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 6px;
  min-width: 168px;
  background: rgba(255, 255, 255, 0.97);
  backdrop-filter: blur(28px) saturate(1.2);
  -webkit-backdrop-filter: blur(28px) saturate(1.2);
  border: 1px solid rgba(60, 100, 150, 0.20);
  border-radius: 12px;
  box-shadow: 0 14px 36px -8px rgba(60, 100, 150, 0.35);
  opacity: 0;
  visibility: hidden;
  transform: translateY(-6px) scale(.97);
  transform-origin: top left;
  pointer-events: none;
  transition: opacity .20s ease, transform .20s cubic-bezier(.4,0,.2,1), visibility 0s linear .20s;
}
.navbar.nav-open .nav-menu {
  opacity: 1;
  visibility: visible;
  transform: translateY(0) scale(1);
  pointer-events: auto;
  transition: opacity .20s ease, transform .20s cubic-bezier(.4,0,.2,1), visibility 0s;
}

.tab,
.nav-refresh {
  width: 100%;
  min-height: 36px;
  padding: 8px 12px;
  font-size: 13px;
  font-weight: 500;
  color: #4d6580;
  background: transparent;
  border: 1px solid transparent;
  border-radius: 8px;
  cursor: pointer;
  transition: color .15s, background .15s;
  display: inline-flex;
  align-items: center;
  justify-content: flex-start;
  gap: 10px;
  white-space: nowrap;
  font-family: inherit;
  text-align: left;
}
.tab span,
.nav-refresh span {
  color: #6c9b7e;
  font-size: 12px;
  width: 18px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
}
.tab:hover { color: #1e3a5f; background: rgba(214, 232, 244, 0.55); }
.tab.active {
  color: #1e3a5f;
  background: linear-gradient(135deg, rgba(168, 200, 220, 0.42), rgba(168, 200, 179, 0.36));
  border-color: rgba(108, 155, 198, 0.45);
}
.tab.active span { color: #3b6da8; }
.nav-refresh {
  margin-top: 4px;
  border-top-color: rgba(60, 100, 150, 0.12);
  color: #8a4c32;
}
.nav-refresh span { color: #c15f38; }
.nav-refresh:hover {
  color: #6f3424;
  background: rgba(245, 215, 215, 0.55);
}
.nav-refresh:disabled {
  cursor: wait;
  opacity: 0.72;
}
.nav-refresh.is-refreshing span {
  animation: refreshSpin .8s linear infinite;
}
@keyframes refreshSpin {
  to { transform: rotate(360deg); }
}

@media (max-width: 700px) {
  .navbar { top: 10px; left: 10px; }
  .nav-toggle { width: 42px; height: 42px; }
  .nav-current { padding: 5px 9px; }
  .nav-current .nc-icon { font-size: 11px; }
}

/* ============ Main / Panels ============ */
main { max-width: 1180px; margin: 0 auto; padding: 0 20px 60px; }
.panel { display: none; animation: panelIn .35s cubic-bezier(.4,0,.2,1); }
.panel.active { display: block; }
@keyframes panelIn {
  from { opacity: 0; transform: translateY(6px); }
  to { opacity: 1; transform: translateY(0); }
}

/* ============ Cards ============ */
.card {
  background: rgba(255, 255, 255, 0.78);
  backdrop-filter: blur(20px) saturate(1.1);
  -webkit-backdrop-filter: blur(20px) saturate(1.1);
  border: 1px solid rgba(60, 100, 150, 0.12);
  border-radius: 18px;
  padding: 22px;
  margin-bottom: 18px;
  box-shadow: 0 6px 24px -10px rgba(60, 100, 150, 0.20);
}
.card-h {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: 16px;
  padding-bottom: 12px;
  border-bottom: 1px solid rgba(60, 100, 150, 0.10);
}
.card-h h2 {
  font-size: 17px;
  font-weight: 600;
  margin: 0;
  letter-spacing: 0.01em;
  color: #1e3a5f;
}
.card-h-sub {
  font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
  font-size: 11px;
  color: #6f8198;
  letter-spacing: 0.04em;
}
.card-h-link {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 12px;
  color: #3b6da8;
  text-decoration: none;
  border-bottom: 1px dashed rgba(59, 109, 168, 0.45);
  padding-bottom: 1px;
  transition: color .18s, border-color .18s;
}
.card-h-link:hover { color: #1e3a5f; border-bottom-color: rgba(30, 58, 95, 0.85); }
.card-h-link-icon {
  font-size: 11px;
  opacity: 0.78;
  font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
}
.grid { display: grid; gap: 18px; margin-bottom: 18px; }
.grid-2 { grid-template-columns: repeat(2, 1fr); }
.grid-3 { grid-template-columns: repeat(3, 1fr); }
#principles,
#budgetCards { margin-bottom: 18px; }

@media (max-width: 900px) { .grid-3 { grid-template-columns: 1fr; } }
@media (max-width: 700px) { .grid-2 { grid-template-columns: 1fr; } }

/* ============ Principles · 三色块:冰川蓝 / 苔原绿 / 枫叶珊瑚 ============ */
.principle {
  border-radius: 16px;
  padding: 20px;
  border: 1px solid rgba(60, 100, 150, 0.14);
  background: rgba(255, 255, 255, 0.65);
}
.principle:nth-child(1) {
  background: linear-gradient(160deg, rgba(168, 200, 220, 0.32), rgba(214, 232, 244, 0.55));
  border-color: rgba(108, 155, 198, 0.30);
}
.principle:nth-child(2) {
  background: linear-gradient(160deg, rgba(168, 200, 179, 0.32), rgba(213, 230, 218, 0.55));
  border-color: rgba(140, 180, 155, 0.32);
}
.principle:nth-child(3) {
  background: linear-gradient(160deg, rgba(232, 168, 168, 0.28), rgba(245, 215, 215, 0.55));
  border-color: rgba(210, 145, 145, 0.32);
}
.principle-icon { font-size: 26px; margin-bottom: 8px; }
.principle-t {
  font-size: 15px;
  font-weight: 600;
  margin-bottom: 6px;
  color: #1e3a5f;
}
.principle-d {
  font-size: 13px;
  color: #2c4868;
  line-height: 1.6;
}

/* ============ Bullet list ============ */
.bullet-list { list-style: none; padding: 0; margin: 0; }
.bullet-list li {
  position: relative;
  padding: 7px 0 7px 20px;
  font-size: 13.5px;
  line-height: 1.65;
  color: #2c4868;
  border-bottom: 1px dashed rgba(60, 100, 150, 0.10);
}
.bullet-list li:last-child { border: none; }
.bullet-list li::before {
  content: '◆';
  position: absolute;
  left: 0; top: 8px;
  color: #6c9b7e;
  font-size: 9px;
}

/* ============ Weather outlook ============ */
.weather-card .card-h {
  align-items: flex-start;
}
.weather-card .card-h-sub {
  max-width: 640px;
  text-align: right;
  line-height: 1.45;
  white-space: normal;
}
.weather-table {
  border: 1px solid rgba(60, 100, 150, 0.12);
  border-radius: 12px;
  overflow: hidden;
  background: rgba(255, 255, 255, 0.48);
}
.weather-head,
.weather-row {
  display: grid;
  grid-template-columns: 84px minmax(160px, 1.15fr) 170px minmax(280px, 1.85fr);
  gap: 0;
  align-items: stretch;
}
.weather-head {
  background: linear-gradient(135deg, rgba(214, 232, 244, 0.82), rgba(213, 230, 218, 0.70));
  color: #3b6da8;
  font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
  font-size: 11px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  font-weight: 700;
}
.weather-head span,
.weather-row > div {
  padding: 10px 12px;
  border-right: 1px solid rgba(60, 100, 150, 0.10);
}
.weather-head span:last-child,
.weather-row > div:last-child { border-right: none; }
.weather-row {
  min-height: 58px;
  border-top: 1px solid rgba(60, 100, 150, 0.10);
  color: #2c4868;
}
.weather-row:nth-child(odd) {
  background: rgba(255, 255, 255, 0.34);
}
.weather-date {
  font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
  font-size: 13px;
  font-weight: 700;
  color: #1e3a5f;
  display: flex;
  align-items: center;
}
.weather-region {
  font-size: 13px;
  font-weight: 600;
  color: #1e3a5f;
  display: flex;
  align-items: center;
}
.weather-temp {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 2px;
}
.weather-temp span {
  font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
  font-size: 13px;
  font-weight: 700;
  color: #2a5238;
}
.weather-temp small {
  font-size: 11px;
  color: #6f8198;
}
.weather-clothing {
  font-size: 13px;
  line-height: 1.55;
  display: flex;
  align-items: center;
}

@media (max-width: 860px) {
  .weather-card .card-h-sub {
    text-align: left;
  }
  .weather-head {
    display: none;
  }
  .weather-row {
    grid-template-columns: 72px 1fr;
    min-height: 0;
    padding: 12px;
    gap: 8px 12px;
  }
  .weather-row > div {
    padding: 0;
    border-right: none;
  }
  .weather-date {
    grid-row: span 3;
    align-items: flex-start;
    padding-top: 2px;
  }
  .weather-region {
    font-size: 13px;
  }
  .weather-temp {
    flex-direction: row;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 6px;
  }
  .weather-clothing {
    font-size: 12.5px;
  }
}

/* ============ Prep grid ============ */
.prep-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
}
@media (max-width: 700px) { .prep-grid { grid-template-columns: 1fr; } }
.prep-col {
  background: rgba(255, 255, 255, 0.62);
  border: 1px solid rgba(60, 100, 150, 0.12);
  border-radius: 12px;
  padding: 14px 16px;
}
.prep-col h3 {
  font-size: 11px;
  font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: #3b6da8;
  margin: 0 0 10px;
}
.prep-link {
  color: #3b6da8;
  text-decoration: none;
  border-bottom: 1px dashed rgba(59, 109, 168, 0.45);
  padding-bottom: 1px;
  transition: color .18s, border-color .18s;
  display: inline-flex;
  align-items: center;
  gap: 4px;
}
.prep-link:hover { color: #1e3a5f; border-bottom-color: rgba(30, 58, 95, 0.85); }
.prep-link-icon {
  font-size: 11px;
  opacity: 0.78;
  font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
}

/* ============ Rental pickup / return card ============ */
.rental-row {
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 4px 2px 2px;
}
.rental-tags {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}
.rental-tag {
  font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
  font-size: 11px;
  letter-spacing: 0.08em;
  padding: 4px 10px;
  border-radius: 999px;
  border: 1px solid rgba(60, 100, 150, 0.22);
  background: rgba(255, 255, 255, 0.7);
}
.rental-tag.pickup { color: #2c6f4a; border-color: rgba(108, 155, 126, 0.45); background: rgba(217, 235, 224, 0.7); }
.rental-tag.return { color: #8a4a2a; border-color: rgba(208, 154, 106, 0.45); background: rgba(244, 226, 209, 0.7); }
.rental-vendor {
  font-size: 14px;
  font-weight: 600;
  color: #1e3a5f;
}
.rental-addr {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 10px 12px;
  background: rgba(255, 255, 255, 0.62);
  border: 1px solid rgba(60, 100, 150, 0.16);
  border-radius: 10px;
  color: #3b6da8;
  text-decoration: none;
  font-size: 13px;
  line-height: 1.45;
  transition: background .18s, border-color .18s;
  align-self: flex-start;
  max-width: 100%;
}
.rental-addr:hover {
  background: rgba(255, 255, 255, 0.88);
  border-color: rgba(60, 100, 150, 0.32);
  color: #1e3a5f;
}
.rental-addr-icon { font-size: 14px; }
.rental-addr-arrow {
  font-size: 11px;
  opacity: 0.7;
  margin-left: 2px;
  font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
}
.rental-dir {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 10px 12px;
  border-left: 3px solid rgba(108, 155, 198, 0.6);
  background: rgba(220, 232, 244, 0.45);
  border-radius: 0 10px 10px 0;
}
.rental-dir-label {
  font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
  font-size: 10px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: #3b6da8;
}
.rental-dir-text {
  font-size: 13px;
  color: #2c4868;
  line-height: 1.5;
}

/* ============ Roadbook ============ */
.day-rail {
  position: sticky;
  top: 72px;          /* 给左上角 navbar(top:14 + 44 高 + 余量)留位置 */
  z-index: 15;
  display: flex;
  gap: 6px;
  overflow-x: auto;
  padding: 8px 6px;
  margin: 0 -6px 16px;  /* 把 sticky 时露出的缝隙也撑满,视觉上贯通 */
  -webkit-overflow-scrolling: touch;
  scroll-snap-type: x mandatory;
  background: rgba(234, 243, 250, 0.85);
  backdrop-filter: blur(20px) saturate(1.2);
  -webkit-backdrop-filter: blur(20px) saturate(1.2);
  border: 1px solid rgba(60, 100, 150, 0.14);
  border-radius: 12px;
  box-shadow: 0 6px 20px -10px rgba(60, 100, 150, 0.30);
}
.day-rail::-webkit-scrollbar { height: 5px; }
.day-rail::-webkit-scrollbar-thumb { background: rgba(108, 155, 198, 0.35); border-radius: 3px; }
.rail-pill {
  flex: 0 0 auto;
  scroll-snap-align: start;
  padding: 9px 12px;
  border-radius: 11px;
  font-family: inherit;
  font-size: 11px;
  border: 1px solid rgba(60, 100, 150, 0.16);
  background: rgba(255, 255, 255, 0.70);
  color: #4d6580;
  cursor: pointer;
  transition: all .2s;
  text-align: center;
  min-width: 72px;
}
.rail-pill:hover { color: #1e3a5f; border-color: rgba(108, 155, 198, 0.50); }
.rail-pill .rp-num {
  display: block;
  font-size: 15px;
  font-weight: 700;
  color: #1e3a5f;
  margin-bottom: 2px;
}
.rail-pill.active {
  background: linear-gradient(135deg, rgba(168, 200, 220, 0.45), rgba(168, 200, 179, 0.40));
  border-color: rgba(108, 155, 198, 0.55);
}
.rail-pill.active .rp-num { color: #1e3a5f; }

.roadbook-highlight-card { margin-bottom: 18px; }
.roadbook-highlight-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}
.roadbook-highlight-item {
  background: linear-gradient(145deg, rgba(245, 250, 254, 0.88), rgba(237, 246, 241, 0.82));
  border: 1px solid rgba(60, 100, 150, 0.14);
  border-radius: 14px;
  padding: 15px 16px;
  min-width: 0;
}
.roadbook-highlight-title {
  display: flex;
  align-items: center;
  gap: 8px;
  color: #1e3a5f;
  font-size: 14px;
  font-weight: 700;
  line-height: 1.35;
  margin-bottom: 9px;
}
.roadbook-highlight-item ul {
  margin: 0;
  padding-left: 17px;
}
.roadbook-highlight-item li {
  color: #2c4868;
  font-size: 12.5px;
  line-height: 1.55;
  padding: 2px 0;
}
.roadbook-highlight-links {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  margin-top: 11px;
}
.roadbook-day-link,
.roadbook-external-link {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  border-radius: 999px;
  padding: 4px 8px;
  font-size: 11px;
  line-height: 1;
  text-decoration: none;
}
.roadbook-day-link {
  color: #1e3a5f;
  background: rgba(168, 200, 220, 0.35);
  border: 1px solid rgba(108, 155, 198, 0.35);
}
.roadbook-external-link {
  color: #2a5238;
  background: rgba(168, 200, 179, 0.32);
  border: 1px solid rgba(108, 155, 130, 0.35);
}
.roadbook-day-link:hover { background: rgba(168, 200, 220, 0.58); }
.roadbook-external-link:hover { background: rgba(168, 200, 179, 0.54); }
@media (max-width: 900px) {
  .roadbook-highlight-grid { grid-template-columns: 1fr; }
}

.day-card {
  background: rgba(255, 255, 255, 0.80);
  backdrop-filter: blur(20px) saturate(1.1);
  -webkit-backdrop-filter: blur(20px) saturate(1.1);
  border: 1px solid rgba(60, 100, 150, 0.12);
  border-radius: 20px;
  padding: 24px;
  margin-bottom: 18px;
  position: relative;
  overflow: hidden;
  box-shadow: 0 6px 24px -10px rgba(60, 100, 150, 0.20);
}
.day-card::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 2px;
  background: linear-gradient(90deg, #e2acac 0%, #9ec5d8 35%, #6c9b7e 70%, #b6c9d8 100%);
  opacity: 0.7;
}
.day-head {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  flex-wrap: wrap;
  margin-bottom: 16px;
  padding-bottom: 14px;
  border-bottom: 1px solid rgba(60, 100, 150, 0.10);
}
.day-num {
  font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
  font-size: 12px;
  letter-spacing: 0.18em;
  color: #fff;
  background: linear-gradient(135deg, #d68888, #b66a6a);
  border: 1px solid rgba(190, 100, 100, 0.45);
  padding: 6px 11px;
  border-radius: 8px;
  flex: 0 0 auto;
  font-weight: 600;
  box-shadow: 0 3px 10px -3px rgba(190, 100, 100, 0.45);
}
.day-title-wrap { flex: 1 1 260px; }
.day-date {
  font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
  font-size: 11px;
  color: #6f8198;
  letter-spacing: 0.08em;
  margin-bottom: 4px;
}
.day-city {
  font-size: 20px;
  font-weight: 700;
  margin: 0 0 4px;
  color: #1e3a5f;
}
.day-theme {
  font-size: 13px;
  color: #4d6580;
  font-style: italic;
}

.day-meta-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 10px;
  margin-bottom: 18px;
}
@media (max-width: 900px) { .day-meta-grid { grid-template-columns: repeat(2, 1fr); } }
.dm {
  background: rgba(245, 250, 254, 0.70);
  border: 1px solid rgba(60, 100, 150, 0.12);
  border-radius: 11px;
  padding: 11px 13px;
}
.dm-label {
  font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
  font-size: 10px;
  letter-spacing: 0.15em;
  color: #3b6da8;
  text-transform: uppercase;
  margin-bottom: 4px;
}
.dm-val { font-size: 13px; color: #1e3a5f; line-height: 1.45; }
.dm-link {
  color: #3b6da8;
  text-decoration: none;
  border-bottom: 1px dashed rgba(59, 109, 168, 0.45);
  padding-bottom: 1px;
  transition: color .18s, border-color .18s;
}
.dm-link:hover { color: #1e3a5f; border-bottom-color: rgba(30, 58, 95, 0.85); }
.dm-link-icon {
  font-size: 11px;
  opacity: 0.78;
  margin-left: 3px;
  font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
}

.day-cols {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}
@media (max-width: 700px) { .day-cols { grid-template-columns: 1fr; } }
.day-section {
  background: rgba(245, 250, 254, 0.65);
  border: 1px solid rgba(60, 100, 150, 0.10);
  border-radius: 13px;
  padding: 14px 16px;
}
.day-section h4 {
  font-size: 11px;
  font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: #3b6da8;
  margin: 0 0 8px;
}
.day-section.note h4 { color: #4a7a5a; }
.day-section.tip h4 { color: #b88a4a; }
.day-section ul { padding-left: 16px; margin: 0; }
.day-section li { font-size: 13px; color: #2c4868; padding: 3px 0; line-height: 1.55; }
.day-section p { font-size: 13px; color: #2c4868; line-height: 1.6; margin: 0; }

.poi-list {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 8px;
}
.poi-pill {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 12px;
  padding: 5px 10px;
  border-radius: 999px;
  background: rgba(214, 232, 244, 0.65);
  border: 1px solid rgba(108, 155, 198, 0.30);
  color: #1e3a5f;
  text-decoration: none;
  transition: all .2s;
  font-weight: 500;
}
.poi-pill:hover { background: rgba(168, 200, 220, 0.55); border-color: rgba(108, 155, 198, 0.55); }
.poi-pill::before { content: ''; }
.poi-pill .pp-icon { font-weight: 700; opacity: 0.92; }

.poi-pill-sight     { background: rgba(150, 173, 190, 0.28); border-color: rgba(112, 139, 158, 0.42); color: #263f52; }
.poi-pill-sight:hover { background: rgba(150, 173, 190, 0.46); }
.poi-pill-hotel     { background: rgba(168, 200, 179, 0.30); border-color: rgba(108, 155, 130, 0.40); color: #2a5238; }
.poi-pill-hotel:hover { background: rgba(168, 200, 179, 0.50); }
.poi-pill-food      { background: rgba(244, 206, 98, 0.30); border-color: rgba(205, 160, 43, 0.42); color: #6a4a12; }
.poi-pill-food:hover { background: rgba(244, 206, 98, 0.50); }
.poi-pill-transport { background: rgba(224, 112, 112, 0.26); border-color: rgba(185, 70, 70, 0.42); color: #713030; }
.poi-pill-transport:hover { background: rgba(224, 112, 112, 0.46); }
.poi-pill-rental    { background: rgba(108, 155, 217, 0.28); border-color: rgba(47, 100, 168, 0.50); color: #1e3a6f; font-weight: 600; }
.poi-pill-rental:hover { background: rgba(108, 155, 217, 0.48); }

.day-map {
  height: 220px;
  border-radius: 13px;
  overflow: hidden;
  margin-top: 14px;
  border: 1px solid rgba(60, 100, 150, 0.18);
}

/* ============ Map ============ */
.map-card { padding: 0; overflow: hidden; }
.map-card .card-h {
  padding: 18px 20px 12px;
  margin: 0;
  border-bottom: 1px solid rgba(60, 100, 150, 0.10);
}
.map { height: 720px; border-radius: 0 0 18px 18px; }

/* 全屏按钮 */
.card-h-right {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}
.map-fs-btn {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 6px 11px;
  font-family: inherit;
  font-size: 11px;
  letter-spacing: 0.05em;
  color: #1e3a5f;
  background: rgba(214, 232, 244, 0.60);
  border: 1px solid rgba(108, 155, 198, 0.40);
  border-radius: 999px;
  cursor: pointer;
  transition: all .2s;
}
.map-fs-btn:hover {
  background: rgba(168, 200, 220, 0.55);
  border-color: rgba(108, 155, 198, 0.65);
}
.map-fs-btn .ic-collapse { display: none; }

.map-card.is-fullscreen {
  position: fixed;
  inset: 0;
  z-index: 200;
  margin: 0;
  border-radius: 0;
  border: none;
  background: rgba(246, 251, 254, 0.97);
  backdrop-filter: blur(40px) saturate(1.2);
  -webkit-backdrop-filter: blur(40px) saturate(1.2);
  display: flex;
  flex-direction: column;
  animation: fsIn .25s ease-out;
}
@keyframes fsIn {
  from { opacity: 0; transform: scale(.99); }
  to { opacity: 1; transform: scale(1); }
}
.map-card.is-fullscreen .card-h { padding: 14px 20px; }
.map-card.is-fullscreen .map {
  flex: 1 1 auto;
  height: auto;
  border-radius: 0;
}
.map-card.is-fullscreen .ic-expand { display: none; }
.map-card.is-fullscreen .ic-collapse { display: block; }
body.map-fs-locked { overflow: hidden; }

/* 地图基底 —— MapTiler outdoor-v2 本身已偏浅色,不再叠 hue/saturate filter */
.leaflet-container { background: #dbe7f2; font-family: inherit; }
.leaflet-control-attribution {
  background: rgba(255, 255, 255, 0.85) !important;
  color: #4d6580 !important;
  font-size: 10px !important;
}
.leaflet-control-attribution a { color: #3b6da8 !important; }
.leaflet-control-zoom a {
  background: rgba(255, 255, 255, 0.92) !important;
  color: #1e3a5f !important;
  border: 1px solid rgba(108, 155, 198, 0.32) !important;
}
.leaflet-control-zoom a:hover { background: rgba(168, 200, 220, 0.55) !important; }
.leaflet-popup-content-wrapper {
  background: rgba(255, 255, 255, 0.96) !important;
  color: #1e3a5f !important;
  border: 1px solid rgba(108, 155, 198, 0.40) !important;
  border-radius: 10px !important;
  box-shadow: 0 6px 24px -8px rgba(60, 100, 150, 0.30) !important;
}
.leaflet-popup-tip { background: rgba(255, 255, 255, 0.96) !important; }
.leaflet-popup-content { font-family: inherit !important; font-size: 13px !important; }
.leaflet-popup-content a { color: #3b6da8 !important; }
.leaflet-popup-content b { color: #1e3a5f; }

/* ============ Tables ============ */
.table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.t {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
  min-width: 540px;
}
.t th, .t td {
  padding: 11px 13px;
  text-align: left;
  border-bottom: 1px solid rgba(60, 100, 150, 0.10);
}
.t th {
  font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
  font-size: 11px;
  letter-spacing: 0.10em;
  text-transform: uppercase;
  color: #3b6da8;
  font-weight: 600;
  background: rgba(214, 232, 244, 0.55);
}
.t tr:hover td { background: rgba(214, 232, 244, 0.32); }
.t td { color: #2c4868; }
.t .num { text-align: right; font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace; }
.t tfoot td {
  font-weight: 700;
  border-top: 1.5px solid rgba(108, 155, 198, 0.45);
  background: rgba(214, 232, 244, 0.55);
  color: #1e3a5f;
}

/* ============ 费用分类汇总表 ============ */
.t-cost {
  min-width: 0;
  table-layout: fixed;
}
.t-cost th:first-child,
.t-cost td:first-child { width: 58%; }
.t-cost th:last-child,
.t-cost td:last-child {
  width: 42%;
  white-space: nowrap;
}
.t-cost .cat-tag {
  width: auto;
  min-width: 88px;
  height: 30px;
  padding: 0 10px;
  justify-content: flex-start;
}
.t-cost .cat-label {
  line-height: 1;
}

@media (max-width: 540px) {
  .t-cost {
    min-width: 0;
    table-layout: fixed;
  }
  .t-cost th, .t-cost td { padding: 8px 8px; font-size: 12.5px; }
  .t-cost th { font-size: 10.5px; letter-spacing: 0.06em; }
  .t-cost .cat-tag {
    width: auto;
    min-width: 76px;
    height: 28px;
    padding: 0 8px;
  }
  .t-cost .cat-icon { font-size: 13px; }
  .t-cost .num { font-size: 12px; letter-spacing: 0; }
}
.cat-tag {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  font-size: 11px;
  width: 30px;
  height: 30px;
  padding: 0;
  border-radius: 999px;
  background: rgba(168, 200, 220, 0.40);
  border: 1px solid rgba(108, 155, 198, 0.40);
  color: #1e3a5f;
  font-weight: 500;
  white-space: nowrap;
}
.cat-icon {
  font-size: 12px;
  line-height: 1;
}
.cat-sight {
  background: rgba(150, 173, 190, 0.30);
  border-color: rgba(112, 139, 158, 0.44);
  color: #263f52;
}
.cat-hotel {
  background: rgba(168, 200, 179, 0.34);
  border-color: rgba(108, 155, 130, 0.46);
  color: #2a5238;
}
.cat-food {
  background: rgba(244, 206, 98, 0.34);
  border-color: rgba(205, 160, 43, 0.44);
  color: #6a4a12;
}
.cat-transport {
  background: rgba(224, 112, 112, 0.30);
  border-color: rgba(185, 70, 70, 0.44);
  color: #713030;
}
.cat-rental {
  background: rgba(108, 155, 217, 0.30);
  border-color: rgba(47, 100, 168, 0.50);
  color: #1e3a6f;
}
.cat-fund {
  background: rgba(111, 171, 132, 0.28);
  border-color: rgba(58, 126, 82, 0.46);
  color: #28563a;
}
.status-tag {
  font-size: 11px;
  padding: 3px 8px;
  border-radius: 6px;
  background: rgba(168, 200, 179, 0.32);
  border: 1px solid rgba(108, 155, 130, 0.42);
  color: #2a5238;
  font-weight: 500;
  display: inline-block;
  white-space: nowrap;
}
.rmb-amount {
  display: block;
  white-space: nowrap;
}
.rmb-source {
  display: block;
  width: fit-content;
  max-width: 100%;
  margin: 4px 0 0 auto;
  padding: 2px 5px;
  border: 1px solid rgba(108, 155, 198, 0.45);
  border-radius: 999px;
  color: #1e3a5f;
  background: rgba(214, 232, 244, 0.55);
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  font-size: 9px;
  font-weight: 600;
  line-height: 1.2;
  letter-spacing: 0;
  white-space: nowrap;
}
.rmb-source.actual {
  color: #28563a;
  border-color: rgba(58, 126, 82, 0.46);
  background: rgba(168, 200, 179, 0.34);
}
.rmb-source.fx-rate {
  color: #6a4a12;
  border-color: rgba(205, 160, 43, 0.44);
  background: rgba(244, 206, 98, 0.34);
}
.rmb-source.mixed {
  color: #1e3a5f;
}
.cost-item {
  display: block;
}
.cost-note {
  display: block;
  width: fit-content;
  max-width: 100%;
  margin-top: 5px;
  white-space: normal;
  line-height: 1.35;
}
/* 住宿表"状态"列锁单行,避免短窗口下"未支付"被拆成两行 */
.t .status-col { white-space: nowrap; }

/* 租车明细表 · 三列要在 iPhone 14 Pro Max 一屏完整显示
 * 取消 .t 的 min-width: 540px,并把 padding 收紧 */
.t-rental { min-width: 0; table-layout: auto; }
.t-rental th, .t-rental td { padding: 10px 8px; white-space: nowrap; }
.t-rental td:first-child, .t-rental th:first-child { padding-left: 13px; }
.t-rental td:last-child, .t-rental th:last-child { padding-right: 13px; }
.status-tag.warn {
  background: rgba(232, 168, 168, 0.30);
  border-color: rgba(210, 130, 130, 0.45);
  color: #7a2c2c;
}
.status-tag.paid {
  background: rgba(108, 155, 217, 0.22);
  border-color: rgba(47, 100, 168, 0.50);
  color: #1e3a6f;
}

/* 费用记录:正/负值整行着色 */
.t-cost tr.tone-positive td,
.t-cost tr.tone-positive .num,
.t-cost tr.tone-positive b { color: #2c6f4a; }
.t-cost tr.tone-negative td,
.t-cost tr.tone-negative .num,
.t-cost tr.tone-negative b { color: #b3343a; }
/* 着色行里的 cat-tag / status-tag 维持原色,避免被 td 颜色继承覆盖 */
.t-cost tr.tone-positive .cat-sight,
.t-cost tr.tone-negative .cat-sight { color: #263f52; }
.t-cost tr.tone-positive .cat-hotel,
.t-cost tr.tone-negative .cat-hotel { color: #2a5238; }
.t-cost tr.tone-positive .cat-food,
.t-cost tr.tone-negative .cat-food { color: #6a4a12; }
.t-cost tr.tone-positive .cat-transport,
.t-cost tr.tone-negative .cat-transport { color: #713030; }
.t-cost tr.tone-positive .cat-rental,
.t-cost tr.tone-negative .cat-rental { color: #1e3a6f; }
.t-cost tr.tone-positive .cat-fund,
.t-cost tr.tone-negative .cat-fund { color: #28563a; }
.t-cost tr.tone-positive .status-tag { color: #2a5238; }
.t-cost tr.tone-negative .status-tag { color: #2a5238; }
.t-cost tr.tone-positive .status-tag.paid,
.t-cost tr.tone-negative .status-tag.paid { color: #1e3a6f; }
.t-cost tr.tone-positive .rmb-source.actual,
.t-cost tr.tone-negative .rmb-source.actual { color: #28563a; }
.t-cost tr.tone-positive .rmb-source.fx-rate,
.t-cost tr.tone-negative .rmb-source.fx-rate { color: #6a4a12; }
.t-cost tr.tone-positive .rmb-source.mixed,
.t-cost tr.tone-negative .rmb-source.mixed { color: #1e3a5f; }

.t-settlement { min-width: 0; }
.t-settlement tr.settlement-receivable td { color: #2c6f4a; }
.t-settlement tr.settlement-payable td { color: #b3343a; }
.t-settlement tr.settlement-balanced td { color: #2c4868; }

/* ============ Cost ============ */
.fx-note {
  font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
  font-size: 12px;
  color: #2c4868;
  background: rgba(255, 255, 255, 0.70);
  border: 1px solid rgba(60, 100, 150, 0.14);
  border-radius: 10px;
  padding: 10px 13px;
  margin-bottom: 16px;
  letter-spacing: 0.03em;
}
.filter-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.fc {
  font-family: inherit;
  font-size: 11px;
  width: 32px;
  height: 32px;
  padding: 0;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.65);
  border: 1px solid rgba(60, 100, 150, 0.16);
  color: #4d6580;
  cursor: pointer;
  transition: all .2s;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.fc:hover { color: #1e3a5f; }
.fc.active {
  background: linear-gradient(135deg, rgba(168, 200, 220, 0.50), rgba(168, 200, 179, 0.42));
  border-color: rgba(108, 155, 198, 0.55);
  color: #1e3a5f;
}
.fc-icon { font-size: 13px; line-height: 1; }
.fc-all.active {
  background: linear-gradient(135deg, rgba(168, 200, 220, 0.50), rgba(255, 255, 255, 0.78));
  border-color: rgba(108, 155, 198, 0.55);
  color: #1e3a5f;
}
.fc-sight.active {
  background: linear-gradient(135deg, rgba(190, 205, 216, 0.62), rgba(150, 173, 190, 0.45));
  border-color: rgba(112, 139, 158, 0.56);
  color: #263f52;
}
.fc-hotel.active {
  background: linear-gradient(135deg, rgba(196, 224, 205, 0.65), rgba(168, 200, 179, 0.46));
  border-color: rgba(108, 155, 130, 0.56);
  color: #2a5238;
}
.fc-food.active {
  background: linear-gradient(135deg, rgba(250, 222, 132, 0.65), rgba(244, 206, 98, 0.45));
  border-color: rgba(205, 160, 43, 0.56);
  color: #6a4a12;
}
.fc-transport.active {
  background: linear-gradient(135deg, rgba(238, 156, 156, 0.58), rgba(224, 112, 112, 0.42));
  border-color: rgba(185, 70, 70, 0.54);
  color: #713030;
}
.fc-rental.active {
  background: linear-gradient(135deg, rgba(139, 178, 226, 0.58), rgba(78, 129, 194, 0.42));
  border-color: rgba(47, 100, 168, 0.58);
  color: #1e3a6f;
}

/* ============ Budget ============ */
.budget-card {
  border-radius: 16px;
  padding: 20px;
  text-align: center;
  border: 1px solid rgba(108, 155, 198, 0.32);
  background: linear-gradient(160deg, rgba(168, 200, 220, 0.45), rgba(214, 232, 244, 0.62));
}
.budget-card.green {
  background: linear-gradient(160deg, rgba(168, 200, 179, 0.45), rgba(213, 230, 218, 0.62));
  border-color: rgba(108, 155, 130, 0.36);
}
.budget-card.amber {
  background: linear-gradient(160deg, rgba(232, 196, 152, 0.42), rgba(245, 222, 192, 0.62));
  border-color: rgba(195, 155, 105, 0.40);
}
.bc-label {
  font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
  font-size: 11px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: #4d6580;
  margin-bottom: 8px;
}
.bc-val {
  font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
  font-size: 28px;
  font-weight: 700;
  color: #1e3a5f;
}
.budget-card.green .bc-val { color: #2a5238; }
.budget-card.amber .bc-val { color: #6a4a1a; }
.bc-sub {
  font-size: 11px;
  color: #6f8198;
  margin-top: 6px;
}

.bar-chart { display: flex; flex-direction: column; gap: 10px; padding-top: 4px; }
.bar-row { display: flex; align-items: center; gap: 10px; }
.bar-label {
  flex: 0 0 76px;
  font-size: 13px;
  color: #1e3a5f;
  font-weight: 500;
}
.bar-track {
  flex: 1 1 auto;
  height: 8px;
  background: rgba(60, 100, 150, 0.10);
  border-radius: 5px;
  overflow: hidden;
}
.bar-fill {
  height: 100%;
  background: linear-gradient(90deg, #9ec5d8 0%, #a8c8b3 50%, #e2acac 100%);
  border-radius: 5px;
  transition: width .8s cubic-bezier(.4,0,.2,1);
}
.bar-val {
  flex: 0 0 120px;
  text-align: right;
  font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
  font-size: 12px;
  color: #2c4868;
}

/* ============ Luggage ============ */
.lug-cat h3 {
  font-size: 15px;
  margin: 0 0 10px;
  display: flex;
  align-items: center;
  gap: 8px;
  color: #1e3a5f;
}
.lug-cat h3::before {
  content: '';
  width: 3px;
  height: 16px;
  border-radius: 2px;
  background: linear-gradient(180deg, #9ec5d8, #a8c8b3);
}
.lug-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 9px 0;
  min-height: 36px;
  border-bottom: 1px dashed rgba(60, 100, 150, 0.10);
  font-size: 13.5px;
  color: #1e3a5f;
}
.lug-item:last-child { border: none; }
.lug-check {
  width: 22px; height: 22px;
  border-radius: 6px;
  border: 1.5px solid rgba(108, 155, 198, 0.55);
  flex: 0 0 auto;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: all .2s;
  background: rgba(255, 255, 255, 0.85);
}
.lug-check.checked {
  background: linear-gradient(135deg, #9ec5d8, #a8c8b3);
  border-color: transparent;
  color: #1e3a5f;
}
.lug-check.checked::after { content: '✓'; font-size: 13px; font-weight: 800; }
.lug-text { flex: 1 1 auto; }
.lug-text.checked { text-decoration: line-through; opacity: 0.45; }
.lug-link {
  color: #3b6da8;
  text-decoration: none;
  border-bottom: 1px dashed rgba(59, 109, 168, 0.45);
  padding-bottom: 1px;
  transition: color .18s, border-color .18s;
  display: inline-flex;
  align-items: center;
  gap: 4px;
}
.lug-link:hover { color: #1e3a5f; border-bottom-color: rgba(30, 58, 95, 0.85); }
.lug-link-icon {
  font-size: 11px;
  opacity: 0.78;
  font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
  border: none;
  margin-left: 1px;
}
.lug-text.checked .lug-link {
  color: rgba(59, 109, 168, 0.55);
  border-bottom-color: rgba(59, 109, 168, 0.18);
}
.lug-tag {
  font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
  font-size: 10px;
  padding: 2px 8px;
  border-radius: 999px;
  background: rgba(232, 196, 152, 0.32);
  border: 1px solid rgba(195, 155, 105, 0.45);
  color: #6a4a1a;
  flex: 0 0 auto;
  font-weight: 500;
}

/* ============ Emergency ============ */
.eg-card { padding: 0; overflow: hidden; }
.eg-card .eg-h {
  padding: 14px 18px;
  background: linear-gradient(135deg, rgba(232, 168, 168, 0.34), rgba(245, 215, 215, 0.50));
  border-bottom: 1px solid rgba(210, 130, 130, 0.36);
}
.eg-card .eg-h h3 {
  font-size: 15px;
  margin: 0;
  color: #7a2c2c;
}
.eg-card .eg-body { padding: 12px 18px; }
.eg-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 9px 0;
  border-bottom: 1px dashed rgba(60, 100, 150, 0.10);
  font-size: 13.5px;
  flex-wrap: wrap;
}
.eg-row:last-child { border: none; }
.eg-row .eg-t { color: #1e3a5f; }
.eg-row .eg-v {
  font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
  font-size: 13px;
  color: #1e3a5f;
  font-weight: 600;
}
.eg-row .eg-k {
  font-size: 11px;
  color: #6f8198;
  display: block;
  margin-top: 2px;
  font-weight: 400;
}
.eg-card.green .eg-h {
  background: linear-gradient(135deg, rgba(168, 200, 179, 0.40), rgba(213, 230, 218, 0.55));
  border-bottom-color: rgba(108, 155, 130, 0.40);
}
.eg-card.green .eg-h h3 { color: #2a5238; }
.eg-card.blue .eg-h {
  background: linear-gradient(135deg, rgba(168, 200, 220, 0.40), rgba(214, 232, 244, 0.55));
  border-bottom-color: rgba(108, 155, 198, 0.42);
}
.eg-card.blue .eg-h h3 { color: #1e3a5f; }
.eg-link {
  color: #3b6da8;
  text-decoration: none;
  border-bottom: 1px dashed rgba(59, 109, 168, 0.45);
  padding-bottom: 1px;
  transition: color .18s, border-color .18s;
}
.eg-link:hover { color: #1e3a5f; border-bottom-color: rgba(30, 58, 95, 0.85); }
.eg-link-icon {
  font-size: 11px;
  opacity: 0.78;
  font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
  margin-left: 2px;
}

/* ============ Footer ============ */
.foot {
  text-align: center;
  padding: 28px 18px 18px;
  font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
  font-size: 11px;
  color: #6f8198;
  letter-spacing: 0.05em;
}
.foot-sub { margin-top: 4px; opacity: 0.78; }

/* ============ POI 分类 marker ============ */
.poi-marker {
  width: 24px; height: 24px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 12px;
  font-weight: 700;
  color: #1e3a5f;
  border: 2px solid #fff;
  box-shadow: 0 3px 10px rgba(60, 100, 150, 0.45);
}
.poi-marker.poi-sight     { background: linear-gradient(135deg, #c9d6de, #7892a4); color: #263f52; font-size: 13px; }
.poi-marker.poi-hotel     { background: linear-gradient(135deg, #b8d6c0, #6c9b7e); color: #1e4530; font-size: 13px; }
.poi-marker.poi-food      { background: linear-gradient(135deg, #f8de84, #d3a034); font-size: 11px; color: #5a3d0e; }
.poi-marker.poi-transport { background: linear-gradient(135deg, #ee9c9c, #bd4b4b); color: #5f2525; font-size: 12px; }
.poi-marker.poi-rental    { background: linear-gradient(135deg, #6c9bd9, #2f64a8); color: #fff; font-size: 13px; box-shadow: 0 3px 12px rgba(47, 100, 168, 0.55); }

/* 起点住宿 marker:加金色边 + 右上角"起"角标,跟当天其它 hotel 区分 */
.poi-marker.poi-start {
  position: relative;
  border-color: #f5c065;
  box-shadow: 0 3px 12px rgba(214, 156, 60, 0.50);
}
.poi-badge {
  position: absolute;
  top: -7px;
  right: -7px;
  background: linear-gradient(135deg, #f5c065, #d69240);
  color: #4a2c0a;
  border: 1.5px solid #fff;
  border-radius: 999px;
  font-size: 9px;
  font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
  font-weight: 700;
  padding: 1px 4px;
  letter-spacing: 0.04em;
  box-shadow: 0 1px 4px rgba(120, 80, 20, 0.35);
  line-height: 1.1;
}

.popup-kind {
  display: inline-block;
  font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
  font-size: 10px;
  letter-spacing: 0.12em;
  padding: 2px 8px;
  border-radius: 999px;
  margin-bottom: 6px;
  font-weight: 600;
}
.popup-kind.poi-sight     { background: rgba(120, 146, 164, 0.18); color: #263f52; border: 1px solid rgba(120, 146, 164, 0.55); }
.popup-kind.poi-hotel     { background: rgba(108, 155, 130, 0.18); color: #1e4530; border: 1px solid rgba(108, 155, 130, 0.55); }
.popup-kind.poi-food      { background: rgba(211, 160, 52, 0.18); color: #5a3d0e; border: 1px solid rgba(211, 160, 52, 0.55); }
.popup-kind.poi-transport { background: rgba(189, 75, 75, 0.18); color: #5f2525; border: 1px solid rgba(189, 75, 75, 0.55); }
.popup-kind.poi-rental    { background: rgba(47, 100, 168, 0.18); color: #1e3a6f; border: 1px solid rgba(47, 100, 168, 0.55); }

/* ============ POI 图例 ============ */
.poi-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 16px;
  padding: 9px 11px;
  background: rgba(245, 250, 254, 0.65);
  border: 1px solid rgba(60, 100, 150, 0.10);
  border-radius: 11px;
}
.legend-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
  font-size: 11px;
  letter-spacing: 0.04em;
  padding: 3px 9px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.70);
  color: #2c4868;
}
.lc-dot,
.legend-icon {
  width: 18px;
  height: 18px;
  border-radius: 999px;
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 11px;
  line-height: 1;
  border: 1px solid rgba(255, 255, 255, 0.85);
  box-shadow: 0 1px 4px rgba(60, 100, 150, 0.18);
}
.legend-sight     .lc-dot,
.legend-icon-sight { background: linear-gradient(135deg, #c9d6de, #7892a4); color: #263f52; }
.legend-hotel     .lc-dot,
.legend-icon-hotel { background: linear-gradient(135deg, #b8d6c0, #6c9b7e); color: #1e4530; }
.legend-food      .lc-dot,
.legend-icon-food { background: linear-gradient(135deg, #f8de84, #d3a034); color: #5a3d0e; }
.legend-transport .lc-dot,
.legend-icon-transport { background: linear-gradient(135deg, #ee9c9c, #bd4b4b); color: #5f2525; }
.legend-rental    .lc-dot,
.legend-icon-rental { background: linear-gradient(135deg, #6c9bd9, #2f64a8); color: #fff; }

/* ============ 总览地图 · 城市标记 ============ */
.city-marker {
  position: relative;
  width: 32px; height: 32px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
  font-size: 12px;
  font-weight: 700;
  color: #1e3a5f;
  border: 2.5px solid #fff;
  box-shadow: 0 4px 14px rgba(60, 100, 150, 0.40);
  background: linear-gradient(135deg, #b6d8ec, #6ca2c8);
}
.city-marker .cm-num { position: relative; z-index: 2; }
.city-marker .cm-pulse {
  position: absolute;
  inset: -2px;
  border-radius: 50%;
  border: 2px solid currentColor;
  opacity: 0;
  pointer-events: none;
}
.city-marker.city-start    .cm-pulse,
.city-marker.city-end      .cm-pulse,
.city-marker.city-landmark .cm-pulse {
  animation: cmPulse 2.6s ease-out infinite;
}
@keyframes cmPulse {
  0%   { transform: scale(1);   opacity: 0.55; }
  80%  { transform: scale(1.85); opacity: 0; }
  100% { transform: scale(1.85); opacity: 0; }
}

.city-marker.city-start    { background: linear-gradient(135deg, #f0c896, #d09a6a); color: #5a3a14; }
.city-marker.city-end      { background: linear-gradient(135deg, #e8b0bc, #c47a8a); color: #5a2030; }
.city-marker.city-hub      { background: linear-gradient(135deg, #b6d8ec, #6ca2c8); color: #16334e; }
.city-marker.city-stop     { background: linear-gradient(135deg, #b8d6c0, #6c9b7e); color: #1e4530; }
.city-marker.city-landmark { background: linear-gradient(135deg, #e08585, #b66060); color: #fff; border-color: #f0d0d0; }

.city-label {
  position: absolute;
  top: 34px;
  left: 50%;
  transform: translateX(-50%) translateY(-4px);
  white-space: nowrap;
  font-size: 11px;
  font-weight: 600;
  color: #1e3a5f;
  background: rgba(255, 255, 255, 0.92);
  border: 1px solid rgba(108, 155, 198, 0.40);
  border-radius: 5px;
  padding: 2px 7px;
  box-shadow: 0 4px 12px -4px rgba(60, 100, 150, 0.30);
  pointer-events: none;
  opacity: 0;
  visibility: hidden;
  transition: opacity .18s ease, transform .18s ease, visibility 0s linear .18s;
}
.leaflet-marker-icon.show-label .city-label {
  opacity: 1;
  visibility: visible;
  transform: translateX(-50%) translateY(0);
  transition: opacity .18s ease, transform .18s ease, visibility 0s;
}
.city-label .cl-en {
  display: block;
  font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
  font-size: 9px;
  font-weight: 400;
  letter-spacing: 0.04em;
  color: #6f8198;
  margin-top: 1px;
}
.popup-kind.popup-city {
  background: rgba(232, 168, 168, 0.22);
  color: #7a2c2c;
  border: 1px solid rgba(210, 130, 130, 0.46);
}

/* ============ 路线段交通图标 + 方向箭头 ============ */
.route-icon {
  width: 28px; height: 28px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  border: 1.5px solid rgba(255, 255, 255, 0.95);
  box-shadow: 0 3px 10px rgba(60, 100, 150, 0.42);
  background: rgba(255, 255, 255, 0.95);
  color: #1e3a5f;
  pointer-events: none;
}
.route-icon.route-plane {
  background: linear-gradient(135deg, rgba(232, 196, 152, 0.96), rgba(208, 154, 106, 0.96));
  color: #5a3a14;
}
/* 路书每日 mini map 上的飞机段:更亮的黄,跟自驾的蓝形成强对比 */
.route-icon.route-plane-day {
  background: linear-gradient(135deg, rgba(244, 218, 130, 0.96), rgba(212, 161, 74, 0.96));
  color: #5a3a14;
}
.route-icon.route-car {
  background: linear-gradient(135deg, rgba(184, 214, 232, 0.96), rgba(108, 162, 200, 0.96));
  color: #16334e;
}
/* 路书每日 mini map 上,最长一段中点的蓝色车 —— 跟取/还车 marker 同蓝色系,更醒目 */
.route-icon.route-car-day {
  background: linear-gradient(135deg, rgba(108, 155, 217, 0.96), rgba(47, 100, 168, 0.96));
  color: #fff;
  box-shadow: 0 3px 12px rgba(47, 100, 168, 0.55);
}
.route-icon span { display: inline-block; line-height: 1; }

.route-arrow {
  width: 0; height: 0;
  border-left: 6px solid transparent;
  border-right: 6px solid transparent;
  border-bottom: 11px solid #6ca2c8;
  filter: drop-shadow(0 2px 4px rgba(60, 100, 150, 0.45));
  pointer-events: none;
}

/* ============ Photos · 按天图库 + 大图查看 ============ */
.photo-intro-card p {
  margin: 0;
  color: #4d6580;
  font-size: 13px;
}
.photo-day-rail {
  position: sticky;
  top: 66px;
  z-index: 12;
  display: flex;
  gap: 7px;
  overflow-x: auto;
  overscroll-behavior-inline: contain;
  scrollbar-width: none;
  padding: 9px;
  margin: 0 0 18px;
  border: 1px solid rgba(60, 100, 150, 0.14);
  border-radius: 14px;
  background: rgba(245, 250, 254, 0.90);
  backdrop-filter: blur(18px) saturate(1.15);
  -webkit-backdrop-filter: blur(18px) saturate(1.15);
  box-shadow: 0 6px 20px -10px rgba(60, 100, 150, 0.28);
}
.photo-day-rail::-webkit-scrollbar { display: none; }
.photo-day-pill {
  flex: 0 0 auto;
  min-width: 46px;
  padding: 7px 11px;
  border: 1px solid rgba(108, 155, 198, 0.30);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.78);
  color: #3b6da8;
  font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
  font-size: 11px;
  font-weight: 700;
  cursor: pointer;
  transition: color .18s, border-color .18s, background .18s, transform .18s;
}
.photo-day-pill:hover,
.photo-day-pill:focus-visible {
  color: #1e3a5f;
  border-color: rgba(59, 109, 168, 0.62);
  background: #fff;
  transform: translateY(-1px);
}
.photo-day-section {
  scroll-margin-top: 128px;
  margin-bottom: 30px;
}
.photo-day-header {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 16px;
  padding: 0 2px 11px;
  margin-bottom: 13px;
  border-bottom: 1px solid rgba(60, 100, 150, 0.14);
}
.photo-day-code {
  margin-bottom: 2px;
  color: #6c9b7e;
  font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .10em;
}
.photo-day-header h3 {
  margin: 0;
  color: #1e3a5f;
  font-size: 18px;
  font-weight: 650;
}
.photo-day-count {
  flex: 0 0 auto;
  padding: 4px 9px;
  border: 1px solid rgba(108, 155, 198, 0.22);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.62);
  color: #6f8198;
  font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
  font-size: 10px;
}
.photo-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(190px, 1fr));
  gap: 14px;
}
.photo-card {
  min-width: 0;
  padding: 0;
  overflow: hidden;
  border: 1px solid rgba(60, 100, 150, 0.13);
  border-radius: 15px;
  background: rgba(255, 255, 255, 0.76);
  color: #1e3a5f;
  box-shadow: 0 7px 22px -12px rgba(60, 100, 150, 0.35);
  cursor: zoom-in;
  text-align: left;
  font-family: inherit;
  transition: transform .20s ease, box-shadow .20s ease, border-color .20s ease;
}
.photo-card:hover,
.photo-card:focus-visible {
  transform: translateY(-3px);
  border-color: rgba(59, 109, 168, 0.42);
  box-shadow: 0 14px 28px -14px rgba(60, 100, 150, 0.48);
  outline: none;
}
.photo-card-media {
  position: relative;
  display: block;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  background: linear-gradient(145deg, #dce9f2, #cbded7);
}
.photo-card-media::after {
  content: '放大';
  position: absolute;
  right: 8px;
  bottom: 8px;
  padding: 3px 7px;
  border-radius: 999px;
  background: rgba(18, 36, 58, 0.70);
  color: #fff;
  font-size: 9px;
  letter-spacing: .06em;
  opacity: 0;
  transform: translateY(3px);
  transition: opacity .18s, transform .18s;
}
.photo-card:hover .photo-card-media::after,
.photo-card:focus-visible .photo-card-media::after {
  opacity: 1;
  transform: translateY(0);
}
.photo-card img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
  transition: transform .35s ease;
}
.photo-card:hover img,
.photo-card:focus-visible img {
  transform: scale(1.025);
}
.photo-card-caption {
  display: block;
  min-height: 44px;
  padding: 11px 12px;
  color: #2c4868;
  font-size: 12px;
  font-weight: 600;
  line-height: 1.45;
}
.photo-empty {
  color: #6f8198;
  text-align: center;
}
body.photo-lightbox-open { overflow: hidden; }
.photo-lightbox[hidden] { display: none; }
.photo-lightbox {
  position: fixed;
  inset: 0;
  z-index: 300;
  display: grid;
  grid-template-columns: 64px minmax(0, 1fr) 64px;
  align-items: center;
  gap: 10px;
  padding: 24px;
  background: rgba(9, 20, 34, 0.93);
  backdrop-filter: blur(22px);
  -webkit-backdrop-filter: blur(22px);
}
.photo-lightbox-figure {
  min-width: 0;
  max-width: min(1180px, 100%);
  max-height: calc(100vh - 48px);
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
}
.photo-lightbox-figure img {
  display: block;
  max-width: 100%;
  max-height: calc(100vh - 128px);
  width: auto;
  height: auto;
  object-fit: contain;
  border-radius: 11px;
  background: #10233a;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.42);
}
.photo-lightbox-figure figcaption {
  width: 100%;
  min-height: 42px;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 2px 16px;
  align-items: center;
  color: #fff;
}
.photo-lightbox-meta {
  grid-column: 1;
  color: #a8c8dc;
  font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
  font-size: 10px;
  letter-spacing: .06em;
}
.photo-lightbox-figure figcaption strong {
  grid-column: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 13px;
  font-weight: 600;
}
.photo-lightbox-counter {
  grid-column: 2;
  grid-row: 1 / span 2;
  align-self: center;
  color: #b8c8d8;
  font-family: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
  font-size: 11px;
}
.photo-lightbox-close,
.photo-lightbox-nav {
  border: 1px solid rgba(255, 255, 255, 0.22);
  background: rgba(255, 255, 255, 0.10);
  color: #fff;
  cursor: pointer;
  transition: background .18s, border-color .18s, transform .18s;
}
.photo-lightbox-close:hover,
.photo-lightbox-close:focus-visible,
.photo-lightbox-nav:hover,
.photo-lightbox-nav:focus-visible {
  border-color: rgba(255, 255, 255, 0.52);
  background: rgba(255, 255, 255, 0.18);
  outline: none;
}
.photo-lightbox-close {
  position: absolute;
  top: max(16px, env(safe-area-inset-top));
  right: max(16px, env(safe-area-inset-right));
  z-index: 2;
  width: 42px;
  height: 42px;
  border-radius: 50%;
  font-size: 28px;
  line-height: 1;
}
.photo-lightbox-nav {
  width: 52px;
  height: 70px;
  border-radius: 14px;
  font-size: 42px;
  line-height: 1;
}
.photo-lightbox-prev { grid-column: 1; }
.photo-lightbox-next { grid-column: 3; }
.photo-lightbox-nav:active { transform: scale(.96); }

/* ============ Mobile fine-tuning ============ */
@media (max-width: 700px) {
  body { font-size: 14.5px; }
  .hero { margin: 28px auto 20px; padding: 0 16px; }
  .hero-title { font-size: clamp(28px, 9vw, 44px); }
  .hero-tag { letter-spacing: 0.20em; }
  .hero-meta { gap: 6px; }
  .hero-pill { font-size: 11px; padding: 6px 12px; }
  main { padding: 0 14px 50px; }
  .card { padding: 16px; border-radius: 16px; }
  .card-h { gap: 8px; padding-bottom: 10px; margin-bottom: 12px; }
  .card-h h2 { font-size: 16px; }
  .roadbook-highlight-item { padding: 13px 14px; }
  .day-rail { top: 60px; }   /* 小屏 navbar top:10 + 42 高 + 余量 */
  .day-card { padding: 18px; border-radius: 18px; }
  .day-head { gap: 10px; padding-bottom: 12px; margin-bottom: 14px; }
  .day-num { font-size: 11px; padding: 5px 9px; }
  .day-city { font-size: 18px; }
  .map { height: 480px; }
  .day-map { height: 200px; }
  .map-fs-btn .fs-label { display: none; }
  .map-fs-btn { padding: 6px 8px; }
  .bar-label { flex: 0 0 64px; font-size: 12px; }
  .bar-val { flex: 0 0 96px; font-size: 11px; }
  .bc-val { font-size: 24px; }
  .eg-row .eg-v { font-size: 12.5px; }
  .photo-day-rail { top: 60px; margin-bottom: 15px; }
  .photo-day-section { scroll-margin-top: 118px; margin-bottom: 25px; }
  .photo-day-header h3 { font-size: 16px; }
  .photo-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  .photo-card { border-radius: 12px; }
  .photo-card-caption { min-height: 42px; padding: 9px 10px; font-size: 11px; }
  .photo-card-media::after { display: none; }
  .photo-lightbox {
    grid-template-columns: 44px minmax(0, 1fr) 44px;
    gap: 5px;
    padding: max(58px, env(safe-area-inset-top)) 8px max(18px, env(safe-area-inset-bottom));
  }
  .photo-lightbox-nav {
    width: 40px;
    height: 58px;
    border-radius: 12px;
    font-size: 34px;
  }
  .photo-lightbox-figure img { max-height: calc(100vh - 150px); border-radius: 8px; }
  .photo-lightbox-figure figcaption { gap: 2px 8px; }
  .photo-lightbox-meta { font-size: 9px; }
  .photo-lightbox-figure figcaption strong { font-size: 12px; }
  .photo-lightbox-counter { font-size: 10px; }
}

@media (min-width: 701px) and (max-width: 1100px) {
  .hero-title { font-size: clamp(36px, 5.5vw, 56px); }
  .map { height: 600px; }
}

@media (max-width: 380px) {
  .day-meta-grid { grid-template-columns: 1fr; }
  .hero-title { font-size: 26px; }
}
