.tripme-planner {
	--tripme-primary: #ff3d24;
	--tripme-primary-dark: #d92d18;
	--tripme-primary-tint: #fff1ef;
	--tripme-ink: #171717;
	--tripme-charcoal: #343434;
	--tripme-muted: #666;
	--tripme-border: #d9d9d9;
	--tripme-surface: #fff;
	--tripme-background: #f7f7f7;
	--tripme-success: #16794b;
	--tripme-error: #b42318;
	background: var(--tripme-surface);
	border: 1px solid var(--tripme-border);
	border-radius: 18px;
	box-shadow: 0 18px 48px rgba(23, 23, 23, 0.08);
	box-sizing: border-box;
	color: var(--tripme-ink);
	margin: 28px auto;
	max-width: 780px;
	overflow: hidden;
	padding: clamp(24px, 5vw, 48px);
}

.tripme-planner *,
.tripme-planner *::before,
.tripme-planner *::after {
	box-sizing: border-box;
}

.tripme-planner__header {
	margin-bottom: 28px;
}

.tripme-planner__eyebrow {
	color: var(--tripme-primary-dark);
	font-size: 0.78rem;
	font-weight: 700;
	letter-spacing: 0.09em;
	margin: 0 0 8px;
	text-transform: uppercase;
}

.tripme-planner__title {
	color: var(--tripme-ink);
	font-size: clamp(1.75rem, 5vw, 2.5rem);
	line-height: 1.12;
	margin: 0 0 14px;
}

.tripme-planner__instructions {
	color: var(--tripme-muted);
	font-size: 1rem;
	line-height: 1.65;
	margin: 0;
	max-width: 66ch;
}

.tripme-planner__field {
	display: grid;
	gap: 9px;
}

.tripme-planner__label {
	color: var(--tripme-charcoal);
	font-size: 0.95rem;
	font-weight: 700;
}

.tripme-planner__textarea {
	background: var(--tripme-background);
	border: 1px solid var(--tripme-border);
	border-radius: 12px;
	color: var(--tripme-ink);
	font: inherit;
	line-height: 1.55;
	min-height: 174px;
	padding: 16px;
	resize: vertical;
	transition: border-color 160ms ease, box-shadow 160ms ease, background 160ms ease;
	width: 100%;
}

.tripme-planner__textarea::placeholder {
	color: #777;
	opacity: 1;
}

.tripme-planner__textarea:hover {
	border-color: #aaa;
}

.tripme-planner__textarea:focus {
	background: var(--tripme-surface);
	border-color: var(--tripme-primary);
	box-shadow: 0 0 0 3px rgba(255, 61, 36, 0.18);
	outline: 2px solid transparent;
}

.tripme-planner__field-footer {
	display: flex;
	justify-content: flex-end;
}

.tripme-planner__counter {
	color: var(--tripme-muted);
	font-size: 0.82rem;
	font-variant-numeric: tabular-nums;
}

.tripme-planner__counter.is-at-limit {
	color: var(--tripme-error);
	font-weight: 700;
}

.tripme-planner__actions {
	align-items: center;
	display: flex;
	gap: 18px;
	justify-content: space-between;
	margin-top: 18px;
}

.tripme-planner__submit {
	align-items: center;
	background: var(--tripme-primary);
	border: 2px solid var(--tripme-primary);
	border-radius: 999px;
	color: #fff;
	cursor: pointer;
	display: inline-flex;
	font: inherit;
	font-weight: 700;
	gap: 10px;
	justify-content: center;
	line-height: 1.2;
	min-height: 48px;
	padding: 12px 22px;
	transition: background 160ms ease, border-color 160ms ease, transform 160ms ease;
}

.tripme-planner__submit:hover {
	background: var(--tripme-primary-dark);
	border-color: var(--tripme-primary-dark);
	transform: translateY(-1px);
}

.tripme-planner__submit:focus-visible {
	box-shadow: 0 0 0 3px var(--tripme-surface), 0 0 0 6px rgba(255, 61, 36, 0.48);
	outline: 2px solid transparent;
}

.tripme-planner__submit:disabled {
	cursor: wait;
	opacity: 0.72;
	transform: none;
}

.tripme-planner__spinner {
	animation: tripme-spin 700ms linear infinite;
	border: 2px solid rgba(255, 255, 255, 0.5);
	border-radius: 50%;
	border-top-color: #fff;
	display: none;
	height: 16px;
	width: 16px;
}

.tripme-planner.is-loading .tripme-planner__spinner {
	display: inline-block;
}

.tripme-planner__privacy {
	color: var(--tripme-muted);
	font-size: 0.82rem;
	line-height: 1.45;
	margin: 0;
	max-width: 32ch;
}

.tripme-planner__status {
	border-radius: 10px;
	font-size: 0.94rem;
	font-weight: 600;
	line-height: 1.5;
	margin-top: 18px;
	padding: 12px 14px;
}

.tripme-planner__status.is-success {
	background: #ecfdf3;
	border: 1px solid #a6f4c5;
	color: var(--tripme-success);
}

.tripme-planner__status.is-error {
	background: var(--tripme-primary-tint);
	border: 1px solid #f7b2aa;
	color: var(--tripme-error);
}

.tripme-planner__allowance {
	color: var(--tripme-muted);
	font-size: 0.88rem;
	margin-top: 8px;
}

.tripme-planner__summary {
	background: var(--tripme-background);
	border: 1px solid var(--tripme-border);
	border-radius: 14px;
	margin-top: 22px;
	padding: 20px;
}

.tripme-planner__summary:focus {
	box-shadow: 0 0 0 3px rgba(255, 61, 36, 0.18);
	outline: 2px solid transparent;
}

.tripme-planner__summary-title {
	font-size: 1.08rem;
	margin: 0 0 14px;
}

.tripme-planner__summary-list {
	display: grid;
	gap: 10px 18px;
	grid-template-columns: minmax(90px, max-content) 1fr;
	margin: 0;
}

.tripme-planner__summary-list div {
	display: contents;
}

.tripme-planner__summary-list dt {
	color: var(--tripme-muted);
	font-weight: 600;
}

.tripme-planner__summary-list dd {
	color: var(--tripme-ink);
	margin: 0;
}

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

@keyframes tripme-spin {
	to {
		transform: rotate(360deg);
	}
}

@media (prefers-reduced-motion: reduce) {
	.tripme-planner__textarea,
	.tripme-planner__submit {
		transition: none;
	}

	.tripme-planner__spinner {
		animation: none;
	}
}

@media screen and (max-width: 600px) {
	.tripme-planner {
		border-radius: 14px;
		margin: 18px auto;
		padding: 24px 18px;
	}

	.tripme-planner__actions {
		align-items: stretch;
		flex-direction: column;
	}

	.tripme-planner__submit {
		width: 100%;
	}

	.tripme-planner__privacy {
		max-width: none;
		text-align: center;
	}

	.tripme-planner__summary-list {
		grid-template-columns: 1fr;
	}

	.tripme-planner__summary-list dd {
		margin-bottom: 5px;
	}
}

.tripme-planner:has(.tripme-result) { max-width: 1120px; }
.tripme-result { color: var(--tripme-ink); line-height: 1.65; margin-top: 36px; }
.tripme-result__hero { background: #202020; border-radius: 18px; color: #fff; padding: clamp(24px, 5vw, 50px); }
.tripme-result__eyebrow { color: #ffb5ab; font-size: .75rem; font-weight: 800; letter-spacing: .12em; }
.tripme-result__hero h2 { color: #fff; font-size: clamp(2rem, 5vw, 3.7rem); line-height: 1.1; margin: .2em 0; }
.tripme-result__group { border-bottom: 1px solid #e5e5e5; padding: 34px 0; }
.tripme-result__group > h3 { color: #222; font-size: clamp(1.45rem, 3vw, 2rem); margin: 0 0 23px; }
.tripme-result__module { clear: both; display: flow-root; margin: 26px 0; max-width: 100%; min-width: 0; width: 100%; }
.tripme-result__module > .tripme-result__cards { align-items: stretch; grid-auto-rows: 1fr; min-width: 0; width: 100%; }
/* RC127.33: provider modules stay in normal document flow and their cards never float/overflow into later itinerary sections. */
.tripme-result__module[data-tripme-module*="_viator"] { clear: both; display: flow-root; max-width: 100%; min-width: 0; width: 100%; }
.tripme-result__module[data-tripme-module*="_viator"] > .tripme-result__cards { align-content: start; align-items: stretch; display: grid; grid-auto-flow: row; grid-auto-rows: auto; grid-template-columns: repeat(auto-fill, minmax(min(100%, 260px), 1fr)); min-width: 0; width: 100%; }
.tripme-result__module[data-tripme-module*="_viator"] > .tripme-result__cards > .tripme-result__card { align-self: stretch; box-sizing: border-box; float: none; height: auto; max-width: 100%; min-height: 0; min-width: 0; position: relative; }
.tripme-result__module[data-tripme-module*="_viator"] .tripme-result__card-body { box-sizing: border-box; min-width: 0; overflow-wrap: anywhere; }
.tripme-result__card { box-sizing: border-box; height: 100%; max-width: 100%; min-width: 0; }
.tripme-result__card-body { box-sizing: border-box; min-width: 0; overflow-wrap: anywhere; }
.tripme-result__card h5, .tripme-result__card p, .tripme-result__card small { max-width: 100%; overflow-wrap: anywhere; word-break: normal; }
.tripme-result__media img { display: block; max-width: 100%; }
.tripme-result__why { overflow-wrap: anywhere; }

.tripme-result__module h4, .tripme-result__narrative h4 { font-size: 1.15rem; margin: 0 0 12px; }
.tripme-result__narrative { max-width: 75ch; margin: 22px 0; }
.tripme-result__summary { display: grid; gap: 12px; grid-template-columns: repeat(3, minmax(0, 1fr)); margin: 0; }
.tripme-result__summary div { background: #f7f7f7; border-radius: 10px; padding: 12px 16px; }
.tripme-result__summary dt { color: #555; font-size: .78rem; font-weight: 700; text-transform: uppercase; }
.tripme-result__summary dd { font-weight: 700; margin: 2px 0 0; overflow-wrap: anywhere; }
.tripme-result__timeline { border-left: 2px solid #ff3d24; list-style: none; margin: 0 0 0 11px; padding: 0 0 0 30px; }
.tripme-result__timeline li { margin: 0 0 27px; position: relative; }
.tripme-result__timeline li::before { background: #ff3d24; border: 4px solid #fff; border-radius: 50%; box-shadow: 0 0 0 1px #ff3d24; content: ''; height: 15px; left: -39px; position: absolute; top: 7px; width: 15px; }
.tripme-result__timeline h4 { font-size: 1.1rem; margin: 0 0 8px; }
.tripme-result__day-slots { display: grid; gap: 7px; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.tripme-result__day-slots p { background: #fafafa; border: 1px solid #e9e9e9; border-radius: 8px; margin: 0; padding: 11px; }
.tripme-result__day-slots strong { color: #d92d18; display: block; font-size: .78rem; text-transform: uppercase; }
.tripme-result__day-slots span, .tripme-result__meta { color: #666; font-size: .86rem; }
.tripme-result { color: #273332; font-size: 1rem; line-height: 1.6; overflow-wrap: anywhere; }
.tripme-result__cards { display: grid; gap: 18px; grid-template-columns: repeat(auto-fill, minmax(min(100%, 260px), 1fr)); }
.tripme-result__card { border: 1px solid #dde5e2; border-radius: 14px; min-width: 0; overflow: hidden; background: #fff; display: flex; flex-direction: column; box-shadow: 0 3px 16px rgba(27,49,44,.055); }
.tripme-result__media { align-items: center; background: radial-gradient(circle at 85% 18%, rgba(255,255,255,.46), transparent 31%), linear-gradient(135deg, #346c72, #79a9ab); color: #fff; display: flex; height: 170px; justify-content: center; overflow: hidden; position: relative; }
.tripme-result__media--heritage, .tripme-result__media--square { background: radial-gradient(circle at 80% 15%, rgba(255,255,255,.43), transparent 33%), linear-gradient(135deg, #b44b3d, #eda977); }
.tripme-result__media--garden, .tripme-result__media--nature-day-trip, .tripme-result__media--mountain-region { background: radial-gradient(circle at 80% 15%, rgba(255,255,255,.4), transparent 33%), linear-gradient(135deg, #376a58, #96bba0); }
.tripme-result__media--restaurant, .tripme-result__media--local-specialties, .tripme-result__media--food-workshop { background: radial-gradient(circle at 80% 15%, rgba(255,255,255,.4), transparent 33%), linear-gradient(135deg, #a34c54, #de9e71); }
.tripme-result__media--coastal-town, .tripme-result__media--coastal-city { background: radial-gradient(circle at 80% 15%, rgba(255,255,255,.4), transparent 33%), linear-gradient(135deg, #286b8d, #87bdc7); }
.tripme-result__media--desert-region { background: radial-gradient(circle at 80% 15%, rgba(255,255,255,.4), transparent 33%), linear-gradient(135deg, #a45b43, #dfbe83); }
.tripme-result__media img { height: 100%; object-fit: cover; object-position: 50% 50%; position: absolute; width: 100%; }
.tripme-result__media img[hidden] { display: none; }
.tripme-result__card[hidden] { display: none; }
.tripme-result__media a { background: rgba(0, 0, 0, .64); border-radius: 999px; color: #fff; padding: 7px 13px; position: relative; text-decoration: none; z-index: 1; }
.tripme-result__media button { background: rgba(0, 0, 0, .72); border: 1px solid #fff; border-radius: 999px; color: #fff; cursor: pointer; font: inherit; padding: 7px 13px; position: relative; z-index: 1; }
.tripme-result__media iframe { border: 0; height: 100%; position: absolute; width: 100%; z-index: 1; }
.tripme-result__card-body { display: flex; flex-direction: column; flex: 1; padding: 17px 18px 14px; }
.tripme-result__card h5 { color: #243733; font-size: 1.13rem; line-height: 1.3; margin: 0 0 5px; }
.tripme-result__card p { margin: 7px 0; }
.tripme-result__links { display: flex; flex-wrap: wrap; gap: 8px; margin-top: auto; padding-top: 10px; }
.tripme-result__links a { align-items: center; box-sizing: border-box; border: 1px solid #d6e2dd; border-radius: 7px; color: #8c281d; display: inline-flex; font-size: .83rem; font-weight: 700; max-width: 100%; min-height: 40px; overflow-wrap: anywhere; padding: 5px 10px; text-decoration: none; white-space: normal; }
.tripme-result__links a:hover, .tripme-result__links a:focus-visible { background: #f7eae7; border-color: #bd5143; text-decoration: underline; }
.tripme-result__credit { border-top: 1px solid #e5ece9; color: #5b6865; display: flex; flex-wrap: wrap; gap: 2px 8px; font-size: .7rem; line-height: 1.4; margin-top: 13px; padding-top: 9px; }
.tripme-result__credit a { color: #476b65; }
.tripme-result__representative { color: #5b6865; }
.tripme-result__why { color: #4a4a4a; font-size: .87rem; }
.tripme-result__checklist { display: grid; gap: 8px; list-style: none; margin: 0; padding: 0; }
.tripme-result__checklist li { padding-left: 26px; position: relative; }
.tripme-result__checklist li::before { color: #FF3D24; content: '✓'; font-weight: 900; left: 2px; position: absolute; }
.tripme-result__empty { background: #f5f8f7; border-left: 3px solid #5c9b91; border-radius: 8px; color: #365157; margin: 0; padding: 16px 18px; }
.tripme-result__day-tip { color: #425356; font-size: .91rem; margin: 8px 0; }
.tripme-result__day-tip strong { color: #a5281b; margin-right: .3em; }
.tripme-result__budget-amount { color: #2d5e5a; font-size: 1.25rem; font-weight: 800; margin-bottom: 6px; }
.tripme-result__budget-categories { display: flex; flex-wrap: wrap; gap: 8px; list-style: none; margin: 10px 0 18px; padding: 0; }
.tripme-result__budget-categories li { background: #eef5f2; border: 1px solid #c8ded7; border-radius: 999px; color: #31534c; font-size: .85rem; padding: 5px 11px; }
.tripme-result__related-heading { border-top: 1px solid #e6eceb; margin: 26px 0 13px; padding-top: 15px; }
.tripme-result__card small { color: #697478; display: block; font-size: .72rem; line-height: 1.4; margin-top: 8px; }
.tripme-result__card small a { color: #355f67; }
.tripme-result__faq { border-bottom: 1px solid #e5e5e5; padding: 10px 0; }
.tripme-result__faq summary { cursor: pointer; font-weight: 700; }
.tripme-result__table-wrap { max-width: 100%; overflow-x: auto; }
.tripme-result__table { border-collapse: collapse; min-width: 330px; width: 100%; }
.tripme-result__table th, .tripme-result__table td { border-bottom: 1px solid #e5e5e5; padding: 10px; text-align: left; }
.tripme-result a:focus-visible { outline: 3px solid #ff3d24; outline-offset: 3px; }
@media (max-width: 800px) { .tripme-result__summary { grid-template-columns: repeat(2, 1fr); } .tripme-result__day-slots { grid-template-columns: 1fr; } }
@media (max-width: 600px) { .tripme-result__summary { grid-template-columns: 1fr; } .tripme-result__group { padding: 26px 0; } .tripme-result__hero { border-radius: 12px; } }
@media (min-width: 700px) { .tripme-result__cards { grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); } }
@media (max-width: 699px) { .tripme-result__cards { grid-template-columns: 1fr; } .tripme-result__media { height: clamp(190px, 54vw, 260px); } .tripme-result__links a { min-height: 44px; } .tripme-result__timeline { margin-left: 8px; padding-left: 25px; } .tripme-result__timeline li::before { left: -34px; } }

/* RC126.19: Tripadvisor Terra Image Lab card isolation. Keep test imagery
 * inside its own media box; never allow the dynamically inserted bitmap to
 * escape into adjacent cards or text. */
.tripme-tripadvisor-image-lab { margin-top: 22px; }
.tripme-tripadvisor-image-lab__card {
  background: #fff;
  border: 1px solid #dde5e2;
  border-radius: 14px;
  box-shadow: 0 3px 16px rgba(27,49,44,.055);
  display: flex;
  flex-direction: column;
  min-width: 0;
  overflow: hidden;
}
.tripme-tripadvisor-image-lab__media {
  align-items: center;
  background: #f1f5f3;
  display: flex;
  height: 170px;
  justify-content: center;
  min-height: 170px;
  overflow: hidden;
  position: relative;
  width: 100%;
}
.tripme-tripadvisor-image-lab__media img {
  display: block;
  height: 100%;
  inset: 0;
  max-width: none;
  object-fit: cover;
  object-position: 50% 50%;
  position: absolute;
  width: 100%;
}
.tripme-tripadvisor-image-lab__body {
  display: flex;
  flex: 1;
  flex-direction: column;
  min-width: 0;
  overflow-wrap: anywhere;
  padding: 17px 18px 14px;
}
.tripme-tripadvisor-image-lab__body h5 {
  line-height: 1.3;
  margin: 0 0 5px;
}
.tripme-tripadvisor-image-lab__body p {
  margin: 7px 0;
}
.tripme-tripadvisor-image-lab__link {
  margin-top: auto;
  padding-top: 8px;
}
.tripme-tripadvisor-image-lab__link a {
  overflow-wrap: anywhere;
}
@media (max-width: 699px) {
  .tripme-tripadvisor-image-lab__media { height: clamp(190px, 54vw, 260px); min-height: 190px; }
}

/* Phase 4B.3A Micro-job 20: premium deterministic emergency visual. */
.tripme-result__designed-fallback {
	align-items: flex-start;
	background:
		radial-gradient(circle at 82% 18%, rgba(255,61,36,.20), transparent 28%),
		linear-gradient(135deg, rgba(7,15,18,.62), rgba(7,15,18,.38));
	display: flex;
	flex-direction: column;
	gap: 8px;
	inset: 0;
	justify-content: flex-end;
	padding: 22px;
	position: absolute;
	width: 100%;
	z-index: 0;
}
.tripme-result__designed-fallback[hidden] { display: none; }
.tripme-result__designed-fallback::before {
	border: 1px solid rgba(255,61,36,.56);
	border-radius: 50%;
	content: '';
	height: 120px;
	position: absolute;
	right: -34px;
	top: -42px;
	width: 120px;
}
.tripme-result__designed-fallback::after {
	background: repeating-linear-gradient(45deg, rgba(255,61,36,.18) 0 2px, transparent 2px 12px);
	box-shadow: inset 0 4px 0 #FF3D24;
	content: '';
	inset: 0;
	pointer-events: none;
	position: absolute;
}
.tripme-result__designed-fallback > * { position: relative; z-index: 1; }
.tripme-result__fallback-kicker {
	font-size: .75rem;
	font-weight: 700;
	letter-spacing: .08em;
	line-height: 1.35;
	max-width: 92%;
	text-transform: uppercase;
}
.tripme-result__designed-fallback strong {
	color: #fff;
	font-size: clamp(1.45rem, 4vw, 2.05rem);
	letter-spacing: -.025em;
	line-height: 1.05;
	max-width: 92%;
}
.tripme-result__fallback-mark {
	font-size: .72rem;
	font-weight: 800;
	letter-spacing: .12em;
	opacity: .82;
	text-transform: uppercase;
}
.tripme-result__media--nightlife { background: radial-gradient(circle at 80% 16%, rgba(255,255,255,.22), transparent 30%), linear-gradient(135deg, #342447, #7f4d72); }
.tripme-result__media--neighborhood, .tripme-result__media--neighborhoods { background: radial-gradient(circle at 80% 16%, rgba(255,255,255,.22), transparent 30%), linear-gradient(135deg, #4d5e57, #8f9e72); }
.tripme-result__media--attraction, .tripme-result__media--attractions { background: radial-gradient(circle at 80% 16%, rgba(255,255,255,.22), transparent 30%), linear-gradient(135deg, #8c4b39, #c4815c); }
.tripme-result__media--event, .tripme-result__media--events { background: radial-gradient(circle at 80% 16%, rgba(255,255,255,.22), transparent 30%), linear-gradient(135deg, #654244, #b26a64); }
.tripme-result__media--tour, .tripme-result__media--tours, .tripme-result__media--experience, .tripme-result__media--activities { background: radial-gradient(circle at 80% 16%, rgba(255,255,255,.22), transparent 30%), linear-gradient(135deg, #3f6170, #7296a5); }
.tripme-result__media--hotel, .tripme-result__media--accommodation, .tripme-result__media--stay { background: radial-gradient(circle at 80% 16%, rgba(255,255,255,.22), transparent 30%), linear-gradient(135deg, #72563e, #b58b66); }
@media (max-width: 699px) {
	.tripme-result__designed-fallback { padding: 24px; }
	.tripme-result__fallback-kicker { font-size: .73rem; }
}

/* Phase 4C: standalone unlisted itinerary URL. */
body.tripme-public-itinerary {
	margin: 0;
	background: #fff;
	color: #111;
	font-family: inherit;
}
.tripme-share-shell__header {
	position: sticky;
	top: 0;
	z-index: 20;
	background: rgba(255,255,255,.96);
	border-bottom: 1px solid rgba(15,23,42,.1);
	backdrop-filter: blur(10px);
}
.tripme-share-shell__inner {
	max-width: 1120px;
	margin: 0 auto;
	padding: 14px 24px;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
}
.tripme-share-shell__brand {
	font-size: 1.25rem;
	font-weight: 800;
	text-decoration: none;
	color: #111;
}
.tripme-share-shell__brand::before {
	content: '';
	display: inline-block;
	width: 9px;
	height: 9px;
	margin-right: 8px;
	border-radius: 50%;
	background: #FF3D24;
	vertical-align: .08em;
}
.tripme-share-shell__new {
	color: #FF3D24;
	font-weight: 700;
	text-decoration: none;
}
.tripme-share-shell {
	max-width: 1120px;
	margin: 0 auto;
	padding: 30px 24px 72px;
}
@media (max-width: 480px) {
	.tripme-share-shell__inner { padding: 12px 16px; }
	.tripme-share-shell { padding: 20px 14px 48px; }
	.tripme-share-shell__new { font-size: .875rem; }
}

/* Phase 4C Micro-jobs 35-37: email, sharing and privacy-light share UX. */
.tripme-share-tools {
	margin: 0 0 30px;
	padding: 24px;
	border: 1px solid rgba(15,23,42,.12);
	border-radius: 18px;
	background: #fff;
	box-shadow: 0 8px 28px rgba(15,23,42,.05);
}
.tripme-share-tools__copy { max-width: 760px; }
.tripme-share-tools__eyebrow { margin: 0 0 7px; color: #FF3D24; font-size: .74rem; font-weight: 800; letter-spacing: .08em; }
.tripme-share-tools h1 { margin: 0 0 8px; font-size: clamp(1.45rem, 3vw, 2rem); line-height: 1.15; }
.tripme-share-tools__copy > p:last-child { margin: 0; color: #475569; line-height: 1.6; }
.tripme-share-actions { display: flex; flex-wrap: wrap; gap: 9px; margin: 20px 0; }
.tripme-share-action,
.tripme-email-trip button {
	appearance: none;
	border: 1px solid rgba(15,23,42,.16);
	border-radius: 9px;
	background: #fff;
	color: #111;
	cursor: pointer;
	font: inherit;
	font-weight: 700;
	line-height: 1.2;
	padding: 10px 13px;
	text-decoration: none;
}
.tripme-share-action:hover,
.tripme-share-action:focus-visible { border-color: #FF3D24; color: #FF3D24; }
.tripme-email-trip { margin-top: 4px; padding-top: 18px; border-top: 1px solid rgba(15,23,42,.1); }
.tripme-email-trip > label { display: block; margin-bottom: 8px; font-weight: 750; }
.tripme-email-trip__row { display: flex; gap: 8px; max-width: 620px; }
.tripme-email-trip input { min-width: 0; flex: 1 1 auto; border: 1px solid rgba(15,23,42,.22); border-radius: 9px; font: inherit; padding: 11px 12px; }
.tripme-email-trip button { flex: 0 0 auto; background: #FF3D24; border-color: #FF3D24; color: #fff; }
.tripme-email-trip button:disabled { cursor: wait; opacity: .65; }
.tripme-email-trip__note { margin: 8px 0 0; color: #64748b; font-size: .82rem; line-height: 1.45; }
.tripme-email-trip__status { min-height: 1.4em; margin: 8px 0 0; font-weight: 650; }
@media (max-width: 560px) {
	.tripme-share-tools { padding: 18px; border-radius: 14px; }
	.tripme-share-actions { gap: 7px; }
	.tripme-share-action { flex: 1 1 calc(50% - 7px); text-align: center; }
	.tripme-email-trip__row { flex-direction: column; }
	.tripme-email-trip button { width: 100%; }
}

/* Phase 4C RC4: share UX polish, cache-safe canonical page and refreshed fallback. */
body.tripme-public-itinerary,
.tripme-share-shell,
.tripme-share-tools,
.tripme-result {
	font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
.tripme-share-tools {
	position: relative;
	overflow: hidden;
	margin: 0 0 34px;
	padding: 28px;
	border: 1px solid rgba(15,23,42,.10);
	border-radius: 22px;
	background: linear-gradient(180deg,#fff 0%,#fff 74%,#fff9f7 100%);
	box-shadow: 0 14px 38px rgba(15,23,42,.07);
}
.tripme-share-tools::before {
	content: '';
	position: absolute;
	left: 0;
	top: 0;
	bottom: 0;
	width: 5px;
	background: #FF3D24;
}
.tripme-share-tools__copy { max-width: 820px; }
.tripme-share-tools__copy h2 { margin: 0 0 9px; font-size: clamp(1.55rem, 2.8vw, 2.25rem); line-height: 1.08; letter-spacing: -.025em; }
.tripme-share-tools__copy > p:last-child { margin: 0; max-width: 760px; color: #46515b; font-size: .98rem; line-height: 1.65; }
.tripme-share-actions {
	display: grid;
	grid-template-columns: repeat(4, minmax(0,1fr));
	gap: 10px;
	margin: 22px 0 0;
}
.tripme-share-action {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 9px;
	min-height: 48px;
	padding: 11px 14px;
	border: 1px solid #dce2e5;
	border-radius: 12px;
	background: #fff;
	color: #172025;
	box-shadow: 0 2px 8px rgba(15,23,42,.035);
	transition: transform .16s ease,border-color .16s ease,box-shadow .16s ease,color .16s ease;
}
.tripme-share-action svg { flex: 0 0 auto; }
.tripme-share-action:hover,
.tripme-share-action:focus-visible {
	transform: translateY(-1px);
	border-color: #FF3D24;
	box-shadow: 0 7px 18px rgba(255,61,36,.10);
	color: #FF3D24;
}
.tripme-share-action--native { background: #172025; border-color: #172025; color: #fff; }
.tripme-share-action--native:hover,
.tripme-share-action--native:focus-visible { color: #fff; background: #FF3D24; border-color: #FF3D24; }
.tripme-email-trip {
	margin-top: 22px;
	padding-top: 22px;
	border-top: 1px solid rgba(15,23,42,.1);
}
.tripme-email-trip > label:first-child { display:block; margin:0 0 9px; font-size:1rem; font-weight:800; }
.tripme-email-trip__row { max-width: 700px; }
.tripme-email-trip input[type="email"] { min-height: 48px; border-radius: 12px; }
.tripme-email-trip button { min-height: 48px; border-radius: 12px; padding-inline: 18px; }
.tripme-marketing-optin {
	display:flex;
	align-items:flex-start;
	gap:9px;
	max-width:760px;
	margin:14px 0 0;
	font-size:.9rem;
	font-weight:650;
	line-height:1.5;
	color:#253137;
	cursor:pointer;
}
.tripme-marketing-optin input { width:18px; height:18px; margin-top:2px; flex:0 0 auto; accent-color:#FF3D24; }
.tripme-email-trip__note { max-width: 820px; }
.tripme-share-tools--compact { margin: 38px 0 0; padding: 24px 28px; background: #172025; color:#fff; border-color:#172025; }
.tripme-share-tools--compact::before { width: 6px; }
.tripme-share-tools--compact .tripme-share-tools__eyebrow { color:#ff8c7c; }
.tripme-share-tools--compact .tripme-share-tools__copy > p:last-child { color:#dbe3e6; }
.tripme-share-tools--compact .tripme-share-tools__copy h2 { color:#fff; }
.tripme-share-tools--compact .tripme-share-action { background:#fff; }

/* Darker premium fallback with TripMe primary accent instead of the old pale stripe. */
.tripme-result__designed-fallback {
	background:
		radial-gradient(circle at 84% 14%, rgba(255,61,36,.24), transparent 28%),
		linear-gradient(135deg, #17393b 0%, #28595a 62%, #17393b 100%);
}
.tripme-result__designed-fallback::after {
	background: repeating-linear-gradient(45deg, rgba(255,61,36,.20) 0 2px, transparent 2px 13px);
	box-shadow: inset 0 5px 0 #FF3D24;
}

@media (max-width: 820px) {
	.tripme-share-actions { grid-template-columns: repeat(2, minmax(0,1fr)); }
}
@media (max-width: 560px) {
	.tripme-share-tools { padding: 20px 18px 20px 22px; border-radius: 16px; }
	.tripme-share-tools__copy h2 { font-size: 1.8rem; }
	.tripme-share-actions { grid-template-columns: 1fr; gap: 8px; }
	.tripme-share-action { justify-content: flex-start; padding-inline: 18px; }
	.tripme-share-tools--compact .tripme-share-actions { grid-template-columns: repeat(2,minmax(0,1fr)); }
	.tripme-share-tools--compact .tripme-share-action { justify-content:center; padding-inline:12px; }
}

/* Phase 4C Micro-job 44: provider-neutral monetization insertion points.
 * Empty boundaries take no space; a future ad/network adapter can populate them. */
.tripme-monetization-boundary:empty{display:none}
.tripme-monetization-boundary:not(:empty){margin:clamp(24px,4vw,48px) 0}

/* Phase 4D Micro-job 52A: accommodation commerce */
.tripme-result__links .tripme-result__link--primary { background: #ff3d24; border-color: #ff3d24; color: #fff; flex-basis: 100%; justify-content: center; }
.tripme-result__links .tripme-result__link--primary:hover,
.tripme-result__links .tripme-result__link--primary:focus-visible { background: #d92d18; border-color: #d92d18; color: #fff; }
.tripme-result__links .tripme-result__link--secondary { border: 0; color: #4d5b58; flex-basis: 100%; font-size: .8rem; justify-content: flex-start; min-height: 32px; padding: 2px 0; text-decoration: underline; text-underline-offset: 2px; }
.tripme-result__links .tripme-result__link--secondary:hover,
.tripme-result__links .tripme-result__link--secondary:focus-visible { background: transparent; color: #8c281d; }
.tripme-accommodation-explore { border-top: 1px solid #e5e9e7; margin-top: 28px; padding-top: 24px; }
.tripme-accommodation-explore__heading { margin-bottom: 14px; }
.tripme-accommodation-explore__heading h5 { font-size: 1.1rem; margin: 0 0 4px; }
.tripme-accommodation-explore__heading p { color: #626d6a; margin: 0; }
.tripme-accommodation-explore__map { border: 0; border-radius: 14px; height: 420px; width: 100%; }
@media (max-width: 699px) { .tripme-accommodation-explore__map { height: 480px; } }

.tripme-tours-explore { border-top: 1px solid #e5e9e7; margin-top: 28px; padding-top: 24px; }
.tripme-tours-explore__heading { margin-bottom: 14px; }
.tripme-tours-explore__heading h5 { font-size: 1.1rem; margin: 0 0 4px; }
.tripme-tours-explore__heading p { color: #626d6a; margin: 0; }
.tripme-tours-explore__links { align-items: center; display: flex; flex-wrap: wrap; gap: 10px; }

.tripme-planner__hint{margin:.55rem 0 0;font-size:.92rem;line-height:1.45;color:inherit;opacity:.78;}

/* RC110: distinct lower-page inbox block and guaranteed dark-panel heading contrast. */
.tripme-share-tools--email-only { margin:38px 0 0; background:#fff; color:#172025; }
.tripme-share-tools--email-only .tripme-share-tools__copy h2 { color:#172025; }
.tripme-share-tools--email-only .tripme-share-tools__copy > p:last-child { color:#46515b; }
.tripme-share-tools--compact .tripme-share-tools__copy h2,
.tripme-share-tools--compact #tripme-share-heading { color:#fff !important; }

/* RC125.2: GetYourGuide is a prominent secondary comparison CTA under Viator products. */
.tripme-result__links .tripme-result__link--compare { flex-basis: 100%; min-height: 44px; justify-content: center; border-color: #ff3d24; color: #8c281d; font-size: .9rem; font-weight: 800; background: #fff8f6; }
.tripme-result__links .tripme-result__link--compare:hover,
.tripme-result__links .tripme-result__link--compare:focus-visible { background: #fbe4df; border-color: #d92d18; color: #7b2016; }



/* RC127.15: a compact, destination-specific Viator experience visual inside What's happening.
   It is deliberately labelled as experience inspiration rather than a dated event. */
.tripme-events-experience {
	align-items: center;
	border: 1px solid var(--tripme-border, #d9d9d9);
	border-radius: 14px;
	display: grid;
	gap: 16px;
	grid-template-columns: minmax(120px, 200px) minmax(0, 1fr);
	margin: 20px 0 8px;
	overflow: hidden;
	padding: 12px;
}
.tripme-events-experience__image-link {
	display: block;
	min-width: 0;
}
.tripme-events-experience__image-link img {
	aspect-ratio: 4 / 3;
	border-radius: 9px;
	display: block;
	height: auto;
	object-fit: cover;
	width: 100%;
}
.tripme-events-experience__copy { min-width: 0; }
.tripme-events-experience__copy h5 { margin: 4px 0 8px; }
.tripme-events-experience__copy > p:not(.tripme-events-experience__eyebrow) { margin: 0 0 10px; }
.tripme-events-experience__eyebrow {
	color: var(--tripme-primary-dark, #d92d18);
	font-size: .75rem;
	font-weight: 700;
	letter-spacing: .04em;
	margin: 0;
	text-transform: uppercase;
}
@media (max-width: 540px) {
	.tripme-events-experience {
		gap: 10px;
		grid-template-columns: minmax(0, 1fr);
	}
	.tripme-events-experience__image-link img { aspect-ratio: 16 / 9; }
}


/* RC127.21: Where to Eat only — high-contrast original designed fallback. */
.tripme-result__media--restaurant,
.tripme-result__media--restaurants {
	background: #fff;
}
.tripme-result__designed-fallback[data-tripme-media-module="restaurants"] {
	background: #fff;
	color: #111;
	box-shadow: inset 0 0 0 1px rgba(0, 0, 0, .12), 0 10px 24px rgba(0, 0, 0, .18);
}
.tripme-result__designed-fallback[data-tripme-media-module="restaurants"]::before {
	border-color: rgba(0, 0, 0, .28);
	box-shadow: 0 8px 22px rgba(0, 0, 0, .18);
}
.tripme-result__designed-fallback[data-tripme-media-module="restaurants"]::after {
	background: repeating-linear-gradient(45deg, rgba(0, 0, 0, .075) 0 1px, transparent 1px 12px);
	box-shadow: inset 0 4px 0 #111;
}
.tripme-result__designed-fallback[data-tripme-media-module="restaurants"] .tripme-result__fallback-kicker,
.tripme-result__designed-fallback[data-tripme-media-module="restaurants"] strong,
.tripme-result__designed-fallback[data-tripme-media-module="restaurants"] .tripme-result__fallback-mark {
	color: #111;
	text-shadow: 0 1px 2px rgba(0, 0, 0, .12);
}


/* RC127.29: keep designed fallback copy contained and readable in every destination card. */
.tripme-result__designed-fallback {
	box-sizing: border-box;
	max-width: 100%;
	min-width: 0;
	overflow: hidden;
	padding: clamp(12px, 3.5%, 20px);
}
.tripme-result__designed-fallback .tripme-result__fallback-kicker,
.tripme-result__designed-fallback strong,
.tripme-result__designed-fallback .tripme-result__fallback-mark {
	box-sizing: border-box;
	max-width: 100%;
	min-width: 0;
	overflow-wrap: anywhere;
	word-break: normal;
	hyphens: auto;
}
.tripme-result__designed-fallback .tripme-result__fallback-kicker {
	font-size: clamp(.58rem, 1.2vw, .72rem);
	letter-spacing: .045em;
	line-height: 1.3;
}
.tripme-result__designed-fallback strong {
	font-size: clamp(.9rem, 2.35vw, 1.35rem);
	letter-spacing: -.015em;
	line-height: 1.12;
}
.tripme-result__designed-fallback .tripme-result__fallback-mark {
	font-size: clamp(.62rem, 1.15vw, .7rem);
	letter-spacing: .09em;
	line-height: 1.2;
}
@media (max-width: 699px) {
	.tripme-result__designed-fallback { padding: clamp(10px, 3.5%, 16px); }
	.tripme-result__designed-fallback strong { font-size: clamp(.88rem, 3.7vw, 1.15rem); }
}

/* RC127.29: clamp only the designed-fallback copy layer, never the card body. */
.tripme-result__designed-fallback .tripme-result__fallback-kicker {
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 2;
	overflow: hidden;
}
.tripme-result__designed-fallback strong {
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 4;
	overflow: hidden;
	flex: 0 1 auto;
}
.tripme-result__designed-fallback .tripme-result__fallback-mark {
	flex: 0 0 auto;
	white-space: nowrap;
}


/* RC127.34: keep Viator cards contained; long titles/descriptions/actions stay inside their own section. */
.tripme-result__module[data-tripme-module="day_trips_excursions_viator"],
.tripme-result__module[data-tripme-module="private_custom_experiences_viator"],
.tripme-result__module[data-tripme-module="food_tours_viator_test"],
.tripme-result__module[data-tripme-module="nightlife_tours_viator_test"],
.tripme-result__module[data-tripme-module="neighborhoods_viator_test"] { clear: both; display: flow-root; isolation: isolate; min-width: 0; max-width: 100%; width: 100%; }
.tripme-result__module[data-tripme-module="worth_posting_viator_test"] > .tripme-result__cards,
.tripme-result__module[data-tripme-module="worth_the_detour_viator_test"] > .tripme-result__cards,
.tripme-result__module[data-tripme-module="neighborhoods_viator_test"] > .tripme-result__cards,
.tripme-result__module[data-tripme-module="food_tours_viator_test"] > .tripme-result__cards,
.tripme-result__module[data-tripme-module="nightlife_tours_viator_test"] > .tripme-result__cards,
.tripme-result__module[data-tripme-module="socializing_tours_viator_test"] > .tripme-result__cards,
.tripme-result__module[data-tripme-module="day_trips_excursions_viator"] > .tripme-result__cards,
.tripme-result__module[data-tripme-module="private_custom_experiences_viator"] > .tripme-result__cards { display: grid; grid-auto-flow: row; grid-auto-rows: minmax(0, auto); align-items: stretch; align-content: start; gap: 18px; grid-template-columns: repeat(auto-fill, minmax(min(100%, 260px), 1fr)); min-width: 0; width: 100%; }
.tripme-result__module[data-tripme-module*="_viator"] > .tripme-result__cards > .tripme-result__card { box-sizing: border-box; float: none; height: auto; min-height: 0; min-width: 0; max-width: 100%; overflow: hidden; position: relative; display: flex; flex-direction: column; align-self: stretch; }
.tripme-result__module[data-tripme-module*="_viator"] .tripme-result__card-body { display: flex; flex: 1 1 auto; flex-direction: column; min-width: 0; max-width: 100%; overflow-wrap: anywhere; }
.tripme-result__provider-fallback-card, .tripme-result__neighborhood-preview-card { box-sizing: border-box; display: flex; flex-direction: column; min-width: 0; max-width: 100%; overflow: hidden; }
.tripme-result__provider-fallback-visual { aspect-ratio: 16 / 9; box-sizing: border-box; display: flex; flex-direction: column; justify-content: flex-end; gap: 10px; min-width: 0; min-height: 176px; max-width: 100%; overflow: hidden; overflow-wrap: anywhere; padding: clamp(12px, 1.6vw, 20px); color: #fff; background: linear-gradient(135deg, #233b36 0%, #346a69 56%, #ff3d24 145%); }
.tripme-result__provider-fallback-visual strong { display: block; max-width: 100%; margin: 0; font-size: clamp(1.05rem, 1.55vw, 1.45rem); line-height: 1.12; overflow-wrap: anywhere; word-break: normal; }
.tripme-result__provider-fallback-kicker { display: block; max-width: 100%; font-size: clamp(.62rem, .72vw, .72rem); font-weight: 700; letter-spacing: .07em; line-height: 1.25; overflow-wrap: anywhere; }
.tripme-result__provider-fallback-visual > span:last-child { display: block; max-width: 100%; font-size: .9rem; line-height: 1.3; overflow-wrap: anywhere; }
.tripme-result__neighborhood-preview-visual { color: #152923; border-bottom: 1px solid #d6e0db; background: linear-gradient(135deg, #f8faf9, #e2ece7); }
.tripme-result__neighborhood-preview-visual .tripme-result__provider-fallback-kicker { color: #435d53; }


/* RC127.57 — progressive generation: shared white diagonal fallback visual from Where to eat. */
.tripme-progressive-banner { box-sizing: border-box; margin: 18px auto 22px; max-width: 1240px; padding: 14px 18px; border: 1px solid #ffe1dc; border-radius: 14px; background: #fff7f5; color: #171717; }
.tripme-progressive-banner__top { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; }
.tripme-progressive-banner__top strong { font-size: 1rem; font-weight: 800; }
.tripme-progressive-banner p { margin: 7px 0 0; max-width: none; color: #575757; font-size: .92rem; }
.tripme-progressive-spinner { flex: 0 0 19px; width: 19px; height: 19px; box-sizing: border-box; border-radius: 50%; border: 3px solid #ffd2c9; border-top-color: #ff432e; animation: tripme-progressive-spin .8s linear infinite; }
.tripme-progressive-progress { height: 4px; margin-top: 12px; overflow: hidden; border-radius: 999px; background: #f1e8e6; }
.tripme-progressive-progress span { display: block; width: 10%; height: 100%; border-radius: inherit; background: #ff432e; transition: width .25s ease; }
.tripme-progressive-banner.is-terminal .tripme-progressive-spinner { border-color: #a7a7a7; border-top-color: #666; animation: none; }
.tripme-progressive-banner.is-terminal .tripme-progressive-progress { display: none; }
.tripme-progressive-cards { align-items: stretch; }
.tripme-result__progressive-skeleton-card { border: 1px solid #dfe3e6; border-radius: 13px; background: #fff; box-shadow: 0 2px 9px rgba(18, 32, 41, .055); min-height: 260px; }
.tripme-progressive-fallback-visual { position: relative; display: flex; flex-direction: column; justify-content: flex-end; gap: 10px; box-sizing: border-box; min-height: 176px; aspect-ratio: 16 / 9; overflow: hidden; padding: 14px; border-top: 5px solid #111; color: #111; background: repeating-linear-gradient(45deg, #fff 0, #fff 11px, #ececec 11px, #ececec 12px, #fff 12px, #fff 22px); }
.tripme-progressive-fallback-visual::before { content: ""; position: absolute; top: -30px; right: -19px; width: 104px; height: 104px; border-radius: 50%; border: 1px solid rgba(0, 0, 0, .18); background: rgba(255, 255, 255, .88); box-shadow: 0 2px 10px rgba(0, 0, 0, .12); }
.tripme-progressive-fallback-kicker { position: relative; z-index: 1; display: block; max-width: 100%; color: #111; font-size: .65rem; line-height: 1.25; font-weight: 800; letter-spacing: .045em; text-transform: uppercase; overflow-wrap: anywhere; }
.tripme-progressive-fallback-brand { position: relative; z-index: 1; display: block; margin-top: 1px; color: #111; font-size: .62rem; line-height: 1; font-weight: 900; letter-spacing: .14em; }
.tripme-progressive-skeleton-line { position: relative; z-index: 1; display: block; width: 78%; height: 11px; border-radius: 4px; background: #e2e5e9; }
.tripme-progressive-skeleton-line--title { width: 86%; height: 17px; background: #dce0e4; }
.tripme-progressive-skeleton-line--short { width: 53%; }
.tripme-progressive-skeleton-body { display: flex; flex: 1 1 auto; flex-direction: column; gap: 10px; padding: 13px 14px 14px; }
.tripme-progressive-loading-copy { min-height: 18px; color: #777; font-size: .78rem; }
.tripme-progressive-skeleton-cta { display: inline-flex; box-sizing: border-box; width: 100%; min-height: 38px; margin-top: auto; align-items: center; justify-content: center; padding: 8px 10px; border: 1px solid #ff432e !important; border-radius: 7px; color: #ff432e !important; background: #fff !important; font-size: .82rem; font-weight: 750; line-height: 1.25; text-align: center; text-decoration: none !important; }
.tripme-progressive-skeleton-cta:hover, .tripme-progressive-skeleton-cta:focus { color: #fff !important; background: #ff432e !important; }
@keyframes tripme-progressive-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .tripme-progressive-spinner { animation: none; } .tripme-progressive-progress span { transition: none; } }
@media (max-width: 699px) { .tripme-progressive-banner { margin: 12px 12px 18px; padding: 12px; } .tripme-result__progressive-skeleton-card { min-height: 230px; } }

/* RC127.60: no numeric readiness badges are emitted in public itinerary UI. */
