/* =====================================================================
 * Sichuan Private Journeys — runtime stylesheet
 * --------------------------------------------------------------------- */

:root {
	--spj-cream:      #F4ECDF;
	--spj-paper:      #FAF5EC;
	--spj-ink:        #1F2A22;
	--spj-forest:     #23413B;
	--spj-moss:       #4F6655;
	--spj-terracotta: #9C5A3B;
	--spj-clay:       #7A3E25;
	--spj-sand:       #E6D2B3;
	--spj-smoke:      #6B6B68;

	--spj-font-serif: "Cormorant Garamond", "Source Serif Pro", Georgia, "Times New Roman", serif;
	--spj-font-sans:  "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;

	--spj-shadow-soft:  0 14px 40px -28px rgba(31,42,34,0.45);
	--spj-shadow-card:  0 22px 60px -42px rgba(31,42,34,0.55);
	--spj-radius-lg:    26px;
	--spj-radius-md:    14px;
	--spj-radius-sm:    8px;
	--spj-content-pad:  clamp(1rem, 4vw, 3rem);
}

/* September 2026 editorial selection: keep the panda and monuments whole. */
.spj-panda-opening.spj-section { padding: 1rem var(--spj-content-pad) 3rem; }
.spj-panda-opening > .spj-hero--panda { max-width: 1320px !important; }
.spj-hero.spj-hero--panda { display: block; padding: 0; background: none; }
.spj-hero--panda .spj-hero__copy { max-width: none !important; padding: 1.8rem 0 2.2rem; }
.spj-hero--panda .spj-hero__copy h1 { font-size: clamp(2.5rem, 4.7vw, 4.6rem); margin: .55rem 0 1rem; }
.spj-hero--panda .spj-hero__lede { max-width: 62ch; margin-bottom: 1.25rem; }
.spj-hero--panda .spj-hero__meta { margin-bottom: .55rem; }
.spj-hero--panda .spj-eyebrow { display: none; }
.spj-hero--panda .spj-hero__figure { aspect-ratio: auto; max-width: none !important; border-radius: 8px; box-shadow: none; }
.spj-hero--panda .spj-hero__img { max-width: none !important; }
.spj-hero--panda .spj-hero__figure img { width: 100%; height: auto; object-fit: contain; }
.spj-magazine__figure .spj-magazine__image--tea img { aspect-ratio: 3/2; }
.spj-landmarks { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2rem; align-items: start; }
.spj-landmark-image img { width: 100%; height: auto; border-radius: 6px; }
.spj-landmark-image figcaption, .spj-photo-note { font: 12px/1.6 var(--spj-font-sans); color: var(--spj-smoke); padding-top: .65rem; }
.spj-landmarks h3 { margin-top: .8rem; }
.spj-reading { max-width: 850px; margin: 0 auto; }
.spj-reading h2 { margin-top: 2.5rem; }
.spj-reading details { border-bottom: 1px solid var(--spj-sand); padding: 1.2rem 0; }
.spj-reading summary { cursor: pointer; font-weight: 600; }
.spj-reading details p { margin: 1rem 0 0; }
.spj-reading table { width: 100%; border-collapse: collapse; }
.spj-reading th, .spj-reading td { padding: .75rem; text-align: left; vertical-align: top; border-bottom: 1px solid var(--spj-sand); }
@media(min-width: 1000px) {
 .spj-hero--panda .spj-hero__copy { display: grid; grid-template-columns: 1.2fr 1fr; column-gap: 3rem; align-items: end; }
 .spj-hero--panda .spj-hero__meta { grid-column: 1/-1; }
 .spj-hero--panda .spj-hero__copy h1 { grid-column: 1; grid-row: 2/4; margin-bottom: 0; }
 .spj-hero--panda .spj-hero__lede { grid-column: 2; grid-row: 2; margin: 0; }
 .spj-hero--panda .wp-block-buttons { grid-column: 2; grid-row: 3; margin-top: 1.2rem; }
}
@media(max-width: 760px) {
 .spj-landmarks { grid-template-columns: 1fr; }
 .spj-hero--panda .spj-hero__copy { padding: 1rem 0 1.5rem; }
 .spj-hero.spj-hero--panda { padding-top: 0; }
 .spj-hero--panda .spj-hero__figure { aspect-ratio: auto; }
 .spj-reading { width: 100%; }
 .spj-reading .wp-block-table { overflow-x: auto; }
}

/* Reset ---------------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }

html, body { margin: 0; padding: 0; }

body {
	font-family: var(--spj-font-serif);
	font-size: 1.0625rem;
	line-height: 1.65;
	color: var(--spj-ink);
	background: var(--spj-cream);
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	text-rendering: optimizeLegibility;
}

body a { color: inherit; text-decoration: none; border-bottom: 1px solid transparent; transition: color .2s, border-color .2s; }
body a:hover { color: var(--spj-terracotta); border-bottom-color: rgba(156,90,59,.35); }

body h1, body h2, body h3, body h4, body h5, body h6 {
	font-family: var(--spj-font-serif);
	font-weight: 500;
	color: var(--spj-ink);
	letter-spacing: -0.01em;
}

body h1 { font-size: clamp(2.25rem, 4.6vw, 4.5rem); line-height: 1.02; }
body h2 { font-size: clamp(1.75rem, 3vw, 2.6rem); line-height: 1.1; }
body h3 { font-size: clamp(1.25rem, 2vw, 1.6rem); line-height: 1.18; }

body img { max-width: 100%; height: auto; display: block; }
body figure { margin: 0; }
body p { margin: 0 0 1rem; }
body ul, body ol { padding-left: 1.2em; }

body .wp-site-blocks { padding: 0; min-height: 80vh; }
body .wp-block { max-width: 100%; }

/* Layout helpers ------------------------------------------------------- */
.spj-container {
	width: 100%;
	max-width: 1180px;
	margin: 0 auto;
	padding-left: var(--spj-content-pad);
	padding-right: var(--spj-content-pad);
}

.spj-container-narrow {
	width: 100%;
	max-width: 760px;
	margin: 0 auto;
	padding-left: var(--spj-content-pad);
	padding-right: var(--spj-content-pad);
}

.spj-stack > * + * { margin-top: clamp(1.5rem, 3vw, 2.6rem); }

.spj-grid {
	display: grid;
	gap: clamp(1.25rem, 2.4vw, 2.5rem);
	grid-template-columns: repeat(12, minmax(0, 1fr));
}

.spj-eyebrow {
	font-family: var(--spj-font-sans);
	font-size: 0.72rem;
	font-weight: 500;
	letter-spacing: 0.32em;
	text-transform: uppercase;
	color: var(--spj-terracotta);
	margin: 0 0 0.85em;
}

.spj-divider {
	display: inline-block;
	width: 64px;
	height: 1px;
	background: var(--spj-terracotta);
	margin: 0 0 1.6em;
}

/* Header --------------------------------------------------------------- */
.spj-header {
	position: relative;
	padding: clamp(1.4rem, 3vw, 2.4rem) var(--spj-content-pad);
	background: var(--spj-paper);
	border-bottom: 1px solid rgba(31,42,34,0.08);
	z-index: 30;
}
.spj-header__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1.5rem;
	max-width: 1320px;
	margin: 0 auto;
}
.spj-header__brand {
	font-family: var(--spj-font-sans);
	font-weight: 500;
	letter-spacing: 0.32em;
	text-transform: uppercase;
	font-size: 0.78rem;
	color: var(--spj-ink);
	display: inline-flex;
	align-items: baseline;
	gap: 0.85rem;
}
.spj-header__brand small {
	font-size: 0.65rem;
	letter-spacing: 0.42em;
	color: var(--spj-smoke);
	font-weight: 400;
}
.spj-header__nav {
	display: flex;
	flex-wrap: wrap;
	gap: 1.6rem;
}
.spj-header__nav a {
	font-family: var(--spj-font-sans);
	font-size: 0.72rem;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--spj-ink);
	padding: 0.4rem 0;
	border-bottom: 1px solid transparent;
}
.spj-header__nav a:hover, .spj-header__nav a.is-current { border-bottom-color: var(--spj-terracotta); color: var(--spj-clay); }
.spj-header__cta {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	padding: 0.62rem 1.15rem;
	border-radius: 999px;
	background: var(--spj-forest);
	color: var(--spj-cream) !important;
	font-family: var(--spj-font-sans);
	font-size: 0.72rem;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	border-bottom: none !important;
	transition: background .2s, transform .2s;
}
.spj-header__cta:hover { background: var(--spj-clay); color: var(--spj-cream) !important; transform: translateY(-1px); }

.spj-header__toggle {
	display: none;
	background: transparent;
	border: 1px solid rgba(31,42,34,0.15);
	padding: 0.45rem 0.7rem;
	border-radius: 999px;
	font-family: var(--spj-font-sans);
	font-size: 0.72rem;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--spj-ink);
	cursor: pointer;
}

/* Hero / front page ---------------------------------------------------- */
.spj-hero {
	display: grid;
	grid-template-columns: 1.05fr 0.95fr;
	gap: clamp(1.5rem, 4vw, 4rem);
	align-items: end;
	padding: clamp(3rem, 7vw, 6rem) var(--spj-content-pad) clamp(2rem, 5vw, 4rem);
	background: linear-gradient(180deg, var(--spj-paper) 0%, var(--spj-cream) 100%);
	max-width: 1320px;
	margin: 0 auto;
}
.spj-hero__copy h1 {
	font-size: clamp(2.6rem, 6vw, 5.6rem);
	margin: 0 0 0.5em;
	line-height: 0.98;
	letter-spacing: -0.02em;
}
.spj-hero__copy h1 em {
	font-style: italic;
	color: var(--spj-terracotta);
	font-weight: 400;
}
.spj-hero__lede {
	font-family: var(--spj-font-serif);
	font-size: clamp(1.05rem, 1.6vw, 1.4rem);
	line-height: 1.45;
	max-width: 38ch;
	color: var(--spj-moss);
	margin-bottom: 1.6rem;
}
.spj-hero__meta {
	font-family: var(--spj-font-sans);
	font-size: 0.7rem;
	letter-spacing: 0.3em;
	text-transform: uppercase;
	color: var(--spj-smoke);
	margin-bottom: 0.8rem;
}
.spj-hero__figure {
	position: relative;
	border-radius: var(--spj-radius-lg);
	overflow: hidden;
	aspect-ratio: 4 / 5;
	box-shadow: var(--spj-shadow-card);
}
.spj-hero__figure img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}
.spj-hero__figure figcaption {
	position: absolute;
	bottom: 0.8rem;
	left: 1rem;
	right: 1rem;
	font-family: var(--spj-font-sans);
	font-size: 0.62rem;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--spj-cream);
	background: rgba(31,42,34,0.55);
	backdrop-filter: blur(4px);
	padding: 0.35rem 0.7rem;
	border-radius: 999px;
}

.spj-hero__cta {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	padding: 0.78rem 1.4rem;
	border-radius: 999px;
	background: var(--spj-forest);
	color: var(--spj-cream) !important;
	font-family: var(--spj-font-sans);
	font-size: 0.78rem;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	border-bottom: none;
	margin-right: 0.6rem;
}
.spj-hero__cta--ghost {
	background: var(--spj-forest);
	color: var(--spj-cream) !important;
	border: 0;
}

/* Sections ------------------------------------------------------------- */
.spj-section {
	padding: clamp(3rem, 6vw, 5.5rem) var(--spj-content-pad);
	background: var(--spj-cream);
}
.spj-section--paper { background: var(--spj-paper); }
.spj-section--ink {
	background: var(--spj-ink);
	color: var(--spj-cream);
}
.spj-section--ink .spj-eyebrow { color: var(--spj-sand); }
.spj-section--ink h1, .spj-section--ink h2, .spj-section--ink h3 { color: var(--spj-cream); }
.spj-section--ink a:hover { color: var(--spj-sand); }

.spj-section__header {
	max-width: 740px;
	margin-bottom: clamp(2rem, 4vw, 3.5rem);
}

.spj-section__inner {
	max-width: 1180px;
	margin: 0 auto;
}

/* Magazine layout — alternating rows ---------------------------------- */
.spj-magazine {
	display: grid;
	grid-template-columns: repeat(12, 1fr);
	gap: clamp(1.5rem, 3.5vw, 3rem);
	margin-bottom: clamp(3rem, 6vw, 5rem);
}
.spj-magazine__copy { grid-column: 1 / span 6; }
.spj-magazine__figure { grid-column: 7 / span 6; }
.spj-magazine--reverse .spj-magazine__copy { order: 2; grid-column: 7 / span 6; }
.spj-magazine--reverse .spj-magazine__figure { order: 1; grid-column: 1 / span 6; }

@media (max-width: 760px) {
	.spj-magazine__copy,
	.spj-magazine--reverse .spj-magazine__copy,
	.spj-magazine__figure,
	.spj-magazine--reverse .spj-magazine__figure {
		grid-column: 1 / -1;
		order: initial;
	}
}

.spj-magazine__figure img {
	border-radius: var(--spj-radius-lg);
	aspect-ratio: 4 / 5;
	width: 100%;
	object-fit: cover;
	box-shadow: var(--spj-shadow-soft);
}
.spj-magazine__copy .spj-eyebrow + .spj-divider { width: 56px; }

/* Itinerary cards ----------------------------------------------------- */
.spj-itineraries {
	display: grid;
	gap: clamp(1.4rem, 2vw, 2rem);
	grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
}
.spj-itinerary-card {
	display: flex;
	flex-direction: column;
	background: var(--spj-paper);
	border-radius: var(--spj-radius-lg);
	overflow: hidden;
	box-shadow: var(--spj-shadow-soft);
	transition: transform .25s, box-shadow .25s;
	border: 1px solid rgba(31,42,34,0.06);
}
.spj-itinerary-card:hover { transform: translateY(-4px); box-shadow: var(--spj-shadow-card); }
.spj-itinerary-card__media {
	aspect-ratio: 16 / 11;
	overflow: hidden;
	position: relative;
}
.spj-itinerary-card__media img { width: 100%; height: 100%; object-fit: cover; }
.spj-itinerary-card__body { padding: 1.4rem 1.5rem 1.6rem; display: flex; flex-direction: column; gap: 0.8rem; flex: 1; }
.spj-itinerary-card__meta { font-family: var(--spj-font-sans); font-size: 0.7rem; letter-spacing: 0.22em; text-transform: uppercase; color: var(--spj-terracotta); }
.spj-itinerary-card__title { font-family: var(--spj-font-serif); font-size: 1.55rem; line-height: 1.15; margin: 0; color: var(--spj-ink); }
.spj-itinerary-card__intro { font-size: 0.96rem; color: var(--spj-moss); line-height: 1.55; margin: 0; }
.spj-itinerary-card__cta {
	margin-top: auto;
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	font-family: var(--spj-font-sans);
	font-size: 0.74rem;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--spj-forest);
}
.spj-itinerary-card__cta::after { content: "→"; transition: transform .2s; }
.spj-itinerary-card:hover .spj-itinerary-card__cta::after { transform: translateX(4px); }

/* Itinerary detail ---------------------------------------------------- */
.spj-itinerary-hero {
	position: relative;
	aspect-ratio: 16/8;
	max-height: 460px;
	overflow: hidden;
	border-radius: var(--spj-radius-lg);
	box-shadow: var(--spj-shadow-soft);
	margin-bottom: clamp(2rem, 4vw, 3rem);
}
.spj-itinerary-hero img { width: 100%; height: 100%; object-fit: cover; }
.spj-itinerary-hero__overlay {
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(31,42,34,0) 30%, rgba(31,42,34,0.65) 100%);
}
.spj-itinerary-hero__caption {
	position: absolute;
	left: 1.6rem;
	right: 1.6rem;
	bottom: 1.4rem;
	color: var(--spj-cream);
}
.spj-itinerary-hero__caption .spj-eyebrow { color: var(--spj-sand); }
.spj-itinerary-hero__caption h1 {
	color: var(--spj-cream);
	font-size: clamp(2rem, 5vw, 3.8rem);
	margin: 0;
	letter-spacing: -0.02em;
}

.spj-itinerary-meta {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
	gap: 1rem 1.6rem;
	margin-bottom: 2rem;
	padding: 1.2rem 1.6rem;
	background: var(--spj-paper);
	border-radius: var(--spj-radius-md);
	border: 1px solid rgba(31,42,34,0.06);
}
.spj-itinerary-meta dt {
	font-family: var(--spj-font-sans);
	font-size: 0.65rem;
	letter-spacing: 0.28em;
	text-transform: uppercase;
	color: var(--spj-smoke);
	margin-bottom: 0.35rem;
}
.spj-itinerary-meta dd {
	margin: 0 0 0.6rem;
	font-family: var(--spj-font-serif);
	font-size: 1.02rem;
	color: var(--spj-ink);
}

/* FAQ ------------------------------------------------------------------ */
.spj-faq {
	border-radius: var(--spj-radius-lg);
	background: var(--spj-paper);
	border: 1px solid rgba(31,42,34,0.06);
	overflow: hidden;
}
.spj-faq details { border-top: 1px solid rgba(31,42,34,0.06); }
.spj-faq details:first-child { border-top: none; }
.spj-faq summary {
	list-style: none;
	cursor: pointer;
	padding: 1.2rem 1.6rem;
	font-family: var(--spj-font-serif);
	font-size: 1.18rem;
	color: var(--spj-ink);
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
}
.spj-faq summary::-webkit-details-marker { display: none; }
.spj-faq summary::after {
	content: "+";
	font-family: var(--spj-font-sans);
	font-size: 1.4rem;
	line-height: 1;
	color: var(--spj-terracotta);
	transition: transform .25s;
}
.spj-faq details[open] summary::after { transform: rotate(45deg); }
.spj-faq details > div {
	padding: 0 1.6rem 1.4rem;
	color: var(--spj-moss);
	line-height: 1.65;
}

/* Quote / pull-out ---------------------------------------------------- */
.spj-quote {
	margin: 2.6rem auto;
	max-width: 760px;
	padding: 1.6rem 2rem;
	border-left: 2px solid var(--spj-terracotta);
	font-size: clamp(1.25rem, 2vw, 1.7rem);
	line-height: 1.4;
	color: var(--spj-forest);
	font-style: italic;
}

/* WhatsApp floating CTA (mobile) -------------------------------------- */
.spj-floating-cta {
	position: fixed;
	bottom: 1.2rem;
	right: 1.2rem;
	display: none;
	flex-direction: column;
	gap: 0.6rem;
	z-index: 50;
}
.spj-floating-cta a {
	display: inline-flex;
	align-items: center;
	gap: 0.55rem;
	padding: 0.78rem 1.2rem;
	border-radius: 999px;
	background: var(--spj-forest);
	color: var(--spj-cream) !important;
	font-family: var(--spj-font-sans);
	font-size: 0.74rem;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	border-bottom: none !important;
	box-shadow: var(--spj-shadow-card);
}

/* Footer -------------------------------------------------------------- */
.spj-footer {
	background: var(--spj-ink);
	color: var(--spj-cream);
	padding: clamp(3rem, 6vw, 5rem) var(--spj-content-pad) 2rem;
}
.spj-footer a { color: var(--spj-sand); }
.spj-footer a:hover { color: var(--spj-cream); }
.spj-footer__inner {
	display: grid;
	gap: 2rem;
	grid-template-columns: 1.2fr 1fr 1fr;
	max-width: 1180px;
	margin: 0 auto;
}
@media (max-width: 720px) { .spj-footer__inner { grid-template-columns: 1fr; } }
.spj-footer h4 { font-family: var(--spj-font-sans); font-size: 0.72rem; letter-spacing: 0.28em; text-transform: uppercase; color: var(--spj-sand); margin: 0 0 0.8rem; font-weight: 500; }
.spj-footer__lead { font-size: 1.05rem; line-height: 1.65; color: var(--spj-cream); opacity: 0.85; }
.spj-footer__legal {
	max-width: 1180px;
	margin: 2.5rem auto 0;
	padding-top: 1.4rem;
	border-top: 1px solid rgba(244,236,223,0.15);
	display: flex;
	flex-wrap: wrap;
	gap: 1rem;
	font-family: var(--spj-font-sans);
	font-size: 0.7rem;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: rgba(244,236,223,0.6);
	justify-content: space-between;
}

/* Photos & credits ---------------------------------------------------- */
.spj-credits-table { width: 100%; border-collapse: collapse; }
.spj-credits-table th, .spj-credits-table td {
	padding: 0.85rem 0.6rem;
	text-align: left;
	border-bottom: 1px solid rgba(31,42,34,0.08);
	font-size: 0.95rem;
	vertical-align: top;
}
.spj-credits-table th { font-family: var(--spj-font-sans); font-size: 0.68rem; letter-spacing: 0.24em; text-transform: uppercase; color: var(--spj-smoke); }
.spj-credits-table img { width: 80px; height: 60px; object-fit: cover; border-radius: 6px; }

/* Forms (consult) ----------------------------------------------------- */
.spj-consult {
	background: var(--spj-paper);
	border-radius: var(--spj-radius-lg);
	padding: clamp(1.6rem, 4vw, 2.6rem);
	border: 1px solid rgba(31,42,34,0.06);
	display: grid;
	gap: 1rem;
}
.spj-consult__intro {
	font-family: var(--spj-font-serif);
	font-style: italic;
	font-size: 1.2rem;
	color: var(--spj-moss);
	margin: 0 0 1rem;
}
.spj-consult label {
	font-family: var(--spj-font-sans);
	font-size: 0.7rem;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--spj-smoke);
	display: block;
	margin: 0 0 0.35rem;
}
.spj-consult input,
.spj-consult select,
.spj-consult textarea {
	width: 100%;
	font-family: var(--spj-font-sans);
	font-size: 0.95rem;
	padding: 0.7rem 0.85rem;
	border: 1px solid rgba(31,42,34,0.15);
	border-radius: var(--spj-radius-md);
	background: var(--spj-cream);
	color: var(--spj-ink);
	transition: border-color .2s, box-shadow .2s;
}
.spj-consult input:focus,
.spj-consult select:focus,
.spj-consult textarea:focus {
	outline: none;
	border-color: var(--spj-forest);
	box-shadow: 0 0 0 4px rgba(35,65,59,0.12);
}
.spj-consult textarea { min-height: 120px; resize: vertical; }
.spj-consult .spj-consult__row { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); }
.spj-consult__footer {
	margin-top: 1rem;
	display: flex;
	flex-wrap: wrap;
	gap: 0.8rem;
	align-items: center;
}
.spj-consult__button {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	padding: 0.78rem 1.4rem;
	border-radius: 999px;
	background: var(--spj-forest);
	color: var(--spj-cream) !important;
	font-family: var(--spj-font-sans);
	font-size: 0.76rem;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	border-bottom: none;
	cursor: pointer;
}
.spj-consult__button--ghost {
	background: transparent;
	color: var(--spj-forest) !important;
	border: 1px solid var(--spj-forest);
}
.spj-consult__summary {
	background: var(--spj-ink);
	color: var(--spj-cream);
	padding: 1.2rem 1.4rem;
	border-radius: var(--spj-radius-md);
	font-family: var(--spj-font-sans);
	font-size: 0.9rem;
	white-space: pre-wrap;
	display: none;
}
.spj-consult__summary.is-visible { display: block; }
.spj-consult__notice {
	font-family: var(--spj-font-sans);
	font-size: 0.72rem;
	color: var(--spj-smoke);
	line-height: 1.6;
	max-width: 60ch;
}

/* Responsive native WordPress navigation */
@media (max-width: 820px) {
 .spj-hero { grid-template-columns: 1fr; }
 .spj-header__brand { max-width: 220px; }
}
/* Utility ------------------------------------------------------------- */
.spj-text-center { text-align: center; }
.spj-mb-0 { margin-bottom: 0 !important; }
.spj-mt-0 { margin-top: 0 !important; }
.spj-is-hidden { display: none !important; }

/* Print stylesheet ---------------------------------------------------- */
@media print {
	body { background: white; color: black; }
	.spj-header__cta, .spj-floating-cta, .spj-header__toggle { display: none !important; }
	a { color: black; border-bottom: none; }
}

/* Accessibility ------------------------------------------------------- */
.spj-skip-link {
	position: absolute;
	left: -9999px;
	top: auto;
	width: 1px;
	height: 1px;
	overflow: hidden;
}
.spj-skip-link:focus {
	left: 16px;
	top: 16px;
	width: auto;
	height: auto;
	background: var(--spj-forest);
	color: var(--spj-cream);
	padding: 0.5rem 0.85rem;
	border-radius: 6px;
	z-index: 999;
}

/* Destinations gallery (server-rendered block) --------------------- */
.spj-destinations-gallery {
	display: grid;
	gap: clamp(1rem, 2vw, 1.6rem);
	grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
}
.spj-destinations-gallery__figure {
	margin: 0;
	background: var(--spj-paper);
	border-radius: var(--spj-radius-md);
	overflow: hidden;
	box-shadow: var(--spj-shadow-soft);
	display: flex;
	flex-direction: column;
}
.spj-destinations-gallery__figure img {
	width: 100%;
	height: 100%;
	aspect-ratio: 4 / 3;
	object-fit: cover;
}
.spj-destinations-gallery__caption {
	padding: 0.85rem 1rem 1rem;
	display: flex;
	flex-direction: column;
	gap: 0.2rem;
}
.spj-destinations-gallery__title {
	font-family: var(--spj-font-serif);
	font-size: 1.05rem;
	color: var(--spj-ink);
	text-transform: capitalize;
}
.spj-destinations-gallery__meta {
	font-family: var(--spj-font-sans);
	font-size: 0.7rem;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--spj-smoke);
}

/* Panda callout — full-bleed editorial section. ------------------ */
.spj-panda-callout {
	padding-block: clamp(3rem, 7vw, 6rem);
}
.spj-panda-callout__inner {
	display: grid;
	gap: clamp(1.6rem, 3vw, 3rem);
	grid-template-columns: 1.05fr 0.95fr;
	align-items: center;
	max-width: 1180px;
	margin: 0 auto;
}
@media (max-width: 760px) {
	.spj-panda-callout__inner { grid-template-columns: 1fr; }
}
.spj-panda-callout__media {
	position: relative;
	border-radius: var(--spj-radius-lg);
	overflow: hidden;
	box-shadow: var(--spj-shadow-card);
	background: var(--spj-paper);
}
.spj-panda-callout__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	aspect-ratio: 4 / 5;
}
.spj-panda-callout__media figcaption {
	position: absolute;
	bottom: 0.85rem;
	left: 1rem;
	right: 1rem;
	font-family: var(--spj-font-sans);
	font-size: 0.62rem;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--spj-cream);
	background: rgba(31, 42, 34, 0.55);
	backdrop-filter: blur(4px);
	padding: 0.35rem 0.7rem;
	border-radius: 999px;
}
.spj-panda-callout__copy p { color: var(--spj-moss); }

/* Review fixes: full-width editorial groups and readable mobile form. */
.spj-section > .spj-magazine, .spj-section > .spj-itineraries,
.spj-section > .spj-landmarks, .spj-header > .spj-header__inner,
.spj-footer > .spj-footer__inner, .spj-footer > .spj-footer__legal { max-width: 1320px !important; }
.spj-hero__figure > figure { max-width: none !important; }
.spj-itinerary-card__media img { width:100%; height:auto; aspect-ratio:3/2; object-fit:contain; background:var(--spj-sand); }
.spj-route-photo img { width:100%; height:auto; object-fit:contain; }
.spj-consult input[type=checkbox] { width:auto; display:inline-block; margin:0 .5rem 0 0; }
.spj-consult fieldset { border:1px solid var(--spj-sand); padding:1rem; margin:1rem 0; }
.spj-consult .spj-interest { display:flex; align-items:center; text-transform:none; letter-spacing:0; }
.spj-consult__summary { white-space:pre-wrap; overflow-wrap:anywhere; }
.spj-consult__button { margin:.35rem .2rem .35rem 0; cursor:pointer; }
.spj-header__nav { margin-block:0 !important; }
.spj-header .wp-block-navigation__responsive-container.is-menu-open { padding:2rem; }
.spj-reading { overflow-wrap:break-word; }
:focus-visible { outline:3px solid var(--spj-terracotta); outline-offset:4px; }
@media(max-width:600px) {
 .spj-consult { padding:1rem; }
 .spj-consult .spj-consult__row { grid-template-columns:1fr 1fr; }
 .spj-consult__row > div { min-width:0; }
 .spj-consult__button { display:block; width:100%; text-align:center; }
}

/* Lead with the complete seated panda, then the headline. */
.spj-hero--panda .spj-hero__figure { width:100%; margin:0 auto !important; }
.spj-hero--panda .spj-hero__figure figure { margin:0; }
.spj-hero--panda .spj-hero__copy > * { margin-left:0 !important; margin-right:0 !important; }
.spj-hero--panda .spj-hero__copy { padding-top:2rem; align-items:start; }
.spj-hero--panda .spj-hero__copy .wp-block-buttons { flex-wrap:wrap; }
@media(min-width:1000px) {
 .spj-hero--panda .spj-hero__copy h1 { grid-row:2/4; align-self:start; }
 .spj-hero--panda .spj-hero__meta { grid-column:1; }
}
@media(max-width:600px) {
 .spj-hero--panda .spj-hero__figure { width:100%; }
 .spj-panda-opening.spj-section { padding-top:.75rem; }
}

.spj-header { padding-block:1.3rem; }
.wp-site-blocks > main { margin-block-start:0; }

/* Cookie notice — strictly necessary only; follows the site palette. */
.spj-cookie-note { position:fixed; left:0; right:0; bottom:0; z-index:60; background:var(--spj-forest); color:var(--spj-cream); padding:1rem 1.25rem calc(1rem + env(safe-area-inset-bottom,0px)); font:.9rem/1.6 var(--spj-font-sans); box-shadow:0 -10px 30px rgba(31,42,34,.18); }
.spj-cookie-note p { margin:0; }
.spj-cookie-note__actions { display:flex; gap:1rem; align-items:center; flex-wrap:wrap; margin-top:.65rem; }
.spj-cookie-note__accept { font:inherit; font-size:.78rem; letter-spacing:.12em; text-transform:uppercase; border:1px solid var(--spj-cream); background:transparent; color:var(--spj-cream); padding:.5rem 1.2rem; cursor:pointer; border-radius:999px; transition:background .2s,color .2s; }
.spj-cookie-note__accept:hover { background:var(--spj-cream); color:var(--spj-forest); }
.spj-cookie-note__link { color:var(--spj-sand); text-decoration:underline; border-bottom:0; }
@media(min-width:720px) {
 .spj-cookie-note { left:auto; right:1.25rem; bottom:1.25rem; max-width:480px; border-radius:10px; padding:1.15rem 1.35rem; box-shadow:0 18px 40px rgba(31,42,34,.28); }
}


/* Travel route editorial layout */
.spj-trip-reading { max-width:1080px; }
.spj-trip-reading > .wp-block-post-title { max-width:900px; }
.spj-trip-reading .wp-block-post-content > p { max-width:78ch; }
.spj-trip-overview,.spj-trip-end { background:var(--spj-paper); border:1px solid var(--spj-sand); border-radius:16px; padding:clamp(1.2rem,3vw,2.4rem); margin-block:2rem; }
.spj-trip-overview ul { padding-left:1.3rem; }
.spj-trip-day { border-top:1px solid var(--spj-sand); padding:1rem 0 1.4rem 1.5rem; border-left:3px solid var(--spj-terracotta); margin:1.25rem 0; }
.spj-trip-day h2 { font-size:clamp(1.5rem,2.5vw,2rem); margin-top:.6rem; }
.spj-trip-day p { max-width:78ch; }
.spj-trip-day p:last-child { color:var(--spj-moss); font: .88rem/1.6 var(--spj-font-sans); }
.spj-place-grid,.spj-compare-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:2rem; }
.spj-compare-grid { grid-template-columns:repeat(3,minmax(0,1fr)); max-width:1320px; margin:auto; }
.spj-place-grid > *,.spj-compare-grid > * { min-width:0; margin-block:0; }
.spj-place-card h3 { margin-top:1rem; }
.spj-trip-image { margin:0; }
.spj-trip-image img { width:100%; height:auto; display:block; border-radius:8px; }
.spj-trip-image figcaption,.spj-trip-map figcaption { font:.78rem/1.5 var(--spj-font-sans); color:var(--spj-moss); margin-top:.6rem; }
.spj-trip-map { margin:1.2rem 0; }
.spj-trip-map img { width:100%; height:auto; display:block; }
.spj-compare-card { padding:1.7rem; border:1px solid var(--spj-sand); border-radius:12px; background:var(--spj-paper); }
.spj-compare-card h3 { margin-top:0; color:var(--spj-clay); }
.spj-compare-card a { text-decoration:underline; text-underline-offset:4px; }
.spj-trip-reading [id] { scroll-margin-top:2rem; }
@media(max-width:700px) {
 .spj-place-grid,.spj-compare-grid { grid-template-columns:1fr; gap:1.4rem; }
 .spj-trip-day { padding-left:1rem; }
 .spj-trip-map { overflow-x:auto; }
 .spj-trip-map img { min-width:620px; }
}

/* Interactive route map (Leaflet, local build; tiles only on visitor request). */
.spj-map { margin-block: 2.2rem 0; }
.spj-map__title { font-family: var(--spj-font-serif); font-size: 1.5rem; margin: 0 0 .3rem; color: var(--spj-ink); }
.spj-map__hint { font: .85rem/1.6 var(--spj-font-sans); color: var(--spj-smoke); margin: 0 0 .9rem; }
.spj-map__gate { background: var(--spj-paper); border: 1px solid rgba(31,42,34,.12); border-radius: 12px; padding: 1.4rem; text-align: center; }
.spj-map__load { font: inherit; font-size: .8rem; letter-spacing: .12em; text-transform: uppercase; background: var(--spj-forest); color: var(--spj-cream); border: 0; padding: .7rem 1.6rem; border-radius: 999px; cursor: pointer; transition: background .2s; }
.spj-map__load:hover { background: var(--spj-clay); }
.spj-map__privacy { font: .72rem/1.5 var(--spj-font-sans); color: var(--spj-smoke); margin: .8rem 0 0; }
.spj-map__privacy a { text-decoration: underline; }
.spj-map__canvas { height: 420px; border-radius: 12px; overflow: hidden; border: 1px solid rgba(31,42,34,.12); }
@media(max-width:600px) { .spj-map__canvas { height: 300px; } }
.spj-map__pin { background: var(--spj-forest); border: 2px solid var(--spj-cream); border-radius: 50%; color: var(--spj-cream); display: flex !important; align-items: center !important; justify-content: center !important; text-align: center; font: 700 .78rem/1 var(--spj-font-sans); box-shadow: 0 3px 10px rgba(31,42,34,.35); }
.spj-map__pin span { display: block; line-height: 1; }
.spj-map-pop { max-width: 240px; }
.spj-map-pop__img { width: 100%; height: 120px; object-fit: cover; border-radius: 6px; margin: 2px 0 8px; display: block; }
.spj-map-pop__day { font: 700 .65rem/1 var(--spj-font-sans); letter-spacing: .18em; text-transform: uppercase; color: var(--spj-terracotta); margin: 0 0 4px; }
.spj-map-pop__name { font-family: var(--spj-font-serif); font-size: 1rem; line-height: 1.25; margin: 0 0 6px; color: var(--spj-ink); }
.spj-map-pop__note { font: .8rem/1.55 var(--spj-font-sans); color: var(--spj-smoke); margin: 0; }
.spj-leaflet-popup .leaflet-popup-content-wrapper { border-radius: 10px; box-shadow: 0 12px 30px rgba(31,42,34,.2); }
.spj-leaflet-popup .leaflet-popup-content { margin: 10px 12px; }
.spj-leaflet-popup a.leaflet-popup-close-button { color: var(--spj-smoke); }
/* Map inline under the at-a-glance heading */
.spj-map--inline { margin-block: 1.2rem 0.4rem; }

/* Primary call-to-action buttons (all "plan your journey" CTAs). */
.wp-block-button__link {
  background: var(--spj-forest) !important;
  color: var(--spj-cream) !important;
  border: 0 !important;
  border-radius: 999px !important;
  padding: .9rem 2rem !important;
  font: 600 .82rem/1 var(--spj-font-sans) !important;
  letter-spacing: .12em;
  text-transform: uppercase;
  text-decoration: none !important;
  display: inline-block;
  cursor: pointer;
  box-shadow: 0 6px 18px rgba(31,42,34,.20);
  transition: background .2s, transform .2s, box-shadow .2s;
}
.wp-block-button__link:hover,
.wp-block-button__link:focus-visible {
  background: var(--spj-clay) !important;
  color: var(--spj-cream) !important;
  transform: translateY(-2px);
  box-shadow: 0 10px 26px rgba(31,42,34,.28);
}
.wp-block-buttons { margin-block: 1.4rem; }

/* Homepage hero carousel: big panda first, other photos by click/swipe (manual only). */
.spj-hero__carousel { position: relative; }
.spj-carousel__viewport { overflow: hidden; border-radius: 10px; }
.spj-carousel__track { display: flex; transition: transform .45s cubic-bezier(.4,0,.2,1); touch-action: pan-y; }
.spj-carousel__slide { position: relative; flex: 0 0 100%; margin: 0; aspect-ratio: 3 / 2; min-width: 0; }
.spj-carousel__slide img { display: block; width: 100%; height: 100%; object-fit: cover; }
.spj-carousel__slide:first-child img { object-fit: contain; background: var(--spj-paper); }
.spj-hero__tag { position: absolute; left: .7rem; bottom: .7rem; margin: 0; font: 600 .62rem/1 var(--spj-font-sans); letter-spacing: .14em; text-transform: uppercase; color: var(--spj-cream); background: var(--spj-forest); border-radius: 999px; padding: .34rem .7rem; z-index: 2; }
.spj-carousel__nav { position: absolute; top: 50%; transform: translateY(-50%); z-index: 3; width: 48px; height: 48px; border-radius: 50%; border: 2px solid var(--spj-forest); background: var(--spj-cream); color: var(--spj-forest); font: 700 1.7rem/1 var(--spj-font-sans); cursor: pointer; display: flex; align-items: center; justify-content: center; box-shadow: 0 6px 18px rgba(31,42,34,.4); transition: background .2s, color .2s, transform .2s; }
.spj-carousel__nav:hover { background: var(--spj-clay); color: var(--spj-cream); border-color: var(--spj-clay); transform: translateY(-50%) scale(1.06); }
.spj-carousel__nav--prev { left: .8rem; }
.spj-carousel__nav--next { right: .8rem; }
.spj-carousel__dots { position: absolute; left: 50%; bottom: .85rem; transform: translateX(-50%); z-index: 3; display: flex; gap: .55rem; background: rgba(31,42,34,.45); padding: .4rem .65rem; border-radius: 999px; }
.spj-carousel__dots button { width: 12px; height: 12px; border-radius: 50%; border: 2px solid var(--spj-cream); background: transparent; padding: 0; cursor: pointer; transition: background .2s; }
.spj-carousel__dots button.is-active { background: var(--spj-cream); }
@media(max-width:719px) {
 .spj-carousel__slide { aspect-ratio: 4 / 3; }
 .spj-carousel__nav { width: 40px; height: 40px; font-size: 1.4rem; }
}

/* Magazine figure trios (city & province introductions). */
.spj-magazine__figure:has(.spj-trio__side) { display: grid; grid-template-columns: 1fr; gap: .9rem; }
.spj-magazine__figure:has(.spj-trio__side) > .wp-block-image img { aspect-ratio: 3 / 2; width: 100%; height: auto; object-fit: cover; border-radius: 8px; }
.spj-trio__side { display: grid; grid-template-columns: 1fr 1fr; gap: .9rem; }
.spj-trio__aux img { aspect-ratio: 4 / 3; width: 100%; height: auto; object-fit: cover; border-radius: 8px; }

/* Entry-information note card. */
.spj-entry-note { background: var(--spj-cream); border: 1px solid var(--spj-sand); border-radius: 14px; padding: clamp(1.4rem, 4vw, 2.4rem); max-width: 780px; margin-inline: auto; }
.spj-entry-note h2 { margin-bottom: .5rem; }
.spj-entry-note p:last-child { margin-top: .8rem; }

/* Carousel fills the hero figure width (WP constrained layout caps groups at content width). */
.spj-hero__carousel { max-width: none !important; width: 100%; }
.spj-carousel__viewport { max-width: none !important; }
.spj-carousel__track { align-items: flex-start; }

/* v1.4.7 hero layout rules moved to assets/css/hero-v147.css (enqueued after this file). */

/* v1.4.7 — Reference-hotel gallery for "Where you stay". */
.spj-stay-gallery { display: grid; grid-template-columns: 1fr; gap: .9rem; margin: 1.5rem 0 .5rem; max-width: 720px; }
.spj-stay-gallery > figure { margin: 0; }
.spj-stay-gallery > figure > img { width: 100%; height: auto; aspect-ratio: 16 / 9; object-fit: cover; border-radius: 10px; }
.spj-stay-gallery__side { display: grid; grid-template-columns: 1fr 1fr; gap: .9rem; }
.spj-stay-gallery__side img { width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 10px; }
.spj-stay-gallery figcaption { font: 12px/1.6 var(--spj-font-sans); color: var(--spj-smoke); padding-top: .4rem; }
.spj-stay-gallery--pair { grid-template-columns: 1fr 1fr; max-width: 780px; }
.spj-stay-gallery--pair > figure > img { aspect-ratio: 4 / 3; }
@media(max-width:719px) {
 .spj-stay-gallery__side { grid-template-columns: 1fr 1fr; }
}

/* v1.4.8 — Entry card centred with a prominent MFA button; homepage hotel showcase. */
.spj-entry-note { text-align: center; max-width: 700px; }
.spj-entry-note .wp-block-buttons { justify-content: center; margin-top: 1.1rem; }
.spj-entry-note .wp-block-button__link { white-space: normal; }
.spj-entry-note .has-small-font-size { margin-top: 1rem; }
.spj-stay-gallery__side--three { grid-template-columns: 1fr 1fr 1fr; }
.spj-stay-gallery__side--three img { aspect-ratio: 4 / 3; }
@media (max-width: 719px) {
  .spj-stay-gallery__side--three { grid-template-columns: 1fr 1fr; }
  .spj-stay-gallery__side--three > figure:last-child { grid-column: 1 / -1; }
}

/* v1.4.8 — Brand mark before the site title + served as favicon. */
.wp-block-site-title.spj-header__brand { display: inline-flex; align-items: center; gap: .55rem; }
.wp-block-site-title.spj-header__brand::before { content: ''; width: 34px; height: 34px; flex: 0 0 34px; border-radius: 9px; background: url('/wp-content/themes/sichuan-private/assets/images/brand/panda-icon-512.png') center / cover no-repeat; }
@media (max-width: 719px) {
  .wp-block-site-title.spj-header__brand::before { width: 28px; height: 28px; flex-basis: 28px; border-radius: 7px; }
}

/* v1.4.9 — Keep gallery captions to one visual line so figure bottoms align. */
.spj-stay-gallery figcaption { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
/* v1.4.9b — WP flow layout adds *+* sibling top-margins inside galleries; neutralise so grid items align. */
.spj-stay-gallery > *, .spj-stay-gallery__side > figure, .spj-trio__side > figure { margin-block: 0 !important; }
/* v1.4.11 — Landmarks share one ratio so captions align under Leshan and Emei. */
.spj-landmark-image img { aspect-ratio: 10 / 7; object-fit: cover; }
