/* Accepted C01-C06 / R01-R07. Page-owned presentation; source still owns all account states. */
:is(html:has(#passport-title), html:has(#rank-title), html:has(#me-title), html:has(.app-shell--login), html:has(.app-shell--onboard)) [hidden] { display: none !important; }
:is(.checkin-v3-page, .checkin-v3-result-page, html:has(#passport-title), html:has(#rank-title), html:has(#me-title), html:has(.app-shell--login), html:has(.app-shell--onboard)) {
  --journey-paper: color-mix(in srgb, var(--color-surface) 85%, white);
  --journey-wash: color-mix(in srgb, var(--color-primary-bright) 12%, var(--color-canvas));
}
:is(.checkin-v3-page, html:has(#passport-title), html:has(#rank-title), html:has(#me-title)) .screen-stage {
  background: transparent; border-radius: 0; box-shadow: none;
}
:is(.checkin-v3-page, html:has(#passport-title), html:has(#rank-title), html:has(#me-title)) .page-head h1 {
  font-size: clamp(1.65rem, 7.3vw, 2.5rem); line-height: 1.45;
}
:is(.checkin-v3-page, html:has(#passport-title), html:has(#rank-title), html:has(#me-title)) .section-heading h2 {
  font-size: clamp(1.25rem, 5.5vw, 1.65rem); line-height: 1.5;
}
/* C01 readiness/photo/action hierarchy, C02 large status rows. */
html.checkin-v3-page .scan-section { display: block; padding: 0 var(--space-gutter) 1rem; }
html.checkin-v3-page .checkin-v3-card { max-width: none; width: 100%; gap: .75rem; padding: 1rem; border: 0; border-radius: 1.25rem; background: var(--journey-paper); box-shadow: var(--shadow-control); }
html.checkin-v3-page .checkin-v3-card__head { gap: .75rem; }
html.checkin-v3-page .checkin-v3-card__icon { width: 3.25rem; height: 3.25rem; background: var(--journey-wash); }
html.checkin-v3-page .checkin-v3-card__icon .icon { width: 1.9rem; height: 1.9rem; }
html.checkin-v3-page .checkin-v3-card__title { font-size: 1.4rem; }
html.checkin-v3-page .checkin-v3-fix { justify-self: start; background: color-mix(in srgb, var(--color-tint-chill) 42%, white); border-radius: .8rem; }
html.checkin-v3-page .checkin-v3-policy:empty { display: none; }
html.checkin-v3-page .checkin-v3-subject { display: grid; grid-template-columns: minmax(0,1fr); max-width: none; padding: 0; border: 0; gap: .6rem; border-radius: 0; background: transparent; }
html.checkin-v3-page .checkin-v3-subject__photo { width: 100%; aspect-ratio: 1.95; border-radius: .8rem; }
html.checkin-v3-page .checkin-v3-subject__body { grid-template-columns: minmax(0,1fr) auto; gap: .35rem .6rem; }
html.checkin-v3-page .checkin-v3-subject__name { margin: 0; grid-column: 1 / -1; font-size: 1.25rem; }
html.checkin-v3-page .checkin-v3-subject__gate { padding: .2rem .55rem; border-radius: .65rem; background: var(--journey-wash); text-align: center; }
html.checkin-v3-page .checkin-v3-subject__gate[data-eligible="true"] { background: color-mix(in srgb,var(--color-success) 12%,white); }
html.checkin-v3-page .checkin-v3-actions { gap: .6rem; }
html.checkin-v3-page .checkin-v3-actions :is(.wide-button,.ghost-button) { min-height: 3.1rem; border-radius: .9rem; font-size: 1rem; }
html.checkin-v3-page .checkin-v3-actions .ghost-button { border-color: var(--color-primary); color: var(--color-primary); }
html.checkin-v3-page .checkin-v3-device-test { border: 1px solid var(--color-border); background: var(--color-canvas); border-radius: .9rem; padding: 0 .75rem; }
html.checkin-v3-page .checkin-v3-device-test summary { justify-content: space-between; min-height: 3rem; }
html.checkin-v3-page .checkin-v3-device-test summary::after { content: "⌄"; font-size: 1.3rem; }
html.checkin-v3-page .checkin-v3-device-test[open] { padding-bottom: .75rem; }
html.checkin-v3-page .checkin-list { display: grid; gap: .75rem; border: 0; background: transparent; box-shadow: none; }
html.checkin-v3-page .checkin-row { border: 0; border-radius: 1rem; background: var(--journey-paper); box-shadow: var(--shadow-control); overflow: hidden; }
html.checkin-v3-page .checkin-row:first-child .checkin-row__link,
html.checkin-v3-page .checkin-row__link { grid-template-columns: minmax(6.25rem,35%) minmax(0,1fr) 1rem; gap: .65rem; padding: .6rem; min-height: 8.5rem; }
html.checkin-v3-page .checkin-row:first-child .checkin-row__photo,
html.checkin-v3-page .checkin-row__photo { width: 100%; height: 100%; min-height: 7.25rem; aspect-ratio: 1; border-radius: .7rem; }
html.checkin-v3-page .checkin-row__name { font-size: 1rem; line-height: 1.5; }
html.checkin-v3-page .checkin-row__body { gap: .35rem; }
html.checkin-v3-page .checkin-row__state { font-size: .8125rem; }
html.checkin-v3-page .checkin-row__stamp-state { display: block; padding: .4rem .45rem; border-radius: .55rem; color: var(--color-primary); background: var(--journey-wash); }
/* C03 central result; no decoration appears without an earned receipt. */
html.checkin-v3-result-page .payoff { padding-top: 1.3rem; gap: .65rem; }
html.checkin-v3-result-page .payoff-stamp { width: 8rem; height: 8rem; }
html.checkin-v3-result-page .payoff-title { font-size: clamp(1.9rem, 8.8vw, 3rem); line-height: 1.4; }
html.checkin-v3-result-page .payoff-place { font-size: 1.2rem; line-height: 1.5; }
html.checkin-v3-result-page .payoff-receipt { border: 0; background: var(--journey-wash); color: var(--color-primary); padding: .5rem 1rem; font-size: 1rem; }
html.checkin-v3-result-page .payoff-actions { gap: .5rem; margin-top: .6rem; }
html.checkin-v3-result-page .payoff-actions :is(.wide-button,.ghost-button) { padding-inline: .6rem; border-radius: .9rem; min-height: 3rem; line-height: 1.4; font-size: .9rem; }
html.checkin-v3-result-page .payoff-photo { aspect-ratio: 1.95; clip-path: none; border-radius: 1rem; }
html.checkin-v3-result-page .payoff-story { padding-top: 1.25rem; }
html.checkin-v3-result-page .payoff-story__title { font-size: 1.55rem; }
html.checkin-v3-result-page .payoff-story__line { font-size: 1rem; line-height: 1.7; }
html.checkin-v3-result-page .payoff-progress { border-radius: 1rem; padding: 1rem; background: var(--journey-paper); box-shadow: none; }
/* C04 book summary, stamps as legible catalogued rows. */
html:has(#passport-title) .passport--page { padding-top: 0; }
html:has(#passport-title) .passport-cover-photo { width: 100%; margin: 0 0 .75rem; aspect-ratio: 2; border-radius: 1rem; clip-path: none; }
html:has(#passport-title) .passport-card { margin: 0; padding: 1.1rem 1.1rem 1rem 1.55rem; border: 1px solid var(--color-border); border-left: .55rem solid var(--color-primary); border-radius: 1rem; background: var(--journey-paper); box-shadow: var(--shadow-card); }
html:has(#passport-title) .passport-main { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: .6rem 1rem; align-items: start; }
html:has(#passport-title) .passport-ring { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
html:has(#passport-title) .journey-book-count { display: grid; gap: .4rem; align-content: center; min-height: 5.5rem; font-size: clamp(1.8rem,8vw,3rem); line-height: 1.25; font-weight: 700; font-variant-numeric: tabular-nums; }
html:has(#passport-title) .journey-book-count::after { content: ""; height: .55rem; width: 100%; border-radius: 1rem; background: linear-gradient(to right,var(--color-primary) var(--journey-progress),var(--color-surface-sunken) var(--journey-progress)); }
html:has(#passport-title) .passport-copy { display: contents; }
html:has(#passport-title) .passport-tier { margin: 0; align-self: center; font-size: .9rem; padding-left: .8rem; border-left: 1px solid var(--color-border); }
html:has(#passport-title) [data-passport="points"] { color: var(--color-primary); font-family: var(--font-body); font-size: clamp(1.4rem,6.5vw,2.4rem); line-height: 1.3; }
html:has(#passport-title) .passport-line { font-size: .9rem; line-height: 1.55; margin: .25rem 0; }
html:has(#passport-title) .passport-line strong { display: block; font-size: 1.15rem; }
html:has(#passport-title) .tier-track { margin-top: .7rem; padding: .65rem 0 0; border-top: 1px solid var(--color-border); }
html:has(#passport-title) .tier { width: 2.15rem; height: 2.15rem; font-size: .875rem; }
html:has(#passport-title) .stamp-grid { grid-template-columns: minmax(0,1fr); gap: .65rem; }
html:has(#passport-title) .stamp { display: grid; aspect-ratio: auto; grid-template-columns: 4.75rem minmax(0,1fr); grid-template-rows: auto auto; gap: .1rem .75rem; align-items: center; justify-items: start; min-height: 6rem; padding: .5rem .85rem; border: 0; border-radius: 1rem; background: var(--journey-paper); text-align: start; box-shadow: var(--shadow-control); }
html:has(#passport-title) .stamp::before { display: none; }
html:has(#passport-title) :is(.stamp,.badge):not(.is-on) .emblem-fallback { display: block; }
html:has(#passport-title) .stamp:has(.stamp__emblem[hidden]) .emblem-fallback,
html:has(#passport-title) .badge:has(.badge__emblem[hidden]) .emblem-fallback { display: block; }
html:has(#passport-title) .stamp > .stamp__emblem { grid-row: 1 / 3; grid-column: 1; width: 4.75rem; height: 4.75rem; }
html:has(#passport-title) .stamp > .icon { grid-row: 1 / 3; grid-column: 1; width: 2rem; height: 2rem; justify-self: center; }
html:has(#passport-title) .stamp > span { grid-column: 2; align-self: end; overflow: visible; white-space: normal; text-overflow: clip; font-size: 1rem; line-height: 1.55; }
html:has(#passport-title) .stamp-date { grid-column: 2; align-self: start; font-size: .85rem; }
html:has(#passport-title) .stamp:not(.is-on) { min-height: 5rem; border: 1px dashed var(--color-border); box-shadow: none; background: color-mix(in srgb,var(--color-surface-sunken) 60%,var(--color-surface)); }
html:has(#passport-title) .stamp:not(.is-on) > span { grid-row: 1 / 3; align-self: center; }
/* C05 earned badges remain information; history rows remain actual links. */
html:has(#passport-title) .badge-grid { grid-template-columns: repeat(3,minmax(0,1fr)); gap: .65rem; }
html:has(#passport-title) .badge.is-on { grid-column: 1 / -1; display: grid; grid-template-columns: 4.75rem minmax(0,1fr); gap: .2rem .7rem; align-items: center; justify-items: start; padding: .65rem .85rem; min-height: 6rem; border: 0; border-radius: 1rem; background: var(--journey-paper); text-align: start; }
html:has(#passport-title) .badge.is-on .badge__mark { grid-row: 1 / 3; width: 4.75rem; height: 4.75rem; }
html:has(#passport-title) .badge.is-on .badge__emblem { width: 4.75rem; height: 4.75rem; }
html:has(#passport-title) .badge.is-on .badge__name { align-self: end; font-size: 1rem; }
html:has(#passport-title) .badge.is-on .badge__rule { align-self: start; font-size: .875rem; }
html:has(#passport-title) .badge:not(.is-on) { border: 0; border-radius: .85rem; background: var(--journey-paper); padding: .75rem .4rem; }
html:has(#passport-title) .badge:not(.is-on) .badge__mark { width: 3.5rem; height: 3.5rem; background: var(--color-surface-sunken); }
html:has(#passport-title) .badge:not(.is-on) .badge__name { font-size: .875rem; }
html:has(#passport-title) .badge:not(.is-on) .badge__rule { font-size: .75rem; }
html:has(#passport-title) .memories { padding-top: .75rem; border-top: 1px solid var(--color-border); }
html:has(#passport-title) .memory-list { display: grid; gap: .65rem; counter-reset: journey-memory; padding-left: 3.1rem; }
html:has(#passport-title) .memory-row,
html:has(#passport-title) .memory-row:first-child { display: grid; min-height: 4rem; margin: 0; padding: .75rem 1rem; border-radius: .8rem; background: var(--journey-paper); box-shadow: none; overflow: visible; counter-increment: journey-memory; }
html:has(#passport-title) .memory-row::before { content: counter(journey-memory); position: absolute; left: -2.1rem; top: .85rem; display: grid; place-items: center; width: 1.6rem; height: 1.6rem; border-radius: 50%; background: var(--color-primary); color: var(--color-on-primary); font-size: .85rem; }
html:has(#passport-title) .memory-row:not(:last-child)::after { content: ""; position: absolute; width: 1px; top: 2.45rem; bottom: -1.6rem; left: -1.3rem; background: var(--color-primary-bright); opacity: .45; }
html:has(#passport-title) .memory-photo { display: none; }
html:has(#passport-title) .memory-body,
html:has(#passport-title) .memory-row:first-child .memory-body { position: static; background: none; border: 0; padding: 0; }
html:has(#passport-title) .memory-name { font-size: 1rem; }
html:has(#passport-title) .memory-date { font-size: .8rem; }
html:has(#passport-title) .reward-teaser { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: .6rem; }
html:has(#passport-title) .reward-card,
html:has(#passport-title) .rank-row-link { margin: 0; border-radius: 1rem; background: var(--journey-paper); padding: .8rem; min-height: 5rem; box-shadow: none; font-size: .9rem; }
html:has(#passport-title) .reward-card { grid-template-columns: minmax(0,1fr) auto; }
html:has(#passport-title) .reward-mark { display: none; }
/* C06 podium and readable ledger. */
html:has(#rank-title) .page-head { text-align: center; }
html:has(#rank-title) .page-head h1 { font-size: 2.2rem; }
html:has(#rank-title) .section-swash { display: none; }
html:has(#rank-title) .rank-windows { gap: 0; border: 1px solid var(--color-border); border-radius: 2rem; background: var(--journey-paper); overflow: hidden; }
html:has(#rank-title) .rank-window span { padding: .65rem .35rem; font-size: .9rem; }
html:has(#rank-title) .rank-window input:checked + span { background: var(--color-primary); color: var(--color-on-primary); border-radius: 2rem; }
html:has(#rank-title) :is(.ux13-board-status,.rank-basis[data-rank="period"]) { text-align: center; font-size: .9rem; }
html:has(#rank-title) .podium { margin-top: 1.4rem; padding: 1.5rem .5rem 0; border-radius: 0; background: transparent; box-shadow: none; }
html:has(#rank-title) .podium::after { display: none; }
html:has(#rank-title) .podium-rays { opacity: .35; }
html:has(#rank-title) .podium-figure { width: 3.5rem; height: 3.5rem; box-shadow: none; font-size: 1.5rem; }
html:has(#rank-title) .podium-step--1 .podium-figure { width: 4rem; height: 4rem; color: var(--color-ink); background: var(--color-tint-food); }
html:has(#rank-title) .podium-plinth { min-height: 6rem; padding: 1.2rem .3rem .75rem; border-radius: 50% 50% .5rem .5rem / .8rem .8rem .5rem .5rem; background: var(--journey-wash); }
html:has(#rank-title) .podium-step--1 .podium-plinth { min-height: 7.4rem; background: color-mix(in srgb,var(--color-tint-merit) 65%,var(--color-surface)); }
html:has(#rank-title) .podium-step--3 .podium-plinth { min-height: 5.5rem; }
html:has(#rank-title) .podium-rank { width: 1.8rem; height: 1.8rem; background: var(--color-surface-sunken); font-size: 1rem; box-shadow: 0 0 0 2px var(--color-surface); }
html:has(#rank-title) .podium-step--1 .podium-rank { background: var(--color-sun-500); color: var(--color-ink); }
html:has(#rank-title) .podium-name { min-height: 0; font-size: .9rem; line-height: 1.5; }
html:has(#rank-title) .podium-points { font-size: .8rem; }
html:has(#rank-title) .rank-list { display: grid; gap: .55rem; background: transparent; box-shadow: none; overflow: visible; }
html:has(#rank-title) .rank-row { display: grid; grid-template-columns: 1.2rem 2.2rem minmax(0,1fr) auto; gap: .5rem; padding: .8rem .7rem; border: 0; border-radius: .8rem; background: var(--journey-paper); }
html:has(#rank-title) .rank-row.is-me { background: var(--journey-wash); }
html:has(#rank-title) .rank-row :is(.rank-place,.rank-avatar) { grid-row: 1; }
html:has(#rank-title) .rank-row .rank-name { grid-column: 3; font-size: .9rem; }
html:has(#rank-title) .rank-row .rank-points { grid-column: 4; font-size: .85rem; color: var(--color-ink); }
html:has(#rank-title) .rank-standing { margin-top: 1.3rem; border: 0; border-radius: 1rem; padding: 1.2rem; background: var(--journey-paper); color: var(--color-ink); box-shadow: none; }
html:has(#rank-title) :is(.rank-standing__label,.rank-standing__place,.rank-standing__of,.rank-standing__points,.rank-standing__gap) { color: var(--color-ink); }
html:has(#rank-title) .rank-standing__place { font-size: 2rem; }
html:has(#rank-title) .rank-standing__avatar { display: none; }
/* R01/R02 account summary, native section shortcuts, saved rows and settings. */
html:has(#me-title) .profile-folio { display: grid; grid-template-columns: minmax(0,1fr) auto; border: 0; border-radius: 1rem; box-shadow: none; background: transparent; gap: 0; overflow: visible; }
html:has(#me-title) .profile-folio .profile-card { border-radius: 1rem 0 0 1rem; padding: .85rem; background: var(--journey-paper); gap: .65rem; min-height: 6rem; }
html:has(#me-title) .profile-folio .avatar { width: 3.3rem; height: 3.3rem; background: var(--journey-wash); box-shadow: none; }
html:has(#me-title) .profile-folio .profile-name { font-size: 1.25rem; }
html:has(#me-title) .profile-folio .profile-sub { font-size: .75rem; line-height: 1.55; }
html:has(#me-title) .profile-folio > .ghost-button { align-self: stretch; display: flex; align-items: center; justify-content: center; padding: .6rem; width: auto; max-width: 7rem; margin: 0; border: 0; border-radius: 0 1rem 1rem 0; background: var(--journey-paper); font-size: .8rem; }
html:has(#me-title) .profile-folio > .ghost-button span { padding: .7rem .5rem; border-radius: .6rem; background: var(--color-primary); color: var(--color-on-primary); }
html:has(#me-title) .profile-folio > .ghost-button .icon { display: none; }
html:has(#me-title) .profile-folio .stat-trio { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 0; margin: .7rem 0 0; padding: .8rem 0; border: 0; border-radius: 1rem; background: var(--journey-wash); }
html:has(#me-title) .profile-folio .stat-trio strong { font-size: 1.9rem; color: var(--color-ink); line-height: 1.3; }
html:has(#me-title) .profile-folio .stat-trio li { padding: 0 .5rem; }
html:has(#me-title) .profile-folio .stat-trio span { font-size: .85rem; }
html:has(#me-title) .profile-shortcuts { display: grid; grid-template-columns: 1fr; gap: .6rem; margin-top: .8rem; }
html:has(#me-title) .profile-shortcuts a { display: flex; gap: .75rem; justify-content: start; min-height: 4rem; padding: .6rem .8rem; border: 0; border-radius: 1rem; background: var(--journey-paper); color: var(--color-ink); font-size: 1.1rem; font-weight: 700; }
.journey-shortcut-mark { display: grid; place-items: center; flex: 0 0 2.8rem; width: 2.8rem; height: 2.8rem; border-radius: .8rem; background: var(--journey-wash); color: var(--color-primary); }
.journey-shortcut-arrow { margin-left: auto; }
html:has(#me-title) .saved .card-rail { display: grid; grid-template-columns: 1fr; gap: .7rem; overflow: visible; scroll-snap-type: none; padding-inline: var(--space-gutter); }
html:has(#me-title) .saved .place-card { width: auto; min-width: 0; margin: 0; border: 0; border-radius: 1rem; background: var(--journey-paper); box-shadow: none; }
html:has(#me-title) .saved .place-link { display: grid; grid-template-columns: minmax(0,42%) minmax(0,1fr); min-height: 6.75rem; gap: .75rem; }
html:has(#me-title) .saved .place-photo { width: 100%; height: 100%; min-height: 6.75rem; aspect-ratio: 1.4; border-radius: .8rem; }
html:has(#me-title) .saved .place-body { display: grid; align-content: center; gap: .3rem; padding: .7rem .7rem .7rem 0; }
html:has(#me-title) .saved .place-name { font-size: 1rem; line-height: 1.5; white-space: normal; }
html:has(#me-title) .saved .place-meta { font-size: .8rem; }
html:has(#me-title) .setting-list { border: 0; border-radius: 1rem; box-shadow: none; background: var(--journey-paper); padding: 0 .75rem; }
html:has(#me-title) .setting-row { min-height: 4.4rem; padding: .8rem 0; gap: .65rem; border-color: var(--color-border); }
html:has(#me-title) .setting-mark { width: 2.8rem; height: 2.8rem; flex: 0 0 2.8rem; border-radius: 50%; background: var(--journey-wash); }
html:has(#me-title) .setting-mark .icon { width: 1.5rem; height: 1.5rem; }
html:has(#me-title) .setting-name { font-size: 1rem; line-height: 1.5; }
html:has(#me-title) .setting-sub { font-size: .875rem; line-height: 1.55; }
html:has(#me-title) .setting-value { max-width: 6rem; overflow-wrap: anywhere; font-size: .8rem; }
html:has(#me-title) .setting-row:has(.setting-copy):not(:has(a,button,input)) { background: color-mix(in srgb,var(--color-canvas) 70%,white); border-radius: .7rem; padding-inline: .5rem; }
html:has(#me-title) .lang-choice { padding-inline: .7rem; justify-content: center; flex: 1; }
html:has(#me-title) .lang-choice:has(input:checked) { background: var(--color-primary); border-color: var(--color-primary); }
/* R03 existing focus-trapped dialog. */
html:has(#me-title) [data-name-sheet] { align-items: end; padding: 0; padding-bottom: env(safe-area-inset-bottom,0px); backdrop-filter: blur(4px); }
html:has(#me-title) [data-name-sheet] .confirm-card { position: relative; width: min(100%,36rem); max-height: 90dvh; margin: 0; padding: 2rem 1.25rem 1.25rem; border-radius: 1.6rem 1.6rem 0 0; background: var(--journey-paper); overflow-y: auto; }
html:has(#me-title) [data-name-sheet] .confirm-card::before { content: ""; position: absolute; top: .6rem; left: calc(50% - 1.6rem); width: 3.2rem; height: .25rem; border-radius: 1rem; background: var(--color-border); }
.journey-name-mark { display: grid; place-items: center; width: 4.5rem; height: 4.5rem; margin: 0 auto .6rem; border-radius: 1.3rem; background: var(--journey-wash); color: var(--color-primary); }
.journey-name-mark .icon { width: 2.4rem; height: 2.4rem; }
html:has(#me-title) #name-sheet-title { text-align: center; font-size: 1.6rem; line-height: 1.5; }
html:has(#me-title) .confirm-line { font-size: .9rem; text-align: center; line-height: 1.65; }
.journey-field-label { display: block; margin: 1rem 0 .4rem; font-weight: 700; }
html:has(#me-title) [data-name-input] { width: 100%; min-height: 3.4rem; font-size: 1.1rem; }
html:has(#me-title) .confirm-actions { display: grid; grid-template-columns: 1fr; gap: .7rem; margin-top: 1rem; }
html:has(#me-title) .confirm-actions button { min-height: 3.2rem; border-radius: .85rem; }
/* R04 guest-first entry; provider availability is untouched. */
.app-shell--login .login { gap: 1rem; max-width: 38rem; width: 100%; margin: auto; padding: 1rem 1.4rem 2rem; text-align: center; }
.journey-login-art { display: block; width: min(80%,16rem); height: auto; aspect-ratio: 1; object-fit: contain; justify-self: center; }
.app-shell--login .login-title { margin: 0; font-family: var(--font-display); font-size: clamp(2rem,9vw,3.5rem); line-height: 1.4; }
.app-shell--login .login-line { font-size: 1.25rem; font-weight: 700; }
.app-shell--login .onboard-note { padding: 1rem; border-radius: 1rem; background: var(--journey-wash); color: var(--color-ink); font-size: 1rem; }
.app-shell--login [data-login="line"] { width: 100%; min-height: 3.25rem; border-radius: 1rem; font-size: 1rem; line-height: 1.5; }
.app-shell--login [data-login="line"][aria-disabled="true"] { background: var(--color-surface-sunken); color: var(--color-ink-muted); border: 1px solid var(--color-border); }
.app-shell--login .login-sent { font-size: .95rem; }
.app-shell--login .login-alt { display: grid; gap: .8rem; }
.app-shell--login .login-alt a { min-height: 3.4rem; display: flex; align-items: center; justify-content: center; border-radius: 1rem; padding: .6rem; font-size: 1rem; }
.app-shell--login .login-alt .ghost-button { color: var(--color-primary); border-color: var(--color-primary); }
/* R05-R07 three explicit, scrollable steps; policy text and grants stay separate. */
.app-shell--onboard .onboard { max-width: 46rem; width: 100%; margin: auto; padding: 0 1.4rem 2rem; }
.app-shell--onboard .onboard-dots { position: absolute; width: 1px; height: 1px; clip-path: inset(50%); overflow: hidden; }
.app-shell--onboard .onboard-step { position: relative; gap: 1.1rem; padding-top: 1.2rem; }
.app-shell--onboard [data-onboard-step="1"] { padding-top: 0; }
.app-shell--onboard .onboard-photo { width: calc(100% + 2.8rem); margin: 0 -1.4rem; height: auto; aspect-ratio: 1.25; clip-path: none; border-radius: 0 0 50% 50% / 0 0 14% 14%; border-bottom: .35rem solid var(--color-tint-food); }
.app-shell--onboard .onboard-wordmark { font-size: 1.5rem; justify-self: start; padding-right: 3.25rem; }
.journey-step-count { font-size: .95rem; justify-self: end; color: var(--color-ink); font-variant-numeric: tabular-nums; }
.app-shell--onboard [data-onboard-step="1"] .journey-step-count { position: absolute; right: 0; top: calc((100vw - 0px) / 1.25 + 1.15rem); }
.app-shell--onboard .onboard-title { font-size: clamp(1.65rem,7.2vw,2.7rem); line-height: 1.5; }
.app-shell--onboard :is(.onboard-line,.onboard-body) { font-size: 1.05rem; line-height: 1.8; }
.app-shell--onboard .onboard-note { font-size: .95rem; }
.app-shell--onboard .onboard-langs { display: grid; width: 100%; grid-template-columns: repeat(3,minmax(0,1fr)); gap: .6rem; }
.app-shell--onboard .lang-choice { display: grid; position: relative; place-items: center; padding: .6rem .4rem; min-height: 3.1rem; font-size: 1rem; }
.app-shell--onboard .lang-choice input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.app-shell--onboard .lang-choice:has(input:checked) { background: var(--color-primary); border-color: var(--color-primary); }
.app-shell--onboard .lang-choice:has(input:focus-visible) { outline: 2px solid var(--color-focus); outline-offset: 3px; }
.app-shell--onboard .onboard-actions { gap: .7rem; margin-top: .4rem; }
.app-shell--onboard .onboard-actions :is(a,button) { min-height: 3.4rem; padding: .65rem .7rem; border-radius: 1rem; font-size: 1rem; line-height: 1.5; }
.app-shell--onboard .onboard-actions [data-onboard-back] { order: 2; }
.app-shell--onboard .onboard-actions [data-onboard-browse] { order: 3; border: 0; text-decoration: underline; background: transparent; }
.app-shell--onboard [data-onboard-step="2"] { text-align: center; justify-items: center; }
.app-shell--onboard [data-onboard-step="2"] .onboard-mark { width: 9rem; height: 9rem; background: var(--journey-wash); margin: .5rem 0; }
.app-shell--onboard [data-onboard-step="2"] .onboard-mark .icon { width: 4.7rem; height: 4.7rem; stroke-width: 1.6; }
.app-shell--onboard .policy { width: 100%; text-align: start; border: 0; border-radius: 1rem; background: var(--journey-paper); }
.app-shell--onboard .policy summary { padding: 1rem; min-height: 3rem; font-size: 1rem; }
.app-shell--onboard .policy__body { font-size: .95rem; line-height: 1.8; padding: 0 1rem 1rem; }
.app-shell--onboard [data-onboard-step="3"] > .onboard-mark { display: none; }
.app-shell--onboard .consent-sync { padding: 0; background: transparent; border: 0; font-size: .95rem; color: var(--color-ink-muted); }
.app-shell--onboard .onboard-permissions { gap: 1rem; }
.app-shell--onboard .onboard-permissions li { grid-template-columns: 3.4rem minmax(0,1fr); gap: .8rem; padding: 1rem .8rem; border: 1px solid var(--color-tint-food); border-radius: 1rem; background: var(--journey-paper); }
.app-shell--onboard .onboard-permission__mark { width: 3.4rem; height: 3.4rem; border-radius: .9rem; background: var(--journey-wash); }
.app-shell--onboard .onboard-permission__mark .icon { width: 2rem; height: 2rem; }
.app-shell--onboard .onboard-permission__copy { gap: .5rem; font-size: .95rem; line-height: 1.8; }
.app-shell--onboard .onboard-permission__copy strong { font-size: 1.3rem; }
@media (min-width: 700px) {
  html.checkin-v3-page .page-main { max-width: 58rem; width: 100%; margin-inline: auto; }
  html.checkin-v3-page .scan-section { padding-inline: 1.4rem; }
  html.checkin-v3-page .checkin-v3-subject__photo { aspect-ratio: 2.25; }
  html.checkin-v3-page .checkin-list { grid-template-columns: repeat(2,minmax(0,1fr)); }
  html.checkin-v3-result-page .page-main { width: min(100%,48rem); margin-inline: auto; }
  html:has(#passport-title) .passport-cover-photo { aspect-ratio: 2.8; }
  html:has(#passport-title) .passport-card { padding: 1.5rem 2rem; }
  html:has(#passport-title) .stamp-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  html:has(#passport-title) .badge-grid { grid-template-columns: repeat(3,minmax(0,1fr)); }
  html:has(#passport-title) .badge.is-on { grid-column: auto; grid-template-columns: 1fr; justify-items: center; text-align: center; }
  html:has(#passport-title) .badge.is-on .badge__mark { grid-row: auto; }
  html:has(#rank-title) .page-main { max-width: 48rem; width: 100%; margin-inline: auto; }
  html:has(#rank-title) .podium { padding-inline: 2.5rem; }
  html:has(#rank-title) .podium-figure { width: 4.5rem; height: 4.5rem; }
  html:has(#rank-title) .podium-step--1 .podium-figure { width: 5.25rem; height: 5.25rem; }
  html:has(#rank-title) .podium-name { font-size: 1.1rem; }
  html:has(#rank-title) .rank-row .rank-name { font-size: 1.1rem; }
  html:has(#rank-title) .rank-row .rank-points { font-size: 1rem; }
  html:has(#me-title) .profile-folio > .ghost-button { max-width: 10rem; padding-inline: 1rem; }
  html:has(#me-title) .profile-folio .profile-sub { font-size: 1rem; }
  html:has(#me-title) .profile-shortcuts { grid-template-columns: 1fr 1fr; }
  html:has(#me-title) .saved .card-rail { grid-template-columns: repeat(2,minmax(0,1fr)); }
  html:has(#me-title) [data-name-sheet] .confirm-card { margin-inline: auto; border-radius: 1.6rem; margin-bottom: 2rem; }
  .app-shell--onboard .onboard-photo { width: 100%; margin-inline: 0; aspect-ratio: 2; border-radius: 0 0 2rem 2rem; }
  .app-shell--onboard [data-onboard-step="1"] .journey-step-count { top: auto; position: static; margin-top: -3.4rem; }
  .app-shell--onboard .onboard-permissions li { grid-template-columns: 4rem minmax(0,1fr); padding: 1.25rem; }
}
@media (max-width: 370px) {
  html.checkin-v3-page .checkin-v3-subject__body { grid-template-columns: 1fr; }
  html.checkin-v3-page .checkin-v3-subject__gate { justify-self: start; }
  html:has(#rank-title) .rank-row { grid-template-columns: 1rem 2rem minmax(0,1fr); }
  html:has(#rank-title) .rank-row .rank-points { grid-column: 3; }
  html:has(#me-title) .profile-folio .profile-card { gap: .5rem; padding: .7rem; }
  html:has(#me-title) .profile-folio .avatar { width: 2.6rem; height: 2.6rem; }
}
html[data-easy="on"] :is(.journey-book-count,.journey-login-art,.journey-name-mark) { box-shadow: none; }
html[data-easy="on"]:has(#passport-title) .stamp-grid { grid-template-columns: 1fr; }
html[data-easy="on"]:has(#rank-title) .rank-row { grid-template-columns: 1.5rem 2rem minmax(0,1fr); }
html[data-easy="on"]:has(#rank-title) .rank-row .rank-points { grid-column: 3; }
html[data-season="mourning"] .journey-login-art,
html[data-season="royal"] .journey-login-art { display: none; }
/* ===== P10 fidelity (2026-09-14): C01 check-in readiness. ===== */
body[data-design-page="checkin"] .page-head h1, body[data-design-page="checkin"] .nearby-checkin h2 { position: relative; padding-bottom: 10px; font-size: 1.7rem; color: #0e3f44; }
body[data-design-page="checkin"] .page-head h1::after, body[data-design-page="checkin"] .nearby-checkin h2::after { content: ""; position: absolute; left: 0; bottom: 0; width: 78px; height: 5px; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 80 6' fill='none' stroke='%23f0b48c' stroke-width='4' stroke-linecap='round'%3E%3Cpath d='M3 3h74'/%3E%3C/svg%3E") left center / 100% 100% no-repeat; }
body[data-design-page="checkin"] .checkin-v3-fix { display: inline-flex; align-items: center; gap: 8px; }
body[data-design-page="checkin"] .checkin-v3-fix::before { content: ""; width: 17px; height: 17px; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230e5f52' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='6.5'/%3E%3Cpath d='M12 2v3M12 19v3M2 12h3M19 12h3'/%3E%3Ccircle cx='12' cy='12' r='1.6' fill='%230e4747'/%3E%3C/svg%3E") center / 17px no-repeat; }
body[data-design-page="checkin"] .checkin-v3-subject__meta { display: flex; align-items: center; gap: 8px; }
body[data-design-page="checkin"] .checkin-v3-subject__meta::before { content: ""; flex: none; width: 17px; height: 17px; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230e4747' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 3 3 10.6l7.6 2.8L13.4 21z'/%3E%3C/svg%3E") center / 17px no-repeat; }
body[data-design-page="checkin"] .checkin-v3-subject__gate { display: inline-flex; align-items: center; gap: 8px; }
body[data-design-page="checkin"] .checkin-v3-subject__gate::before { content: ""; flex: none; width: 18px; height: 18px; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='9' fill='%231f7a5c'/%3E%3Cpath d='m8 12.4 2.6 2.6L16 9.6' fill='none' stroke='%23fff' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 18px no-repeat; }
body[data-design-page="checkin"] .checkin-v3-device-test > summary { display: flex; align-items: center; justify-content: space-between; gap: 10px; list-style: none; }
body[data-design-page="checkin"] .checkin-v3-device-test > summary::-webkit-details-marker { display: none; }
body[data-design-page="checkin"] .checkin-v3-device-test > summary::after { content: ""; flex: none; width: 16px; height: 16px; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230e3f44' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 9 7 7 7-7'/%3E%3C/svg%3E") center / 16px no-repeat; }
body[data-design-page="checkin"] .checkin-v3-device-test[open] > summary::after { rotate: 180deg; }

/* P10, C02: the nearby list rows — chevron beside the name, a pin on the state line and the
   stamp line as its own peach pill, as the accepted list image shows. */
body[data-design-page="checkin"] .checkin-row__link { position: relative; align-items: start; padding-right: 30px; }
body[data-design-page="checkin"] .checkin-row__body { gap: 6px; }
body[data-design-page="checkin"] .checkin-row__name { font-size: 1.05rem; line-height: 1.4; color: #0e3f44; }
body[data-design-page="checkin"] .checkin-row__state:not(.checkin-row__stamp-state) { display: flex; align-items: start; gap: 7px; font-size: .88rem; line-height: 1.45; color: #37464b; }
body[data-design-page="checkin"] .checkin-row__state:not(.checkin-row__stamp-state)::before { content: ""; flex: none; width: 15px; height: 15px; margin-top: 3px; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%230e4747'%3E%3Cpath d='M12 2a7 7 0 0 0-7 7c0 5.2 7 13 7 13s7-7.8 7-13a7 7 0 0 0-7-7zm0 9.4a2.4 2.4 0 1 1 0-4.8 2.4 2.4 0 0 1 0 4.8z'/%3E%3C/svg%3E") center / 15px no-repeat; }
body[data-design-page="checkin"] .checkin-row__stamp-state { display: flex; align-items: center; gap: 8px; width: fit-content; padding: 6px 12px; border-radius: 12px; background: #fbe3d5; font-size: .88rem; color: #c0512f; }
body[data-design-page="checkin"] .checkin-row__stamp-state::before { content: ""; flex: none; width: 17px; height: 17px; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23c0512f' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 3.5h6v3.2a3 3 0 0 1-1 2.2l-.5.5v2.1h4.5a2 2 0 0 1 2 2v2H4v-2a2 2 0 0 1 2-2h4.5V9.4l-.5-.5a3 3 0 0 1-1-2.2z'/%3E%3Cpath d='M4 18.5h16v2H4z'/%3E%3C/svg%3E") center / 17px no-repeat; }
body[data-design-page="checkin"] .checkin-row__arrow { position: absolute; right: 10px; top: 14px; width: 16px; height: 16px; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230e3f44' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 5 7 7-7 7'/%3E%3C/svg%3E") center / 16px no-repeat; color: transparent; }
body[data-design-page="checkin"] .checkin-row__arrow use { display: none; }

/* ===== P11 fidelity (2026-09-14): C03 check-in result. ===== */
body[data-design-page="checkin-success"] .payoff-title { font-size: 2rem; line-height: 1.35; color: #0e3f44; }
body[data-design-page="checkin-success"] .payoff-place { display: inline-flex; align-items: center; justify-content: center; gap: 8px; font-size: 1.15rem; font-weight: 700; color: #0e3f44; }
body[data-design-page="checkin-success"] .payoff-place::before { content: ""; flex: none; width: 18px; height: 18px; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%230e4747'%3E%3Cpath d='M12 2a7 7 0 0 0-7 7c0 5.2 7 13 7 13s7-7.8 7-13a7 7 0 0 0-7-7zm0 9.4a2.4 2.4 0 1 1 0-4.8 2.4 2.4 0 0 1 0 4.8z'/%3E%3C/svg%3E") center / 18px no-repeat; }
body[data-design-page="checkin-success"] .payoff-receipt { padding: 8px 18px; border-radius: 999px; background: #fbe3d5; font-size: 1rem; font-weight: 700; color: #0e3f44; }
body[data-design-page="checkin-success"] .checkin-v3-verified { display: inline-flex; align-items: center; justify-content: center; gap: 8px; font-size: .95rem; color: #7c858c; }
body[data-design-page="checkin-success"] .checkin-v3-verified::before { content: ""; flex: none; width: 16px; height: 16px; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%237c858c' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 7.2v5l3 1.9'/%3E%3C/svg%3E") center / 16px no-repeat; }
body[data-design-page="checkin-success"] .payoff-actions .icon-button--ring { border: 0; background: #fbe3d5; color: #c0512f; }
body[data-design-page="checkin-success"] .payoff-story__title { font-size: 1.5rem; color: #0e3f44; }
body[data-design-page="checkin-success"] .payoff-story__line { font-size: .98rem; line-height: 1.6; color: #37464b; }
body[data-design-page="checkin-success"] .payoff-progress .section-heading { display: none; }
body[data-design-page="checkin-success"] .payoff-progress { display: grid; grid-template-columns: 52px minmax(0, 1fr); align-items: center; gap: 4px 14px; padding: 14px 16px; border-radius: 18px; background: #fffdf9; box-shadow: 0 3px 12px rgb(90 55 30 / 6%); }
body[data-design-page="checkin-success"] .payoff-progress::before { content: ""; grid-row: 1 / 3; width: 52px; height: 52px; border-radius: 14px; background: #e3efec url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230e4747' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='4' y='2.5' width='16' height='19' rx='3'/%3E%3Ccircle cx='12' cy='10.5' r='4'/%3E%3Cpath d='M8 10.5h8M12 6.5c1.6 1.8 1.6 6.2 0 8M12 6.5c-1.6 1.8-1.6 6.2 0 8'/%3E%3C/svg%3E") center / 26px no-repeat; }
body[data-design-page="checkin-success"] .payoff-progress__line { grid-column: 2; margin: 0; font-size: 1.05rem; font-weight: 700; color: #0e3f44; }
body[data-design-page="checkin-success"] .payoff-progress__line + .payoff-progress__line, body[data-design-page="checkin-success"] .payoff-progress .fine-note { font-size: .88rem; font-weight: 400; color: #7c858c; }
body[data-design-page="checkin-success"] .payoff-strip { grid-column: 1 / -1; margin-top: 10px; }
body[data-design-page="checkin-success"] .payoff-progress > :is(p, .fine-note, .payoff-progress__line) { grid-column: 2 / -1; }
body[data-design-page="checkin-success"] .payoff-progress .fine-note { grid-column: 1 / -1; margin-top: 8px; }

/* ===== P12 fidelity (2026-09-14): C04 passport book and its progress. ===== */
body[data-design-page="passport"] .page-head .section-swash { display: none; }
body[data-design-page="passport"] .page-head h1 { font-size: 1.75rem; line-height: 1.45; color: #0e3f44; }
body[data-design-page="passport"] .passport-cover-photo { margin-block-end: 10px; }
body[data-design-page="passport"] .passport-card { padding: 16px 16px 14px; }
body[data-design-page="passport"] .journey-book-count { font-size: 2.1rem; line-height: 1.2; color: #0e4747; }
body[data-design-page="passport"] .passport-main { align-items: start; column-gap: 16px; }
body[data-design-page="passport"] .passport-copy { font-size: .9rem; color: #6f7a80; }
body[data-design-page="passport"] .tier-track { margin-block: 12px 2px; }
body[data-design-page="passport"] .stamps .stamp { display: grid; grid-template-columns: 68px minmax(0, 1fr); align-items: center; gap: 12px; padding: 10px 14px; border-radius: 16px; background: #fffdf9; }
body[data-design-page="passport"] .stamps .stamp__emblem { width: 68px; height: 68px; }
body[data-design-page="passport"] .stamps li.stamp .stamp__emblem { width: 64px; height: 64px; }
body[data-design-page="passport"] .stamps li.stamp > span { font-size: 1.05rem; font-weight: 700; color: #0e3f44; }
body[data-design-page="passport"] .stamps li.stamp .stamp-date { font-size: .88rem; font-style: normal; font-weight: 400; color: #8b949a; }

/* ===== P13 fidelity (2026-09-14): C06 ranking podium and board. ===== */
body[data-design-page="ranking"] .page-head { text-align: center; }
body[data-design-page="ranking"] .page-head h1 { font-size: 2rem; line-height: 1.4; color: #0e3f44; }
body[data-design-page="ranking"] .rank-basis { text-align: center; }
body[data-design-page="ranking"] .podium-figure { width: 72px; height: 72px; font-size: 1.5rem; }
body[data-design-page="ranking"] .podium-step--1 .podium-figure { width: 84px; height: 84px; font-size: 1.7rem; }
body[data-design-page="ranking"] .podium-name { margin-top: 8px; font-size: .95rem; font-weight: 700; color: #0e3f44; }
body[data-design-page="ranking"] .podium-points { font-size: .9rem; color: #7c858c; }
body[data-design-page="ranking"] .rank-row { align-items: center; }
body[data-design-page="ranking"] .rank-row__avatar, body[data-design-page="ranking"] .rank-avatar { width: 42px; height: 42px; font-size: 1rem; }

/* ===== P14 fidelity (2026-09-14): R01 account overview and saved places. ===== */
body[data-design-page="me"] .page-head h1 { font-size: 1.85rem; line-height: 1.45; color: #0e3f44; }
body[data-design-page="me"] .profile-sub { font-size: .88rem; line-height: 1.5; color: #6f7a80; }
body[data-design-page="me"] .profile-name { font-size: 1.25rem; color: #0e3f44; }
body[data-design-page="me"] .journey-shortcut-arrow { background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230e3f44' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 5 7 7-7 7'/%3E%3C/svg%3E") center / 18px no-repeat; color: transparent; }
body[data-design-page="me"] .journey-shortcut-arrow use { display: none; }
body[data-design-page="me"] .profile-shortcuts > a:first-child .journey-shortcut-mark .icon { background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23c0512f' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='3.2'/%3E%3Cpath d='M12 2.8v2.4M12 18.8v2.4M4.5 7.5l2.1 1.2M17.4 15.3l2.1 1.2M4.5 16.5l2.1-1.2M17.4 8.7l2.1-1.2'/%3E%3C/svg%3E") center / 24px no-repeat; color: transparent; }
body[data-design-page="me"] .profile-shortcuts > a:first-child .journey-shortcut-mark .icon use { display: none; }
body[data-design-page="me"] .saved .link-more { text-decoration: none; font-weight: 700; color: #c0512f; }
body[data-design-page="me"] .place-card .place-link { align-items: center; }
body[data-design-page="me"] .place-card .saved-badge { inset: 10px 10px auto auto; width: 36px; height: 36px; background: #fffdf9; color: #c0512f; }
body[data-design-page="me"] .settings .setting-row > .icon, body[data-design-page="me"] .settings .setting-row .setting-go { background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230e3f44' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 5 7 7-7 7'/%3E%3C/svg%3E") center / 18px no-repeat; color: transparent; }
body[data-design-page="me"] .settings .setting-row > .icon use, body[data-design-page="me"] .settings .setting-row .setting-go use { display: none; }
/* ===== P15 fidelity (2026-09-14): R04 guest-first entry. ===== */
body[data-design-page="login"] .onboard-note { display: grid; grid-template-columns: 44px minmax(0, 1fr); align-items: center; gap: 14px; text-align: start; }
body[data-design-page="login"] .onboard-note::before { content: ""; width: 44px; height: 44px; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230e4747' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 2.6 5 5.4v5.4c0 4.6 3 8.3 7 10.6 4-2.3 7-6 7-10.6V5.4z'/%3E%3Crect x='9.4' y='10.6' width='5.2' height='4.6' rx='1.2'/%3E%3Cpath d='M10.6 10.6V9.3a1.4 1.4 0 0 1 2.8 0v1.3'/%3E%3C/svg%3E") center / 34px no-repeat; }

/* ===== P16 fidelity (2026-09-14): R05 welcome and language, R06 privacy, R07 permissions. ===== */
body[data-design-page="onboard"] .onboard-wordmark::after { display: none; }
body[data-design-page="onboard"] .onboard-wordmark { font-size: 1.3rem; color: #c0512f; }
body[data-design-page="onboard"] .onboard-title { font-size: 1.75rem; line-height: 1.4; color: #0e3f44; }
body[data-design-page="onboard"] .onboard-line { font-size: 1rem; line-height: 1.65; color: #37464b; }
body[data-design-page="onboard"] .onboard-note { display: grid; grid-template-columns: 46px minmax(0, 1fr); align-items: center; gap: 14px; padding: 0; background: none; font-size: 1rem; font-weight: 700; color: #0e3f44; text-align: start; }
body[data-design-page="onboard"] .onboard-note::before { content: ""; width: 46px; height: 46px; border-radius: 50%; background: #fbe3d5 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23c0512f' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='6.5' y='2.6' width='11' height='18.8' rx='2.6'/%3E%3Cpath d='M10.6 18.4h2.8'/%3E%3Cpath d='m5.4 21.4 13.2-19'/%3E%3C/svg%3E") center / 26px no-repeat; }
body[data-design-page="onboard"] .onboard-actions .wide-button { display: inline-flex; align-items: center; justify-content: center; gap: 10px; }
body[data-design-page="onboard"] .onboard-actions .wide-button::after { content: ""; width: 16px; height: 16px; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 5 7 7-7 7'/%3E%3C/svg%3E") center / 16px no-repeat; }
body[data-design-page="onboard"] .onboard-langs ~ .onboard-note { display: block; font-size: .9rem; font-weight: 400; color: #6f7a80; }
body[data-design-page="onboard"] .onboard-langs ~ .onboard-note::before { content: none; }
body[data-design-page="onboard"] .onboard-permission__copy strong { font-size: 1.2rem; color: #0e3f44; }
body[data-design-page="onboard"] .onboard-permission__copy > span { font-size: .95rem; font-weight: 400; line-height: 1.6; color: #4d5c62; }

/* ===== P10 round 2 (2026-09-14), from the independent review of the list image =====
 * The reviewer scored 63 because every condition sat in one run-on line. Each part now has its
 * own row and mark: a peach clock for a restricted window, a red warning for "come closer" and
 * a mint dot for in-range. The wording is untouched. */
body[data-design-page="checkin"] .checkin-row__state[data-state-kind] { display: flex; align-items: start; gap: 8px; width: fit-content; padding: 5px 12px 5px 10px; border-radius: 12px; font-size: .88rem; line-height: 1.45; }
body[data-design-page="checkin"] .checkin-row__state[data-state-kind]::before { content: ""; flex: none; width: 17px; height: 17px; margin-top: 2px; }
body[data-design-page="checkin"] .checkin-row__state[data-state-kind="distance"] { padding-inline: 0; background: none; color: #37464b; }
body[data-design-page="checkin"] .checkin-row__state[data-state-kind="hours"] { background: #fbe3d5; color: #b04426; }
body[data-design-page="checkin"] .checkin-row__state[data-state-kind="hours"]::before { background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23c0512f' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 7.2v5l3 1.9'/%3E%3C/svg%3E") center / 17px no-repeat; }
body[data-design-page="checkin"] .checkin-row__state[data-state-kind="warn"] { background: #fdeae6; color: #b8250e; }
body[data-design-page="checkin"] .checkin-row__state[data-state-kind="warn"]::before { background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='9' fill='%23c0392b'/%3E%3Cpath d='M12 7v6' stroke='%23fff' stroke-width='2.2' stroke-linecap='round'/%3E%3Ccircle cx='12' cy='16.6' r='1.2' fill='%23fff'/%3E%3C/svg%3E") center / 17px no-repeat; }
body[data-design-page="checkin"] .checkin-row__state[data-state-kind="note"] { background: #dcefe9; color: #0b5359; }
body[data-design-page="checkin"] .checkin-row__state[data-state-kind="note"]::before { background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='7' fill='%231f7a5c'/%3E%3C/svg%3E") center / 15px no-repeat; }

/* ===== P12 round 2 (2026-09-14), from the independent review of the passport image =====
 * The reviewer scored 61: the two level lines had lost their peach marks and the stat block ran
 * into the point total with no rule between them. Both come back without moving any text. */
body[data-design-page="passport"] .passport-main { column-gap: 18px; }
body[data-design-page="passport"] .passport-copy { position: relative; display: grid; gap: 8px; padding-left: 18px; }
body[data-design-page="passport"] .passport-copy::before { content: ""; position: absolute; left: 0; top: 4px; bottom: 4px; width: 1px; background: #eddbcb; }
body[data-design-page="passport"] .passport-copy .passport-line { display: flex; align-items: center; gap: 10px; font-size: .92rem; line-height: 1.4; color: #0e3f44; }
body[data-design-page="passport"] .passport-copy .passport-line::before { flex: none; }
body[data-design-page="passport"] .passport-copy .passport-line::before { content: ""; width: 38px; height: 38px; border-radius: 50%; background: #fbe3d5 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23c0512f' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='13.4' cy='4.2' r='2'/%3E%3Cpath d='M10 21.5l2.2-6.2 3 2 1 4.2M8.4 12.6l3-4.2 3 1 2 3 2.2 1M11.4 8.4l-3 5-2 5.6'/%3E%3C/svg%3E") center / 22px no-repeat; }
body[data-design-page="passport"] .passport-copy .passport-line + .passport-line::before { background: #fbe3d5 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23c0512f' stroke-width='1.9' stroke-linejoin='round'%3E%3Cpath d='M12 2.6 13.4 6h-2.8z'/%3E%3Cpath d='M9 6h6l1 3.6H8z'/%3E%3Cpath d='M7 9.6h10l1 4.4H6z'/%3E%3Cpath d='M5 14h14l1 4.4H4z'/%3E%3C/svg%3E") center / 22px no-repeat; }

/* ===== P12 round 2b (2026-09-14) =====
 * The accepted badges image numbers the first-visit rows and links them with a thin spine. */
body[data-design-page="passport"] .memory-list { counter-reset: memory; position: relative; }
body[data-design-page="passport"] .memory-row { position: relative; counter-increment: memory; padding-left: 38px; }
body[data-design-page="passport"] .memory-row::before { content: counter(memory); position: absolute; left: 0; top: 50%; z-index: 1; display: grid; place-items: center; width: 28px; height: 28px; margin-top: -14px; border-radius: 50%; background: #c0512f; color: #fff; font-size: .82rem; font-weight: 700; }
body[data-design-page="passport"] .memory-row + .memory-row::after { content: ""; position: absolute; left: 13.5px; top: -50%; height: 50%; border-left: 1.5px solid #e6c3ad; }

/* ===== P12 round 3 (2026-09-14), last round on this image =====
 * The second read scored 69 and named three things: a triangular glyph where the image shows a
 * chedi, the two level labels wrapping, and the card's perforation dots reading as stray nodes
 * beside the milestone track. */
body[data-design-page="passport"] .passport-copy .passport-line + .passport-line::before { background: #dcefe9 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230e4747' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 2.2v2.4'/%3E%3Cpath d='M12 4.6c1.5 1.1 2.2 2.6 2.2 4.2h-4.4c0-1.6.7-3.1 2.2-4.2z'/%3E%3Cpath d='M9.2 8.8h5.6l1 3.1H8.2z'/%3E%3Cpath d='M7.6 11.9h8.8l1.1 3.4H6.5z'/%3E%3Cpath d='M5.6 15.3h12.8l1.2 3.6H4.4z'/%3E%3Cpath d='M4 18.9h16v2.4H4z'/%3E%3C/svg%3E") center / 22px no-repeat; }
body[data-design-page="passport"] .passport-copy .passport-line { font-size: .86rem; }
body[data-design-page="passport"] .passport-copy .passport-line strong { white-space: nowrap; }
body[data-design-page="passport"] .passport-card .perf-line::before, body[data-design-page="passport"] .passport-card .perf-line::after { display: none; }

/* ===== P12 round 4 and P13 round 1 (2026-09-14), from the third and first reads ===== */
body[data-design-page="passport"] .passport-card .perf-line { border-top-style: solid; border-top-width: 1px; border-top-color: #eddbcb; }
body[data-design-page="passport"] .tier-track .tier.is-done { color: transparent; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 12.5 4 4 8-9'/%3E%3C/svg%3E") center / 16px no-repeat; }
body[data-design-page="passport"] .tier-track .tier.is-next { border-color: #d8d0c4; color: #6f7a80; }
body[data-design-page="ranking"] .rank-row.is-me .rank-avatar { color: transparent; background: #f6c8a8 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23b04426' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='8.4' r='3.6'/%3E%3Cpath d='M5.4 20.4a6.6 6.6 0 0 1 13.2 0'/%3E%3C/svg%3E") center / 20px no-repeat; }
body[data-design-page="ranking"] .podium-step--2 .podium-figure { background: #c9d6db; }
body[data-design-page="ranking"] .podium-step--3 .podium-figure { background: #eec3bd; }
body[data-design-page="me"] .profile-shortcuts > a:first-child .journey-shortcut-mark .icon { background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23c0512f' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='3.1'/%3E%3Cpath d='M19.2 14.4a1.6 1.6 0 0 0 .3 1.8l.1.1a2 2 0 1 1-2.8 2.8l-.1-.1a1.6 1.6 0 0 0-1.8-.3 1.6 1.6 0 0 0-1 1.5V21a2 2 0 1 1-4 0v-.1a1.6 1.6 0 0 0-1-1.5 1.6 1.6 0 0 0-1.8.3l-.1.1a2 2 0 1 1-2.8-2.8l.1-.1a1.6 1.6 0 0 0 .3-1.8 1.6 1.6 0 0 0-1.5-1H3a2 2 0 1 1 0-4h.1a1.6 1.6 0 0 0 1.5-1 1.6 1.6 0 0 0-.3-1.8l-.1-.1a2 2 0 1 1 2.8-2.8l.1.1a1.6 1.6 0 0 0 1.8.3H9a1.6 1.6 0 0 0 1-1.5V3a2 2 0 1 1 4 0v.1a1.6 1.6 0 0 0 1 1.5 1.6 1.6 0 0 0 1.8-.3l.1-.1a2 2 0 1 1 2.8 2.8l-.1.1a1.6 1.6 0 0 0-.3 1.8V9a1.6 1.6 0 0 0 1.5 1H21a2 2 0 1 1 0 4h-.1a1.6 1.6 0 0 0-1.5 1z'/%3E%3C/svg%3E") center / 24px no-repeat; color: transparent; }
body[data-design-page="me"] .place-card .saved-badge { background: transparent; box-shadow: none; }
body[data-design-page="me"] .settings .setting-row:nth-of-type(4) .setting-mark .icon use, body[data-design-page="me"] .settings .setting-row:nth-of-type(6) .setting-mark .icon use, body[data-design-page="me"] .settings .setting-row:nth-of-type(8) .setting-mark .icon use, body[data-design-page="me"] .settings .setting-row:nth-of-type(9) .setting-mark .icon use { display: none; }

/* settings rows carry no ids; the image marks are applied by position */
body[data-design-page="me"] .settings .setting-row:nth-of-type(4) .setting-mark .icon { background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23c0512f' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6.5 3.9h3l1.5 4-2 1.5a12 12 0 0 0 5.6 5.6l1.5-2 4 1.5v3a2 2 0 0 1-2.2 2A16.5 16.5 0 0 1 4.5 6.1 2 2 0 0 1 6.5 3.9z'/%3E%3C/svg%3E") center / 22px no-repeat; color: transparent; }
body[data-design-page="me"] .settings .setting-row:nth-of-type(6) .setting-mark .icon { background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23c0512f' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M10.2 8.6 15.4 12l-5.2 3.4z'/%3E%3C/svg%3E") center / 22px no-repeat; color: transparent; }
body[data-design-page="me"] .settings .setting-row:nth-of-type(8) .setting-mark .icon { background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23c0512f' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 11v5.4'/%3E%3Ccircle cx='12' cy='7.9' r='1.1' fill='%23c0512f' stroke='none'/%3E%3C/svg%3E") center / 22px no-repeat; color: transparent; }
body[data-design-page="me"] .settings .setting-row:nth-of-type(9) .setting-mark .icon { background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23c0512f' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 20.4S4.2 15.6 4.2 10.3A4.1 4.1 0 0 1 12 8.2a4.1 4.1 0 0 1 7.8 2.1c0 5.3-7.8 10.1-7.8 10.1z'/%3E%3C/svg%3E") center / 22px no-repeat; color: transparent; }

/* The review preferred the app's own cylinder plinths and crown halo; only the figures and
 * the centred title stay from the fidelity pass. */
body[data-design-page="ranking"] .podium-name { font-size: .95rem; font-weight: 700; color: #0e3f44; }

/* passport, third read: solid rule, level lines that do not crowd their mark */
body[data-design-page="passport"] .perf-line { border-top-style: solid; border-top-width: 1px; border-top-color: #eddbcb; }
body[data-design-page="passport"] .passport-copy .passport-line { font-size: .82rem; line-height: 1.45; align-items: start; }
body[data-design-page="passport"] .passport-copy .passport-line::before { margin-top: 2px; }
body[data-design-page="passport"] .passport-copy .passport-line strong { white-space: normal; }

/* account: the heart sits beside the title row and the state keeps its own line */
body[data-design-page="me"] .place-card .saved-badge { inset: 8px 8px auto auto; }
body[data-design-page="me"] .place-card .place-meta .chip { flex: 0 0 100%; max-width: max-content; margin-bottom: 2px; padding: 0; background: none; color: #6f7a80; font-weight: 400; }

/* the finished milestone carries the check the image shows; the level lines stay two lines */
body[data-design-page="passport"] .tier-track .tier.is-done { background: var(--color-primary) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 12.5 4 4 8-9'/%3E%3C/svg%3E") center / 16px no-repeat; color: transparent; }
body[data-design-page="passport"] .passport-copy .passport-line { font-size: .78rem; }

/* ===== onboarding round 1 marks (2026-09-14) ===== */
body[data-design-page="onboard"] .onboard-step:nth-of-type(2) .onboard-actions .wide-button::after { content: none; }
body[data-design-page="onboard"] .journey-step-count { font-size: .95rem; color: #6f7a80; }

/* onboarding rules moved here: onboard.html loads the journey stylesheet, not services */
body[data-design-page="onboard"] .onboard-step:nth-of-type(2) .onboard-actions .wide-button::after { content: none; }
body[data-design-page="onboard"] details.policy > summary, body[data-design-page="onboard"] .onboard-step details > summary { display: flex; align-items: center; gap: 12px; padding: 12px 14px; border-radius: 14px; background: #fffdf9; list-style: none; font-weight: 700; color: #0e3f44; }
body[data-design-page="onboard"] details.policy > summary::-webkit-details-marker, body[data-design-page="onboard"] .onboard-step details > summary::-webkit-details-marker { display: none; }
body[data-design-page="onboard"] details.policy > summary::before, body[data-design-page="onboard"] .onboard-step details > summary::before { content: ""; flex: none; width: 20px; height: 20px; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23c0512f' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6.4 2.8h7.2L18.6 8v13.2H6.4z'/%3E%3Cpath d='M13.4 2.8V8h5.2'/%3E%3Cpath d='M9 12.6h6M9 16h6'/%3E%3C/svg%3E") center / 20px no-repeat; }
body[data-design-page="onboard"] details.policy > summary::after, body[data-design-page="onboard"] .onboard-step details > summary::after { content: ""; flex: none; width: 18px; height: 18px; margin-inline-start: auto; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230e3f44' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 9 7 7 7-7'/%3E%3C/svg%3E") center / 18px no-repeat; }
body[data-design-page="onboard"] details[open] > summary::after { rotate: 180deg; }

/* ===== R03 round 1 (2026-09-14), from the accepted image =====
 * The sheet's mark is an identity badge, not a bare person; the field label runs left; the note
 * fits on one line; and the page behind the sheet is blurred far more than 4px. */
html:has(#me-title) [data-name-sheet] { backdrop-filter: blur(10px); background: #2b1a0f26; }
html:has(#me-title) [data-name-sheet] .journey-name-mark { width: 4.1rem; height: 4.1rem; margin-bottom: .75rem; border-radius: .85rem; background: var(--journey-wash) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48' fill='none' stroke='%23c0512f' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='6' y='12' width='36' height='27' rx='4.5'/%3E%3Cpath d='M19 12V9.5a1.6 1.6 0 0 1 1.6-1.6h6.8A1.6 1.6 0 0 1 29 9.5V12'/%3E%3Ccircle cx='18' cy='23' r='3.4'/%3E%3Cpath d='M12.6 33.2a5.8 5.8 0 0 1 10.8 0'/%3E%3Cpath d='M28.5 22.5h8M28.5 29h6'/%3E%3C/svg%3E") center / 2.5rem no-repeat; }
html:has(#me-title) [data-name-sheet] .journey-name-mark .icon { display: none; }
html:has(#me-title) [data-name-sheet] .confirm-line { font-size: .8rem; line-height: 1.7; }
html:has(#me-title) [data-name-sheet] .journey-field-label { text-align: start; margin: 1.1rem 0 .35rem; font-size: 1rem; }
html:has(#me-title) [data-name-input] { border-radius: .8rem; padding-inline: 1.1rem; }
html:has(#me-title) [data-name-sheet] .confirm-actions button { border-radius: .75rem; }
html:has(#me-title) [data-name-sheet] [data-name-cancel] { border: 1.5px solid #c0512f; background: #fffdfa; color: #c0512f; }
