/* Personal itinerary editor.  The jp- prefix keeps this layer separate from
   the existing Sian schedule and shared trip lock styles. */

/* Card gestures move a visit; editable fields retain native text selection. */
body.journey-app .jp-row,
body.journey-app .jp-row * { -webkit-user-select: none; user-select: none; -webkit-touch-callout: none; -webkit-user-drag: none; }
body.journey-app .jp-row :is(input,textarea,[contenteditable=true]) { -webkit-user-select: text; user-select: text; -webkit-touch-callout: default; }
/* App-wide selection lock (owner 2026-09-14): the journey app behaves like a
   native app — no text selection, no callout/magnifier anywhere; only form
   fields and editable regions keep selection. Copy affordances arrive later
   as explicit copy buttons where the owner asks for them. */
body.journey-app,
body.journey-app * { -webkit-user-select: none; user-select: none; -webkit-touch-callout: none; -webkit-user-drag: none; }
body.journey-app :is(input,textarea,[contenteditable=true]) { -webkit-user-select: text; user-select: text; -webkit-touch-callout: default; }

:root {
  --jp-ink: #20302d;
  --jp-muted: #64716a;
  --jp-line: #d9e3dd;
  --jp-paper: #fbfcf8;
  --jp-surface: #ffffff;
  --jp-ground: #f1f5f1;
  --jp-sea: #176761;
  --jp-sea-soft: #edf7f5;
  --jp-orange: #d85c27;
  --jp-orange-soft: #fff0e8;
  --jp-danger: #a5392b;
  --jp-radius: 14px;
}

body.journey-app .jp-editor,
body.journey-app .jp-dialog,
body.journey-app .jp-toast {
  color: var(--jp-ink);
  font-family: inherit;
}

body.journey-app .jp-editor {
  margin: 0 0 18px;
  padding: 0 0 18px;
  border-bottom: 1px solid var(--jp-line);
}

body.journey-app .jp-editor-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 14px;
  padding: 4px 0 10px;
}

body.journey-app .jp-kicker {
  margin: 0 0 3px;
  color: var(--jp-sea);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .04em;
  text-transform: uppercase;
}

body.journey-app .jp-editor h2,
body.journey-app .jp-dialog h2 {
  margin: 0;
  color: var(--jp-ink);
  font-size: 19px;
  font-weight: 850;
  line-height: 1.35;
}

body.journey-app .jp-route-summary {
  margin: 4px 0 0;
  color: var(--jp-muted);
  font-size: 12px;
  line-height: 1.45;
}

body.journey-app .jp-head-actions,
body.journey-app .jp-editor-foot,
body.journey-app .jp-row-minus,
body.journey-app .jp-dialog-actions,
body.journey-app .jp-filters {
  display: flex;
  align-items: center;
  gap: 7px;
  flex-wrap: wrap;
}

body.journey-app .jp-head-actions {
  justify-content: flex-end;
  flex: 0 0 auto;
}

body.journey-app .jp-head-actions button,
body.journey-app .jp-editor-foot button,
body.journey-app .jp-empty .jp-add,
body.journey-app .jp-row-minus,
body.journey-app .jp-dialog button,
body.journey-app .jp-filter {
  /* Pass-2 C3: the 44px target gate applies on desktop too, not only ≤560px. */
  min-height: 44px;
  padding: 7px 11px;
  border: 1px solid var(--jp-line);
  border-radius: 10px;
  background: var(--jp-surface);
  color: var(--jp-sea);
  cursor: pointer;
  font-size: 12px;
  font-weight: 800;
  line-height: 1.25;
}

body.journey-app .jp-head-actions button:hover,
body.journey-app .jp-editor-foot button:hover,
body.journey-app .jp-empty .jp-add:hover,
body.journey-app .jp-row-minus:hover,
body.journey-app .jp-dialog button:hover,
body.journey-app .jp-filter:hover {
  border-color: var(--jp-sea);
}

body.journey-app .jp-head-actions .jp-undo,
body.journey-app .jp-editor-foot .jp-add,
body.journey-app .jp-empty .jp-add,
body.journey-app .jp-dialog .jp-primary {
  border-color: var(--jp-sea);
  background: var(--jp-sea);
  color: #fff;
}

body.journey-app .jp-head-actions .jp-undo:hover,
body.journey-app .jp-editor-foot .jp-add:hover,
body.journey-app .jp-empty .jp-add:hover,
body.journey-app .jp-dialog .jp-primary:hover {
  background: #104e4b;
}

body.journey-app .jp-local-note {
  margin: 0 0 12px;
  color: var(--jp-muted);
  font-size: 12px;
  line-height: 1.45;
}

body.journey-app .jp-list {
  display: grid;
  gap: 9px;
}

/* Finger-first rows: vertical panning stays native until a hold lifts the
   row; the lifted row then owns the gesture (see onTouchMove). */
body.journey-app .jp-row {
  position: relative;
  min-width: 0;
  padding: 11px 12px 10px;
  border: 1px solid var(--jp-line);
  border-radius: var(--jp-radius);
  background: var(--jp-surface);
  box-shadow: 0 4px 14px rgba(32, 48, 45, .045);
  touch-action: pan-y;
  transition: transform .18s ease;
}

body.journey-app .jp-row.jp-lifted {
  position: relative;
  z-index: 3;
  transform: scale(1.012);
  box-shadow: 0 10px 24px rgba(32, 48, 45, .16);
  user-select: none;
  -webkit-user-select: none;
  -webkit-touch-callout: none;
}

/* Swipe-to-reveal delete (owner 2026-09-14): sliding the row content left
   exposes a fixed-width delete button. The underlay is a TRANSPARENT frame
   carrying the row's own padding, so a closed row shows zero red — the first
   full-bleed red layer bled through the padding ring and painted a permanent
   red border on every row. The button itself is the only red surface. */
body.journey-app .jp-row.jp-swiping,
body.journey-app .jp-row.jp-swipe-open { overflow: hidden; }

body.journey-app .jp-row-under {
  position: absolute;
  inset: 0;
  z-index: 0;
  display: flex;
  justify-content: flex-end;
  align-items: stretch;
  padding: 11px 12px 10px; /* .jp-row padding — the button lives in the content box */
}

body.journey-app .jp-row-under button {
  width: 88px;
  border: 0;
  margin: 0;
  padding: 0;
  background: var(--jp-danger);
  color: #fff;
  font: inherit;
  font-weight: 700;
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
}

body.journey-app .jp-row .jp-row-main {
  position: relative;
  z-index: 1;
  background: var(--jp-surface);
  border-radius: inherit;
  transition: transform .18s ease;
}

body.journey-app .jp-row.jp-swiping .jp-row-main { transition: none; }

body.journey-app .jp-row.jp-swiping {
  transition: none;
  will-change: transform;
  user-select: none;
  -webkit-user-select: none;
  -webkit-touch-callout: none;
}

body.journey-app #jto-update-bar {
  position: fixed;
  left: 12px;
  right: 12px;
  bottom: 12px;
  z-index: 60;
  display: flex;
  gap: 10px;
  align-items: center;
  justify-content: space-between;
  padding: 12px 16px;
  border-radius: 14px;
  background: #143836;
  color: #fff;
  box-shadow: 0 10px 28px rgba(0, 0, 0, .28);
  font-size: 14px;
}

body.journey-app #jto-update-bar button {
  border: 0;
  border-radius: 999px;
  background: #ffb454;
  color: #143836;
  font: inherit;
  font-weight: 800;
  padding: 8px 14px;
}

/* No armed-state paint (owner 2026-09-14: the red border read as an error and
   cluttered the drag); the sliding row plus the revealed red delete button are
   feedback enough. The jp-swipe-armed class stays on the row for logic/tests. */

body.journey-app .jp-row:focus-visible {
  outline: 3px solid var(--jp-sea);
  outline-offset: 2px;
}

body.journey-app #day-tabs button.jp-day-drop {
  outline: 3px solid var(--jp-orange);
  outline-offset: 1px;
  background: var(--jp-orange-soft);
}

body.journey-app .jp-row.jp-row-locked {
  border-color: #c8d7d1;
  background: #f7faf8;
}

body.journey-app .jp-row.jp-drop-before,
body.journey-app .jp-row.jp-drop-after {
  position: relative;
}
body.journey-app .jp-row.jp-drop-before::before,
body.journey-app .jp-row.jp-drop-after::after {
  position: absolute;
  right: 8px;
  left: 8px;
  height: 4px;
  border-radius: 4px;
  background: var(--jp-orange);
  content: "";
  pointer-events: none;
}
body.journey-app .jp-row.jp-drop-before::before { top: -7px; }
body.journey-app .jp-row.jp-drop-after::after { bottom: -7px; }

body.journey-app .jp-row-main {
  display: grid;
  grid-template-columns: 28px minmax(0, 1fr) auto 44px;
  align-items: start;
  gap: 8px;
  min-width: 0;
}

body.journey-app .jp-row-minus {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  min-width: 44px;
  min-height: 44px;
  padding: 0;
  color: var(--jp-danger);
  font-size: 24px;
  line-height: 1;
}

body.journey-app .jp-number {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  min-height: 38px;
  border-radius: 50%;
  background: var(--jp-orange-soft);
  color: var(--jp-orange);
  font-size: 12px;
  font-weight: 850;
  font-variant-numeric: tabular-nums;
}

body.journey-app .jp-row-copy { min-width: 0; }

body.journey-app .jp-row-links {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-width: 0;
}

body.journey-app .jp-row-top {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 8px;
  min-width: 0;
}

body.journey-app .jp-row-top h3 {
  min-width: 0;
  margin: 1px 0 0;
  overflow-wrap: anywhere;
  color: var(--jp-ink);
  font-size: var(--fs-title);
  font-weight: 850;
  line-height: 1.35;
}

body.journey-app .jp-row-time {
  flex: 0 0 auto;
  max-width: 48%;
  color: var(--jp-sea);
  font-size: var(--fs-caption, 12px);
  line-height: 1.4;
  text-align: right;
}

body.journey-app .jp-time {
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  max-width: 100%;
  min-height: 44px;
  padding: 5px 7px;
  border: 1px solid var(--jp-line);
  border-radius: var(--chip-radius, 999px);
  background: var(--jp-sea-soft);
  color: var(--jp-sea);
  cursor: pointer;
  font-size: var(--fs-caption, 12px);
  font-weight: 800;
  line-height: 1.25;
  white-space: normal;
}

body.journey-app .jp-time:hover { border-color: var(--jp-sea); }
body.journey-app .jp-time-readonly { display: inline-flex; align-items: center; cursor: default; }

body.journey-app .jp-row-meta {
  display: flex;
  align-items: center;
  gap: 7px;
  flex-wrap: wrap;
  margin-top: 6px;
}

body.journey-app .jp-status-label { display: inline-flex; }

body.journey-app .jp-status-label select {
  display: inline-block;
  /* Native select exception: the row keeps one status control (Pass-1 C4);
     the 44px hit area is enforced here instead of swapping the element. */
  min-height: 44px;
  padding: 4px 26px 4px 8px;
  border: 1px solid var(--jp-line);
  border-radius: var(--chip-radius, 999px);
  background: var(--jp-surface);
  color: var(--jp-sea);
  cursor: pointer;
  font-size: var(--fs-caption, 12px);
  font-weight: 800;
}

body.journey-app .jp-status {
  display: inline-flex;
  align-items: center;
  min-height: 29px;
  padding: 4px 8px;
  border-radius: var(--chip-radius, 999px);
  background: #e7eeeb;
  color: var(--jp-muted);
  font-size: var(--fs-caption, 12px);
  font-weight: 850;
}

body.journey-app .jp-status-locked { background: #dfeae5; color: var(--jp-ink); }

body.journey-app .jp-stay {
  color: var(--jp-muted);
  font-size: var(--fs-caption, 12px);
}

body.journey-app .jp-fact {
  margin: 6px 0 0;
  color: var(--jp-muted);
  font-size: var(--fs-body, 13px);
  line-height: 1.45;
}

/* Desktop control alignment: the time, detail and TMAP controls share one
   44px border-box geometry so their top and bottom edges match within the
   row-links flex line. inline-flex centers labels without baseline offsets;
   long labels wrap taller instead of clipping. Mobile already enforces 44px. */
body.journey-app .jp-map {
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 40px;
  min-height: 44px;
  padding: 7px 8px;
  border: 1px solid var(--jp-line);
  border-radius: 10px;
  background: var(--jp-surface);
  color: var(--jp-sea);
  cursor: pointer;
  font-size: 12px;
  font-weight: 800;
}

body.journey-app .jp-map:hover { border-color: var(--jp-sea); }

/* One-tap confirmation of a candidate lives beside the row's other controls.
   It borrows the same 44px border-box geometry; only the fill marks it as the
   affirmative action, and edit mode never renders it. */
body.journey-app .jp-confirm {
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  padding: 7px 10px;
  border: 1px solid var(--jp-sea);
  border-radius: 10px;
  background: var(--jp-sea);
  color: #fff;
  cursor: pointer;
  font-size: 12px;
  font-weight: 800;
  white-space: nowrap;
}

body.journey-app .jp-confirm:hover { filter: brightness(1.05); }

body.journey-app .jp-tmap {
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  padding: 7px 8px;
  border: 1px solid #cf9e4c;
  border-radius: 10px;
  background: #fff8e8;
  color: #8a5a0a;
  font-size: 12px;
  font-weight: 850;
  text-decoration: none;
  white-space: nowrap;
}

body.journey-app .jp-tmap:hover { border-color: #8a5a0a; }

body.journey-app .jp-readonly-badge,
body.journey-app .jp-readonly-note {
  color: var(--jp-muted);
  font-size: 12px;
  line-height: 1.4;
}

body.journey-app .jp-empty {
  display: grid;
  gap: 3px;
  padding: 17px 14px;
  border: 1px dashed var(--jp-line);
  border-radius: var(--jp-radius);
  background: var(--jp-ground);
  color: var(--jp-muted);
  font-size: 12px;
  line-height: 1.45;
}

body.journey-app .jp-empty strong { color: var(--jp-ink); font-size: 14px; }

body.journey-app .jp-empty .jp-add { min-height: 44px; justify-self: start; margin-top: 8px; }

body.journey-app .jp-recovery {
  margin-top: 10px;
  padding: 10px 12px;
  border: 1px dashed var(--jp-line);
  border-radius: var(--jp-radius);
  background: var(--jp-ground);
  color: var(--jp-muted);
  font-size: 12px;
  line-height: 1.45;
}
body.journey-app .jp-recovery summary {
  color: var(--jp-sea);
  cursor: pointer;
  font-weight: 850;
}
body.journey-app .jp-recovery p { margin: 8px 0 4px; }
body.journey-app .jp-recovery ul { display: grid; gap: 6px; margin: 6px 0 0; padding: 0; list-style: none; }
body.journey-app .jp-recovery-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 6px 0;
}
body.journey-app .jp-recovery-row button {
  min-height: 44px;
  padding: 7px 11px;
  border: 1px solid var(--jp-line);
  border-radius: 10px;
  background: var(--jp-surface);
  color: var(--jp-sea);
  cursor: pointer;
  font: inherit;
  font-size: 12px;
  font-weight: 800;
}

body.journey-app .jp-gesture-hint {
  margin: 0 0 10px;
  color: var(--jp-muted);
  font-size: 12px;
  line-height: 1.45;
}

@media (hover: hover) {
  body.journey-app .jp-hint-touch { display: none; }
}

body.journey-app .jp-add-row {
  display: block;
  width: 100%;
  min-height: 44px;
  margin-top: 9px;
  border: 1px dashed var(--jp-line);
  border-radius: var(--jp-radius);
  background: var(--jp-ground);
  color: var(--jp-sea);
  cursor: pointer;
  font: inherit;
  font-size: 13px;
  font-weight: 800;
}

body.journey-app .jp-add-row:hover { border-color: var(--jp-sea); }

body.journey-app .jp-time-advanced summary {
  cursor: pointer;
  color: var(--jp-sea);
  font-size: 12px;
  font-weight: 800;
}

body.journey-app .jp-editor-foot {
  justify-content: space-between;
  margin-top: 12px;
}

body.journey-app .jp-count {
  color: var(--jp-muted);
  font-size: 12px;
  line-height: 1.4;
  text-align: right;
}

body.journey-app .jp-dialog {
  width: min(520px, calc(100vw - 24px));
  max-width: calc(100vw - 24px);
  max-height: min(86dvh, 720px);
  margin: auto;
  padding: 18px;
  overflow: auto;
  overscroll-behavior: contain;
  border: 1px solid var(--jp-line);
  border-radius: 16px;
  background: var(--jp-paper);
  box-shadow: 0 20px 60px rgba(32, 48, 45, .24);
}

body.journey-app .jp-dialog::backdrop { background: rgba(20, 36, 33, .42); }

body.journey-app .jp-dialog-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 14px;
}

body.journey-app .jp-dialog-head > div { min-width: 0; }
body.journey-app .jp-dialog-head p:not(.jp-kicker) { margin: 3px 0 0; color: var(--jp-muted); font-size: 12px; line-height: 1.45; }

body.journey-app .jp-dialog-close {
  flex: 0 0 auto;
  min-height: 44px !important;
  padding: 7px 10px !important;
}

body.journey-app .jp-search { display: block; margin-bottom: 10px; }

body.journey-app .jp-search input,
body.journey-app .jp-time-fields input,
body.journey-app .jp-time-fields select {
  width: 100%;
  min-height: 44px;
  padding: 8px 10px;
  border: 1px solid var(--jp-line);
  border-radius: 10px;
  background: var(--jp-surface);
  color: var(--jp-ink);
  font-size: 14px;
}

body.journey-app .jp-search input:focus,
body.journey-app .jp-time-fields input:focus,
body.journey-app .jp-time-fields select:focus { border-color: var(--jp-sea); }

body.journey-app .jp-filters {
  overflow-x: auto;
  flex-wrap: nowrap;
  padding: 2px 0 5px;
  scrollbar-width: none;
}

body.journey-app .jp-filters::-webkit-scrollbar { display: none; }
body.journey-app .jp-filter { flex: 0 0 auto; }
body.journey-app .jp-filter.is-active { border-color: var(--jp-sea); background: var(--jp-sea); color: #fff; }

body.journey-app .jp-picker-count {
  min-height: 22px;
  margin: 4px 0 8px;
  color: var(--jp-muted);
  font-size: 12px;
}

body.journey-app .jp-picker-list {
  display: grid;
  gap: 7px;
  margin: 0;
  padding: 0;
  list-style: none;
}

body.journey-app .jp-picker-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  min-width: 0;
  padding: 10px 11px;
  border: 1px solid var(--jp-line);
  border-radius: 10px;
  background: var(--jp-surface);
}

body.journey-app .jp-picker-row > div { min-width: 0; }
body.journey-app .jp-picker-row strong { display: block; overflow-wrap: anywhere; font-size: 13px; line-height: 1.35; }
body.journey-app .jp-picker-row span { display: block; margin-top: 2px; color: var(--jp-muted); font-size: 12px; }
body.journey-app .jp-picker-row button { flex: 0 0 auto; }
body.journey-app .jp-picker-row button:disabled { background: var(--jp-ground); color: var(--jp-muted); cursor: default; opacity: .8; }
body.journey-app .jp-picker-empty { padding: 20px 10px; color: var(--jp-muted); font-size: 13px; text-align: center; }

body.journey-app .jp-time-fields {
  display: grid;
  gap: 11px;
}

body.journey-app .jp-time-fields label {
  display: grid;
  gap: 4px;
  color: var(--jp-ink);
  font-size: 12px;
  font-weight: 800;
}

body.journey-app .jp-input-hint {
  margin-left: 5px;
  color: var(--jp-muted);
  font-size: 12px;
  font-weight: 500;
}

body.journey-app .jp-dialog-error {
  margin: 10px 0 0;
  color: var(--jp-danger);
  font-size: 12px;
  line-height: 1.45;
}

body.journey-app .jp-dialog-actions {
  justify-content: flex-end;
  margin-top: 16px;
}

body.journey-app .jp-dialog .jp-secondary { color: var(--jp-muted); }

body.journey-app .jp-day-options {
  display: grid;
  gap: 8px;
}

body.journey-app .jp-day-options button {
  display: grid;
  gap: 2px;
  width: 100%;
  padding: 11px 12px;
  text-align: left;
}

body.journey-app .jp-day-options span { color: var(--jp-muted); font-size: 12px; font-weight: 500; }

body.journey-app .jp-toast {
  position: fixed;
  right: 16px;
  bottom: calc(var(--journey-nav-h, 78px) + 16px);
  z-index: 150;
  max-width: min(360px, calc(100vw - 32px));
  padding: 10px 13px;
  border: 1px solid var(--jp-line);
  border-radius: 10px;
  background: var(--jp-ink);
  color: #fff;
  font-size: 12px;
  line-height: 1.45;
  box-shadow: 0 8px 24px rgba(32, 48, 45, .2);
}

body.journey-app .jp-visually-hidden {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

body.journey-app .jp-editor :is(button, select, input):focus-visible,
body.journey-app .jp-dialog :is(button, select, input):focus-visible {
  outline: 3px solid var(--jp-sea);
  outline-offset: 2px;
}

@media (max-width: 560px) {
  body.journey-app .jp-editor button,
  body.journey-app .jp-editor select,
  body.journey-app .jp-editor input,
  body.journey-app .jp-editor a,
  body.journey-app .jp-dialog button,
  body.journey-app .jp-dialog select,
  body.journey-app .jp-dialog input,
  body.journey-app .jp-dialog a,
  body.journey-app .jp-filter {
    min-height: 44px;
  }

  body.journey-app .jp-editor-head { display: grid; grid-template-columns: 1fr; }
  body.journey-app .jp-head-actions { justify-content: flex-start; }
  body.journey-app .jp-row-main { grid-template-columns: 25px minmax(0, 1fr) 44px; }
  body.journey-app .jp-number { width: 25px; }
  body.journey-app .jp-row-top {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 5px;
  }
  body.journey-app .jp-row-time {
    max-width: none;
    text-align: left;
  }
  body.journey-app .jp-row-links {
    grid-column: 2;
    grid-row: 2;
    justify-self: start;
    margin-top: 8px;
  }
  body.journey-app .jp-status-label select,
  body.journey-app .jp-search input,
  body.journey-app .jp-time-fields input,
  body.journey-app .jp-time-fields select { font-size: 16px; }
  body.journey-app .jp-editor-foot { align-items: flex-start; flex-direction: column; }
  body.journey-app .jp-count { text-align: left; }
  body.journey-app .jp-dialog {
    align-self: end;
    width: 100%;
    max-width: 100%;
    max-height: min(88dvh, 720px);
    margin: auto 0 0;
    padding-bottom: calc(18px + env(safe-area-inset-bottom));
    border-bottom: 0;
    border-radius: 16px 16px 0 0;
  }
  body.journey-app .jp-toast { right: 12px; bottom: calc(var(--journey-nav-h, 78px) + 12px); }
}

@media (prefers-reduced-motion: reduce) {
  body.journey-app .jp-toast { transition: none; }
}

.jp-place-summary{font-size:12px;line-height:1.45;margin-top:5px}.jp-place-summary p{margin:3px 0}.jp-place-reason{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.jp-place-review{color:var(--muted,#586573)}

/* The connecting leg belongs to the adjacent stop pair, outside the draggable row. */
body.journey-app .jp-leg { display:flex; gap:12px; margin:0 12px; padding:8px 12px; color:var(--sn-ink2,#36454f); font-size:13px; line-height:1.5; }
body.journey-app .jp-leg > span:first-child { color:var(--sn-blue,#176b87); font-size:20px; }
body.journey-app .jp-leg small { display:block; color:var(--sn-mute,#647078); font-size:12px; }

/* Shared place action: same operation from discovery, pick rails and map sheet. */
body.journey-app .jp-place-plan {
  display: inline-flex; align-items: center; justify-content: center;
  min-height: 44px; padding: 8px 12px; border: 1px solid var(--sn-line2, #d6d9df);
  border-radius: 10px; background: var(--sn-blue-soft, #e8f0ff);
  color: var(--sn-blue, #2b6de9); font: inherit; font-size: 13px; font-weight: 700;
  line-height: 1.4; white-space: normal; text-align: center;
}
body.journey-app .c-acts:has(.jp-place-plan) { flex-wrap: wrap; gap: 6px 12px; }
body.journey-app .jp-placement { margin: 8px 0 0; color: var(--sn-ink2, #4b5563); font-size: 13px; line-height: 1.65; overflow-wrap: anywhere; }
body.journey-app .jp-place-note { margin: 4px 0 14px; color: var(--sn-ink2, #4b5563); font-size: 13px; line-height: 1.6; }
body.journey-app .jp-place-days { display: grid; gap: 10px; }
body.journey-app .jp-place-day { border: 1px solid var(--sn-line, #e6e8ec); border-radius: 12px; padding: 12px; }
body.journey-app .jp-place-day h3 { margin: 0 0 8px; font-size: 15px; }
body.journey-app .jp-placement-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 10px; margin-top: 6px; }
body.journey-app .jp-placement-row span { font-size: 13px; line-height: 1.6; overflow-wrap: anywhere; }
body.journey-app .jp-place-add,
body.journey-app .jp-placement-row button {
  min-height: 44px; padding: 9px 12px; border: 1px solid var(--sn-line2, #d6d9df);
  border-radius: 10px; color: var(--sn-blue, #2b6de9); background: var(--sn-blue-soft, #e8f0ff);
  font: inherit; font-size: 14px; font-weight: 700;
}
body.journey-app .jp-place-add { width: 100%; }
body.journey-app .jp-place-add:disabled { opacity: .55; cursor: not-allowed; }
body.journey-app .jp-place-result { min-height: 24px; margin-top: 12px; font-size: 13px; line-height: 1.6; }
body.journey-app #schedule-spine .jp-row { scroll-margin-block: 100px; }
@media (max-width: 360px) {
  body.journey-app .jp-placement-row { grid-template-columns: minmax(0, 1fr); }
}

/* Pass-6 (D2 S1/S2): one batch add per surface. The day choice itself is the
   itinerary's existing dialog, so these only carry the entry control. */
.disc-compare-add,
.disc-batch {
  display: block; width: 100%; min-height: 44px; margin: 12px 0 0; padding: 10px 12px;
  border: 1px solid var(--sn-line2, #d6d9df); border-radius: 10px; background: var(--sn-blue-soft, #e8f0ff);
  color: var(--sn-blue, #2b6de9); font: inherit; font-size: 14px; font-weight: 700; line-height: 1.4;
}
.disc-compare-add[hidden],
.disc-fav-batch[hidden] { display: none; }
body.journey-app .disc-fav-batch { margin: 0 32px; }
@media (max-width: 900px) {
  body.journey-app .disc-fav-batch { margin: 0 16px; }
}

/* Compact itinerary: the row carries orientation; its sheet carries actions. */
body.journey-app .jp-row {
  padding: 8px 10px;
  border-radius: 10px;
  box-shadow: none;
  cursor: pointer;
}
body.journey-app .jp-row-main { grid-template-columns: minmax(0, 1fr) 44px; align-items: center; gap: 6px; }
body.journey-app .jp-row-main--tools { grid-template-columns: minmax(0, 1fr) auto 44px; }
body.journey-app .jp-row-tools { display: flex; align-items: center; gap: 2px; }
body.journey-app .jp-tool {
  box-sizing: border-box; display: inline-flex; align-items: center; justify-content: center;
  width: 34px; min-width: 34px; min-height: 44px; margin: 0; padding: 0;
  border: 0; border-radius: 8px; background: none;
  color: var(--jp-muted); font-size: 17px; line-height: 1; font-weight: 700; cursor: pointer;
}
body.journey-app .jp-tool:hover { background: var(--jp-ground); color: var(--jp-ink); }
body.journey-app .jp-tool:disabled { opacity: .35; cursor: default; }
body.journey-app .jp-tool:disabled:hover { background: none; color: var(--jp-muted); }
body.journey-app .jp-tool-remove { color: var(--jp-danger); font-size: 20px; }
body.journey-app .jp-row-copy > h3 {
  margin: 0;
  color: var(--jp-ink);
  font-size: 15px;
  font-weight: 750;
  line-height: 22px;
  word-break: keep-all;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
body.journey-app .jp-row-meta { margin: 0; gap: 8px; flex-wrap: nowrap; min-width: 0; }
body.journey-app .jp-row .jp-time {
  min-height: 44px;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: none;
  font-size: 12px;
  font-weight: 650;
  justify-content: flex-start;
  text-align: left;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  display: block;
  flex-shrink: 1;
}
body.journey-app .jp-compact-status,
body.journey-app .jp-compact-stay { color: var(--jp-muted); font-size: 12px; white-space: nowrap; }
body.journey-app .jp-row-menu {
  width: 44px; height: 44px; min-height: 44px; padding: 0;
  border: 0; border-radius: 4px; background: none;
  color: var(--jp-muted); font-size: 13px; letter-spacing: 2px; cursor: pointer;
}
body.journey-app .jp-row-menu:hover { background: var(--jp-ground); color: var(--jp-ink); }
body.journey-app .jp-row.jp-lifted {
  z-index: 10; pointer-events: none; transform: scale(1.02);
  box-shadow: 0 14px 28px rgba(32,48,45,.18); transition: none;
}
body.journey-app .jp-leg { transition: transform .18s ease; }
body.journey-app .jp-row.jp-lifted + .jp-leg { visibility: hidden; }
body.journey-app .jp-actions-dialog,
body.journey-app .jp-time-dialog {
  position: fixed; inset: auto 0 0; margin: auto auto 0;
  box-sizing: border-box; width: min(100%, 560px); max-width: 100%;
  max-height: 88dvh; padding: 18px 20px calc(18px + env(safe-area-inset-bottom));
  border-radius: 14px 14px 0 0; border-bottom: 0;
  overscroll-behavior: contain;
}
body.journey-app .jp-actions-dialog[open],
body.journey-app .jp-time-dialog[open] { animation: jp-sheet-in .18s ease-out; }
@keyframes jp-sheet-in { from { transform: translateY(28px); opacity: .6; } to { transform: translateY(0); opacity: 1; } }
body.journey-app .jp-action-list { display: grid; }
body.journey-app .jp-action-list :is(button,a) {
  box-sizing: border-box; display: flex; justify-content: flex-start; align-items: center;
  min-height: 48px; width: 100%; margin: 0; padding: 12px 0;
  border: 0; border-bottom: 1px solid var(--jp-line); border-radius: 0;
  color: var(--jp-ink); background: none; font: inherit; font-size: 14px; font-weight: 650;
  text-align: left; text-decoration: none; white-space: normal;
}
body.journey-app .jp-action-list .jp-row-minus { color: var(--jp-danger); }
body.journey-app .jp-action-list small { margin-left: auto; padding-left: 10px; color: var(--jp-muted); font-size: 12px; font-weight: 500; }
body.journey-app .jp-action-facts { margin-top: 14px; color: var(--jp-muted); font-size: 12px; line-height: 1.5; }
body.journey-app .jp-actions-dialog .jto-row { margin-top: 12px; }
body.journey-app .jp-time-presets { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 6px; }
body.journey-app .jp-time-presets button { padding: 8px 4px; border-radius: 8px; font-size: 12px; white-space: nowrap; }
body.journey-app .jp-time-presets button[aria-pressed="true"] { border-color: var(--jp-orange); color: var(--jp-orange); }
@media (max-width:560px) {
  body.journey-app .jp-row .jp-time { min-height: 44px; }
  body.journey-app .jp-row-copy > h3 { font-size: 14px; }
}
@media (max-width:360px) {
  body.journey-app .jp-compact-stay { display: none; }
  body.journey-app .jp-tool { width: 28px; min-width: 28px; font-size: 15px; }
  body.journey-app .jp-actions-dialog,
  body.journey-app .jp-time-dialog { padding-inline: 14px; }
}
@media (prefers-reduced-motion:reduce) {
  body.journey-app .jp-row, body.journey-app .jp-leg { transition: none; }
  body.journey-app .jp-actions-dialog[open], body.journey-app .jp-time-dialog[open] { animation: none; }
}

/* Shared place detail retains its originating tab and list underneath. */
body.journey-app #map-sheet.jp-context-detail {
  display: flex; flex-direction: column; position: fixed;
  inset: var(--jp-detail-top, 76px) max(12px, calc((100vw - 760px) / 2)) calc(var(--journey-nav-h, 78px) + env(safe-area-inset-bottom) + 8px);
  max-height: none; width: auto; margin: 0; padding: 20px;
  overflow-y: auto; overscroll-behavior: contain; z-index: 120;
  border: 1px solid var(--border-hairline); border-radius: 16px;
  box-shadow: 0 8px 36px #183d3820; animation: none;
}
body.journey-app #map-sheet.jp-context-detail .grab,
body.journey-app #map-sheet.jp-context-detail .sheet-list { display: none; }
body.journey-app #map-sheet.jp-context-detail .sheet-head { order: 0; flex-shrink: 0; gap: 12px; }
body.journey-app #map-sheet.jp-context-detail .sheet-close { order: -1; min-width: 44px; min-height: 44px; font-size: 30px; }
body.journey-app #map-sheet.jp-context-detail .sheet-title-group { flex: 1; }
body.journey-app #map-sheet.jp-context-detail h3 { font-size: 22px; line-height: 1.35; }
body.journey-app #map-sheet.jp-context-detail .acts { order: 1; flex-shrink: 0; margin: 16px 0 8px; }
body.journey-app #map-sheet.jp-context-detail .fact { order: 2; flex-shrink: 0; }
body.journey-app #map-sheet.jp-context-detail .sheet-detail { display: grid; order: 3; }
body.journey-app #map-sheet.jp-context-detail .jp-view-map { background: var(--journey-sea, #24675e); color: white; }
body.journey-app .jp-row .jp-time { padding: 0 8px; border: 1px solid #356b6030; border-radius: 10px; background: #edf5f1; color: #225b50; }
body.journey-app .jp-placement-row { grid-template-columns: minmax(0, 1fr) auto auto; }
@media(max-width:560px) {
  body.journey-app .jp-placement-row { grid-template-columns: 1fr 1fr; }
  body.journey-app .jp-placement-row > span { grid-column: 1 / -1; }
  body.journey-app #map-sheet.jp-context-detail { padding: 16px; }
}
body.journey-app #map-sheet.jp-context-detail .acts {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px;
}
body.journey-app #map-sheet.jp-context-detail .acts > :is(a,button) {
  display: flex; align-items: center; justify-content: center; box-sizing: border-box;
  min-width: 0; min-height: 44px; padding: 10px 8px; border: 1px solid #356b6028;
  border-radius: 12px; background: #f2f7f4; color: #225b50;
  font: inherit; font-size: 13px; font-weight: 700; line-height: 1.4;
  text-align: center; text-decoration: none; white-space: nowrap;
}
body.journey-app #map-sheet.jp-context-detail .acts > .jp-place-plan { background: #225b50; color: #fff; }
body.journey-app #map-sheet.jp-context-detail .sn-place-name { display: none; }
body.journey-app #map-sheet.jp-context-detail .sheet-head { position: sticky; top: -16px; padding: 8px 0; background: var(--paper); z-index: 2; }

/* Browse controls keep the result list and every applied condition legible. */
body.journey-app #day-tabs { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); overflow: visible; }
body.journey-app #day-tabs button { min-width: 0; min-height: 48px; padding: 10px 2px; white-space: nowrap; font-size: 13px; }
body.journey-app .jp-toast { pointer-events: none; }
body.journey-app #disc-view > .journey-screen-head { display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px 12px;padding:20px 20px 12px; }
body.journey-app #disc-view > .journey-screen-head h1 { margin:0;font-size:26px; }
body.journey-app #disc-view > .journey-screen-head .journey-actions { grid-column:1/-1;grid-row:2;margin:0;gap:8px; }
body.journey-app #disc-view .disc-map-link { grid-column:2;grid-row:1;min-height:44px;border:0;background:none;color:var(--journey-sea);font:inherit;font-size:13px;font-weight:700; }
body.journey-app #disc-view .disc-head { display:flex;flex-wrap:wrap;align-items:center;gap:8px;position:sticky;top:0;z-index:25;margin:0;padding:10px 20px;background:var(--paper);border-bottom:1px solid var(--journey-line); }
body.journey-app #disc-view .disc-head:focus-within { position:static; }
body.journey-app #disc-view .disc-head > label.sr-only { position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap; }
body.journey-app #disc-view #disc-q { order:0;margin:0;min-width:0;width:100%; }
body.journey-app #disc-view #disc-cats { order:1;flex-basis:100%;margin:0;padding:0 0 2px; }
body.journey-app #disc-view .journey-filters { order:2;flex:1 1 120px;min-width:0;margin:0;padding:0 10px;border-radius:10px; }
body.journey-app #disc-view .journey-filters summary { min-height:44px;gap:8px;font-size:13px; }
body.journey-app #disc-view .journey-filters[open] { flex-basis:100%; }
body.journey-app #disc-view .journey-filters :is(#disc-tags,#disc-dates) { margin:0; }
body.journey-app #disc-view .disc-meta { display:contents; }
body.journey-app #disc-view #disc-sort[hidden],body.journey-app #disc-view #disc-reset[hidden],body.journey-app #disc-view .disc-active-filters[hidden] { display:none!important; }
body.journey-app #disc-view .disc-sort-choice { order:3;flex:1 1 120px;min-width:0;max-width:100%;min-height:46px;border:1px solid var(--journey-line);border-radius:10px;padding:0 24px 0 10px;background:var(--journey-surface);color:var(--journey-ink);font:inherit;font-size:13px; }
body.journey-app #disc-view #disc-count { order:4;flex:1 1 120px;min-width:0;color:var(--journey-muted);font-size:12px; }
body.journey-app #disc-view #disc-reset { order:5;min-height:44px;padding:0 8px;border:0;background:none; }
body.journey-app #disc-view .disc-active-filters { order:6;display:flex;gap:6px;flex-wrap:wrap;width:100%; }
body.journey-app #disc-view .disc-applied { min-height:44px;max-width:100%;border:1px solid var(--journey-line);border-radius:10px;padding:7px 10px;background:var(--journey-tangerine-pale);color:var(--journey-ink);font:inherit;font-size:12px;text-align:left;overflow-wrap:anywhere; }
body.journey-app #disc-view .disc-compare-bar { order:7;flex-basis:100%; }
body.journey-app #disc-view .disc-top > div { flex:1;min-width:0; }
body.journey-app #disc-view .disc-photo-open { display:block;width:100%;border:0;background:none;padding:0;cursor:pointer; }
body.journey-app #disc-view .disc-name-open { display:block;max-width:100%;min-height:44px;border:0;background:none;color:inherit;padding:0;text-align:left;font:inherit;font-weight:800;cursor:pointer; }
body.journey-app #disc-view .disc-review-details { margin-top:4px; }
body.journey-app #disc-view .disc-review-details > summary { display:flex;align-items:center;gap:6px;min-height:44px;color:var(--journey-muted);font-size:12px;cursor:pointer;list-style:none; }
body.journey-app #disc-view .disc-review-details > summary::after { content:'⌄'; }
body.journey-app #disc-view .disc-review-details[open] > summary::after { content:'⌃'; }
body.journey-app #disc-view .disc-review-details .dbadge { max-width:100%;white-space:normal;overflow-wrap:anywhere; }
body.journey-app #disc-view :is(.disc-sort-choice,.disc-applied,.disc-photo-open,.disc-name-open,.disc-map-link):focus-visible { outline:2px solid var(--journey-sea);outline-offset:3px; }
@media(min-width:768px){
  body.journey-app #disc-view .disc-head { padding:12px 32px; }
  body.journey-app #disc-view > .journey-screen-head { padding:24px 32px 12px; }
}
body.journey-app #disc-view > .journey-screen-head { grid-template-columns:minmax(0,1fr) auto auto;gap:8px;align-items:center; }
body.journey-app #disc-view > .journey-screen-head .journey-actions { grid-column:2;grid-row:1; }
body.journey-app #disc-view > .journey-screen-head .journey-actions button { padding:8px 10px;font-size:12px; }
body.journey-app #disc-view .disc-map-link { grid-column:3;font-size:12px; }
body.journey-app #disc-view .disc-note-panel { margin:4px 20px; }
body.journey-app #disc-view .disc-note-panel > summary { display:flex;align-items:center;min-height:44px;color:var(--journey-muted);font-size:12px;cursor:pointer; }
body.journey-app #disc-view .disc-note-panel > summary::after { content:'⌄';margin-left:8px; }
body.journey-app #disc-view .disc-note-panel .disc-note { margin:0 0 8px; }
@media(min-width:768px){body.journey-app #disc-view .disc-note-panel { margin:4px 32px; }}

/* 2026-09 accepted Jeju direction: warm travel pass, photographic schedule,
   and hotel-led first screens. The existing controls and persistence hooks
   remain in place below this presentation layer. */
body.journey-app {
  --journey-paper: #fffdf8;
  --journey-surface: #fffdf8;
  --journey-surface-ground: #f4f0e8;
  --journey-card: #fffdf8;
  --journey-line: #dedbd3;
  --journey-ink: #161a19;
  --journey-muted: #666b67;
  --journey-sea: #075f5d;
  --journey-sea-deep: #064c4b;
  --journey-tangerine-pale: #f5eee4;
  --jp-paper: #fffdf8;
  --jp-ground: #f4f0e8;
  --jp-line: #dedbd3;
  --jp-ink: #161a19;
  --jp-muted: #666b67;
  --jp-sea: #075f5d;
  background: #ece7dd;
}
body.journey-app .app-container {
  width: min(100%, 1180px) !important;
  max-width: 1180px !important;
  background: var(--journey-paper) !important;
  box-shadow: 0 18px 60px rgba(28, 34, 32, .08);
}
body.journey-app .journey-header {
  width: min(100%, 900px);
  min-height: 72px;
  padding: 16px 22px 12px;
  border-color: transparent;
}
body.journey-app .journey-brand { font-size: 23px; line-height: 1.08; letter-spacing: -.035em; }
body.journey-app .journey-brand > strong { display: block; font: inherit; }
body.journey-app .journey-brand > span { margin-top: 5px; font-size: 12px; letter-spacing: .02em; }
body.journey-app[data-destination="schedule"] .journey-brand-trip,
body.journey-app[data-destination="stay"] .journey-brand-trip { display: none; }
body.journey-app .journey-phase { color: var(--journey-sea); font-weight: 760; }
body.journey-app .journey-header-tools { min-height: 44px; color: var(--journey-ink); font-size: 13px; font-weight: 780; white-space: nowrap; }
body.journey-app .journey-header-tools span { margin-right: 5px; color: var(--journey-sea); }
body.journey-app .journey-home-heading { position: absolute; width: 1px; height: 1px; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; }

body.journey-app #journey-home {
  width: min(100%, 760px);
  margin: 0 auto;
  padding: 0 22px calc(var(--journey-nav-h) + 44px);
}
body.journey-app .journey-home-title {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 18px;
  padding: 12px 0 16px;
}
body.journey-app .journey-home-title .sn-h1 { font-size: clamp(28px, 5vw, 39px); font-weight: 900; letter-spacing: -.045em; }
body.journey-app .journey-home-title .sn-sub { margin-top: 4px; color: var(--journey-muted); font-size: 14px; }
body.journey-app .journey-prep-link {
  min-height: 44px;
  padding: 0 2px;
  color: var(--journey-ink);
  font-size: 13px;
  font-weight: 780;
  white-space: nowrap;
}
body.journey-app .journey-prep-link::before { content: "▣"; margin-right: 7px; color: var(--journey-sea); }
body.journey-app .journey-home-cover {
  position: relative;
  width: calc(100% + 44px);
  margin-left: -22px;
  overflow: hidden;
  border-radius: 0;
  background: #d9e8e5;
}
body.journey-app .journey-home-cover img { display: block; width: 100%; height: clamp(210px, 38vw, 330px); object-fit: cover; }
body.journey-app .journey-home-cover figcaption {
  position: absolute;
  right: 12px;
  bottom: 10px;
  padding: 5px 8px;
  border-radius: 6px;
  background: rgba(12, 24, 23, .72);
  color: #fff;
  font-size: 11px;
}
body.journey-app .journey-home-status { display: flex; justify-content: flex-end; margin-top: -35px; padding: 0; position: relative; z-index: 2; }
body.journey-app .journey-home-status .sn-pill { border: 1px solid rgba(255,255,255,.62); background: rgba(6,76,75,.92); color: #fff; }
body.journey-app .journey-home-rental { margin: 18px 0 0; }
body.journey-app .journey-rental-pass {
  overflow: hidden;
  padding: 14px;
  border-radius: 16px;
  background: linear-gradient(145deg, #086764 0%, #064b4a 100%);
  color: #fff;
  box-shadow: 0 10px 24px rgba(7, 95, 93, .2);
}
body.journey-app .journey-rental-pass-head { display: flex; align-items: center; gap: 11px; }
body.journey-app .journey-rental-icon { display: grid; place-items: center; width: 37px; height: 37px; border: 1px solid rgba(255,255,255,.42); border-radius: 11px; font-size: 24px; }
body.journey-app .journey-rental-icon svg { width: 23px; height: 23px; }
body.journey-app .journey-rental-pass-head > div { min-width: 0; flex: 1; }
body.journey-app .journey-rental-kicker { display: block; font-size: 18px; font-weight: 840; letter-spacing: -.02em; }
body.journey-app .journey-rental-pass-head strong { display: block; margin-top: 2px; font-size: 14px; font-weight: 630; font-variant-numeric: tabular-nums; }
body.journey-app .journey-rental-more { width: 44px; height: 44px; color: #fff; font-size: 31px; line-height: 1; }
body.journey-app .journey-rental-vehicle { display: flex; align-items: baseline; flex-wrap: wrap; gap: 4px 10px; margin-top: 14px; }
body.journey-app .journey-rental-vehicle strong { font-size: 18px; font-weight: 830; }
body.journey-app .journey-rental-vehicle span { color: rgba(255,255,255,.72); font-size: 12px; }
body.journey-app .journey-rental-state,
body.journey-app .journey-rental-license,
body.journey-app .journey-rental-route { margin-top: 4px; color: rgba(255,255,255,.82); font-size: 12px; line-height: 1.5; }
body.journey-app .journey-rental-license { color: #d8f0dc; font-weight: 680; }
body.journey-app .journey-rental-route { padding-top: 9px; border-top: 1px solid rgba(255,255,255,.18); }
body.journey-app .journey-rental-details { margin-top: 7px; border-top: 1px solid rgba(255,255,255,.18); }
body.journey-app .journey-rental-details summary { display: flex; align-items: center; min-height: 40px; color: rgba(255,255,255,.86); font-size: 12px; font-weight: 730; cursor: pointer; }
body.journey-app .journey-rental-details summary::after { content: "＋"; margin-left: auto; }
body.journey-app .journey-rental-details[open] summary::after { content: "−"; }
body.journey-app .journey-rental-qr {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  width: 100%;
  min-height: 44px;
  margin-top: 9px;
  border: 0;
  border-radius: 10px;
  background: #fffdf8;
  color: var(--journey-ink);
  font-weight: 800;
  text-decoration: none;
}
body.journey-app .journey-rental-qr b { color: var(--journey-sea); font-size: 20px; }
body.journey-app .journey-home-weather,
body.journey-app .journey-home-quick { margin-right: 0; margin-left: 0; }
body.journey-app #sn-next { border-color: #b8cac4; background: #f0f4ef; }
body.journey-app .journey-home-weather .sn-card { border-radius: 12px; background: #f7f4ed; }
body.journey-app .journey-home-quick .sn-qa { grid-template-columns: repeat(4, minmax(0, 1fr)); }
body.journey-app .journey-home-quick .sn-qa button { min-width: 0; border-radius: 10px; background: transparent; }

body.journey-app .wb-col-schedule { width: min(100%, 900px) !important; margin: 0 auto; padding: 0 26px calc(var(--journey-nav-h) + 42px); }
body.journey-app[data-destination="schedule"] .masthead { padding: 0; margin: 0; }
body.journey-app .schedule-title-row { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; }
body.journey-app[data-destination="schedule"] #masthead-title,
body.journey-app[data-destination="stay"] .journey-stay-hero .journey-screen-head h1 { position: absolute; width: 1px; height: 1px; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; }
body.journey-app[data-destination="schedule"] .masthead .sub { display: none; }
body.journey-app .schedule-photo-head { overflow: hidden; margin-top: 16px; border-radius: 14px; background: #e2e8e3; }
body.journey-app .schedule-photo-head img { width: 100%; height: 170px; object-fit: cover; }
body.journey-app .schedule-photo-head figcaption { padding: 7px 10px; color: var(--journey-muted); font-size: 11px; }
body.journey-app #day-tabs { gap: 8px; margin: 0 0 18px !important; border: 0 !important; }
body.journey-app #day-tabs button {
  min-height: 60px;
  border: 1px solid var(--journey-line);
  border-radius: 11px;
  background: #f5f2ec;
  color: var(--journey-ink);
  font-size: 15px;
  font-weight: 720;
}
body.journey-app #day-tabs button[aria-current="true"] { border-color: var(--journey-sea); background: var(--journey-sea); color: #fff; box-shadow: none; }
body.journey-app .schedule-map-preview { position: relative; height: 210px; margin: 0 0 18px; overflow: hidden; border: 1px solid var(--journey-line); border-radius: 14px; background: #dfe9e4; }
body.journey-app .schedule-map-canvas { width: 100%; height: 100%; }
body.journey-app .schedule-map-fallback { position: absolute; inset: 0; display: grid; place-items: center; padding: 48px 20px; background: #edf2ed; color: var(--journey-muted); font-size: 13px; }
body.journey-app .schedule-map-fallback[hidden] { display: none !important; }
body.journey-app .schedule-map-caption { position: absolute; right: 10px; bottom: 10px; left: 10px; z-index: 2; display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 8px 9px 8px 12px; border-radius: 10px; background: rgba(255,253,248,.93); box-shadow: 0 4px 15px rgba(20,32,29,.13); backdrop-filter: blur(8px); }
body.journey-app .schedule-map-caption span { min-width: 0; color: var(--journey-muted); font-size: 11px; }
body.journey-app .schedule-map-caption button { min-height: 44px; padding: 0 10px; border-radius: 8px; background: var(--journey-sea); color: #fff; font-size: 12px; font-weight: 780; white-space: nowrap; }
body.journey-app .schedule-map-preview .maplibregl-ctrl-attrib { font-size: 9px; }
body.journey-app .spine-header { padding: 0 2px 10px; border-bottom: 1px solid var(--journey-line); }
body.journey-app .spine-tit { font-size: 19px; font-weight: 850; }
/* The editor owns its timeline gutter; do not nest the retired spine gutter. */
body.journey-app #schedule-spine { padding: 12px 0; }
body.journey-app #schedule-spine::before { content: none; }
body.journey-app #schedule-spine .journey-route-summary { margin-bottom: 10px; padding: 0 12px; border: 1px solid var(--journey-line); border-radius: 12px; background: #f5f2ec; }
body.journey-app #schedule-spine .journey-route-summary > summary { display: flex; align-items: center; min-height: 44px; color: var(--journey-muted); font-size: 12px; font-weight: 720; cursor: pointer; }
body.journey-app #schedule-spine .journey-route-summary > summary::after { content: "＋"; margin-left: auto; color: var(--journey-sea); }
body.journey-app #schedule-spine .journey-route-summary[open] > summary::after { content: "−"; }
body.journey-app #schedule-spine .journey-route-summary[open] { padding-bottom: 12px; }
body.journey-app .jp-editor { padding: 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; }
body.journey-app .jp-editor-head { padding: 12px 0; border-bottom: 0; }
body.journey-app .jp-editor-head { display: flex; align-items: center; gap: 10px; }
body.journey-app .jp-editor-head > div:first-child { min-width: 0; flex: 1; }
body.journey-app .jp-editor-head h2 { display: none; }
body.journey-app .jp-editor-head .jp-kicker { color: var(--journey-sea); font-weight: 760; }
body.journey-app .jp-editor-head .jp-route-summary { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
body.journey-app #schedule-spine .jto-tools { padding: 0; margin: 0 0 6px; background: transparent; }
body.journey-app #schedule-spine .jto-tools .jto-actions { gap: 6px; flex-wrap: nowrap; }
body.journey-app #schedule-spine .jto-tools .jto-actions button { padding: 7px; min-height: 44px; }
body.journey-app .jp-editor-notes { margin: -2px 0 8px; border-bottom: 1px solid var(--journey-line); }
body.journey-app .jp-editor-notes > summary { display: flex; align-items: center; min-height: 40px; color: var(--journey-muted); font-size: 12px; cursor: pointer; }
body.journey-app .jp-editor-notes > summary::after { content: "＋"; margin-left: 7px; color: var(--journey-sea); }
body.journey-app .jp-editor-notes[open] > summary::after { content: "−"; }
body.journey-app .jp-editor-notes .jp-local-note,
body.journey-app .jp-editor-notes .jp-gesture-hint { margin: 0 0 8px; }
body.journey-app .schedule-sun-details { margin: 10px 0 16px; border-top: 1px solid var(--journey-line); border-bottom: 1px solid var(--journey-line); }
body.journey-app .schedule-sun-details > summary { display: flex; align-items: center; min-height: 44px; color: var(--journey-muted); font-size: 12px; cursor: pointer; }
body.journey-app .schedule-sun-details > summary::after { content: "＋"; margin-left: auto; color: var(--journey-sea); }
body.journey-app .schedule-sun-details[open] > summary::after { content: "−"; }
body.journey-app .schedule-sun-details .sunstrip { margin: 0 0 10px; }
body.journey-app .jp-list { position: relative; gap: 0; padding: 6px 0 4px 52px; }
body.journey-app .jp-list::before { content: ""; position: absolute; top: 16px; bottom: 16px; left: 27px; width: 1px; background: #cfd5d0; }
body.journey-app .jp-row { position: relative; margin: 0 0 12px; padding: 0; overflow: visible; border: 0; border-bottom: 1px solid var(--journey-line); border-radius: 0; background: transparent; box-shadow: none; }
body.journey-app .jp-row::before { content: ""; position: absolute; top: 25px; left: -32px; z-index: 2; width: 11px; height: 11px; border: 2px solid var(--journey-sea); border-radius: 50%; background: var(--journey-paper); }
body.journey-app .jp-row.jp-row-locked::before { background: var(--journey-sea); }
body.journey-app .jp-row .jp-row-main { min-height: 88px; padding: 10px 0 12px; }
body.journey-app .jp-row-main:has(.jp-row-photo) { grid-template-columns: 96px minmax(0, 1fr) 44px; }
body.journey-app .jp-row-main--tools:has(.jp-row-photo) { grid-template-columns: 96px minmax(0, 1fr) auto 44px; }
body.journey-app .jp-row-photo { display: block; width: 96px; height: 72px; object-fit: cover; border-radius: 9px; background: #e4e8e3; }
body.journey-app .jp-row-copy > h3 { font-size: 16px; }
body.journey-app .jp-row .jp-time { min-height: 44px; padding: 0; border: 0; background: transparent; color: var(--journey-sea); font-size: 13px; font-weight: 780; }
body.journey-app .jp-leg { margin: -12px 0 0 -52px; padding: 6px 0 12px 52px; border: 0; background: transparent; color: var(--journey-muted); }
body.journey-app .jp-leg > span:first-child { display: none; }
body.journey-app .jp-add-row { border-color: var(--journey-sea); border-radius: 10px; background: var(--journey-sea); color: #fff; }

body.journey-app #stay-view { background: var(--journey-paper); }
body.journey-app #stay-view > .journey-stay-hero { order: 1; gap: 12px; padding: 12px 0 0; border: 0; background: transparent; }
body.journey-app #stay-view > .journey-stay-hero > .journey-screen-head { order: 1; height: 0; padding: 0; overflow: hidden; }
body.journey-app #stay-view > .journey-stay-hero .journey-screen-head h1 { font-size: clamp(28px, 5vw, 39px); }
body.journey-app #stay-view > .journey-stay-hero .journey-photo { display: block !important; order: 2; border-radius: 0; box-shadow: none; }
body.journey-app #stay-view > .journey-stay-hero .journey-photo img { width: 100%; height: clamp(230px, 42vw, 380px); object-fit: cover; }
body.journey-app #stay-view > .journey-stay-hero .journey-photo figcaption { position: absolute; right: 10px; bottom: 8px; padding: 4px 7px; border-radius: 5px; background: rgba(12,24,23,.72); color: #fff; }
body.journey-app #stay-view > .sv-head { order: 2; padding: 18px 22px 14px; border: 0; background: transparent; }
body.journey-app #stay-view .sv-kicker { color: var(--journey-sea); font-weight: 760; }
body.journey-app #stay-view .sv-name { margin-top: 3px; font-size: clamp(27px, 4vw, 38px); font-weight: 900; letter-spacing: -.045em; }
body.journey-app #stay-view .sv-sub { margin-top: 6px; color: var(--journey-muted); line-height: 1.6; }
body.journey-app #stay-view .sv-bookingrow { margin-top: 11px; }
body.journey-app .journey-stay-dates { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin-top: 16px; }
body.journey-app .journey-stay-dates > div { padding: 12px 14px; border-radius: 11px; background: #f4f1ea; }
body.journey-app .journey-stay-dates span,
body.journey-app .journey-stay-dates small { display: block; color: var(--journey-muted); font-size: 11px; }
body.journey-app .journey-stay-dates strong { display: block; margin: 2px 0; font-size: 18px; font-weight: 820; }
body.journey-app #stay-view > .stay-purpose-nav { order: 3; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0; padding: 0 14px; border-bottom: 1px solid var(--journey-line); }
body.journey-app #stay-view > .stay-purpose-nav a { min-width: 0; border: 0; border-bottom: 3px solid transparent; border-radius: 0; background: transparent; color: var(--journey-muted); text-align: center; }
body.journey-app #stay-view > .stay-purpose-nav a:first-child { border-bottom-color: var(--journey-sea); color: var(--journey-sea); }
body.journey-app #stay-view > .journey-stay-actions { order: 4; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin: 10px 22px 0; }
body.journey-app #stay-view > .journey-stay-actions button { min-width: 0; min-height: 44px; padding: 8px 10px; border: 1px solid var(--journey-line); border-radius: 9px; background: #f4f1ea; color: var(--journey-ink); font-size: 12px; font-weight: 740; }
body.journey-app #stay-view > #stay-questions { order: 5; margin-top: 12px; background: transparent; border-color: var(--journey-line); }
body.journey-app #stay-view > #journey-breakfast { order: 6; }
body.journey-app #stay-view > #stay-meals { order: 7; }
body.journey-app #stay-view > .snt-entry { order: 18; padding: 0 22px; }
body.journey-app #stay-view > #jto-hotel { order: 17; }
body.journey-app #stay-view > #ai-room-compare,
body.journey-app #stay-view > #ai-siena-illust { order: 19; }
body.journey-app #stay-view > #stay-experiences,
body.journey-app #stay-view > #stay-guides { order: 20; }
body.journey-app #stay-view > .sv-block:not(#stay-questions):not(#journey-breakfast):not(#stay-meals):not(#ai-room-compare):not(#ai-siena-illust):not(#stay-experiences):not(#stay-guides) { order: 21; }

body.journey-app #journey-nav { background: rgba(255,253,248,.96); border-top-color: var(--journey-line); box-shadow: 0 -8px 24px rgba(25,33,31,.06); backdrop-filter: blur(14px); }
body.journey-app #journey-nav button[aria-current="page"] { box-shadow: inset 0 3px 0 var(--journey-sea); color: var(--journey-sea); }

@media (max-width: 760px) {
  body.journey-app .app-container { max-width: 520px !important; box-shadow: none; }
  body.journey-app .journey-header { padding-right: 18px; padding-left: 18px; }
  body.journey-app #journey-home { padding-right: 18px; padding-left: 18px; }
  body.journey-app .journey-home-cover { width: calc(100% + 36px); margin-left: -18px; }
  body.journey-app .wb-col-schedule { padding-right: 18px; padding-left: 18px; }
  body.journey-app .schedule-photo-head { display: none !important; }
  body.journey-app .schedule-map-preview { height: 190px; }
  body.journey-app .jp-row-main:has(.jp-row-photo) { grid-template-columns: 82px minmax(0, 1fr) 44px; }
  body.journey-app .jp-row-main--tools:has(.jp-row-photo) { grid-template-columns: 82px minmax(0, 1fr) 44px; grid-template-rows: auto 44px; }
  body.journey-app .jp-row-main--tools:has(.jp-row-photo) .jp-row-photo { grid-column: 1; grid-row: 1 / span 2; }
  body.journey-app .jp-row-main--tools:has(.jp-row-photo) .jp-row-copy { grid-column: 2; grid-row: 1; }
  body.journey-app .jp-row-main--tools:has(.jp-row-photo) .jp-row-menu { grid-column: 3; grid-row: 1; }
  body.journey-app .jp-row-main--tools:has(.jp-row-photo) .jp-row-tools { grid-column: 2 / 4; grid-row: 2; justify-self: start; }
  body.journey-app .jp-row-photo { width: 82px; height: 68px; }
  body.journey-app .journey-home-quick .sn-qa { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (min-width: 900px) {
  body.journey-app[data-destination="home"] #journey-home { padding-top: 8px; }
  body.journey-app[data-destination="home"] #journey-home > :is(.journey-home-title,.journey-home-cover,.journey-home-status,.journey-home-rental,.journey-home-weather,.journey-home-quick,#sn-now-sect) { max-width: 720px; margin-right: auto; margin-left: auto; }
  body.journey-app #stay-view { width: min(100%, 900px); margin: 0 auto; }
  body.journey-app #stay-view > .journey-stay-hero .journey-photo { border-radius: 16px; overflow: hidden; }
  body.journey-app #stay-view > .journey-stay-hero { padding-right: 22px; padding-left: 22px; }
}

/* The secondary destinations use the same quiet ivory/teal system while
   retaining their full search, map, checklist, ledger and concierge tools. */
body.journey-app #journey-tools {
  width: min(100%, 800px);
  margin: 0 auto;
  padding: 0 22px calc(var(--journey-nav-h) + 42px);
}
body.journey-app #journey-tools > .journey-screen-head { padding: 14px 0 18px; }
body.journey-app #journey-tools > .journey-screen-head h1 { font-size: clamp(28px, 5vw, 39px); font-weight: 900; letter-spacing: -.045em; }
body.journey-app #journey-tools .journey-summary-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin-top: 0; }
body.journey-app #journey-tools .journey-tool { min-height: 112px; border-color: var(--journey-line); border-radius: 13px; background: #f7f4ed; box-shadow: none; text-align: left; }
body.journey-app #journey-tools .journey-tool strong { color: var(--journey-sea); }
body.journey-app #journey-tools .td-card { border-color: var(--journey-line); border-radius: 13px; background: #fffdf8; box-shadow: none; }

body.journey-app #disc-view { width: min(100%, 900px); margin: 0 auto; }
body.journey-app #disc-view > .journey-screen-head { padding-top: 14px; }
body.journey-app #disc-view > .journey-screen-head h1 { font-size: clamp(28px, 5vw, 38px); font-weight: 900; letter-spacing: -.045em; }
body.journey-app #disc-view .disc-head { background: rgba(255,253,248,.96); border-color: var(--journey-line); backdrop-filter: blur(12px); }
body.journey-app #disc-view .disc-search,
body.journey-app #disc-view .disc-sort-choice,
body.journey-app #disc-view .journey-filters { border-color: var(--journey-line); background: #f7f4ed; }
body.journey-app #disc-view .disc-chip { background: #f7f4ed; }
body.journey-app #disc-view .disc-chip[aria-pressed="true"] { background: var(--journey-sea); border-color: var(--journey-sea); color: #fff; }
body.journey-app #disc-view .disc-card { border-color: var(--journey-line); border-radius: 13px; background: #fffdf8; box-shadow: none; }
body.journey-app #disc-view .disc-card .sn-ph { height: 142px; }
body.journey-app #disc-view .disc-card .disc-name { font-size: 18px; font-weight: 850; }
body.journey-app #disc-view .disc-card .disc-acts > :is(a,button) { color: var(--journey-sea); font-weight: 760; }

body.journey-app #wb-col-map { width: min(100%, 1040px) !important; margin: 0 auto; background: var(--journey-paper) !important; }
body.journey-app #wb-col-map > .journey-screen-head { padding: 14px 22px 12px; }
body.journey-app #wb-col-map > .journey-screen-head h1 { font-size: clamp(28px, 5vw, 38px); font-weight: 900; letter-spacing: -.045em; }
body.journey-app #wb-col-map .map-day-chips { gap: 7px; }
body.journey-app #wb-col-map .day-chip,
body.journey-app #wb-col-map .map-filter-bar button { border-color: var(--journey-line); background: rgba(255,253,248,.94); color: var(--journey-ink); }
body.journey-app #wb-col-map .day-chip[aria-pressed="true"],
body.journey-app #wb-col-map .map-filter-bar button[aria-pressed="true"] { border-color: var(--journey-sea); background: var(--journey-sea); color: #fff; }
body.journey-app #map-wrapper { background: #e5ebe5; }

body.journey-app :is(.ledger-view,.pack-view,.settle-view) { background: var(--journey-paper); }
body.journey-app :is(.ledger,.pack,.settle-ledger) { width: min(100%, 800px); padding-right: 22px; padding-left: 22px; }
body.journey-app :is(.ledger,.pack,.settle-ledger) > h2 { font-size: clamp(28px, 5vw, 38px); font-weight: 900; letter-spacing: -.045em; }
body.journey-app .entry { border-color: var(--journey-line); }
body.journey-app .entry.dday { border-left-color: var(--journey-sea); background: #edf3ef; }
body.journey-app .entry .go { background: var(--journey-sea); box-shadow: none; }
body.journey-app .prep-home-action,
body.journey-app .person,
body.journey-app .settle-signature,
body.journey-app .settle-summary-card,
body.journey-app .settle-group { border-color: var(--journey-line); background: #f7f4ed; box-shadow: none; }
body.journey-app .settle-total-top .s-num { color: var(--journey-sea); }

@media (max-width: 560px) {
  body.journey-app #journey-tools .journey-summary-grid { grid-template-columns: 1fr; }
  body.journey-app #journey-tools .journey-tool { min-height: 88px; }
  body.journey-app #disc-view .disc-card .sn-ph { height: 128px; }
}

/* Reuse the existing light app palette and native dialog. No parallel nav. */
body.journey-app .jto-section { display: block !important; margin: 18px 16px; padding: 18px; border: 1px solid var(--border-hairline); border-radius: 14px; background: var(--paper); }
body.journey-app .pin.joint { background: var(--sea); border: 2px solid var(--sea); color: #fff; }
body.journey-app .pin.joint .pin-label, body.journey-app .pin.joint .pin-marker { color: #fff; }
body.journey-app .mb-k.joint { background: var(--sea); color: #fff; }
body.journey-app .jto-section h2 { font-size: var(--fs-title); margin: 0 0 12px; }
body.journey-app .jto-section p, body.journey-app .jto-dialog p { margin: 9px 0; font-size: var(--fs-body-strong); line-height: 1.6; }
body.journey-app .jto-hint { color: var(--ink); font-size: var(--fs-body); line-height: 1.6; }
body.journey-app .jto-prefs summary { list-style: none; min-height: 44px; display: flex; align-items: center; gap: 8px; cursor: pointer; color: var(--sea); font-weight: 650; }
body.journey-app .jto-prefs summary::-webkit-details-marker { display: none; }
body.journey-app .jto-prefs summary::after { content: "＋"; margin-left: auto; font-size: var(--fs-title); font-weight: 700; }
body.journey-app .jto-prefs[open] summary::after { content: "−"; }
body.journey-app .jto-actions, body.journey-app .jto-switch { display: flex; flex-wrap: wrap; gap: 8px; margin: 12px 0; }
body.journey-app [data-jto] { min-height: 44px; padding: 9px 12px; border: 1px solid var(--border-hairline); border-radius: 10px; color: var(--sea); background: var(--paper); font-size: 13px; font-weight: 650; line-height: 1.4; }
body.journey-app [data-jto]:disabled { opacity: .5; cursor: not-allowed; }
body.journey-app [data-jto][aria-pressed="true"] { background: var(--sea); border-color: var(--sea); color: #fff; }
body.journey-app .jto-tools { padding: 10px 14px; margin-bottom: 12px; background: var(--surface-ground); border-radius: 12px; }
body.journey-app .jto-install-row { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
body.journey-app .jto-install-row > [data-jto] { margin-left: auto; }
body.journey-app .jto-install > .sn-tiny { display: block; margin-top: 2px; }
body.journey-app .jto-row { display: flex; gap: 10px; align-items: center; justify-content: space-between; margin: 10px 12px 0 80px; padding-top: 9px; border-top: 1px solid var(--border-hairline); font-size: 12px; }
body.journey-app .jto-margin { padding: 12px 14px; margin-bottom: 12px; border: 1px solid var(--border-hairline); border-left: 4px solid var(--sea); border-radius: 12px; background: var(--surface-ground); }
body.journey-app .jto-margin h3 { margin: 0 0 6px; font-size: var(--fs-title); }
body.journey-app .jto-margin p { margin: 6px 0; font-size: var(--fs-body); line-height: 1.6; }
body.journey-app .jto-margin .jto-margin-line { font-weight: 750; font-variant-numeric: tabular-nums; color: var(--ink); }
body.journey-app .jto-margin a { display: inline-flex; align-items: center; min-height: 44px; padding: 9px 12px; border: 1px solid var(--border-hairline); border-radius: 10px; color: var(--sea); background: var(--paper); font-size: 13px; font-weight: 650; text-decoration: none; }
body.journey-app .jto-form { display: grid; gap: 14px; margin: 16px 0; }
body.journey-app .jto-form label, body.journey-app .jto-file { display: grid; gap: 7px; font-size: 13px; font-weight: 650; }
body.journey-app .jto-form input, body.journey-app .jto-form select, body.journey-app .jto-form textarea,
body.journey-app .jto-file input { width: 100%; max-width: 100%; min-width: 0; min-height: 46px; padding: 10px; border: 1px solid var(--border-hairline); border-radius: 10px; background: var(--paper); color: var(--ink); font: inherit; font-size: 16px; }
body.journey-app .jto-form textarea { min-height: 130px; resize: vertical; }
body.journey-app .jto-dialog { max-width: 680px; overscroll-behavior: contain; }
body.journey-app .jto-dialog > .jp-dialog-head { position: sticky; top: -18px; z-index: 2; background: var(--paper); padding: 10px 0; }
body.journey-app .jto-dialog h3 { font-size: 16px; }
body.journey-app .jto-proposal, body.journey-app .jto-record { padding: 14px 0; border-top: 1px solid var(--border-hairline); }
body.journey-app .jto-proposal ol { padding-left: 24px; margin: 10px 0; font-size: 13px; line-height: 1.7; }
body.journey-app .jto-record pre { white-space: pre-wrap; overflow-wrap: anywhere; max-height: 260px; overflow: auto; font-size: 12px; background: var(--surface-ground); padding: 10px; }
body.journey-app .jto-verbatim, body.journey-app .share-op-badge .m { white-space: pre-wrap; }
body.journey-app .jto-total { font-size: 24px; font-weight: 800; color: var(--sea); }
body.journey-app .jto-settle { font-size: 17px; font-weight: 750; color: var(--ink); padding: 10px 12px; border: 1px solid var(--sea); border-radius: 10px; background: var(--surface-ground); }
body.journey-app .jto-closeout-open { display: block; width: 100%; min-height: 44px; margin-top: 10px; padding: 10px 12px; border: 0; border-radius: 10px; background: var(--sea); color: #fff; font-size: 13px; font-weight: 750; }
body.journey-app .jto-closeout-text { white-space: pre-wrap; overflow-wrap: anywhere; max-height: 260px; overflow: auto; font-size: 12px; background: var(--surface-ground); padding: 10px; }
body.journey-app .jto-sub { font-size: var(--fs-title); margin: 18px 0 6px; }
body.journey-app .jto-quick-row { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 12px 0; }
body.journey-app .jto-quick-row > .jto-hint { flex-basis: 100%; margin: 0; }
body.journey-app .jto-quick + .jto-quick-row { margin-top: 4px; }
body.journey-app .jto-current a.jp-tmap, body.journey-app .jto-actions a[data-jto-nav] { display: inline-flex; align-items: center; min-height: 44px; padding: 9px 12px; border: 1px solid var(--border-hairline); border-radius: 10px; color: var(--sea); background: var(--paper); font-size: 13px; font-weight: 650; text-decoration: none; }
body.journey-app .jto-message { position: fixed; z-index: 80; left: 12px; right: 12px; bottom: calc(var(--journey-nav-h, 78px) + 8px); max-width: 650px; margin: auto; padding: 10px 12px; border: 1px solid var(--border-hairline); border-radius: 10px; background: var(--paper); color: var(--ink); font-size: 12px; pointer-events: none; box-shadow: 0 2px 10px #0001; }
body.journey-app .jto-message:empty { display: none; }
body.journey-app #jto-update-bar { position: fixed; z-index: 79; left: 12px; right: 12px; bottom: calc(var(--journey-nav-h, 78px) + 8px); max-width: 650px; margin: auto; padding: 10px 12px; display: flex; flex-wrap: wrap; align-items: center; gap: 10px; border: 1px solid var(--sea); border-radius: 10px; background: var(--paper); color: var(--ink); box-shadow: 0 2px 10px #0002; }
body.journey-app #jto-update-bar [data-jto] { margin-left: auto; }
body.journey-app:has(.jc-quick) #jto-update-bar { bottom: calc(var(--jc-nav-bottom,var(--journey-nav-h,78px)) + 72px); }
body.journey-app:has(#jto-update-bar) .jc-quick-options { bottom: calc(var(--jc-nav-bottom,var(--journey-nav-h,78px)) + 148px); }
body.journey-app [data-jto-feedback] { color: var(--sea); font-weight: 650; }
body.journey-app .share-op-badges { display: flex; flex-direction: column; align-items: flex-start; gap: 5px; }
body.journey-app .share-op-row { flex-wrap: wrap; }
body.journey-app .share-op input { font-size: 16px; }
@media (min-width: 768px) {
  body.journey-app .jto-form { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  body.journey-app .jto-form label:has(textarea) { grid-column: 1 / -1; }
}
@media (max-width: 767px) {
  body.journey-app .jto-row { margin-left: 12px; }
  body.journey-app .jto-dialog { width: 100%; max-width: 100%; max-height: 88dvh; }
  body.journey-app .jto-dialog > .jp-dialog-head { top: -12px; }
}

/* Hotel activity rows: card list with breathing room (owner 다닥다닥 fix). */
body.journey-app .jto-acts { display: grid; gap: 8px; margin: 14px 0; }
body.journey-app .jto-act-row { display: grid; gap: 2px; margin: 0; padding: 11px 12px; border: 1px solid var(--border-hairline); border-radius: 10px; background: var(--surface-ground); font-size: 13px; line-height: 1.5; }
body.journey-app .jto-act-row strong { font-size: var(--fs-body-strong); }
body.journey-app .jto-act-cnt { color: var(--ink); font-size: var(--fs-body); font-variant-numeric: tabular-nums; }

/* Home weather button: keep its label on one line (owner vertical-stack report). */
body.journey-app [data-jto="weather"] { white-space: nowrap; flex-shrink: 0; }

/* One contained task surface; the five destination tabs remain intact. Structure and a neutral
   look live here; the app's v2 skin (tokens, type, cards) is jeju_v2_concierge.css under html.px-app. */
.jc-dialog{box-sizing:border-box;width:min(560px,calc(100% - 24px));max-width:100%;height:min(820px,calc(100dvh - 24px));max-height:calc(100dvh - 24px);padding:0;border:1px solid #dadbd5;border-radius:24px;background:#f6f5f1;color:#1d2622;box-shadow:0 24px 90px #152c3538;overflow:hidden;overscroll-behavior:contain}
.jc-dialog[open]{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto}
.jc-dialog::backdrop{background:#12261f99}
.jc-dialog *{box-sizing:border-box}
.jc-dialog button,.jc-dialog input,.jc-dialog select,.jc-dialog textarea{font:inherit}
.jc-dialog button{min-height:40px;border:1px solid #c8d3cd;border-radius:12px;background:#fff;color:#1f4a40;padding:8px 12px;font-size:14px;font-weight:650;cursor:pointer}
.jc-dialog button:disabled{opacity:.5;cursor:default}
.jc-dialog button.jc-primary{background:#0f4a45;color:#fff;border-color:#0f4a45}
.jc-dialog :focus-visible:not(.jc-textarea){outline:3px solid #2a7964;outline-offset:2px}
.jc-dialog [hidden]{display:none!important}

.jc-header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 10px 10px 16px;border-bottom:1px solid #e3e0d8}
.jc-titles{display:grid;gap:2px;min-width:0}
.jc-titles h2{margin:0;font-size:18px;line-height:1.2}
.jc-day-wrap{position:relative;display:inline-flex;align-items:center;justify-self:start}
.jc-day{appearance:none;-webkit-appearance:none;border:0;background:transparent;color:inherit;padding:4px 18px 4px 0;font-size:13.5px;font-weight:700;cursor:pointer}
.jc-day-wrap svg{position:absolute;right:0;pointer-events:none}
.jc-header-actions{display:flex;align-items:center;gap:4px;flex:none}
.jc-body{min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;padding:14px 16px;display:flex;flex-direction:column;gap:12px}
.jc-home{display:grid;gap:12px}
.jc-log{display:flex;flex-direction:column;gap:14px}
.jc-log:empty{display:none}
.jc-message{display:flex;flex-direction:column;gap:6px;max-width:100%}
.jc-user{align-self:flex-end;max-width:86%}
.jc-assistant{align-self:stretch}
.jc-text{min-width:0;white-space:normal;word-break:keep-all;overflow-wrap:anywhere;line-height:1.65}
.jc-text p,.jc-text ul,.jc-text ol{margin:0}
.jc-text>*+*{margin-top:10px}
.jc-text .jc-text-heading{margin:0;font-size:1em;font-weight:750;line-height:1.5}
.jc-text .jc-text-heading:not(:first-child){margin-top:16px}
.jc-text :is(ul,ol){padding-left:1.3em}
.jc-text li+li{margin-top:7px}
.jc-text-slots{display:grid;gap:10px;min-width:0}
.jc-text .jc-text-slot{min-width:0;padding:0 0 10px;border-bottom:1px solid var(--px-line,#e3e0d8)}
.jc-text .jc-text-slot:last-child{padding-bottom:0;border-bottom:0}
.jc-text .jc-text-slot-label{font-size:.88em;line-height:1.5;color:var(--px-teal,#1f4a40)}
.jc-text .jc-text-slot-detail{margin-top:3px;line-height:1.65}
.jc-message-tools{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.jc-dialog .jc-message-tools button.jc-copy{min-height:32px;padding:0 10px;border:0;border-radius:16px;background:transparent;color:var(--px-ink3,#57665f);font-size:12.5px;font-weight:650}
html.px-app #jeju-concierge .jc-message.jc-assistant .jc-text{line-height:1.65}
html.px-app #jeju-concierge .jc-assistant .jc-text li+li{margin-top:7px}
html.px-app #jeju-concierge .jc-message-tools button.jc-copy{color:var(--px-ink3,#57665f)}
.jc-foot{display:grid;gap:8px;padding:8px 12px calc(10px + env(safe-area-inset-bottom,0px))}
.jc-prompts{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none}
.jc-prompts::-webkit-scrollbar{display:none}
.jc-prompts button{flex:none;white-space:nowrap}
.jc-notice:not([data-kind=info]):not([data-kind=error]){display:none}
.jc-notice{display:flex;align-items:center;gap:10px}
.jc-status{margin:0;flex:1;min-width:0;font-size:13px;line-height:1.4}
.jc-input-capsule{display:flex;align-items:flex-end;gap:6px;padding:6px 6px 6px 14px;border:1px solid #d6d2c8;border-radius:26px;background:#fff}
.jc-textarea{flex:1 1 0;min-width:0;min-height:44px;max-height:132px;border:0;outline:0;background:transparent;padding:10px 0;font-size:16px;line-height:1.5;resize:none;color:inherit}
.jc-dialog button.jc-mic-btn,.jc-dialog button.jc-send-btn{display:grid;place-items:center;flex:none;width:44px;height:44px;min-height:44px;padding:0;border-radius:22px;font-size:0;line-height:0}
.jc-dialog button.jc-mic-btn:not(:has(svg)){width:auto;padding:0 14px;font-size:13px;line-height:1;color:#b4322a;border-color:#e8b4ad;background:#fce8e5}
.jc-dialog button.jc-stop-btn{flex:none;height:44px;min-height:44px;padding:0 16px;border-radius:22px}
.jc-compose-hidden{display:none!important}
.jc-data-note{margin:0;font-size:12px;line-height:1.4;color:#9c5a12}
.jc-data-note:empty,.jc-data-note[data-saved=true]{display:none}
.jc-image{display:flex;align-items:center;gap:12px}
.jc-image img{width:72px;height:90px;object-fit:contain;background:#ebe8e1;border-radius:12px}
.jc-receipt-thumb{display:block;width:90px;height:112px;object-fit:contain;background:#f0eee8;border-radius:10px;margin-bottom:12px}
.jc-expense{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.jc-expense .jc-field:first-child,.jc-expense p{grid-column:1/-1}
.jc-field{display:grid;gap:6px;min-width:0;font-size:13px;font-weight:650}
.jc-field input,.jc-field select{width:100%;min-width:0;min-height:44px;padding:0 12px;border:1px solid #d6d2c8;border-radius:12px;background:#fff;font-size:16px}
.jc-actions,.jc-choices,.jc-navs,.jc-navrow{display:flex;flex-wrap:wrap;gap:8px}
@media(max-width:760px){
  .jc-dialog{position:fixed;inset:0 auto auto 0;margin:0;width:100%;max-width:100%;height:var(--jc-vh,100dvh);max-height:none;border:0;border-radius:0;transform:translateY(var(--jc-vt,0px))}
  .jc-header{padding-top:calc(10px + env(safe-area-inset-top,0px))}
  .jc-dialog.jc-kb .jc-foot{padding-bottom:8px}
}

.jc-quick{position:fixed;z-index:125;right:max(16px,calc((100vw - 1200px)/2));bottom:calc(var(--jc-nav-bottom,var(--journey-nav-h,78px)) + 12px);width:54px;height:54px;min-height:54px;padding:0;border:1px solid #f5fff0;border-radius:50%;background:#255f4d;color:#fff;display:grid;place-items:center;box-shadow:0 4px 16px #123a3830;cursor:pointer;touch-action:manipulation}
.jc-quick:focus-visible{outline:3px solid #72b4a0;outline-offset:3px}
.jc-quick svg{width:26px;height:26px;pointer-events:none}
.jc-quick[aria-expanded=true]{background:#173e32}
body.journey-app .jc-quick{color:#fff}
body.journey-app:has(.jc-quick){padding-bottom:68px}
body.journey-app:has(.jc-quick) :is(.jp-toast,.jto-message,#mona-onboard){bottom:calc(var(--jc-nav-bottom,var(--journey-nav-h,78px)) + 72px)}
body.journey-app:has(.jc-quick) #map-sheet.jp-context-detail{bottom:calc(var(--jc-nav-bottom,var(--journey-nav-h,78px)) + 72px)}
@media(max-width:760px){body.journey-app:has(.jc-quick) .map-view-wrapper #map-sheet{bottom:calc(var(--jc-nav-bottom,var(--journey-nav-h,78px)) + 72px)}}
body.journey-app:has(#jc-quick[aria-expanded=true]) :is(.jp-toast,.jto-message,#mona-onboard){bottom:calc(var(--jc-nav-bottom,var(--journey-nav-h,78px)) + var(--jc-options-height,110px) + 90px)}
.jc-quick-options{position:fixed;z-index:126;right:max(16px,calc((100vw - 1200px)/2));bottom:calc(var(--jc-nav-bottom,var(--journey-nav-h,78px)) + 78px);width:204px;max-width:calc(100vw - 32px);padding:6px;border:1px solid #c8d3cd;border-radius:18px;background:#fff;box-shadow:0 8px 28px #123a382e;font-family:inherit}
.jc-quick-options[hidden]{display:none!important}
.jc-quick-options button{display:flex;align-items:center;gap:12px;min-height:48px;width:100%;padding:10px 12px;border:0;border-radius:12px;background:transparent;color:#244537;font-family:inherit;font-size:14px;font-weight:650;text-align:left;cursor:pointer}
.jc-quick-options button:hover{background:#eef5eb}
.jc-quick-options svg{flex:none;width:22px;height:22px;pointer-events:none}
.jc-quick-options :focus-visible{outline:3px solid #2a7964;outline-offset:-3px}

/* Live Voice Mode (The Siena Resort Quiet Luxury Voice UI) */
.jc-live-dialog{box-sizing:border-box;position:fixed;inset:0;width:100vw;height:100dvh;max-width:100vw;max-height:100dvh;margin:0;padding:0;border:none;background:radial-gradient(circle at 50% 25%,#183328 0%,#0e2019 50%,#06100c 100%);color:#f7faf7;overflow:hidden;text-align:center}
@media (min-width:640px){.jc-live-dialog{inset:auto;width:min(440px,calc(100% - 32px));height:min(740px,92dvh);max-width:440px;max-height:92dvh;margin:auto;border-radius:36px;border:1px solid rgba(255,255,255,.14);box-shadow:0 32px 100px rgba(0,0,0,.8),0 0 0 1px rgba(255,255,255,.05)}}
.jc-live-dialog::backdrop{background:rgba(6,16,12,.86);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.jc-live-body{box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:space-between;height:100%;padding:calc(16px + env(safe-area-inset-top,0px)) 24px calc(24px + env(safe-area-inset-bottom,0px))}
.jc-live-top{width:100%;display:flex;align-items:center;justify-content:space-between;min-height:44px}
.jc-live-badge-wrap{display:inline-flex;align-items:center;gap:8px;padding:6px 14px;border-radius:9999px;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.12);backdrop-filter:blur(8px)}
.jc-live-dot{width:7px;height:7px;border-radius:50%;background:#4ade80;box-shadow:0 0 10px #4ade80;animation:jc-pulse 2s infinite ease-in-out}
.jc-live-badge{font-size:12px;font-weight:700;letter-spacing:.8px;color:#d1fae5;text-transform:uppercase}
.jc-live-close-btn{display:grid;place-items:center;width:40px;height:40px;border-radius:50%;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.07);color:#cbd5e1;font-size:16px;cursor:pointer;transition:background .15s,color .15s,transform .1s}
.jc-live-close-btn:hover{background:rgba(255,255,255,.16);color:#fff}
.jc-live-close-btn:active{transform:scale(.95)}
.jc-live-stage{position:relative;width:220px;height:220px;display:grid;place-items:center;margin:10px 0 6px}
.jc-live-ring{position:absolute;border-radius:50%;border:1px solid rgba(167,243,208,.2);pointer-events:none}
.jc-live-ring-1{width:140px;height:140px;animation:jc-ring-pulse 3s infinite cubic-bezier(.4,0,.6,1)}
.jc-live-ring-2{width:190px;height:190px;animation:jc-ring-pulse 3s infinite 1s cubic-bezier(.4,0,.6,1)}
.jc-live-aura{position:absolute;width:120px;height:120px;border-radius:50%;background:radial-gradient(circle,rgba(74,222,128,.28) 0%,rgba(37,95,77,0) 70%);filter:blur(16px);animation:jc-pulse 2.4s infinite ease-in-out;pointer-events:none}
.jc-live-orb{position:relative;z-index:2;width:92px;height:92px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#52b788 0%,#255f4d 50%,#133329 100%);box-shadow:0 0 45px rgba(37,95,77,.65),inset 0 2px 4px rgba(255,255,255,.6);transition:transform .25s cubic-bezier(.34,1.56,.64,1),box-shadow .25s ease,background .3s ease;animation:jc-orb-float 4s infinite ease-in-out}
.jc-live-orb[data-state=listening]{background:radial-gradient(circle at 35% 30%,#6ee7b7 0%,#255f4d 60%,#0f2e24 100%);box-shadow:0 0 50px rgba(110,231,183,.55),inset 0 2px 5px rgba(255,255,255,.7)}
.jc-live-orb[data-state=speaking]{background:radial-gradient(circle at 35% 30%,#fef08a 0%,#d4af37 45%,#854d0e 100%);box-shadow:0 0 55px rgba(212,175,55,.65),inset 0 2px 5px rgba(255,255,255,.8);animation:jc-orb-speak .8s infinite alternate cubic-bezier(.45,.05,.55,.95)}
.jc-live-orb[data-state=thinking]{background:radial-gradient(circle at 35% 30%,#fed7aa 0%,#c26d36 50%,#7c2d12 100%);box-shadow:0 0 45px rgba(194,109,54,.55),inset 0 2px 4px rgba(255,255,255,.7);animation:jc-pulse .9s infinite ease-in-out}
.jc-live-orb[data-state=muted]{background:radial-gradient(circle at 35% 30%,#94a3b8 0%,#475569 60%,#1e293b 100%);box-shadow:0 0 25px rgba(100,116,139,.3),inset 0 2px 4px rgba(255,255,255,.3);animation:none}
.jc-live-orb[data-state=error]{background:radial-gradient(circle at 35% 30%,#fca5a5 0%,#dc2626 60%,#7f1d1d 100%);box-shadow:0 0 40px rgba(220,38,38,.5),inset 0 2px 4px rgba(255,255,255,.5);animation:none}
@keyframes jc-ring-pulse{0%{transform:scale(0.85);opacity:.6}50%{transform:scale(1.1);opacity:.2}100%{transform:scale(1.25);opacity:0}}
@keyframes jc-orb-float{0%,100%{transform:translateY(0px) scale(1)}50%{transform:translateY(-6px) scale(1.02)}}
@keyframes jc-orb-speak{0%{transform:scale(0.96)}100%{transform:scale(1.14)}}
@keyframes jc-pulse{0%,100%{transform:scale(0.92);opacity:.6}50%{transform:scale(1.15);opacity:1}}
.jc-live-status-box{display:flex;flex-direction:column;align-items:center;gap:6px;margin-top:2px}
.jc-live-status{font-size:20px;font-weight:800;letter-spacing:-.4px;color:#f8fafc;margin:0}
.jc-live-sub{font-size:13px;line-height:1.5;color:#cbd5e1;max-width:320px;margin:0;word-break:keep-all;text-align:center}
.jc-live-feed{box-sizing:border-box;width:100%;max-width:360px;flex:1 1 auto;max-height:160px;min-height:70px;margin:12px 0;padding:8px 12px;overflow-y:auto;display:flex;flex-direction:column;gap:8px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);border-radius:16px;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);mask-image:linear-gradient(to bottom,transparent 0%,black 12%,black 88%,transparent 100%);-webkit-mask-image:linear-gradient(to bottom,transparent 0%,black 12%,black 88%,transparent 100%);text-align:left}
.jc-live-feed:empty{display:none}
.jc-live-feed-item{font-size:13px;line-height:1.5;word-break:break-word;padding:2px 4px}
.jc-user-speak{color:#a7f3d0;font-weight:500}
.jc-ai-speak{color:#fef3c7;font-weight:600}
.jc-live-actions{width:100%;display:flex;align-items:center;justify-content:center;gap:36px;padding-top:8px}
.jc-live-btn-col{display:flex;flex-direction:column;align-items:center;gap:8px}
.jc-live-btn{display:grid;place-items:center;width:58px;height:58px;border-radius:50%;border:1px solid rgba(255,255,255,.16);background:rgba(255,255,255,.1);color:#f8fafc;cursor:pointer;transition:background .15s,transform .12s,box-shadow .15s;box-shadow:0 8px 24px rgba(0,0,0,.35)}
.jc-live-btn:hover{background:rgba(255,255,255,.18);transform:translateY(-2px)}
.jc-live-btn:active{transform:scale(.94)}
.jc-live-mute.jc-muted{background:rgba(220,38,38,.25);border-color:#dc2626;color:#fca5a5}
.jc-live-end{background:#991b1b;border-color:#b91c1c;color:#fff;box-shadow:0 8px 24px rgba(153,27,27,.45)}
.jc-live-end:hover{background:#7f1d1d;box-shadow:0 10px 28px rgba(153,27,27,.6)}
.jc-live-btn-lbl{font-size:12px;font-weight:600;color:#94a3b8;letter-spacing:-.2px}
.jc-live-card{display:flex;flex-direction:column;gap:6px;padding:12px 14px;border-radius:14px;background:rgba(255,255,255,.09);border:1px solid rgba(255,255,255,.16);margin:4px 0;text-align:left}
.jc-live-card strong{font-size:14px;color:#f8fafc}
.jc-live-card-desc{font-size:12px;line-height:1.45;color:#d1fae5;margin:0}
.jc-live-card-btns{display:flex;gap:8px;margin-top:6px}
.jc-live-apply-btn{min-height:36px;padding:6px 14px;border-radius:10px;border:none;background:#255f4d;color:#fff;font-weight:700;font-size:12px;cursor:pointer}
.jc-live-apply-btn:hover{background:#1e4d3e}
.jc-live-cancel-btn{min-height:36px;padding:6px 12px;border-radius:10px;border:1px solid rgba(255,255,255,.2);background:transparent;color:#cbd5e1;font-size:12px;cursor:pointer}
.jc-live-card-ok{font-size:12px;font-weight:700;color:#4ade80}

/* Photo intake sheet: travel-album continuity in the app's sage/sienna tone. */
.jc-psheet{box-sizing:border-box;width:min(560px,calc(100% - 24px));max-height:calc(100dvh - 24px);padding:0;border:1px solid #d5dcd2;border-radius:24px;background:#fafbf8;color:#263731;overflow:auto;overscroll-behavior:contain}
.jc-psheet[open]{display:flex;flex-direction:column}
.jc-psheet::backdrop{background:#12261fcc;backdrop-filter:blur(3px)}
.jc-psheet *{box-sizing:border-box}
.jc-psheet-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:20px 22px 14px;border-bottom:1px solid #dce4db;background:#f2f6ee;border-radius:24px 24px 0 0}
.jc-psheet-head h2{font-size:22px;letter-spacing:-.6px;margin:2px 0}
.jc-psheet button{font:inherit;min-height:44px;border:1px solid #c8d3cd;border-radius:12px;background:#fff;color:#244537;padding:9px 13px;font-size:14px;font-weight:650;cursor:pointer}
.jc-psheet button.jc-primary{background:#255f4d;color:#fff;border-color:#255f4d}
.jc-psheet button:disabled{opacity:.5;cursor:default}
.jc-psheet :focus-visible{outline:3px solid #2a7964;outline-offset:2px}
.jc-psheet-progress{font-size:14px;font-weight:650;color:#2f5d4b;margin:14px 22px 0;min-height:21px}
.jc-psheet-hint{font-size:12px;line-height:1.6;color:#647566;margin:6px 22px 0}
.jc-psheet-list{display:flex;flex-direction:column;gap:10px;padding:14px 22px;overflow-y:auto}
.jc-pcard{display:flex;gap:12px;border:1px solid #d5e0d3;border-radius:16px;background:#f6faf3;padding:12px}
.jc-pcard[data-state=error]{background:#fbf7f0;border-color:#e8dcc8}
.jc-pcard-img{width:64px;height:64px;object-fit:cover;border-radius:12px;background:#e4e9e2;flex:none}
.jc-pcard-body{display:flex;flex-direction:column;gap:6px;min-width:0;flex:1}
.jc-pcard-title{font-size:14px;color:#1f3d2e;overflow-wrap:anywhere}
.jc-pcard-desc{font-size:13px;line-height:1.55;color:#4c6056;margin:0;overflow-wrap:anywhere}
.jc-pcard-note{font-size:12px;color:#824b16;margin:0}
.jc-pcard-form{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.jc-pcard-form .jc-field{font-size:12px}
.jc-pcard-form :is(input,select){min-height:40px;border:1px solid #bdccc1;border-radius:10px;padding:8px 10px;background:#fff;color:#24392b;font:inherit;width:100%}
.jc-pcard-form .jc-field:first-child{grid-column:1/-1}
.jc-chip{align-self:flex-start;font-size:11px;font-weight:700;padding:3px 9px;border-radius:999px;background:#e3eee0;color:#255f4d;border:1px solid #c8d9c4}
.jc-chip-warn{background:#fff3e0;color:#8a5a16;border-color:#ead9b8}
.jc-chip-place{background:#dcebe2;color:#1f4d3a;border-color:#bcd6c8}
.jc-chip-tag{background:#eef3ed;color:#547467;border-color:#d3e0d3}
.jc-pcard-tags{display:flex;flex-wrap:wrap;gap:6px}
.jc-pcard-tags .jc-chip{align-self:auto}
.jc-psheet-foot{display:flex;gap:8px;justify-content:flex-end;padding:14px 22px 18px;border-top:1px solid #dce4db;background:#fafbf8;margin-top:auto}
.jc-psheet-foot button{min-width:96px}
@media(max-width:480px){.jc-psheet{width:100%;max-height:100dvh;height:100dvh;margin:0;border-radius:0;border:0}.jc-psheet-head{border-radius:0;padding:calc(15px + env(safe-area-inset-top)) 16px 12px}.jc-psheet-list{padding:12px 16px}.jc-psheet-progress,.jc-psheet-hint{margin-left:16px;margin-right:16px}.jc-psheet-foot{padding:12px 16px calc(12px + env(safe-area-inset-bottom))}}


/* Design v2 (final program): photographic hero, floating glass tab bar, widget tiles,
   live-activity cards, wallet stack. Light theme; motion honours reduced-motion. */
:root {
  --px-bg: #F3F1EC; --px-card: #FFFFFF; --px-ink: #121815; --px-ink2: #4F5854; --px-ink3: #858D89;
  --px-line: rgba(18,24,21,.07); --px-track: #E8E4DC;
  --px-teal: #0F4A45; --px-teal2: #17665E; --px-teal-soft: #E3EFEC;
  --px-feno: #2F6BD8; --px-feno-soft: #E8EFFC; --px-mona: #E0712F; --px-mona-soft: #FDEEE3;
  --px-amber: #9C5A12; --px-amber-soft: #FBF0E1; --px-ok: #237148; --px-ok-soft: #E4F2E9; --px-red: #B4322A; --px-red-soft: #FCE8E5;
  --px-shadow: 0 1px 1px rgba(18,24,21,.03), 0 10px 28px -8px rgba(18,40,34,.16);
  --px-spring: linear(0,.402 7.4%,.716 15.3%,.938 23.4%,1.07 32%,1.11 39.8%,1.09 48.2%,1.03 57.4%,.985 68.4%,.995 84.4%,1);
  --px-font: 'Pretendard Variable', Pretendard, -apple-system, BlinkMacSystemFont, 'Apple SD Gothic Neo', 'Noto Sans KR', sans-serif;
}

/* ---------- app chrome ---------- */
html.px-app body.journey-app { background: var(--px-bg); }
html.px-app body.journey-app[data-destination="home"] .journey-header { display: none; }
html.px-app body.journey-app .journey-header {
  position: sticky; top: 0; z-index: 60; border-bottom: 1px solid var(--px-line);
  background: color-mix(in oklab, var(--px-bg) 78%, transparent);
  -webkit-backdrop-filter: blur(22px) saturate(170%); backdrop-filter: blur(22px) saturate(170%);
}
html.px-app body.journey-app #journey-nav {
  left: 12px; right: 12px; bottom: calc(10px + env(safe-area-inset-bottom)); width: auto;
  min-height: 0; height: 66px; padding: 6px; gap: 2px; border: 1px solid rgba(255,255,255,.75); border-radius: 26px;
  background: rgba(255,255,255,.7); box-shadow: 0 14px 34px -10px rgba(18,32,28,.28), inset 0 1px 0 rgba(255,255,255,.9);
  -webkit-backdrop-filter: blur(26px) saturate(185%); backdrop-filter: blur(26px) saturate(185%);
}
html.px-app body.journey-app #journey-nav button {
  flex: 1; width: auto; min-width: 0; min-height: 0; height: 100%; padding: 4px 2px; border-radius: 20px; box-shadow: none;
  font: 650 11px/1.1 var(--px-font); color: #6B7470; letter-spacing: -.01em;
  transition: background-color .45s var(--px-spring), color .2s ease, transform .35s var(--px-spring);
}
html.px-app body.journey-app #journey-nav button > span { width: 23px; height: 23px; margin-bottom: 3px; }
html.px-app body.journey-app #journey-nav button[aria-current="page"] { color: var(--px-teal); background: rgba(15,74,69,.1); box-shadow: none; }
html.px-app body.journey-app #journey-nav button:active { transform: scale(.94); }
@media (min-width: 761px) { html.px-app body.journey-app #journey-nav { left: 50%; right: auto; width: 460px; transform: translateX(-50%); } }

/* ---------- home container ---------- */
#journey-home.ph-on { padding: 0 0 calc(110px + env(safe-area-inset-bottom)) !important; }
#journey-home.ph-on > *:not(#ph-root):not(#role-confirm):not(#sn-mona-sect):not(#sn-mona):not(.journey-home-heading) { display: none !important; }
#journey-home.ph-on > .journey-home-heading { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
#journey-home.ph-on > #role-confirm, #journey-home.ph-on > #sn-mona-sect, #journey-home.ph-on > #sn-mona { margin-left: 16px; margin-right: 16px; }
#journey-home.ph-on > #sn-mona-sect { margin-top: 28px; }
#journey-home.ph-on[data-phase="return"] > #sn-mona-sect, #journey-home.ph-on[data-phase="return"] > #sn-mona,
#journey-home.ph-on[data-phase="homeward"] > #sn-mona-sect, #journey-home.ph-on[data-phase="homeward"] > #sn-mona,
#journey-home.ph-on[data-phase="after"] > #sn-mona-sect, #journey-home.ph-on[data-phase="after"] > #sn-mona { display: none !important; }
#ph-root, #ph-wallet-root { font-family: var(--px-font); color: var(--px-ink); word-break: keep-all; overflow-wrap: anywhere; -webkit-font-smoothing: antialiased; font-feature-settings: "tnum" 1; }
#ph-root *, #ph-wallet-root * { box-sizing: border-box; }
#ph-root h1, #ph-root h2, #ph-root h3, #ph-root h4, #ph-wallet-root h2 { margin: 0; font-family: var(--px-font); }
#ph-root p, #ph-wallet-root p { margin: 0; }
.px-ic { width: 20px; height: 20px; flex: none; }

/* ---------- hero ---------- */
.px-hero { position: relative; height: min(58vh, 460px); min-height: 380px; overflow: hidden; color: #fff; isolation: isolate; }
.px-hero-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 28% 60%; z-index: -2; transform: scale(1.02); }
.px-hero::after { content: ''; position: absolute; inset: 0; z-index: -1;
  background: linear-gradient(180deg, rgba(6,18,16,.32) 0%, rgba(6,18,16,0) 26%, rgba(6,18,16,0) 46%, rgba(6,18,16,.58) 100%); }
.px-hero-bar { position: absolute; top: calc(14px + env(safe-area-inset-top)); left: 16px; right: 16px; display: flex; justify-content: space-between; align-items: center; }
.px-glass { background: rgba(255,255,255,.2); border: 1px solid rgba(255,255,255,.34); -webkit-backdrop-filter: blur(18px) saturate(170%); backdrop-filter: blur(18px) saturate(170%); color: #fff; }
.px-chip-lg { height: 36px; padding: 0 14px; border-radius: 18px; display: inline-flex; align-items: center; font: 750 15px/1 var(--px-font); letter-spacing: -.01em; }
.px-round { width: 44px; height: 44px; border-radius: 22px; display: grid; place-items: center; padding: 0; cursor: pointer; }
.px-round .px-ic { width: 22px; height: 22px; }
.px-hero-copy { position: absolute; left: 20px; right: 20px; bottom: 46px; }
.px-hero-copy h1 { font: 800 56px/1 var(--px-font) !important; letter-spacing: -.045em; color: #fff; text-shadow: 0 2px 24px rgba(0,0,0,.18); }
.px-hero-copy p { font: 600 15px/1.4 var(--px-font); color: rgba(255,255,255,.92); margin-top: 8px !important; }
.px-steps { display: inline-flex; gap: 2px; padding: 4px; border-radius: 16px; margin-top: 14px; }
body.journey-app .px-steps button, .px-steps button { appearance: none; border: 0; background: none; margin: 0; min-height: 30px; padding: 6px 12px; border-radius: 12px; font: 650 13px/1 var(--px-font); color: rgba(255,255,255,.72); cursor: pointer; transition: background .2s, color .2s, transform .25s var(--px-spring); }
body.journey-app .px-steps button.done { color: #fff; }
body.journey-app .px-steps button.cur { background: #fff; color: var(--px-teal); }
body.journey-app .px-steps button:active { transform: scale(.94); }
.px-peek { position: relative; z-index: 2; display: flex; align-items: center; justify-content: space-between; gap: 10px; margin: 0 0 12px; padding: 10px 10px 10px 14px; border-radius: 16px; background: var(--px-amber-soft); color: var(--px-amber); font: 600 13px/1.35 var(--px-font); }
.px-peek b { font-weight: 800; }
body.journey-app .px-peek button, .px-peek button { flex: none; border: 0; min-height: 34px; padding: 0 14px; border-radius: 17px; background: var(--px-amber); color: #fff; font: 700 13px/1 var(--px-font); cursor: pointer; }
.px-credit { position: absolute; right: 12px; bottom: 38px; font: 500 10px/1 var(--px-font); color: rgba(255,255,255,.7); }

/* ---------- sheet + cards ---------- */
.px-sheet { position: relative; margin-top: -26px; padding: 18px 16px 4px; background: var(--px-bg); border-radius: 28px 28px 0 0; display: grid; gap: 16px; }
.px-card { background: var(--px-card); border-radius: 24px; box-shadow: var(--px-shadow); border: 1px solid var(--px-line); }
.px-pad { padding: 18px; }
.px-sec { display: grid; gap: 10px; }
.px-h3 { font: 780 19px/1.2 var(--px-font) !important; letter-spacing: -.03em; padding: 0 4px; }
.px-h3row { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.px-count { display: inline-grid; place-items: center; min-width: 22px; height: 22px; padding: 0 6px; margin-left: 4px; border-radius: 11px; background: var(--px-teal-soft); color: var(--px-teal); font-size: 12.5px; vertical-align: 3px; }
.px-eyebrow { font: 700 12px/1.2 var(--px-font); color: var(--px-ink3); letter-spacing: .01em; }
.px-dim { font: 500 13px/1.45 var(--px-font); color: var(--px-ink2); }
.px-tag { display: inline-flex; align-items: center; gap: 4px; height: 24px; padding: 0 9px; border-radius: 12px; background: #F1EFE9; color: var(--px-ink2); font: 650 12px/1 var(--px-font); white-space: nowrap; }
.px-tag.warn { background: var(--px-amber-soft); color: var(--px-amber); }
.px-tag.bad { background: var(--px-red-soft); color: var(--px-red); }
.px-tag.ok { background: var(--px-ok-soft); color: var(--px-ok); }
.px-who { display: inline-flex; align-items: center; height: 22px; padding: 0 8px; border-radius: 11px; font: 700 11.5px/1 var(--px-font); flex: none; }
.px-who.f { background: var(--px-feno-soft); color: var(--px-feno); }
.px-who.m { background: var(--px-mona-soft); color: var(--px-mona); }
.px-who.b { background: var(--px-teal-soft); color: var(--px-teal); }
.px-btn { display: inline-flex; align-items: center; justify-content: center; gap: 7px; height: 48px; padding: 0 16px; border-radius: 16px; border: 0; font: 700 15px/1 var(--px-font); text-decoration: none; cursor: pointer; transition: transform .4s var(--px-spring), background-color .2s; }
.px-btn:active { transform: scale(.96); }
.px-btn.primary { background: var(--px-teal); color: #fff; }
.px-btn.soft { background: #F0EEE8; color: var(--px-ink); }
.px-btn .px-ic { width: 18px; height: 18px; }
.px-acts { display: flex; gap: 8px; margin-top: 16px; }
.px-acts .px-btn { flex: 1; }

/* next task */
.px-task { padding: 18px; }
.px-task-head { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.px-task-title { display: flex; align-items: center; gap: 8px; margin-top: 10px; }
.px-task h2 { font: 800 24px/1.2 var(--px-font) !important; letter-spacing: -.035em; }
.px-checks { list-style: none; margin: 14px 0 0; padding: 0; display: grid; gap: 2px; }
.px-checks li { border-top: 1px solid var(--px-line); font: 550 14.5px/1.4 var(--px-font); color: var(--px-ink); }
.px-checks li:first-child { border-top: 0; }
.px-checks label { display: flex; gap: 10px; align-items: center; min-height: 44px; padding: 8px 0; cursor: pointer; }
.px-checks input { width: 20px; height: 20px; margin: 0; flex: none; accent-color: var(--px-teal); cursor: pointer; }
.px-checks input:focus-visible { outline: 2px solid var(--px-teal); outline-offset: 3px; }
.px-checks input:checked + span { color: var(--px-ink2); text-decoration: line-through; }
.px-check-note { font: 500 12px/1.5 var(--px-font); color: var(--px-ink2); margin-top: 8px !important; }

/* bento tiles */
.px-bento { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.px-tile { display: flex; flex-direction: column; justify-content: space-between; gap: 6px; min-height: 128px; padding: 15px 16px; text-align: left; font: inherit; color: inherit;
  background: var(--px-card); border-radius: 22px; box-shadow: var(--px-shadow); border: 1px solid var(--px-line); cursor: default; transition: transform .45s var(--px-spring); }
button.px-tile { cursor: pointer; }
button.px-tile:active { transform: scale(.97); }
.px-big { font: 800 40px/1 var(--px-font); letter-spacing: -.045em; color: var(--px-ink); }
.px-big small, .px-mid small { font-size: 15px; font-weight: 700; color: var(--px-ink3); margin-left: 2px; letter-spacing: 0; }
.px-mid { font: 800 26px/1 var(--px-font); letter-spacing: -.03em; }
.px-ringrow { display: flex; align-items: center; gap: 10px; }
.px-ring { width: 46px; height: 46px; flex: none; }

/* rows */
.px-rows { padding: 4px 16px; }
.px-row { display: flex; align-items: center; gap: 12px; padding: 14px 0; border: 0; border-top: 1px solid var(--px-line); background: none; width: 100%; text-align: left; font: inherit; color: inherit; }
.px-row:first-child { border-top: 0; }
.px-row-t { flex: 1; min-width: 0; display: block; }
.px-row-t b { display: block; font: 700 15.5px/1.3 var(--px-font); letter-spacing: -.015em; }
.px-row-t span { display: block; font: 500 13px/1.4 var(--px-font); color: var(--px-ink2); margin-top: 2px; }
.px-row-t .px-tag, .px-row-t .px-who { display: inline-flex; margin-top: 0; }
.px-date { width: 50px; height: 50px; border-radius: 15px; background: #F3F1EC; display: flex; flex-direction: column; align-items: center; justify-content: center; flex: none; }
.px-date b { font: 800 15px/1 var(--px-font); }
.px-date span { font: 700 11px/1 var(--px-font); color: var(--px-ink3); margin-top: 4px; }
.px-date.hot { background: var(--px-amber-soft); } .px-date.hot b, .px-date.hot span { color: var(--px-amber); }
.px-tick { width: 38px; height: 38px; border-radius: 19px; border: 1.8px solid #D9D4CA; background: #fff; color: #B9B3A7; display: grid; place-items: center; flex: none; cursor: pointer; padding: 0; transition: transform .4s var(--px-spring); }
.px-tick:active { transform: scale(.9); background: var(--px-teal); color: #fff; border-color: var(--px-teal); }
.px-tick .px-ic { width: 18px; height: 18px; }
.px-thumb { width: 52px; height: 52px; border-radius: 14px; object-fit: cover; flex: none; }
.px-chev { color: var(--px-ink3); width: 18px; height: 18px; }

/* decisions carousel */
.px-snap { display: grid; grid-auto-flow: column; grid-auto-columns: 78%; gap: 12px; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; margin: 0 -16px; padding: 2px 16px 6px; scroll-padding: 0 16px; }
.px-snap::-webkit-scrollbar { display: none; }
.px-dec { scroll-snap-align: start; padding: 16px; display: grid; gap: 8px; align-content: start; }
.px-dec h4 { font: 780 18px/1.25 var(--px-font) !important; letter-spacing: -.03em; }
.px-opts { display: flex; flex-wrap: wrap; gap: 6px; }
.px-opt { display: inline; font: 650 14px/1.5 var(--px-font); }
.px-opt + .px-opt::before { content: '·'; margin-right: 6px; color: var(--px-ink3); }
.px-opt.lean { color: var(--px-mona); }

/* chain */
.px-chain { list-style: none; margin: 14px 0 0; padding: 0 0 0 22px; position: relative; }
.px-chain::before { content: ''; position: absolute; left: 6px; top: 12px; bottom: 12px; width: 2px; border-radius: 1px; background: var(--px-track); }
.px-chain li { position: relative; display: flex; gap: 10px; padding: 7px 0; }
.px-chain li::before { content: ''; position: absolute; left: -21px; top: 12px; width: 12px; height: 12px; border-radius: 6px; background: #fff; border: 2px solid #D5D0C6; }
.px-chain li.done::before { background: var(--px-teal); border-color: var(--px-teal); }
.px-chain li.next::before { background: var(--px-mona); border-color: var(--px-mona); box-shadow: 0 0 0 5px var(--px-mona-soft); }
.px-chain time { font: 750 13.5px/1.5 var(--px-font); color: var(--px-ink3); width: 44px; flex: none; }
.px-chain b { font: 650 15px/1.5 var(--px-font); }
.px-chain small { display: block; font: 500 12.5px/1.4 var(--px-font); color: var(--px-ink2); }
.px-chain li.done b, .px-chain li.done time { color: var(--px-ink3); font-weight: 550; }
.px-fixed { margin-left: 6px; font: 700 10.5px/1 var(--px-font); color: var(--px-teal); background: var(--px-teal-soft); padding: 3px 5px; border-radius: 6px; vertical-align: 2px; }

/* live activity */
.px-live { padding: 18px; border-radius: 26px; color: #fff; background: radial-gradient(120% 90% at 100% 0%, #1F7F74 0%, var(--px-teal) 55%, #0B3834 100%); box-shadow: 0 18px 40px -16px rgba(15,74,69,.6); }
.px-live .px-eyebrow { color: rgba(255,255,255,.7); }
.px-live-head { display: flex; gap: 8px; align-items: baseline; font: 650 14px/1.3 var(--px-font); }
.px-live-main { display: flex; justify-content: space-between; align-items: flex-end; margin-top: 14px; }
.px-live-main .px-eyebrow { display: block; margin-bottom: 4px; }
.px-huge { font: 800 52px/.95 var(--px-font); letter-spacing: -.05em; }
.px-live-left { text-align: right; }
.px-live-left b { font: 800 30px/1 var(--px-font); letter-spacing: -.04em; }
.px-live-left b small { font-size: 14px; margin-left: 2px; }
.px-live-left span { display: block; font: 600 12.5px/1 var(--px-font); color: rgba(255,255,255,.72); margin-top: 6px; }
.px-bar { height: 6px; border-radius: 3px; background: rgba(255,255,255,.18); margin-top: 16px; overflow: hidden; }
.px-bar i { display: block; height: 100%; border-radius: 3px; background: linear-gradient(90deg, #9FE1D4, #FFFFFF); }
.px-live-meta { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-top: 12px; font: 600 13px/1 var(--px-font); color: rgba(255,255,255,.85); }
.px-live-meta span { display: inline-flex; align-items: center; gap: 6px; }
.px-live-meta .px-ic { width: 16px; height: 16px; }
.px-navs { display: flex; gap: 8px; margin-top: 16px; }
.px-navs .px-btn { flex: 1; height: 46px; font-size: 14px; }
.px-live .px-btn.primary { background: #fff; color: var(--px-teal); }
.px-live .px-btn.soft { background: rgba(255,255,255,.14); color: #fff; }

/* hotel now */
.px-hscroll { display: flex; gap: 8px; overflow-x: auto; scrollbar-width: none; margin: 0 -16px; padding: 2px 16px 6px; }
.px-hscroll::-webkit-scrollbar { display: none; }
.px-pill { flex: none; min-width: 128px; padding: 12px 14px; border-radius: 18px; background: var(--px-card); box-shadow: var(--px-shadow); border: 1px solid var(--px-line); }
.px-pill b { display: block; font: 700 14px/1.2 var(--px-font); }
.px-pill span { display: flex; align-items: center; gap: 6px; margin-top: 6px; font: 600 12.5px/1 var(--px-font); color: var(--px-ink2); }
.px-led { width: 8px; height: 8px; border-radius: 4px; background: #2FB36E; box-shadow: 0 0 0 3px rgba(47,179,110,.18); display: inline-block; }
.px-led.off { background: #C3BEB3; box-shadow: none; }

/* timeline */
.px-tl { display: grid; gap: 8px; }
.px-tli { display: grid; grid-template-columns: 46px 1fr; gap: 10px; align-items: center; }
.px-tli time { font: 750 13.5px/1 var(--px-font); color: var(--px-ink2); text-align: right; }
.px-cap { display: flex; align-items: center; gap: 12px; padding: 10px 12px 10px 10px; border-radius: 20px; background: var(--px-card); box-shadow: var(--px-shadow); border: 1px solid var(--px-line); min-width: 0; }
.px-cap img, .px-capico { width: 46px; height: 46px; border-radius: 14px; object-fit: cover; flex: none; }
.px-capico { display: grid; place-items: center; background: #F1EFE9; color: var(--px-teal); }
.px-capico.teal { background: var(--px-teal-soft); }
.px-cap.hotel { background: linear-gradient(135deg, #E6F1EE, #F4F9F7); }
.px-cap.lock { box-shadow: inset 3px 0 0 var(--px-teal), var(--px-shadow); }
.px-cap.done { opacity: .5; }
.px-cap.loose { background: rgba(255,255,255,.6); box-shadow: none; border: 1.5px dashed #D8D3C9; }
.px-rowbadge { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
.px-nowline { display: flex; align-items: center; gap: 8px; }
.px-nowline span { font: 800 11.5px/1 var(--px-font); color: #fff; background: #E5484D; border-radius: 8px; padding: 4px 7px; }
.px-nowline::after { content: ''; flex: 1; height: 2px; border-radius: 1px; background: #E5484D; }
.px-loose { display: grid; gap: 8px; margin-top: 4px; padding: 12px; border-radius: 22px; background: rgba(255,255,255,.45); border: 1px solid var(--px-line); }
.px-wishes { display: grid; gap: 8px; margin-top: 4px; }
.px-wishrow { display: flex; gap: 8px; overflow-x: auto; scrollbar-width: none; }
.px-wish { flex: none; display: inline-flex; align-items: center; gap: 8px; padding: 10px 14px; border-radius: 16px; background: var(--px-card); border: 1px solid var(--px-line); box-shadow: var(--px-shadow); color: var(--px-teal); }
.px-wish b { font: 700 14px/1 var(--px-font); color: var(--px-ink); }
.px-wish em { font: 800 14px/1 var(--px-font); font-style: normal; color: var(--px-teal); }
.px-weather { display: inline-flex; align-items: center; gap: 6px; font: 650 13px/1 var(--px-font); color: var(--px-ink2); }
.px-weather b { font: 800 15px/1 var(--px-font); color: var(--px-ink); }
.px-weather .px-ic { width: 17px; height: 17px; color: var(--px-amber); }
.px-spend { display: flex; align-items: center; gap: 12px; padding: 12px 14px; width: 100%; text-align: left; font: inherit; color: inherit; cursor: pointer; transition: transform .45s var(--px-spring); }
.px-spend:active { transform: scale(.98); }
.px-plus { width: 40px; height: 40px; border-radius: 20px; background: var(--px-teal); color: #fff; display: grid; place-items: center; flex: none; }

/* ---------- wallet ---------- */
.px-wallet { padding: 14px 16px 8px; max-width: 560px; margin: 0 auto; }
.px-wallet-head { display: flex; align-items: baseline; justify-content: space-between; padding: 0 4px 12px; }
.px-wallet-head h2 { font: 800 28px/1 var(--px-font) !important; letter-spacing: -.04em; }
.px-wallet-head span { font: 600 13px/1 var(--px-font); color: var(--px-ink3); }
.px-stack { display: grid; }
.px-slot { position: relative; cursor: pointer; }
.px-slot + .px-slot { margin-top: -22px; }
.px-slot:not(.open) .px-pass-body, .px-slot:not(.open) .px-pass footer { display: none; }
.px-slot.open { z-index: 2; margin-bottom: 30px; }
.px-slot.open + .px-slot { margin-top: -4px; }
.px-pass { border-radius: 22px; overflow: hidden; background: var(--px-card); box-shadow: 0 -2px 14px -6px rgba(0,0,0,.18), var(--px-shadow); }
.px-pass > header { display: flex; justify-content: space-between; align-items: center; gap: 12px; min-height: 72px; padding: 14px 18px 30px; color: #fff; background: var(--pc); }
.px-slot.open .px-pass > header, .px-slot:last-child .px-pass > header { padding-bottom: 14px; }
.px-pass > header b { display: block; font: 750 16px/1.2 var(--px-font); }
.px-pass > header span { display: block; font: 600 12.5px/1.3 var(--px-font); opacity: .82; margin-top: 3px; }
.px-pass > header .px-ic { width: 24px; height: 24px; opacity: .9; }
.px-pass-body { padding: 16px 18px 14px; display: grid; gap: 12px; }
.px-route { display: flex; justify-content: space-between; align-items: flex-end; }
.px-route b { display: block; font: 800 34px/1 var(--px-font); letter-spacing: -.03em; }
.px-route span { display: block; font: 600 12.5px/1 var(--px-font); color: var(--px-ink3); margin-top: 6px; }
.px-route em { display: block; font: 800 17px/1 var(--px-font); font-style: normal; margin-top: 8px; }
.px-route .r { text-align: right; }
.px-route i { flex: 1; margin: 0 10px 34px; height: 2px; background: repeating-linear-gradient(90deg, #D7D2C8 0 6px, transparent 6px 11px); position: relative; }
.px-route i .px-ic { position: absolute; left: 50%; top: -10px; margin-left: -10px; background: var(--px-card); color: var(--pc); padding: 0 2px; }
.px-fallback { border-top: 1px solid var(--px-line); padding-top: 10px; }
.px-fallback summary { font: 700 13.5px/1.3 var(--px-font); cursor: pointer; }
.px-fallback-link { display: inline-block; margin: 10px 16px 0 0; font: 700 13.5px/1.3 var(--px-font); color: var(--pc); }
.px-fallback ol { margin: 8px 0 0; padding-left: 20px; display: grid; gap: 6px; font: 500 13.5px/1.45 var(--px-font); color: var(--px-ink3); }
.px-perks { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; }
.px-perks li { display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: 3px 10px; align-items: baseline; }
.px-perks b { font: 750 15px/1.3 var(--px-font); letter-spacing: -.01em; white-space: nowrap; }
.px-perks em { font: 750 13.5px/1.3 var(--px-font); font-style: normal; color: var(--pc); text-align: right; }
.px-perks span { grid-column: 1 / -1; font: 500 13.5px/1.45 var(--px-font); color: var(--px-ink3); }
.px-perks-head { margin: 0; padding-top: 12px; border-top: 1px solid var(--px-line); font: 700 13.5px/1.3 var(--px-font); }
.px-fields { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin: 0; }
.px-fields div { min-width: 0; }
.px-fields dt { font: 650 11.5px/1 var(--px-font); color: var(--px-ink3); }
.px-fields dd { margin: 5px 0 0; font: 750 15px/1.25 var(--px-font); letter-spacing: -.01em; }
.px-line { display: flex; gap: 6px; align-items: flex-start; font: 550 13.5px/1.45 var(--px-font); color: var(--px-ink2); }
.px-line .px-ic { width: 16px; height: 16px; margin-top: 2px; color: var(--pc); }
.px-tags { display: flex; flex-wrap: wrap; gap: 6px; }
.px-pass footer { display: flex; border-top: 1px solid var(--px-line); }
.px-pass footer > * { flex: 1; height: 48px; display: flex; align-items: center; justify-content: center; gap: 6px; font: 700 14px/1 var(--px-font); color: var(--pc); text-decoration: none; background: none; border: 0; cursor: pointer; }
.px-pass footer > * + * { border-left: 1px solid var(--px-line); }
.px-pass footer .px-ic { width: 17px; height: 17px; }

/* ---------- motion ---------- */
@media (prefers-reduced-motion: no-preference) {
  .px-in { animation: px-rise .7s var(--px-spring) both; animation-delay: calc(var(--i, 0) * 45ms); }
  .px-hero-img { animation: px-zoom 1.4s cubic-bezier(.2,.7,.2,1) both; }
  .px-ring-v { animation: px-ring 1s cubic-bezier(.2,.7,.2,1) both .2s; }
  .px-bar i { animation: px-bar 1s cubic-bezier(.2,.7,.2,1) both .25s; }
}
@keyframes px-rise { from { opacity: 0; transform: translateY(14px) scale(.985); } to { opacity: 1; transform: none; } }
@keyframes px-zoom { from { transform: scale(1.1); } to { transform: scale(1.02); } }
@keyframes px-ring { from { stroke-dasharray: 0 200; } }
@keyframes px-bar { from { width: 0; } }

@media (min-width: 761px) {
  #ph-root { max-width: 560px; margin: 0 auto; }
  .px-hero { border-radius: 0 0 28px 28px; }
}
@media print { .px-hero { height: 220px; min-height: 0; } .px-live { box-shadow: none; } }

/* schedule editor rows reuse the same warning tags */
.jp-row .px-rowbadge { margin-top: 6px; }

#journey-tools:has(#ph-wallet-root .px-wallet) > .journey-screen-head { display: none; }

/* no clipped strips: short sets become grids, lists stay vertical */
.px-decs { padding: 2px 16px; }
.px-decs .px-dec { padding: 14px 0; border-top: 1px solid var(--px-line); display: grid; gap: 8px; }
.px-decs .px-dec:first-child { border-top: 0; }
.px-dec-q { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; }
.px-dec-q h4 { font: 750 16.5px/1.3 var(--px-font) !important; letter-spacing: -.02em; }
.px-dec-q .px-eyebrow { flex: none; }
.px-hgrid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.px-hgrid .px-pill { min-width: 0; }
.px-wishgrid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.px-wishgrid .px-wish { flex-direction: column; align-items: flex-start; gap: 6px; padding: 12px; min-width: 0; }
.px-wishgrid .px-wish b { font-size: 13px; }
.px-wishgrid .px-wish em { font-size: 20px; }
/* Mona's rail on the home: bleeds to the screen edge instead of stopping inside the page */
#journey-home.ph-on > #sn-mona { margin-left: 0 !important; margin-right: 0 !important; padding-left: 16px; padding-right: 16px; scroll-padding: 0 16px; scroll-snap-type: x mandatory; }
#journey-home.ph-on > #sn-mona > * { scroll-snap-align: start; }

/* Scroll-linked hero: the photo drifts and the title fades; a compact glass bar takes over. */
.px-mini { position: fixed; z-index: 70; top: 0; left: 0; right: 0; display: flex; align-items: center; gap: 10px;
  padding: calc(8px + env(safe-area-inset-top)) 16px 10px; opacity: 0; pointer-events: none; transform: translateY(-8px);
  background: color-mix(in oklab, var(--px-bg) 80%, transparent); border-bottom: 1px solid var(--px-line);
  -webkit-backdrop-filter: blur(22px) saturate(170%); backdrop-filter: blur(22px) saturate(170%); }
.px-mini b { font: 800 19px/1 var(--px-font); letter-spacing: -.03em; }
.px-mini span { font: 650 13px/1 var(--px-font); color: var(--px-ink2); flex: 1; }
.px-mini-btn { width: 38px; height: 38px; border-radius: 19px; border: 1px solid var(--px-line); background: var(--px-card); color: var(--px-teal); display: grid; place-items: center; padding: 0; }
body:not([data-destination="home"]) .px-mini { display: none; }
@supports (animation-timeline: scroll()) {
  @media (prefers-reduced-motion: no-preference) {
    .px-hero-img { animation: px-drift linear both; animation-timeline: scroll(root); animation-range: 0 420px; }
    .px-hero-copy, .px-hero-bar { animation: px-fade linear both; animation-timeline: scroll(root); animation-range: 40px 300px; }
    .px-mini { animation: px-mini-in linear both; animation-timeline: scroll(root); animation-range: 300px 360px; }
  }
}
@keyframes px-drift { from { transform: translateY(0) scale(1.02); } to { transform: translateY(140px) scale(1.14); } }
@keyframes px-fade { from { opacity: 1; transform: none; } to { opacity: 0; transform: translateY(-24px); } }
@keyframes px-mini-in { from { opacity: 0; transform: translateY(-8px); pointer-events: none; } to { opacity: 1; transform: none; pointer-events: auto; } }

.jp-nowline { margin: 6px 0; }
html.px-app .jp-row.jp-row-conflict { box-shadow: inset 0 0 0 1.5px color-mix(in oklab, var(--px-amber) 55%, transparent), var(--px-shadow); }

/* Empty slots (trip data): a dashed place-holder that asks to be filled, on home, the day timeline and the schedule. */
.px-fill { display: flex; align-items: center; gap: 12px; padding: 12px 12px 12px 14px; border-radius: 18px; border: 1.5px dashed rgba(156,90,18,.42); background: #FFFCF6; min-width: 0; }
.px-fill > time { flex: none; font: 750 14px/1 var(--px-font); color: var(--px-amber); font-variant-numeric: tabular-nums; }
.px-fill-t { flex: 1; min-width: 0; }
.px-fill-t b { display: block; font: 700 15px/1.35 var(--px-font); color: var(--px-ink); }
.px-fill-t em { font-style: normal; font-size: 11.5px; font-weight: 700; color: var(--px-amber); background: var(--px-amber-soft); padding: 2px 7px; border-radius: 999px; margin-left: 2px; vertical-align: 1px; white-space: nowrap; }
.px-fill-t span { display: block; margin-top: 3px; font-size: 12.5px; color: var(--px-ink3); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
body.journey-app .px-fill-btn, .px-fill-btn { flex: none; display: inline-flex; align-items: center; gap: 4px; min-height: 38px; padding: 0 14px 0 11px; border: 0; border-radius: 19px; background: var(--px-teal); color: #fff; font: 700 13.5px/1 var(--px-font); cursor: pointer; transition: transform .25s var(--px-spring); }
.px-fill-btn .px-ic { width: 16px; height: 16px; }
.px-fill-btn:active { transform: scale(.94); }
.px-fills { padding: 6px; display: grid; gap: 6px; }
.px-fills .px-fill { background: #FFFDF9; }
.jp-fillslot { margin: 8px 0 10px; }

/* Design v2 app chrome (lead): headers, transitions, install surface. Scoped to html.px-app. */
html.px-app body.journey-app { font-family: var(--px-font); -webkit-font-smoothing: antialiased; -webkit-tap-highlight-color: transparent; }

/* Large-title header on every screen except the home (the home has its photo hero). */
html.px-app body.journey-app .journey-header { min-height: 0; padding: calc(10px + env(safe-area-inset-top)) 16px 12px; align-items: flex-end; }
html.px-app body.journey-app .journey-brand { flex-direction: column; align-items: flex-start; gap: 2px; background: none; border: 0; padding: 0; text-align: left; }
html.px-app body.journey-app .journey-brand strong#journey-header-title { font: 800 30px/1.05 var(--px-font); letter-spacing: -.04em; color: var(--px-ink); }
html.px-app body.journey-app .journey-brand .journey-brand-trip { font: 600 12.5px/1.2 var(--px-font); color: var(--px-ink3); letter-spacing: 0; order: -1; }
html.px-app body.journey-app .journey-header-tools {
  display: inline-flex; align-items: center; gap: 6px; height: 40px; padding: 0 14px; border-radius: 20px; border: 1px solid var(--px-line);
  background: var(--px-card); color: var(--px-teal); font: 700 14px/1 var(--px-font); box-shadow: var(--px-shadow);
  transition: transform .4s var(--px-spring);
}
html.px-app body.journey-app .journey-header-tools span { margin: 0; color: var(--px-teal); display: inline-flex; }
html.px-app body.journey-app .journey-header-tools svg { width: 18px; height: 18px; }
html.px-app body.journey-app .journey-header-tools:active { transform: scale(.95); }
html.px-app body.journey-app[data-destination="tools"] .journey-header-tools { background: var(--px-teal); color: #fff; }
html.px-app body.journey-app[data-destination="tools"] .journey-header-tools span { color: #fff; }

/* Screen change: each screen eases in when it becomes visible (display toggles restart the animation). */
@media (prefers-reduced-motion: no-preference) {
  html.px-app #journey-home, html.px-app #journey-tools, html.px-app #wb-col-schedule, html.px-app #wb-col-map,
  html.px-app .side-scroll-pane > #stay-view, html.px-app .side-scroll-pane > #disc-view, html.px-app .side-scroll-pane > #pack-view,
  html.px-app .side-scroll-pane > #settle-view, html.px-app .side-scroll-pane > #ledger-view { animation: px-screen .42s cubic-bezier(.2,.8,.2,1) backwards; }
}
@keyframes px-screen { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }

/* Toasts and the floating concierge button sit above the floating tab bar. */
html.px-app body.journey-app .jp-toast, html.px-app body.journey-app [role="status"].toast { bottom: calc(92px + env(safe-area-inset-bottom)); border-radius: 16px; }
/* Wallet first on the 지갑 screen; the install hint and prep sections follow it. */
html.px-app body.journey-app[data-destination="tools"] #journey-tools { display: flex; flex-direction: column; }
html.px-app #journey-tools > #ph-wallet-root { order: -1; }
html.px-app .px-wallet-head { align-items: center; }

/* Storage / share status notices float above the tab bar instead of hiding under the taller header. */
html.px-app body.journey-app #storage-status, html.px-app body.journey-app #share-status {
  position: fixed; top: auto; left: 16px; right: 16px; bottom: calc(88px + env(safe-area-inset-bottom)); z-index: 120;
  border-radius: 16px; box-shadow: var(--px-shadow); font-family: var(--px-font);
}
/* 지갑 screen on phones: the wallet keeps the home's 16px margin (it carries its own). */
@media (max-width: 760px) {
  html.px-app body.journey-app[data-destination="tools"] #journey-tools > #ph-wallet-root .px-wallet { padding-left: 0; padding-right: 0; }
}

/* Design v2 restyle layer: schedule (final program). Scoped to html.px-app.
   Visual only: markup, gesture code, hold/slop constants and every control stay as rendered.
   Rows keep flexible heights; the drag code measures them live. */

/* ---------- column: date strip, day title, map card, sections ---------- */
html.px-app body.journey-app[data-destination="schedule"] #wb-col-schedule {
  display: flex !important; flex-direction: column;
  padding: 12px 16px calc(112px + env(safe-area-inset-bottom));
  font-family: var(--px-font); color: var(--px-ink); -webkit-font-smoothing: antialiased;
  font-feature-settings: "tnum" 1; word-break: keep-all;
}
html.px-app body.journey-app[data-destination="schedule"] .workbench-layout { background: var(--px-bg) !important; }
html.px-app body.journey-app #wb-col-schedule > * { min-width: 0; }
html.px-app body.journey-app #wb-col-schedule > #day-tabs { order: 1; }
html.px-app body.journey-app #wb-col-schedule > .masthead { order: 2; }
html.px-app body.journey-app #wb-col-schedule > #schedule-map-preview { order: 3; }
html.px-app body.journey-app #wb-col-schedule > #schedule-view { order: 4; width: 100%; max-width: none; }
html.px-app body.journey-app #wb-col-schedule button { font-family: var(--px-font); -webkit-tap-highlight-color: transparent; }

/* day title under the strip (the screen title itself lives in the shared header) */
html.px-app body.journey-app[data-destination="schedule"] #wb-col-schedule .masthead { margin: 0 0 12px; padding: 0 4px; border: 0; background: none; }
html.px-app body.journey-app[data-destination="schedule"] #wb-col-schedule .masthead .schedule-title-row { display: block; }
html.px-app body.journey-app[data-destination="schedule"] #wb-col-schedule #masthead-day-title {
  display: block; margin: 0 !important; font: 800 22px/1.25 var(--px-font); font-size: 22px !important; line-height: 1.25 !important;
  letter-spacing: -.035em; color: var(--px-ink) !important; white-space: normal; text-wrap: balance;
}

html.px-app body.journey-app #wb-col-schedule .schedule-photo-head { margin: 14px 0 0; overflow: hidden; border: 1px solid var(--px-line); border-radius: 24px; background: var(--px-card); box-shadow: var(--px-shadow); }
html.px-app body.journey-app #wb-col-schedule .schedule-photo-head img { display: block; width: 100%; height: 220px; object-fit: cover; }
html.px-app body.journey-app #wb-col-schedule .schedule-photo-head figcaption { margin: 0; padding: 10px 16px; font: 600 12px/1.4 var(--px-font); color: var(--px-ink3); }

/* segmented date strip */
html.px-app body.journey-app #wb-col-schedule #day-tabs {
  position: relative; display: grid !important; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 4px;
  margin: 0 0 18px !important; padding: 5px; overflow: visible;
  border: 1px solid var(--px-line) !important; border-radius: 22px; background: var(--px-card); box-shadow: var(--px-shadow);
}
html.px-app body.journey-app #wb-col-schedule #day-tabs button {
  display: block; min-width: 0; width: auto; height: 56px; min-height: 56px; margin: 0; padding: 0 2px;
  border: 0; border-radius: 17px; background: transparent; box-shadow: none; color: var(--px-ink3);
  font: 650 12px/1.3 var(--px-font); letter-spacing: 0; text-align: center; white-space: normal; word-spacing: 100vw;
  transition: background-color .35s var(--px-spring), color .2s ease, transform .35s var(--px-spring);
}
html.px-app body.journey-app #wb-col-schedule #day-tabs button::first-line { font-size: 17px; font-weight: 800; letter-spacing: -.02em; color: var(--px-ink); }
html.px-app body.journey-app #wb-col-schedule #day-tabs button[aria-current="true"] {
  background: var(--px-teal); color: rgba(255,255,255,.78); box-shadow: 0 8px 18px -8px rgba(15,74,69,.7);
}
html.px-app body.journey-app #wb-col-schedule #day-tabs button[aria-current="true"]::first-line { color: #fff; }
html.px-app body.journey-app #wb-col-schedule #day-tabs button:active { transform: scale(.94); }
html.px-app body.journey-app #wb-col-schedule #day-tabs button.jp-day-drop {
  outline: 2px solid var(--px-mona); outline-offset: -2px; background: var(--px-mona-soft); color: var(--px-mona);
}
html.px-app body.journey-app #wb-col-schedule #day-tabs button.jp-day-drop::first-line { color: var(--px-mona); }

/* map preview card */
html.px-app body.journey-app #wb-col-schedule .schedule-map-preview {
  height: 200px; margin: 0 0 28px; border: 1px solid var(--px-line); border-radius: 24px;
  background: #E4EAE4; box-shadow: var(--px-shadow); isolation: isolate;
}
html.px-app body.journey-app #wb-col-schedule .schedule-map-fallback { border-radius: inherit; background: #ECEFEA; color: var(--px-ink3); font: 600 13px/1.4 var(--px-font); }
html.px-app body.journey-app #wb-col-schedule .schedule-map-caption {
  right: 10px; bottom: 10px; left: 10px; gap: 10px; padding: 6px 6px 6px 14px; border-radius: 18px;
  border: 1px solid rgba(255,255,255,.85); background: rgba(255,255,255,.8); box-shadow: 0 8px 22px -10px rgba(18,40,34,.35);
  -webkit-backdrop-filter: blur(18px) saturate(170%); backdrop-filter: blur(18px) saturate(170%);
}
html.px-app body.journey-app #wb-col-schedule .schedule-map-caption span { font: 600 12.5px/1.35 var(--px-font); color: var(--px-ink2); text-wrap: balance; }
html.px-app body.journey-app #wb-col-schedule .schedule-map-caption button {
  flex: none; min-height: 44px; height: 44px; padding: 0 14px; border: 0; border-radius: 14px;
  background: var(--px-teal); color: #fff; font: 700 13.5px/1 var(--px-font); transition: transform .4s var(--px-spring);
}
html.px-app body.journey-app #wb-col-schedule .schedule-map-caption button:active { transform: scale(.95); }

/* ---------- section heads ---------- */
html.px-app body.journey-app #wb-col-schedule .spine-header {
  display: flex; align-items: baseline; justify-content: space-between; flex-wrap: wrap; gap: 4px 12px;
  margin: 0; padding: 0 4px 12px; border: 0; background: none;
}
html.px-app body.journey-app #wb-col-schedule .spine-tit { font: 780 20px/1.2 var(--px-font); letter-spacing: -.03em; color: var(--px-ink); }
html.px-app body.journey-app #wb-col-schedule .spine-stat { font: 650 12.5px/1.3 var(--px-font); color: var(--px-ink3); letter-spacing: 0; }
html.px-app body.journey-app #wb-col-schedule #schedule-spine { padding: 0; margin: 0; }

/* shared disclosure chevron */
html.px-app body.journey-app #wb-col-schedule :is(.journey-route-summary, .jp-editor-notes, .schedule-sun-details, .jp-recovery) > summary { list-style: none; cursor: pointer; }
html.px-app body.journey-app #wb-col-schedule :is(.journey-route-summary, .jp-editor-notes, .schedule-sun-details, .jp-recovery) > summary::-webkit-details-marker { display: none; }
html.px-app body.journey-app #wb-col-schedule :is(.journey-route-summary, .jp-editor-notes, .schedule-sun-details, .jp-recovery) > summary::after {
  content: ""; flex: none; width: 7px; height: 7px; margin: -4px 4px 0 auto; border: solid var(--px-ink3); border-width: 0 2px 2px 0;
  transform: rotate(45deg); transition: transform .35s var(--px-spring);
}
html.px-app body.journey-app #wb-col-schedule :is(.journey-route-summary, .jp-editor-notes, .schedule-sun-details, .jp-recovery)[open] > summary::after { margin-top: 4px; transform: rotate(-135deg); }

/* visit order (route names) */
html.px-app body.journey-app #wb-col-schedule #schedule-spine .journey-route-summary {
  margin: 0 0 16px; padding: 0 16px; border: 1px solid var(--px-line); border-radius: 18px; background: var(--px-card); box-shadow: var(--px-shadow);
}
html.px-app body.journey-app #wb-col-schedule #schedule-spine .journey-route-summary > summary {
  display: flex; align-items: center; gap: 8px; min-height: 50px; padding: 0; color: var(--px-ink); font: 700 14.5px/1.3 var(--px-font);
}
html.px-app body.journey-app #wb-col-schedule #schedule-spine .journey-route-summary[open] { padding-bottom: 12px; }
html.px-app body.journey-app #wb-col-schedule .journey-route-names { margin: 0 0 4px; padding-top: 10px; border-top: 1px solid var(--px-line); font: 650 13.5px/1.9 var(--px-font); color: var(--px-ink2); }
html.px-app body.journey-app #wb-col-schedule .journey-route-names span { padding: 0 3px; color: var(--px-ink3); }

/* ---------- editor head, notes, day tools ---------- */
html.px-app body.journey-app #wb-col-schedule .jp-editor { margin: 0; padding: 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; }
html.px-app body.journey-app #wb-col-schedule .jp-editor-head { display: flex; align-items: center; gap: 12px; margin: 0; padding: 0 0 4px 4px; border: 0; }
html.px-app body.journey-app #wb-col-schedule .jp-editor-head > div:first-child { flex: 1; min-width: 0; }
html.px-app body.journey-app #wb-col-schedule .jp-editor-head .jp-kicker { margin: 0; font: 750 12.5px/1.3 var(--px-font); letter-spacing: .01em; color: var(--px-teal); text-transform: none; }
html.px-app body.journey-app #wb-col-schedule .jp-editor-head .jp-route-summary { margin: 3px 0 0; font: 550 13px/1.4 var(--px-font); color: var(--px-ink2); overflow: visible; white-space: normal; text-wrap: pretty; }
html.px-app body.journey-app #wb-col-schedule .jp-head-actions { display: flex; flex: none; gap: 6px; margin: 0; }
html.px-app body.journey-app #wb-col-schedule .jp-head-actions :is(button, a) {
  display: inline-flex; align-items: center; justify-content: center; min-height: 44px; height: 44px; padding: 0 14px;
  border: 1px solid var(--px-line); border-radius: 15px; background: var(--px-card); box-shadow: 0 1px 2px rgba(18,24,21,.05);
  color: var(--px-ink); font: 700 13.5px/1 var(--px-font); white-space: nowrap; transition: transform .4s var(--px-spring);
}
html.px-app body.journey-app #wb-col-schedule .jp-head-actions .jp-undo { border-color: transparent; background: var(--px-teal); color: #fff; }
html.px-app body.journey-app #wb-col-schedule .jp-head-actions :is(button, a):active { transform: scale(.95); }
html.px-app body.journey-app #wb-col-schedule :is(.jp-readonly-badge, .jp-readonly-note) { font: 650 12.5px/1.3 var(--px-font); color: var(--px-ink3); }

html.px-app body.journey-app #wb-col-schedule .jp-editor-notes { margin: 0 0 6px; padding: 0 4px; border: 0; }
html.px-app body.journey-app #wb-col-schedule .jp-editor-notes > summary {
  display: inline-flex; align-items: center; gap: 8px; min-height: 44px; color: var(--px-ink3); font: 650 12.5px/1 var(--px-font);
}
html.px-app body.journey-app #wb-col-schedule .jp-editor-notes > summary::after { width: 6px; height: 6px; margin-left: 0; }
html.px-app body.journey-app #wb-col-schedule .jp-editor-notes :is(.jp-local-note, .jp-gesture-hint) { margin: 0 0 8px; font: 500 12.5px/1.5 var(--px-font); color: var(--px-ink2); }

html.px-app body.journey-app #wb-col-schedule #schedule-spine .jto-tools { margin: 0 0 18px; padding: 0; border: 0; border-radius: 0; background: transparent; }
html.px-app body.journey-app #wb-col-schedule #schedule-spine .jto-tools .jto-hint {
  margin: 0 0 10px; padding: 10px 14px; border-radius: 14px; background: var(--px-amber-soft); color: var(--px-amber); font: 650 13px/1.45 var(--px-font);
}
html.px-app body.journey-app #wb-col-schedule #schedule-spine .jto-tools .jto-actions { display: flex; flex-wrap: wrap; gap: 8px; margin: 0; }
html.px-app body.journey-app #wb-col-schedule #schedule-spine .jto-tools .jto-actions :is(button, a) {
  display: inline-flex; align-items: center; min-height: 44px; padding: 0 16px; border: 1px solid var(--px-line); border-radius: 15px;
  background: var(--px-card); box-shadow: 0 1px 2px rgba(18,24,21,.05); color: var(--px-teal); font: 700 13.5px/1 var(--px-font);
  text-decoration: none; transition: transform .4s var(--px-spring);
}
html.px-app body.journey-app #wb-col-schedule #schedule-spine .jto-tools .jto-actions :is(button, a):active { transform: scale(.95); }
html.px-app body.journey-app #wb-col-schedule #schedule-spine .jto-tools .jto-actions :is(button, a):disabled { opacity: .45; }
html.px-app body.journey-app #wb-col-schedule #schedule-spine .jto-tools .jto-actions [data-jto="conflicts"] { border-color: transparent; background: var(--px-red-soft); color: var(--px-red); }
html.px-app body.journey-app #wb-col-schedule .jto-margin {
  margin: 0 0 16px; padding: 16px 18px; border: 1px solid var(--px-line); border-radius: 20px; background: var(--px-card);
  box-shadow: inset 3px 0 0 var(--px-teal), var(--px-shadow);
}
html.px-app body.journey-app #wb-col-schedule .jto-margin h3 { margin: 0 0 6px; font: 780 16px/1.3 var(--px-font); letter-spacing: -.02em; }
html.px-app body.journey-app #wb-col-schedule .jto-margin p { margin: 4px 0; font: 500 13.5px/1.5 var(--px-font); color: var(--px-ink2); }
html.px-app body.journey-app #wb-col-schedule .jto-margin .jto-margin-line { font-weight: 750; color: var(--px-ink); }
html.px-app body.journey-app #wb-col-schedule .jto-margin a { border-radius: 14px; border-color: var(--px-line); color: var(--px-teal); font-weight: 700; }

/* ---------- visit rows: time column + capsule ---------- */
html.px-app body.journey-app #wb-col-schedule .jp-list { position: relative; display: grid; gap: 0; margin: 0; padding: 0; }
html.px-app body.journey-app #wb-col-schedule .jp-list::before { content: none; }
html.px-app body.journey-app #wb-col-schedule .jp-row {
  position: relative; margin: 0; padding: 0; overflow: visible; border: 0; border-radius: 0; background: transparent; box-shadow: none; outline: 0;
}
html.px-app body.journey-app #wb-col-schedule .jp-row + .jp-row { margin-top: 10px; }
html.px-app body.journey-app #wb-col-schedule .jp-row::before,
html.px-app body.journey-app #wb-col-schedule .jp-row::after { content: none; }
html.px-app body.journey-app #wb-col-schedule .jp-row.jp-swiping,
html.px-app body.journey-app #wb-col-schedule .jp-row.jp-swipe-open { overflow: hidden; }

html.px-app body.journey-app #wb-col-schedule .jp-row .jp-row-main {
  position: relative; z-index: 1; display: grid; grid-template-columns: 46px minmax(0, 1fr) auto; grid-template-rows: auto auto auto;
  column-gap: 12px; row-gap: 0; align-items: center; min-height: 66px; margin: 0; padding: 10px 6px 10px 68px;
  background: transparent; border-radius: 0;
}
/* the capsule itself; the 50px gutter to its left carries the time */
html.px-app body.journey-app #wb-col-schedule .jp-row .jp-row-main::before {
  content: ""; position: absolute; inset: 0 0 0 58px; z-index: -1; border-radius: 20px;
  background: var(--px-card); border: 1px solid var(--px-line); box-shadow: var(--px-shadow);
  transition: box-shadow .3s ease;
}
html.px-app body.journey-app #wb-col-schedule .jp-row .jp-row-photo {
  grid-column: 1; grid-row: 1 / span 2; align-self: center; display: block; width: 46px; height: 46px;
  border-radius: 14px; object-fit: cover; background: #ECE9E2;
}
/* rows without a photo get the same 46px tile with a place pin */
html.px-app body.journey-app #wb-col-schedule .jp-row .jp-row-main:not(:has(> .jp-row-photo))::after {
  content: ""; grid-column: 1; grid-row: 1 / span 2; align-self: center; width: 46px; height: 46px; border-radius: 14px;
  background: #F1EFE9 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230F4A45' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 10c0 5-8 12-8 12s-8-7-8-12a8 8 0 0 1 16 0Z'/%3E%3Ccircle cx='12' cy='10' r='3'/%3E%3C/svg%3E") center / 21px no-repeat;
}
html.px-app body.journey-app #wb-col-schedule .jp-row .jp-row-copy { display: contents; }
html.px-app body.journey-app #wb-col-schedule .jp-row .jp-row-copy > h3 {
  grid-column: 2 / 4; grid-row: 1; align-self: end; min-width: 0; margin: 0 42px 0 0; padding: 0;
  font: 750 15.5px/1.35 var(--px-font); letter-spacing: -.015em; color: var(--px-ink);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
html.px-app body.journey-app #wb-col-schedule .jp-row .jp-row-meta {
  grid-column: 2; grid-row: 2; display: flex; align-items: center; flex-wrap: wrap; gap: 2px 8px; min-width: 0; min-height: 30px; margin: 0;
}
html.px-app body.journey-app #wb-col-schedule .jp-row .jp-row-main--tools .jp-row-meta { min-height: 44px; }
/* time sits in the left gutter and stays the full-height 44px+ time-edit target */
html.px-app body.journey-app #wb-col-schedule .jp-row .jp-time {
  position: absolute; top: 0; bottom: 0; left: 0; z-index: 1; display: flex; flex-direction: column; align-items: flex-end; justify-content: center;
  width: 50px; min-width: 0; height: auto; min-height: 44px; margin: 0; padding: 0; border: 0; border-radius: 12px; background: none; box-shadow: none;
  color: var(--px-ink2); font: 750 13px/1.22 var(--px-font); letter-spacing: -.01em; text-align: right; white-space: normal; word-break: keep-all; overflow-wrap: normal; text-wrap: balance;
  overflow: visible; text-overflow: clip; cursor: pointer;
}
html.px-app body.journey-app #wb-col-schedule .jp-row .jp-time:active { color: var(--px-teal); }
html.px-app body.journey-app #wb-col-schedule .jp-row.jp-row-meal .jp-time { width: 54px; font-size: 11px; font-weight: 700; line-height: 1.3; color: var(--px-ink3); }
html.px-app body.journey-app #wb-col-schedule .jp-row .jp-compact-status {
  display: inline-flex; align-items: center; gap: 6px; min-width: 0; font: 650 12.5px/1.35 var(--px-font); color: var(--px-ink2); white-space: normal;
}
html.px-app body.journey-app #wb-col-schedule .jp-row .jp-compact-status::before { content: ""; flex: none; width: 7px; height: 7px; border-radius: 4px; background: #C3BEB3; }
html.px-app body.journey-app #wb-col-schedule .jp-row .jp-compact-stay { display: inline; font: 600 12.5px/1.35 var(--px-font); color: var(--px-ink3); white-space: nowrap; }
html.px-app body.journey-app #wb-col-schedule .jp-row .px-rowbadge { grid-column: 2 / 4; grid-row: 3; display: flex; flex-wrap: wrap; gap: 6px; margin: 2px 0 2px; }

/* order / delete controls: one quiet pill, each button a 44px-tall target */
html.px-app body.journey-app #wb-col-schedule .jp-row .jp-row-tools {
  grid-column: 3; grid-row: 2; justify-self: end; position: relative; isolation: isolate; display: flex; align-items: center; gap: 0; margin: 0;
}
html.px-app body.journey-app #wb-col-schedule .jp-row .jp-row-tools::before { content: ""; position: absolute; inset: 6px 0; z-index: -1; border-radius: 13px; background: #F3F1EC; }
html.px-app body.journey-app #wb-col-schedule .jp-row .jp-tool {
  width: 36px; min-width: 36px; height: 44px; min-height: 44px; padding: 0; border: 0; border-radius: 13px; background: none;
  color: var(--px-ink2); font: 700 16px/1 var(--px-font); transition: transform .35s var(--px-spring), color .2s ease;
}
html.px-app body.journey-app #wb-col-schedule .jp-row .jp-tool-remove { color: var(--px-red); font-size: 20px; }
html.px-app body.journey-app #wb-col-schedule .jp-row .jp-tool:disabled { opacity: .28; }
html.px-app body.journey-app #wb-col-schedule .jp-row .jp-tool:hover { background: none; }
html.px-app body.journey-app #wb-col-schedule .jp-row .jp-tool:not(:disabled):active { transform: scale(.86); color: var(--px-teal); }
html.px-app body.journey-app #wb-col-schedule .jp-row .jp-row-menu {
  position: absolute; top: 2px; right: 2px; grid-column: auto; grid-row: auto; z-index: 1; width: 44px; height: 44px; min-height: 44px; padding: 0;
  border: 0; border-radius: 14px; background: none; color: var(--px-ink3); font: 800 11px/1 var(--px-font); letter-spacing: 1.5px;
}
html.px-app body.journey-app #wb-col-schedule .jp-row .jp-row-menu:hover { background: none; }

/* row kinds: booking (locked) > confirmed > candidate */
html.px-app body.journey-app #wb-col-schedule .jp-row[aria-label$=" · 후보"] .jp-row-main::before {
  background: rgba(255,255,255,.62); border: 1.5px dashed #D6D0C5; box-shadow: none;
}
html.px-app body.journey-app #wb-col-schedule .jp-row[aria-label$=" · 확정"] .jp-compact-status { color: var(--px-ok); }
html.px-app body.journey-app #wb-col-schedule .jp-row[aria-label$=" · 확정"] .jp-compact-status::before { background: #2FB36E; box-shadow: 0 0 0 3px rgba(47,179,110,.16); }
html.px-app body.journey-app #wb-col-schedule .jp-row.jp-row-locked .jp-row-main::before {
  background: linear-gradient(135deg, #E4F0EC, #F4F9F7); border: 1px solid rgba(15,74,69,.1); box-shadow: inset 3px 0 0 var(--px-teal), var(--px-shadow);
}
html.px-app body.journey-app #wb-col-schedule .jp-row.jp-row-locked .jp-time { color: var(--px-teal); font-weight: 800; }
html.px-app body.journey-app #wb-col-schedule .jp-row.jp-row-locked .jp-compact-status { color: var(--px-teal); }
html.px-app body.journey-app #wb-col-schedule .jp-row.jp-row-locked .jp-compact-status::before { background: var(--px-teal); }
html.px-app body.journey-app #wb-col-schedule .jp-row.jp-row-locked .jp-row-tools::before { background: rgba(255,255,255,.7); }

/* swipe-to-delete underlay: only painted while the row is swiped */
html.px-app body.journey-app #wb-col-schedule .jp-row .jp-row-under { inset: 0 0 0 58px; z-index: 0; display: flex; justify-content: flex-end; align-items: stretch; padding: 0; }
html.px-app body.journey-app #wb-col-schedule .jp-row:not(.jp-swiping):not(.jp-swipe-open) .jp-row-under { visibility: hidden; }
html.px-app body.journey-app #wb-col-schedule .jp-row .jp-row-under button {
  flex: none; width: 80px; margin: 0; padding: 0; border: 0; border-radius: 20px; background: var(--px-red); color: #fff; font: 700 14px/1 var(--px-font);
}

/* drag + focus feedback moves from the full-width row to the capsule */
html.px-app body.journey-app #wb-col-schedule .jp-row.jp-lifted { box-shadow: none; }
html.px-app body.journey-app #wb-col-schedule .jp-row.jp-lifted .jp-row-main { background: linear-gradient(90deg, var(--px-bg) 0 54px, transparent 54px); }
html.px-app body.journey-app #wb-col-schedule .jp-row.jp-lifted .jp-row-main::before { background: var(--px-card); border-style: solid; box-shadow: 0 22px 40px -14px rgba(18,40,34,.42); }
html.px-app body.journey-app #wb-col-schedule .jp-row:focus-visible { outline: 0; }
html.px-app body.journey-app #wb-col-schedule .jp-row:focus-visible .jp-row-main::before { box-shadow: 0 0 0 3px rgba(15,74,69,.35), var(--px-shadow); }
html.px-app body.journey-app #wb-col-schedule .jp-row.jp-drop-before::before,
html.px-app body.journey-app #wb-col-schedule .jp-row.jp-drop-after::after {
  content: ""; position: absolute; right: 8px; left: 66px; z-index: 2; height: 4px; border-radius: 2px; background: var(--px-mona); pointer-events: none;
}
html.px-app body.journey-app #wb-col-schedule .jp-row.jp-drop-before::before { top: -7px; }
html.px-app body.journey-app #wb-col-schedule .jp-row.jp-drop-after::after { bottom: -7px; }

/* route leg between two visits: dotted connector under the photo column */
html.px-app body.journey-app #wb-col-schedule .jp-leg {
  position: relative; display: block; margin: 0; padding: 9px 0 9px 126px; border: 0; background: none;
  color: var(--px-ink3); font: 600 12px/1.4 var(--px-font);
}
html.px-app body.journey-app #wb-col-schedule .jp-leg::before { content: ""; position: absolute; top: 3px; bottom: 3px; left: 90px; border-left: 2px dotted #CCC6BA; }
html.px-app body.journey-app #wb-col-schedule .jp-leg > span:first-child { display: none; }
html.px-app body.journey-app #wb-col-schedule .jp-leg small { display: block; font: 500 11.5px/1.4 var(--px-font); color: var(--px-ink3); }

/* empty-day notice, add, recovery, footer */
html.px-app body.journey-app #wb-col-schedule .jp-empty {
  display: grid; gap: 4px; margin: 0 0 14px; padding: 16px 18px; border: 1.5px dashed #D6D0C5; border-radius: 22px; background: rgba(255,255,255,.55);
}
html.px-app body.journey-app #wb-col-schedule .jp-empty strong { font: 780 16px/1.3 var(--px-font); letter-spacing: -.02em; color: var(--px-ink); }
html.px-app body.journey-app #wb-col-schedule .jp-empty span { font: 500 13px/1.5 var(--px-font); color: var(--px-ink2); }
html.px-app body.journey-app #wb-col-schedule .jp-empty .jp-add {
  justify-self: start; min-height: 44px; margin-top: 8px; padding: 0 16px; border: 0; border-radius: 15px;
  background: var(--px-teal-soft); color: var(--px-teal); font: 700 14px/1 var(--px-font);
}
html.px-app body.journey-app #wb-col-schedule .jp-add-row {
  display: flex; align-items: center; justify-content: center; width: 100%; min-height: 52px; height: 52px; margin: 18px 0 0; padding: 0 16px;
  border: 0; border-radius: 18px; background: var(--px-teal); color: #fff; font: 750 15px/1 var(--px-font);
  box-shadow: 0 12px 24px -12px rgba(15,74,69,.7); transition: transform .4s var(--px-spring);
}
html.px-app body.journey-app #wb-col-schedule .jp-add-row:active { transform: scale(.97); }
html.px-app body.journey-app #wb-col-schedule .jp-recovery {
  margin: 12px 0 0; padding: 0 16px; border: 1px solid var(--px-line); border-radius: 18px; background: var(--px-card); box-shadow: var(--px-shadow);
}
html.px-app body.journey-app #wb-col-schedule .jp-recovery > summary { display: flex; align-items: center; gap: 8px; min-height: 48px; padding: 0; color: var(--px-ink); font: 700 14px/1.3 var(--px-font); }
html.px-app body.journey-app #wb-col-schedule .jp-recovery[open] { padding-bottom: 12px; }
html.px-app body.journey-app #wb-col-schedule .jp-recovery p { margin: 0 0 8px; font: 500 12.5px/1.5 var(--px-font); color: var(--px-ink2); }
html.px-app body.journey-app #wb-col-schedule .jp-recovery ul { display: grid; gap: 0; margin: 0; padding: 0; list-style: none; }
html.px-app body.journey-app #wb-col-schedule .jp-recovery-row {
  display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: 0; padding: 6px 0; border: 0; border-top: 1px solid var(--px-line); border-radius: 0; background: none;
  font: 600 13.5px/1.4 var(--px-font); color: var(--px-ink);
}
html.px-app body.journey-app #wb-col-schedule .jp-recovery-row button {
  flex: none; min-height: 44px; padding: 0 14px; border: 0; border-radius: 14px; background: var(--px-teal-soft); color: var(--px-teal); font: 700 13.5px/1 var(--px-font);
}
html.px-app body.journey-app #wb-col-schedule .jp-editor-foot { display: block; margin: 0; padding: 10px 4px 0; border: 0; }
html.px-app body.journey-app #wb-col-schedule .jp-count { display: block; text-align: left; font: 550 12px/1.45 var(--px-font); color: var(--px-ink3); }

/* ---------- cards below the list ---------- */
html.px-app body.journey-app #wb-col-schedule .journey-activity-requests {
  margin: 28px 0 0; padding: 18px 18px 8px; border: 1px solid var(--px-line); border-radius: 24px; background: var(--px-card); box-shadow: var(--px-shadow);
}
html.px-app body.journey-app #wb-col-schedule .journey-activity-requests h2 { margin: 0; font: 780 19px/1.25 var(--px-font); letter-spacing: -.03em; color: var(--px-ink); }
html.px-app body.journey-app #wb-col-schedule .journey-activity-requests .sn-sub { margin: 4px 0 8px; font: 500 13px/1.45 var(--px-font); color: var(--px-ink2); }
html.px-app body.journey-app #wb-col-schedule .journey-activity-row {
  display: grid; justify-content: stretch; gap: 3px; padding: 12px 0; border: 0; border-top: 1px solid var(--px-line);
}
html.px-app body.journey-app #wb-col-schedule .journey-activity-row strong { font: 700 15px/1.35 var(--px-font); letter-spacing: -.01em; color: var(--px-ink); }
html.px-app body.journey-app #wb-col-schedule .journey-activity-row span { font: 500 13px/1.5 var(--px-font); color: var(--px-ink2); text-align: left; }
html.px-app body.journey-app #wb-col-schedule .sn-link {
  display: inline-flex; align-items: center; gap: 4px; min-height: 44px; padding: 0; border: 0; background: none;
  color: var(--px-teal); font: 700 14px/1.3 var(--px-font); text-decoration: none;
}
html.px-app body.journey-app #wb-col-schedule .sn-link::after { content: "›"; font-size: 17px; font-weight: 700; line-height: 1; text-decoration: none; }
html.px-app body.journey-app #wb-col-schedule .journey-activity-requests .sn-link { width: 100%; border-top: 1px solid var(--px-line); }

html.px-app body.journey-app #wb-col-schedule #schedule-spine > .sn-sect { margin: 28px 0 0; padding: 0; }
html.px-app body.journey-app #wb-col-schedule .sn-sect-h { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin: 0 0 8px; padding: 0 4px; }
html.px-app body.journey-app #wb-col-schedule .sn-sect-h h2 { margin: 0; font: 780 19px/1.25 var(--px-font); letter-spacing: -.03em; color: var(--px-ink); }
html.px-app body.journey-app #wb-col-schedule .sn-ledger {
  margin: 0; padding: 4px 18px 0; overflow: hidden; border: 1px solid var(--px-line); border-radius: 24px; background: var(--px-card); box-shadow: var(--px-shadow);
}
html.px-app body.journey-app #wb-col-schedule .sn-ledger .lr {
  display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 14px 0; border-top: 1px solid var(--px-line);
  font: 650 14.5px/1.45 var(--px-font); color: var(--px-ink);
}
html.px-app body.journey-app #wb-col-schedule .sn-ledger .lr:first-child { border-top: 0; padding-top: 14px; }
html.px-app body.journey-app #wb-col-schedule .sn-ledger .lr > span:first-child { min-width: 0; }
html.px-app body.journey-app #wb-col-schedule .sn-ledger .lr .s { display: block; margin-top: 2px; font: 500 12.5px/1.45 var(--px-font); color: var(--px-ink3); }
html.px-app body.journey-app #wb-col-schedule .sn-ledger .lr .a { flex: none; font: 800 16px/1.2 var(--px-font); letter-spacing: -.02em; color: var(--px-ink); white-space: nowrap; }
html.px-app body.journey-app #wb-col-schedule .sn-ledger .tot {
  display: flex; align-items: center; justify-content: space-between; margin: 0 -18px; padding: 14px 18px; border-top: 1px solid var(--px-line);
  background: #FAF8F4; font: 800 16px/1.2 var(--px-font); letter-spacing: -.02em; color: var(--px-ink);
}

/* sunrise / sunset fold */
html.px-app body.journey-app #wb-col-schedule .schedule-sun-details {
  margin: 16px 0 0; padding: 0 16px; border: 1px solid var(--px-line); border-radius: 18px; background: var(--px-card); box-shadow: var(--px-shadow);
}
html.px-app body.journey-app #wb-col-schedule .schedule-sun-details > summary { display: flex; align-items: center; gap: 8px; min-height: 50px; padding: 0; color: var(--px-ink); font: 700 14.5px/1.3 var(--px-font); }
html.px-app body.journey-app #wb-col-schedule .schedule-sun-details .sunstrip:not([hidden]) {
  display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0; padding: 2px 0 14px; border: 0; background: none;
  font: 650 12.5px/1.4 var(--px-font); color: var(--px-ink2);
}
html.px-app body.journey-app #wb-col-schedule .schedule-sun-details .sunstrip > span {
  display: inline-flex; align-items: center; gap: 6px; height: 30px; padding: 0 11px; border-radius: 12px; background: #F3F1EC;
}
html.px-app body.journey-app #wb-col-schedule .schedule-sun-details .sunstrip b { font: 800 14px/1 var(--px-font); color: var(--px-ink); }
html.px-app body.journey-app #wb-col-schedule .schedule-sun-details .sunstrip > .gold { background: var(--px-amber-soft); color: var(--px-amber); font-weight: 750; }
html.px-app body.journey-app #wb-col-schedule .schedule-sun-details .sunstrip > span:last-child:not(.gold):not(:has(b)) {
  flex: 1 1 100%; height: auto; padding: 2px 2px 0; background: none; font: 500 12.5px/1.5 var(--px-font); color: var(--px-ink2);
}

/* ---------- pick rails (Mona / Feno / research) ---------- */
html.px-app body.journey-app #wb-col-schedule :is(.candidate-section, .uc-block:not(:empty)) { margin: 32px 0 0; padding: 0; border: 0; background: transparent; }
html.px-app body.journey-app #wb-col-schedule .candidate-header { margin: 0 0 12px; padding: 0 4px; }
html.px-app body.journey-app #wb-col-schedule .candidate-header .c-title-row { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 6px 10px; }
html.px-app body.journey-app #wb-col-schedule .candidate-header h3 { margin: 0; font: 780 19px/1.25 var(--px-font); letter-spacing: -.03em; color: var(--px-ink); }
html.px-app body.journey-app #wb-col-schedule .candidate-header .c-badge-note {
  display: inline-flex; align-items: center; height: 24px; padding: 0 9px; border-radius: 12px; background: #F1EFE9; color: var(--px-ink2);
  font: 650 12px/1 var(--px-font); white-space: nowrap;
}
html.px-app body.journey-app #wb-col-schedule .mona-rail-section .c-badge-note { background: var(--px-mona-soft); color: var(--px-mona); }
html.px-app body.journey-app #wb-col-schedule .feno-rail-section .c-badge-note { background: var(--px-feno-soft); color: var(--px-feno); }
html.px-app body.journey-app #wb-col-schedule .candidate-header .candidate-note { margin: 6px 0 0; font: 500 13px/1.55 var(--px-font); color: var(--px-ink2); }
html.px-app body.journey-app #wb-col-schedule .mona-rail-section .candidate-note strong { color: var(--px-mona); font-weight: 700; }
html.px-app body.journey-app #wb-col-schedule .feno-rail-section .candidate-note strong { color: var(--px-feno); font-weight: 700; }
html.px-app body.journey-app #wb-col-schedule .candidate-list { display: grid; gap: 12px; }
html.px-app body.journey-app #wb-col-schedule .candidate-card {
  min-width: 0; padding: 16px; border: 1px solid var(--px-line); border-radius: 22px; background: var(--px-card); box-shadow: var(--px-shadow);
}
html.px-app body.journey-app #wb-col-schedule .candidate-card:has(> .c-main) { display: grid; grid-template-columns: minmax(0, 1fr) 52px; column-gap: 14px; align-items: start; }
html.px-app body.journey-app #wb-col-schedule .candidate-card:has(> .c-main) > .c-top { grid-column: 1; grid-row: 1; display: block; }
html.px-app body.journey-app #wb-col-schedule .candidate-card:has(> .c-main) > .c-main { display: contents; }
html.px-app body.journey-app #wb-col-schedule .candidate-card:has(> .c-main) .c-txt { grid-column: 1; grid-row: 2; min-width: 0; }
html.px-app body.journey-app #wb-col-schedule .candidate-card:has(> .c-main) .viz { grid-column: 2; grid-row: 1 / span 2; width: 52px; height: 52px; border-radius: 16px; }
html.px-app body.journey-app #wb-col-schedule .candidate-card:has(> .c-main) > :not(.c-top):not(.c-main) { grid-column: 1 / -1; }
html.px-app body.journey-app #wb-col-schedule .candidate-card h4 { margin: 0; font: 750 16px/1.4 var(--px-font); letter-spacing: -.02em; color: var(--px-ink); }
html.px-app body.journey-app #wb-col-schedule .candidate-card .c-when { display: block; margin-top: 2px; font: 600 12.5px/1.4 var(--px-font); color: var(--px-ink3); white-space: normal; }
html.px-app body.journey-app #wb-col-schedule .candidate-card .cand-person-tag {
  display: inline-flex; align-items: center; gap: 4px; height: 22px; margin: 0 0 0 6px; padding: 0 8px 0 3px; border: 0; border-radius: 11px;
  background: var(--px-mona-soft); color: var(--px-mona); font: 700 11.5px/1 var(--px-font); vertical-align: 2px; white-space: nowrap;
}
html.px-app body.journey-app #wb-col-schedule .candidate-card .cand-person-tag.feno { background: var(--px-feno-soft); color: var(--px-feno); }
html.px-app body.journey-app #wb-col-schedule .candidate-card .cand-person-tag .dot { width: 16px; height: 16px; font-size: 9px; background: var(--px-mona); }
html.px-app body.journey-app #wb-col-schedule .candidate-card .cand-person-tag.feno .dot { background: var(--px-feno); }
html.px-app body.journey-app #wb-col-schedule .candidate-card .c-reason { margin-top: 10px; font: 650 14px/1.5 var(--px-font); color: var(--px-ink); }
html.px-app body.journey-app #wb-col-schedule .candidate-card.cand-featured-mona .c-reason { color: #B4561D; }
html.px-app body.journey-app #wb-col-schedule .candidate-card.cand-featured-feno .c-reason { color: #2A5DB8; }
html.px-app body.journey-app #wb-col-schedule .candidate-card.cand-featured-reco .c-reason { font-weight: 550; color: var(--px-ink); }
html.px-app body.journey-app #wb-col-schedule .candidate-card :is(.c-fact, .c-caveat) { margin-top: 6px; font: 500 12.5px/1.5 var(--px-font); color: var(--px-ink3); }
html.px-app body.journey-app #wb-col-schedule .candidate-card .c-acts { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 12px; }
html.px-app body.journey-app #wb-col-schedule .candidate-card .c-acts :is(.disc-act, .share-op-toggle) {
  min-width: 44px; height: 44px; min-height: 44px; padding: 0 12px; border: 0; border-radius: 15px; background: #F3F1EC; color: var(--px-teal);
  font-size: 15px; transition: transform .35s var(--px-spring);
}
html.px-app body.journey-app #wb-col-schedule .candidate-card .c-acts .jp-place-plan-icon { background: var(--px-teal-soft); }
html.px-app body.journey-app #wb-col-schedule .candidate-card .c-acts :is(.disc-act, .share-op-toggle):active { transform: scale(.92); }
html.px-app body.journey-app #wb-col-schedule .candidate-card .c-acts .share-op-toggle[aria-expanded="true"] { background: var(--px-teal-soft); }
html.px-app body.journey-app #wb-col-schedule .candidate-card .c-src { display: grid; justify-items: start; margin-top: 6px; padding-top: 4px; border-top: 1px solid var(--px-line); }
html.px-app body.journey-app #wb-col-schedule .candidate-card .c-src .sn-link { margin: 0; font-size: 13px; font-weight: 650; line-height: 1.35; text-align: left; }

/* ---------- schedule sheets: row menu, time edit, add place ---------- */
html.px-app body.journey-app :is(#jeju-itinerary-actions, #jeju-itinerary-time, #jeju-itinerary-picker) {
  padding: 10px 20px calc(20px + env(safe-area-inset-bottom)); border: 0; border-radius: 28px 28px 0 0; background: var(--px-card);
  box-shadow: 0 -14px 44px -12px rgba(18,32,28,.32); color: var(--px-ink); font-family: var(--px-font); -webkit-font-smoothing: antialiased;
}
html.px-app body.journey-app :is(#jeju-itinerary-actions, #jeju-itinerary-time, #jeju-itinerary-picker)::before {
  content: ""; display: block; width: 38px; height: 5px; margin: 0 auto 14px; border-radius: 3px; background: #DAD5CB;
}
html.px-app body.journey-app :is(#jeju-itinerary-actions, #jeju-itinerary-time, #jeju-itinerary-picker)::backdrop { background: rgba(14,22,20,.38); }
html.px-app body.journey-app :is(#jeju-itinerary-actions, #jeju-itinerary-time, #jeju-itinerary-picker) :is(button, input, select, a) { font-family: var(--px-font); }
html.px-app body.journey-app :is(#jeju-itinerary-actions, #jeju-itinerary-time, #jeju-itinerary-picker) .jp-dialog-head { align-items: flex-start; gap: 12px; margin: 0 0 10px; }
html.px-app body.journey-app :is(#jeju-itinerary-actions, #jeju-itinerary-time, #jeju-itinerary-picker) .jp-kicker { margin: 0 0 2px; font: 750 12.5px/1.3 var(--px-font); color: var(--px-teal); }
html.px-app body.journey-app :is(#jeju-itinerary-actions, #jeju-itinerary-time, #jeju-itinerary-picker) h2 { margin: 0; font: 800 22px/1.25 var(--px-font); letter-spacing: -.035em; color: var(--px-ink); }
html.px-app body.journey-app :is(#jeju-itinerary-actions, #jeju-itinerary-time, #jeju-itinerary-picker) .jp-dialog-head p:not(.jp-kicker) { margin: 4px 0 0; font: 500 13px/1.45 var(--px-font); color: var(--px-ink2); }
html.px-app body.journey-app :is(#jeju-itinerary-actions, #jeju-itinerary-time, #jeju-itinerary-picker) .jp-dialog-close {
  min-height: 44px !important; padding: 0 16px !important; border: 0; border-radius: 15px; background: #F0EEE8; color: var(--px-ink); font: 700 14px/1 var(--px-font);
}
html.px-app body.journey-app #jeju-itinerary-actions .jp-action-list :is(button, a) {
  min-height: 54px; padding: 0 2px; border: 0; border-bottom: 1px solid var(--px-line); border-radius: 0; background: none;
  color: var(--px-ink); font: 650 15.5px/1.3 var(--px-font); letter-spacing: -.01em;
}
html.px-app body.journey-app #jeju-itinerary-actions .jp-action-list :is(button, a):active { background: #F7F5F0; }
html.px-app body.journey-app #jeju-itinerary-actions .jp-action-list small { font: 600 13px/1.3 var(--px-font); color: var(--px-ink3); }
html.px-app body.journey-app #jeju-itinerary-actions .jp-action-list .jp-row-minus { border-bottom: 0; color: var(--px-red); }
html.px-app body.journey-app #jeju-itinerary-actions .jp-action-facts { margin: 12px 0 0; padding: 14px; border-radius: 18px; background: #F7F5F0; font: 500 13px/1.5 var(--px-font); color: var(--px-ink2); }
html.px-app body.journey-app #jeju-itinerary-actions .jp-action-facts p { margin: 6px 0 0; }
html.px-app body.journey-app #jeju-itinerary-actions .jp-action-facts .chip {
  display: inline-flex; align-items: center; height: 24px; padding: 0 9px; border: 0; border-radius: 12px; background: #fff; color: var(--px-ink2); font: 650 12px/1 var(--px-font);
}
html.px-app body.journey-app #jeju-itinerary-actions .jto-row { margin: 12px 0 0; padding: 12px 2px 0; border-top: 1px solid var(--px-line); font: 600 13px/1.4 var(--px-font); color: var(--px-ink2); }
html.px-app body.journey-app #jeju-itinerary-actions .jto-row button {
  min-height: 44px; padding: 0 16px; border: 0; border-radius: 15px; background: var(--px-teal-soft); color: var(--px-teal); font: 700 14px/1 var(--px-font);
}
html.px-app body.journey-app #jeju-itinerary-time .jp-time-fields { gap: 14px; }
html.px-app body.journey-app #jeju-itinerary-time .jp-time-fields label { gap: 6px; font: 700 13px/1.3 var(--px-font); color: var(--px-ink2); }
html.px-app body.journey-app :is(#jeju-itinerary-time .jp-time-fields :is(input, select), #jeju-itinerary-picker .jp-search input) {
  min-height: 50px; padding: 0 14px; border: 1px solid transparent; border-radius: 15px; background: #F3F1EC; color: var(--px-ink);
  font: 650 16px/1.2 var(--px-font);
}
html.px-app body.journey-app :is(#jeju-itinerary-time .jp-time-fields :is(input, select), #jeju-itinerary-picker .jp-search input):focus { border-color: var(--px-teal); background: #fff; outline: 0; }
html.px-app body.journey-app #jeju-itinerary-time .jp-time-presets { gap: 8px; }
html.px-app body.journey-app #jeju-itinerary-time .jp-time-presets button {
  min-height: 44px; padding: 0 4px; border: 1px solid var(--px-line); border-radius: 14px; background: var(--px-card); color: var(--px-teal); font: 700 14px/1 var(--px-font);
}
html.px-app body.journey-app #jeju-itinerary-time .jp-time-presets button[aria-pressed="true"] { border-color: var(--px-teal); background: var(--px-teal); color: #fff; }
html.px-app body.journey-app #jeju-itinerary-time .jp-time-advanced > summary { display: flex; align-items: center; min-height: 44px; color: var(--px-teal); font: 700 13.5px/1 var(--px-font); cursor: pointer; }
html.px-app body.journey-app #jeju-itinerary-time .jp-dialog-actions { display: flex; gap: 8px; margin-top: 18px; }
html.px-app body.journey-app #jeju-itinerary-time .jp-dialog-actions button {
  flex: 1; min-height: 52px; padding: 0 16px; border: 0; border-radius: 17px; background: #F0EEE8; color: var(--px-ink); font: 750 15px/1 var(--px-font);
}
html.px-app body.journey-app #jeju-itinerary-time .jp-dialog-actions .jp-primary { flex: 2; background: var(--px-teal); color: #fff; box-shadow: 0 10px 22px -12px rgba(15,74,69,.7); }
html.px-app body.journey-app #jeju-itinerary-time .jp-dialog-error { color: var(--px-red); font: 600 13px/1.45 var(--px-font); }
html.px-app body.journey-app #jeju-itinerary-picker .jp-picker-date { margin: 4px 0 0; font: 600 13px/1.4 var(--px-font); color: var(--px-ink2); }
html.px-app body.journey-app #jeju-itinerary-picker .jp-filters { gap: 6px; margin: 0 -20px; padding: 2px 20px 6px; }
html.px-app body.journey-app #jeju-itinerary-picker .jp-filter {
  min-height: 44px; padding: 0 14px; border: 1px solid var(--px-line); border-radius: 15px; background: var(--px-card); color: var(--px-ink2); font: 700 13.5px/1 var(--px-font); white-space: nowrap;
}
html.px-app body.journey-app #jeju-itinerary-picker .jp-filter.is-active { border-color: var(--px-teal); background: var(--px-teal); color: #fff; }
html.px-app body.journey-app #jeju-itinerary-picker .jp-picker-count { margin: 6px 2px 8px; font: 600 12.5px/1.4 var(--px-font); color: var(--px-ink3); }
html.px-app body.journey-app #jeju-itinerary-picker .jp-picker-list { gap: 8px; }
html.px-app body.journey-app #jeju-itinerary-picker .jp-picker-row { gap: 12px; padding: 10px 10px 10px 14px; border: 1px solid var(--px-line); border-radius: 18px; background: var(--px-card); }
html.px-app body.journey-app #jeju-itinerary-picker .jp-picker-row strong { font: 700 14.5px/1.35 var(--px-font); color: var(--px-ink); }
html.px-app body.journey-app #jeju-itinerary-picker .jp-picker-row span { font: 500 12.5px/1.4 var(--px-font); color: var(--px-ink3); }
html.px-app body.journey-app #jeju-itinerary-picker .jp-picker-row button {
  min-height: 44px; padding: 0 14px; border: 0; border-radius: 14px; background: var(--px-teal-soft); color: var(--px-teal); font: 700 13.5px/1 var(--px-font);
}
html.px-app body.journey-app #jeju-itinerary-picker .jp-picker-row button:disabled { background: #F0EEE8; color: var(--px-ink3); opacity: 1; }

@media (min-width: 761px) {
  html.px-app body.journey-app[data-destination="schedule"] #wb-col-schedule { max-width: 640px !important; padding-top: 12px; }
}
@media (max-width: 360px) {
  html.px-app body.journey-app #wb-col-schedule #day-tabs button::first-line { font-size: 16px; }
  html.px-app body.journey-app #wb-col-schedule .jp-row .jp-tool { width: 34px; min-width: 34px; }
}
@media (prefers-reduced-motion: reduce) {
  html.px-app body.journey-app #wb-col-schedule :is(#day-tabs button, .jp-tool, .jp-add-row, .schedule-map-caption button) { transition: none; }
}

/* Design v2 restyle layer: places (final program). Scoped to html.px-app.
   Covers the 장소 screen (#disc-view), the shared place sheet (#map-sheet in both the
   map and the in-tab detail context), the compare panel and the map chrome.
   Presentation only: every control, id and state hook stays in the markup. */

html.px-app {
  --pxp-i-search: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-3.6-3.6'/%3E%3C/svg%3E");
  --pxp-i-star: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M12 2.8l2.75 5.57 6.15.9-4.45 4.33 1.05 6.12L12 16.83l-5.5 2.89 1.05-6.12L3.1 9.27l6.15-.9z'/%3E%3C/svg%3E");
  --pxp-i-map: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 4 3 6.2v13.6L9 18l6 2 6-2.2V4.2L15 6z'/%3E%3Cpath d='M9 4v14M15 6v14'/%3E%3C/svg%3E");
  --pxp-i-sliders: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M4 7h9M18 7h2M4 17h3M12 17h8'/%3E%3Ccircle cx='15.5' cy='7' r='2.4'/%3E%3Ccircle cx='9.5' cy='17' r='2.4'/%3E%3C/svg%3E");
  --pxp-i-down: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  --pxp-i-right: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 6 6 6-6 6'/%3E%3C/svg%3E");
  --pxp-i-left: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m15 6-6 6 6 6'/%3E%3C/svg%3E");
  --pxp-i-x: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='M18 6 6 18M6 6l12 12'/%3E%3C/svg%3E");
  --pxp-i-car: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m20 9.5-1.6-4A2 2 0 0 0 16.5 4h-9a2 2 0 0 0-1.9 1.5L4 9.5'/%3E%3Crect x='3' y='9.5' width='18' height='8' rx='2.2'/%3E%3Cpath d='M6 17.5V20M18 17.5V20M7 13.5h.01M17 13.5h.01'/%3E%3C/svg%3E");
  --pxp-i-won: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2.5' y='6' width='19' height='12' rx='2.5'/%3E%3Ccircle cx='12' cy='12' r='2.4'/%3E%3Cpath d='M6 12h.01M18 12h.01'/%3E%3C/svg%3E");
  --pxp-i-calplus: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 2.5v3.5M16 2.5v3.5M21 12.5V7a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h7.5M3 10h18M18.5 15.5v6M15.5 18.5h6'/%3E%3C/svg%3E");
  --pxp-i-info: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 16.5V11M12 7.6h.01'/%3E%3C/svg%3E");
  --pxp-i-chat: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7.9 20A9 9 0 1 0 4 16.1L2.5 21.5z'/%3E%3Cpath d='M8.5 12h.01M12 12h.01M15.5 12h.01'/%3E%3C/svg%3E");
  --pxp-i-nav: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 11 21 3l-8 18-2-8z'/%3E%3C/svg%3E");
  --pxp-i-pin: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M19.5 10c0 5-5.6 10.2-7 11.4a.8.8 0 0 1-1 0c-1.4-1.2-7-6.4-7-11.4a7.5 7.5 0 0 1 15 0'/%3E%3Ccircle cx='12' cy='10' r='2.6'/%3E%3C/svg%3E");
  --pxp-i-phone: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21.5 16.9v3a2 2 0 0 1-2.2 2 19.8 19.8 0 0 1-8.6-3.1 19.5 19.5 0 0 1-6-6A19.8 19.8 0 0 1 1.6 4.2 2 2 0 0 1 3.6 2h3a2 2 0 0 1 2 1.7c.1 1 .4 1.9.7 2.8a2 2 0 0 1-.5 2.1L7.6 9.9a16 16 0 0 0 6 6l1.3-1.3a2 2 0 0 1 2.1-.4c.9.3 1.8.6 2.8.7a2 2 0 0 1 1.7 2z'/%3E%3C/svg%3E");
  --pxp-i-cols: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='16' rx='2.5'/%3E%3Cpath d='M12 4v16'/%3E%3C/svg%3E");
  --pxp-i-clock: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 7v5l3 2'/%3E%3C/svg%3E");
  --pxp-i-open: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 7h9v9M7 17 17 7'/%3E%3C/svg%3E");
  --pxp-glass: rgba(255,255,255,.8);
  --pxp-chip-line: inset 0 0 0 1px rgba(18,24,21,.1);
  --pxp-float: 0 1px 2px rgba(18,24,21,.06), 0 8px 22px -8px rgba(18,40,34,.3);
  --pxp-navclear: calc(76px + env(safe-area-inset-bottom));
}

/* ======================================================================
   1. 장소 screen
   ====================================================================== */
html.px-app body.journey-app #disc-view {
  position: relative; background: var(--px-bg); color: var(--px-ink); font-family: var(--px-font);
  padding: 0 0 calc(var(--pxp-navclear) + 96px); -webkit-font-smoothing: antialiased; font-feature-settings: "tnum" 1;
}
/* The app header already carries the large "장소" title. */
html.px-app body.journey-app #disc-view > .journey-screen-head {
  display: block; height: 0; min-height: 0; margin: 0; padding: 0; border: 0; background: none;
}
html.px-app body.journey-app #disc-view > .journey-screen-head > h1 {
  position: absolute !important; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
/* ★ 담은 곳 → round saved button beside the search field */
html.px-app body.journey-app #disc-view > .journey-screen-head .journey-actions {
  position: absolute; z-index: 3; top: 14px; right: 16px; margin: 0; display: block;
}
html.px-app body.journey-app #disc-view > .journey-screen-head .journey-actions > button {
  position: relative; width: 48px; height: 48px; min-height: 48px; padding: 0; border: 0; border-radius: 16px;
  background: var(--px-card); box-shadow: var(--px-shadow), inset 0 0 0 1px var(--px-line);
  font-size: 0; color: #E39A1E; cursor: pointer; transition: transform .4s var(--px-spring);
}
html.px-app body.journey-app #disc-view > .journey-screen-head .journey-actions > button::before {
  content: ""; position: absolute; inset: 0; margin: auto; width: 22px; height: 22px; background: currentColor;
  -webkit-mask: var(--pxp-i-star) center / contain no-repeat; mask: var(--pxp-i-star) center / contain no-repeat;
}
html.px-app body.journey-app #disc-view > .journey-screen-head .journey-actions > button:active { transform: scale(.92); }

/* 지도 보기 → floating pill above the tab bar (Airbnb-style map toggle) */
html.px-app body.journey-app #disc-view .disc-map-link {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px; height: 48px; min-height: 48px; padding: 0 20px 0 17px;
  border: 0; border-radius: 24px; background: #17201D; color: #fff; font: 700 15px/1 var(--px-font); letter-spacing: -.01em;
  box-shadow: 0 12px 28px -10px rgba(10,24,20,.55), 0 2px 6px rgba(10,24,20,.18); cursor: pointer;
  transition: transform .45s var(--px-spring), bottom .45s var(--px-spring);
}
html.px-app body.journey-app #disc-view .disc-map-link::before {
  content: ""; width: 19px; height: 19px; background: currentColor;
  -webkit-mask: var(--pxp-i-map) center / contain no-repeat; mask: var(--pxp-i-map) center / contain no-repeat;
}
html.px-app body.journey-app #disc-view .disc-map-link:active { transform: translateX(-50%) scale(.95); }
@media (max-width: 760px) {
  html.px-app body.journey-app #disc-view .disc-map-link {
    position: fixed; z-index: 58; left: 50%; bottom: calc(var(--pxp-navclear) + 14px); transform: translateX(-50%);
  }
  html.px-app body.journey-app #disc-view:has(#disc-compare-bar:not([hidden])) .disc-map-link { bottom: calc(var(--pxp-navclear) + 82px); }
  /* A fixed pill needs a transform-free ancestor, so this screen eases in by opacity only. */
  html.px-app body.journey-app .side-scroll-pane > #disc-view { animation-name: pxp-fade; }
}
@media (min-width: 761px) {
  html.px-app body.journey-app #disc-view .disc-map-link { position: absolute; z-index: 3; top: 14px; right: 76px; height: 48px; }
  html.px-app body.journey-app #disc-view .disc-map-link:active { transform: scale(.95); }
}
@keyframes pxp-fade { from { opacity: 0; } to { opacity: 1; } }

/* toolbar: search, category chips, conditions, sort */
html.px-app body.journey-app #disc-view .disc-head {
  position: static; display: flex; flex-wrap: wrap; align-items: center; gap: 10px 8px;
  margin: 0; padding: 14px 16px 6px; border: 0; background: transparent; -webkit-backdrop-filter: none; backdrop-filter: none;
}
html.px-app body.journey-app #disc-view #disc-q {
  order: 0; width: calc(100% - 56px) !important; min-width: 0; height: 48px; min-height: 48px; margin: 0 !important;
  padding: 0 14px 0 44px; border: 0; border-radius: 16px; background: var(--px-card) var(--pxp-search-bg, none);
  box-shadow: var(--px-shadow), inset 0 0 0 1px var(--px-line); color: var(--px-ink);
  font: 550 16px/1.2 var(--px-font); -webkit-appearance: none; appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23858D89' stroke-width='2.2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-3.6-3.6'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: 15px center; background-size: 19px 19px;
}
html.px-app body.journey-app #disc-view #disc-q::placeholder { color: var(--px-ink3); font-weight: 500; }
html.px-app body.journey-app #disc-view #disc-q:focus-visible { outline: 2px solid var(--px-teal); outline-offset: 1px; }
html.px-app body.journey-app #disc-view #disc-q::-webkit-search-cancel-button { -webkit-appearance: none; }

/* horizontal chip rows bleed to the screen edge */
html.px-app body.journey-app #disc-view .disc-rowscroll {
  display: flex; gap: 2px; overflow-x: auto; scrollbar-width: none; overscroll-behavior-x: contain;
  margin: 0 -16px; padding: 0 12px; scroll-padding: 0 12px;
}
html.px-app body.journey-app #disc-view .disc-rowscroll::-webkit-scrollbar { display: none; }
html.px-app body.journey-app #disc-view #disc-cats { order: 1; flex: 0 0 calc(100% + 32px); margin: 0 -16px; padding: 0 12px; }
/* chip: 38px pill painted inside a 44px target (transparent border) */
html.px-app body.journey-app #disc-view .disc-chip {
  flex: none; display: inline-flex; align-items: center; gap: 6px; height: 44px; min-height: 44px; padding: 0 14px;
  border: 3px solid transparent; border-radius: 22px; background: var(--px-card); background-clip: padding-box;
  box-shadow: var(--pxp-chip-line); color: var(--px-ink2); font: 650 14px/1 var(--px-font); letter-spacing: -.01em; white-space: nowrap;
  cursor: pointer; transition: background-color .25s ease, color .2s ease, transform .4s var(--px-spring);
}
html.px-app body.journey-app #disc-view .disc-chip:active { transform: scale(.95); }
html.px-app body.journey-app #disc-view .disc-chip[aria-pressed="true"],
html.px-app body.journey-app #disc-view .disc-chip.tone-sea[aria-pressed="true"] { background-color: var(--px-teal); color: #fff; box-shadow: none; }
html.px-app body.journey-app #disc-view .disc-chip[data-disc-shortlist] { background-color: var(--px-mona-soft); color: var(--px-mona); box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--px-mona) 30%, transparent); }
html.px-app body.journey-app #disc-view .disc-chip[data-disc-shortlist]::before { content: ""; width: 7px; height: 7px; border-radius: 4px; background: var(--px-mona); }

/* 취향·영업일 (conditions) and sort: two quiet pills on one row */
html.px-app body.journey-app #disc-view .journey-filters {
  order: 2; flex: 0 1 auto; min-width: 0; margin: 0; padding: 0; border: 0; border-radius: 0; background: none;
}
html.px-app body.journey-app #disc-view .journey-filters > summary {
  display: inline-flex; align-items: center; gap: 7px; height: 40px; min-height: 44px; padding: 0 14px 0 12px;
  border: 2px solid transparent; border-radius: 22px; background: var(--px-card); background-clip: padding-box;
  box-shadow: var(--pxp-chip-line); color: var(--px-ink); font: 700 14px/1 var(--px-font); letter-spacing: -.01em; white-space: nowrap; cursor: pointer;
}
html.px-app body.journey-app #disc-view .journey-filters > summary::before {
  content: ""; width: 17px; height: 17px; background: var(--px-teal);
  -webkit-mask: var(--pxp-i-sliders) center / contain no-repeat; mask: var(--pxp-i-sliders) center / contain no-repeat;
}
html.px-app body.journey-app #disc-view .journey-filters > summary::after {
  content: ""; margin: 0; width: 14px; height: 14px; background: var(--px-ink3); font-size: 0;
  -webkit-mask: var(--pxp-i-down) center / contain no-repeat; mask: var(--pxp-i-down) center / contain no-repeat;
  transition: transform .35s var(--px-spring);
}
html.px-app body.journey-app #disc-view .journey-filters[open] > summary::after { content: ""; transform: rotate(180deg); }
html.px-app body.journey-app #disc-view .journey-filters[open] { flex: 0 0 100%; }
html.px-app body.journey-app #disc-view .journey-filters[open] > summary { background-color: var(--px-teal-soft); box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--px-teal) 22%, transparent); }
html.px-app body.journey-app #disc-view .journey-filters :is(#disc-tags, #disc-dates) { display: flex; margin: 6px -16px 0; }
html.px-app body.journey-app #disc-view .journey-filters #disc-dates { margin-top: 2px; }
html.px-app body.journey-app #disc-view .disc-meta { display: contents; }
html.px-app body.journey-app #disc-view .disc-sort-choice {
  order: 3; flex: 0 1 auto; min-width: 0; max-width: 100%; height: 44px; min-height: 44px; margin: 0; padding: 0 34px 0 14px;
  border: 2px solid transparent; border-radius: 22px; background: var(--px-card) no-repeat right 12px center / 14px 14px; background-clip: padding-box;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23858D89' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  box-shadow: var(--pxp-chip-line); color: var(--px-ink); font: 700 14px/1 var(--px-font); -webkit-appearance: none; appearance: none; cursor: pointer;
}
html.px-app body.journey-app #disc-view .journey-filters[open] ~ .disc-meta .disc-sort-choice { order: 3; }
html.px-app body.journey-app #disc-view #disc-count {
  order: 5; flex: 1 1 100%; min-width: 0; margin: 6px 0 -6px; padding: 0 4px;
  font: 700 13px/1.3 var(--px-font); color: var(--px-ink3); letter-spacing: .005em;
}
html.px-app body.journey-app #disc-view #disc-reset {
  order: 4; height: 44px; min-height: 44px; margin-left: auto; padding: 0 6px; border: 0; background: none; box-shadow: none;
  color: var(--px-teal); font: 700 13.5px/1 var(--px-font); text-decoration: underline; text-underline-offset: 3px;
}
html.px-app body.journey-app #disc-view .disc-active-filters { order: 6; display: flex; flex-wrap: wrap; gap: 6px; width: 100%; }
html.px-app body.journey-app #disc-view .disc-applied {
  min-height: 44px; height: 44px; padding: 0 12px; border: 3px solid transparent; border-radius: 22px; background: var(--px-teal-soft); background-clip: padding-box;
  color: var(--px-teal); font: 700 13px/1.2 var(--px-font); text-align: left;
}

@media (min-width: 761px) { html.px-app body.journey-app #disc-view .disc-head > #disc-q { width: calc(100% - 196px) !important; } }

/* compare selection → floating bar (mobile) / inline card (desktop) */
html.px-app body.journey-app #disc-view .disc-compare-bar {
  order: 7; flex-basis: 100%; display: flex; align-items: center; gap: 6px; margin: 0; padding: 6px 6px 6px 16px;
  border: 0; border-radius: 22px; background: rgba(20,32,29,.92); color: #fff; box-shadow: 0 16px 34px -12px rgba(10,24,20,.6);
  -webkit-backdrop-filter: blur(20px) saturate(160%); backdrop-filter: blur(20px) saturate(160%);
  font: 650 13.5px/1.3 var(--px-font);
}
html.px-app body.journey-app #disc-view .disc-compare-bar[hidden] { display: none; }
html.px-app body.journey-app #disc-view .disc-compare-bar .disc-compare-message { flex: 1; min-width: 0; color: rgba(255,255,255,.82); }
html.px-app body.journey-app #disc-view .disc-compare-bar button {
  height: 44px; min-height: 44px; padding: 0 14px; border: 0; border-radius: 16px; background: rgba(255,255,255,.12); color: #fff;
  font: 700 14px/1 var(--px-font); white-space: nowrap; cursor: pointer;
}
html.px-app body.journey-app #disc-view .disc-compare-bar button.primary { background: #fff; color: var(--px-teal); }
html.px-app body.journey-app #disc-view .disc-compare-bar button:disabled { opacity: 1; background: rgba(255,255,255,.18); color: rgba(255,255,255,.6); }
@media (max-width: 760px) {
  html.px-app body.journey-app #disc-view .disc-compare-bar {
    position: fixed; z-index: 57; left: 12px; right: 80px; bottom: calc(var(--pxp-navclear) + 12px); min-height: 56px;
    animation: pxp-rise .5s var(--px-spring) both;
  }
  html.px-app body.journey-app #disc-view .disc-compare-bar .disc-compare-message {
    position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap;
  }
  html.px-app body.journey-app #disc-view .disc-compare-bar { padding-left: 6px; }
  html.px-app body.journey-app #disc-view .disc-compare-bar #disc-compare-open { flex: 1; }
}
@keyframes pxp-rise { from { opacity: 0; transform: translateY(18px) scale(.97); } to { opacity: 1; transform: none; } }

/* note fold + batch action */
html.px-app body.journey-app #disc-view .disc-note-panel { margin: 0 16px 4px; }
html.px-app body.journey-app #disc-view .disc-note-panel > summary {
  display: inline-flex; align-items: center; gap: 6px; min-height: 44px; list-style: none; cursor: pointer;
  font: 600 13px/1.3 var(--px-font); color: var(--px-ink3);
}
html.px-app body.journey-app #disc-view .disc-note-panel > summary::-webkit-details-marker { display: none; }
html.px-app body.journey-app #disc-view .disc-note-panel > summary::before {
  content: ""; width: 16px; height: 16px; background: currentColor;
  -webkit-mask: var(--pxp-i-info) center / contain no-repeat; mask: var(--pxp-i-info) center / contain no-repeat;
}
html.px-app body.journey-app #disc-view .disc-note-panel > summary::after { content: "⌄"; margin: -4px 0 0 2px; }
html.px-app body.journey-app #disc-view .disc-note-panel[open] > summary::after { content: "⌃"; margin: 4px 0 0 2px; }
html.px-app body.journey-app #disc-view .disc-note-panel .disc-note {
  margin: 0 0 10px; padding: 14px 16px; border-radius: 18px; background: var(--px-card); box-shadow: inset 0 0 0 1px var(--px-line);
  font: 500 14px/1.55 var(--px-font); color: var(--px-ink2);
}
html.px-app body.journey-app #disc-view .disc-fav-batch { margin: 4px 16px 12px; }
html.px-app body.journey-app #disc-view .disc-batch {
  width: 100%; min-height: 52px; border: 0; border-radius: 18px; background: var(--px-teal); color: #fff; font: 750 15px/1.2 var(--px-font);
  box-shadow: 0 12px 24px -12px rgba(15,74,69,.7);
}

/* ---------- place cards ---------- */
html.px-app body.journey-app #disc-view .disc-list { display: grid; grid-template-columns: minmax(0, 1fr); gap: 16px; padding: 6px 16px 0; }
@media (min-width: 761px) { html.px-app body.journey-app #disc-view .disc-list { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
html.px-app body.journey-app #disc-view .disc-card {
  position: relative; display: flex; flex-wrap: wrap; align-items: center; align-content: flex-start; column-gap: 6px; row-gap: 0;
  min-width: 0; padding: 8px 16px 0; border: 0; border-radius: 26px; background: var(--px-card);
  box-shadow: var(--px-shadow), inset 0 0 0 1px var(--px-line); overflow: hidden; font-family: var(--px-font);
}
/* flatten the card so the status line, tags and actions can be ordered as one sheet */
html.px-app body.journey-app #disc-view .disc-card > .disc-top,
html.px-app body.journey-app #disc-view .disc-card > .disc-top > div,
html.px-app body.journey-app #disc-view .disc-card > .disc-top > div > .disc-badges { display: contents; }
html.px-app body.journey-app #disc-view .disc-card > .disc-photo-open { order: 0; flex: 0 0 calc(100% + 16px); margin: 0 -8px; }
html.px-app body.journey-app #disc-view .disc-card .disc-name { order: 1; flex: 0 0 100%; padding: 12px 0 0; }
html.px-app body.journey-app #disc-view .disc-card .disc-facts { order: 2; }
html.px-app body.journey-app #disc-view .disc-card .disc-reason { order: 3; flex: 0 0 100%; }
html.px-app body.journey-app #disc-view .disc-card > .disc-top > div > .disc-badges > * { order: 4; }
html.px-app body.journey-app #disc-view .disc-card > .disc-top > div > .disc-badges > :is(.commit, .closed, .unknown) { order: 2; }
html.px-app body.journey-app #disc-view .disc-card .disc-review-details { order: 4; }
html.px-app body.journey-app #disc-view .disc-card .disc-acts { order: 6; flex: 0 0 calc(100% + 32px); }

/* photo: inset, rounded, credit as a small overlay */
html.px-app body.journey-app #disc-view .disc-photo-open {
  display: block; width: 100%; padding: 0; border: 0; border-radius: 20px; background: none; overflow: hidden; cursor: pointer;
  transition: transform .45s var(--px-spring);
}
html.px-app body.journey-app #disc-view .disc-photo-open:active { transform: scale(.985); }
html.px-app body.journey-app #disc-view .disc-card .sn-ph { height: auto; aspect-ratio: 16 / 10; margin: 0; border-radius: 20px; }
html.px-app body.journey-app #disc-view .disc-card .sn-ph img:not(.ai-spot-lg) { transition: transform .6s cubic-bezier(.2,.7,.2,1); }
html.px-app body.journey-app #disc-view .disc-card .sn-ph::after {
  content: ""; position: absolute; inset: 0; pointer-events: none; border-radius: inherit;
  background: linear-gradient(180deg, rgba(0,0,0,0) 62%, rgba(0,0,0,.22) 100%); box-shadow: inset 0 0 0 1px rgba(0,0,0,.04);
}
html.px-app body.journey-app #disc-view .disc-card .sn-ph .credit {
  right: 10px; bottom: 9px; z-index: 1; padding: 3px 7px; border-radius: 8px; background: rgba(0,0,0,.34);
  -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); color: rgba(255,255,255,.92); font: 600 10.5px/1.2 var(--px-font);
}
html.px-app body.journey-app #disc-view .disc-card .sn-ph .cap {
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; width: 100%; height: 100%;
  background: none; color: var(--px-ink3); font: 600 12.5px/1.3 var(--px-font); opacity: 1;
}
html.px-app body.journey-app #disc-view .disc-card .sn-ph .cap .ai-spot-lg { position: static; width: 64px; height: auto; margin: 0 !important; border-radius: 14px; opacity: .92; }

/* ★ → glass button on the photo */
html.px-app body.journey-app #disc-view .disc-card .disc-fav {
  position: absolute; z-index: 2; top: 16px; right: 16px; width: 44px; height: 44px; min-width: 44px; min-height: 44px; padding: 0;
  border: 1px solid rgba(255,255,255,.55); border-radius: 22px; background: rgba(255,255,255,.78);
  -webkit-backdrop-filter: blur(14px) saturate(170%); backdrop-filter: blur(14px) saturate(170%);
  box-shadow: 0 6px 16px -6px rgba(0,0,0,.35); font-size: 0; color: rgba(18,24,21,.32); cursor: pointer;
  transition: transform .45s var(--px-spring), color .2s ease;
}
html.px-app body.journey-app #disc-view .disc-card .disc-fav::before {
  content: ""; position: absolute; inset: 0; margin: auto; width: 21px; height: 21px; background: currentColor;
  -webkit-mask: var(--pxp-i-star) center / contain no-repeat; mask: var(--pxp-i-star) center / contain no-repeat;
}
html.px-app body.journey-app #disc-view .disc-card .disc-fav[aria-pressed="true"] { color: #F0A21C; background: #fff; }
html.px-app body.journey-app #disc-view .disc-card .disc-fav:active { transform: scale(.86); }

/* title */
html.px-app body.journey-app #disc-view .disc-card .disc-name-open {
  display: block; width: 100%; min-height: 44px; margin: -4px 0; padding: 4px 0; border: 0; background: none; text-align: left; cursor: pointer;
  font: 780 18px/1.3 var(--px-font); letter-spacing: -.03em; color: var(--px-ink); word-break: keep-all; overflow-wrap: anywhere;
}
/* one status line: 휴무/확정 state, distance from the hotel, 2-person budget */
html.px-app body.journey-app #disc-view .disc-card .disc-facts {
  display: inline-flex; flex-wrap: wrap; align-items: center; gap: 2px 10px; min-width: 0; margin: 2px 0 0; padding: 0;
  grid-template-columns: none;
}
html.px-app body.journey-app #disc-view .disc-card .disc-facts > * {
  display: inline-flex; align-items: center; gap: 5px; padding: 0; border-radius: 0; background: none;
  font: 600 13.5px/1.5 var(--px-font); color: var(--px-ink2); white-space: nowrap;
}
html.px-app body.journey-app #disc-view .disc-card .disc-facts > strong { font-weight: 750; color: var(--px-ink); }
html.px-app body.journey-app #disc-view .disc-card .disc-facts > *::before {
  content: ""; flex: none; width: 15px; height: 15px; background: var(--px-ink3);
  -webkit-mask: var(--pxp-i-car) center / contain no-repeat; mask: var(--pxp-i-car) center / contain no-repeat;
}
html.px-app body.journey-app #disc-view .disc-card .disc-facts > strong::before { -webkit-mask-image: var(--pxp-i-won); mask-image: var(--pxp-i-won); }
html.px-app body.journey-app #disc-view .disc-card .disc-reason {
  display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; margin: 6px 0 0; padding: 0;
  font: 500 14px/1.5 var(--px-font); color: var(--px-ink2); word-break: keep-all;
}

/* tags (px-tag family) */
html.px-app body.journey-app #disc-view .disc-card .dbadge {
  display: inline-flex; align-items: center; gap: 4px; height: 24px; min-height: 0; margin: 10px 0 0; padding: 0 9px;
  border: 0; border-radius: 12px; background: #F1EFE9; color: var(--px-ink2); font: 650 12px/1 var(--px-font); letter-spacing: 0; white-space: nowrap;
}
html.px-app body.journey-app #disc-view .disc-card .dbadge.mona { background: var(--px-mona-soft); color: var(--px-mona); }
html.px-app body.journey-app #disc-view .disc-card .dbadge.feno { background: var(--px-feno-soft); color: var(--px-feno); }
html.px-app body.journey-app #disc-view .disc-card .dbadge:is(.warn, .unknown) { background: var(--px-amber-soft); color: var(--px-amber); }
html.px-app body.journey-app #disc-view .disc-card .dbadge.closed { background: var(--px-red-soft); color: var(--px-red); }
html.px-app body.journey-app #disc-view .disc-card .dbadge.commit { background: var(--px-teal); color: #fff; }
html.px-app body.journey-app #disc-view .disc-card .dbadge.nanchuk { background: #F4ECE0; color: #7A5B2E; }
html.px-app body.journey-app #disc-view .disc-card .dbadge.new { background: var(--px-teal-soft); color: var(--px-teal); }
html.px-app body.journey-app #disc-view .disc-card .dbadge.rv { background: var(--px-teal-soft); color: var(--px-teal); font-weight: 750; }
html.px-app body.journey-app #disc-view .disc-card .dbadge.promo { background: var(--px-red-soft); color: var(--px-red); }
html.px-app body.journey-app #disc-view .disc-card .dbadge :is(img, .ai-spot) { width: 16px; height: 16px; margin: 0; }
/* status-line tags sit on the text baseline row */
html.px-app body.journey-app #disc-view .disc-card > .disc-top > div > .disc-badges > :is(.commit, .closed, .unknown) { height: 22px; margin: 3px 0 0; border-radius: 7px; padding: 0 7px; font-size: 11.5px; font-weight: 750; }

/* review/score fold as the last tag */
html.px-app body.journey-app #disc-view .disc-card .disc-review-details { margin: 10px 0 0; }
html.px-app body.journey-app #disc-view .disc-card .disc-review-details > summary {
  display: inline-flex; align-items: center; gap: 3px; height: 44px; min-height: 44px; margin: -10px 0; padding: 0 8px 0 9px;
  border: 10px solid transparent; border-left-width: 0; border-right-width: 0; border-radius: 22px; background: none;
  box-shadow: inset 0 0 0 1px rgba(18,24,21,.1); color: var(--px-ink2); font: 650 12px/1 var(--px-font); list-style: none; cursor: pointer;
}
html.px-app body.journey-app #disc-view .disc-card .disc-review-details > summary::after {
  content: ""; width: 12px; height: 12px; background: currentColor;
  -webkit-mask: var(--pxp-i-down) center / contain no-repeat; mask: var(--pxp-i-down) center / contain no-repeat; transition: transform .3s var(--px-spring);
}
html.px-app body.journey-app #disc-view .disc-card .disc-review-details[open] { flex: 0 0 100%; }
html.px-app body.journey-app #disc-view .disc-card .disc-review-details[open] > summary::after { content: ""; transform: rotate(180deg); }
html.px-app body.journey-app #disc-view .disc-card .disc-review-details > .disc-badges { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 2px; }
html.px-app body.journey-app #disc-view .disc-card .disc-review-details > .disc-badges > * { margin-top: 6px; height: auto; min-height: 24px; padding: 4px 9px; white-space: normal; line-height: 1.3; }

/* action row: labelled icon buttons in a card footer */
html.px-app body.journey-app #disc-view .disc-card .disc-acts {
  display: flex; flex-wrap: wrap; align-items: stretch; gap: 0; margin: 14px -16px 0; padding: 0; border-top: 1px solid var(--px-line);
}
html.px-app body.journey-app #disc-view .disc-card .disc-acts > .share-op--compact { display: contents; }
html.px-app body.journey-app #disc-view .disc-card .disc-acts :is(.disc-act, .share-op-toggle) {
  position: relative; flex: 1 1 0; display: inline-flex; align-items: center; justify-content: center; gap: 7px;
  min-width: 0; height: 52px; min-height: 52px; margin: 0; padding: 0 6px; border: 0; border-radius: 0; background: none;
  color: var(--px-ink2); font-size: 0; line-height: 1; cursor: pointer; transition: background-color .2s ease;
}
html.px-app body.journey-app #disc-view .disc-card .disc-acts :is(.disc-act, .share-op-toggle):active { background: #F4F2ED; }
html.px-app body.journey-app #disc-view .disc-card .disc-acts :is(.disc-act, .share-op-toggle)::before {
  content: ""; flex: none; width: 19px; height: 19px; background: currentColor;
  -webkit-mask: var(--pxp-i-info) center / contain no-repeat; mask: var(--pxp-i-info) center / contain no-repeat;
}
html.px-app body.journey-app #disc-view .disc-card .disc-acts :is(.disc-act, .share-op-toggle) > * { font-size: 0; }
html.px-app body.journey-app #disc-view .disc-card .disc-acts .jp-place-plan-icon { color: var(--px-teal); }
html.px-app body.journey-app #disc-view .disc-card .disc-acts .jp-place-plan-icon::before { -webkit-mask-image: var(--pxp-i-calplus); mask-image: var(--pxp-i-calplus); }
html.px-app body.journey-app #disc-view .disc-card .disc-acts .share-op-toggle::before { -webkit-mask-image: var(--pxp-i-chat); mask-image: var(--pxp-i-chat); }
/* visible labels (accessible names stay on aria-label) */
html.px-app body.journey-app #disc-view .disc-card .disc-acts :is(.disc-act, .share-op-toggle) { --pxp-label: "상세"; }
html.px-app body.journey-app #disc-view .disc-card .disc-acts .jp-place-plan-icon { --pxp-label: "일정에 담기"; }
html.px-app body.journey-app #disc-view .disc-card .disc-acts .share-op-toggle { --pxp-label: "의견"; }
html.px-app body.journey-app #disc-view .disc-card .disc-acts :is(.disc-act, .share-op-toggle)::after {
  content: var(--pxp-label); position: static; order: 1; font: 700 14px/1 var(--px-font); letter-spacing: -.01em; white-space: nowrap;
}
html.px-app body.journey-app #disc-view .disc-card .disc-acts .share-op-toggle .share-op-glyph { display: none; }
html.px-app body.journey-app #disc-view .disc-card .disc-acts .share-op-toggle .share-op-dots { order: 2; display: inline-flex; gap: 0; }
html.px-app body.journey-app #disc-view .disc-card .disc-acts .share-op-toggle .share-op-dot {
  width: 18px; height: 18px; margin-left: -4px; border: 2px solid #fff; border-radius: 9px; font: 800 9px/1 var(--px-font);
}
html.px-app body.journey-app #disc-view .disc-card .disc-acts .share-op-toggle .share-op-dot:first-child { margin-left: 0; }
html.px-app body.journey-app #disc-view .disc-card .disc-acts .share-op-toggle .share-op-dot.feno { background: var(--px-feno); }
html.px-app body.journey-app #disc-view .disc-card .disc-acts .share-op-toggle .share-op-dot.mona { background: var(--px-mona); }
html.px-app body.journey-app #disc-view .disc-card .disc-acts .share-op-toggle[aria-expanded="true"] { color: var(--px-teal); background: var(--px-teal-soft); }
html.px-app body.journey-app #disc-view .disc-card .disc-acts :is(.disc-act, .share-op-toggle):focus-visible { outline: 2px solid var(--px-teal); outline-offset: -3px; border-radius: 14px; }
/* hairline separators between the footer buttons */
html.px-app body.journey-app #disc-view .disc-card .disc-acts > :is(.disc-act, .share-op--compact) ~ :is(.disc-act, .share-op--compact > .share-op-toggle),
html.px-app body.journey-app #disc-view .disc-card .disc-acts > .disc-act ~ .share-op--compact > .share-op-toggle { box-shadow: -1px 0 0 var(--px-line); }
html.px-app body.journey-app #disc-view .disc-card .disc-acts > .disc-act ~ .disc-act { box-shadow: -1px 0 0 var(--px-line); }
/* the opened opinion form takes the full width under the footer */
html.px-app body.journey-app #disc-view .disc-card .share-op--compact .share-op-body:not([hidden]) {
  flex: 0 0 100%; display: flex; flex-direction: column; gap: 10px; margin: 0; padding: 14px 16px 16px; border-top: 1px solid var(--px-line); background: #FAF9F6;
}

/* empty state */
html.px-app body.journey-app #disc-view .disc-empty {
  padding: 40px 24px; border-radius: 24px; background: var(--px-card); box-shadow: var(--px-shadow), inset 0 0 0 1px var(--px-line);
  font: 600 15px/1.6 var(--px-font); color: var(--px-ink2);
}
html.px-app body.journey-app #disc-view .disc-empty button {
  margin-top: 14px; height: 48px; min-height: 48px; padding: 0 20px; border: 0; border-radius: 16px; background: var(--px-teal); color: #fff; font: 700 15px/1 var(--px-font);
}

/* ======================================================================
   2. Opinions (card fold and sheet): attribution pills, segmented vote, memo
   ====================================================================== */
html.px-app body.journey-app :is(#disc-view, #map-sheet) .share-op-badges { display: flex; flex-direction: row; flex-wrap: wrap; gap: 6px; }
html.px-app body.journey-app :is(#disc-view, #map-sheet) .share-op-badge {
  display: inline-flex; align-items: center; min-height: 26px; height: auto; padding: 4px 10px; border: 0; border-radius: 13px;
  background: var(--px-feno-soft); color: var(--px-feno); font: 650 12.5px/1.35 var(--px-font); white-space: normal;
}
html.px-app body.journey-app :is(#disc-view, #map-sheet) .share-op-badge b { font-weight: 800; }
html.px-app body.journey-app :is(#disc-view, #map-sheet) .share-op-badges > .share-op-badge:nth-child(2) { background: var(--px-mona-soft); color: var(--px-mona); }
html.px-app body.journey-app :is(#disc-view, #map-sheet) .share-op .jto-hint { margin: 0; font: 550 12.5px/1.45 var(--px-font); color: var(--px-ink3); }
html.px-app body.journey-app :is(#disc-view, #map-sheet) .share-op-row {
  display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 3px; padding: 3px; border-radius: 16px; background: #ECE9E2;
}
html.px-app body.journey-app :is(#disc-view, #map-sheet) .share-op-row button {
  display: flex; align-items: center; justify-content: center; text-align: center;
  min-width: 0; height: 44px; min-height: 44px; padding: 0 4px; border: 0; border-radius: 13px; background: none;
  color: var(--px-ink2); font: 700 13.5px/1.1 var(--px-font); letter-spacing: -.02em; white-space: nowrap; cursor: pointer;
  transition: background-color .25s ease, color .2s ease, transform .4s var(--px-spring);
}
html.px-app body.journey-app :is(#disc-view, #map-sheet) .share-op-row button:active { transform: scale(.94); }
html.px-app body.journey-app :is(#disc-view, #map-sheet) .share-op-row button[aria-pressed="true"] { background: #fff; color: var(--px-ink); box-shadow: 0 1px 2px rgba(0,0,0,.08), 0 4px 10px -4px rgba(0,0,0,.18); }
html.px-app body.journey-app :is(#disc-view, #map-sheet) .share-op-row button[data-op-vote="want"][aria-pressed="true"] { color: var(--px-ok); }
html.px-app body.journey-app :is(#disc-view, #map-sheet) .share-op-row button[data-op-vote="hold"][aria-pressed="true"] { color: var(--px-amber); }
html.px-app body.journey-app :is(#disc-view, #map-sheet) .share-op-row button[data-op-vote="skip"][aria-pressed="true"] { color: var(--px-red); }
html.px-app body.journey-app :is(#disc-view, #map-sheet) .share-op input[data-op-memo] {
  width: 100%; height: 48px; min-height: 48px; margin: 0; padding: 0 14px; border: 0; border-radius: 14px; background: #fff;
  box-shadow: inset 0 0 0 1px rgba(18,24,21,.12); color: var(--px-ink); font: 500 16px/1.2 var(--px-font);
}
html.px-app body.journey-app :is(#disc-view, #map-sheet) .share-op input[data-op-memo]:focus-visible { outline: 2px solid var(--px-teal); outline-offset: 0; }
html.px-app body.journey-app :is(#disc-view, #map-sheet) .share-op [data-jto="goto-connect"] {
  height: 44px; min-height: 44px; padding: 0 16px; border: 0; border-radius: 14px; background: var(--px-teal-soft); color: var(--px-teal); font: 700 14px/1 var(--px-font);
}

/* ======================================================================
   3. Place sheet (#map-sheet): shared parts
   ====================================================================== */
html.px-app body.journey-app #map-sheet { font-family: var(--px-font); color: var(--px-ink); -webkit-font-smoothing: antialiased; font-feature-settings: "tnum" 1; }
html.px-app body.journey-app #map-sheet h3#sheet-title { margin: 0; font: 780 20px/1.25 var(--px-font); letter-spacing: -.03em; color: var(--px-ink); word-break: keep-all; }
html.px-app body.journey-app #map-sheet .sheet-title-group { gap: 8px; min-width: 0; }
html.px-app body.journey-app #map-sheet #sheet-num:empty { display: none; }
html.px-app body.journey-app #map-sheet #sheet-num {
  flex: none; display: inline-grid; place-items: center; min-width: 26px; height: 26px; padding: 0 7px; border-radius: 13px;
  background: var(--px-teal); color: #fff; font: 800 13px/1 var(--px-font);
}
html.px-app body.journey-app #map-sheet .fact { margin: 0; font: 550 14px/1.5 var(--px-font); color: var(--px-ink2); word-break: keep-all; }
html.px-app body.journey-app #map-sheet .sheet-close {
  position: relative; flex: none; width: 44px; height: 44px; min-width: 44px; min-height: 44px; padding: 0; border: 0; border-radius: 22px;
  background: none; color: var(--px-ink2); font-size: 0; cursor: pointer; transition: transform .4s var(--px-spring);
}
html.px-app body.journey-app #map-sheet .sheet-close::before {
  content: ""; position: absolute; inset: 6px; border-radius: 16px; background: #EFEDE7;
}
html.px-app body.journey-app #map-sheet .sheet-close::after {
  content: ""; position: absolute; inset: 0; margin: auto; width: 17px; height: 17px; background: currentColor;
  -webkit-mask: var(--pxp-i-x) center / contain no-repeat; mask: var(--pxp-i-x) center / contain no-repeat;
}
html.px-app body.journey-app #map-sheet .sheet-close:active { transform: scale(.9); }

/* action chips (Google Maps pattern): one scrolling row, first action filled */
html.px-app body.journey-app #map-sheet .acts {
  display: flex; flex-wrap: nowrap; align-items: center; gap: 8px; margin: 0 0 -10px; padding: 12px 20px 12px;
  overflow-x: auto; scrollbar-width: none; overscroll-behavior-x: contain; scroll-padding: 0 20px; grid-template-columns: none;
}
html.px-app body.journey-app #map-sheet .acts::-webkit-scrollbar { display: none; }
html.px-app body.journey-app #map-sheet .acts:empty { display: none; }
html.px-app body.journey-app #map-sheet .acts > :is(a, button) {
  flex: none; display: inline-flex; align-items: center; justify-content: center; gap: 7px; box-sizing: border-box;
  width: auto; height: 44px; min-width: 0; min-height: 44px; margin: 0; padding: 0 16px 0 13px; border: 0; border-radius: 22px;
  background: var(--px-card); box-shadow: var(--pxp-chip-line); color: var(--px-teal);
  font: 700 14px/1 var(--px-font); letter-spacing: -.01em; text-decoration: none; white-space: nowrap; cursor: pointer;
  transition: transform .4s var(--px-spring), background-color .2s ease;
}
html.px-app body.journey-app #map-sheet .acts > :is(a, button):active { transform: scale(.95); }
html.px-app body.journey-app #map-sheet .acts > :is(a, button)::before {
  content: ""; flex: none; width: 18px; height: 18px; background: currentColor;
  -webkit-mask: var(--pxp-i-open) center / contain no-repeat; mask: var(--pxp-i-open) center / contain no-repeat;
}
html.px-app body.journey-app #map-sheet .acts > .jp-place-plan { order: -2; background: var(--px-teal); color: #fff; box-shadow: 0 6px 12px -8px rgba(15,74,69,.9); }
html.px-app body.journey-app #map-sheet .acts > .jp-place-plan::before { -webkit-mask-image: var(--pxp-i-calplus); mask-image: var(--pxp-i-calplus); }
html.px-app body.journey-app #map-sheet .acts > a[href*="kakao"] { order: -1; }
html.px-app body.journey-app #map-sheet .acts > a[href*="kakao"]::before { -webkit-mask-image: var(--pxp-i-nav); mask-image: var(--pxp-i-nav); }
html.px-app body.journey-app #map-sheet .acts > a[href*="naver"]::before { -webkit-mask-image: var(--pxp-i-pin); mask-image: var(--pxp-i-pin); }
html.px-app body.journey-app #map-sheet .acts > a[href^="tel:"]::before { -webkit-mask-image: var(--pxp-i-phone); mask-image: var(--pxp-i-phone); }
html.px-app body.journey-app #map-sheet .acts > .jp-view-map { order: 2; }
html.px-app body.journey-app #map-sheet .acts > .jp-view-map::before { -webkit-mask-image: var(--pxp-i-map); mask-image: var(--pxp-i-map); }
html.px-app body.journey-app #map-sheet .acts > .disc-compare { order: 3; color: var(--px-ink2); }
html.px-app body.journey-app #map-sheet .acts > .disc-compare::before { -webkit-mask-image: var(--pxp-i-cols); mask-image: var(--pxp-i-cols); }
html.px-app body.journey-app #map-sheet .acts > .disc-compare[aria-pressed="true"] { background: var(--px-teal-soft); color: var(--px-teal); box-shadow: inset 0 0 0 1.5px color-mix(in oklab, var(--px-teal) 40%, transparent); }
html.px-app body.journey-app #map-sheet .acts > :is(a, button):focus-visible { outline: 2px solid var(--px-teal); outline-offset: 2px; }

/* detail content: flattened so photo, title, status and actions lead */
html.px-app body.journey-app #map-sheet .sheet-detail[hidden] { display: none !important; }
html.px-app body.journey-app #map-sheet .sheet-detail:not([hidden]) { margin: 0; padding: 0; border: 0; }
html.px-app body.journey-app #map-sheet .sn-hero { position: relative; height: 250px; margin: 0; overflow: hidden; background: #E6E2D9; }
html.px-app body.journey-app #map-sheet .sn-hero img.full { transition: transform .8s cubic-bezier(.2,.7,.2,1); }
html.px-app body.journey-app #map-sheet .sn-hero .credit {
  right: 12px; bottom: 12px; padding: 3px 7px; border-radius: 8px; background: rgba(0,0,0,.34);
  -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); color: rgba(255,255,255,.92); font: 600 10.5px/1.2 var(--px-font);
}
html.px-app body.journey-app #map-sheet .sn-hero > .badge {
  top: auto !important; bottom: 12px !important; left: 12px !important; right: auto !important; display: flex; gap: 6px;
  padding: 0; background: none; border-radius: 0;
}
html.px-app body.journey-app #map-sheet .sn-pill,
html.px-app body.journey-app #map-sheet .sn-pad .chip {
  display: inline-flex; align-items: center; height: 24px; padding: 0 9px; border: 0; border-radius: 12px; font: 750 12px/1 var(--px-font); white-space: nowrap;
}
html.px-app body.journey-app #map-sheet .sn-pill.blue { background: var(--px-feno-soft); color: var(--px-feno); }
html.px-app body.journey-app #map-sheet .sn-pill.orange { background: var(--px-mona-soft); color: var(--px-mona); }
html.px-app body.journey-app #map-sheet .sn-pill.green { background: var(--px-ok-soft); color: var(--px-ok); }
html.px-app body.journey-app #map-sheet .sn-hero > .badge .sn-pill { box-shadow: 0 4px 12px -4px rgba(0,0,0,.35); }
html.px-app body.journey-app #map-sheet .sn-hero > .badge .sn-pill.blue { background: var(--px-feno); color: #fff; }
html.px-app body.journey-app #map-sheet .sn-hero > .badge .sn-pill.orange { background: var(--px-mona); color: #fff; }
html.px-app body.journey-app #map-sheet .sn-hero > .badge .sn-pill.green { background: #fff; color: var(--px-ok); }
html.px-app body.journey-app #map-sheet .sn-pad { margin: 0 !important; padding: 18px 20px 0; }
html.px-app body.journey-app #map-sheet .sn-pad > .sn-tiny { font: 700 12.5px/1.2 var(--px-font) !important; color: var(--px-ink3); letter-spacing: .01em; }
html.px-app body.journey-app #map-sheet .sn-place-name { display: block; margin-top: 5px; font: 800 25px/1.2 var(--px-font) !important; letter-spacing: -.04em !important; color: var(--px-ink); word-break: keep-all; }
html.px-app body.journey-app #map-sheet .sn-pad > .row { margin-top: 10px !important; gap: 6px !important; }
html.px-app body.journey-app #map-sheet .sheet-detail:has(> .sn-hero > .badge) > .sn-pad > .row { display: none !important; }

/* grouped sections (v2 cards on the warm ground) */
html.px-app body.journey-app #map-sheet .sheet-detail .sn-sect { margin: 14px 16px 0; }
html.px-app body.journey-app #map-sheet .sheet-detail .sn-card { border: 0; border-radius: 22px; background: var(--px-card); box-shadow: var(--px-shadow), inset 0 0 0 1px var(--px-line); }
html.px-app body.journey-app #map-sheet .sn-sect-h { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin: 0 0 10px; padding: 0 4px; }
html.px-app body.journey-app #map-sheet .sn-sect-h h2 { margin: 0; font: 780 18px/1.25 var(--px-font); letter-spacing: -.03em; color: var(--px-ink); }
html.px-app body.journey-app #map-sheet .sn-link {
  display: inline-flex; align-items: center; gap: 2px; min-height: 44px; padding: 0 2px; border: 0; background: none;
  color: var(--px-teal); font: 700 14px/1 var(--px-font); text-decoration: none; cursor: pointer;
}
html.px-app body.journey-app #map-sheet .sn-link::after { content: "›"; font-size: 18px; margin-top: -2px; }
/* attributed memos */
html.px-app body.journey-app #map-sheet .sn-sect:has(> .sn-quote) { margin-top: 14px !important; }
html.px-app body.journey-app #map-sheet .sn-quote { gap: 12px; padding: 14px 16px; border-radius: 20px; background: var(--px-card); box-shadow: var(--px-shadow), inset 0 0 0 1px var(--px-line); }
html.px-app body.journey-app #map-sheet .sn-quote .av { flex: 0 0 34px; width: 34px; height: 34px; border-radius: 17px; background: var(--px-teal-soft); color: var(--px-teal); font: 800 14px/1 var(--px-font); }
html.px-app body.journey-app #map-sheet .sn-quote .who { margin: 1px 0 3px; font: 700 12px/1.2 var(--px-font); color: var(--px-ink3); }
html.px-app body.journey-app #map-sheet .sn-quote .txt { font: 550 15px/1.5 var(--px-font); color: var(--px-ink); }
/* info rows: distance, hours, phone, Kakao page */
html.px-app body.journey-app #map-sheet .sn-info { padding: 2px 16px !important; }
html.px-app body.journey-app #map-sheet .sn-info .ir { position: relative; align-items: center; gap: 12px; padding: 13px 0 13px 34px; border-top: 1px solid var(--px-line); font: 650 15px/1.35 var(--px-font); }
html.px-app body.journey-app #map-sheet .sn-info .ir:first-child { border-top: 0; }
html.px-app body.journey-app #map-sheet .sn-info .ir::before {
  content: ""; position: absolute; left: 2px; top: 15px; width: 19px; height: 19px; background: var(--px-teal);
  -webkit-mask: var(--pxp-i-car) center / contain no-repeat; mask: var(--pxp-i-car) center / contain no-repeat;
}
html.px-app body.journey-app #map-sheet .sn-info .ir:nth-child(2)::before { -webkit-mask-image: var(--pxp-i-clock); mask-image: var(--pxp-i-clock); }
html.px-app body.journey-app #map-sheet .sn-info .ir:nth-child(3)::before { -webkit-mask-image: var(--pxp-i-phone); mask-image: var(--pxp-i-phone); }
html.px-app body.journey-app #map-sheet .sn-info .ir:nth-child(4)::before { -webkit-mask-image: var(--pxp-i-pin); mask-image: var(--pxp-i-pin); }
html.px-app body.journey-app #map-sheet .sn-info .ir .k { color: var(--px-ink); }
html.px-app body.journey-app #map-sheet .sn-info .ir .v { margin-top: 3px; font: 500 13px/1.45 var(--px-font); color: var(--px-ink3); }
html.px-app body.journey-app #map-sheet .sn-info .ir > .v { margin: 0; font: 650 14px/1.4 var(--px-font); color: var(--px-ink); text-align: right; max-width: 55%; }
html.px-app body.journey-app #map-sheet .sn-info .ir .rl {
  flex: none; display: inline-flex; align-items: center; justify-content: center; height: 44px; min-width: 56px; margin: -4px 0; padding: 0 12px;
  border: 4px solid transparent; border-radius: 22px; background: var(--px-teal-soft); background-clip: padding-box;
  color: var(--px-teal); font: 700 13.5px/1 var(--px-font); text-decoration: none;
}
/* duplicate CTA pair is dropped when the action chips already carry 일정에 담기; the placement line stays */
html.px-app body.journey-app #map-sheet:has(#sheet-acts .jp-place-plan) .sn-cta { display: none; }
html.px-app body.journey-app #map-sheet .sn-cta { gap: 8px; }
html.px-app body.journey-app #map-sheet .sn-cta > :is(a, button) { min-height: 48px; border: 0; border-radius: 16px; font: 700 15px/1 var(--px-font); }
html.px-app body.journey-app #map-sheet .sn-cta .sn-btn.primary { background: var(--px-teal); color: #fff; }
html.px-app body.journey-app #map-sheet .sn-cta .jp-place-plan { background: var(--px-teal-soft); color: var(--px-teal); }
html.px-app body.journey-app #map-sheet .jp-placement {
  display: flex; align-items: center; gap: 10px; margin: 0; padding: 13px 16px; border-radius: 18px; background: var(--px-teal-soft);
  font: 650 14px/1.4 var(--px-font); color: var(--px-teal);
}
html.px-app body.journey-app #map-sheet .jp-placement::before {
  content: ""; flex: none; width: 18px; height: 18px; background: currentColor;
  -webkit-mask: var(--pxp-i-calplus) center / contain no-repeat; mask: var(--pxp-i-calplus) center / contain no-repeat;
}
/* practical rows (영업·메뉴·예산·예약·운영…) as one grouped card */
html.px-app body.journey-app #map-sheet .sheet-detail > div:has(> span.k) {
  display: flex; gap: 12px; margin: 0 16px; padding: 12px 16px; background: var(--px-card);
  box-shadow: inset 1px 0 0 var(--px-line), inset -1px 0 0 var(--px-line); font: 500 14px/1.5 var(--px-font);
}
html.px-app body.journey-app #map-sheet .sheet-detail > :not(div:has(> span.k)) + div:has(> span.k) {
  margin-top: 14px; padding-top: 16px; border-radius: 22px 22px 0 0; box-shadow: inset 1px 0 0 var(--px-line), inset -1px 0 0 var(--px-line), inset 0 1px 0 var(--px-line);
}
html.px-app body.journey-app #map-sheet .sheet-detail > div:has(> span.k) + div:has(> span.k) { border-top: 1px solid var(--px-line); }
html.px-app body.journey-app #map-sheet .sheet-detail > div:has(> span.k):has(+ #sheet-compare-status) {
  padding-bottom: 16px; border-radius: 0 0 22px 22px; box-shadow: inset 1px 0 0 var(--px-line), inset -1px 0 0 var(--px-line), inset 0 -1px 0 var(--px-line), 0 12px 24px -14px rgba(18,40,34,.22);
}
html.px-app body.journey-app #map-sheet .sheet-detail > div > span.k { flex: 0 0 72px; width: 72px; font: 700 13px/1.55 var(--px-font); color: var(--px-ink3); }
html.px-app body.journey-app #map-sheet .sheet-detail > div > span.v { flex: 1; min-width: 0; font: 550 14px/1.55 var(--px-font); color: var(--px-ink); word-break: keep-all; overflow-wrap: anywhere; }
html.px-app body.journey-app #map-sheet #sheet-compare-status { margin: 10px 20px 0; font: 650 13px/1.4 var(--px-font); color: var(--px-teal); }
html.px-app body.journey-app #map-sheet #sheet-compare-status:empty { display: none; }
/* opinion card */
html.px-app body.journey-app #map-sheet .sheet-detail > .share-op {
  display: flex; flex-direction: column; gap: 10px; margin: 14px 16px 0; padding: 16px; border: 0; border-radius: 22px;
  background: var(--px-card); box-shadow: var(--px-shadow), inset 0 0 0 1px var(--px-line);
}
html.px-app body.journey-app #map-sheet .sheet-detail > .share-op::before { content: "우리 의견"; font: 780 18px/1.25 var(--px-font); letter-spacing: -.03em; color: var(--px-ink); }
/* review score card */
html.px-app body.journey-app #map-sheet .sn-sect:has(> .rv-gauge) { padding: 18px 16px 16px; border-radius: 22px; background: var(--px-card); box-shadow: var(--px-shadow), inset 0 0 0 1px var(--px-line); }
html.px-app body.journey-app #map-sheet .sn-sect:has(> .rv-gauge) > .sn-sect-h { margin-bottom: 12px; }
html.px-app body.journey-app #map-sheet .sn-sect:has(> .rv-gauge) > .sn-sect-h h2 { font-size: 20px; }
html.px-app body.journey-app #map-sheet .sn-sect-h .promo { display: inline-flex; align-items: center; height: 26px; padding: 0 10px; border: 0; border-radius: 13px; background: var(--px-red-soft); color: var(--px-red); font: 750 12px/1 var(--px-font); }
html.px-app body.journey-app #map-sheet .rv-gauge { height: 8px; margin: 0; border-radius: 4px; background: var(--px-track); overflow: hidden; }
html.px-app body.journey-app #map-sheet .rv-gauge i { display: block; height: 100%; border-radius: 4px; background: linear-gradient(90deg, #3E9C8C, var(--px-teal)); }
html.px-app body.journey-app #map-sheet .sn-sect:has(> .rv-gauge) > .sn-tiny { margin-top: 8px; font: 600 12.5px/1.4 var(--px-font); color: var(--px-ink3); }
html.px-app body.journey-app #map-sheet .rv-reason { display: grid; grid-template-columns: 58px minmax(0, 1fr) auto; align-items: center; gap: 10px; padding: 5px 0; }
html.px-app body.journey-app #map-sheet .rv-reason .rv-tag { font: 700 13px/1.2 var(--px-font); color: var(--px-ink); }
html.px-app body.journey-app #map-sheet .rv-reason .rv-bar { display: flex; height: 6px; border-radius: 3px; background: var(--px-track); overflow: hidden; }
html.px-app body.journey-app #map-sheet .rv-reason .rv-bar .s { background: var(--px-teal2); }
html.px-app body.journey-app #map-sheet .rv-reason .rv-bar .d { background: #D9584F; }
html.px-app body.journey-app #map-sheet .rv-reason .rv-n { font: 600 12px/1 var(--px-font); color: var(--px-ink3); white-space: nowrap; }
html.px-app body.journey-app #map-sheet .rv-ev {
  margin: 10px 0 0; padding: 12px 14px; border: 0; border-radius: 16px; background: #F6F4EF;
  font: 550 14px/1.55 var(--px-font); color: var(--px-ink);
}
html.px-app body.journey-app #map-sheet .rv-ev .src { margin-top: 6px; font: 600 12px/1.3 var(--px-font); color: var(--px-ink3); }
html.px-app body.journey-app #map-sheet .rv-warns { display: flex; flex-wrap: wrap; gap: 6px; margin: 12px 0 0; padding: 0; list-style: none; }
html.px-app body.journey-app #map-sheet .rv-warns li { display: inline-flex; align-items: center; min-height: 26px; padding: 4px 10px; border-radius: 13px; background: var(--px-amber-soft); color: var(--px-amber); font: 650 12.5px/1.3 var(--px-font); }
/* disclosure folds (수집 근거, 근거 n건) */
html.px-app body.journey-app #map-sheet details.sn-ev {
  margin: 10px 16px 0; padding: 0 16px; border: 0; border-radius: 18px; background: var(--px-card); box-shadow: inset 0 0 0 1px var(--px-line);
}
html.px-app body.journey-app #map-sheet .sn-sect > details.sn-ev { margin: 0; }
html.px-app body.journey-app #map-sheet details.sn-ev summary { min-height: 50px; font: 650 14px/1.3 var(--px-font); color: var(--px-ink2); }
html.px-app body.journey-app #map-sheet details.sn-ev summary > span[aria-hidden] { font-size: 0; width: 14px; height: 14px; background: var(--px-ink3);
  -webkit-mask: var(--pxp-i-down) center / contain no-repeat; mask: var(--pxp-i-down) center / contain no-repeat; transition: transform .3s var(--px-spring); }
html.px-app body.journey-app #map-sheet details.sn-ev[open] summary > span[aria-hidden] { transform: rotate(180deg); }
html.px-app body.journey-app #map-sheet details.sn-ev .sn-tiny { font: 500 12.5px/1.55 var(--px-font); color: var(--px-ink2); }
/* no-review state */
html.px-app body.journey-app #map-sheet .sn-sect > .sn-tiny:has(> .ai-spot) { display: flex; align-items: center; gap: 10px; padding: 12px 14px; border-radius: 18px; background: var(--px-card); box-shadow: inset 0 0 0 1px var(--px-line); font: 600 13.5px/1.4 var(--px-font); color: var(--px-ink2); }
html.px-app body.journey-app #map-sheet .sn-sect > .sn-tiny > .ai-spot { width: 36px; height: 36px; margin: 0; }
/* nearby strip: bleeds to the sheet edge */
html.px-app body.journey-app #map-sheet .sn-sect:has(> .sn-sect-h > .sn-link) { margin-top: 22px; }
html.px-app body.journey-app #map-sheet .sn-sect:has(> .sn-sect-h > .sn-link) > .sn-sect-h { margin-bottom: 0; }
html.px-app body.journey-app #map-sheet .sn-strip { gap: 12px; margin: 0; padding: 4px 16px 6px; scroll-padding: 0 16px; scrollbar-width: none; }
html.px-app body.journey-app #map-sheet .sn-strip::-webkit-scrollbar { display: none; }
html.px-app body.journey-app #map-sheet .sn-tile { flex: 0 0 148px; padding: 0; border: 0; background: none; text-align: left; cursor: pointer; transition: transform .45s var(--px-spring); }
html.px-app body.journey-app #map-sheet .sn-tile:active { transform: scale(.96); }
html.px-app body.journey-app #map-sheet .sn-tile .sn-ph { height: 104px; border-radius: 18px; }
html.px-app body.journey-app #map-sheet .sn-tile .n { margin-top: 8px; font: 700 14.5px/1.3 var(--px-font); letter-spacing: -.02em; color: var(--px-ink); }
html.px-app body.journey-app #map-sheet .sn-tile .d { margin-top: 2px; font: 600 12.5px/1.3 var(--px-font); color: var(--px-ink3); }

/* ======================================================================
   4. Place detail in the originating tab (.jp-context-detail): app sheet
   ====================================================================== */
html.px-app body.journey-app #map-sheet.jp-context-detail {
  display: flex; flex-direction: column; position: fixed; z-index: 120;
  top: calc(env(safe-area-inset-top) + 28px); bottom: 0; left: max(0px, calc((100vw - 620px) / 2)); right: max(0px, calc((100vw - 620px) / 2));
  width: auto; max-height: none; margin: 0; padding: 0 0 calc(env(safe-area-inset-bottom) + 96px);
  border: 0; border-radius: 28px 28px 0 0; background: var(--px-bg);
  box-shadow: 0 -10px 40px -12px rgba(8,20,17,.35), 0 0 0 100vmax rgba(10,18,16,.34);
  overflow-y: auto; overflow-x: hidden; overscroll-behavior: contain; scrollbar-width: none;
  animation: pxp-sheet-in .55s var(--px-spring) both;
}
html.px-app body.journey-app #map-sheet.jp-context-detail::-webkit-scrollbar { display: none; }
@keyframes pxp-sheet-in { from { transform: translateY(46px); opacity: .4; } to { transform: none; opacity: 1; } }
@media (prefers-reduced-motion: reduce) { html.px-app body.journey-app #map-sheet.jp-context-detail { animation: none; } }
html.px-app body.journey-app #map-sheet.jp-context-detail .sheet-detail:not([hidden]) { display: contents; }
html.px-app body.journey-app #map-sheet.jp-context-detail > * { flex-shrink: 0; order: 10; }
html.px-app body.journey-app #map-sheet.jp-context-detail .sheet-detail > * { flex-shrink: 0; order: 10; }
html.px-app body.journey-app #map-sheet.jp-context-detail .grab,
html.px-app body.journey-app #map-sheet.jp-context-detail .sheet-list { display: none; }
/* sticky title bar over the photo: back button always, title + ground fade in on scroll */
html.px-app body.journey-app #map-sheet.jp-context-detail .sheet-head {
  order: 0; position: sticky; top: 0; z-index: 6; display: flex; align-items: center; gap: 10px; height: 60px; margin: 0; padding: 8px 12px;
  background: rgba(243,241,236,.9); -webkit-backdrop-filter: blur(20px) saturate(170%); backdrop-filter: blur(20px) saturate(170%);
  box-shadow: 0 1px 0 var(--px-line);
}
html.px-app body.journey-app #map-sheet.jp-context-detail .sheet-close { order: -1; width: 44px; height: 44px; color: var(--px-ink); }
html.px-app body.journey-app #map-sheet.jp-context-detail .sheet-close::before { inset: 0; border-radius: 22px; background: rgba(255,255,255,.86); box-shadow: 0 4px 14px -4px rgba(0,0,0,.28); }
html.px-app body.journey-app #map-sheet.jp-context-detail .sheet-close::after { width: 22px; height: 22px; -webkit-mask-image: var(--pxp-i-left); mask-image: var(--pxp-i-left); }
html.px-app body.journey-app #map-sheet.jp-context-detail .sheet-title-group { flex: 1; min-width: 0; }
html.px-app body.journey-app #map-sheet.jp-context-detail h3#sheet-title { font-size: 17px; font-weight: 750; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
@supports (animation-timeline: scroll()) {
  html.px-app body.journey-app #map-sheet.jp-context-detail .sheet-head {
    margin-bottom: -60px; background: rgba(243,241,236,0); box-shadow: none; -webkit-backdrop-filter: none; backdrop-filter: none;
    animation: pxp-head-solid linear both; animation-timeline: scroll(nearest block); animation-range: 170px 230px;
  }
  html.px-app body.journey-app #map-sheet.jp-context-detail h3#sheet-title {
    animation: pxp-title-in linear both; animation-timeline: scroll(nearest block); animation-range: 250px 300px;
  }
}
@keyframes pxp-head-solid {
  from { background: rgba(243,241,236,0); box-shadow: 0 1px 0 rgba(18,24,21,0); }
  to { background: rgba(243,241,236,.92); box-shadow: 0 1px 0 var(--px-line); -webkit-backdrop-filter: blur(20px) saturate(170%); backdrop-filter: blur(20px) saturate(170%); }
}
@keyframes pxp-title-in { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
/* reading order: photo → name → status line → action chips → groups */
html.px-app body.journey-app #map-sheet.jp-context-detail .sn-hero { order: 1; height: min(300px, 42vh); border-radius: 0; }
html.px-app body.journey-app #map-sheet.jp-context-detail .sn-hero::after {
  content: ""; position: absolute; inset: 0 0 auto; height: 96px; pointer-events: none;
  background: linear-gradient(180deg, rgba(0,0,0,.28), rgba(0,0,0,0));
}
html.px-app body.journey-app #map-sheet.jp-context-detail .sn-pad { order: 2; }
html.px-app body.journey-app #map-sheet.jp-context-detail .fact { order: 3; margin: 6px 0 0; padding: 0 20px; }
html.px-app body.journey-app #map-sheet.jp-context-detail .acts { order: 4; padding-top: 14px; }
html.px-app body.journey-app #map-sheet .sheet-detail > .sn-sect:has(> .sn-quote) { order: 5; }
html.px-app body.journey-app #map-sheet .sheet-detail > .sn-sect:has(> .sn-info) { order: 6; }
html.px-app body.journey-app #map-sheet .sheet-detail > div:has(> span.k) { order: 7; }
html.px-app body.journey-app #map-sheet .sheet-detail > .sn-sect:has(> .sn-cta) { order: 8; }
html.px-app body.journey-app #map-sheet .sheet-detail > #sheet-compare-status { order: 8; }
html.px-app body.journey-app #map-sheet .sheet-detail > .share-op { order: 9; }
html.px-app body.journey-app #map-sheet .sheet-detail > .sn-sect:has(> .rv-gauge),
html.px-app body.journey-app #map-sheet .sheet-detail > .sn-sect:has(> .sn-tiny > .ai-spot) { order: 11; }
html.px-app body.journey-app #map-sheet .sheet-detail > .sn-hero { order: 1; }
html.px-app body.journey-app #map-sheet .sheet-detail > .sn-pad { order: 2; }
html.px-app body.journey-app #map-sheet .sheet-detail > details.sn-ev { order: 12; }
html.px-app body.journey-app #map-sheet .sheet-detail > .sn-sect:has(> details.sn-ev) { order: 13; }
html.px-app body.journey-app #map-sheet .sheet-detail > .sn-sect:has(> .sn-sect-h > .sn-link) { order: 14; }
html.px-app body.journey-app #map-sheet .sheet-detail > .sn-strip { order: 15; }
html.px-app body.journey-app #map-sheet.jp-context-detail .sheet-detail > .sn-sect:has(> .sn-cta) { margin-top: 14px; }
@media (min-width: 761px) {
  html.px-app body.journey-app #map-sheet.jp-context-detail { top: 24px; bottom: 24px; border-radius: 28px; padding-bottom: 32px; }
  html.px-app body.journey-app #map-sheet.jp-context-detail .sn-hero { border-radius: 0; }
}

/* ======================================================================
   5. Map screen: glass chrome, floating chips, rounded bottom sheet
   ====================================================================== */
html.px-app body.journey-app #wb-col-map { background: var(--px-bg); font-family: var(--px-font); }
html.px-app body.journey-app #wb-col-map > .journey-screen-head {
  display: block; margin: 0; padding: 10px 0 10px; border: 0; background: var(--px-bg);
}
html.px-app body.journey-app #wb-col-map > .journey-screen-head > h1 {
  position: absolute !important; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
/* day switcher: a segmented control */
html.px-app body.journey-app #wb-col-map .map-day-chips {
  display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: 2px; margin: 0 16px; padding: 3px;
  border-radius: 16px; background: #E9E6DE; overflow: visible;
}
html.px-app body.journey-app #wb-col-map .day-chip {
  min-width: 0; height: 44px; min-height: 44px; padding: 0 4px; border: 0; border-radius: 13px; background: none; box-shadow: none;
  color: var(--px-ink2); font: 700 14px/1 var(--px-font); letter-spacing: -.01em; white-space: nowrap; cursor: pointer;
  transition: background-color .3s var(--px-spring), color .2s ease, transform .4s var(--px-spring);
}
html.px-app body.journey-app #wb-col-map .day-chip:active { transform: scale(.94); }
html.px-app body.journey-app #wb-col-map .day-chip[aria-current="true"] { background: #fff; color: var(--px-teal); box-shadow: 0 1px 2px rgba(0,0,0,.08), 0 4px 12px -4px rgba(0,0,0,.2); }
/* route summary card */
html.px-app body.journey-app #wb-col-map .day-route-panel {
  margin: 0 16px 10px; padding: 4px 16px; border: 0; border-radius: 20px; background: var(--px-card); box-shadow: var(--px-shadow), inset 0 0 0 1px var(--px-line);
  font-family: var(--px-font);
}
html.px-app body.journey-app #wb-col-map .day-route-panel > summary { position: relative; display: flex; flex-direction: column; justify-content: center; min-height: 56px; padding: 8px 30px 8px 0; list-style: none; cursor: pointer; }
html.px-app body.journey-app #wb-col-map .day-route-panel > summary::-webkit-details-marker { display: none; }
html.px-app body.journey-app #wb-col-map .day-route-panel > summary::after {
  content: ""; position: absolute; right: 2px; top: 50%; width: 16px; height: 16px; margin-top: -8px; background: var(--px-ink3);
  -webkit-mask: var(--pxp-i-down) center / contain no-repeat; mask: var(--pxp-i-down) center / contain no-repeat; transition: transform .3s var(--px-spring);
}
html.px-app body.journey-app #wb-col-map .day-route-panel[open] > summary::after { transform: rotate(180deg); }
html.px-app body.journey-app #wb-col-map .day-route-panel summary strong { font: 750 15px/1.3 var(--px-font); color: var(--px-ink); }
html.px-app body.journey-app #wb-col-map .day-route-panel summary span { font: 550 12.5px/1.45 var(--px-font); color: var(--px-ink3); }
/* map frame: markers stack inside the map so chips, controls and the sheet float above them */
html.px-app body.journey-app #map-wrapper { border-radius: 0; }
html.px-app body.journey-app #map-wrapper > #map-canvas { z-index: 0; }
/* category chips float over the map as glass pills and bleed to the screen edge */
html.px-app body.journey-app #map-filter-bar {
  top: 10px; left: 0; right: 0; z-index: 45; display: flex; gap: 2px; padding: 0 10px; margin: 0;
  overflow-x: auto; scrollbar-width: none; scroll-padding: 0 10px; -webkit-mask-image: none; mask-image: none;
}
html.px-app body.journey-app #map-filter-bar::-webkit-scrollbar { display: none; }
html.px-app body.journey-app #map-filter-bar .filter-pill {
  flex: none; display: inline-flex; align-items: center; height: 46px; min-height: 46px; padding: 0 15px; border: 4px solid transparent; border-radius: 23px;
  background: rgba(255,255,255,.95); background-clip: padding-box; -webkit-backdrop-filter: none; backdrop-filter: none;
  box-shadow: none; filter: drop-shadow(0 2px 5px rgba(18,40,34,.2)); color: var(--px-ink); font: 700 14px/1 var(--px-font); letter-spacing: -.01em; white-space: nowrap;
  transition: background-color .25s ease, color .2s ease, transform .4s var(--px-spring);
}
html.px-app body.journey-app #map-filter-bar .filter-pill:hover { border-color: transparent; background-color: #fff; }
html.px-app body.journey-app #map-filter-bar .filter-pill:active { transform: scale(.95); }
html.px-app body.journey-app #map-filter-bar .filter-pill.active { background-color: var(--px-teal); color: #fff; }
html.px-app body.journey-app #map-filter-bar .filter-pill[data-filter="mona"] { color: var(--px-mona); }
html.px-app body.journey-app #map-filter-bar .filter-pill[data-filter="feno"] { color: var(--px-feno); }
html.px-app body.journey-app #map-filter-bar .filter-pill[data-filter="mona"].active { background-color: var(--px-mona); color: #fff; }
html.px-app body.journey-app #map-filter-bar .filter-pill[data-filter="feno"].active { background-color: var(--px-feno); color: #fff; }
html.px-app body.journey-app #map-filter-bar .filter-pill[data-filter="nanchuk"].active { background-color: #9A6A2A; color: #fff; }
/* zoom + route chip + focus notice: glass */
html.px-app body.journey-app #map-wrapper .maplibregl-ctrl-top-right { top: 62px !important; right: 2px; }
html.px-app body.journey-app #map-wrapper .maplibregl-ctrl-group {
  overflow: hidden; border: 1px solid rgba(255,255,255,.7); border-radius: 16px; background: rgba(255,255,255,.84);
  -webkit-backdrop-filter: blur(18px) saturate(180%); backdrop-filter: blur(18px) saturate(180%); box-shadow: 0 6px 18px -8px rgba(18,40,34,.4);
}
html.px-app body.journey-app #map-wrapper .maplibregl-ctrl-group button { background-color: transparent; }
html.px-app body.journey-app #map-wrapper .maplibregl-ctrl-group button + button { border-top: 1px solid var(--px-line); }
html.px-app body.journey-app #map-wrapper .maplibregl-ctrl-attrib { border-radius: 10px; background: rgba(255,255,255,.7); font: 500 10px/1.4 var(--px-font); }
html.px-app body.journey-app #map-wrapper #route-chip {
  position: absolute; z-index: 44; top: 62px; left: 12px; max-width: calc(100% - 84px); margin: 0; padding: 9px 14px; border: 1px solid rgba(255,255,255,.7); border-radius: 18px;
  background: rgba(255,255,255,.86); -webkit-backdrop-filter: blur(18px); backdrop-filter: blur(18px); box-shadow: 0 6px 18px -8px rgba(18,40,34,.4);
  font: 650 13px/1.3 var(--px-font); color: var(--px-ink);
}
html.px-app body.journey-app #map-wrapper #route-chip[hidden] { display: none; }
html.px-app body.journey-app #map-focus-notice {
  border: 1px solid rgba(255,255,255,.7); background: rgba(255,255,255,.88); -webkit-backdrop-filter: blur(18px); backdrop-filter: blur(18px);
  box-shadow: 0 8px 22px -8px rgba(18,40,34,.4); font-family: var(--px-font);
}
html.px-app body.journey-app #map-focus-notice button { border: 0; background: var(--px-teal); color: #fff; font-family: var(--px-font); }

/* the place sheet on the map: floating rounded card with a grabber */
html.px-app body.journey-app .map-view-wrapper #map-sheet:not(.jp-context-detail) {
  left: 10px; right: 10px; padding: 0 0 16px; border: 0; border-radius: 28px; background: var(--px-card);
  box-shadow: 0 -2px 10px -4px rgba(0,0,0,.08), 0 22px 50px -18px rgba(10,24,20,.5); overflow-y: auto; overflow-x: hidden;
  scrollbar-width: none; animation: pxp-sheet-in .5s var(--px-spring) both;
}
@media (prefers-reduced-motion: reduce) { html.px-app body.journey-app .map-view-wrapper #map-sheet:not(.jp-context-detail) { animation: none; } }
html.px-app body.journey-app .map-view-wrapper #map-sheet:not(.jp-context-detail)::-webkit-scrollbar { display: none; }
@media (min-width: 761px) {
  html.px-app body.journey-app .map-view-wrapper #map-sheet:not(.jp-context-detail) { left: auto; right: 12px; width: min(420px, calc(100% - 24px)); bottom: 12px; }
}
html.px-app body.journey-app .map-view-wrapper #map-sheet:not(.jp-context-detail) > * { flex-shrink: 0; }
/* grabber and title stay pinned while the expanded sheet scrolls */
html.px-app body.journey-app .map-view-wrapper #map-sheet .grab {
  position: sticky; z-index: 5; top: 0; order: 0; flex: none; align-self: center; width: calc(100% - 128px); height: 44px; min-height: 44px; margin: 0 0 -44px; padding: 0;
  border: 0; background: none; color: transparent; font-size: 0; cursor: grab;
}
html.px-app body.journey-app .map-view-wrapper #map-sheet .grab::before {
  content: ""; display: block; position: absolute; top: 8px; left: 50%; width: 38px; height: 5px; margin-left: -19px; border-radius: 3px; background: #D5D0C6;
}
html.px-app body.journey-app .map-view-wrapper #map-sheet .grab:focus-visible { outline: 2px solid var(--px-teal); outline-offset: -4px; border-radius: 14px; }
html.px-app body.journey-app .map-view-wrapper #map-sheet:not(.jp-context-detail) .sheet-head { position: sticky; z-index: 4; top: 0; order: 1; align-items: center; gap: 8px; padding: 20px 10px 2px 20px; background: var(--px-card); }
html.px-app body.journey-app .map-view-wrapper #map-sheet.half:not(.jp-context-detail) {
  max-height: calc(100dvh - var(--journey-nav-h, 76px) - env(safe-area-inset-bottom) - env(safe-area-inset-top) - 96px);
}
html.px-app body.journey-app .map-view-wrapper #map-sheet:not(.jp-context-detail) .sheet-title-group { flex: 1; }
html.px-app body.journey-app .map-view-wrapper #map-sheet:not(.jp-context-detail) .fact { order: 2; margin-top: 4px; padding: 0 20px; }
html.px-app body.journey-app .map-view-wrapper #map-sheet:not(.jp-context-detail) .acts { order: 3; padding-bottom: 4px; }
html.px-app body.journey-app .map-view-wrapper #map-sheet:not(.jp-context-detail) .sheet-detail { order: 4; }
html.px-app body.journey-app .map-view-wrapper #map-sheet:not(.jp-context-detail) .sheet-list { order: 5; }
html.px-app body.journey-app .map-view-wrapper #map-sheet.half:not(.jp-context-detail) .sheet-detail:not([hidden]) { display: flex; flex-direction: column; gap: 0; margin-top: 16px; padding: 16px 0 0; border-top: 1px solid var(--px-line); background: var(--px-bg); }
html.px-app body.journey-app .map-view-wrapper #map-sheet.half:not(.jp-context-detail) { padding-bottom: 0; background: var(--px-card); }
html.px-app body.journey-app .map-view-wrapper #map-sheet.half:not(.jp-context-detail) .sheet-detail:not([hidden]) { padding-bottom: 20px; }
html.px-app body.journey-app .map-view-wrapper #map-sheet:not(.jp-context-detail) .sn-hero { height: 190px; margin: 0 16px; border-radius: 22px; }
html.px-app body.journey-app .map-view-wrapper #map-sheet:not(.jp-context-detail) .sn-place-name { display: none; }
html.px-app body.journey-app .map-view-wrapper #map-sheet:not(.jp-context-detail) .sn-pad { padding-top: 12px; }
/* cluster chooser + day list */
html.px-app body.journey-app .map-view-wrapper #map-sheet .sheet-list:not([hidden]) { margin: 12px 16px 0; padding: 0; border: 0; }
html.px-app body.journey-app #map-sheet .sheet-list .members-h { margin: 4px 4px 8px; font: 700 12.5px/1.2 var(--px-font); color: var(--px-ink3); }
html.px-app body.journey-app #map-sheet .sheet-list .member-btn {
  display: flex; align-items: center; gap: 10px; width: 100%; min-height: 60px; margin: 0 0 8px; padding: 12px 14px; border: 0; border-radius: 18px;
  background: #F6F4EF; text-align: left; font-family: var(--px-font); cursor: pointer; transition: transform .4s var(--px-spring);
}
html.px-app body.journey-app #map-sheet .sheet-list .member-btn:active { transform: scale(.98); }
html.px-app body.journey-app #map-sheet .sheet-list .member-btn .mb-t { display: block; font: 750 15px/1.3 var(--px-font); color: var(--px-ink); }
html.px-app body.journey-app #map-sheet .sheet-list .member-btn .mb-d { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; margin-top: 2px; font: 500 13px/1.45 var(--px-font); color: var(--px-ink2); }
html.px-app body.journey-app #map-sheet .sheet-list .member-btn .mb-k { flex: none; display: inline-flex; align-items: center; height: 24px; padding: 0 9px; border-radius: 12px; background: #EAE7E0; color: var(--px-ink2); font: 750 12px/1 var(--px-font); }
html.px-app body.journey-app #map-sheet .sheet-list .member-btn .mb-k.confirmed { background: var(--px-teal); color: #fff; }
html.px-app body.journey-app #map-sheet .sheet-list .member-btn .mb-k.unsched { background: var(--px-teal-soft); color: var(--px-teal); }
html.px-app body.journey-app #map-sheet .sheet-list .member-btn .mb-k.mona { background: var(--px-mona-soft); color: var(--px-mona); }
html.px-app body.journey-app #map-sheet .sheet-list .sl-row { gap: 12px; min-height: 52px; padding: 12px 4px; border-bottom: 1px solid var(--px-line); font-family: var(--px-font); }
html.px-app body.journey-app #map-sheet .sheet-list .sl-row .sl-n { display: inline-grid; place-items: center; width: 24px; height: 24px; border-radius: 12px; background: var(--px-teal); color: #fff; font: 800 12px/1 var(--px-font); }
html.px-app body.journey-app #map-sheet .sheet-list .sl-row.cand .sl-n { background: #EAE7E0; color: var(--px-ink3); }
html.px-app body.journey-app #map-sheet .sheet-list .sl-row .sl-name { font: 700 15px/1.3 var(--px-font); color: var(--px-ink); }
html.px-app body.journey-app #map-sheet .sheet-list .sl-row .sl-time { font: 700 13px/1 var(--px-font); color: var(--px-ink3); }

/* ======================================================================
   6. Compare panel: bottom sheet with a spec table
   ====================================================================== */
html.px-app body.journey-app #disc-compare-panel {
  z-index: 130; align-items: flex-end; padding: 0; background: rgba(10,18,16,.38);
  -webkit-backdrop-filter: blur(2px); backdrop-filter: blur(2px);
}
html.px-app body.journey-app #disc-compare-panel[hidden] { display: none; }
html.px-app body.journey-app #disc-compare-panel .disc-compare-dialog {
  width: min(680px, 100%); max-height: calc(100dvh - env(safe-area-inset-top) - 28px); margin: 0 auto; padding: 0 16px calc(env(safe-area-inset-bottom) + 20px);
  border: 0; border-radius: 28px 28px 0 0; background: var(--px-bg); box-shadow: 0 -12px 40px -12px rgba(8,20,17,.4);
  font-family: var(--px-font); color: var(--px-ink); animation: pxp-sheet-in .5s var(--px-spring) both;
}
@media (prefers-reduced-motion: reduce) { html.px-app body.journey-app #disc-compare-panel .disc-compare-dialog { animation: none; } }
html.px-app body.journey-app #disc-compare-panel .disc-compare-head {
  position: sticky; top: 0; z-index: 3; display: flex; align-items: center; justify-content: space-between; gap: 10px;
  margin: 0 -16px 12px; padding: 20px 12px 10px 20px; background: rgba(243,241,236,.94);
  -webkit-backdrop-filter: blur(18px); backdrop-filter: blur(18px);
}
html.px-app body.journey-app #disc-compare-panel .disc-compare-head::before {
  content: ""; position: absolute; top: 8px; left: 50%; width: 38px; height: 5px; margin-left: -19px; border-radius: 3px; background: #D5D0C6;
}
html.px-app body.journey-app #disc-compare-panel .disc-compare-head h3 { margin: 0; font: 800 21px/1.25 var(--px-font); letter-spacing: -.035em; color: var(--px-ink); }
html.px-app body.journey-app #disc-compare-panel .disc-compare-close {
  position: sticky; top: 0; flex: none; width: 44px; height: 44px; min-width: 44px; min-height: 44px; padding: 0; border: 0; border-radius: 22px;
  background: #E9E6DE; color: var(--px-ink2); font-size: 0; cursor: pointer;
}
html.px-app body.journey-app #disc-compare-panel .disc-compare-close::after {
  content: ""; display: block; width: 17px; height: 17px; margin: auto; background: currentColor;
  -webkit-mask: var(--pxp-i-x) center / contain no-repeat; mask: var(--pxp-i-x) center / contain no-repeat;
}
html.px-app body.journey-app #disc-compare-panel .disc-compare-dialog { overflow-x: hidden; }
html.px-app body.journey-app #disc-compare-panel .disc-compare-grid {
  min-width: 0; gap: 0; border: 0; border-radius: 22px; background: var(--px-card); box-shadow: var(--px-shadow), inset 0 0 0 1px var(--px-line); overflow: hidden;
}
@media (max-width: 760px) {
  html.px-app body.journey-app #disc-compare-panel #disc-compare-grid[data-count="3"] {
    min-width: 0; overflow-x: auto; overscroll-behavior-x: contain; scrollbar-width: none; grid-template-columns: repeat(3, minmax(168px, 1fr));
  }
  html.px-app body.journey-app #disc-compare-panel #disc-compare-grid::-webkit-scrollbar { display: none; }
}
html.px-app body.journey-app #disc-compare-panel .disc-compare-grid > div { padding: 12px 14px; border: 0; font: 550 14px/1.5 var(--px-font); color: var(--px-ink); word-break: keep-all; overflow-wrap: anywhere; }
html.px-app body.journey-app #disc-compare-panel .disc-compare-grid > div + div:not(.disc-compare-label) { box-shadow: inset 1px 0 0 var(--px-line); }
html.px-app body.journey-app #disc-compare-panel .disc-compare-label + div { box-shadow: none !important; }
html.px-app body.journey-app #disc-compare-panel .disc-compare-label {
  padding: 16px 14px 2px !important; border-top: 1px solid var(--px-line) !important; background: none;
  font: 750 12px/1.2 var(--px-font) !important; color: var(--px-ink3) !important; letter-spacing: .02em;
}
@media (max-width: 760px) { html.px-app body.journey-app #disc-compare-panel .disc-compare-label:first-child { display: none; } }
html.px-app body.journey-app #disc-compare-panel .disc-compare-value small { margin-top: 4px; font: 500 12.5px/1.5 var(--px-font); color: var(--px-ink3); }
html.px-app body.journey-app #disc-compare-panel .disc-compare-value.compare-identity { padding-top: 16px; padding-bottom: 14px; background: linear-gradient(180deg, #FBFAF7, #fff); }
html.px-app body.journey-app #disc-compare-panel .disc-compare-value.compare-identity strong { display: block; font: 800 16.5px/1.3 var(--px-font); letter-spacing: -.025em; color: var(--px-ink); }
html.px-app body.journey-app #disc-compare-panel .disc-compare-value .compare-remove {
  display: inline-flex; align-items: center; justify-content: center; height: 44px; min-height: 44px; margin: 6px 0 -4px; padding: 0 12px;
  border: 4px solid transparent; border-radius: 22px; background: #F0EEE8; background-clip: padding-box; color: var(--px-ink2); font: 700 13px/1 var(--px-font); cursor: pointer;
}
html.px-app body.journey-app #disc-compare-panel .disc-compare-foot { margin-top: 12px; padding: 0 4px; font: 500 12.5px/1.5 var(--px-font); color: var(--px-ink3); }
html.px-app body.journey-app #disc-compare-panel .disc-compare-add {
  display: flex; align-items: center; justify-content: center; gap: 8px; width: 100%; min-height: 54px; margin-top: 14px; border: 0; border-radius: 18px;
  background: var(--px-teal); color: #fff; font: 750 16px/1.2 var(--px-font); box-shadow: 0 14px 28px -14px rgba(15,74,69,.8); cursor: pointer;
}
html.px-app body.journey-app #disc-compare-panel .disc-compare-add[hidden] { display: none; }
html.px-app body.journey-app #disc-compare-panel .disc-compare-add::before {
  content: ""; width: 19px; height: 19px; background: currentColor;
  -webkit-mask: var(--pxp-i-calplus) center / contain no-repeat; mask: var(--pxp-i-calplus) center / contain no-repeat;
}

/* Map clusters (lead, 2026-09-25): a cluster is a count bubble like Kakao/Google; only single
   places carry a name pill. Long "첫이름 외 N곳" pills collided at the default zoom. */
html.px-app .pin:has(.pin-count) { padding: 0 !important; min-width: 0 !important; width: auto; height: auto; background: transparent !important; border: 0 !important; box-shadow: none !important; }
html.px-app .pin:has(.pin-count) .pin-label, html.px-app .pin:has(.pin-count) .pin-marker { display: none !important; }
html.px-app .pin:has(.pin-count) .pin-count {
  display: grid !important; place-items: center; min-width: 40px; height: 40px; padding: 0 10px; margin: 0 !important; border-radius: 20px;
  font: 800 15px/1 var(--px-font); color: #fff; background: var(--px-teal);
  border: 3px solid #fff; box-shadow: 0 6px 16px -4px rgba(15,74,69,.45);
}
html.px-app .pin.candidate:has(.pin-count) .pin-count { background: #fff; color: var(--px-teal); border-color: var(--px-teal); }
html.px-app .pin.mona:has(.pin-count) .pin-count { box-shadow: 0 0 0 3px var(--px-mona), 0 6px 16px -4px rgba(224,113,47,.45); }
html.px-app .pin.feno:has(.pin-count) .pin-count { box-shadow: 0 0 0 3px var(--px-feno), 0 6px 16px -4px rgba(47,107,216,.45); }

/* Design v2 restyle layer: stay (final program). Scoped to html.px-app. */
/* The Siena screen reads like a listing: one photographic header card, the 3D walk-through
   right under it, then grouped white cards. Every control and fact of the legacy screen stays. */

html.px-app body.journey-app[data-destination="stay"] :is(.app-container, .workbench-layout) { background: var(--px-bg) !important; }
html.px-app body.journey-app #stay-view {
  gap: 14px; padding: 12px 16px calc(116px + env(safe-area-inset-bottom)); background: var(--px-bg);
  font-family: var(--px-font); color: var(--px-ink); word-break: keep-all; overflow-wrap: anywhere;
  -webkit-font-smoothing: antialiased; font-feature-settings: "tnum" 1;
}
html.px-app body.journey-app #stay-view *, html.px-app body.journey-app #stay-view *::before, html.px-app body.journey-app #stay-view *::after { box-sizing: border-box; }
html.px-app body.journey-app #stay-view > * { margin: 0; min-width: 0; }
html.px-app body.journey-app #stay-view :is(h2, h3, h4, p) { font-family: var(--px-font); }

/* ---------- order: header card, 3D walk-through, jump links, then the working sections ---------- */
html.px-app body.journey-app #stay-view > .journey-stay-hero { order: 1; }
html.px-app body.journey-app #stay-view > .sv-head { order: 2; }
html.px-app body.journey-app #stay-view > .snt-entry { order: 3; }
html.px-app body.journey-app #stay-view > .stay-purpose-nav { order: 4; }
html.px-app body.journey-app #stay-view > .journey-stay-actions { order: 5; }

/* ---------- photographic header card (photo on top, booking facts below, one card) ---------- */
html.px-app body.journey-app #stay-view > .journey-stay-hero { display: block; padding: 0; border: 0; background: none; }
html.px-app body.journey-app #stay-view > .journey-stay-hero > .journey-screen-head { height: 0; overflow: hidden; padding: 0; margin: 0; }
html.px-app body.journey-app #stay-view > .journey-stay-hero .journey-photo {
  position: relative; display: block !important; margin: 0; overflow: hidden; border-radius: 24px 24px 0 0;
  background: #DCD8CF; box-shadow: none; isolation: isolate;
}
html.px-app body.journey-app #stay-view > .journey-stay-hero .journey-photo img { display: block; width: 100%; height: clamp(212px, 60vw, 300px); object-fit: cover; }
html.px-app body.journey-app #stay-view > .journey-stay-hero .journey-photo::after {
  content: ''; position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(180deg, rgba(6,18,16,.26) 0%, rgba(6,18,16,0) 30%, rgba(6,18,16,0) 70%, rgba(6,18,16,.18) 100%);
}
html.px-app body.journey-app #stay-view > .journey-stay-hero .journey-photo figcaption {
  position: absolute; z-index: 1; left: 12px; top: 12px; right: auto; bottom: auto; max-width: calc(100% - 24px);
  padding: 6px 10px; border-radius: 12px; border: 1px solid rgba(255,255,255,.3);
  background: rgba(12,22,20,.34); -webkit-backdrop-filter: blur(14px) saturate(160%); backdrop-filter: blur(14px) saturate(160%);
  color: #fff; font: 600 11.5px/1.3 var(--px-font); letter-spacing: -.005em;
}
html.px-app body.journey-app #stay-view > .sv-head {
  margin-top: -14px; padding: 18px 18px 18px; border: 1px solid var(--px-line); border-top: 0; border-radius: 0 0 24px 24px;
  background: var(--px-card); box-shadow: var(--px-shadow);
}
html.px-app body.journey-app #stay-view .sv-kicker { font: 700 12.5px/1.3 var(--px-font); color: var(--px-teal2); letter-spacing: 0; }
html.px-app body.journey-app #stay-view .sv-name { margin: 4px 0 0; font: 800 27px/1.15 var(--px-font); letter-spacing: -.04em; color: var(--px-ink); }
html.px-app body.journey-app #stay-view .sv-sub { margin: 8px 0 0; font: 500 13.5px/1.55 var(--px-font); color: var(--px-ink2); }
html.px-app body.journey-app #stay-view .grade {
  display: inline-flex; align-items: center; height: 18px; margin-left: 4px; padding: 0 5px; border-radius: 6px;
  font: 750 11px/1 var(--px-font); vertical-align: 1px;
}
html.px-app body.journey-app #stay-view .sv-bookingrow { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 14px; }
html.px-app body.journey-app #stay-view .sv-chip {
  display: inline-flex; align-items: center; height: 28px; padding: 0 11px; border: 0; border-radius: 14px;
  background: #F1EFE9; color: var(--px-ink2); font: 650 12.5px/1 var(--px-font); white-space: nowrap;
}
html.px-app body.journey-app #stay-view .sv-chip.paid { background: var(--px-ok-soft); color: var(--px-ok); font-weight: 800; }
html.px-app body.journey-app #stay-view .journey-stay-dates {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0; margin-top: 16px;
  border: 1px solid var(--px-line); border-radius: 18px; background: #FAF9F6; overflow: hidden;
}
html.px-app body.journey-app #stay-view .journey-stay-dates > div { padding: 12px 14px; border-radius: 0; background: none; }
html.px-app body.journey-app #stay-view .journey-stay-dates > div + div { border-left: 1px solid var(--px-line); }
html.px-app body.journey-app #stay-view .journey-stay-dates span { display: block; font: 700 12px/1.2 var(--px-font); color: var(--px-ink3); }
html.px-app body.journey-app #stay-view .journey-stay-dates strong { display: block; margin: 5px 0 3px; font: 800 19px/1.1 var(--px-font); letter-spacing: -.03em; color: var(--px-ink); }
html.px-app body.journey-app #stay-view .journey-stay-dates small { display: block; font: 600 12.5px/1.2 var(--px-font); color: var(--px-ink2); }

/* ---------- 3D walk-through: the feature entry of this screen ---------- */
html.px-app body.journey-app #stay-view > .snt-entry { display: block; padding: 0; }
html.px-app body.journey-app #stay-view #btn-siena-tour {
  position: relative; display: flex; align-items: center; gap: 12px; width: 100%; min-height: 68px; margin: 0;
  padding: 12px 18px 12px 12px; border: 0; border-radius: 22px; overflow: hidden;
  background: radial-gradient(120% 140% at 100% 0%, #1F7F74 0%, var(--px-teal) 52%, #0B3834 100%);
  color: #fff; font: 750 16.5px/1.25 var(--px-font); letter-spacing: -.02em; text-align: left; cursor: pointer;
  box-shadow: 0 16px 34px -16px rgba(15,74,69,.7); transition: transform .45s var(--px-spring);
}
html.px-app body.journey-app #stay-view #btn-siena-tour::before {
  content: '3D'; flex: none; display: grid; place-items: center; width: 44px; height: 44px; border-radius: 15px;
  background: rgba(255,255,255,.16); border: 1px solid rgba(255,255,255,.28); font: 850 14px/1 var(--px-font); letter-spacing: .02em;
}
html.px-app body.journey-app #stay-view #btn-siena-tour:active { transform: scale(.97); }
html.px-app body.journey-app #stay-view #btn-siena-tour:focus-visible { outline: 3px solid var(--px-mona); outline-offset: 3px; }

/* ---------- jump links + first actions ---------- */
html.px-app body.journey-app #stay-view > .stay-purpose-nav {
  display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0; padding: 4px; border: 1px solid var(--px-line);
  border-radius: 18px; background: var(--px-card); box-shadow: var(--px-shadow); overflow: visible;
}
html.px-app body.journey-app #stay-view > .stay-purpose-nav a {
  display: flex; align-items: center; justify-content: center; min-width: 0; min-height: 44px; padding: 0 4px;
  border: 0; border-radius: 14px; background: none; color: var(--px-ink2); font: 700 14px/1 var(--px-font);
  text-decoration: none; text-align: center; transition: background-color .2s, color .2s;
}
html.px-app body.journey-app #stay-view > .stay-purpose-nav a:first-child { border: 0; color: var(--px-ink2); }
html.px-app body.journey-app #stay-view > .stay-purpose-nav a + a { position: relative; }
html.px-app body.journey-app #stay-view > .stay-purpose-nav a + a::before { content: ''; position: absolute; left: 0; top: 14px; bottom: 14px; width: 1px; background: var(--px-line); }
html.px-app body.journey-app #stay-view > .stay-purpose-nav a:active { background: var(--px-teal-soft); color: var(--px-teal); }
html.px-app body.journey-app #stay-view > .journey-stay-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin: 0; }
html.px-app body.journey-app #stay-view > .journey-stay-actions button {
  min-width: 0; min-height: 48px; padding: 0 10px; border: 1px solid var(--px-line); border-radius: 16px;
  background: var(--px-card); color: var(--px-teal); font: 700 14.5px/1.2 var(--px-font); box-shadow: var(--px-shadow);
  transition: transform .4s var(--px-spring);
}
html.px-app body.journey-app #stay-view > .journey-stay-actions button:active { transform: scale(.96); }

/* ---------- section cards ---------- */
html.px-app body.journey-app #stay-view > :is(.sv-block, #jto-hotel):where(:not(#stay-experiences, #stay-guides)) {
  display: block; margin: 0; padding: 18px; border: 1px solid var(--px-line); border-radius: 24px;
  background: var(--px-card); box-shadow: var(--px-shadow);
}
html.px-app body.journey-app #stay-view .sv-h, html.px-app body.journey-app #stay-view #jto-hotel > h2 {
  display: block; margin: 0 0 12px; padding: 0; font: 780 18px/1.3 var(--px-font); letter-spacing: -.03em; color: var(--px-ink);
}
html.px-app body.journey-app #stay-view .sv-h .sv-num { display: none; }
html.px-app body.journey-app #stay-view .sv-note { margin: 8px 0 0; font: 500 13px/1.55 var(--px-font); color: var(--px-ink2); }
html.px-app body.journey-app #stay-view .sv-h + .sv-note { margin: -6px 0 12px; }

/* shared checklist row (questions to ask, perks used) */
html.px-app body.journey-app #stay-view .sv-check {
  display: grid; grid-template-columns: 24px minmax(0, 1fr); gap: 12px; align-items: start; width: 100%; min-height: 48px;
  margin: 0; padding: 13px 0; border: 0; border-top: 1px solid var(--px-line); border-radius: 0; background: none;
  color: inherit; font: inherit; text-align: left; cursor: pointer;
}
html.px-app body.journey-app #stay-view .sv-check .box {
  display: grid; place-items: center; width: 22px; height: 22px; margin-top: 0; border: 1.8px solid #CBC6BB; border-radius: 11px;
  background: #fff; color: transparent; font: 800 12px/1 var(--px-font); transition: transform .35s var(--px-spring), background-color .2s;
}
html.px-app body.journey-app #stay-view .sv-check[aria-pressed="true"] .box { background: var(--px-teal); border-color: var(--px-teal); color: #fff; }
html.px-app body.journey-app #stay-view .sv-check:active .box { transform: scale(.86); }
html.px-app body.journey-app #stay-view .sv-check .t { display: block; font: 700 15px/1.35 var(--px-font); letter-spacing: -.015em; color: var(--px-ink); }
html.px-app body.journey-app #stay-view .sv-check .d { display: block; margin-top: 3px; font: 500 13px/1.5 var(--px-font); color: var(--px-ink2); }
html.px-app body.journey-app #stay-view .sv-check[aria-pressed="true"] .t { color: var(--px-ink3); text-decoration: line-through; text-decoration-color: #C9C4BA; }

/* shared value row */
html.px-app body.journey-app #stay-view .sv-row {
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.45fr); gap: 12px; align-items: baseline;
  margin: 0; padding: 12px 0; border: 0; border-top: 1px solid var(--px-line);
}
html.px-app body.journey-app #stay-view .sv-row .l { font: 700 14px/1.4 var(--px-font); color: var(--px-ink); }
html.px-app body.journey-app #stay-view .sv-row .r { font: 650 13.5px/1.45 var(--px-font); color: var(--px-ink2); text-align: right; }

/* disclosure rows with a chevron */
html.px-app body.journey-app #stay-view :is(details.sv-ev, details.ai-room-compare, details.ai-illust, details.sx-info, details.sx-tips, details.jto-prefs) > summary {
  display: flex; align-items: center; gap: 10px; min-height: 48px; padding: 0; list-style: none; cursor: pointer;
  font: 700 14.5px/1.35 var(--px-font); color: var(--px-teal);
}
html.px-app body.journey-app #stay-view :is(details.sv-ev, details.ai-room-compare, details.ai-illust, details.sx-info, details.sx-tips, details.jto-prefs) > summary::-webkit-details-marker { display: none; }
html.px-app body.journey-app #stay-view :is(details.sv-ev, details.ai-room-compare, details.ai-illust, details.sx-info, details.sx-tips, details.jto-prefs) > summary::after {
  content: ''; flex: none; width: 8px; height: 8px; margin: -4px 4px 0 auto; border: solid var(--px-ink3); border-width: 0 2px 2px 0;
  transform: rotate(45deg); transition: transform .35s var(--px-spring); font-size: 0;
}
html.px-app body.journey-app #stay-view :is(details.sv-ev, details.ai-room-compare, details.ai-illust, details.sx-info, details.sx-tips, details.jto-prefs)[open] > summary::after { transform: rotate(-135deg); margin-top: 4px; }

/* ---------- call the hotel ---------- */
html.px-app body.journey-app #stay-view > #stay-questions .sv-call {
  display: flex; align-items: center; justify-content: center; gap: 8px; min-height: 54px; margin: 0 0 12px; padding: 0 16px;
  border: 0; border-radius: 16px; background: var(--px-teal); color: #fff; font: 750 16.5px/1.2 var(--px-font);
  letter-spacing: -.01em; text-decoration: none; box-shadow: 0 12px 24px -14px rgba(15,74,69,.7); transition: transform .4s var(--px-spring);
}
html.px-app body.journey-app #stay-view > #stay-questions .sv-call:active { transform: scale(.97); }
html.px-app body.journey-app #stay-view > #stay-questions > .sv-note { margin: 0 0 6px !important; font-size: 12.5px; }
html.px-app body.journey-app #stay-view #sv-callitems { margin-top: 4px; }
html.px-app body.journey-app #stay-view .sv-tips { margin: 14px 0 0; padding: 14px 16px; border: 0; border-radius: 18px; background: #F6F4EF; }
html.px-app body.journey-app #stay-view .sv-tips h4 { margin: 0 0 6px; font: 750 12.5px/1.3 var(--px-font); color: var(--px-ink3); letter-spacing: 0; }
html.px-app body.journey-app #stay-view .sv-tips ul { margin: 0; padding: 0 0 0 18px; }
html.px-app body.journey-app #stay-view .sv-tips li { margin: 5px 0 0; font: 550 13.5px/1.5 var(--px-font); color: var(--px-ink); }
html.px-app body.journey-app #stay-view .sv-unver {
  margin: 10px 0 0; padding: 12px 14px; border: 0; border-radius: 16px; background: var(--px-amber-soft);
  color: var(--px-amber); font: 600 13px/1.55 var(--px-font);
}

/* ---------- breakfast days: one segmented control per day ---------- */
html.px-app body.journey-app #stay-view #journey-meal-choices .journey-meal-grid { display: grid; grid-template-columns: 1fr; gap: 14px; margin-top: 4px; }
html.px-app body.journey-app #stay-view #journey-meal-choices .journey-meal-day { display: grid; grid-template-columns: 1fr; gap: 7px; padding: 0; border-radius: 0; background: none; }
html.px-app body.journey-app #stay-view #journey-meal-choices .journey-meal-day > strong { display: block; margin: 0 0 0 2px; font: 750 13.5px/1.2 var(--px-font); color: var(--px-ink); }
html.px-app body.journey-app #stay-view #journey-meal-choices .journey-meal-day > div {
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1.4fr); gap: 3px; padding: 3px;
  border-radius: 15px; background: #EFECE5;
}
html.px-app body.journey-app #stay-view #journey-meal-choices .journey-meal-day button {
  min-width: 0; min-height: 44px; padding: 0 6px; border: 0; border-radius: 12px; background: transparent; box-shadow: none;
  color: var(--px-ink2); font: 650 13.5px/1.2 var(--px-font); letter-spacing: -.02em; text-align: center;
  transition: background-color .25s, color .2s, box-shadow .25s;
}
html.px-app body.journey-app #stay-view #journey-meal-choices .journey-meal-day button[aria-pressed="true"] {
  background: #fff; color: var(--px-teal); font-weight: 780; box-shadow: 0 1px 2px rgba(18,24,21,.06), 0 6px 14px -6px rgba(18,40,34,.28);
}
html.px-app body.journey-app #stay-view #journey-meal-status { margin-top: 12px; }

/* ---------- special dinner: pick one ---------- */
html.px-app body.journey-app #stay-view .sv-pick { display: grid; gap: 10px; }
html.px-app body.journey-app #stay-view .sv-opt {
  display: grid; grid-template-columns: 22px minmax(0, 1fr); gap: 12px; align-items: start; width: 100%; min-height: 48px; margin: 0;
  padding: 14px 16px; border: 1.5px solid #E6E2DA; border-radius: 18px; background: #fff; color: inherit; font: inherit;
  text-align: left; cursor: pointer; transition: border-color .2s, background-color .2s, transform .4s var(--px-spring);
}
html.px-app body.journey-app #stay-view .sv-opt:active { transform: scale(.98); }
html.px-app body.journey-app #stay-view .sv-opt .dot { width: 22px; height: 22px; margin: 0; border: 2px solid #CBC6BB; border-radius: 11px; background: #fff; box-shadow: none; }
html.px-app body.journey-app #stay-view .sv-opt[aria-pressed="true"] { border-color: var(--px-teal); background: #F3F9F7; }
html.px-app body.journey-app #stay-view .sv-opt[aria-pressed="true"] .dot { border-color: var(--px-teal); background: var(--px-teal); box-shadow: inset 0 0 0 4px #fff; }
html.px-app body.journey-app #stay-view .sv-opt .t { display: block; font: 750 15.5px/1.3 var(--px-font); letter-spacing: -.02em; color: var(--px-ink); }
html.px-app body.journey-app #stay-view .sv-opt .d { display: block; margin-top: 4px; font: 500 13px/1.5 var(--px-font); color: var(--px-ink2); }
html.px-app body.journey-app #stay-view #td-dinner-ev { margin-top: 12px; }
html.px-app body.journey-app #stay-view #td-dinner-ev .td-card { margin: 0; padding: 14px 16px; border: 0; border-radius: 18px; background: #F6F4EF; box-shadow: none; }
html.px-app body.journey-app #stay-view #td-dinner-ev .sn-sub { font: 600 14px/1.5 var(--px-font); color: var(--px-ink); }
html.px-app body.journey-app #stay-view #td-dinner-ev .td-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 10px; }
html.px-app body.journey-app #stay-view #td-dinner-ev .sn-tiny { font: 550 12.5px/1.45 var(--px-font); color: var(--px-ink3); }
html.px-app body.journey-app #stay-view #td-dinner-ev .td-copy {
  flex: none; display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: 0 14px;
  border: 1px solid var(--px-line); border-radius: 14px; background: #fff; color: var(--px-teal); font: 700 14px/1 var(--px-font); text-decoration: none;
}

/* ---------- hotel activities (trip ops) ---------- */
html.px-app body.journey-app #stay-view #jto-hotel .jto-hint { margin: 0; font: 500 13px/1.55 var(--px-font); color: var(--px-ink2); }
html.px-app body.journey-app #stay-view #jto-hotel .jto-acts { display: grid; gap: 0; margin: 10px 0 12px; }
html.px-app body.journey-app #stay-view #jto-hotel .jto-act-row {
  display: grid; gap: 3px; margin: 0; padding: 12px 0; border: 0; border-top: 1px solid var(--px-line); border-radius: 0; background: none;
}
html.px-app body.journey-app #stay-view #jto-hotel .jto-act-row strong { font: 750 15px/1.3 var(--px-font); color: var(--px-ink); }
html.px-app body.journey-app #stay-view #jto-hotel .jto-act-cnt { font: 550 13px/1.4 var(--px-font); color: var(--px-ink2); }
html.px-app body.journey-app #stay-view #jto-hotel .jto-actions { display: block; margin: 0; }
html.px-app body.journey-app #stay-view #jto-hotel [data-jto="activity"] {
  display: flex; align-items: center; justify-content: center; gap: 6px; width: 100%; min-height: 48px; padding: 0 14px;
  border: 0; border-radius: 16px; background: var(--px-teal-soft); color: var(--px-teal); font: 750 15px/1.2 var(--px-font);
}
html.px-app body.journey-app #stay-view #jto-hotel [data-jto="activity"]::before { content: '+'; font: 800 19px/1 var(--px-font); margin-top: -2px; }
html.px-app body.journey-app #stay-view #jto-hotel .jto-sub { margin: 18px 0 4px; font: 750 15.5px/1.3 var(--px-font); letter-spacing: -.02em; color: var(--px-ink); }
html.px-app body.journey-app #stay-view #jto-hotel .jto-prefs { margin: 6px 0 4px; border-top: 1px solid var(--px-line); }
html.px-app body.journey-app #stay-view #jto-hotel .jto-prefs > p { margin: 0; padding: 8px 0; font: 550 13.5px/1.4 var(--px-font); color: var(--px-ink); border-top: 1px solid var(--px-line); }
html.px-app body.journey-app #stay-view #jto-hotel > .jto-hint:last-child { margin-top: 8px; font-size: 12.5px; color: var(--px-ink3); }

/* ---------- room guide + illustration folds ---------- */
html.px-app body.journey-app #stay-view > :is(#ai-room-compare, #ai-siena-illust) { padding: 4px 18px; }
html.px-app body.journey-app #stay-view > :is(#ai-room-compare, #ai-siena-illust)[open] { padding-bottom: 16px; }
html.px-app body.journey-app #stay-view > :is(#ai-room-compare, #ai-siena-illust) > summary { min-height: 52px; margin: 0; font: 750 16px/1.3 var(--px-font); color: var(--px-ink); }
html.px-app body.journey-app #stay-view > #ai-room-compare > summary::after { content: ''; font-size: 0; }
html.px-app body.journey-app #stay-view > #ai-room-compare > .sv-note { margin: 0 0 6px; }
html.px-app body.journey-app #stay-view > #ai-room-compare .ai-room { margin: 10px 0 0; padding: 14px; border: 0; border-radius: 18px; background: #F6F4EF; }
html.px-app body.journey-app #stay-view > #ai-room-compare .ai-room-t { margin: 0 0 8px; font: 750 15px/1.3 var(--px-font); color: var(--px-ink); }
html.px-app body.journey-app #stay-view > #ai-room-compare .ai-room-cols { display: grid; grid-template-columns: 1fr; gap: 8px; }
html.px-app body.journey-app #stay-view > #ai-room-compare .ai-col { margin: 0; padding: 10px 12px; border: 0; border-radius: 14px; background: #fff; font: 500 13px/1.5 var(--px-font); color: var(--px-ink2); }
html.px-app body.journey-app #stay-view > #ai-room-compare .ai-col-h { display: block; margin-bottom: 4px; font: 750 12px/1.2 var(--px-font); color: var(--px-ink3); }
html.px-app body.journey-app #stay-view > #ai-room-compare .ai-col img { display: block; width: 100%; height: auto; border-radius: 12px; }
html.px-app body.journey-app #stay-view > #ai-room-compare .ai-col figcaption { margin-top: 6px; font: 500 11.5px/1.4 var(--px-font); color: var(--px-ink3); }
html.px-app body.journey-app #stay-view > #ai-room-compare .ai-goto {
  display: inline-flex; align-items: center; min-height: 44px; padding: 0 14px; border: 0; border-radius: 14px;
  background: var(--px-teal-soft); color: var(--px-teal); font: 750 14px/1 var(--px-font);
}
html.px-app body.journey-app #stay-view > #ai-siena-illust figure { margin: 4px 0 0; }
html.px-app body.journey-app #stay-view > #ai-siena-illust img { display: block; width: 100%; height: auto; border-radius: 16px; }
html.px-app body.journey-app #stay-view > #ai-siena-illust figcaption { margin-top: 6px; font: 500 12px/1.45 var(--px-font); color: var(--px-ink3); }

/* ---------- moods + experiences ---------- */
html.px-app body.journey-app #stay-view > :is(#stay-experiences, #stay-guides) { display: grid; gap: 12px; margin: 10px 0 0; padding: 0; border: 0; border-radius: 0; background: none; box-shadow: none; }
html.px-app body.journey-app #stay-view > :is(#stay-experiences, #stay-guides) > .sv-h { margin: 0; padding: 0 4px; font: 780 19px/1.25 var(--px-font); letter-spacing: -.03em; }
html.px-app body.journey-app #stay-view > #stay-experiences > .sv-note { margin: -8px 0 0; padding: 0 4px; }
html.px-app body.journey-app #stay-view .journey-moods {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin: 0; padding: 0; border: 0; overflow: visible;
  background: none; -webkit-mask-image: none; mask-image: none;
}
html.px-app body.journey-app #stay-view .journey-moods button[data-stay-mood] {
  min-width: 0; min-height: 46px; padding: 0 10px; border: 1px solid var(--px-line); border-radius: 16px; background: var(--px-card);
  color: var(--px-ink2); font: 700 14.5px/1.2 var(--px-font); box-shadow: var(--px-shadow); transition: transform .4s var(--px-spring), background-color .2s;
}
html.px-app body.journey-app #stay-view .journey-moods button[data-stay-mood]:active { transform: scale(.96); }
html.px-app body.journey-app #stay-view .journey-moods button[data-stay-mood][aria-pressed="true"] { border-color: var(--px-teal); background: var(--px-teal); color: #fff; }
html.px-app body.journey-app #stay-view #sx-experiences { display: grid; grid-template-columns: 1fr; gap: 12px; }
html.px-app body.journey-app #stay-view :is(#sx-experiences, #sx-optional) .sx-card {
  display: block; margin: 0; padding: 0 16px 14px; overflow: hidden; border: 1px solid var(--px-line); border-radius: 24px;
  background: var(--px-card); box-shadow: var(--px-shadow);
}
html.px-app body.journey-app #stay-view :is(#sx-experiences, #sx-optional) .sx-card > :first-child:not(.sx-media) { margin-top: 16px; }
html.px-app body.journey-app #stay-view #sx-experiences .sx-card > * { grid-column: auto; padding-left: 0; padding-right: 0; }
html.px-app body.journey-app #stay-view #sx-experiences .sx-card .sx-media {
  display: block; width: auto; height: 176px; min-height: 0; aspect-ratio: auto; margin: 0 -16px 14px; border-radius: 0; background: #E3E9E4;
}
html.px-app body.journey-app #stay-view #sx-experiences .sx-card .sx-media img { width: 100%; height: 100%; object-fit: cover; }
html.px-app body.journey-app #stay-view #sx-experiences .sx-card .sx-title-row { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; padding-top: 0; }
html.px-app body.journey-app #stay-view :is(#sx-experiences, #sx-optional) .sx-t { margin: 0; font: 780 18px/1.3 var(--px-font); letter-spacing: -.03em; color: var(--px-ink); }
html.px-app body.journey-app #stay-view #sx-experiences .sx-plan { margin: 8px 0 0; font: 650 14px/1.5 var(--px-font); color: var(--px-ink); }
html.px-app body.journey-app #stay-view #sx-experiences .sx-fact { margin: 3px 0 0; font: 500 13px/1.5 var(--px-font); color: var(--px-ink2); }
html.px-app body.journey-app #stay-view #sx-experiences .sx-cues { display: flex; flex-wrap: wrap; gap: 6px; margin: 10px 0 0; }
html.px-app body.journey-app #stay-view :is(#sx-experiences, #sx-optional) .chip {
  display: inline-flex; align-items: center; height: 24px; padding: 0 9px; border: 0; border-radius: 12px;
  font: 650 12px/1 var(--px-font); white-space: nowrap;
}
html.px-app body.journey-app #stay-view #sx-experiences :is(.chip--included, .chip--primo) { background: var(--px-teal-soft); color: var(--px-teal); }
html.px-app body.journey-app #stay-view #sx-experiences .chip--paid { background: var(--px-amber-soft); color: var(--px-amber); }
html.px-app body.journey-app #stay-view #sx-experiences .sx-alert {
  margin: 10px 0 0; padding: 10px 12px; border: 0; border-radius: 14px; background: var(--px-red-soft);
  color: var(--px-red); font: 700 13px/1.45 var(--px-font);
}
html.px-app body.journey-app #stay-view #sx-experiences details:is(.sx-info, .sx-tips) { margin: 12px 0 0; border: 0; border-top: 1px solid var(--px-line); }
html.px-app body.journey-app #stay-view #sx-experiences details.sx-tips + details, html.px-app body.journey-app #stay-view #sx-experiences details.sx-info + details.sx-tips { margin-top: 0; }
html.px-app body.journey-app #stay-view #sx-experiences details:is(.sx-info, .sx-tips) > summary { font-size: 14px; }
html.px-app body.journey-app #stay-view :is(#sx-experiences, #sx-optional) :is(.sx-d, .sx-tip) { font: 500 13px/1.6 var(--px-font); color: var(--px-ink2); }
html.px-app body.journey-app #stay-view #sx-experiences :is(.sx-d, .sx-tip) + :is(.sx-d, .sx-tip, .sx-src) { margin-top: 8px; }
html.px-app body.journey-app #stay-view #sx-experiences .sx-src a, html.px-app body.journey-app #stay-view #sx-experiences a.sx-tel { color: var(--px-teal); font-weight: 750; }
html.px-app body.journey-app #stay-view #sx-experiences .sx-foot-note { margin: 2px 0 0; padding: 0 4px; font-size: 12.5px; color: var(--px-ink3); }
html.px-app body.journey-app #stay-view #sx-optional { display: grid; gap: 12px; }
html.px-app body.journey-app #stay-view #sx-optional .sx-card { padding: 16px; }
html.px-app body.journey-app #stay-view #sx-optional .sx-card > :first-child:not(.sx-media) { margin-top: 0; }
html.px-app body.journey-app #stay-view #sx-optional .sx-why { margin: 4px 0 8px; font: 650 14px/1.45 var(--px-font); color: var(--px-teal2); }
html.px-app body.journey-app #stay-view #sx-optional .sx-d + .sx-d { margin-top: 4px; }
html.px-app body.journey-app #stay-view #sx-optional .sx-d:last-child { margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--px-line); font-size: 12.5px; color: var(--px-ink3); }

/* ---------- open now: list with a live dot, hours on the right ---------- */
html.px-app body.journey-app #stay-view .sv-open { display: grid; gap: 0; }
html.px-app body.journey-app #stay-view .sv-openrow {
  display: grid; grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "nm hr" "st hr"; column-gap: 12px; row-gap: 3px;
  align-items: center; min-height: 56px; margin: 0; padding: 10px 0; border: 0; border-top: 1px solid var(--px-line);
}
html.px-app body.journey-app #stay-view .sv-openrow:first-child { border-top: 0; }
html.px-app body.journey-app #stay-view .sv-openrow .nm { grid-area: nm; font: 700 15px/1.3 var(--px-font); letter-spacing: -.015em; color: var(--px-ink); }
html.px-app body.journey-app #stay-view .sv-openrow .hr { grid-area: hr; font: 700 14px/1 var(--px-font); color: var(--px-ink2); font-variant-numeric: tabular-nums; white-space: nowrap; }
html.px-app body.journey-app #stay-view .sv-openrow .chip {
  grid-area: st; justify-self: start; display: inline-flex; align-items: center; gap: 6px; height: auto; padding: 0; border: 0;
  background: none; color: var(--px-ink3); font: 650 12.5px/1.2 var(--px-font);
}
html.px-app body.journey-app #stay-view .sv-openrow .chip::before { content: ''; width: 8px; height: 8px; border-radius: 4px; background: #C3BEB3; flex: none; }
html.px-app body.journey-app #stay-view .sv-openrow .chip--open { color: var(--px-ok); }
html.px-app body.journey-app #stay-view .sv-openrow .chip--open::before { background: #2FB36E; box-shadow: 0 0 0 3px rgba(47,179,110,.18); }
html.px-app body.journey-app #stay-view #sv-opennote { margin-top: 10px; font-size: 12.5px; color: var(--px-ink3); }

/* ---------- nearby outings ---------- */
html.px-app body.journey-app #stay-view > .sv-block:has(#btn-nearby-from-stay) { display: flex !important; flex-wrap: wrap; gap: 8px; }
html.px-app body.journey-app #stay-view > .sv-block:has(#btn-nearby-from-stay) > :is(.sv-h, .sv-note) { flex: 1 1 100%; }
html.px-app body.journey-app #stay-view > .sv-block:has(#btn-nearby-from-stay) > .sv-note { margin: -6px 0 6px; }
html.px-app body.journey-app #stay-view .stay-shortcut {
  flex: 1 1 140px; display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-height: 48px; margin: 0 !important;
  padding: 0 12px; border: 0; border-radius: 16px; background: #F0EEE8; color: var(--px-ink); font: 700 14.5px/1.2 var(--px-font);
  transition: transform .4s var(--px-spring);
}
html.px-app body.journey-app #stay-view .stay-shortcut:active { transform: scale(.96); }

/* ---------- included vs paid ---------- */
html.px-app body.journey-app #stay-view .sv-calc { margin: 0; padding: 0; border: 0; border-radius: 0; background: none; }
html.px-app body.journey-app #stay-view .sv-calc .big {
  margin: 0 0 8px; padding: 14px 16px; border-radius: 18px; background: var(--px-teal-soft);
  font: 700 15px/1.5 var(--px-font); color: var(--px-teal); letter-spacing: -.015em;
}
html.px-app body.journey-app #stay-view .sv-calc .big strong { font-weight: 850; }
html.px-app body.journey-app #stay-view .sv-calc .sv-row { grid-template-columns: 72px minmax(0, 1fr); }
html.px-app body.journey-app #stay-view .sv-calc .sv-row .l { white-space: nowrap; }
html.px-app body.journey-app #stay-view .sv-calc .sv-row .r { text-align: left; }
html.px-app body.journey-app #stay-view .sv-calc > .sv-note { padding-top: 10px; border-top: 1px solid var(--px-line); }

/* ---------- perks tracker ---------- */
html.px-app body.journey-app #stay-view #sv-perks > .sv-row:first-child { align-items: center; padding-top: 0; border-top: 0; }
html.px-app body.journey-app #stay-view #sv-perks > .sv-row:first-child .l { font: 750 15px/1.3 var(--px-font); }
html.px-app body.journey-app #stay-view #sv-perks > .sv-row:first-child .r {
  justify-self: end; display: inline-flex; align-items: center; height: 28px; padding: 0 11px; border-radius: 14px;
  background: var(--px-teal-soft); color: var(--px-teal); font: 800 14px/1 var(--px-font);
}
html.px-app body.journey-app #stay-view #sv-perks > .sv-note { margin: -2px 0 8px; }
html.px-app body.journey-app #stay-view #sv-perks > .sv-note:last-child { margin: 10px 0 0; font-size: 12.5px; color: var(--px-ink3); }
html.px-app body.journey-app #stay-view .sv-storage {
  display: flex; align-items: center; justify-content: space-between; gap: 10px; margin: 12px 0 0; padding: 4px 4px 4px 14px;
  border: 0; border-radius: 16px; background: #F6F4EF; font: 550 12.5px/1.45 var(--px-font); color: var(--px-ink2);
}
html.px-app body.journey-app #stay-view #sv-reset {
  flex: none; min-height: 44px; padding: 0 14px; border: 0; border-radius: 12px; background: #fff; color: var(--px-red);
  font: 700 13.5px/1 var(--px-font); text-decoration: none; box-shadow: 0 1px 2px rgba(18,24,21,.06);
}

/* ---------- tariff: name, then the price line in bold ---------- */
html.px-app body.journey-app #stay-view #sv-tariff .sv-row { grid-template-columns: 1fr; gap: 4px; }
html.px-app body.journey-app #stay-view #sv-tariff .sv-row:first-child { border-top: 0; padding-top: 2px; }
html.px-app body.journey-app #stay-view #sv-tariff .sv-row .l { font: 650 13px/1.4 var(--px-font); color: var(--px-ink3); }
html.px-app body.journey-app #stay-view #sv-tariff .sv-row .r { font: 750 15px/1.45 var(--px-font); color: var(--px-ink); letter-spacing: -.015em; text-align: left; }
html.px-app body.journey-app #stay-view #sv-tariff .sv-review-src { display: block; margin: 3px 0 0; font: 650 11.5px/1.3 var(--px-font); color: var(--px-teal2); }
html.px-app body.journey-app #stay-view details.sv-ev { margin: 6px 0 0; border-top: 1px solid var(--px-line); }
html.px-app body.journey-app #stay-view details.sv-ev > summary { font-size: 14px; color: var(--px-ink2); }
html.px-app body.journey-app #stay-view details.sv-ev > .sv-note { margin: 0 0 4px; }

@media (min-width: 761px) {
  html.px-app body.journey-app #stay-view { width: min(100%, 600px); margin: 0 auto; }
}
@media (prefers-reduced-motion: reduce) {
  html.px-app body.journey-app #stay-view * { transition: none !important; }
}

/* Design v2 restyle layer: ops (final program). Scoped to html.px-app. */
/* 지갑·준비 prep sections under the wallet, 비용, 짐, 예약 안내 and the trip-ops sheets.
   Money reads amount-first, lists are grouped white cards, dialogs are bottom sheets. */

/* ---------- surfaces ---------- */
html.px-app body.journey-app:is([data-destination="tools"], [data-destination="settle"], [data-destination="pack"], [data-destination="ledger"]) :is(.app-container, .workbench-layout) { background: var(--px-bg) !important; }
html.px-app body.journey-app :is(#journey-tools, #settle-view, #pack-view, #ledger-view) {
  font-family: var(--px-font); color: var(--px-ink); word-break: keep-all; overflow-wrap: anywhere;
  -webkit-font-smoothing: antialiased; font-feature-settings: "tnum" 1;
}
html.px-app body.journey-app :is(#journey-tools, #settle-view, #pack-view, #ledger-view) :is(h2, h3, h4, p, li, button, a) { font-family: var(--px-font); }
html.px-app body.journey-app :is(#settle-view, #pack-view, #ledger-view) {
  padding: 8px 16px calc(116px + env(safe-area-inset-bottom)); background: var(--px-bg);
}
html.px-app body.journey-app :is(#settle-view, #pack-view, #ledger-view) :is(.settle-ledger, .pack, .ledger) { width: auto; max-width: none; margin: 0; padding: 0; background: none; border: 0; box-shadow: none; }

/* The large-title header already names the screen: keep the in-page h1 for focus and screen readers only. */
html.px-app body.journey-app :is(#settle-view, #pack-view, #ledger-view) > .journey-screen-head { display: flex; align-items: center; margin: 0 0 12px; padding: 0; }
html.px-app body.journey-app :is(#settle-view, #pack-view, #ledger-view) > .journey-screen-head h1 {
  position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
html.px-app body.journey-app :is(#settle-view, #pack-view, #ledger-view) > .journey-screen-head .journey-actions { display: flex; margin: 0; padding: 0; }
html.px-app body.journey-app :is(#settle-view, #pack-view, #ledger-view) > .journey-screen-head .journey-actions button {
  display: inline-flex; align-items: center; min-height: 44px; padding: 0 14px; border: 1px solid var(--px-line); border-radius: 22px;
  background: var(--px-card); color: var(--px-teal); font: 700 13.5px/1 var(--px-font); box-shadow: var(--px-shadow);
  transition: transform .4s var(--px-spring);
}
html.px-app body.journey-app :is(#settle-view, #pack-view, #ledger-view) > .journey-screen-head .journey-actions button:active { transform: scale(.95); }

/* shared section title */
html.px-app body.journey-app :is(#settle-view .settle-ledger > h2, #pack-view .pack > h2, #ledger-view .face-header h2) {
  margin: 26px 4px 4px !important; padding: 0 !important;
  /* the legacy face headings pin a serif display face, size and margin with !important */
  font-family: var(--px-font) !important; font-size: 19px !important; font-weight: 780 !important; line-height: 1.25 !important;
  letter-spacing: -.03em !important; color: var(--px-ink) !important;
}
html.px-app body.journey-app :is(#settle-view .settle-ledger > .sub, #pack-view .pack > .sub, #ledger-view .face-header .sub) {
  margin: 0 4px 12px !important; font-family: var(--px-font); font-weight: 500; font-size: 13px !important; line-height: 1.5 !important; color: var(--px-ink2) !important;
}

/* ---------- 지갑·준비: sections below the wallet ---------- */
/* Sections take the wallet's own 16px inset inside #journey-tools, so they line up with the passes
   whatever side padding the chrome gives the container. */
html.px-app body.journey-app #journey-tools { background: none; padding-bottom: calc(116px + env(safe-area-inset-bottom)); }
html.px-app body.journey-app #journey-tools > :not(#ph-wallet-root):not(.journey-screen-head) { width: min(100% - 32px, 528px); margin-left: auto; margin-right: auto; box-sizing: border-box; }
html.px-app body.journey-app #journey-tools > #ios-install-hint {
  display: grid; gap: 2px; margin-top: 4px; margin-bottom: 14px; padding: 12px 12px 12px 16px; border: 0; border-radius: 20px;
  background: var(--px-teal-soft); color: var(--px-teal);
}
html.px-app body.journey-app #journey-tools .jto-install-row { display: flex; flex-wrap: nowrap; align-items: center; gap: 10px; font: 700 14px/1.45 var(--px-font); color: var(--px-teal); }
html.px-app body.journey-app #journey-tools .jto-install-row > [data-jto] {
  flex: none; margin-left: auto; min-height: 44px; padding: 0 14px; border: 0; border-radius: 14px; background: #fff; color: var(--px-teal);
  font: 700 13.5px/1 var(--px-font); box-shadow: 0 1px 2px rgba(18,24,21,.06);
}
html.px-app body.journey-app #journey-tools .jto-install > .sn-tiny { display: block; margin: 0; font: 550 12.5px/1.4 var(--px-font); color: var(--px-teal2); }

/* shortcut list: one grouped card, rows with chevrons */
html.px-app body.journey-app #journey-tools .journey-summary-grid {
  display: block; margin-top: 14px; padding: 2px 16px; border: 1px solid var(--px-line); border-radius: 24px;
  background: var(--px-card); box-shadow: var(--px-shadow);
}
html.px-app body.journey-app #journey-tools .journey-tool {
  display: grid; grid-template-columns: minmax(0, 1fr) 18px; column-gap: 12px; row-gap: 3px; align-items: center;
  width: 100%; min-height: 66px; margin: 0; padding: 13px 0; border: 0; border-top: 1px solid var(--px-line); border-radius: 0;
  background: none; box-shadow: none; color: inherit; text-align: left; cursor: pointer; transition: opacity .2s;
}
html.px-app body.journey-app #journey-tools .journey-tool:first-child { border-top: 0; }
html.px-app body.journey-app #journey-tools .journey-tool:active { opacity: .6; }
html.px-app body.journey-app #journey-tools .journey-tool strong { grid-column: 1; margin: 0; font: 720 15.5px/1.3 var(--px-font); letter-spacing: -.015em; color: var(--px-ink); }
html.px-app body.journey-app #journey-tools .journey-tool span { grid-column: 1; margin: 0; font: 500 13px/1.4 var(--px-font); color: var(--px-ink2); }
html.px-app body.journey-app #journey-tools .journey-tool::after {
  content: ''; grid-column: 2; grid-row: 1 / span 2; justify-self: center; width: 8px; height: 8px;
  border: solid var(--px-ink3); border-width: 2px 2px 0 0; transform: rotate(45deg);
}
html.px-app body.journey-app #journey-tools > .sn-credit { margin-top: 10px; padding: 0 4px; font: 500 11.5px/1.5 var(--px-font); color: var(--px-ink3); }

/* prep cards: tickets, rental, emergency */
html.px-app body.journey-app #journey-tools > :is(#td-tickets, #td-rental, #td-emg) { margin-top: 24px; padding: 0; }
html.px-app body.journey-app #journey-tools :is(#td-tickets, #td-rental, #td-emg) > .sn-sect-h { margin: 0 0 10px; padding: 0 4px; }
html.px-app body.journey-app #journey-tools :is(#td-tickets, #td-rental, #td-emg) .td-h { margin: 0; font: 780 19px/1.25 var(--px-font); letter-spacing: -.03em; color: var(--px-ink); }
html.px-app body.journey-app #journey-tools .td-card {
  margin: 0 0 10px; padding: 16px; border: 1px solid var(--px-line); border-radius: 22px; background: var(--px-card); box-shadow: var(--px-shadow);
}
html.px-app body.journey-app #journey-tools .td-card > .sn-tiny:first-child { font: 700 12.5px/1.3 var(--px-font); color: var(--px-ink3); }
html.px-app body.journey-app #journey-tools .td-card > div:not([class]) { margin-top: 6px; font: 780 17.5px/1.3 var(--px-font); letter-spacing: -.025em; color: var(--px-ink); }
html.px-app body.journey-app #journey-tools .td-card .sn-sub { margin-top: 4px; font: 550 13.5px/1.5 var(--px-font); color: var(--px-ink2); }
html.px-app body.journey-app #journey-tools .td-card > .sn-tiny:not(:first-child) { margin-top: 6px; font: 500 12.5px/1.5 var(--px-font); color: var(--px-ink3); }
html.px-app body.journey-app #journey-tools .td-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 12px; }
html.px-app body.journey-app #journey-tools .td-row .sn-tiny { font: 600 13px/1.4 var(--px-font); color: var(--px-ink2); }
html.px-app body.journey-app #journey-tools .td-row > strong { font: 800 17px/1.2 var(--px-font); letter-spacing: -.02em; color: var(--px-ink); }
html.px-app body.journey-app #journey-tools .td-big { font: 800 24px/1 var(--px-font); letter-spacing: .06em; color: var(--px-ink); font-variant-numeric: tabular-nums; }
html.px-app body.journey-app #journey-tools .td-copy {
  flex: none; display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: 0 16px; border: 0;
  border-radius: 14px; background: var(--px-teal-soft); color: var(--px-teal); font: 700 14px/1 var(--px-font); text-decoration: none;
  transition: transform .4s var(--px-spring);
}
html.px-app body.journey-app #journey-tools .td-copy:active { transform: scale(.95); }
html.px-app body.journey-app #journey-tools .td-row:has(> a.td-copy + a.td-copy) { justify-content: flex-start; }
html.px-app body.journey-app #journey-tools .td-row > a.td-copy + a.td-copy { background: #F0EEE8; color: var(--px-ink); }
html.px-app body.journey-app #journey-tools .td-qr {
  display: grid; place-items: center; height: auto; min-height: 60px; margin-top: 12px; padding: 12px 16px; border: 0; border-radius: 16px;
  background: #F6F4EF; color: var(--px-ink3); font: 550 13px/1.45 var(--px-font); text-align: center;
}
html.px-app body.journey-app #journey-tools details.td-emg { margin: 0; border-top: 1px solid var(--px-line); }
html.px-app body.journey-app #journey-tools .td-card > details.td-emg:first-child { border-top: 0; }
html.px-app body.journey-app #journey-tools .td-rental-card details.td-emg:first-of-type { margin-top: 14px; }
html.px-app body.journey-app #journey-tools details.td-emg > summary {
  display: flex; align-items: center; gap: 10px; min-height: 50px; padding: 0; list-style: none; cursor: pointer;
  font: 720 15px/1.3 var(--px-font); color: var(--px-ink);
}
html.px-app body.journey-app #journey-tools details.td-emg > summary::-webkit-details-marker { display: none; }
html.px-app body.journey-app #journey-tools details.td-emg > summary::after {
  content: ''; flex: none; width: 8px; height: 8px; margin: -4px 4px 0 auto; border: solid var(--px-ink3); border-width: 0 2px 2px 0;
  transform: rotate(45deg); transition: transform .35s var(--px-spring);
}
html.px-app body.journey-app #journey-tools details.td-emg[open] > summary::after { transform: rotate(-135deg); margin-top: 4px; }
html.px-app body.journey-app #journey-tools .td-todo { margin: 0 0 10px; padding: 0; list-style: none; }
html.px-app body.journey-app #journey-tools .td-todo li {
  margin: 0; padding: 10px 0 10px 16px; border: 0; border-top: 1px solid var(--px-line); position: relative;
  font: 550 14px/1.55 var(--px-font); color: var(--px-ink);
}
html.px-app body.journey-app #journey-tools .td-todo li::before { content: ''; position: absolute; left: 2px; top: 19px; width: 5px; height: 5px; border-radius: 3px; background: var(--px-teal2); }
html.px-app body.journey-app #journey-tools .td-todo li .sn-sub { display: inline-block; margin-top: 2px; font-size: 13px; }

/* storage · sync · offline */
html.px-app body.journey-app #journey-tools > #jto-sync {
  margin-top: 24px; padding: 18px; border: 1px solid var(--px-line); border-radius: 24px; background: var(--px-card); box-shadow: var(--px-shadow);
}
html.px-app body.journey-app #journey-tools #jto-sync h2 { margin: 0 0 6px; font: 780 18px/1.3 var(--px-font); letter-spacing: -.03em; color: var(--px-ink); }
html.px-app body.journey-app #journey-tools #jto-sync p { margin: 4px 0 0; font: 550 13.5px/1.5 var(--px-font); color: var(--px-ink2); }
html.px-app body.journey-app #journey-tools #jto-sync-text { color: var(--px-ink); font-weight: 650; }

/* shared: button grid used by the sync card and the records card */
html.px-app body.journey-app :is(#journey-tools #jto-sync, #settle-view #jto-records) > .jto-actions {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin: 14px 0 0;
}
html.px-app body.journey-app :is(#journey-tools #jto-sync, #settle-view #jto-records) > .jto-actions > [data-jto] {
  min-width: 0; min-height: 48px; padding: 6px 10px; border: 0; border-radius: 14px; background: #F0EEE8;
  color: var(--px-ink); font: 700 14px/1.25 var(--px-font); text-align: center; transition: transform .4s var(--px-spring);
}
html.px-app body.journey-app :is(#journey-tools #jto-sync, #settle-view #jto-records) > .jto-actions > [data-jto]:active { transform: scale(.96); }
html.px-app body.journey-app :is(#journey-tools, #settle-view) [data-jto]:disabled { opacity: .45; }

/* ---------- 비용 (settle): amount-first ---------- */
html.px-app body.journey-app #settle-view .settle-signature {
  margin: 0; padding: 20px 18px 16px; border: 1px solid var(--px-line); border-radius: 24px; background: var(--px-card); box-shadow: var(--px-shadow);
}
html.px-app body.journey-app #settle-view .settle-total-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
html.px-app body.journey-app #settle-view .settle-hero-val { min-width: 0; }
html.px-app body.journey-app #settle-view .s-sub { display: block; font: 700 12.5px/1.3 var(--px-font); color: var(--px-ink3); }
html.px-app body.journey-app #settle-view .s-num {
  display: flex; align-items: baseline; margin-top: 8px; font: 800 38px/1 var(--px-font); letter-spacing: -.045em; color: var(--px-ink);
  font-variant-numeric: tabular-nums; white-space: nowrap;
}
html.px-app body.journey-app #settle-view .s-num .s-unit { margin-left: 2px; font: 750 19px/1 var(--px-font); letter-spacing: 0; color: var(--px-ink3); }
html.px-app body.journey-app #settle-view .settle-pp-col { flex: none; display: grid; justify-items: end; gap: 6px; text-align: right; }
html.px-app body.journey-app #settle-view .pp-l { font: 700 12px/1.2 var(--px-font); color: var(--px-ink3); }
html.px-app body.journey-app #settle-view .pp-v {
  display: inline-flex; align-items: center; height: 26px; padding: 0 10px; border-radius: 13px; background: #F1EFE9;
  color: var(--px-ink2); font: 750 12.5px/1 var(--px-font);
}
html.px-app body.journey-app #settle-view .settle-bar-card { margin: 18px 0 0; padding: 0; border: 0; border-radius: 0; background: none; box-shadow: none; }
html.px-app body.journey-app #settle-view .two-segment-bar { display: flex; gap: 2px; height: 10px; margin: 0; overflow: hidden; border-radius: 5px; background: var(--px-track); }
html.px-app body.journey-app #settle-view .two-segment-bar > div { height: 100%; min-width: 0; border-radius: 0; }
html.px-app body.journey-app #settle-view .two-segment-bar .bar-seg-done { background: var(--px-teal); }
html.px-app body.journey-app #settle-view .two-segment-bar .bar-seg-pending { background: #E0A04A; }
html.px-app body.journey-app #settle-view .two-segment-bar .bar-seg-planned { background: repeating-linear-gradient(135deg, #CFC9BD 0 4px, #E2DDD3 4px 8px); }
html.px-app body.journey-app #settle-view .two-segment-legend { display: grid; grid-template-columns: 1fr; gap: 0; margin-top: 12px; }
html.px-app body.journey-app #settle-view .leg-item, html.px-app body.journey-app #settle-view .leg-total {
  display: flex; align-items: center; gap: 8px; min-height: 40px; margin: 0; padding: 8px 0; border-top: 1px solid var(--px-line);
  font: 600 13.5px/1.3 var(--px-font); color: var(--px-ink2);
}
html.px-app body.journey-app #settle-view .leg-item:first-child { border-top: 0; }
html.px-app body.journey-app #settle-view .leg-item > [data-exp], html.px-app body.journey-app #settle-view .leg-total > [data-exp] {
  margin-left: auto; font: 750 15px/1 var(--px-font); color: var(--px-ink); font-variant-numeric: tabular-nums; white-space: nowrap;
}
html.px-app body.journey-app #settle-view .leg-total { color: var(--px-ink); font-weight: 750; border-top: 1.5px solid #DAD5CB; }
html.px-app body.journey-app #settle-view .leg-total > [data-exp] { font-size: 16.5px; font-weight: 800; }
html.px-app body.journey-app #settle-view .swatch { flex: none; width: 10px; height: 10px; border-radius: 3px; margin: 0; }
html.px-app body.journey-app #settle-view .swatch.done { background: var(--px-teal); }
html.px-app body.journey-app #settle-view .swatch.pending { background: #E0A04A; }
html.px-app body.journey-app #settle-view .swatch.planned { background: repeating-linear-gradient(135deg, #CFC9BD 0 3px, #E2DDD3 3px 6px); }
html.px-app body.journey-app #settle-view .settle-note { margin: 12px 0 0; padding: 12px 0 0; border-top: 1px solid var(--px-line); font: 500 12.5px/1.55 var(--px-font); color: var(--px-ink3); }

html.px-app body.journey-app #settle-view .settle-group {
  margin: 12px 0 0; padding: 2px 18px 6px; border: 1px solid var(--px-line); border-radius: 24px; background: var(--px-card); box-shadow: var(--px-shadow);
}
html.px-app body.journey-app #settle-view .grp-header {
  display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin: 0; padding: 16px 0 12px; border: 0; border-bottom: 1px solid var(--px-line);
}
html.px-app body.journey-app #settle-view .grp-header h3 { margin: 0; font: 750 14.5px/1.35 var(--px-font); color: var(--px-ink2); }
html.px-app body.journey-app #settle-view .grp-total { flex: none; font: 800 19px/1 var(--px-font); letter-spacing: -.03em; color: var(--px-ink); font-variant-numeric: tabular-nums; }
html.px-app body.journey-app #settle-view .grp-total.pending { color: var(--px-amber); }
html.px-app body.journey-app #settle-view .settle-list { display: block; margin: 0; padding: 0; gap: 0; }
html.px-app body.journey-app #settle-view .settle-row {
  margin: 0; padding: 14px 0; border: 0; border-top: 1px solid var(--px-line); border-radius: 0; background: none; box-shadow: none;
}
html.px-app body.journey-app #settle-view .settle-row:first-child { border-top: 0; }
html.px-app body.journey-app #settle-view .settle-row::before { display: none; }
html.px-app body.journey-app #settle-view .row-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; }
html.px-app body.journey-app #settle-view .row-top h4 { flex: 1; min-width: 0; margin: 0; font: 680 14.5px/1.4 var(--px-font); letter-spacing: -.015em; color: var(--px-ink); }
html.px-app body.journey-app #settle-view .row-amt {
  flex: none; font: 800 16.5px/1.35 var(--px-font); letter-spacing: -.025em; color: var(--px-ink); font-variant-numeric: tabular-nums; white-space: nowrap;
}
html.px-app body.journey-app #settle-view .row-amt.pending { color: var(--px-amber); }
html.px-app body.journey-app #settle-view .row-meta { margin-top: 4px; font: 550 12.5px/1.45 var(--px-font); color: var(--px-ink3); }
html.px-app body.journey-app #settle-view .row-fact { margin-top: 4px; font: 500 13px/1.5 var(--px-font); color: var(--px-ink2); }

html.px-app body.journey-app #settle-view .post-trip-box {
  margin: 12px 0 0; padding: 18px; border: 1px solid var(--px-line); border-radius: 24px; background: var(--px-card); box-shadow: var(--px-shadow);
}
html.px-app body.journey-app #settle-view .pt-tag { margin: 0; padding: 0; background: none; font: 780 18px/1.3 var(--px-font); letter-spacing: -.03em; color: var(--px-ink); }
html.px-app body.journey-app #settle-view .pt-desc { margin: 6px 0 0; font: 500 13px/1.55 var(--px-font); color: var(--px-ink2); }
html.px-app body.journey-app :is(#settle-view, dialog.jto-dialog) :is(.jto-closeout-open, #jto-records > .jto-actions > [data-jto="quick-expense"]) {
  display: flex; align-items: center; justify-content: center; gap: 8px; width: 100%; min-height: 52px; margin: 14px 0 0; padding: 0 16px;
  border: 0; border-radius: 16px; background: var(--px-teal); color: #fff; font: 750 15.5px/1 var(--px-font);
  box-shadow: 0 12px 24px -14px rgba(15,74,69,.7); transition: transform .4s var(--px-spring);
}
html.px-app body.journey-app #settle-view .jto-closeout-open:active { transform: scale(.97); }

/* records made during the trip */
html.px-app body.journey-app #settle-view > #jto-records {
  margin: 12px 0 0; padding: 18px; border: 1px solid var(--px-line); border-radius: 24px; background: var(--px-card); box-shadow: var(--px-shadow);
}
html.px-app body.journey-app #settle-view #jto-records > h2 { margin: 0; font: 700 12.5px/1.3 var(--px-font); color: var(--px-ink3); letter-spacing: 0; }
html.px-app body.journey-app #settle-view #jto-records > .jto-total { margin: 8px 0 0; font: 800 26px/1.15 var(--px-font); letter-spacing: -.04em; color: var(--px-ink); font-variant-numeric: tabular-nums; }
html.px-app body.journey-app #settle-view #jto-records > .jto-total + p { margin: 6px 0 0; font: 650 13.5px/1.4 var(--px-font); color: var(--px-ink2); }
html.px-app body.journey-app #settle-view #jto-records .jto-settle {
  margin: 12px 0 0; padding: 12px 14px; border: 0; border-radius: 16px; background: var(--px-teal-soft);
  color: var(--px-teal); font: 750 14.5px/1.45 var(--px-font);
}
html.px-app body.journey-app #settle-view #jto-records > .jto-hint { margin: 8px 0 0; font: 500 12.5px/1.5 var(--px-font); color: var(--px-ink3); }
html.px-app body.journey-app #settle-view #jto-records > .jto-actions > [data-jto="quick-expense"] { grid-column: 1 / -1; margin: 0; }
html.px-app body.journey-app #settle-view #jto-records > .jto-actions > [data-jto="quick-expense"]::before { content: '+'; font: 800 20px/1 var(--px-font); margin-top: -2px; }
html.px-app body.journey-app #settle-view #jto-records .jto-sub { margin: 20px 0 4px; font: 750 15.5px/1.3 var(--px-font); color: var(--px-ink); }
html.px-app body.journey-app #settle-view #jto-records > .jto-actions + .jto-hint { margin-top: 14px; text-align: center; }
html.px-app body.journey-app #settle-view .jto-record { margin: 0; padding: 14px 0; border: 0; border-top: 1px solid var(--px-line); }
html.px-app body.journey-app #settle-view .jto-actions + .jto-record, html.px-app body.journey-app #settle-view .jto-hint + .jto-record { margin-top: 14px; }
html.px-app body.journey-app #settle-view .jto-record > p:first-child { margin: 0; font: 600 12.5px/1.4 var(--px-font); color: var(--px-ink3); }
html.px-app body.journey-app #settle-view .jto-record h3 { margin: 4px 0 0; font: 780 16px/1.35 var(--px-font); letter-spacing: -.02em; color: var(--px-ink); font-variant-numeric: tabular-nums; }
html.px-app body.journey-app #settle-view .jto-record > p { margin: 4px 0 0; font: 500 13px/1.5 var(--px-font); color: var(--px-ink2); }
html.px-app body.journey-app #settle-view .jto-record .jto-verbatim { font-size: 14px; color: var(--px-ink); }
html.px-app body.journey-app #settle-view .jto-record .jto-actions { display: flex; flex-wrap: wrap; gap: 6px; margin: 10px 0 0; }
html.px-app body.journey-app #settle-view .jto-record .jto-actions > button {
  min-height: 44px; padding: 0 14px; border: 0; border-radius: 13px; background: #F0EEE8; color: var(--px-ink); font: 700 13.5px/1 var(--px-font);
}
html.px-app body.journey-app #settle-view .jto-record .jto-actions > [data-jto="edit-record"] { background: var(--px-teal-soft); color: var(--px-teal); }
html.px-app body.journey-app #settle-view .jto-record .jto-actions > [data-jto="receipt"] { background: var(--px-amber-soft); color: var(--px-amber); }
html.px-app body.journey-app #settle-view .jto-record[data-jto-device-only="true"] > p:first-child { color: var(--px-amber); }
html.px-app body.journey-app #settle-view #jto-records > [data-jto="more-records"] {
  width: 100%; min-height: 48px; margin-top: 8px; border: 0; border-radius: 14px; background: #F0EEE8; color: var(--px-ink); font: 700 14px/1 var(--px-font);
}

/* ---------- 짐 (pack): progress meter + per-person cards ---------- */
html.px-app body.journey-app #pack-view .pack-signature { display: grid; gap: 10px; margin: 0; padding: 0; border: 0; background: none; box-shadow: none; }
html.px-app body.journey-app #pack-view .pack-checkin-banner {
  display: flex; flex-wrap: wrap; align-items: center; gap: 8px 10px; margin: 0; padding: 14px 16px; border: 1px solid var(--px-line);
  border-radius: 20px; background: var(--px-card); box-shadow: var(--px-shadow); font: 550 13.5px/1.5 var(--px-font); color: var(--px-ink2);
}
html.px-app body.journey-app #pack-view .checkin-pill {
  display: inline-flex; align-items: center; height: 26px; padding: 0 10px; border-radius: 13px; background: var(--px-teal-soft);
  color: var(--px-teal); font: 750 12px/1 var(--px-font); white-space: nowrap;
}
html.px-app body.journey-app #pack-view .pack-checkin-banner strong { color: var(--px-ink); font-weight: 700; }
html.px-app body.journey-app #pack-view .checkin-go:not([hidden]) { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; flex-basis: 100%; }
html.px-app body.journey-app #pack-view .checkin-go a {
  display: inline-flex; align-items: center; min-height: 44px; padding: 0 14px; border-radius: 14px; background: var(--px-teal-soft);
  color: var(--px-teal); font: 700 13.5px/1 var(--px-font); text-decoration: none;
}
html.px-app body.journey-app #pack-view .checkin-go .checkin-link { background: var(--px-teal); color: #fff; }
html.px-app body.journey-app #pack-view .checkin-src { font: 500 12px/1.3 var(--px-font); color: var(--px-ink3); }
html.px-app body.journey-app #pack-view .pack-meters {
  display: grid; grid-template-columns: 1fr; gap: 14px; margin: 0; padding: 16px 18px 18px; border: 1px solid var(--px-line);
  border-radius: 24px; background: var(--px-card); box-shadow: var(--px-shadow);
}
html.px-app body.journey-app #pack-view .pack-meter-card { margin: 0; padding: 0; border: 0; border-radius: 0; background: none; box-shadow: none; }
html.px-app body.journey-app #pack-view .m-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
html.px-app body.journey-app #pack-view .m-name { display: inline-flex; align-items: center; gap: 8px; font: 750 15px/1.2 var(--px-font); color: var(--px-ink); }
html.px-app body.journey-app #pack-view .pdot { width: 10px; height: 10px; margin: 0; border-radius: 5px; background: var(--px-feno); }
html.px-app body.journey-app #pack-view .pdot.tangerine { background: var(--px-mona); }
html.px-app body.journey-app #pack-view .m-stat { font: 800 16px/1 var(--px-font); letter-spacing: -.02em; color: var(--px-ink); font-variant-numeric: tabular-nums; }
html.px-app body.journey-app #pack-view .m-track { height: 10px; margin-top: 10px; overflow: hidden; border-radius: 5px; background: var(--px-track); }
html.px-app body.journey-app #pack-view .m-fill { height: 100%; border-radius: 5px; background: var(--px-feno); transition: width .7s var(--px-spring); }
html.px-app body.journey-app #pack-view .m-fill.tangerine { background: var(--px-mona); }

html.px-app body.journey-app #pack-view .pair { display: grid; grid-template-columns: 1fr; gap: 12px; margin: 0; }
html.px-app body.journey-app #pack-view .person {
  margin: 0; padding: 4px 16px 6px; border: 1px solid var(--px-line); border-radius: 24px; background: var(--px-card); box-shadow: var(--px-shadow);
}
html.px-app body.journey-app #pack-view .person .who {
  display: flex; align-items: center; gap: 10px; min-height: 60px; margin: 0; padding: 10px 0; border: 0; border-bottom: 1px solid var(--px-line);
  font: 780 17px/1.2 var(--px-font); letter-spacing: -.02em; color: var(--px-ink);
}
html.px-app body.journey-app #pack-view .person .who .dot {
  display: grid; place-items: center; width: 34px; height: 34px; margin: 0; border-radius: 17px; background: var(--px-feno-soft);
  color: var(--px-feno); font: 800 14px/1 var(--px-font);
}
html.px-app body.journey-app #pack-view .person.mona .who .dot { background: var(--px-mona-soft); color: var(--px-mona); }
html.px-app body.journey-app #pack-view .person .tally {
  margin-left: auto; display: inline-flex; align-items: center; height: 28px; padding: 0 11px; border-radius: 14px;
  background: var(--px-feno-soft); color: var(--px-feno); font: 800 13.5px/1 var(--px-font); font-variant-numeric: tabular-nums;
}
html.px-app body.journey-app #pack-view .person.mona .tally { background: var(--px-mona-soft); color: var(--px-mona); }
html.px-app body.journey-app #pack-view .person ul { margin: 0; padding: 0; list-style: none; }
html.px-app body.journey-app #pack-view .person li {
  position: relative; display: flex; align-items: center; gap: 12px; min-height: 54px; margin: 0; padding: 10px 0 10px 40px; border: 0; border-top: 1px solid var(--px-line);
  background: none; color: var(--px-ink); font: 600 15px/1.4 var(--px-font); letter-spacing: -.01em; cursor: pointer;
  text-decoration: none; transition: color .2s;
}
html.px-app body.journey-app #pack-view .person li:first-child { border-top: 0; }
html.px-app body.journey-app #pack-view .person li:focus-visible { outline: 2px solid var(--px-teal); outline-offset: -2px; border-radius: 10px; }
html.px-app body.journey-app #pack-view .person li .chk {
  position: absolute; left: 0; top: 50%; translate: 0 -50%; display: grid; place-items: center; width: 26px; height: 26px; margin: 0; border: 2px solid #CBC6BB; border-radius: 13px;
  background: #fff; color: #fff; font: 850 13px/1 var(--px-font); transition: transform .35s var(--px-spring), background-color .2s, border-color .2s;
}
html.px-app body.journey-app #pack-view .person li:active .chk { transform: scale(.86); }
html.px-app body.journey-app #pack-view .person li.ok { color: var(--px-ink3); text-decoration: line-through; text-decoration-color: #C9C4BA; }
html.px-app body.journey-app #pack-view .person li.ok .chk { background: var(--px-feno); border-color: var(--px-feno); color: #fff; }
html.px-app body.journey-app #pack-view .person.mona li.ok .chk { background: var(--px-mona); border-color: var(--px-mona); }
html.px-app body.journey-app #pack-view .person li.ok .chk::after { content: "✓"; }
html.px-app body.journey-app #pack-view .packnote {
  margin: 12px 0 0; padding: 12px 14px; border: 1px solid var(--px-line); border-radius: 18px; background: rgba(255,255,255,.55);
  font: 500 13px/1.55 var(--px-font); color: var(--px-ink2);
}
html.px-app body.journey-app #pack-view .packnote strong { color: var(--px-ink); font-weight: 700; }
@media (min-width: 600px) { html.px-app body.journey-app #pack-view .pair { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* ---------- 예약 안내 (ledger) ---------- */
html.px-app body.journey-app #ledger-view .prep-signature {
  display: grid; gap: 14px; margin: 0; padding: 18px; border: 1px solid var(--px-line); border-radius: 24px; background: var(--px-card); box-shadow: var(--px-shadow);
}
html.px-app body.journey-app #ledger-view .prep-dday-row { display: flex; align-items: center; gap: 14px; margin: 0; padding: 0; }
html.px-app body.journey-app #ledger-view .prep-dday-serif {
  flex: none; font: 800 34px/1 var(--px-font); letter-spacing: -.045em; color: var(--px-ink); white-space: nowrap; font-variant-numeric: tabular-nums;
}
html.px-app body.journey-app #ledger-view .prep-dday-meta { display: grid; gap: 3px; min-width: 0; }
html.px-app body.journey-app #ledger-view .dday-tit { font: 750 14.5px/1.3 var(--px-font); color: var(--px-ink); }
html.px-app body.journey-app #ledger-view .dday-sub { font: 550 12.5px/1.4 var(--px-font); color: var(--px-ink2); }
html.px-app body.journey-app #ledger-view .prep-tangerine-block { margin: 0; padding: 14px 16px 6px; border: 0; border-radius: 18px; background: var(--px-amber-soft); }
html.px-app body.journey-app #ledger-view .t-kicker { font: 750 12.5px/1.4 var(--px-font); color: var(--px-amber); letter-spacing: 0; }
html.px-app body.journey-app #ledger-view .t-desc { margin-top: 6px; font: 550 13.5px/1.55 var(--px-font); color: var(--px-ink); }
html.px-app body.journey-app #ledger-view .t-desc .cd-left { font: 800 15px/1.4 var(--px-font); color: var(--px-amber); }
html.px-app body.journey-app #ledger-view .prep-repurchase { margin: 8px 0 0; border-top: 1px solid rgba(156,90,18,.16); }
html.px-app body.journey-app #ledger-view .prep-repurchase > summary {
  display: flex; align-items: center; gap: 10px; min-height: 48px; list-style: none; cursor: pointer; font: 700 13.5px/1.35 var(--px-font); color: var(--px-amber);
}
html.px-app body.journey-app #ledger-view .prep-repurchase > summary::-webkit-details-marker { display: none; }
html.px-app body.journey-app #ledger-view .prep-repurchase > summary::after {
  content: ''; flex: none; width: 8px; height: 8px; margin: -4px 4px 0 auto; border: solid currentColor; border-width: 0 2px 2px 0;
  transform: rotate(45deg); font-size: 0; transition: transform .35s var(--px-spring);
}
html.px-app body.journey-app #ledger-view .prep-repurchase[open] > summary::after { transform: rotate(-135deg); margin-top: 4px; }
html.px-app body.journey-app #ledger-view .repurchase-body { padding: 0 0 10px; font: 500 13px/1.6 var(--px-font); color: var(--px-ink2); }
html.px-app body.journey-app #ledger-view .prep-home-actions { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin: 12px 0 0; padding: 0; border: 0; }
html.px-app body.journey-app #ledger-view .prep-home-action {
  display: flex; flex-direction: column; align-items: flex-start; justify-content: center; gap: 3px; min-width: 0; min-height: 72px; margin: 0;
  padding: 12px; border: 1px solid var(--px-line); border-radius: 18px; background: var(--px-card); box-shadow: var(--px-shadow);
  color: var(--px-ink); font: 750 14.5px/1.25 var(--px-font); text-align: left; transition: transform .4s var(--px-spring);
}
html.px-app body.journey-app #ledger-view .prep-home-action:active { transform: scale(.96); }
html.px-app body.journey-app #ledger-view .prep-home-action small { display: block; margin: 0; font: 550 12px/1.35 var(--px-font); color: var(--px-ink2); }
html.px-app body.journey-app #ledger-view .face-header { margin: 0; padding: 0; border: 0; }
html.px-app body.journey-app #ledger-view .entry {
  position: relative; margin: 0 0 10px; padding: 16px; border: 1px solid var(--px-line); border-radius: 22px; background: var(--px-card); box-shadow: var(--px-shadow);
}
html.px-app body.journey-app #ledger-view .entry.dday { background: linear-gradient(180deg, #EEF6F3 0%, #FFFFFF 64px); border-color: rgba(15,74,69,.22); }
html.px-app body.journey-app #ledger-view .entry .top { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; margin: 0; }
html.px-app body.journey-app #ledger-view .entry h3 { flex: 1; min-width: 0; margin: 2px 0 0; font: 780 16.5px/1.35 var(--px-font); letter-spacing: -.025em; color: var(--px-ink); }
html.px-app body.journey-app #ledger-view .entry .due {
  flex: none; display: inline-flex; align-items: center; max-width: 52%; min-height: 26px; margin: 0; padding: 4px 10px; border: 0; border-radius: 13px;
  background: #F1EFE9; color: var(--px-ink2); font: 700 12px/1.3 var(--px-font); text-align: right; white-space: normal;
}
html.px-app body.journey-app #ledger-view .entry .due[data-countdown] { background: var(--px-amber-soft); color: var(--px-amber); }
html.px-app body.journey-app #ledger-view .entry .due[data-state="expired"] { background: #F1EFE9; color: var(--px-ink2); }
html.px-app body.journey-app #ledger-view .entry .due::before { display: none; }
html.px-app body.journey-app #ledger-view .entry p { margin: 8px 0 0; font: 500 14px/1.6 var(--px-font); color: var(--px-ink2); }
html.px-app body.journey-app #ledger-view .entry p strong { color: var(--px-ink); font-weight: 700; }
html.px-app body.journey-app #ledger-view .entry a.go {
  display: inline-flex; align-items: center; min-height: 44px; margin: 12px 6px 0 0; padding: 0 16px; border: 0; border-radius: 14px;
  background: var(--px-teal); color: #fff; font: 700 14px/1.2 var(--px-font); text-decoration: none; box-shadow: none;
}
html.px-app body.journey-app #ledger-view .entry a.sn-link {
  display: inline-flex; align-items: center; min-height: 44px; margin: 12px 0 0; padding: 0 16px; border-radius: 14px;
  background: var(--px-teal-soft); color: var(--px-teal); font: 700 14px/1.2 var(--px-font); text-decoration: none;
}
html.px-app body.journey-app #ledger-view .entry a.sn-link::after { content: none; }
html.px-app body.journey-app #ledger-view .stay-shortcut-row { margin: 10px 0 0; padding: 0; border: 0; }
html.px-app body.journey-app #ledger-view .stay-shortcut {
  display: flex; align-items: center; width: 100%; min-height: 48px; margin: 0; padding: 10px 14px; border: 1px solid var(--px-line); border-radius: 16px;
  background: #fff; color: var(--px-teal); font: 700 14px/1.4 var(--px-font); text-align: left; box-shadow: none;
}

/* ---------- trip-ops sheets (visit, quick expense, record, closeout, weather, backup) ---------- */
html.px-app body.journey-app dialog.jto-dialog {
  width: 100%; max-width: 100%; max-height: min(90dvh, 780px); margin: auto 0 0; padding: 0 20px calc(22px + env(safe-area-inset-bottom));
  overflow: auto; overscroll-behavior: contain; border: 0; border-radius: 28px 28px 0 0; background: var(--px-card); color: var(--px-ink);
  font-family: var(--px-font); word-break: keep-all; overflow-wrap: anywhere; -webkit-font-smoothing: antialiased; font-feature-settings: "tnum" 1;
  box-shadow: 0 -14px 44px -10px rgba(18,32,28,.3);
}
html.px-app body.journey-app dialog.jto-dialog *, html.px-app body.journey-app dialog.jto-dialog *::before, html.px-app body.journey-app dialog.jto-dialog *::after { box-sizing: border-box; }
html.px-app body.journey-app dialog.jto-dialog::backdrop { background: rgba(14,22,20,.4); -webkit-backdrop-filter: blur(2px); backdrop-filter: blur(2px); }
@media (prefers-reduced-motion: no-preference) {
  html.px-app body.journey-app dialog.jto-dialog[open] { animation: jto-sheet-up .55s var(--px-spring) both; }
  html.px-app body.journey-app dialog.jto-dialog[open]::backdrop { animation: jto-fade .3s ease both; }
}
@keyframes jto-sheet-up { from { transform: translateY(40px); opacity: 0; } to { transform: none; opacity: 1; } }
@keyframes jto-fade { from { opacity: 0; } to { opacity: 1; } }
@media (min-width: 561px) {
  html.px-app body.journey-app dialog.jto-dialog { width: min(540px, calc(100vw - 32px)); margin: auto; border-radius: 28px; padding-bottom: 22px; max-height: min(86dvh, 760px); }
}
html.px-app body.journey-app dialog.jto-dialog > .jp-dialog-head {
  position: sticky; top: 0; z-index: 2; display: flex; align-items: center; justify-content: space-between; gap: 12px;
  margin: 0 -20px 4px; padding: 24px 20px 12px; background: rgba(255,255,255,.94);
  -webkit-backdrop-filter: blur(16px) saturate(160%); backdrop-filter: blur(16px) saturate(160%);
}
html.px-app body.journey-app dialog.jto-dialog > .jp-dialog-head::before {
  content: ''; position: absolute; top: 9px; left: 50%; width: 40px; height: 5px; margin-left: -20px; border-radius: 3px; background: #D6D2C9;
}
html.px-app body.journey-app dialog.jto-dialog #jto-title { margin: 0; font: 800 21px/1.25 var(--px-font); letter-spacing: -.035em; color: var(--px-ink); }
html.px-app body.journey-app dialog.jto-dialog [data-jto="close"] {
  flex: none; min-width: 44px; min-height: 44px; margin: 0; padding: 0 14px; border: 0; border-radius: 22px; background: #F0EEE8;
  color: var(--px-ink2); font: 700 14px/1 var(--px-font);
}
html.px-app body.journey-app dialog.jto-dialog p { margin: 8px 0 0; font: 550 14.5px/1.55 var(--px-font); color: var(--px-ink); }
html.px-app body.journey-app dialog.jto-dialog .jto-hint { margin: 8px 0 0; font: 500 13px/1.55 var(--px-font); color: var(--px-ink2); }
html.px-app body.journey-app dialog.jto-dialog h3 { margin: 22px 0 6px; font: 780 16.5px/1.3 var(--px-font); letter-spacing: -.02em; color: var(--px-ink); }
html.px-app body.journey-app dialog.jto-dialog h4 { margin: 14px 0 4px; font: 750 14.5px/1.3 var(--px-font); color: var(--px-ink); }
html.px-app body.journey-app dialog.jto-dialog .jto-actions { display: flex; flex-wrap: wrap; gap: 8px; margin: 14px 0 0; }
html.px-app body.journey-app dialog.jto-dialog :where([data-jto]:not([data-jto="close"])) {
  min-height: 48px; padding: 0 16px; border: 0; border-radius: 14px; background: #F0EEE8; color: var(--px-ink);
  font: 700 14.5px/1.2 var(--px-font); text-align: center; transition: transform .4s var(--px-spring), background-color .2s, color .2s;
}
html.px-app body.journey-app dialog.jto-dialog :where([data-jto]:not([data-jto="close"])):active { transform: scale(.96); }
html.px-app body.journey-app dialog.jto-dialog [data-jto][aria-pressed="true"] { background: var(--px-teal); color: #fff; }
html.px-app body.journey-app dialog.jto-dialog [data-jto]:disabled { opacity: .42; cursor: not-allowed; }
html.px-app body.journey-app dialog.jto-dialog :is([data-jto="save-record"], [data-jto="save-quick-expense"], [data-jto="save-activity"], [data-jto="copy-closeout"], [data-jto="replace"], [data-jto="restore-recovery"], [data-jto="export-backup"]) {
  flex: 1 1 100%; min-height: 54px; background: var(--px-teal); color: #fff; font-size: 16px; font-weight: 750; box-shadow: 0 12px 24px -14px rgba(15,74,69,.7);
}
html.px-app body.journey-app dialog.jto-dialog [data-jto="undo-op"] { margin-left: -4px; padding: 0 4px; background: none; color: var(--px-ink2); font-weight: 650; text-decoration: underline; text-underline-offset: 3px; text-decoration-color: #CFCAC0; }
html.px-app body.journey-app dialog.jto-dialog [data-jto="delete-record"] { background: var(--px-red-soft); color: var(--px-red); }
html.px-app body.journey-app dialog.jto-dialog [data-jto-feedback] { margin: 12px 0 0; font: 650 13.5px/1.5 var(--px-font); color: var(--px-teal); }
html.px-app body.journey-app dialog.jto-dialog [data-jto-feedback]:empty { display: none; }
html.px-app body.journey-app dialog.jto-dialog .jto-settle {
  margin: 12px 0 0; padding: 12px 14px; border: 0; border-radius: 16px; background: var(--px-teal-soft); color: var(--px-teal); font: 750 15px/1.45 var(--px-font);
}
html.px-app body.journey-app dialog.jto-dialog :is(.jto-closeout-text, .jto-record pre) {
  max-height: 260px; margin: 12px 0 0; padding: 12px 14px; overflow: auto; border-radius: 14px; background: #F6F4EF;
  font: 500 12.5px/1.55 ui-monospace, SFMono-Regular, Menlo, monospace; color: var(--px-ink); white-space: pre-wrap;
}

/* form fields */
html.px-app body.journey-app dialog.jto-dialog .jto-form { display: grid; gap: 14px; margin: 16px 0 0; }
html.px-app body.journey-app dialog.jto-dialog :is(.jto-form label, label.jto-file) { position: relative; display: grid; gap: 7px; margin: 0; font: 700 13px/1.3 var(--px-font); color: var(--px-ink2); }
html.px-app body.journey-app dialog.jto-dialog :is(.jto-form input, .jto-form select, .jto-form textarea, .jto-file input) {
  width: 100%; min-width: 0; min-height: 52px; margin: 0; padding: 0 16px; border: 1.5px solid transparent; border-radius: 14px;
  background: #F4F2ED; color: var(--px-ink); font: 600 16px/1.3 var(--px-font); outline: none; transition: border-color .2s, background-color .2s, box-shadow .2s;
}
html.px-app body.journey-app dialog.jto-dialog .jto-form select {
  -webkit-appearance: none; appearance: none; padding-right: 40px;
  background-image: linear-gradient(45deg, transparent 50%, var(--px-ink3) 50%), linear-gradient(135deg, var(--px-ink3) 50%, transparent 50%);
  background-position: calc(100% - 22px) 50%, calc(100% - 16px) 50%; background-size: 6px 6px; background-repeat: no-repeat;
}
html.px-app body.journey-app dialog.jto-dialog .jto-form textarea { min-height: 130px; padding: 14px 16px; line-height: 1.55; resize: vertical; }
html.px-app body.journey-app dialog.jto-dialog label.jto-file { margin-top: 20px; }
html.px-app body.journey-app dialog.jto-dialog .jto-file input { padding: 8px 10px; font-size: 14px; line-height: 34px; }
html.px-app body.journey-app dialog.jto-dialog .jto-file input::file-selector-button {
  height: 36px; margin-right: 10px; padding: 0 14px; border: 0; border-radius: 10px; background: #fff; color: var(--px-teal);
  font: 700 13.5px/1 var(--px-font); box-shadow: 0 1px 2px rgba(18,24,21,.08);
}
html.px-app body.journey-app dialog.jto-dialog :is(.jto-form input, .jto-form select, .jto-form textarea):focus {
  border-color: var(--px-teal); background-color: #fff; box-shadow: 0 0 0 4px rgba(15,74,69,.1);
}
html.px-app body.journey-app dialog.jto-dialog :is(.jto-form input, .jto-form textarea)::placeholder { color: #ADA89E; font-weight: 550; }

/* quick expense: amount first, one tap for who paid, category grid */
html.px-app body.journey-app dialog.jto-dialog .jto-quick label:has(> [name="qamount"]) { font-size: 13px; }
html.px-app body.journey-app dialog.jto-dialog .jto-quick [name="qamount"] {
  min-height: 76px; padding: 0 48px 0 18px; border-radius: 20px; font: 800 34px/1 var(--px-font); letter-spacing: -.04em; text-align: right;
  font-variant-numeric: tabular-nums;
}
html.px-app body.journey-app dialog.jto-dialog .jto-quick [name="qamount"]::placeholder { font-size: 28px; font-weight: 750; color: #C4BFB5; }
html.px-app body.journey-app dialog.jto-dialog .jto-quick label:has(> [name="qamount"])::after {
  content: '원'; position: absolute; right: 18px; bottom: 25px; font: 800 22px/1 var(--px-font); color: var(--px-ink3); pointer-events: none;
}
html.px-app body.journey-app dialog.jto-dialog .jto-quick-row { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin: 18px 0 0; }
html.px-app body.journey-app dialog.jto-dialog .jto-quick-row:has([data-jto="qpayer"]) { grid-template-columns: repeat(2, minmax(0, 1fr)); }
html.px-app body.journey-app dialog.jto-dialog .jto-quick-row > .jto-hint { grid-column: 1 / -1; margin: 0 0 -2px; font: 700 13px/1.3 var(--px-font); color: var(--px-ink2); }
html.px-app body.journey-app dialog.jto-dialog .jto-quick-row > [data-jto] { min-width: 0; padding: 0 8px; background: #F4F2ED; }
html.px-app body.journey-app dialog.jto-dialog [data-jto="qpayer"] { min-height: 54px; font-size: 16px; font-weight: 750; }
html.px-app body.journey-app dialog.jto-dialog [data-jto="qpayer"][data-payer="feno"][aria-pressed="true"] { background: var(--px-feno); color: #fff; }
html.px-app body.journey-app dialog.jto-dialog [data-jto="qpayer"][data-payer="mona"][aria-pressed="true"] { background: var(--px-mona); color: #fff; }
html.px-app body.journey-app dialog.jto-dialog [data-jto-quick-summary] { margin: 14px 0 0; padding: 10px 12px; border-radius: 14px; background: #F6F4EF; text-align: center; font-weight: 650; color: var(--px-ink2); }

/* visit: progress as a segmented control, actions as a 2-up grid */
html.px-app body.journey-app dialog.jto-dialog .jto-actions:has(> [data-jto="progress"]) {
  display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 3px; padding: 3px; border-radius: 16px; background: #EFECE5;
}
html.px-app body.journey-app dialog.jto-dialog [data-jto="progress"] { min-width: 0; min-height: 46px; padding: 0 4px; border-radius: 13px; background: transparent; color: var(--px-ink2); font-size: 13.5px; }
html.px-app body.journey-app dialog.jto-dialog [data-jto="progress"][aria-pressed="true"] {
  background: #fff; color: var(--px-teal); font-weight: 800; box-shadow: 0 1px 2px rgba(18,24,21,.06), 0 6px 14px -6px rgba(18,40,34,.28);
}
html.px-app body.journey-app dialog.jto-dialog .jto-actions:has(> [data-jto="expense"]):has(> [data-jto="alternative"]) { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
html.px-app body.journey-app dialog.jto-dialog .jto-actions:has(> [data-jto="alternative"]) > [data-jto] { min-width: 0; min-height: 52px; padding: 6px 10px; }
html.px-app body.journey-app dialog.jto-dialog .jto-actions:has(> [data-jto="alternative"]) > [data-jto="expense"] { background: var(--px-teal-soft); color: var(--px-teal); }
html.px-app body.journey-app dialog.jto-dialog > p:first-of-type:has(+ .jto-actions > [data-jto="progress"]) { margin: 0 0 12px; font: 650 13.5px/1.4 var(--px-font); color: var(--px-ink2); }

/* weather: indoor alternatives as rows */
html.px-app body.journey-app dialog.jto-dialog p:has(> [data-jto="plan-alternative"]) {
  display: flex; align-items: center; justify-content: space-between; gap: 10px; margin: 0; padding: 8px 0; border-top: 1px solid var(--px-line); font-weight: 650;
}
html.px-app body.journey-app dialog.jto-dialog [data-jto="plan-alternative"] { flex: none; min-height: 44px; background: var(--px-teal-soft); color: var(--px-teal); font-size: 13.5px; }
html.px-app body.journey-app dialog.jto-dialog [data-weather-date] { margin: 0; font: 700 12.5px/1.3 var(--px-font); color: var(--px-ink3); }
html.px-app body.journey-app dialog.jto-dialog [data-weather-date] + p { margin-top: 6px; font: 780 18px/1.35 var(--px-font); letter-spacing: -.02em; }

/* closeout: the ledger block reads as a separate box */
html.px-app body.journey-app dialog.jto-dialog [data-jto-closeout-cats] { padding: 10px 12px; border-radius: 14px; background: #F6F4EF; font-size: 13.5px; }
html.px-app body.journey-app dialog.jto-dialog .jto-plan-day h4 { margin-top: 12px; }
html.px-app body.journey-app dialog.jto-dialog .jto-plan-day ol, html.px-app body.journey-app dialog.jto-dialog .jto-proposal ol { margin: 6px 0 0; padding-left: 20px; font: 550 13.5px/1.65 var(--px-font); }
html.px-app body.journey-app dialog.jto-dialog :is(.jto-proposal, .jto-record) { padding: 14px 0; border-top: 1px solid var(--px-line); }

/* trip-ops toast */
html.px-app body.journey-app .jto-message {
  left: 16px; right: 16px; bottom: calc(92px + env(safe-area-inset-bottom)); max-width: 520px; padding: 12px 16px; border: 0; border-radius: 16px;
  background: rgba(18,24,21,.9); color: #fff; font: 600 13.5px/1.45 var(--px-font); box-shadow: 0 12px 30px -10px rgba(18,24,21,.45);
  -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px);
}

@media (min-width: 761px) {
  html.px-app body.journey-app :is(#settle-view, #pack-view, #ledger-view) { width: min(100%, 600px); margin: 0 auto; }
}
@media (prefers-reduced-motion: reduce) {
  html.px-app body.journey-app :is(#journey-tools, #settle-view, #pack-view, #ledger-view, dialog.jto-dialog) * { transition: none !important; }
}

/* Closeout sheet: booking and to-pay lines (title · amount, payer or date below). */
html.px-app body.journey-app dialog.jto-dialog .jto-lines { list-style: none; margin: 6px 0 14px; padding: 0; display: grid; gap: 2px; }
html.px-app body.journey-app dialog.jto-dialog .jto-lines li { display: grid; grid-template-columns: minmax(0, 1fr) auto; column-gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--px-line, rgba(18,24,21,.07)); }
html.px-app body.journey-app dialog.jto-dialog .jto-lines li:last-child { border-bottom: 0; }
html.px-app body.journey-app dialog.jto-dialog .jto-lines span { font-size: 14px; line-height: 1.4; color: var(--px-ink, #121815); }
html.px-app body.journey-app dialog.jto-dialog .jto-lines b { font-size: 14.5px; font-weight: 750; font-variant-numeric: tabular-nums; color: var(--px-ink, #121815); text-align: right; }
html.px-app body.journey-app dialog.jto-dialog .jto-lines small { grid-column: 1 / -1; font-size: 12px; color: var(--px-ink3, #858D89); margin-top: 2px; }

/* Split chooser in the close-out sheet. */
html.px-app body.journey-app dialog.jto-dialog .jto-split { margin: 14px 0 18px; padding: 14px; border-radius: 18px; background: #F7F5F0; }
html.px-app body.journey-app dialog.jto-dialog .jto-split h3 { margin: 0 0 10px; }
html.px-app body.journey-app dialog.jto-dialog .jto-seg { display: grid; grid-template-columns: repeat(3, 1fr); gap: 4px; padding: 4px; border-radius: 14px; background: #ECE8E0; }
html.px-app body.journey-app dialog.jto-dialog .jto-seg button,
html.px-app body.journey-app dialog.jto-dialog .jto-ratio-presets button,
html.px-app body.journey-app dialog.jto-dialog .jto-who button { min-height: 40px; border: 0; border-radius: 11px; background: transparent; color: var(--px-ink2, #4F5854); font: 700 14px/1 var(--px-font, inherit); cursor: pointer; }
html.px-app body.journey-app dialog.jto-dialog .jto-seg button[aria-pressed="true"],
html.px-app body.journey-app dialog.jto-dialog .jto-ratio-presets button[aria-pressed="true"],
html.px-app body.journey-app dialog.jto-dialog .jto-who button[aria-pressed="true"] { background: #fff; color: var(--px-teal, #0F4A45); box-shadow: 0 1px 3px rgba(18,24,21,.12); }
html.px-app body.journey-app dialog.jto-dialog .jto-ratio { display: flex; align-items: center; gap: 8px; margin-top: 12px; }
html.px-app body.journey-app dialog.jto-dialog .jto-ratio span { flex: 1; font-size: 15px; color: var(--px-ink, #121815); }
html.px-app body.journey-app dialog.jto-dialog .jto-ratio span b { font-size: 20px; font-variant-numeric: tabular-nums; }
html.px-app body.journey-app dialog.jto-dialog .jto-ratio button { width: 44px; height: 44px; border: 1px solid var(--px-line, rgba(18,24,21,.1)); border-radius: 22px; background: #fff; color: var(--px-ink, #121815); font: 700 20px/1 var(--px-font, inherit); cursor: pointer; }
html.px-app body.journey-app dialog.jto-dialog .jto-ratio-presets { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; margin-top: 8px; }
html.px-app body.journey-app dialog.jto-dialog .jto-ratio-presets button { background: #fff; border: 1px solid var(--px-line, rgba(18,24,21,.08)); }
html.px-app body.journey-app dialog.jto-dialog .jto-split-items li { display: grid; grid-template-columns: 1fr; gap: 8px; }
html.px-app body.journey-app dialog.jto-dialog .jto-split-items li > div:first-child { display: grid; grid-template-columns: minmax(0, 1fr) auto; column-gap: 10px; }
html.px-app body.journey-app dialog.jto-dialog .jto-who { display: grid; grid-template-columns: repeat(3, 1fr); gap: 4px; padding: 3px; border-radius: 12px; background: #ECE8E0; }
html.px-app body.journey-app dialog.jto-dialog .jto-who button { min-height: 36px; font-size: 13px; }
html.px-app body.journey-app dialog.jto-dialog .jto-split-result { margin: 12px 0 0; font-weight: 700; color: var(--px-teal, #0F4A45); }

/* Expected spend card on the cost screen. */
html.px-app body.journey-app #settle-view .jto-forecast { margin: 16px 0 8px; padding: 18px 16px; border-radius: 24px; background: #fff; box-shadow: var(--px-shadow, 0 10px 28px -8px rgba(18,40,34,.16)); border: 1px solid var(--px-line, rgba(18,24,21,.07)); }
html.px-app body.journey-app #settle-view .jto-fc-head { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
html.px-app body.journey-app #settle-view .jto-fc-head span { font-size: 14px; color: var(--px-ink2, #4F5854); font-weight: 650; }
html.px-app body.journey-app #settle-view .jto-fc-head b { font-size: 24px; font-weight: 800; letter-spacing: -.02em; font-variant-numeric: tabular-nums; color: var(--px-ink, #121815); }
html.px-app body.journey-app #settle-view .jto-fc-parts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; margin: 12px 0 6px; }
html.px-app body.journey-app #settle-view .jto-fc-parts div { padding: 10px; border-radius: 14px; background: #F7F5F0; display: grid; gap: 4px; min-width: 0; }
html.px-app body.journey-app #settle-view .jto-fc-parts span { font-size: 12px; color: var(--px-ink3, #858D89); }
html.px-app body.journey-app #settle-view .jto-fc-parts b { font-size: 13.5px; letter-spacing: -.01em; font-variant-numeric: tabular-nums; white-space: nowrap; }
html.px-app body.journey-app #settle-view .jto-fc-days { list-style: none; margin: 10px 0 0; padding: 0; display: grid; gap: 12px; }
html.px-app body.journey-app #settle-view .jto-fc-day { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; padding-bottom: 6px; border-bottom: 1px solid var(--px-line, rgba(18,24,21,.07)); }
html.px-app body.journey-app #settle-view .jto-fc-day b { font-size: 15px; }
html.px-app body.journey-app #settle-view .jto-fc-day span { font-size: 13.5px; color: var(--px-ink2, #4F5854); font-variant-numeric: tabular-nums; }
html.px-app body.journey-app #settle-view .jto-fc-days ul { list-style: none; margin: 6px 0 0; padding: 0; display: grid; gap: 6px; }
html.px-app body.journey-app #settle-view .jto-fc-days ul li { display: grid; grid-template-columns: minmax(0, 1fr) auto; column-gap: 10px; }
html.px-app body.journey-app #settle-view .jto-fc-days ul li span { font-size: 14px; color: var(--px-ink, #121815); }
html.px-app body.journey-app #settle-view .jto-fc-days ul li.slot span { color: var(--px-amber, #9C5A12); }
html.px-app body.journey-app #settle-view .jto-fc-days ul li b { font-size: 14px; font-variant-numeric: tabular-nums; }
html.px-app body.journey-app #settle-view .jto-fc-days ul li small { grid-column: 1 / -1; font-size: 12px; color: var(--px-ink3, #858D89); line-height: 1.4; }

/* Design v2 skin for the trip assistant (여행 도우미): the launcher, the chat surface and its
   review cards in the lifecycle-home language (tokens from jeju_phase_home.css). Light theme.
   ID-level selectors so the app-wide `body.journey-app button { color: inherit }` never wins. */

/* ---------- launcher ---------- */
html.px-app body.journey-app .jc-quick {
  width: 56px; height: 56px; border: 0; background: var(--px-teal); color: #fff;
  box-shadow: 0 14px 30px -12px rgba(15,74,69,.7), inset 0 1px 0 rgba(255,255,255,.18);
  transition: transform .45s var(--px-spring), background-color .2s;
}
html.px-app body.journey-app .jc-quick:active { transform: scale(.92); }
html.px-app body.journey-app .jc-quick[aria-expanded="true"] { background: #0B3834; }
html.px-app .jc-quick-options {
  width: 224px; padding: 6px; border: 1px solid rgba(255,255,255,.8); border-radius: 24px;
  background: rgba(255,255,255,.94); -webkit-backdrop-filter: blur(22px) saturate(180%); backdrop-filter: blur(22px) saturate(180%);
  box-shadow: 0 22px 44px -16px rgba(18,32,28,.38), 0 1px 0 rgba(18,24,21,.04); font-family: var(--px-font);
}
@media (prefers-reduced-motion: no-preference) {
  html.px-app .jc-quick-options:not([hidden]) { animation: jc-pop .42s var(--px-spring) both; transform-origin: 85% 100%; }
}
@keyframes jc-pop { from { opacity: 0; transform: translateY(8px) scale(.94); } to { opacity: 1; transform: none; } }
html.px-app body.journey-app .jc-quick-options button {
  min-height: 54px; gap: 12px; padding: 8px 10px; border-radius: 18px; color: var(--px-ink);
  font: 680 15.5px/1.2 var(--px-font); letter-spacing: -.01em;
}
html.px-app body.journey-app .jc-quick-options button:hover, html.px-app body.journey-app .jc-quick-options button:active { background: #F3F1EC; }
html.px-app .jc-quick-options svg { width: 20px; height: 20px; padding: 8px; box-sizing: content-box; border-radius: 13px; background: var(--px-teal-soft); color: var(--px-teal); }

/* ---------- surface ---------- */
html.px-app #jeju-concierge {
  background: var(--px-bg); color: var(--px-ink); border: 0; font-family: var(--px-font);
  -webkit-font-smoothing: antialiased; word-break: keep-all; overflow-wrap: anywhere; font-feature-settings: "tnum" 1;
}
html.px-app #jeju-concierge::backdrop { background: rgba(14,22,20,.4); -webkit-backdrop-filter: blur(2px); backdrop-filter: blur(2px); }
@media (min-width: 761px) {
  html.px-app #jeju-concierge { inset: 0; margin: auto; border-radius: 28px; box-shadow: 0 30px 80px -24px rgba(18,32,28,.5); }
}
@media (max-width: 760px) and (prefers-reduced-motion: no-preference) {
  html.px-app #jeju-concierge[open] { animation: jc-rise .5s var(--px-spring) both; }
}
@keyframes jc-rise { from { opacity: 0; translate: 0 24px; } to { opacity: 1; translate: none; } }
html.px-app #jeju-concierge :is(button, input, select, textarea, a) { font-family: var(--px-font); -webkit-tap-highlight-color: transparent; }
html.px-app #jeju-concierge :focus-visible:not(.jc-textarea) { outline: 3px solid color-mix(in oklab, var(--px-teal) 55%, transparent); outline-offset: 2px; }

/* header: title, one day selector, quiet sound toggle, close */
html.px-app #jeju-concierge .jc-header {
  gap: 6px; padding: 8px 8px 8px 18px; border-bottom: 1px solid var(--px-line);
  background: color-mix(in oklab, var(--px-bg) 86%, #fff);
}
@media (max-width: 760px) { html.px-app #jeju-concierge .jc-header { padding-top: calc(8px + env(safe-area-inset-top)); } }
html.px-app #jeju-concierge .jc-titles h2 { font: 800 19px/1.2 var(--px-font); letter-spacing: -.035em; color: var(--px-ink); }
html.px-app #jeju-concierge .jc-day-wrap { color: var(--px-teal); margin-left: -2px; }
html.px-app #jeju-concierge .jc-day { min-height: 32px; padding: 3px 18px 3px 2px; border-radius: 8px; color: var(--px-teal); font: 700 13.5px/1.2 var(--px-font); }
html.px-app #jeju-concierge .jc-day-wrap svg { right: 0; }
html.px-app #jeju-concierge .jc-header-actions { gap: 2px; }
html.px-app #jeju-concierge .jc-header-actions button { min-height: 44px; border: 0; box-shadow: none; }
html.px-app #jeju-concierge button.jc-new { height: 36px; min-height: 36px; margin-right: 4px; padding: 0 12px; border-radius: 18px; background: var(--px-teal-soft); color: var(--px-teal); font: 700 13.5px/1 var(--px-font); }
html.px-app #jeju-concierge button.jc-sound { display: grid; place-items: center; width: 44px; height: 44px; padding: 0; border-radius: 22px; background: transparent; color: var(--px-ink3); }
html.px-app #jeju-concierge button.jc-sound[aria-pressed="true"] { color: var(--px-teal); background: var(--px-teal-soft); }
html.px-app #jeju-concierge button.jc-close { display: grid; place-items: center; width: 44px; height: 44px; padding: 0; border-radius: 22px; background: #EAE7E0; color: var(--px-ink); }
html.px-app #jeju-concierge .jc-header-actions button:active { transform: scale(.92); }

/* body */
html.px-app #jeju-concierge .jc-body { gap: 12px; padding: 14px 16px 16px; scroll-padding: 12px; }
html.px-app #jeju-concierge .jc-home { gap: 12px; }
html.px-app #jeju-concierge .jc-card { padding: 16px; border-radius: 22px; background: var(--px-card); border: 1px solid var(--px-line); box-shadow: var(--px-shadow); }
html.px-app #jeju-concierge .jc-card-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; min-height: 24px; }
html.px-app #jeju-concierge .jc-eyebrow { font: 750 12.5px/1.2 var(--px-font); color: var(--px-ink3); letter-spacing: .01em; }
html.px-app #jeju-concierge .jc-tag { display: inline-flex; align-items: center; height: 24px; padding: 0 9px; border-radius: 12px; background: #F1EFE9; color: var(--px-ink2); font: 700 12px/1 var(--px-font); white-space: nowrap; }
html.px-app #jeju-concierge .jc-tag-warn { background: var(--px-amber-soft); color: var(--px-amber); }
html.px-app #jeju-concierge .jc-tag-ok { background: var(--px-teal-soft); color: var(--px-teal); height: 22px; }
html.px-app #jeju-concierge .jc-who { display: inline-flex; align-items: center; height: 22px; padding: 0 8px; border-radius: 11px; font: 700 11.5px/1 var(--px-font); background: var(--px-teal-soft); color: var(--px-teal); }
html.px-app #jeju-concierge .jc-who-feno { background: var(--px-feno-soft); color: var(--px-feno); }
html.px-app #jeju-concierge .jc-who-mona { background: var(--px-mona-soft); color: var(--px-mona); }
html.px-app #jeju-concierge .jc-sub { margin: 4px 0 0; font: 500 13.5px/1.45 var(--px-font); color: var(--px-ink2); }
html.px-app #jeju-concierge .jc-meta { display: flex; align-items: center; gap: 6px; margin: 10px 0 0; font: 600 13.5px/1.4 var(--px-font); color: var(--px-ink2); }
html.px-app #jeju-concierge .jc-meta svg { flex: none; color: var(--px-teal); }

/* next */
html.px-app #jeju-concierge .jc-next-title { display: flex; align-items: baseline; flex-wrap: wrap; gap: 4px 10px; margin-top: 10px; }
html.px-app #jeju-concierge .jc-next-title time { font: 800 22px/1.15 var(--px-font); letter-spacing: -.03em; color: var(--px-teal); }
html.px-app #jeju-concierge .jc-next-title b { font: 800 21px/1.25 var(--px-font); letter-spacing: -.035em; color: var(--px-ink); }
html.px-app #jeju-concierge .jc-next-title .jc-tag, html.px-app #jeju-concierge .jc-next-title .jc-who { align-self: center; }
html.px-app #jeju-concierge .jc-points { list-style: none; margin: 10px 0 0; padding: 0; display: grid; }
html.px-app #jeju-concierge .jc-points li { position: relative; padding: 7px 0 7px 18px; border-top: 1px solid var(--px-line); font: 550 14.5px/1.4 var(--px-font); }
html.px-app #jeju-concierge .jc-points li:first-child { border-top: 0; }
html.px-app #jeju-concierge .jc-points li::before { content: ''; position: absolute; left: 2px; top: 14px; width: 6px; height: 6px; border-radius: 3px; background: var(--px-teal); }
html.px-app #jeju-concierge .jc-navs { display: flex; gap: 8px; margin-top: 14px; }
html.px-app #jeju-concierge .jc-btn {
  flex: 1; display: inline-flex; align-items: center; justify-content: center; gap: 7px; min-height: 46px; padding: 0 16px;
  border-radius: 15px; background: #F0EEE8; color: var(--px-ink); font: 720 15px/1 var(--px-font); text-decoration: none;
  transition: transform .4s var(--px-spring);
}
html.px-app #jeju-concierge .jc-btn-primary { background: var(--px-teal); color: #fff; }
html.px-app #jeju-concierge .jc-btn:active { transform: scale(.96); }

/* open slots */
html.px-app #jeju-concierge .jc-rows { display: grid; margin-top: 4px; }
html.px-app #jeju-concierge .jc-row { display: flex; align-items: center; gap: 12px; padding: 12px 0; border-top: 1px solid var(--px-line); }
html.px-app #jeju-concierge .jc-row:first-child { border-top: 0; }
html.px-app #jeju-concierge .jc-row-t { flex: 1; min-width: 0; }
html.px-app #jeju-concierge .jc-row-t b { display: block; font: 700 15px/1.35 var(--px-font); letter-spacing: -.015em; }
html.px-app #jeju-concierge .jc-row-t span { display: block; margin-top: 2px; font: 500 13px/1.4 var(--px-font); color: var(--px-ink2); }
html.px-app #jeju-concierge button.jc-fill {
  flex: none; display: inline-flex; align-items: center; gap: 4px; min-height: 44px; padding: 0 15px 0 12px; border: 0; border-radius: 22px;
  background: var(--px-teal-soft); color: var(--px-teal); font: 750 14px/1 var(--px-font);
}
html.px-app #jeju-concierge .jc-more { margin-top: 6px; font-size: 12.5px; color: var(--px-ink3); }
html.px-app #jeju-concierge button.jc-fill:active { transform: scale(.95); }

/* hotel now */
html.px-app #jeju-concierge .jc-tel { display: inline-flex; align-items: center; gap: 5px; min-height: 32px; padding: 0 11px; border-radius: 16px; background: var(--px-teal-soft); color: var(--px-teal); font: 720 13px/1 var(--px-font); text-decoration: none; white-space: nowrap; }
html.px-app #jeju-concierge .jc-facts { list-style: none; margin: 8px 0 0; padding: 0; display: grid; }
html.px-app #jeju-concierge .jc-facts li { display: grid; grid-template-columns: 8px minmax(0, auto) minmax(0, 1fr); align-items: center; column-gap: 10px; padding: 9px 0; border-top: 1px solid var(--px-line); }
html.px-app #jeju-concierge .jc-facts li:first-child { border-top: 0; }
html.px-app #jeju-concierge .jc-facts b { font: 700 14.5px/1.3 var(--px-font); }
html.px-app #jeju-concierge .jc-facts span { justify-self: end; text-align: right; font: 600 13px/1.35 var(--px-font); color: var(--px-ink2); }
html.px-app #jeju-concierge .jc-led { width: 8px; height: 8px; border-radius: 4px; background: #C3BEB3; }
html.px-app #jeju-concierge .jc-led[data-state="on"] { background: #2FB36E; box-shadow: 0 0 0 3px rgba(47,179,110,.18); }
html.px-app #jeju-concierge .jc-led[data-state="rule"] { background: var(--px-amber); }

/* quick record */
html.px-app #jeju-concierge .jc-quickrow { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
html.px-app #jeju-concierge button.jc-qa {
  display: flex; align-items: center; justify-content: center; gap: 6px; min-height: 50px; padding: 0 6px; border: 1px solid var(--px-line); border-radius: 17px;
  background: var(--px-card); box-shadow: var(--px-shadow); color: var(--px-ink); font: 720 14px/1.15 var(--px-font); letter-spacing: -.015em; white-space: nowrap; transition: transform .45s var(--px-spring);
}
html.px-app #jeju-concierge button.jc-qa svg { width: 19px; height: 19px; flex: none; color: var(--px-teal); }
html.px-app #jeju-concierge button.jc-qa:active { transform: scale(.96); }
html.px-app #jeju-concierge .jc-privacy { margin: 2px 0 0; text-align: center; font: 500 12px/1.5 var(--px-font); color: var(--px-ink3); }
html.px-app #jeju-concierge .jc-privacy summary { display: inline-flex; align-items: center; min-height: 36px; padding: 0 8px; cursor: pointer; list-style: none; }
html.px-app #jeju-concierge .jc-privacy summary::-webkit-details-marker { display: none; }
html.px-app #jeju-concierge .jc-privacy p { margin: 2px 0 0; padding: 12px 14px; border-radius: 16px; background: #EDEAE3; color: var(--px-ink2); text-align: left; }

/* conversation */
html.px-app #jeju-concierge .jc-log { gap: 16px; }
html.px-app #jeju-concierge .jc-user .jc-text {
  padding: 11px 15px; border-radius: 22px 22px 6px 22px; background: var(--px-teal); color: #fff; font: 550 16px/1.5 var(--px-font); white-space: pre-wrap;
}
html.px-app #jeju-concierge .jc-speaker { display: inline-flex; align-items: center; gap: 6px; padding-left: 2px; font: 750 12.5px/1 var(--px-font); color: var(--px-teal); }
html.px-app #jeju-concierge .jc-speaker::before { content: ''; width: 8px; height: 8px; border-radius: 4px; background: var(--px-teal); }
html.px-app #jeju-concierge .jc-assistant .jc-text {
  padding: 14px 16px; border-radius: 6px 22px 22px 22px; background: var(--px-card); border: 1px solid var(--px-line); box-shadow: var(--px-shadow);
  color: var(--px-ink); font: 500 15.5px/1.6 var(--px-font);
}
html.px-app #jeju-concierge .jc-text strong { font-weight: 750; }
html.px-app #jeju-concierge .jc-text :is(ul, ol) { padding-left: 1.25em; }
html.px-app #jeju-concierge .jc-text li + li { margin-top: 4px; }
html.px-app #jeju-concierge .jc-text li::marker { color: var(--px-teal); font-weight: 700; }
html.px-app #jeju-concierge .jc-typing { display: block; width: 42px; height: 10px; margin: 6px 0; background: radial-gradient(circle, var(--px-teal) 4px, transparent 4.5px) 0 50% / 14px 10px repeat-x; opacity: .55; }
@media (prefers-reduced-motion: no-preference) { html.px-app #jeju-concierge .jc-typing { animation: jc-dots 1.1s ease-in-out infinite; } }
@keyframes jc-dots { 50% { opacity: .2; } }
html.px-app #jeju-concierge button.jc-speak {
  align-self: flex-start; display: inline-flex; align-items: center; gap: 5px; min-height: 32px; padding: 0 10px; border: 0; border-radius: 16px;
  background: transparent; color: var(--px-ink3); font: 650 12.5px/1 var(--px-font);
}
html.px-app #jeju-concierge button.jc-speak:active { background: #EAE7E0; }

/* review: proposal, expense draft, choices, navigation */
html.px-app #jeju-concierge .jc-review:empty { display: none; }
html.px-app #jeju-concierge .jc-review:has(h3) { padding: 18px 16px; border-radius: 22px; background: var(--px-card); border: 1px solid var(--px-line); box-shadow: var(--px-shadow); }
html.px-app #jeju-concierge .jc-review h3 { margin: 0 0 12px; font: 800 18px/1.25 var(--px-font); letter-spacing: -.03em; color: var(--px-ink); }
html.px-app #jeju-concierge .jc-changes { margin: 0; padding-left: 1.2em; font: 600 15px/1.55 var(--px-font); }
html.px-app #jeju-concierge .jc-changes li + li { margin-top: 6px; }
html.px-app #jeju-concierge .jc-hint { margin: 10px 0 0; font: 500 13px/1.5 var(--px-font); color: var(--px-ink2); }
html.px-app #jeju-concierge .jc-warning { margin: 0; padding: 10px 12px; border-radius: 14px; background: var(--px-amber-soft); color: var(--px-amber); font: 600 13.5px/1.45 var(--px-font); }
html.px-app #jeju-concierge .jc-field { gap: 6px; font: 700 13px/1.3 var(--px-font); color: var(--px-ink2); }
html.px-app #jeju-concierge .jc-field :is(input, select) { min-height: 50px; padding: 0 14px; border: 1px solid transparent; border-radius: 15px; background: #F3F1EC; color: var(--px-ink); font: 650 16px/1.2 var(--px-font); }
html.px-app #jeju-concierge .jc-field :is(input, select):focus { border-color: var(--px-teal); background: #fff; outline: 0; }
html.px-app #jeju-concierge .jc-actions { margin: 16px 0 0; }
html.px-app #jeju-concierge .jc-actions button { flex: 1; min-height: 52px; border: 0; border-radius: 17px; background: #F0EEE8; color: var(--px-ink); font: 750 15px/1 var(--px-font); }
html.px-app #jeju-concierge .jc-actions button.jc-primary { flex: 2; background: var(--px-teal); color: #fff; box-shadow: 0 10px 22px -12px rgba(15,74,69,.7); }
html.px-app #jeju-concierge .jc-choices { margin: 12px 0 0; }
html.px-app #jeju-concierge .jc-choices:empty { display: none; }
html.px-app #jeju-concierge .jc-choices button { min-height: 44px; padding: 0 16px; border: 1px solid color-mix(in oklab, var(--px-teal) 30%, transparent); border-radius: 22px; background: var(--px-card); color: var(--px-teal); font: 700 14.5px/1.2 var(--px-font); text-align: left; }
html.px-app #jeju-concierge .jc-saved { margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--px-line); }
html.px-app #jeju-concierge .jc-saved strong { font: 750 15px/1.3 var(--px-font); color: var(--px-ok); }
html.px-app #jeju-concierge .jc-saved button { min-height: 44px; margin-top: 8px; border: 0; border-radius: 15px; background: #F0EEE8; color: var(--px-ink); font: 700 14px/1 var(--px-font); }
html.px-app #jeju-concierge .jc-navcard { display: grid; gap: 6px; margin-top: 12px; padding: 16px; border-radius: 22px; background: var(--px-card); border: 1px solid var(--px-line); box-shadow: var(--px-shadow); }
html.px-app #jeju-concierge .jc-navcard strong { font: 800 18px/1.3 var(--px-font); letter-spacing: -.03em; }
html.px-app #jeju-concierge .jc-nav-eta { font: 600 13.5px/1.45 var(--px-font); color: var(--px-ink2); }
html.px-app #jeju-concierge .jc-navrow { margin-top: 8px; }
html.px-app #jeju-concierge :is(.jc-navcta, .jc-navweb) { flex: 1; display: inline-flex; align-items: center; justify-content: center; min-height: 46px; padding: 0 16px; border-radius: 15px; font: 720 15px/1 var(--px-font); text-decoration: none; }
html.px-app #jeju-concierge .jc-navcta { background: var(--px-teal); color: #fff; }
html.px-app #jeju-concierge .jc-navweb { background: #F0EEE8; color: var(--px-ink); }

/* foot: moment prompts, notice, composer */
html.px-app #jeju-concierge .jc-foot { gap: 8px; padding: 6px 12px calc(10px + env(safe-area-inset-bottom)); background: var(--px-bg); border-top: 1px solid var(--px-line); }
html.px-app #jeju-concierge.jc-kb .jc-foot { padding-bottom: 8px; }
html.px-app #jeju-concierge.jc-kb .jc-prompts { display: none; }
html.px-app #jeju-concierge .jc-prompts {
  margin: 0 -12px; padding: 4px 12px 2px; scroll-padding: 0 12px;
  -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 12px, #000 calc(100% - 28px), transparent);
  mask-image: linear-gradient(90deg, transparent 0, #000 12px, #000 calc(100% - 28px), transparent);
}
html.px-app #jeju-concierge .jc-prompts:empty { display: none; }
html.px-app #jeju-concierge .jc-prompts button {
  min-height: 42px; padding: 0 15px; border: 1px solid var(--px-line); border-radius: 21px; background: var(--px-card);
  color: var(--px-teal); font: 700 14px/1 var(--px-font); letter-spacing: -.01em; box-shadow: 0 1px 2px rgba(18,24,21,.05);
}
html.px-app #jeju-concierge .jc-prompts button:active { transform: scale(.96); background: var(--px-teal-soft); }
html.px-app #jeju-concierge .jc-notice[data-kind="info"] .jc-status { padding: 0 6px; font: 600 13px/1.45 var(--px-font); color: var(--px-ink2); }
html.px-app #jeju-concierge .jc-notice[data-kind="error"] { padding: 10px 10px 10px 14px; border-radius: 18px; background: var(--px-red-soft); }
html.px-app #jeju-concierge .jc-notice[data-kind="error"] .jc-status { font: 650 13.5px/1.45 var(--px-font); color: var(--px-red); }
html.px-app #jeju-concierge button.jc-retry { flex: none; display: inline-flex; align-items: center; gap: 6px; min-height: 44px; padding: 0 14px; border: 0; border-radius: 15px; background: var(--px-red); color: #fff; font: 750 14px/1 var(--px-font); }
html.px-app #jeju-concierge .jc-input-capsule {
  gap: 6px; padding: 5px 5px 5px 16px; border: 1px solid var(--px-line); border-radius: 27px; background: var(--px-card);
  box-shadow: 0 10px 26px -14px rgba(18,32,28,.3); transition: border-color .2s, box-shadow .2s;
}
html.px-app #jeju-concierge .jc-input-capsule:focus-within { border-color: color-mix(in oklab, var(--px-teal) 45%, transparent); box-shadow: 0 0 0 4px rgba(15,74,69,.08), 0 10px 26px -14px rgba(18,32,28,.3); }
html.px-app #jeju-concierge .jc-textarea { font: 500 16px/1.5 var(--px-font); color: var(--px-ink); }
html.px-app #jeju-concierge .jc-textarea::placeholder { color: var(--px-ink3); }
html.px-app #jeju-concierge button.jc-mic-btn { border: 0; background: #F0EEE8; color: var(--px-teal); }
html.px-app #jeju-concierge button.jc-mic-btn:not(:has(svg)) { background: var(--px-red-soft); color: var(--px-red); font: 750 13.5px/1 var(--px-font); }
html.px-app #jeju-concierge button.jc-send-btn { border: 0; background: var(--px-teal); color: #fff; transition: transform .4s var(--px-spring), background-color .2s; }
html.px-app #jeju-concierge button.jc-send-btn:disabled { background: #DAD6CD; color: #fff; opacity: 1; }
html.px-app #jeju-concierge button.jc-send-btn:active:not(:disabled) { transform: scale(.9); }
html.px-app #jeju-concierge button.jc-stop-btn { border: 0; background: var(--px-red-soft); color: var(--px-red); font: 750 14px/1 var(--px-font); }
html.px-app #jeju-concierge .jc-data-note { padding: 0 6px; font: 600 12.5px/1.4 var(--px-font); color: var(--px-amber); }
html.px-app #jeju-concierge .jc-image img { border-radius: 14px; background: #EAE7E0; }
html.px-app #jeju-concierge .jc-image button { min-height: 40px; border: 0; border-radius: 14px; background: #F0EEE8; color: var(--px-ink); font: 700 13.5px/1 var(--px-font); }
html.px-app #jeju-concierge .jc-text:has(> .jc-typing) { align-self: flex-start; padding: 12px 18px; }
html.px-app #jeju-concierge .jc-review > .jc-navcard:first-child { margin-top: 0; }

/* ---------- live voice: light, same surface as the chat ---------- */
html.px-app .jc-live-dialog {
  background: radial-gradient(120% 70% at 50% 18%, #DCEBE7 0%, var(--px-bg) 62%); color: var(--px-ink); font-family: var(--px-font);
  -webkit-font-smoothing: antialiased; word-break: keep-all;
}
@media (min-width: 640px) { html.px-app .jc-live-dialog { border: 0; box-shadow: 0 30px 80px -24px rgba(18,32,28,.5); } }
html.px-app .jc-live-dialog::backdrop { background: rgba(14,22,20,.4); -webkit-backdrop-filter: blur(2px); backdrop-filter: blur(2px); }
html.px-app .jc-live-badge-wrap { background: var(--px-card); border: 1px solid var(--px-line); box-shadow: var(--px-shadow); }
html.px-app .jc-live-badge { color: var(--px-teal); font: 750 13px/1 var(--px-font); letter-spacing: 0; text-transform: none; }
html.px-app .jc-live-dot { background: #2FB36E; box-shadow: 0 0 0 3px rgba(47,179,110,.2); }
html.px-app body.journey-app .jc-live-dialog .jc-live-close-btn { width: 44px; height: 44px; border: 0; background: #EAE7E0; color: var(--px-ink); }
html.px-app .jc-live-ring { border-color: rgba(15,74,69,.18); }
html.px-app .jc-live-aura { background: radial-gradient(circle, rgba(15,74,69,.22) 0%, rgba(15,74,69,0) 70%); }
html.px-app .jc-live-orb { background: radial-gradient(circle at 35% 30%, #4FA597 0%, var(--px-teal) 55%, #0B3834 100%); box-shadow: 0 18px 40px -12px rgba(15,74,69,.6), inset 0 2px 4px rgba(255,255,255,.45); }
html.px-app .jc-live-orb[data-state=listening] { background: radial-gradient(circle at 35% 30%, #7CC7B8 0%, #17665E 58%, #0B3834 100%); box-shadow: 0 18px 44px -10px rgba(23,102,94,.6), inset 0 2px 5px rgba(255,255,255,.5); }
html.px-app .jc-live-orb[data-state=speaking] { background: radial-gradient(circle at 35% 30%, #F7C89F 0%, var(--px-mona) 55%, #9A4618 100%); box-shadow: 0 18px 44px -10px rgba(224,113,47,.55), inset 0 2px 5px rgba(255,255,255,.6); }
html.px-app .jc-live-orb[data-state=thinking] { background: radial-gradient(circle at 35% 30%, #F3D9A8 0%, var(--px-amber) 55%, #5E360B 100%); }
html.px-app .jc-live-orb[data-state=muted] { background: radial-gradient(circle at 35% 30%, #D5D1C8 0%, #9A958B 60%, #6B665D 100%); box-shadow: 0 12px 30px -12px rgba(18,24,21,.35); }
html.px-app .jc-live-orb[data-state=error] { background: radial-gradient(circle at 35% 30%, #F2A59E 0%, var(--px-red) 60%, #6E1B15 100%); }
html.px-app .jc-live-status { font: 800 22px/1.25 var(--px-font); letter-spacing: -.035em; color: var(--px-ink); }
html.px-app .jc-live-sub { font: 500 14px/1.5 var(--px-font); color: var(--px-ink2); }
html.px-app .jc-live-feed { background: var(--px-card); border: 1px solid var(--px-line); box-shadow: var(--px-shadow); -webkit-backdrop-filter: none; backdrop-filter: none; -webkit-mask-image: none; mask-image: none; }
html.px-app .jc-live-feed-item { font: 550 14px/1.5 var(--px-font); }
html.px-app .jc-user-speak { color: var(--px-ink2); font-weight: 550; }
html.px-app .jc-ai-speak { color: var(--px-teal); font-weight: 650; }
html.px-app body.journey-app .jc-live-dialog .jc-live-btn { width: 60px; height: 60px; border: 1px solid var(--px-line); background: var(--px-card); color: var(--px-ink); box-shadow: var(--px-shadow); }
html.px-app body.journey-app .jc-live-dialog .jc-live-mute.jc-muted { background: var(--px-red-soft); border-color: transparent; color: var(--px-red); }
html.px-app body.journey-app .jc-live-dialog .jc-live-end { background: var(--px-red); border-color: var(--px-red); color: #fff; box-shadow: 0 12px 26px -10px rgba(180,50,42,.6); }
html.px-app .jc-live-btn-lbl { font: 650 12.5px/1 var(--px-font); color: var(--px-ink2); }
html.px-app .jc-live-card { background: #F7F5F0; border: 1px solid var(--px-line); }
html.px-app .jc-live-card strong { color: var(--px-ink); }
html.px-app .jc-live-card-desc { color: var(--px-ink2); }
html.px-app body.journey-app .jc-live-dialog .jc-live-apply-btn { min-height: 44px; border-radius: 14px; background: var(--px-teal); color: #fff; }
html.px-app body.journey-app .jc-live-dialog .jc-live-cancel-btn { min-height: 44px; border: 0; border-radius: 14px; background: #EAE7E0; color: var(--px-ink); }
html.px-app .jc-live-card-ok { color: var(--px-ok); }

/* ---------- photo intake sheet ---------- */
html.px-app .jc-psheet { border: 0; background: var(--px-bg); color: var(--px-ink); font-family: var(--px-font); -webkit-font-smoothing: antialiased; word-break: keep-all; }
html.px-app .jc-psheet::backdrop { background: rgba(14,22,20,.4); }
html.px-app .jc-psheet-head { background: transparent; border-bottom: 1px solid var(--px-line); }
html.px-app .jc-psheet-head .jc-eyebrow { margin: 0; font: 750 12.5px/1.2 var(--px-font); color: var(--px-teal); letter-spacing: 0; text-transform: none; }
html.px-app .jc-psheet-head h2 { font: 800 22px/1.25 var(--px-font); letter-spacing: -.035em; color: var(--px-ink); }
html.px-app body.journey-app .jc-psheet button { min-height: 44px; border: 0; border-radius: 15px; background: #EAE7E0; color: var(--px-ink); font: 700 14.5px/1 var(--px-font); }
html.px-app body.journey-app .jc-psheet button.jc-primary { background: var(--px-teal); color: #fff; }
html.px-app .jc-psheet-progress { font: 700 14.5px/1.4 var(--px-font); color: var(--px-teal); }
html.px-app .jc-psheet-hint { font: 500 13px/1.5 var(--px-font); color: var(--px-ink2); }
html.px-app .jc-pcard { background: var(--px-card); border: 1px solid var(--px-line); border-radius: 20px; box-shadow: var(--px-shadow); }
html.px-app .jc-pcard[data-state=error] { background: #FFFCF6; border-color: rgba(156,90,18,.25); }
html.px-app .jc-pcard-title { font: 750 15px/1.35 var(--px-font); color: var(--px-ink); }
html.px-app .jc-pcard-desc { font: 500 13.5px/1.5 var(--px-font); color: var(--px-ink2); }
html.px-app .jc-pcard-note { font: 600 12.5px/1.4 var(--px-font); color: var(--px-amber); }
html.px-app .jc-pcard-form :is(input, select) { min-height: 46px; border: 1px solid transparent; border-radius: 14px; background: #F3F1EC; color: var(--px-ink); font: 650 16px/1.2 var(--px-font); }
html.px-app .jc-chip { background: var(--px-teal-soft); color: var(--px-teal); border: 0; }
html.px-app .jc-chip-warn { background: var(--px-amber-soft); color: var(--px-amber); }
html.px-app .jc-chip-tag { background: #F1EFE9; color: var(--px-ink2); }
html.px-app .jc-psheet-foot { background: var(--px-bg); border-top: 1px solid var(--px-line); }
html.px-app .jc-psheet .jc-psheet-progress { margin: 14px 20px 0; }
html.px-app .jc-psheet .jc-psheet-hint { margin: 6px 20px 0; }
@media (max-width: 560px) {
  html.px-app .jc-psheet { width: 100%; max-width: 100%; height: 100dvh; max-height: 100dvh; margin: 0; border-radius: 0; }
  html.px-app .jc-psheet .jc-psheet-progress, html.px-app .jc-psheet .jc-psheet-hint { margin-left: 16px; margin-right: 16px; }
}

/* slot offer: the named picks can go straight into the empty slot */
html.px-app #jeju-concierge .jc-slotoffer { margin-top: 12px; padding: 14px 16px 16px; border-radius: 22px; background: var(--px-card); border: 1px solid var(--px-line); box-shadow: var(--px-shadow); }
html.px-app #jeju-concierge .jc-review > .jc-slotoffer:first-child { margin-top: 0; }
html.px-app #jeju-concierge .jc-slotoffer .jc-eyebrow { display: block; margin: 0 0 10px; color: var(--px-amber); }
html.px-app #jeju-concierge .jc-slotpicks { display: grid; gap: 8px; }
html.px-app #jeju-concierge button.jc-slotpick {
  display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 52px; padding: 0 16px; border: 1px solid color-mix(in oklab, var(--px-teal) 22%, transparent);
  border-radius: 16px; background: var(--px-teal-soft); color: var(--px-teal); text-align: left;
}
html.px-app #jeju-concierge button.jc-slotpick b { font: 750 15px/1.3 var(--px-font); min-width: 0; }
html.px-app #jeju-concierge button.jc-slotpick span { flex: none; font: 650 13px/1 var(--px-font); color: var(--px-ink2); }
html.px-app #jeju-concierge button.jc-slotpick:active { transform: scale(.98); }
html.px-app #jeju-concierge .jc-slotoffer .jc-saved { margin: 0; padding: 0; border: 0; }

/* ---------- plan B: triggers, local alternatives, re-plan ---------- */
html.px-app #jeju-concierge .jc-planb-home .jc-eyebrow { color: var(--px-amber); }
html.px-app #jeju-concierge .jc-planb-chips { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
html.px-app #jeju-concierge .jc-planb-row { display: flex; gap: 8px; overflow-x: auto; scrollbar-width: none; margin: 0 -12px; padding: 4px 12px 2px;
  -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 12px, #000 calc(100% - 28px), transparent); mask-image: linear-gradient(90deg, transparent 0, #000 12px, #000 calc(100% - 28px), transparent); }
html.px-app #jeju-concierge .jc-planb-row::-webkit-scrollbar { display: none; }
html.px-app #jeju-concierge .jc-planb-row[hidden] { display: none; }
html.px-app #jeju-concierge.jc-kb .jc-planb-row { display: none; }
html.px-app #jeju-concierge button.jc-planb-chip {
  flex: none; min-height: 42px; padding: 0 15px; border: 0; border-radius: 21px; background: var(--px-amber-soft); color: var(--px-amber);
  font: 720 14px/1 var(--px-font); white-space: nowrap; transition: transform .35s var(--px-spring);
}
html.px-app #jeju-concierge button.jc-planb-chip:active { transform: scale(.95); }
html.px-app #jeju-concierge .jc-planb-card { padding: 14px 16px 16px; border-radius: 6px 22px 22px 22px; background: var(--px-card); border: 1px solid var(--px-line); box-shadow: var(--px-shadow); }
html.px-app #jeju-concierge .jc-planb-card > .jc-sub:first-child { margin-top: 0; }
html.px-app #jeju-concierge .jc-planb-lead { margin: 0; font: 700 14.5px/1.45 var(--px-font); color: var(--px-ink2); }
html.px-app #jeju-concierge .jc-planb-next { margin: 4px 0 0; font: 800 18px/1.35 var(--px-font); letter-spacing: -.025em; color: var(--px-teal); }
html.px-app #jeju-concierge .jc-meta-line { margin: 4px 0 0; font: 600 13.5px/1.45 var(--px-font); color: var(--px-ink2); }
html.px-app #jeju-concierge .jc-alt { margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--px-line); }
html.px-app #jeju-concierge .jc-alt-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
html.px-app #jeju-concierge .jc-alt-head b { font: 780 17px/1.3 var(--px-font); letter-spacing: -.02em; color: var(--px-ink); }
html.px-app #jeju-concierge .jc-links { display: flex; gap: 6px; margin-top: 10px; }
html.px-app #jeju-concierge .jc-link { flex: 1; display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: 0 8px; border-radius: 14px; background: #F0EEE8; color: var(--px-ink); font: 720 14px/1 var(--px-font); text-decoration: none; white-space: nowrap; }
html.px-app #jeju-concierge .jc-link-tmap { background: var(--px-teal); color: #fff; }
html.px-app #jeju-concierge button.jc-swap { width: 100%; min-height: 46px; margin-top: 8px; border: 1px solid color-mix(in oklab, var(--px-teal) 25%, transparent); border-radius: 15px; background: var(--px-teal-soft); color: var(--px-teal); font: 750 14.5px/1 var(--px-font); }
html.px-app #jeju-concierge .jc-planb-opts { display: flex; gap: 6px; margin-bottom: 12px; }
html.px-app #jeju-concierge button.jc-opt { flex: 1; min-height: 40px; padding: 0 6px; border: 1px solid var(--px-line); border-radius: 13px; background: #F7F5F0; color: var(--px-ink2); font: 700 13px/1.15 var(--px-font); white-space: nowrap; }
html.px-app #jeju-concierge button.jc-opt[aria-pressed="true"] { background: var(--px-teal); border-color: var(--px-teal); color: #fff; }
html.px-app #jeju-concierge .jc-planb-card .jc-changes { margin: 10px 0 0; font-size: 14.5px; }
html.px-app #jeju-concierge .jc-planb-card .jc-drop { color: var(--px-red); }
html.px-app #jeju-concierge .jc-planb-card .jc-warning { margin-top: 10px; }
html.px-app #jeju-concierge button.jc-apply-plan { width: 100%; min-height: 50px; margin-top: 12px; border: 0; border-radius: 16px; background: var(--px-teal); color: #fff; font: 750 15px/1 var(--px-font); box-shadow: 0 10px 22px -12px rgba(15,74,69,.7); }
html.px-app #jeju-concierge .jc-planb-card .jc-saved { margin: 0; padding: 0; border: 0; }

/* jeju_route_map: the map tab's route mode (scripts/jeju_route_map.js). Scoped to html.px-app;
   tokens from jeju_phase_home.css. Solid surfaces only over the map (no backdrop blur), so a
   pan repaints the canvas and nothing else. */

/* ---------- route mode chrome: the day route panel, route chip and filters step aside ---------- */
html.px-app body.journey-app #wb-col-map.rm-route #day-route-panel,
html.px-app body.journey-app #wb-col-map.rm-route #route-chip { display: none !important; }
html.px-app body.journey-app #wb-col-map.rm-route:not(.rm-cands) #map-filter-bar { display: none; }
html.px-app body.journey-app #wb-col-map.rm-cands #map-filter-bar { padding-left: 142px; scroll-padding-left: 142px; }
html.px-app body.journey-app #wb-col-map.rm-cands #map-filter-bar .filter-pill:is([data-filter="stay"], [data-filter="all"]) { display: none; }
html.px-app body.journey-app #wb-col-map:not(.rm-route) :is(.rm-sheet, .rm-ctl, .rm-layer, .rm-toast) { display: none !important; }

/* today's date in the day switcher */
html.px-app body.journey-app #wb-col-map .day-chip[data-today="true"] { position: relative; }
html.px-app body.journey-app #wb-col-map .day-chip[data-today="true"]::after {
  content: ""; position: absolute; left: 50%; bottom: 5px; width: 5px; height: 5px; margin-left: -2.5px; border-radius: 3px; background: var(--px-mona);
}

/* ---------- floating controls ---------- */
html.px-app #map-wrapper .rm-layer {
  position: absolute; z-index: 46; top: 14px; left: 12px; display: inline-flex; align-items: center; gap: 6px;
  height: 38px; min-height: 38px; margin: 0; padding: 0 14px 0 11px; border: 0; border-radius: 19px;
  background: #fff; color: var(--px-ink); box-shadow: 0 2px 8px -2px rgba(18,40,34,.28), 0 0 0 1px var(--px-line);
  font: 700 14px/1 var(--px-font); letter-spacing: -.01em; white-space: nowrap; cursor: pointer;
  transition: background-color .2s ease, color .2s ease, transform .35s var(--px-spring);
}
html.px-app #map-wrapper .rm-layer .rm-ic { width: 18px; height: 18px; color: var(--px-teal); }
html.px-app #map-wrapper .rm-layer[aria-pressed="true"] { background: var(--px-teal); color: #fff; }
html.px-app #map-wrapper .rm-layer[aria-pressed="true"] .rm-ic { color: #fff; }
html.px-app #map-wrapper .rm-layer:active { transform: scale(.95); }
html.px-app #map-wrapper .rm-ctl { position: absolute; z-index: 46; top: 164px; right: 12px; display: grid; gap: 8px; }
html.px-app #map-wrapper .rm-fab {
  display: grid; place-items: center; width: 44px; height: 44px; min-width: 44px; min-height: 44px; margin: 0; padding: 0; border: 0; border-radius: 16px;
  background: #fff; color: var(--px-ink2); box-shadow: 0 2px 8px -2px rgba(18,40,34,.3), 0 0 0 1px var(--px-line); cursor: pointer;
  transition: transform .35s var(--px-spring), color .2s ease;
}
html.px-app #map-wrapper .rm-fab .rm-ic { width: 21px; height: 21px; }
html.px-app #map-wrapper .rm-fab:active { transform: scale(.92); }
html.px-app #map-wrapper .rm-fab[aria-pressed="true"] { color: var(--px-feno); }
html.px-app #map-wrapper .rm-fab.busy .rm-ic { animation: rm-blink 1s ease-in-out infinite; }
@keyframes rm-blink { 50% { opacity: .35; } }
html.px-app #map-wrapper :is(.rm-layer, .rm-fab):focus-visible { outline: 2px solid var(--px-teal); outline-offset: 2px; }
html.px-app #map-wrapper .rm-toast {
  position: absolute; z-index: 48; top: 62px; left: 50%; transform: translateX(-50%); max-width: calc(100% - 140px); padding: 9px 14px; border-radius: 14px;
  background: rgba(18,24,21,.9); color: #fff; font: 650 13px/1.35 var(--px-font); text-align: center; pointer-events: none;
}
html.px-app #map-wrapper .rm-toast[hidden] { display: none; }

/* ---------- stop pins ---------- */
html.px-app #map-wrapper .rm-pin {
  position: absolute; display: block; width: 30px; height: 30px; min-width: 0; min-height: 0; margin: 0; padding: 0; border: 0; background: none; box-shadow: none;
  color: var(--px-teal); font: 800 13px/1 var(--px-font); cursor: pointer; -webkit-tap-highlight-color: transparent;
}
html.px-app #map-wrapper .rm-pin::after { content: ""; position: absolute; inset: -7px; }
html.px-app #map-wrapper .rm-pin .rm-dot {
  position: relative; z-index: 1; display: grid; place-items: center; width: 30px; height: 30px; box-sizing: border-box; border-radius: 15px;
  background: #fff; color: var(--px-teal); border: 2.5px solid var(--px-teal); box-shadow: 0 3px 8px -2px rgba(15,74,69,.45);
  font: 800 13px/1 var(--px-font); letter-spacing: -.03em; transition: transform .3s var(--px-spring);
}
html.px-app #map-wrapper .rm-pin.conf .rm-dot { background: var(--px-teal); color: #fff; border-color: #fff; }
html.px-app #map-wrapper .rm-pin.hotel { width: 34px; height: 34px; }
html.px-app #map-wrapper .rm-pin.hotel .rm-dot { width: 34px; height: 34px; border-radius: 12px; background: #0B3834; color: #fff; border: 2.5px solid #fff; }
html.px-app #map-wrapper .rm-pin.hotel .rm-dot .rm-ic { width: 18px; height: 18px; }
html.px-app #map-wrapper .rm-pin .rm-pin-n {
  position: absolute; z-index: 3; top: -8px; right: -10px; min-width: 18px; height: 18px; padding: 0 4px; box-sizing: border-box; border-radius: 9px;
  background: #fff; color: #0B3834; font: 800 11px/18px var(--px-font); font-style: normal; text-align: center; box-shadow: 0 1px 4px rgba(0,0,0,.25);
}
html.px-app #map-wrapper .rm-pin.next .rm-dot { background: var(--px-teal); color: #fff; border-color: #fff; }
html.px-app #map-wrapper .rm-pin.next::before {
  content: ""; position: absolute; inset: -6px; border-radius: 50%; background: rgba(15,74,69,.22); animation: rm-pulse 1.8s ease-out infinite;
}
html.px-app #map-wrapper .rm-pin.hotel.next::before { border-radius: 16px; }
@keyframes rm-pulse { from { transform: scale(.75); opacity: 1; } to { transform: scale(1.35); opacity: 0; } }
html.px-app #map-wrapper .rm-pin.current .rm-dot { box-shadow: 0 0 0 4px rgba(15,74,69,.18), 0 3px 8px -2px rgba(15,74,69,.45); }
html.px-app #map-wrapper .rm-pin.passed .rm-dot { background: #F1EFEA; color: var(--px-ink3); border-color: #C9CFCC; box-shadow: none; }
html.px-app #map-wrapper .rm-pin.passed.hotel .rm-dot { background: #8E9894; border-color: #fff; color: #fff; }
html.px-app #map-wrapper .rm-pin:is(.sel, .picked) { z-index: 3; }
html.px-app #map-wrapper .rm-pin:is(.sel, .picked) .rm-dot { transform: scale(1.14); box-shadow: 0 0 0 4px rgba(15,74,69,.22), 0 6px 14px -4px rgba(15,74,69,.6); }
html.px-app #map-wrapper .rm-pin:focus-visible { outline: none; }
html.px-app #map-wrapper .rm-pin:focus-visible .rm-dot { outline: 2px solid var(--px-feno); outline-offset: 3px; }
/* name labels: placed by the script (data-lab = r|l|t|b|off); hidden until placed */
html.px-app #map-wrapper .rm-pin .rm-lab {
  position: absolute; z-index: 2; max-width: 128px; padding: 4px 8px; border-radius: 9px; background: #fff; color: var(--px-ink);
  box-shadow: 0 2px 6px -1px rgba(18,40,34,.28), 0 0 0 1px var(--px-line); font: 700 12.5px/1.25 var(--px-font); letter-spacing: -.02em;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; visibility: hidden; pointer-events: none; transition: opacity .15s ease;
}
html.px-app #map-wrapper .rm-pin[data-lab="r"] .rm-lab { visibility: visible; left: calc(100% + 5px); top: 50%; transform: translateY(-50%); }
html.px-app #map-wrapper .rm-pin[data-lab="l"] .rm-lab { visibility: visible; right: calc(100% + 5px); top: 50%; transform: translateY(-50%); }
html.px-app #map-wrapper .rm-pin[data-lab="t"] .rm-lab { visibility: visible; bottom: calc(100% + 5px); left: 50%; transform: translateX(-50%); }
html.px-app #map-wrapper .rm-pin[data-lab="b"] .rm-lab { visibility: visible; top: calc(100% + 5px); left: 50%; transform: translateX(-50%); }
html.px-app #map-wrapper .rm-pin[data-lab="tr"] .rm-lab { visibility: visible; left: calc(100% - 4px); bottom: calc(100% - 4px); }
html.px-app #map-wrapper .rm-pin[data-lab="br"] .rm-lab { visibility: visible; left: calc(100% - 4px); top: calc(100% - 4px); }
html.px-app #map-wrapper .rm-pin[data-lab="tl"] .rm-lab { visibility: visible; right: calc(100% - 4px); bottom: calc(100% - 4px); }
html.px-app #map-wrapper .rm-pin[data-lab="bl"] .rm-lab { visibility: visible; right: calc(100% - 4px); top: calc(100% - 4px); }
html.px-app #map-wrapper .rm-pin:not([data-lab]) .rm-lab, html.px-app #map-wrapper .rm-pin[data-lab="off"] .rm-lab { left: 0; top: 0; }
html.px-app #map-wrapper .rm-pin.passed .rm-lab { color: var(--px-ink3); }
html.px-app #map-wrapper .rm-pin:is(.sel, .next) .rm-lab { font-weight: 800; }

/* leg chips on the line: measured time/distance, or a plain "직선 표시" */
html.px-app #map-wrapper .rm-leg {
  position: absolute; display: block; padding: 3px 7px; border-radius: 9px; background: #fff; color: var(--px-ink2); box-shadow: 0 1px 4px -1px rgba(18,40,34,.3), 0 0 0 1px var(--px-line);
  font: 750 11.5px/1.25 var(--px-font); letter-spacing: -.02em; white-space: nowrap; pointer-events: none; transition: opacity .15s ease;
}
html.px-app #map-wrapper .rm-leg.next { background: #0B3834; color: #fff; box-shadow: 0 2px 8px -2px rgba(11,56,52,.6); }
html.px-app #map-wrapper .rm-leg.straight { color: var(--px-ink3); box-shadow: inset 0 0 0 1px #B9C2BE; background: #FBFAF7; }
html.px-app #map-wrapper .rm-leg.done { opacity: .6; }
html.px-app #map-wrapper .rm-leg.off { visibility: hidden; }
html.px-app #map-wrapper.rm-zooming :is(.rm-leg, .rm-pin .rm-lab) { opacity: 0; }

/* empty slots: dashed and tappable */
html.px-app #map-wrapper .rm-slot {
  position: absolute; display: inline-flex; align-items: center; gap: 3px; height: 30px; min-height: 30px; margin: 0; padding: 0 4px 0 6px; border: 1.5px dashed var(--px-teal2); border-radius: 15px;
  background: rgba(255,255,255,.96); color: var(--px-teal); font: 750 12px/1 var(--px-font); letter-spacing: -.02em; white-space: nowrap; cursor: pointer; box-shadow: 0 2px 6px -2px rgba(18,40,34,.25);
}
html.px-app #map-wrapper .rm-slot::after { content: ""; position: absolute; inset: -8px -4px; }
html.px-app #map-wrapper .rm-slot .rm-ic { width: 14px; height: 14px; }
html.px-app #map-wrapper .rm-slot b { margin-left: 5px; padding: 3px 6px; border-radius: 8px; background: var(--px-teal); color: #fff; font: 800 11px/1 var(--px-font); }
html.px-app #map-wrapper .rm-slot.stacked { top: -34px; }
html.px-app #map-wrapper .rm-slot:active { background: var(--px-teal-soft); }

/* a selected place off the route (candidate or a place opened from another tab) */
html.px-app #map-wrapper .rm-pick { position: absolute; display: flex; flex-direction: column; align-items: center; pointer-events: none; }
html.px-app #map-wrapper .rm-pick-lab {
  max-width: 160px; padding: 6px 10px; border-radius: 12px; background: var(--px-ink); color: #fff; font: 750 13px/1.2 var(--px-font);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; box-shadow: 0 6px 16px -6px rgba(0,0,0,.5);
}
html.px-app #map-wrapper .rm-pick-dot { width: 14px; height: 14px; margin: 5px 0 -7px; border-radius: 7px; background: var(--px-ink); border: 3px solid #fff; box-shadow: 0 2px 6px rgba(0,0,0,.35); }

/* ---------- the route sheet (mobile: draggable, 3 snap points) ---------- */
html.px-app #map-wrapper .rm-sheet {
  position: absolute; z-index: 60; left: 0; right: 0; bottom: 0; display: flex; flex-direction: column; box-sizing: border-box;
  border-radius: 24px 24px 0 0; background: var(--px-card); color: var(--px-ink); font-family: var(--px-font); word-break: keep-all;
  box-shadow: 0 -1px 0 var(--px-line), 0 -10px 30px -14px rgba(10,24,20,.4); transform: translate3d(0,100%,0); will-change: transform;
  -webkit-font-smoothing: antialiased; font-feature-settings: "tnum" 1;
}
html.px-app #map-wrapper .rm-sheet.rm-anim { transition: transform .4s cubic-bezier(.2,.85,.25,1); }
html.px-app #map-wrapper:has(#map-sheet.active) .rm-sheet { visibility: hidden; pointer-events: none; }
html.px-app #map-wrapper .rm-sheet * { box-sizing: border-box; }
html.px-app #map-wrapper .rm-sheet :is(h3, p, ol) { margin: 0; }
html.px-app #map-wrapper .rm-drag { flex: none; padding: 0 16px 12px; touch-action: none; cursor: grab; }
html.px-app #map-wrapper .rm-sheet.rm-dragging .rm-drag { cursor: grabbing; }
html.px-app #map-wrapper .rm-grab {
  position: relative; display: block; width: 100%; height: 22px; min-height: 22px; margin: 0; padding: 0; border: 0; background: none; box-shadow: none; cursor: grab;
}
html.px-app #map-wrapper .rm-grab::before { content: ""; position: absolute; top: 8px; left: 50%; width: 38px; height: 5px; margin-left: -19px; border-radius: 3px; background: #D5D0C6; }
html.px-app #map-wrapper .rm-grab:focus-visible { outline: 2px solid var(--px-teal); outline-offset: -2px; border-radius: 10px; }

/* head card: the next move, a selected stop, or the day */
html.px-app #map-wrapper .rm-card-top { position: relative; display: flex; align-items: baseline; flex-wrap: wrap; gap: 4px 8px; padding-right: 40px; }
html.px-app #map-wrapper .rm-card.calm .rm-card-top, html.px-app #map-wrapper .rm-card:not(.sel) .rm-card-top { padding-right: 0; }
html.px-app #map-wrapper .rm-eyebrow {
  align-self: center; display: inline-flex; align-items: center; height: 22px; padding: 0 8px; border-radius: 8px; background: var(--px-teal-soft); color: var(--px-teal);
  font: 800 12px/1 var(--px-font); letter-spacing: -.01em;
}
html.px-app #map-wrapper .rm-card.calm .rm-eyebrow { background: #EFEDE7; color: var(--px-ink2); }
html.px-app #map-wrapper .rm-time { font: 800 18px/1.2 var(--px-font); color: var(--px-teal); letter-spacing: -.02em; }
html.px-app #map-wrapper .rm-card h3 { min-width: 0; font: 800 18px/1.25 var(--px-font); letter-spacing: -.035em; color: var(--px-ink); }
html.px-app #map-wrapper .rm-sub { font: 600 13px/1.3 var(--px-font); color: var(--px-ink3); }
html.px-app #map-wrapper .rm-x {
  position: absolute; top: -6px; right: -6px; display: grid; place-items: center; width: 40px; height: 40px; min-height: 40px; margin: 0; padding: 0; border: 0; border-radius: 20px;
  background: #F1EFEA; color: var(--px-ink2); cursor: pointer;
}
html.px-app #map-wrapper .rm-x .rm-ic { width: 17px; height: 17px; }
html.px-app #map-wrapper .rm-meta { display: flex; align-items: center; flex-wrap: wrap; gap: 4px 8px; margin-top: 6px; font: 600 14px/1.35 var(--px-font); color: var(--px-ink2); }
html.px-app #map-wrapper .rm-meta .rm-ic { width: 17px; height: 17px; color: var(--px-ink3); margin-right: -3px; }
html.px-app #map-wrapper .rm-leave { font-weight: 800; color: var(--px-teal); }
html.px-app #map-wrapper .rm-leave::before { content: "·"; margin-right: 8px; color: var(--px-ink3); font-weight: 600; }
html.px-app #map-wrapper .rm-leave.now { color: var(--px-red); }
html.px-app #map-wrapper .rm-now { margin-top: 3px; font: 600 12.5px/1.35 var(--px-font); color: var(--px-ink3); }
html.px-app #map-wrapper .rm-navs { display: flex; gap: 8px; margin-top: 12px; }
html.px-app #map-wrapper .rm-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 5px; height: 42px; min-height: 42px; margin: 0; padding: 0 14px; border: 0; border-radius: 14px;
  background: #F1EFEA; color: var(--px-ink); font: 750 14px/1 var(--px-font); letter-spacing: -.01em; text-decoration: none; white-space: nowrap; cursor: pointer;
  transition: transform .3s var(--px-spring);
}
html.px-app #map-wrapper .rm-btn .rm-ic { width: 17px; height: 17px; }
html.px-app #map-wrapper .rm-btn.primary { background: var(--px-teal); color: #fff; }
html.px-app #map-wrapper .rm-btn.ghost { background: none; box-shadow: inset 0 0 0 1.5px var(--px-line); color: var(--px-ink2); }
html.px-app #map-wrapper .rm-btn:active { transform: scale(.95); }
html.px-app #map-wrapper .rm-head .rm-navs .rm-btn { flex: 1 1 0; min-width: 0; padding: 0 10px; }
html.px-app #map-wrapper .rm-head .rm-navs .rm-btn.icon { flex: 0 0 42px; padding: 0; background: none; box-shadow: inset 0 0 0 1.5px var(--px-line); color: var(--px-ink2); }
html.px-app #map-wrapper .rm-head .rm-navs .rm-btn.icon .rm-ic { width: 20px; height: 20px; }
html.px-app #map-wrapper .rm-sheet:not([data-snap="peek"]) .rm-drag { box-shadow: 0 1px 0 var(--px-line); }
/* the assistant launcher floats over the sheet's bottom-right corner on phones */
@media (max-width: 760px) {
  html.px-app body.journey-app:has(.jc-quick) #map-wrapper .rm-sheet[data-snap="peek"] .rm-head .rm-navs,
  html.px-app body.journey-app:has(.jc-quick) #map-wrapper .rm-sheet[data-snap="peek"] .rm-card.calm { padding-right: 66px; }
  html.px-app body.journey-app:has(.jc-quick) #map-wrapper .rm-body { padding-bottom: 76px; }
}

/* body: summary, the day's list with legs and empty slots */
html.px-app #map-wrapper .rm-body {
  flex: none; max-height: calc(var(--rm-vis, 50vh) - var(--rm-drag-h, 150px)); overflow-y: auto; overscroll-behavior: contain; padding: 0 12px 24px;
  scrollbar-width: none;
}
html.px-app #map-wrapper .rm-body::-webkit-scrollbar { display: none; }
html.px-app #map-wrapper .rm-sum { display: grid; gap: 2px; margin: 0 4px; padding: 12px 0 6px; }
html.px-app #map-wrapper .rm-sum b { font: 800 15px/1.3 var(--px-font); letter-spacing: -.02em; }
html.px-app #map-wrapper .rm-sum span { font: 600 12.5px/1.4 var(--px-font); color: var(--px-ink3); }
html.px-app #map-wrapper .rm-list { list-style: none; padding: 0; }
html.px-app #map-wrapper .rm-row-btn {
  display: grid; grid-template-columns: 46px 28px minmax(0, 1fr) auto; align-items: center; gap: 8px; width: 100%; min-height: 54px; margin: 0; padding: 7px 8px 7px 4px;
  border: 0; border-radius: 16px; background: none; box-shadow: none; color: var(--px-ink); text-align: left; font-family: var(--px-font); cursor: pointer;
  transition: background-color .2s ease;
}
html.px-app #map-wrapper .rm-row-btn:active { background: #F4F2ED; }
html.px-app #map-wrapper .rm-row-btn:focus-visible { outline: 2px solid var(--px-teal); outline-offset: -2px; }
html.px-app #map-wrapper .rm-row time { font: 700 13.5px/1 var(--px-font); color: var(--px-ink3); text-align: right; letter-spacing: -.01em; }
html.px-app #map-wrapper .rm-badge {
  display: grid; place-items: center; width: 26px; height: 26px; border-radius: 13px; background: #fff; color: var(--px-teal); box-shadow: inset 0 0 0 2px var(--px-teal);
  font: 800 12px/1 var(--px-font);
}
html.px-app #map-wrapper .rm-badge.conf { background: var(--px-teal); color: #fff; box-shadow: none; }
html.px-app #map-wrapper .rm-badge.hotel { border-radius: 9px; background: #0B3834; color: #fff; box-shadow: none; }
html.px-app #map-wrapper .rm-badge.off { background: #EFEDE7; color: var(--px-ink3); box-shadow: none; }
html.px-app #map-wrapper .rm-badge .rm-ic { width: 15px; height: 15px; }
html.px-app #map-wrapper .rm-row-t { display: grid; gap: 2px; min-width: 0; }
html.px-app #map-wrapper .rm-row-t b { font: 750 15px/1.3 var(--px-font); letter-spacing: -.025em; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
html.px-app #map-wrapper .rm-row-t small { font: 600 12.5px/1.3 var(--px-font); color: var(--px-ink3); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
html.px-app #map-wrapper .rm-tag { padding: 4px 7px; border-radius: 7px; background: #EFEDE7; color: var(--px-ink2); font: 800 11.5px/1 var(--px-font); }
html.px-app #map-wrapper .rm-tag.next { background: var(--px-teal); color: #fff; }
html.px-app #map-wrapper .rm-tag.now { background: var(--px-teal-soft); color: var(--px-teal); }
html.px-app #map-wrapper .rm-row.passed :is(time, .rm-row-t, .rm-badge) { opacity: .45; }
html.px-app #map-wrapper .rm-row.next time { color: var(--px-teal); font-weight: 800; }
html.px-app #map-wrapper .rm-row.sel .rm-row-btn { background: var(--px-teal-soft); }
html.px-app #map-wrapper .rm-legrow { position: relative; display: flex; align-items: center; min-height: 28px; padding: 0 0 0 96px; font: 650 12.5px/1.3 var(--px-font); color: var(--px-ink3); }
html.px-app #map-wrapper .rm-legrow::before { content: ""; position: absolute; left: 70px; top: 2px; bottom: 2px; border-left: 2px solid #9CC3BD; }
html.px-app #map-wrapper .rm-legrow.straight::before { border-left-style: dashed; border-color: #B9C2BE; }
html.px-app #map-wrapper .rm-legrow.next { color: var(--px-teal); font-weight: 750; }
html.px-app #map-wrapper .rm-legrow.next::before { border-color: var(--px-teal); }
html.px-app #map-wrapper .rm-legrow.done { opacity: .5; }
html.px-app #map-wrapper .rm-slotrow {
  display: grid; grid-template-columns: 46px minmax(0, 1fr) auto; align-items: center; gap: 8px; margin: 4px 0; padding: 8px 8px 8px 4px;
  border-radius: 16px; background: #FBFAF7; box-shadow: inset 0 0 0 1.5px #CFE0DC; font: 600 14px/1.3 var(--px-font); color: var(--px-ink2);
}
html.px-app #map-wrapper .rm-slotrow time { font: 700 13.5px/1 var(--px-font); color: var(--px-ink3); text-align: right; }
html.px-app #map-wrapper .rm-slot-t b { color: var(--px-ink); font-weight: 750; }
html.px-app #map-wrapper .rm-slot-t small { display: block; margin-top: 2px; font: 600 12px/1.3 var(--px-font); color: var(--px-ink3); }
html.px-app #map-wrapper .rm-fill {
  display: inline-flex; align-items: center; gap: 3px; height: 36px; min-height: 36px; margin: 0; padding: 0 12px 0 9px; border: 0; border-radius: 12px;
  background: var(--px-teal); color: #fff; font: 750 13px/1 var(--px-font); cursor: pointer;
}
html.px-app #map-wrapper .rm-fill .rm-ic { width: 15px; height: 15px; }
html.px-app #map-wrapper .rm-note { margin: 12px 4px 4px; font: 550 12.5px/1.5 var(--px-font); color: var(--px-ink3); }
html.px-app #map-wrapper .rm-note + .rm-btn { margin: 4px 4px 0; }

/* ---------- desktop: the sheet becomes a side panel ---------- */
@media (min-width: 761px) {
  html.px-app #map-wrapper .rm-sheet {
    top: 12px; bottom: 20px; left: 12px; right: auto; width: 360px; height: auto !important; transform: none !important; border-radius: 22px;
    box-shadow: 0 0 0 1px var(--px-line), 0 18px 40px -18px rgba(10,24,20,.45);
  }
  html.px-app #map-wrapper .rm-drag { padding-top: 16px; touch-action: auto; cursor: auto; }
  html.px-app #map-wrapper .rm-grab { display: none; }
  html.px-app #map-wrapper .rm-body { flex: 1 1 auto; min-height: 0; max-height: none; }
  html.px-app #map-wrapper .rm-layer { left: 386px; }
  html.px-app body.journey-app #wb-col-map.rm-cands #map-filter-bar { padding-left: 516px; scroll-padding-left: 516px; }
  html.px-app #map-wrapper .rm-toast { left: calc(50% + 186px); }
}

/* ---------- 전체 (browse): calmer clusters and no stacked labels ---------- */
html.px-app #wb-col-map:not(.rm-route) .pin:is(.mona, .feno):has(.pin-count) .pin-count { box-shadow: 0 4px 12px -4px rgba(15,74,69,.4); }
html.px-app #wb-col-map:not(.rm-route) .pin.rm-quiet { min-width: 18px; min-height: 18px; width: auto; height: 18px; padding: 0 5px; }
html.px-app #wb-col-map:not(.rm-route) .pin.rm-quiet :is(.pin-label, .pin-mona, .pin-feno, .pin-count) { display: none !important; }
html.px-app #wb-col-map:not(.rm-route) .pin.rm-quiet::after { content: ""; position: absolute; inset: -13px; }

@media (prefers-reduced-motion: reduce) {
  html.px-app #map-wrapper .rm-pin.next::before, html.px-app #map-wrapper .rm-fab.busy .rm-ic { animation: none; }
  html.px-app #map-wrapper .rm-sheet.rm-anim { transition: none; }
}

/* jeju_resort_map: resort map view, its full-screen dialog, the stay-screen card and the Siena tour tab.
   Tokens from jeju_phase_home.css. Class-level selectors (two classes) so the app-wide
   `body.journey-app button { color: inherit }` never wins. */
.rmap { position: relative; display: flex; flex-direction: column; height: 100%; min-height: 0; overflow: hidden;
  background: #E8EEE0; color: var(--px-ink); font-family: var(--px-font); word-break: keep-all; -webkit-font-smoothing: antialiased; font-feature-settings: "tnum" 1; }
.rmap *, .rmap *::before, .rmap *::after { box-sizing: border-box; }
.rmap [hidden] { display: none !important; }
.rmap .rmap-ic { width: 20px; height: 20px; flex: none; }

/* filter chips */
.rmap .rmap-bar { flex: none; display: flex; gap: 6px; padding: 10px 12px; overflow-x: auto; scrollbar-width: none; background: #fff; border-bottom: 1px solid var(--px-line); }
.rmap .rmap-bar::-webkit-scrollbar { display: none; }
.rmap .rmap-chip { flex: none; display: inline-flex; align-items: center; gap: 5px; min-height: 40px; margin: 0; padding: 0 13px; border: 1px solid rgba(18,24,21,.12); border-radius: 20px;
  background: #fff; color: var(--px-ink); font: 700 13.5px/1 var(--px-font); letter-spacing: -.01em; white-space: nowrap; transition: background-color .2s, color .2s, transform .35s var(--px-spring); }
.rmap .rmap-chip:active { transform: scale(.95); }
.rmap .rmap-chip[aria-pressed="true"] { background: var(--px-teal); border-color: var(--px-teal); color: #fff; }
.rmap .rmap-chip-n { font-weight: 800; color: var(--px-ok); }
.rmap .rmap-chip[aria-pressed="true"] .rmap-chip-n { color: #BDEBD0; }
.rmap .rmap-chip-room .rmap-ic { width: 18px; height: 18px; }

/* stage */
.rmap .rmap-stage { position: relative; flex: 1; min-height: 0; overflow: hidden; touch-action: none; user-select: none; -webkit-user-select: none; cursor: grab; background: #E8EEE0; }
.rmap .rmap-stage:active { cursor: grabbing; }
.rmap .rmap-world { position: absolute; left: 0; top: 0; transform-origin: 0 0; }
.rmap .rmap-world > svg { position: absolute; left: 0; top: 0; display: block; overflow: visible; }
.rmap .rmap-layer { position: absolute; inset: 0; pointer-events: none; }
.rmap .rmap-rtg.is-off { opacity: .32; }
.rmap .rmap-north { position: absolute; left: 10px; top: 10px; display: flex; align-items: center; gap: 2px; height: 28px; margin: 0; padding: 0 10px 0 5px; border-radius: 14px;
  background: rgba(255,255,255,.9); box-shadow: 0 4px 14px -6px rgba(18,32,28,.3); font: 800 12px/1 var(--px-font); color: var(--px-ink); pointer-events: none; }
.rmap .rmap-north .rmap-ic { width: 16px; height: 16px; color: var(--px-red); }
.rmap .rmap-north em { margin-left: 6px; padding-left: 7px; border-left: 1px solid rgba(18,24,21,.14); font: 600 11.5px/1 var(--px-font); font-style: normal; color: var(--px-ink2); }
.rmap .rmap-zoom { position: absolute; right: 10px; top: 10px; z-index: 2; display: flex; flex-direction: column; overflow: hidden;
  border-radius: 14px; background: #fff; box-shadow: 0 8px 22px -10px rgba(18,32,28,.4); }
.rmap .rmap-zoom button { display: grid; place-items: center; width: 42px; height: 42px; margin: 0; padding: 0; border: 0; border-top: 1px solid var(--px-line); background: #fff; color: var(--px-ink); }
.rmap .rmap-zoom button:first-child { border-top: 0; }

/* pins: a 0x0 anchor; the dot centres on the point, the label sits on the side layout() chose */
.rmap .rmap-pin { position: absolute; left: 0; top: 0; width: 0; height: 0; margin: 0; padding: 0; border: 0; background: none; pointer-events: auto; color: var(--px-ink); }
.rmap .rmap-dot { position: absolute; left: -16px; top: -16px; display: grid; place-items: center; width: 32px; height: 32px; border-radius: 50%;
  background: #fff; box-shadow: 0 0 0 1px rgba(18,24,21,.08), 0 6px 14px -6px rgba(18,32,28,.45); transition: transform .35s var(--px-spring), background-color .2s; }
.rmap .rmap-dot .rmap-ic { width: 18px; height: 18px; }
.rmap .k-water .rmap-dot { color: var(--px-teal); }
.rmap .k-food .rmap-dot { color: var(--px-amber); }
.rmap .k-place .rmap-dot { color: var(--px-ink2); }
.rmap .rmap-led { position: absolute; right: -2px; top: -2px; width: 11px; height: 11px; border: 2px solid #fff; border-radius: 50%; background: #2FB36E; }
.rmap .rmap-label { position: absolute; top: 0; left: 0; height: 24px; padding: 0 9px; border-radius: 12px; white-space: nowrap;
  background: rgba(255,255,255,.95); box-shadow: 0 0 0 1px rgba(18,24,21,.06), 0 4px 10px -6px rgba(18,32,28,.35); font: 750 12.5px/24px var(--px-font); letter-spacing: -.02em; color: var(--px-ink); }
.rmap .rmap-pin.is-dim { opacity: .38; }
.rmap .rmap-pin.is-sel { z-index: 2; }
.rmap .rmap-pin.is-sel .rmap-dot { transform: scale(1.18); background: var(--px-teal); color: #fff; }
.rmap .k-food.is-sel .rmap-dot { background: var(--px-amber); }
.rmap .rmap-pin.is-sel .rmap-label { background: var(--px-ink); color: #fff; }
.rmap .rmap-roompin .rmap-dot { background: var(--px-feno); color: #fff; box-shadow: 0 0 0 4px rgba(47,107,216,.22), 0 6px 14px -6px rgba(18,32,28,.45); }
.rmap .rmap-roompin .rmap-label { background: var(--px-feno); color: #fff; }
.rmap .rmap-area { position: absolute; left: 0; top: 0; height: 18px; white-space: nowrap; font: 800 12px/18px var(--px-font); letter-spacing: -.01em; color: #5E6259;
  text-shadow: 0 0 3px #fff, 0 0 3px #fff, 0 0 2px #fff; }
.rmap .rmap-area.is-sec { font-weight: 700; font-size: 11px; color: #7A7D72; }

/* bottom sheet (inside the map, v2 sheet look) */
.rmap .rmap-sheet { position: absolute; left: 0; right: 0; bottom: 0; z-index: 3; max-height: min(56%, 540px); overflow: auto; overscroll-behavior: contain;
  padding: 0 18px calc(18px + env(safe-area-inset-bottom)); border-radius: 26px 26px 0 0; background: #fff; box-shadow: 0 -14px 44px -12px rgba(18,32,28,.32); }
@media (prefers-reduced-motion: no-preference) { .rmap .rmap-sheet:not([hidden]) { animation: rmap-up .45s var(--px-spring) both; } }
.rmap.is-wide .rmap-sheet { left: 12px; right: auto; top: calc(var(--rmap-bar, 60px) + 12px); bottom: 12px; width: 380px; max-height: none; border-radius: 22px; padding-bottom: 18px; box-shadow: 0 18px 50px -14px rgba(18,32,28,.4); }
.rmap.is-wide .rmap-grab { display: none; }
@keyframes rmap-up { from { transform: translateY(36px); opacity: 0; } to { transform: none; opacity: 1; } }
.rmap .rmap-grab { display: block; width: 40px; height: 5px; margin: 9px auto 2px; border-radius: 3px; background: #D6D2C9; }
.rmap .rmap-sh-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding-top: 6px; }
.rmap .rmap-sh-head h3 { margin: 0; font: 800 20px/1.25 var(--px-font); letter-spacing: -.035em; color: var(--px-ink); }
.rmap .rmap-floor { margin: 4px 0 0; font: 650 13.5px/1.35 var(--px-font); color: var(--px-ink2); }
.rmap .rmap-x { flex: none; display: grid; place-items: center; width: 40px; height: 40px; margin: 0; padding: 0; border: 0; border-radius: 20px; background: #F0EEE8; color: var(--px-ink2); }
.rmap .rmap-photo { margin: 12px 0 0; }
.rmap .rmap-photo img { display: block; width: 100%; aspect-ratio: 5 / 2; object-fit: cover; border-radius: 16px; background: #EFEBE3; }
.rmap .rmap-photo figcaption { margin-top: 4px; font: 600 11px/1.3 var(--px-font); color: var(--px-ink3); }
.rmap .rmap-open { display: flex; align-items: center; gap: 8px; margin: 12px 0 0; font: 750 15px/1.3 var(--px-font); color: var(--px-ink); }
.rmap .rmap-open .rmap-led { position: static; flex: none; width: 9px; height: 9px; border: 0; box-shadow: 0 0 0 3px rgba(47,179,110,.2); }
.rmap .rmap-open .rmap-led.off { background: #C3BEB3; box-shadow: none; }
.rmap .rmap-hint { margin: 8px 0 0; font: 550 14.5px/1.55 var(--px-font); color: var(--px-ink); }
.rmap .rmap-walk { display: flex; align-items: center; gap: 6px; margin: 8px 0 0; font: 700 13.5px/1.3 var(--px-font); color: var(--px-feno); }
.rmap .rmap-walk .rmap-ic { width: 17px; height: 17px; }
.rmap .rmap-note { margin: 6px 0 0; font: 520 13px/1.5 var(--px-font); color: var(--px-ink2); }
.rmap .rmap-lead { margin: 14px 0 0; font: 750 16px/1.45 var(--px-font); color: var(--px-ink); }
.rmap .rmap-src { margin: 12px 0 0; font: 550 11.5px/1.4 var(--px-font); color: var(--px-ink3); }
.rmap .rmap-plan { margin: 14px 0 0; padding: 12px 14px; border-radius: 16px; background: #F6F4EF; }
.rmap .rmap-plan h4 { margin: 0 0 6px; font: 780 13px/1.3 var(--px-font); color: var(--px-ink2); letter-spacing: -.01em; }
.rmap .rmap-plan ul { margin: 0; padding: 0; list-style: none; display: grid; gap: 2px; }
.rmap .rmap-plan li { display: grid; grid-template-columns: 58px 48px 1fr; align-items: center; min-height: 30px; padding: 0 8px; margin: 0 -8px; border-radius: 10px; font: 650 14px/1.3 var(--px-font); color: var(--px-ink); }
.rmap .rmap-plan li time { font-weight: 800; }
.rmap .rmap-plan-d { font: 700 12.5px/1 var(--px-font); color: var(--px-ink2); }
.rmap .rmap-plan li.is-past { color: var(--px-ink3); }
.rmap .rmap-plan li.is-past .rmap-plan-d { color: var(--px-ink3); }
.rmap .rmap-plan li.is-next { background: var(--px-teal-soft); color: var(--px-teal); }
.rmap .rmap-plan li.is-next .rmap-plan-d { color: var(--px-teal); }
.rmap .rmap-call { display: flex; align-items: center; justify-content: center; gap: 8px; min-height: 50px; margin: 14px 0 0; border-radius: 15px;
  background: var(--px-teal); color: #fff; font: 750 15px/1 var(--px-font); text-decoration: none; }
.rmap .rmap-call .rmap-ic { width: 18px; height: 18px; }
.rmap .rmap-rts { display: grid; gap: 8px; margin: 14px 0 0; }
.rmap .rmap-rt { display: flex; align-items: center; gap: 10px; min-height: 50px; margin: 0; padding: 0 14px; border: 0; border-radius: 14px; background: #F4F2ED; color: var(--px-ink); text-align: left; }
.rmap .rmap-rt i { flex: none; width: 12px; height: 12px; border-radius: 6px; background: var(--px-feno); }
.rmap .rmap-rt b { font: 750 15px/1.2 var(--px-font); }
.rmap .rmap-rt span { margin-left: auto; font: 700 14px/1 var(--px-font); color: var(--px-ink2); }
.rmap .rmap-roomform { display: flex; align-items: flex-end; gap: 8px; margin: 16px 0 0; }
.rmap .rmap-roomform label { flex: 1; display: grid; gap: 6px; margin: 0; font: 700 13px/1.3 var(--px-font); color: var(--px-ink2); }
.rmap .rmap-roomform input { width: 100%; min-height: 50px; margin: 0; padding: 0 14px; border: 1px solid #DDD8CE; border-radius: 14px; background: #FBFAF7; color: var(--px-ink);
  font: 750 18px/1 var(--px-font); letter-spacing: .02em; }
.rmap .rmap-roomform input:focus { outline: 0; border-color: var(--px-teal); box-shadow: 0 0 0 3px rgba(15,74,69,.15); }
.rmap .rmap-save, .rmap .rmap-clear { flex: none; min-height: 50px; margin: 0; padding: 0 18px; border: 0; border-radius: 14px; font: 750 15px/1 var(--px-font); }
.rmap .rmap-save { background: var(--px-teal); color: #fff; }
.rmap .rmap-clear { background: #F0EEE8; color: var(--px-ink2); }

/* full-screen dialog */
dialog.rmap-dialog { position: fixed; inset: 0; width: 100%; height: 100%; max-width: none; max-height: none; margin: 0; padding: 0; border: 0; background: var(--px-bg); color: var(--px-ink); overflow: hidden; }
dialog.rmap-dialog[open] { display: flex; flex-direction: column; }
dialog.rmap-dialog::backdrop { background: rgba(14,22,20,.4); }
@media (prefers-reduced-motion: no-preference) { dialog.rmap-dialog[open] { animation: rmap-in .35s var(--px-spring) both; } }
@keyframes rmap-in { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: none; } }
.rmap-dialog .rmap-head { flex: none; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: calc(10px + env(safe-area-inset-top)) 16px 8px; background: #fff; font-family: var(--px-font); }
.rmap-dialog .rmap-head h2 { margin: 0; font: 800 21px/1.2 var(--px-font); letter-spacing: -.035em; color: var(--px-ink); }
.rmap-dialog .rmap-head p { margin: 2px 0 0; font: 600 12.5px/1.3 var(--px-font); color: var(--px-ink3); }
.rmap-dialog .rmap-done { flex: none; min-width: 44px; min-height: 44px; margin: 0; padding: 0 16px; border: 0; border-radius: 22px; background: #F0EEE8; color: var(--px-ink); font: 750 14px/1 var(--px-font); }
.rmap-dialog .rmap-host { position: relative; flex: 1; min-height: 0; }
html.rmap-lock, html.rmap-lock body { overflow: hidden; }
@media (min-width: 761px) { dialog.rmap-dialog { width: min(1100px, calc(100vw - 48px)); height: min(860px, calc(100dvh - 48px)); margin: auto; border-radius: 26px; box-shadow: 0 28px 80px -20px rgba(18,32,28,.5); } }

/* stay-screen card (rendered from JS into #stay-view, beside the 3D entry) */
#stay-view > .rmap-card { display: block; position: relative; width: auto; margin: 0 16px 14px; padding: 0; overflow: hidden; border: 1px solid var(--px-line); border-radius: 24px;
  background: var(--px-card); box-shadow: var(--px-shadow); color: var(--px-ink); text-align: left; font-family: var(--px-font); transition: transform .4s var(--px-spring); }
#stay-view > .rmap-card:active { transform: scale(.98); }
#stay-view > .rmap-card .rmap-card-art { display: block; height: 164px; background: #E8EEE0; }
#stay-view > .rmap-card .rmap-card-art svg { display: block; width: 100%; height: 100%; }
#stay-view > .rmap-card .rmap-card-t { display: block; padding: 13px 48px 15px 16px; }
#stay-view > .rmap-card .rmap-card-t b { display: flex; align-items: center; gap: 7px; font: 800 17px/1.3 var(--px-font); letter-spacing: -.03em; color: var(--px-ink); }
#stay-view > .rmap-card .rmap-card-t b .rmap-ic { width: 19px; height: 19px; color: var(--px-teal); }
#stay-view > .rmap-card .rmap-card-t > span { display: block; margin-top: 3px; font: 600 13.5px/1.45 var(--px-font); color: var(--px-ink2); }
#stay-view > .rmap-card .rmap-card-chev { position: absolute; right: 16px; bottom: 24px; width: 18px; height: 18px; color: var(--px-ink3); }

/* home status pills open the map */
.px-pill[data-rmap-pill] { position: relative; cursor: pointer; transition: transform .35s var(--px-spring); }
.px-pill[data-rmap-pill]:active { transform: scale(.97); }
.px-pill[data-rmap-pill]::after { content: ""; position: absolute; top: 14px; right: 14px; width: 7px; height: 7px; border-top: 2px solid #B9B4AA; border-right: 2px solid #B9B4AA; transform: rotate(45deg); }

/* Siena tour: the map tab replaces the image/3D stage while it is selected */
.snt-dialog[data-snt-map="on"] > .snt-display-bar,
.snt-dialog[data-snt-map="on"] > .snt-room-rail,
.snt-dialog[data-snt-map="on"] > .snt-body { display: none !important; }
.snt-dialog > .snt-map-pane { position: relative; flex: 1; min-height: 0; }
.snt-dialog[data-snt-map="on"] .snt-evidence-badge { display: none; }
