/* Trasa Swojczycka v1.4.4
   Full-bleed city hero · route map · content in shell · text-only timeline
   Poppins · Literata only for promise · mobile-first polish
*/

.ts {
	--ts-ink: #0b1c33;
	--ts-navy: #0d2a5c;
	--ts-blue: #1a4f9c;
	--ts-red: #c8102e;
	--ts-paper: #f4f6f9;
	--ts-white: #ffffff;
	--ts-line: rgba(11, 28, 51, 0.12);
	--ts-muted: rgba(11, 28, 51, 0.72);
	--ts-max: 1120px;
	--ts-ease: cubic-bezier(0.22, 1, 0.36, 1);

	color: var(--ts-ink);
	background: var(--ts-white);
	font-family: "Poppins", system-ui, sans-serif;
	font-size: clamp(0.98rem, 0.94rem + 0.2vw, 1.075rem);
	line-height: 1.65;
	overflow-x: clip;
	width: 100%;
	max-width: none;
}

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

/* Blocksy full-bleed */
body.ts-page .entry-header,
body.trasa-swojczycka-page article > .hero-section { display: none !important; }

body.ts-page #main > .ct-container,
body.ts-page #main > .ct-container-full,
body.ts-page .ct-container-full {
	max-width: none !important;
	width: 100% !important;
	padding: 0 !important;
	margin: 0 !important;
}

body.ts-page .entry-content,
body.ts-page .entry-content.is-layout-constrained {
	max-width: none !important;
	width: 100% !important;
	margin: 0 !important;
	padding: 0 !important;
}

body.ts-page .entry-content.is-layout-constrained > .ts,
body.ts-page .entry-content > .ts,
body.ts-page .ts.alignfull {
	max-width: none !important;
	width: 100% !important;
	margin: 0 !important;
}

.ts-shell {
	width: min(100% - 1.5rem, var(--ts-max));
	margin-inline: auto;
}

@media (min-width: 768px) {
	.ts-shell { width: min(100% - 2.5rem, var(--ts-max)); }
}

@media (min-width: 1100px) {
	.ts-shell { width: min(100% - 4rem, var(--ts-max)); }
}

.ts-h2 {
	margin: 0 0 .9rem;
	font-family: "Poppins", system-ui, sans-serif;
	font-weight: 700;
	font-size: clamp(1.4rem, 1.15rem + 1.1vw, 2.05rem);
	line-height: 1.22;
	letter-spacing: -0.02em;
	color: var(--ts-ink);
	text-wrap: balance;
}

.ts-h2--light { color: var(--ts-white); }

.ts-prose {
	margin: 0 0 1rem;
	color: var(--ts-muted);
	max-width: 62ch;
}

.ts-prose:last-child { margin-bottom: 0; }

.ts-prose--lead {
	position: relative;
	color: var(--ts-ink);
	font-weight: 500;
	font-size: clamp(1.12rem, 1.02rem + 0.5vw, 1.32rem);
	line-height: 1.55;
	letter-spacing: -0.01em;
	max-width: 54ch;
	margin: 0 0 1.6rem;
	padding: .15rem 0 .15rem 1.15rem;
	border-left: 3px solid var(--ts-red);
}

.ts-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 2.75rem;
	padding: 0.6rem 1.15rem;
	border-radius: 2px;
	border: 1.5px solid transparent;
	font-family: "Poppins", system-ui, sans-serif;
	font-size: 0.88rem;
	font-weight: 600;
	text-decoration: none;
	transition: background .2s ease, border-color .2s ease, color .2s ease;
}

.ts-btn:focus-visible { outline: 2px solid var(--ts-red); outline-offset: 3px; }

.ts-btn--solid { background: var(--ts-blue); color: var(--ts-white); }
.ts-btn--solid:hover { background: var(--ts-navy); color: var(--ts-white); }

.ts-btn--line {
	background: rgba(255,255,255,.08);
	border-color: rgba(255,255,255,.45);
	color: var(--ts-white);
}
.ts-btn--line:hover { border-color: #fff; color: #fff; }

.ts-btn--ghost-dark {
	background: transparent;
	border-color: rgba(11,28,51,.25);
	color: var(--ts-ink);
}

/* ——— HERO: full-bleed city, content in shell ——— */
.ts-hero {
	--ts-header-offset: var(--ts-measured-header, 80px);
	position: relative;
	margin-top: var(--ts-header-offset);
	min-height: min(52vh, 480px);
	display: flex;
	align-items: flex-end;
	padding: 2rem 0 1.75rem;
	color: #fff;
	overflow: hidden;
}

@media (min-width: 768px) {
	.ts-hero {
		min-height: min(56vh, 540px);
		padding: 2.5rem 0 2.25rem;
	}
}

.ts-hero__media {
	position: absolute;
	inset: 0;
	z-index: 0;
}

.ts-hero__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: 28% center;
	display: block;
}

@media (min-width: 800px) {
	.ts-hero__media img {
		object-position: center center;
	}
}

.ts-hero__veil {
	position: absolute;
	inset: 0;
	background:
		linear-gradient(180deg, rgba(8,20,40,.22) 0%, rgba(8,20,40,.38) 48%, rgba(8,20,40,.7) 100%),
		linear-gradient(90deg, rgba(8,20,40,.45) 0%, rgba(8,20,40,.15) 55%, rgba(8,20,40,.08) 100%);
}

.ts-hero__inner {
	position: relative;
	z-index: 1;
	width: min(100% - 1.5rem, var(--ts-max));
	padding-bottom: .25rem;
}

@media (min-width: 768px) {
	.ts-hero__inner { width: min(100% - 2.5rem, var(--ts-max)); }
}

@media (min-width: 1100px) {
	.ts-hero__inner { width: min(100% - 4rem, var(--ts-max)); }
}

.ts-hero__title {
	margin: 0 0 1.25rem;
	display: grid;
	gap: .7rem;
}

.ts-hero__brand {
	display: block;
	font-weight: 800;
	font-size: clamp(2.1rem, 1.3rem + 3.2vw, 3.85rem);
	line-height: 1.02;
	letter-spacing: -.03em;
	color: #fff;
	max-width: 12ch;
}

.ts-hero__promise {
	display: block;
	white-space: nowrap;
	font-family: "Literata", Georgia, "Times New Roman", serif;
	font-style: italic;
	font-weight: 400;
	font-size: clamp(1.05rem, 0.72rem + 1.4vw, 1.7rem);
	line-height: 1.3;
	border-left: 3px solid var(--ts-red);
	padding-left: .85rem;
	color: rgba(255,255,255,.95);
}

.ts-hero__nav {
	display: flex;
	flex-wrap: wrap;
	gap: .55rem;
}

.ts-hero::after {
	content: "";
	position: absolute;
	left: 0; right: 0; bottom: 0;
	height: 3px;
	background: linear-gradient(90deg, var(--ts-red), var(--ts-blue));
	z-index: 2;
}

/* ——— ROUTE ——— */
.ts-route {
	background: #081a38;
	padding: .95rem 0;
}

.ts-route__scroll {
	width: min(100% - 1.5rem, var(--ts-max));
	margin-inline: auto;
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
	overscroll-behavior-x: contain;
	scrollbar-width: thin;
	scrollbar-color: rgba(255,255,255,.35) transparent;
}

@media (min-width: 768px) {
	.ts-route__scroll { width: min(100% - 2.5rem, var(--ts-max)); }
}

@media (min-width: 1100px) {
	.ts-route__scroll {
		width: min(100% - 4rem, var(--ts-max));
		overflow: visible;
	}
}

.ts-route__list {
	list-style: none;
	margin: 0;
	padding: .1rem 0 .35rem;
	display: flex;
	flex-wrap: nowrap;
	align-items: center;
	justify-content: flex-start;
	gap: 0;
	width: max-content;
	min-width: 100%;
}

@media (min-width: 1100px) {
	.ts-route__list {
		width: 100%;
		min-width: 0;
		justify-content: space-between;
		padding-bottom: 0;
	}
}

.ts-route__stop {
	display: flex;
	align-items: center;
	flex: 0 0 auto;
	color: #fff;
	min-width: 0;
}

@media (min-width: 1100px) {
	.ts-route__stop {
		flex: 1 1 0;
	}
	.ts-route__stop:last-child { flex: 0 0 auto; }
}

.ts-route__stop:not(:last-child)::after {
	content: "";
	display: block;
	width: 1.15rem;
	height: 1px;
	margin: 0 .55rem;
	background: rgba(255,255,255,.35);
	flex: none;
}

@media (min-width: 1100px) {
	.ts-route__stop:not(:last-child)::after {
		flex: 1 1 auto;
		width: auto;
		min-width: .75rem;
		margin: 0 .5rem;
	}
}

.ts-route__dot {
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: var(--ts-red);
	box-shadow: 0 0 0 3px rgba(200,16,46,.2);
	flex: none;
	margin-right: .4rem;
}

.ts-route__name {
	font-size: .8125rem;
	font-weight: 600;
	white-space: nowrap;
	letter-spacing: .01em;
}

@media (min-width: 768px) {
	.ts-route__name { font-size: .84rem; }
}

/* ——— MAP ——— */
.ts-map {
	padding: clamp(1.5rem, 4vw, 2.75rem) 0;
	background: #eef1f5;
	border-bottom: 1px solid var(--ts-line);
}

.ts-map__figure {
	margin: 0;
	position: relative;
}

.ts-map__scroll {
	overflow: hidden;
	border: 1px solid rgba(11, 28, 51, 0.08);
	background: #fff;
}

.ts-map__img {
	display: block;
	width: 100%;
	height: auto;
}

.ts-map__caption {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: .35rem 1rem;
	margin-top: .85rem;
}

.ts-map__label {
	font-size: .78rem;
	font-weight: 700;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--ts-red);
}

.ts-map__stops {
	font-size: .95rem;
	font-weight: 600;
	color: var(--ts-ink);
	margin-right: auto;
}

.ts-map__hint {
	display: none;
	font-size: .78rem;
	font-weight: 500;
	color: var(--ts-muted);
}

@media (max-width: 799px) {
	.ts-map__scroll {
		overflow-x: auto;
		-webkit-overflow-scrolling: touch;
		overscroll-behavior-x: contain;
		scrollbar-width: thin;
		touch-action: pan-x;
	}

	.ts-map__img {
		width: max(100%, 42rem);
		max-width: none;
	}

	.ts-map__hint { display: inline; }
}

@media (min-width: 800px) {
	.ts-map__caption {
		justify-content: space-between;
	}
}

/* ——— INTRO ——— */
.ts-intro {
	padding: clamp(2rem, 5vw, 4rem) 0;
	background: var(--ts-paper);
}

.ts-intro__grid {
	display: grid;
	gap: 1.75rem;
}

@media (min-width: 860px) {
	.ts-intro__grid {
		grid-template-columns: minmax(0, 1.35fr) minmax(220px, .7fr);
		gap: 2.75rem;
		align-items: start;
	}

	.ts-intro__grid--text {
		grid-template-columns: 1fr;
	}
}

.ts-intro__aside {
	position: static;
	width: min(100%, 320px);
	margin-inline: auto;
}

@media (min-width: 860px) {
	.ts-intro__aside {
		position: sticky;
		top: calc(var(--ts-measured-header, 80px) + .75rem);
		width: auto;
		margin-inline: 0;
	}
}

.ts-intro__photos {
	display: grid;
	grid-template-columns: 1fr;
	gap: .75rem;
}

.ts-intro__photo {
	margin: 0;
	overflow: hidden;
	background: #dfe5ee;
}

.ts-intro__photo img {
	display: block;
	width: 100%;
	height: 100%;
	aspect-ratio: 4 / 5;
	object-fit: cover;
	object-position: center 22%;
}

/* ——— TIMELINE (text only, mobile-first) ——— */
.ts-proof {
	padding: clamp(2.25rem, 5vw, 4.25rem) 0;
	background: var(--ts-navy);
	color: #fff;
	position: relative;
}

.ts-proof::before {
	content: "";
	position: absolute;
	left: 0; top: 0; bottom: 0;
	width: 4px;
	background: var(--ts-red);
}

.ts-proof__head {
	margin-bottom: 1.5rem;
	max-width: 36rem;
}

.ts-proof__lead {
	margin: 0;
	color: rgba(255,255,255,.7);
	font-size: .98rem;
}

.ts-tl {
	--ts-tl-rail: 1.3rem;
	--ts-tl-gap: .9rem;
	list-style: none;
	margin: 0;
	padding: 0;
	position: relative;
}

.ts-tl::before {
	content: "";
	position: absolute;
	left: calc(var(--ts-tl-rail) / 2 - 1px);
	top: .4rem;
	bottom: .4rem;
	width: 2px;
	background: linear-gradient(180deg, var(--ts-red), rgba(255,255,255,.2));
}

.ts-tl__item {
	display: grid;
	grid-template-columns: var(--ts-tl-rail) 1fr;
	column-gap: var(--ts-tl-gap);
	padding: 0 0 1.35rem;
	position: relative;
}

.ts-tl__item:last-child { padding-bottom: 0; }

.ts-tl__spine {
	display: flex;
	justify-content: center;
	align-items: flex-start;
	padding-top: .35rem;
	position: relative;
	z-index: 1;
}

.ts-tl__node {
	width: 12px;
	height: 12px;
	flex: none;
	border-radius: 50%;
	background: var(--ts-navy);
	border: 3px solid var(--ts-red);
	box-shadow: 0 0 0 4px rgba(200,16,46,.2);
	box-sizing: border-box;
}

.ts-tl__item--key .ts-tl__node {
	width: 16px;
	height: 16px;
	background: var(--ts-red);
	border-color: #fff;
}

.ts-tl__content {
	min-width: 0;
	padding-bottom: 1.25rem;
	border-bottom: 1px solid rgba(255,255,255,.12);
}

.ts-tl__item:last-child .ts-tl__content { border-bottom: 0; padding-bottom: 0; }

.ts-tl__date {
	margin: 0 0 .35rem;
	font-size: .78rem;
	font-weight: 700;
	letter-spacing: .06em;
	text-transform: uppercase;
	color: #9ec0ff;
}

.ts-tl__item--key .ts-tl__date { color: #fff; }

.ts-tl__text {
	margin: 0;
	font-size: 1.02rem;
	font-weight: 500;
	line-height: 1.45;
	color: rgba(255,255,255,.94);
	max-width: 48ch;
}

@media (min-width: 800px) {
	.ts-tl {
		--ts-tl-date: 7.5rem;
		--ts-tl-gap: 1.1rem;
	}

	.ts-tl::before {
		left: calc(var(--ts-tl-date) + var(--ts-tl-gap) + var(--ts-tl-rail) / 2 - 1px);
	}

	.ts-tl__item {
		grid-template-columns: var(--ts-tl-date) var(--ts-tl-rail) 1fr;
		align-items: start;
	}

	.ts-tl__date {
		grid-column: 1;
		text-align: right;
		font-size: .82rem;
		padding-top: .15rem;
		margin: 0;
	}

	.ts-tl__spine { grid-column: 2; }

	.ts-tl__content {
		grid-column: 3;
		display: contents;
	}

	.ts-tl__text {
		grid-column: 3;
		padding-bottom: 1.35rem;
		border-bottom: 1px solid rgba(255,255,255,.12);
	}

	.ts-tl__item:last-child .ts-tl__text {
		border-bottom: 0;
		padding-bottom: 0;
	}
}

.ts-proof__note {
	margin: 1.5rem 0 0;
	max-width: 46ch;
	font-size: .92rem;
	color: rgba(255,255,255,.62);
}

/* ——— FRAMES ——— */
.ts-frames {
	padding: clamp(2rem, 5vw, 4rem) 0 1rem;
	background: #fff;
}

.ts-frame {
	display: grid;
	gap: 1.25rem;
	padding: clamp(1.5rem, 3.5vw, 2.5rem) 0;
	border-top: 1px solid var(--ts-line);
	align-items: center;
}

.ts-frame:first-child {
	border-top: 0;
	padding-top: .25rem;
}

@media (min-width: 860px) {
	.ts-frame {
		grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr);
		gap: 2.25rem;
	}
	.ts-frame--flip .ts-frame__copy { order: 2; }
	.ts-frame--flip .ts-frame__media { order: 1; }
}

.ts-frame__copy .ts-h2 {
	border-left: 3px solid var(--ts-red);
	padding-left: .8rem;
}

.ts-frame__media {
	margin: 0;
	overflow: hidden;
	border: 1px solid var(--ts-line);
	aspect-ratio: 4 / 3;
}

.ts-frame__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center center;
	display: block;
}

.ts-frame__media--portrait {
	aspect-ratio: 4 / 5;
}

.ts-frame__media--portrait img {
	object-position: center 8%;
}

/* ——— CTA ——— */
.ts-cta {
	padding: clamp(1.75rem, 4vw, 2.75rem) 0 clamp(2.5rem, 5vw, 3.5rem);
	background: var(--ts-paper);
	border-top: 1px solid var(--ts-line);
}

.ts-cta__row {
	display: flex;
	flex-wrap: wrap;
	gap: .55rem;
}

/* Mobile polish */
@media (max-width: 599px) {
	.ts-shell,
	.ts-hero__inner {
		width: min(100% - 1.25rem, var(--ts-max));
	}

	.ts-btn {
		width: 100%;
		min-height: 2.875rem;
	}

	.ts-hero {
		min-height: min(48vh, 420px);
		padding: 1.5rem 0 1.5rem;
	}

	.ts-hero__brand {
		font-size: clamp(1.85rem, 1.1rem + 6vw, 2.45rem);
		max-width: 11ch;
	}

	.ts-hero__nav {
		flex-direction: column;
		align-items: stretch;
	}

	.ts-hero__nav .ts-btn {
		max-width: none;
	}

	.ts-intro__aside {
		width: 100%;
		max-width: none;
	}

	.ts-intro__photo img {
		aspect-ratio: 4 / 5;
		object-position: center 18%;
	}

	.ts-prose--lead {
		padding-left: .95rem;
		margin-bottom: 1.25rem;
	}

	.ts-tl__text {
		font-size: 1rem;
	}

	.ts-cta__row {
		flex-direction: column;
		align-items: stretch;
	}

	.ts-cta__row .ts-btn {
		max-width: none;
	}
}

@media (max-width: 359px) {
	.ts-hero__promise {
		font-size: .98rem;
		padding-left: .7rem;
	}
}
