/* Baggo v2 (Design_1, warm paper). Component classes built on tokens.css.
   Used by the guest-first Journey-1 screens; grows as more v2 screens land. */
.v2 { font-family: var(--font); color: var(--ink); background: var(--canvas); min-height: 100%; }
.v2 *, .v2 *::before, .v2 *::after { box-sizing: border-box; }
/* The centred app frame: a white sheet on the warm canvas. On phones it fills the
   viewport (max-width > width), so the canvas never shows; on wide screens the
   margin:auto gutters reveal it and the frame reads as intentional. */
.v2-wrap { max-width: 560px; margin: 0 auto; min-height: 100vh; background: var(--bg); padding: 16px 16px 96px; display: flex; flex-direction: column; gap: var(--sp-5); }
.v2-top { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-3); min-height: 44px; }
.v2-brand { display: flex; align-items: center; gap: 8px; font-weight: 800; font-size: var(--fs-title); letter-spacing: -.01em; }
.v2-link { background: none; border: 0; padding: 10px 6px; min-height: var(--tap); color: var(--focus); font: inherit; font-weight: 600; font-size: var(--fs-sm); cursor: pointer; text-underline-offset: 3px; }
.v2-link:hover { text-decoration: underline; }

.v2-h1 { margin: 0; font-size: var(--fs-h1); line-height: var(--lh-tight); font-weight: 800; letter-spacing: -.02em; text-wrap: balance; }
.v2-h2 { margin: 0; font-size: var(--fs-h2); font-weight: 700; letter-spacing: -.01em; }
.v2-sub { margin: 0; font-size: var(--fs-body); line-height: var(--lh-body); color: var(--slate); text-wrap: pretty; }
.v2-meta { font-family: var(--font-mono); font-size: var(--fs-meta); color: var(--slate); }
.v2-kicker { font-family: var(--font-mono); font-size: var(--fs-micro); letter-spacing: .08em; text-transform: uppercase; color: var(--slate); }

.v2-btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: var(--tap-row-action); padding: 0 20px; border: 0; border-radius: var(--radius-btn); background: var(--ink); color: #fff; font: inherit; font-size: var(--fs-lg); font-weight: 700; cursor: pointer; transition: filter var(--dur) var(--ease); }
.v2-btn:hover { filter: brightness(1.12); }
.v2-btn.sec { background: transparent; color: var(--ink); border: 1.5px solid var(--line-strong); }
.v2-btn.sec:hover { background: var(--surface); filter: none; }
.v2-btn.full { width: 100%; }
.v2-btn:disabled { opacity: .5; cursor: default; filter: none; }

.v2-field { display: flex; flex-direction: column; gap: 6px; }
.v2-field > span { font-size: var(--fs-sm); font-weight: 700; }
.v2-field .opt { font-weight: 400; color: var(--slate); }
.v2-input { width: 100%; min-width: 0; min-height: var(--tap-row-action); padding: 0 14px; border: 1.5px solid var(--line-strong); border-radius: var(--radius-btn); background: var(--bg); font: inherit; font-size: var(--fs-lg); color: var(--ink); }
.v2-input:focus-visible { outline: 3px solid var(--focus); outline-offset: 1px; }
.v2-input.date { font-family: var(--font-mono); font-size: var(--fs-body); }
.v2-input[aria-invalid="true"] { border-color: var(--together); }
.v2-err { margin: 0; font-size: var(--fs-sm); font-weight: 600; color: var(--together-fg); }
.v2-dates { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: 10px; }
.v2-checkline { display: flex; align-items: center; gap: 10px; min-height: var(--tap); font-size: var(--fs-body); cursor: pointer; }
.v2-checkline input { width: 22px; height: 22px; accent-color: var(--ink); }

.v2-card { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-card); padding: var(--sp-4); }

/* profile / choice cards (radiogroup) */
.v2-choices { display: flex; flex-direction: column; gap: 8px; }
.v2-choice { display: flex; align-items: flex-start; gap: 12px; padding: 14px; border: 1.5px solid var(--line); border-radius: var(--radius-card); background: var(--bg); text-align: start; cursor: pointer; font: inherit; }
.v2-choice:hover { border-color: var(--line-strong); }
.v2-choice[aria-checked="true"] { border-color: var(--ink); border-width: 2px; padding: 13px; }
.v2-choice .ring { width: 22px; height: 22px; flex: none; margin-top: 1px; border-radius: 50%; border: 2px solid var(--ink); display: flex; align-items: center; justify-content: center; }
.v2-choice .ring i { width: 10px; height: 10px; border-radius: 50%; background: transparent; }
.v2-choice[aria-checked="true"] .ring i { background: var(--ink); }
.v2-choice .ct { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.v2-choice .ct b { font-size: var(--fs-lg); font-weight: 700; }
.v2-choice .ct small { font-size: var(--fs-sm); color: var(--slate); line-height: 1.35; }

/* starter-list toggles */
.v2-starter { display: flex; align-items: center; gap: 12px; min-height: 52px; padding: 8px 12px; border: 1px solid var(--line); border-radius: var(--radius-card); background: var(--bg); text-align: start; cursor: pointer; font: inherit; width: 100%; }
.v2-starter .box { width: 24px; height: 24px; flex: none; border-radius: 6px; border: 2px solid var(--line-strong); background: var(--bg); color: #fff; display: flex; align-items: center; justify-content: center; }
.v2-starter[aria-checked="true"] .box { background: var(--packed); border-color: var(--packed); }
.v2-starter .st { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.v2-starter .st b { font-size: var(--fs-body); font-weight: 700; }
.v2-starter .st small { font-size: var(--fs-meta); color: var(--slate); }

/* progress */
.v2-progress { height: 8px; border-radius: 4px; background: var(--line); overflow: hidden; }
.v2-progress > i { display: block; height: 100%; background: var(--packed); transition: width var(--dur) var(--ease); }

/* item + list rows */
.v2-rows { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 1px; background: var(--line); border: 1px solid var(--line); border-radius: var(--radius-card); overflow: hidden; }
.v2-item { display: flex; align-items: center; background: var(--bg); }
.v2-item.done { background: #F4FAF8; }
.v2-check { width: var(--tap-row-action); min-height: var(--tap-row-action); flex: none; display: flex; align-items: center; justify-content: center; border: 0; background: transparent; cursor: pointer; }
.v2-check .box { width: 26px; height: 26px; border-radius: 7px; border: 2px solid var(--line-strong); background: var(--bg); color: #fff; display: flex; align-items: center; justify-content: center; transition: background var(--dur), border-color var(--dur); }
.v2-item.done .v2-check .box { background: var(--packed); border-color: var(--packed); }
.v2-item .label { flex: 1; min-width: 0; display: flex; align-items: center; gap: 10px; min-height: 56px; padding: 6px 4px 6px 0; border: 0; background: transparent; text-align: start; cursor: pointer; font: inherit; }
.v2-item .label .emoji { font-size: 18px; flex: none; }
.v2-item .label .nm { min-width: 0; font-size: var(--fs-body); font-weight: 600; line-height: 1.3; color: var(--ink); overflow-wrap: anywhere; }
.v2-item.done .label .nm { color: var(--slate); text-decoration: line-through; }
.v2-item .label .qty { font-size: var(--fs-meta); font-weight: 600; color: var(--slate); flex: none; }
.v2-item .label .star { color: var(--together-fg); display: inline-flex; flex: none; }
.v2-skip { width: var(--tap-row-action); height: var(--tap-row-action); flex: none; margin-inline-end: 4px; border: 1.5px solid var(--line-strong); border-radius: var(--radius-btn); background: var(--bg); color: var(--slate); display: flex; align-items: center; justify-content: center; cursor: pointer; }
.v2-item.skip .v2-skip { background: var(--skip-bg); border-color: var(--skip); color: var(--skip-fg); }
.v2-item.skip .label .nm { color: var(--slate); text-decoration: line-through; }

.v2-listhead { display: flex; align-items: center; gap: 10px; }
.v2-listtabs { display: flex; gap: 8px; overflow-x: auto; padding-bottom: 4px; scrollbar-width: none; }
.v2-listtabs::-webkit-scrollbar { display: none; }
.v2-tab { flex: none; display: inline-flex; align-items: center; gap: 6px; min-height: var(--tap); padding: 0 14px; border-radius: var(--radius-chip); border: 1.5px solid var(--line-strong); background: var(--bg); color: var(--ink); font: inherit; font-size: var(--fs-sm); font-weight: 700; white-space: nowrap; cursor: pointer; }
.v2-tab[aria-selected="true"] { background: var(--ink); color: #fff; border-color: var(--ink); }
.v2-tab .c { font-family: var(--font-mono); font-size: var(--fs-micro); font-weight: 500; opacity: .85; }

.v2-add { display: flex; gap: 8px; }
.v2-add .v2-input { flex: 1; min-width: 0; }

/* trip card (home) */
.v2-trip { display: block; width: 100%; text-align: start; border: 1px solid var(--line); border-radius: var(--radius-card); background: var(--surface); padding: var(--sp-4); cursor: pointer; font: inherit; }
.v2-trip:hover { border-color: var(--line-strong); }
.v2-trip .tn { font-size: var(--fs-h2); font-weight: 800; letter-spacing: -.01em; }
.v2-trip .td { font-family: var(--font-mono); font-size: var(--fs-meta); color: var(--slate); margin-top: 2px; }

.v2-empty { display: flex; flex-direction: column; gap: 12px; align-items: flex-start; padding: 24px 0; }

/* bottom tab bar */
/* Constrained to the frame column (matches .v2-wrap), not full-bleed across a wide viewport. */
.v2-tabbar { position: fixed; left: 0; right: 0; bottom: 0; margin: 0 auto; max-width: 560px; display: flex; background: var(--bg); border-top: 1px solid var(--line); border-left: 1px solid var(--line); border-right: 1px solid var(--line); padding: 4px 4px 10px; }
.v2-tabbar button { flex: 1; min-height: 56px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px; border: 0; background: transparent; color: var(--slate); font: inherit; font-size: var(--fs-micro); font-weight: 700; cursor: pointer; }
.v2-tabbar button[aria-current="page"] { color: var(--ink); }
.v2-tabbar button .pill { display: inline-flex; padding: 3px 16px; border-radius: var(--radius-chip); }
.v2-tabbar button[aria-current="page"] .pill { background: var(--together-bg); }

.v2-toast { position: fixed; left: 16px; right: 16px; bottom: 76px; display: flex; justify-content: center; pointer-events: none; z-index: 60; }
.v2-toast > div { pointer-events: auto; max-width: 440px; width: 100%; display: flex; align-items: center; gap: 10px; padding: 12px 16px; border-radius: var(--radius-card); background: var(--ink); color: #fff; font-size: var(--fs-body); box-shadow: var(--shadow); }

/* Together / Member (signed-in v2) */
.v2-member { display: flex; align-items: center; gap: 12px; width: 100%; text-align: start; border: 1px solid var(--line); border-radius: var(--radius-card); background: var(--bg); padding: 12px 14px; cursor: pointer; font: inherit; min-height: var(--tap-row-action); }
.v2-member:hover { border-color: var(--line-strong); }
.v2-avatar { width: 40px; height: 40px; flex: none; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: #fff; font-weight: 800; font-size: var(--fs-body); }
.v2-member .mi { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.v2-member .mi b { font-size: var(--fs-lg); font-weight: 700; display: flex; align-items: center; gap: 8px; }
.v2-member .mi small { font-size: var(--fs-meta); color: var(--slate); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.v2-pct { font-family: var(--font-mono); font-size: var(--fs-meta); color: var(--slate); flex: none; }
.v2-you { padding: 2px 8px; border-radius: var(--radius-chip); background: var(--surface); border: 1px solid var(--line); font-size: var(--fs-meta); font-weight: 700; }
.v2-feed { display: flex; flex-direction: column; gap: 1px; background: var(--line); border: 1px solid var(--line); border-radius: var(--radius-card); overflow: hidden; }
.v2-feedrow { background: var(--bg); padding: 10px 14px; display: flex; justify-content: space-between; gap: 10px; font-size: var(--fs-sm); }
.v2-feedrow .when { color: var(--muted); flex: none; font-size: var(--fs-meta); }
.v2-ro { display: flex; flex-direction: column; gap: 1px; background: var(--line); border: 1px solid var(--line); border-radius: var(--radius-card); overflow: hidden; }
.v2-roitem { background: var(--bg); padding: 10px 14px; display: flex; align-items: center; gap: 10px; font-size: var(--fs-body); min-height: 44px; }
.v2-roitem .st { flex: none; width: 18px; text-align: center; color: var(--slate); }
.v2-roitem.packed .st { color: var(--packed); }
.v2-roitem.packed .nm, .v2-roitem.skip .nm { color: var(--slate); }
.v2-roitem.skip .nm { text-decoration: line-through; }

/* Signed-in Home + Trip (v2) */
.v2-iconrow { display: flex; align-items: center; gap: 2px; }
.v2-iconbtn { width: var(--tap); height: var(--tap); flex: none; display: flex; align-items: center; justify-content: center; border: 0; border-radius: var(--radius-btn); background: transparent; color: var(--slate); cursor: pointer; }
.v2-iconbtn:hover { background: var(--surface); color: var(--ink); }
.v2-iconbtn.on { color: var(--private-fg); }
.v2-iconbtn.danger:hover { color: var(--together-fg); }
/* extra per-item controls beyond the guest row (private toggle, remove) */
.v2-rowbtn { width: var(--tap); height: var(--tap-row-action); flex: none; display: flex; align-items: center; justify-content: center; border: 0; background: transparent; color: var(--slate); cursor: pointer; }
.v2-rowbtn:hover { color: var(--ink); }
.v2-rowbtn.on { color: var(--private); }
.v2-item.priv { background: var(--private-bg); }
.v2-item.priv .label .nm { color: var(--private-fg); }
.v2-privtag { font-size: var(--fs-meta); font-weight: 700; color: var(--private-fg); flex: none; display: inline-flex; align-items: center; gap: 3px; }
.v2-note { font-size: var(--fs-sm); color: var(--slate); line-height: var(--lh-body); }

/* essentials (progress + named missing list; never a score) */
.v2-ess { border: 1px solid var(--line); border-radius: var(--radius-card); background: var(--surface); padding: 12px 14px; }
.v2-ess > summary { font-size: var(--fs-sm); font-weight: 700; cursor: pointer; list-style: none; display: flex; align-items: center; gap: 8px; }
.v2-ess > summary::-webkit-details-marker { display: none; }
.v2-ess.warn { background: var(--skip-bg); border-color: var(--skip); }
.v2-ess .essrow { display: flex; align-items: center; justify-content: space-between; gap: 10px; min-height: var(--tap); font-size: var(--fs-sm); border-top: 1px solid var(--line); margin-top: 8px; padding-top: 8px; }
.v2-ess .essrow .st { font-family: var(--font-mono); font-size: var(--fs-meta); color: var(--slate); }

/* share panel */
.v2-share { border: 1px solid var(--focus); border-radius: var(--radius-card); background: var(--focus-bg); padding: 14px; display: flex; flex-direction: column; gap: 10px; }
.v2-share .code { font-family: var(--font-mono); font-size: var(--fs-h2); font-weight: 700; letter-spacing: .12em; color: var(--ink); }
.v2-share .row { display: flex; flex-wrap: wrap; gap: 8px; }

/* finish message */
.v2-finish { border-radius: var(--radius-card); padding: 14px; font-size: var(--fs-body); }
.v2-finish.good { background: var(--packed-bg); color: var(--packed-fg); }
.v2-finish.bad { background: var(--skip-bg); color: var(--skip-fg); }
.v2-finish ul { margin: 6px 0 0; padding-inline-start: 20px; }

/* account / overflow sheet */
.v2-scrim { position: fixed; inset: 0; z-index: 70; background: rgba(23,26,31,.4); display: flex; align-items: flex-end; justify-content: center; }
.v2-sheet { width: 100%; max-width: 560px; background: var(--bg); border-radius: 18px 18px 0 0; padding: 10px 10px calc(10px + env(safe-area-inset-bottom, 0px)); box-shadow: 0 -8px 30px rgba(23,26,31,.18); max-height: 86vh; overflow-y: auto; }
.v2-sheet h2 { margin: 6px 10px 8px; font-size: var(--fs-title); }
.v2-sheet-row { display: flex; align-items: center; gap: 12px; width: 100%; min-height: var(--tap-row-action); padding: 10px 12px; border: 0; border-radius: var(--radius-btn); background: transparent; font: inherit; font-size: var(--fs-body); color: var(--ink); text-align: start; cursor: pointer; }
.v2-sheet-row:hover { background: var(--surface); }
.v2-sheet-row .ic { width: 22px; text-align: center; flex: none; }
.v2-sheet-row .badge { margin-inline-start: auto; font-size: var(--fs-meta); font-weight: 700; color: var(--together-fg); }
.v2-sheet-sep { height: 1px; background: var(--line); margin: 6px 10px; }

/* ===== launch v2: auth, legal footer, admin, group ===== */
/* narrower centred column for the sign-in / shared / must-change screens */
.v2-narrow { max-width: 440px; margin: 0 auto; width: 100%; display: flex; flex-direction: column; gap: var(--sp-4); }
.v2-authhead { text-align: center; display: flex; flex-direction: column; align-items: center; gap: 6px; margin-top: 8px; }
.v2-authhead .mark { width: 52px; height: 52px; border-radius: 15px; background: var(--together-bg); color: var(--together-fg); display: flex; align-items: center; justify-content: center; }

/* segmented control (Log in / Create account; admin tabs) */
.v2-seg { display: flex; gap: 4px; padding: 4px; background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-btn); }
.v2-seg button { flex: 1; min-height: 40px; border: 0; border-radius: 6px; background: transparent; color: var(--slate); font: inherit; font-weight: 700; font-size: var(--fs-sm); cursor: pointer; }
.v2-seg button[aria-selected="true"] { background: var(--bg); color: var(--ink); box-shadow: 0 1px 3px rgba(23,26,31,.08); }

/* password field with show/hide */
.v2-pw { display: flex; gap: 8px; }
.v2-pw .v2-input { flex: 1; min-width: 0; }
.v2-pw .peek { flex: none; min-height: var(--tap-row-action); padding: 0 14px; border: 1.5px solid var(--line-strong); border-radius: var(--radius-btn); background: var(--bg); color: var(--ink); font: inherit; font-weight: 600; font-size: var(--fs-sm); cursor: pointer; }

.v2-fine { font-size: var(--fs-sm); color: var(--slate); line-height: var(--lh-body); text-align: center; }
.v2-fine a { color: var(--focus); }
.v2-linkrow { display: flex; flex-direction: column; align-items: center; gap: 8px; }
.v2-footer { margin-top: 8px; padding-top: 16px; border-top: 1px solid var(--line); display: flex; justify-content: center; gap: 16px; flex-wrap: wrap; }
.v2-footer a, .v2-footer button { background: none; border: 0; color: var(--slate); font: inherit; font-size: var(--fs-meta); cursor: pointer; text-decoration: none; padding: 6px; }
.v2-footer a:hover, .v2-footer button:hover { color: var(--ink); text-decoration: underline; }

/* a plain v2 message/alert block (replaces v1 .err/.okmsg) */
.v2-alert { border-radius: var(--radius-btn); padding: 10px 14px; font-size: var(--fs-sm); font-weight: 600; }
.v2-alert.bad { background: var(--skip-bg); color: var(--skip-fg); }
.v2-alert.good { background: var(--packed-bg); color: var(--packed-fg); }

/* admin / group person + stat rows (built on v2-member) */
.v2-stat { display: flex; flex-wrap: wrap; gap: 6px 14px; font-size: var(--fs-meta); color: var(--slate); font-family: var(--font-mono); }
.v2-rowcard { border: 1px solid var(--line); border-radius: var(--radius-card); background: var(--bg); padding: 14px; display: flex; flex-direction: column; gap: 10px; }
.v2-rowcard .top { display: flex; align-items: center; gap: 10px; }
.v2-rowcard .top b { font-size: var(--fs-lg); font-weight: 700; flex: 1; min-width: 0; }
.v2-danger-btn { color: var(--together-fg); border-color: var(--together); }
.v2-by { font-family: var(--font-mono); font-size: var(--fs-micro); color: var(--slate); flex: none; }

/* live countdown (Design_1) */
.v2-cd { display: flex; flex-direction: column; gap: 10px; }
.v2-cd-top { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.v2-cd-date { font-family: var(--font-mono); font-size: var(--fs-meta); color: var(--slate); display: inline-flex; align-items: center; gap: 6px; }
.v2-cd-top .acts { display: flex; gap: 2px; }
.v2-cd-boxes { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; }
.v2-cd-box { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-card); padding: 10px 4px; text-align: center; }
.v2-cd-box b { display: block; font-family: var(--font-mono); font-size: 22px; font-weight: 700; line-height: 1; color: var(--ink); font-variant-numeric: tabular-nums; }
.v2-cd-box span { display: block; margin-top: 4px; font-size: var(--fs-micro); color: var(--slate); text-transform: uppercase; letter-spacing: .04em; }
.v2-cd-note { font-size: var(--fs-sm); color: var(--together-fg); font-weight: 600; }
.v2-cd.mini .v2-cd-boxes { gap: 6px; }
.v2-cd.mini .v2-cd-box { padding: 7px 2px; background: var(--bg); }
.v2-cd.mini .v2-cd-box b { font-size: 18px; }
@media (prefers-reduced-motion: reduce) { .v2-cd-box b { transition: none; } }

/* ================================================================
   v1 PASTEL PALETTE restored over the v2 layout (requested change).
   Only token VALUES and a few colour-only overrides change here;
   every v2 component keeps its structure, size, spacing and layout.
   The four accent MEANINGS (packed / skip / private / together) are
   left intact — still distinct and contrast-tuned per CLAUDE.md.
   Colours below are the original v1 tokens from style.css, verbatim.
   ================================================================ */
body.v2 {
  /* v1 pastel vocabulary */
  --peach: #ffd9c9; --mint: #cdeedc; --lavender: #dcd3f5;
  --sky: #d2e8f7; --butter: #fff1c4; --rose: #ffd3df;

  /* Surfaces remapped to the v1 look: pink page, white cards */
  --bg: #fdf8fb;          /* app frame / page */
  --surface: #ffffff;     /* cards, sheets, seg track */
  --canvas: #f3ebf6;      /* desktop backdrop behind the centred frame */
  --line: #efe3f1;        /* soft pink-lavender hairline */
  --line-strong: #dcd3f5; /* v1 lavender border */

  /* Ink -> v1 plum (contrast-checked on white and on #fdf8fb) */
  --ink: #3b3552; --ink-2: #4a4360; --slate: #635c7d; --muted: #6e6786;

  /* Links / focus -> v1 purple */
  --focus: #7d6bd6; --focus-bg: #efeafc;
}

/* Pastel gradient blobs on the page, anchored to the frame so they
   always show within the visible column at every width. */
body.v2 .v2-wrap {
  background-image:
    radial-gradient(circle at 8% 3%, var(--lavender) 0, transparent 30%),
    radial-gradient(circle at 96% 10%, var(--peach) 0, transparent 26%),
    radial-gradient(circle at 74% 100%, var(--mint) 0, transparent 30%);
}

/* Primary buttons -> peach with plum ink (v1). Secondary & danger keep theirs. */
body.v2 .v2-btn:not(.sec) { background: var(--peach); color: var(--ink); }
body.v2 .v2-btn:not(.sec):hover { filter: brightness(.96); }

/* White inputs on the pink page, lavender border inherited from --line-strong */
body.v2 .v2-input { background: #ffffff; }

/* Classic v1 "white card on pink page" for list/row cards and the activity feed */
body.v2 .v2-rowcard, body.v2 .v2-feedrow { background: #ffffff; }

/* Countdown boxes take the v1 sky / lavender tint */
body.v2 .v2-cd-box { background: var(--sky); border-color: #c2dcf0; }
body.v2 .v2-cd.mini .v2-cd-box { background: var(--lavender); border-color: #cfc2ee; }

/* Selected tabs -> lavender (v1 feel) rather than plum-on-dark */
body.v2 .v2-tab[aria-selected="true"] { background: var(--lavender); color: var(--ink); border-color: #c3b4ef; }
body.v2 .v2-seg button[aria-selected="true"] { background: #ffffff; color: var(--ink); }

/* ---- Baggo logo lockup (mark + wordmark + tagline) ---- */
.baggo-mark { display: block; flex: none; }
.v2-brand { gap: 9px; }
.v2-brandtext { display: inline-flex; flex-direction: column; justify-content: center; line-height: 1; }
.v2-brand b { font-weight: 800; letter-spacing: -.03em; }
.v2-brandtext .tag { margin-top: 3px; font-style: normal; font-weight: 600; font-size: var(--fs-sm); letter-spacing: .01em; text-transform: none; color: var(--ink); }
/* Stacked lockup for the Welcome + sign-in heroes: mark over "Baggo" over the tagline */
.v2-brand.lockup { flex-direction: column; align-items: center; text-align: center; gap: 10px; }
.v2-brand.lockup .v2-brandtext { align-items: center; gap: 2px; }
.v2-brand.lockup b { font-size: 34px; line-height: .95; }
.v2-brand.lockup .tag { margin-top: 5px; font-size: 15px; }  /* ~45% of the 34px lockup wordmark */

/* ---- Landing "why" strip + guided-survey progress dots ---- */
.v2-why { display: flex; flex-direction: column; gap: 12px; width: 100%; margin-top: 20px; }
.v2-why .item { display: flex; align-items: flex-start; gap: 12px; }
.v2-why .item .e { font-size: 22px; line-height: 1.25; flex: none; }
.v2-why .item .t b { display: block; font-size: var(--fs-lg); font-weight: 700; }
.v2-why .item .t small { font-size: var(--fs-sm); color: var(--slate); }
.v2-dots { display: flex; gap: 8px; justify-content: center; margin: 2px 0 8px; }
.v2-dots .dot { width: 8px; height: 8px; border-radius: 999px; background: var(--line-strong); }
.v2-dots .dot.on { background: var(--together); }
.v2-dots .dot.done { background: var(--packed); }

/* ---- Emergency-contacts wallet card (print only) ---- */
#walletCard, #printSheet { display: none; }
@media print {
  body > *:not(#walletCard):not(#printSheet) { display: none !important; }
  #walletCard, #printSheet { display: block !important; position: absolute; left: 0; top: 0; font-family: var(--font); color: #000; }
  #walletCard { width: 85mm; padding: 10mm 8mm; }
  #walletCard h3 { margin: 0 0 4px; font-size: 14pt; }
  #walletCard .wc-owner { font-size: 10pt; color: #333; margin-bottom: 8px; }
  #walletCard .wc-row { display: flex; justify-content: space-between; gap: 10px; padding: 5px 0; border-bottom: 1px solid #ccc; font-size: 11pt; }
  #printSheet { padding: 12mm; }
  #printSheet h2 { font-size: 16pt; margin: 0 0 8px; }
  #printSheet h3 { font-size: 12pt; margin: 10px 0 4px; }
  #printSheet ul { margin: 0; padding-left: 18px; }
  #printSheet li { font-size: 11pt; padding: 1px 0; }
}

/* ---- Share & save bottom sheet + confetti ---- */
.v2-sheet-scrim { position: fixed; inset: 0; z-index: 1000; background: rgba(23, 26, 31, .4); display: flex; align-items: flex-end; justify-content: center; }
/* The Share & save sheet reuses the base .v2-sheet look; this modifier only adds the stacked layout
   and the slide-up (the app menu keeps the plain .v2-sheet — unchanged). */
.v2-sheet-share { display: flex; flex-direction: column; gap: 10px; animation: v2-sheet-up var(--dur) var(--ease); }
.v2-sheet-grip { width: 40px; height: 4px; border-radius: 999px; background: var(--line-strong); align-self: center; margin: 2px 0 6px; flex: none; }
.v2-sheet-qr-wrap { display: flex; justify-content: center; padding: 6px 0; }
.v2-confetti { position: fixed; inset: 0; z-index: 1200; pointer-events: none; }
@keyframes v2-sheet-up { from { transform: translateY(18px); } to { transform: none; } }
@media (prefers-reduced-motion: reduce) { .v2-sheet-share { animation: none; } }

/* ======================================================================
   Desktop / responsive website layout (Design_6 handoff).
   Phones (<768px) are untouched: the rail is display:none and the card
   wrappers are display:contents, so the mobile bottom-tab layout is byte
   -for-byte unchanged. At >=768px the app becomes a two-column website
   with a left navigation rail (icon-only), and at >=1024px the rail gains
   labels and the content column widens — matching the approved prototype.
   ====================================================================== */
.v2-rail { display: none; }
.v2-cardgrid { display: contents; }   /* phones: wrapper is transparent; cards flow in .v2-wrap as before */
.v2-memgrid { display: flex; flex-direction: column; gap: 10px; }   /* phones: the family members list, unchanged */

@media (min-width: 768px) {
  /* two-column shell: a fixed paper rail beside the scrolling white content sheet, on the warm canvas.
     Only screens that carry the rail (.has-rail) adopt the website layout; the no-rail Welcome and
     survey keep their centred narrow hero. */
  .main.v2.has-rail { max-width: none; margin: 0; padding: 0; display: flex; flex-direction: row; align-items: stretch; min-height: 100vh; background: var(--canvas); }
  .v2-rail {
    display: flex; flex-direction: column; gap: 4px; flex: none; box-sizing: border-box;
    width: 86px; padding: 18px 12px; background: var(--surface); border-inline-end: 1px solid var(--line);
    position: sticky; top: 0; height: 100vh; overflow-y: auto;
  }
  .v2-rail-logo { display: flex; align-items: center; gap: 10px; padding: 2px 6px 14px; justify-content: center; }
  .v2-rail-logo .baggo-mark { width: 30px; height: 30px; flex: none; }
  .v2-rail-word { display: none; font-weight: 800; font-size: 19px; letter-spacing: -.02em; color: var(--ink); }
  .v2-rail-btn, .v2-rail-acct {
    display: flex; align-items: center; gap: 12px; min-height: 50px; padding: 8px 12px; position: relative;
    border: 0; border-radius: 10px; background: transparent; color: var(--ink);
    font: inherit; font-size: 15px; font-weight: 600; cursor: pointer; justify-content: center;
  }
  .v2-rail-btn:hover, .v2-rail-acct:hover { background: var(--canvas); }
  .v2-rail-btn.cur { background: var(--canvas); font-weight: 700; }
  .v2-rail-ic { display: flex; flex: none; }
  .v2-rail-label, .v2-rail-accttext, .v2-rail-badge { display: none; }
  .v2-rail-spacer { flex: 1; min-height: 8px; }
  .v2-rail-avatar { width: 34px; height: 34px; flex: none; border-radius: 50%; background: var(--together); color: #fff; display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 14px; }
  .v2-rail-avatar.ghost { background: var(--ink); }
  .v2-rail-accttext { flex-direction: column; gap: 1px; min-width: 0; text-align: start; }
  .v2-rail-acctname { font-size: 14px; font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .v2-rail-acctsub { font-size: 12px; color: var(--slate); }

  /* content column: a centred white sheet, no fixed bottom bar */
  .has-rail .v2-wrap { flex: 1; min-width: 0; max-width: 760px; margin: 0 auto; min-height: 100vh; padding: 26px 28px 44px !important; }
  /* the mobile chrome the rail replaces */
  .has-rail .v2-tabbar { display: none; }
  .has-rail .v2-top .v2-brand, .has-rail .v2-topmenu, .has-rail .v2-top .v2-link { display: none; }

  /* trip / member lists flow into a responsive grid instead of a single column */
  .has-rail .v2-cardgrid, .has-rail .v2-memgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); gap: 14px; align-items: start; }
}

@media (min-width: 1024px) {
  .v2-rail { width: 248px; }
  .v2-rail-logo, .v2-rail-btn, .v2-rail-acct { justify-content: flex-start; }
  .v2-rail-word, .v2-rail-label, .v2-rail-accttext { display: flex; }
  .v2-rail-badge { display: inline-flex; margin-inline-start: auto; background: var(--together-bg); color: var(--together-fg); font-size: var(--fs-meta); font-weight: 700; padding: 1px 9px; border-radius: var(--radius-chip); }
  .has-rail .v2-wrap { max-width: 1100px; padding: 32px 40px 48px !important; }
}

/* Mode-specific travel tips: a collapsed panel on the Trip screen when a transport mode is set.
   Preparation reminders only — never a stated visa/entry/health/customs rule. New component (no
   restyle of existing ones); uses existing tokens. The +/- affordance is a static glyph swap, so
   there is no animation to disable under reduced-motion. The summary is a >=44px touch target. */
.v2-tips { background: var(--bg); border: 1px solid var(--line); border-radius: var(--radius-card); overflow: hidden; }
.v2-tips > summary { display: flex; align-items: center; gap: 8px; min-height: 44px; padding: 10px 14px; cursor: pointer; font-weight: 700; font-size: var(--fs-body); color: var(--ink); list-style: none; }
.v2-tips > summary::-webkit-details-marker { display: none; }
.v2-tips > summary::after { content: "＋"; margin-inline-start: auto; color: var(--slate); font-weight: 700; }
.v2-tips[open] > summary::after { content: "－"; }
.v2-tips[open] > summary { border-bottom: 1px solid var(--line); }
.v2-tips ul { margin: 0; padding: 10px 14px 12px 32px; display: flex; flex-direction: column; gap: 6px; }
.v2-tips li { font-size: var(--fs-body); line-height: var(--lh-body); color: var(--ink-2); }
