.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

.experiences .section-head h2 { max-width: 28ch; }
.day-ticket { display: flex; min-width: 0; flex-direction: column; }
.day-ticket:hover, .day-ticket:focus-within { transform: none; }
.day-ticket.has-entered { animation: day-arrive 460ms ease-out both; }

@keyframes day-arrive {
  from { opacity: .76; transform: translateY(9px); }
  to { opacity: 1; transform: translateY(0); }
}

.day-ticket-head {
  display: grid;
  grid-template-columns: auto minmax(0,1fr) auto;
  align-items: center;
  gap: 11px;
  padding: 15px 18px;
  border-radius: 14px 14px 0 0;
  background: var(--ink);
  color: var(--paper);
}

.day-ticket--walk .day-ticket-head { background: #ebca88; color: var(--ink); }

.day-emblem, .calc-icon, .checklist-symbol {
  display: grid;
  width: 46px;
  height: 46px;
  flex: none;
  place-items: center;
  border-radius: 9px;
  background: #f5d494;
  color: var(--ink);
  font-size: 1.25rem;
}

.day-ticket--walk .day-emblem { background: var(--ink); color: var(--paper); }
.day-ticket-head .route-label { color: #f1c88d; }
.day-ticket--walk .day-ticket-head .route-label { color: #634024; }
.day-ticket-head h3 {
  margin-top: 3px;
  font-size: clamp(1.2rem, 2vw, 1.92rem);
  text-wrap: initial;
}

.day-duration {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  justify-self: end;
  padding: 6px 8px;
  border: 1px dashed #8f9790;
  border-radius: 4px;
  color: inherit;
  max-width: 100%;
  font: 650 .875rem/1.3 var(--heading);
}

.day-ticket--walk .day-duration { border-color: #906b39; }
.day-photo { aspect-ratio: 2.35; }
.day-photo img { object-position: 50% 55%; }

.day-ticket-body { flex: 1; padding: 16px 20px 19px; }
.day-facts { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 7px 12px; }
.day-language {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 5px 8px;
  border-radius: 5px;
  background: #f5e3c4;
  color: #5a351b;
  font: 720 .89rem/1.24 var(--heading);
}

.day-ticket--walk .day-language { background: #dcebed; color: #234852; }

.day-legs {
  display: grid;
  margin: 18px 0 0;
  padding: 0;
  list-style: none;
}

.day-leg {
  position: relative;
  display: grid;
  grid-template-columns: auto minmax(0,1fr);
  gap: 12px;
  padding-bottom: 14px;
}

.day-leg:last-child { padding-bottom: 0; }
.day-leg:not(:last-child)::after {
  position: absolute;
  inset: 34px auto 0 16px;
  border-left: 1px dashed #ab733f;
  content: "";
}

.day-leg-icon {
  z-index: 1;
  display: grid;
  width: 34px;
  height: 34px;
  place-items: center;
  border: 1px solid #d2b484;
  border-radius: 50%;
  background: #f4deb9;
  font-size: .91rem;
}

.day-ticket--walk .day-leg-icon { border-color: #9ab8b7; background: #e3eeeb; }
.day-leg .stamp { margin-bottom: 2px; text-transform: uppercase; letter-spacing: .035em; }
.day-leg h4 { margin: 0; font: 790 clamp(1.04rem,1.6vw,1.25rem)/1.14 var(--heading); }
.day-leg p:not(.stamp) { margin-top: 3px; color: var(--muted); font-size: .96rem; line-height: 1.44; }
.day-ticket .feature-action { min-height: 44px; text-decoration: underline; text-underline-offset: 4px; }
.day-ticket .feature-action:hover .icon { transform: translateX(3px); }

.trip-tabs {
  display: grid;
  grid-template-columns: repeat(2,minmax(0,1fr));
  gap: 5px;
  margin-bottom: 12px;
  padding: 5px;
  border: 1px solid var(--line);
  border-radius: 9px;
  background: #eadcc2;
}

.trip-tabs button {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 7px;
  min-height: 44px;
  padding: 7px;
  border: 0;
  border-radius: 6px;
  background: transparent;
  color: var(--ink);
  font: 760 .94rem/1.2 var(--heading);
}

.trip-tabs button[aria-selected="true"] { background: var(--ink); color: var(--paper); }
.day-ticket[role="tabpanel"]:not([hidden]) { animation: day-arrive 280ms ease-out both; }

.planning {
  padding: clamp(18px,3vw,36px);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: #eee1c8;
}

.planning .track { margin-top: 16px; background: #f8ecd6; }

.plan-links {
  display: grid;
  grid-template-columns: repeat(3,minmax(0,1fr));
  gap: 10px;
}

.plan-ticket {
  position: relative;
  display: grid;
  grid-template-columns: auto minmax(0,1fr) auto;
  align-items: center;
  gap: 10px;
  min-height: 99px;
  padding-right: 13px;
  border: 1px solid #ccba9c;
  border-radius: 9px;
  background: var(--paper);
  text-decoration: none;
  transition: border-color 170ms ease, background-color 170ms ease;
}

.plan-ticket:hover { border-color: #a97846; background: #fff6e3; }
.plan-ticket:hover .tile-arrow { transform: translateX(3px); }
.plan-stub {
  position: relative;
  display: grid;
  width: 49px;
  height: 100%;
  min-height: 75px;
  place-items: center;
  border-right: 1px dashed #a98a5b;
  border-radius: 8px 0 0 8px;
  background: #f1d299;
  font-size: 1.18rem;
}

.plan-stub::before, .plan-stub::after {
  position: absolute;
  z-index: 1;
  right: -6px;
  width: 11px;
  height: 11px;
  border-radius: 50%;
  background: #eee1c8;
  content: "";
}
.plan-stub::before { top: -6px; }
.plan-stub::after { bottom: -6px; }
.plan-copy { padding-block: 9px; }
.plan-copy strong { display: block; font: 790 1.03rem/1.18 var(--heading); }
.plan-copy small { display: block; margin-top: 4px; color: var(--muted); font-size: .9375rem; line-height: 1.35; }

.booking-links { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 0 15px; }

.studio-spread {
  display: grid;
  grid-template-columns: minmax(0,.92fr) minmax(0,1.12fr);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  overflow: hidden;
  background: var(--paper);
}

.studio-art { min-height: 330px; }
.studio-art img { position: absolute; inset: 0; object-position: 47% 50%; }
.studio-spread-copy { padding: clamp(18px,2.7vw,34px); }
.exhibit-list { margin: 0; padding: 0; list-style: none; }

.exhibit-list li {
  display: grid;
  grid-template-columns: auto minmax(0,1fr);
  gap: 10px;
  padding: 12px 0;
  border-bottom: 1px dashed var(--line);
}

.exhibit-list li:first-child { padding-top: 0; }
.exhibit-list h3 { margin: 3px 0 5px; font-size: clamp(1.17rem,1.8vw,1.47rem); text-wrap: initial; }
.exhibit-list p { color: var(--muted); font-size: .98rem; line-height: 1.44; }

.studio-tip {
  display: flex;
  align-items: flex-start;
  gap: 7px;
  margin-top: 12px;
  padding: 8px 10px;
  border-radius: 7px;
  background: #f3e2c3;
  font-size: .9rem;
  line-height: 1.45;
}

.studio-tip .icon { margin-top: 3px; color: #79441c; }
.notebook-source { margin-top: 8px; }

.rail-panel.rail-ticket { padding: 0; overflow: hidden; }
.rail-art, .tariff-art { aspect-ratio: 2.01; }
.rail-ticket-copy, .tariff-rail-copy { padding: clamp(16px,2.5vw,27px); }
.rail-ticket-copy h3:first-child { margin-top: 0; }

.checklist-ticket {
  overflow: hidden;
  border: 1px solid #ceb998;
  border-radius: var(--radius);
  background: var(--paper);
}

.checklist-head {
  display: grid;
  grid-template-columns: auto minmax(0,1fr) minmax(130px,.48fr);
  align-items: center;
  gap: 13px;
  padding: clamp(16px,2.5vw,28px);
  border-bottom: 1px dashed #a38b66;
  background: var(--ink);
  color: var(--paper);
}

.checklist-head h2 { font-size: clamp(1.55rem,3vw,2.7rem); text-wrap: initial; }
.checklist-local { margin-top: 3px; color: #e5ded0; font-size: .9375rem; line-height: 1.4; }

.checklist-progress {
  display: grid;
  grid-template-columns: minmax(0,1fr) auto;
  align-items: center;
  gap: 5px 9px;
}

.checklist-progress label { grid-column: 1 / -1; color: #eadcc3; font: 650 .875rem/1.3 var(--heading); }
.checklist-progress progress { width: 100%; height: 9px; overflow: hidden; border: 0; border-radius: 9px; background: #405456; }
.checklist-progress progress::-webkit-progress-bar { background: #405456; }
.checklist-progress progress::-webkit-progress-value { border-radius: 9px; background: var(--amber); transition: width 250ms ease; }
.checklist-progress progress::-moz-progress-bar { border-radius: 9px; background: var(--amber); }
.checklist-progress output { font: 650 .875rem/1.3 var(--heading); }

.checklist-rows {
  display: grid;
  grid-template-columns: repeat(3,minmax(0,1fr));
  margin: 0;
  padding: 0;
  list-style: none;
}

.checklist-rows li + li { border-left: 1px dashed #c9b395; }

.checklist-row {
  display: grid;
  grid-template-columns: 1fr auto;
  grid-template-areas: "sign mark" "copy copy";
  height: 100%;
  align-content: start;
  align-items: center;
  gap: 10px;
  padding: clamp(14px,2.35vw,27px);
  cursor: pointer;
  transition: background-color 180ms ease;
}

.checklist-row:hover { background: #fbf0dc; }
.checklist-row:has(input:checked) { background: #f0e8d3; }
.checklist-row:has(input:focus-visible) { outline: 3px solid var(--blue); outline-offset: -4px; }

.checklist-stub {
  display: grid;
  grid-area: sign;
  width: 36px;
  height: 36px;
  place-items: center;
  border-radius: 6px;
  background: #f3dab0;
}

.checklist-copy { grid-area: copy; }
.checklist-copy strong { display: block; font: 790 1.06rem/1.22 var(--heading); }
.checklist-copy small { display: block; margin-top: 5px; color: var(--muted); font-size: .91rem; line-height: 1.45; }

.checklist-mark {
  position: relative;
  display: grid;
  grid-area: mark;
  width: 35px;
  height: 35px;
}

.checklist-mark input { position: absolute; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: pointer; }
.checklist-mark span {
  display: grid;
  place-items: center;
  border: 1px dashed #9b7547;
  border-radius: 7px;
  color: transparent;
  pointer-events: none;
}

.checklist-mark input:checked + span {
  border: 2px solid #2b6a60;
  background: #e1eee3;
  color: #27584b;
  animation: stamp-check 290ms ease-out both;
}

@keyframes stamp-check {
  from { transform: scale(1.16) rotate(-13deg); }
  to { transform: scale(1) rotate(-6deg); }
}

.checklist-ticket.is-complete .checklist-symbol { background: #cde3d5; }

.fare-options { grid-template-columns: repeat(2,minmax(0,1fr)); }
.fare-options .paper-box { border-bottom-style: dashed; }
.calculator-anchor { margin-top: 18px; }
.calculator {
  padding: clamp(17px,3vw,32px);
  border-radius: var(--radius);
  background: var(--ink);
  color: var(--paper);
}

.calc-head { display: flex; align-items: center; gap: 12px; }
.calc-head h3 { font-size: clamp(1.62rem,3.2vw,2.86rem); }
.calc-head p { margin-top: 4px; color: #e8e1d2; font-size: .94rem; line-height: 1.43; }

.party-fields {
  min-inline-size: 0;
  margin: 15px 0 0;
  padding: 9px 0 0;
  border: 0;
  border-top: 1px dashed #667577;
}

.party-fields legend { padding: 0 8px 0 0; color: #f4d7a4; font: 730 .9375rem/1.3 var(--heading); }
.party-grid { display: grid; grid-template-columns: repeat(5,minmax(0,1fr)); gap: 8px; }

.party-field {
  display: flex;
  min-width: 0;
  flex-direction: column;
  gap: 5px;
  padding: 9px;
  border: 1px solid #657572;
  border-radius: 7px;
  background: #263b3f;
  color: var(--paper);
  font: 720 .92rem/1.25 var(--heading);
}

.party-field > :is(label,span) { flex: 1; }

.party-field input, .party-field select, .amount-input input, .calc-guide-mode select {
  width: 100%;
  min-width: 0;
  min-height: 46px;
  padding: 6px 9px;
  border: 1px solid #79654d;
  border-radius: 5px;
  background: var(--paper);
  color: var(--ink);
  font: 680 1rem/1.2 var(--heading);
}

.party-field input { font-family: var(--mono); }
.calc-scenarios { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); align-items: stretch; gap: 11px; margin-top: 14px; }

.scenario {
  min-width: 0;
  overflow: hidden;
  border: 1px solid #d0ba96;
  border-radius: 10px;
  background: var(--paper);
  color: var(--ink);
}

.scenario--rail { background: #f6e9d2; }
.scenario--coach { display: flex; flex-direction: column; }
.scenario-head {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 11px 14px;
  border-bottom: 1px dashed #c7af8b;
}

.scenario-head .tile-icon { width: 34px; height: 34px; }
.scenario-head h4 { margin: 0; font: 800 clamp(1.19rem,2.2vw,1.75rem)/1.1 var(--heading); letter-spacing: -.035em; }
.scenario-fields { display: grid; gap: 8px; padding: 12px 14px 10px; }
.amount-field label, .calc-family { font: 720 .94rem/1.3 var(--heading); }
.amount-input { position: relative; margin-top: 5px; }
.amount-input input { padding-right: 34px; font-family: var(--mono); }
.amount-input > span { position: absolute; right: 10px; top: 50%; transform: translateY(-50%); color: var(--muted); font: 500 1rem/1 var(--mono); pointer-events: none; }
.amount-hint, .scenario-note { margin-top: 5px; color: var(--muted); font-size: .9375rem; line-height: 1.45; }
.amount-hint .text-link { font-size: inherit; }
.amount-error, .count-error { margin-top: 6px; color: #8b261e; font: 720 .9rem/1.35 var(--heading); }
.count-error { color: #ffd1b2; }
.calculator [aria-invalid="true"] { border: 2px solid #a33d27; }
.party-field :focus-visible { outline-color: #f4d7a4; }
.budget-alert {
  margin: 9px 0;
  padding: 9px 11px;
  border-left: 4px solid #8b5425;
  border-radius: 5px;
  background: #fae4bb;
  color: #4e3017;
  font: 720 .9375rem/1.4 var(--heading);
}
.reconfirm {
  min-height: 44px;
  margin-top: 8px;
  padding: 6px 10px;
  border: 1px solid #79654d;
  border-radius: 5px;
  background: var(--paper);
  color: #255e6d;
  font: 750 .9375rem/1.3 var(--heading);
}

.calc-family { display: flex; align-items: center; gap: 7px; min-height: 44px; cursor: pointer; }
.calc-family input { width: 17px; height: 17px; flex: none; margin: 0; accent-color: var(--blue); }
.calc-guide-mode select { min-height: 46px; font-size: .9375rem; }

.scenario-totals { border-top: 1px dashed #beaa88; padding: 2px 14px 0; }

.scenario-totals > div {
  display: grid;
  grid-template-columns: minmax(0,1fr) minmax(0,auto);
  align-items: center;
  gap: 8px;
  padding: 7px 0;
  border-bottom: 1px solid #dfd1b8;
}

.scenario-totals dt { font: 700 .91rem/1.26 var(--heading); }
.scenario-totals dt small { margin-left: 3px; color: var(--muted); font: 650 .875rem/1.3 var(--heading); }
.scenario-totals dd { text-align: right; overflow-wrap: anywhere; }
.scenario-totals .budget-value { font: 800 clamp(.94rem,1.7vw,1.3rem)/1.2 var(--heading); }
.scenario-totals .shuttle-included { color: #2d5750; font: 750 .88rem/1.2 var(--heading); }
.scenario-totals .scenario-grand { border-bottom: 0; }
.scenario-grand .budget-value { font-size: clamp(1.22rem,2.6vw,1.67rem); }
.scenario-note { padding: 0 14px 11px; }
.scenario-note:empty { padding: 0; }
.scenario-pickup {
  display: grid;
  grid-template-columns: auto minmax(0,1fr);
  align-items: start;
  gap: 8px;
  margin: auto 14px 13px;
  padding: 10px;
  border: 1px dashed #c1a880;
  border-radius: 6px;
  background: #f5e7ce;
}
.scenario-pickup .tile-icon { width: 33px; height: 33px; }
.scenario-pickup p:not(.route-label) { margin: 3px 0; color: var(--muted); font-size: .9375rem; line-height: 1.4; }
.scenario-pickup .text-link { display: inline-flex; min-height: 32px; align-items: center; gap: 4px; }
.calc-caveat { display: flex; gap: 7px; margin-top: 11px; color: #e9dfcb; font-size: .88rem; line-height: 1.42; }
.calc-caveat .icon { margin-top: 2px; color: var(--amber); }

.tariff-board {
  display: grid;
  grid-template-columns: minmax(0,1.42fr) minmax(0,.95fr);
  align-items: start;
  gap: 15px;
  margin-top: 16px;
}

.tariff-copy, .tariff-rail {
  min-width: 0;
  border: 1px solid var(--line);
  border-radius: 11px;
  background: var(--paper);
}

.tariff-copy { padding: clamp(14px,2vw,23px); }
.tariff-copy h3 { margin-bottom: 9px; text-wrap: initial; }
.tariff-copy table { width: 100%; table-layout: fixed; border-collapse: collapse; font: 640 .9375rem/1.4 var(--heading); }
.tariff-copy th:first-child { width: 44%; }
.tariff-copy th, .tariff-copy td { border-bottom: 1px solid var(--line); padding: 7px 4px; text-align: left; overflow-wrap: anywhere; }
.tariff-copy thead { background: #f0dfbd; }
.tariff-copy p { margin-top: 9px; }
.tariff-rail { overflow: hidden; background: #f0e1c7; }
.tariff-rail-copy p + p { margin-top: 6px; }

@media (max-width: 820px) {
  .plan-links { grid-template-columns: 1fr; }
  .plan-ticket { min-height: 74px; }
  .studio-spread { grid-template-columns: 1fr; }
  .studio-art { min-height: 0; aspect-ratio: 1.95; }
  .tariff-board { grid-template-columns: minmax(0,1fr); }
}

@media (max-width: 700px) {
  .features, .fare-options, .calc-scenarios { grid-template-columns: minmax(0,1fr); }
  .party-grid { grid-template-columns: repeat(auto-fit,minmax(min(100%,7rem),1fr)); }
  .day-ticket-head { padding: 12px; gap: 8px; }
  .day-emblem { width: 36px; height: 36px; font-size: 1rem; }
  .day-duration { padding: 5px; font-size: .875rem; }
  .day-photo { aspect-ratio: 2; }
  .day-ticket-body { padding: 12px 14px 15px; }
  .checklist-head { grid-template-columns: auto minmax(0,1fr); gap: 8px 11px; }
  .checklist-progress { grid-column: 1 / -1; }
  .checklist-rows { grid-template-columns: minmax(0,1fr); }
  .checklist-rows li + li { border-left: 0; border-top: 1px dashed #c9b395; }
  .checklist-row { grid-template-columns: auto minmax(0,1fr) auto; grid-template-areas: "sign copy mark"; }
}

@media (max-width: 430px) {
  .day-duration { grid-column: 2; justify-self: start; }
  .day-ticket-head { grid-template-columns: auto minmax(0,1fr); }
  .day-emblem { grid-row: 1 / 3; }
  .calc-icon { width: 38px; height: 38px; }
  .calc-head { align-items: flex-start; }
  .planning .track .track-marker { display: none; }
}

/* modelos genéricos da fase 2 (pratica, locais, comparacao) */
.product-card .booking-end { width: 100%; margin-top: 12px; padding: 12px 0 0; justify-content: space-between; align-items: center; gap: 10px 14px; border-top: 1px solid var(--line); background: none; }
.product-card .facts { margin-top: 8px; }
.facts-board { width: 100%; }
.facts-board dl { width: 100%; margin: 0; }
.facts-board dl > div { padding: 9px 0; border-top: 1px solid var(--line); }
.facts-board dl > div:first-child { border-top: 0; }
.facts-board dt { color: var(--muted); font: 650 .875rem/1.35 var(--heading); }
.facts-board dd { margin: 2px 0 0; font: 740 1rem/1.35 var(--heading); }
.facts-board dd .source-line { display: block; margin-top: 3px; font-weight: 500; }
