/* ==========================================================================
   TORIDORI Storefront Child — FAQ and information pages
   --------------------------------------------------------------------------
   Scoped entirely to .tds-faq, so this sheet can load on every ordinary page
   without touching one that does not use the markup (inc/assets.php gates it
   on is_page() rather than on a single page ID, which keeps a second
   information page from needing a code change).

   NO RAW COLOURS, SIZES OR SPACING HERE. Everything reads tokens.css, which
   is what makes this page look like the front page rather than merely similar
   to it: change the brand navy once and this follows.

   The accordions are <details>/<summary>. That is deliberate:
     - no JavaScript, so nothing to load and nothing to break;
     - the browser handles keyboard focus and the open/closed state for us;
     - a reader using Ctrl+F still finds text inside a closed panel in
       Chrome and Edge, which a div-and-script accordion hides completely;
     - with CSS disabled it degrades to a plain, readable list.
   ========================================================================== */

/* ==========================================================================
   Every information page — the shared layer
   --------------------------------------------------------------------------
   .tds-faq and .tds-sim below dress up markup that was written for them. Two
   information pages have no such markup: Buying Guide and Contact Us are
   plain paragraphs typed into the editor, so until 0.9.2 they were still
   drawing Storefront's own body font (Source Sans Pro, #6d6d6d) at a 1064px
   line length, next to a title in Storefront's thin grey — three differences
   from the home page on one screen.

   This layer gives that plain markup the same font, colour and reading width
   the two designed pages already had, so a page needs no special markup to
   look like the rest of the site.

   SCOPE. inc/assets.php loads this sheet on is_page(), and cart, checkout and
   my-account are pages. Everything here is therefore scoped to
   .tds-info-page, a body class inc/layout.php puts on ordinary pages only —
   never on those three. Nothing in this block can reach a checkout field.
   ========================================================================== */

body.tds-info-page .entry-title {
	margin: 0 0 var(--tds-space-5);
	color: var(--tds-ink);
	font-family: var(--tds-font);
	font-size: var(--tds-fs-2xl);
	font-weight: 800;
	line-height: var(--tds-lh-tight);
}

/* The text column, not the page. The shell around it is the same width as
   every other screen — see the 0.9.2 note in inc/layout.php — and only the
   reading column inside it is held to --tds-measure.

   CENTRED, and the breadcrumb is centred with it. 0.9.2 left-aligned this
   column so it started under the logo, which left 400px of empty page down
   the right-hand side of every information page; Kota's words on
   2026-09-01 were "左に寄ってるけど。どのページも". Centring the column is
   what fixes that, and the breadcrumb has to come along or it is left
   stranded at the shell edge on its own — that was tried first and looked
   worse than the problem.

   The breadcrumb lives in .storefront-breadcrumb, OUTSIDE #content, which
   is why it needs its own selector here rather than inheriting one. */
body.tds-info-page .storefront-breadcrumb .col-full > .woocommerce-breadcrumb,
body.tds-info-page #content .content-area {
	max-width: var(--tds-measure);
	margin-inline: auto;
}

/* The other four information pages -- Terms, Policies, Delivery & Return and
   Contact Us -- are plain paragraphs with no section index to put beside
   them, so there is nothing to build a second column out of. They still get
   the reading column and the reading size, centred in the shell exactly as
   before; only the width and the type size change.

   The shipping calculator is excluded by name. It is the one information
   page whose content is a rate TABLE rather than sentences, and a table does
   not get easier to read by being narrowed -- its columns just crush. It
   keeps --tds-measure and --tds-fs-md.

   This is outside the media query below on purpose: a narrower maximum is
   the right answer at every width, and on a phone it is already wider than
   the screen, so it does nothing there. */
body.tds-info-page:not(:has(.tds-faq__toc)):not(:has(.tds-sim)) .storefront-breadcrumb .col-full > .woocommerce-breadcrumb,
body.tds-info-page:not(:has(.tds-faq__toc)):not(:has(.tds-sim)) #content .content-area {
	max-width: var(--tds-measure-text);
}

body.tds-info-page:not(:has(.tds-faq__toc)):not(:has(.tds-sim)) .entry-content {
	font-size: var(--tds-fs-read);
}

/* ==========================================================================
   The section index as a column, on pages that have one
   --------------------------------------------------------------------------
   2026-09-02. Two things had to change together and neither works alone.

   Narrowing the prose to --tds-measure-text is what fixes the reading (see
   the note on that token). On its own it makes the page LOOK emptier, which
   is the thing that has now been raised twice. Moving the section index into
   that space is what fixes the look. Doing only the second leaves a 105
   character line, which is the actual defect.

   NO NEW MARKUP. Both pages already ship a <nav class="tds-faq__toc">, but
   it is the third child, not the first -- and the page HTML lives in the
   WordPress editor, not in this theme, so reordering it would mean an edit
   we cannot review here. CSS grid places by coordinate rather than by source
   order, so the nav is pinned to column 1 and everything else is sent to
   column 2 exactly where it already sits.

   :has() is what keeps this off the pages without an index. Terms, Policies,
   Delivery & Return and Contact Us have no nav, so their content area stays
   at --tds-measure and their prose stays centred in it. A browser too old
   for :has() ignores the whole selector and gets the single column, which is
   the same page, narrower -- not a broken one.

   The BREAKPOINT is deliberately generous. The layout needs 57rem of content
   plus the shell gutters, about 968px; below 1100px there is not enough left
   over for the index to earn its width, so the index goes back above the
   text and the page is one column. That is the mobile and tablet behaviour
   and it is unchanged from before.
   ========================================================================== */

@media (min-width: 1100px) {

	body.tds-info-page:has(.tds-faq__toc) .storefront-breadcrumb .col-full > .woocommerce-breadcrumb,
	body.tds-info-page:has(.tds-faq__toc) #content .content-area {
		max-width: var(--tds-reading-shell);
	}

	body.tds-info-page .tds-guide:has(> .tds-faq__toc),
	body.tds-info-page .tds-faq:has(> .tds-faq__toc) {
		display: grid;
		grid-template-columns: var(--tds-toc-col) minmax(0, var(--tds-measure-text));
		column-gap: var(--tds-space-7);
		align-items: start;
		max-width: none;
	}

	body.tds-info-page .tds-guide:has(> .tds-faq__toc) > *,
	body.tds-info-page .tds-faq:has(> .tds-faq__toc) > * {
		grid-column: 2;
	}

	/* Row 1 with a span, not `1 / -1`: the rows here are implicit, so -1
	   resolves to the end of the EXPLICIT grid, which is one row. The span
	   only has to outrun the number of sections on the page. align-items
	   above keeps the nav its own height rather than the column's, which is
	   what leaves position:sticky somewhere to travel. */
	body.tds-info-page .tds-guide > .tds-faq__toc,
	body.tds-info-page .tds-faq > .tds-faq__toc {
		grid-column: 1;
		grid-row: 1 / span 200;
		position: sticky;
		top: var(--tds-space-5);
		flex-direction: column;
		flex-wrap: nowrap;
		align-items: stretch;
		gap: var(--tds-space-1);
		margin: 0;
	}

	/* wpautop puts a <br> after every link in the editor's markup. In the
	   horizontal pill row they collapsed and never showed; in a column each
	   one becomes a 24px flex item and spaces the index out to nearly twice
	   its height. Measured on the live page 2026-09-02: nav 326px tall for
	   5 links of 35px. */
	body.tds-info-page .tds-guide > .tds-faq__toc br,
	body.tds-info-page .tds-faq > .tds-faq__toc br {
		display: none;
	}

	/* A pill reads as a button you press to go somewhere else. Down the side
	   of the text it is a place marker, so it loses the border and the fill
	   and keeps a rule on the leading edge. */
	body.tds-info-page .tds-guide > .tds-faq__toc a,
	body.tds-info-page .tds-faq > .tds-faq__toc a {
		margin: 0;
		padding: var(--tds-space-2) var(--tds-space-3);
		border: 0;
		border-inline-start: 2px solid transparent;
		border-radius: 0;
		background: transparent;
	}

	body.tds-info-page .tds-guide > .tds-faq__toc a:hover,
	body.tds-info-page .tds-guide > .tds-faq__toc a:focus-visible,
	body.tds-info-page .tds-faq > .tds-faq__toc a:hover,
	body.tds-info-page .tds-faq > .tds-faq__toc a:focus-visible {
		border-inline-start-color: var(--tds-primary);
		background: transparent;
		color: var(--tds-primary);
	}
}

body.tds-info-page .entry-content {
	color: var(--tds-body);
	font-family: var(--tds-font);
	font-size: var(--tds-fs-md);
	line-height: var(--tds-lh-body);
}

body.tds-info-page .entry-content > h2,
body.tds-info-page .entry-content > h3 {
	margin: var(--tds-space-7) 0 var(--tds-space-4);
	color: var(--tds-ink);
	font-family: var(--tds-font);
	font-weight: 800;
	line-height: var(--tds-lh-tight);
}

body.tds-info-page .entry-content > h2 {
	padding-bottom: var(--tds-space-3);
	border-bottom: 2px solid var(--tds-line);
	font-size: var(--tds-fs-lg);
}

body.tds-info-page .entry-content > h3 {
	font-size: var(--tds-fs-md);
}

body.tds-info-page .entry-content > h2:first-child,
body.tds-info-page .entry-content > h3:first-child,
body.tds-info-page .entry-content > p:first-child {
	margin-top: 0;
}

body.tds-info-page .entry-content > p {
	margin: 0 0 var(--tds-space-4);
}

body.tds-info-page .entry-content > ul,
body.tds-info-page .entry-content > ol {
	margin: 0 0 var(--tds-space-4);
	padding-left: var(--tds-space-5);
}

body.tds-info-page .entry-content li {
	margin-bottom: var(--tds-space-2);
}

body.tds-info-page .entry-content a {
	color: var(--tds-primary);
	font-weight: 700;
}

/* ==========================================================================
   FAQ (.tds-faq)
   ========================================================================== */

.tds-faq {
	max-width: var(--tds-measure-text);
	margin-inline: auto;
	color: var(--tds-body);
	font-family: var(--tds-font);
	font-size: var(--tds-fs-read);
	line-height: var(--tds-lh-body);
}

.tds-faq__intro {
	margin: 0 0 var(--tds-space-5);
	color: var(--tds-muted);
}

/* --- Section jump links ---------------------------------------------------
   Not a sticky bar. On a page this short a sticky element costs more screen
   than it saves, especially on a phone.
   ------------------------------------------------------------------------ */

.tds-faq__toc {
	display: flex;
	flex-wrap: wrap;
	gap: var(--tds-space-2);
	margin: 0 0 var(--tds-space-7);
}

.tds-faq__toc a {
	padding: var(--tds-space-2) var(--tds-space-4);
	border: 1px solid var(--tds-line);
	border-radius: var(--tds-radius-pill);
	background: var(--tds-surface);
	color: var(--tds-ink);
	font-size: var(--tds-fs-base);
	font-weight: 700;
	text-decoration: none;
	transition: background-color 0.15s ease, border-color 0.15s ease;
}

.tds-faq__toc a:hover,
.tds-faq__toc a:focus-visible {
	border-color: var(--tds-primary);
	background: var(--tds-white);
	color: var(--tds-primary);
}

/* --- Sections ----------------------------------------------------------- */

.tds-faq__section {
	margin: 0 0 var(--tds-section-gap);
	/* Anchor links land below the header rather than under it. */
	scroll-margin-top: var(--tds-space-6);
}

.tds-faq__heading {
	margin: 0 0 var(--tds-space-4);
	padding-bottom: var(--tds-space-3);
	border-bottom: 2px solid var(--tds-line);
	color: var(--tds-ink);
	font-size: var(--tds-fs-lg);
	font-weight: 800;
	line-height: var(--tds-lh-tight);
}

.tds-faq__heading span {
	margin-right: var(--tds-space-2);
}

/* --- One question -------------------------------------------------------- */

.tds-faq__item {
	border: 1px solid var(--tds-line);
	border-radius: var(--tds-radius);
	background: var(--tds-white);
	margin-bottom: var(--tds-space-3);
	overflow: hidden;
}

.tds-faq__item[open] {
	border-color: var(--tds-primary);
	box-shadow: var(--tds-shadow);
}

.tds-faq__item > summary {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: var(--tds-space-4);
	padding: var(--tds-space-4) var(--tds-space-5);
	color: var(--tds-ink);
	font-size: var(--tds-fs-md);
	font-weight: 700;
	line-height: var(--tds-lh-tight);
	cursor: pointer;
	list-style: none; /* Firefox */
	transition: background-color 0.15s ease;
}

/* Safari and older Chrome draw their own triangle through this pseudo. */
.tds-faq__item > summary::-webkit-details-marker {
	display: none;
}

.tds-faq__item > summary:hover {
	background: var(--tds-surface);
}

.tds-faq__item > summary:focus-visible {
	outline: 2px solid var(--tds-primary);
	outline-offset: -2px;
}

/* Our own chevron, drawn from a border so it needs no image request. */
.tds-faq__item > summary::after {
	content: "";
	flex: 0 0 auto;
	width: 9px;
	height: 9px;
	margin-top: 4px;
	border-right: 2px solid var(--tds-primary);
	border-bottom: 2px solid var(--tds-primary);
	transform: rotate(45deg);
	transform-origin: center;
	transition: transform 0.18s ease;
}

.tds-faq__item[open] > summary::after {
	transform: rotate(-135deg);
}

.tds-faq__answer {
	padding: 0 var(--tds-space-5) var(--tds-space-5);
	border-top: 1px solid var(--tds-line);
	padding-top: var(--tds-space-4);
}

.tds-faq__answer > :first-child {
	margin-top: 0;
}

.tds-faq__answer > :last-child {
	margin-bottom: 0;
}

.tds-faq__answer p {
	margin: 0 0 var(--tds-space-3);
}

.tds-faq__answer ul {
	margin: 0 0 var(--tds-space-3);
	padding-left: var(--tds-space-5);
}

.tds-faq__answer li {
	margin-bottom: var(--tds-space-2);
}

.tds-faq__answer a {
	color: var(--tds-primary);
	font-weight: 700;
}

/* --- Closing panel ------------------------------------------------------- */

.tds-faq__still {
	padding: var(--tds-space-5);
	border-radius: var(--tds-radius-lg);
	background: linear-gradient(180deg, var(--tds-hero-from), var(--tds-hero-to));
	text-align: center;
}

.tds-faq__still h2 {
	margin: 0 0 var(--tds-space-2);
	color: var(--tds-ink);
	font-size: var(--tds-fs-lg);
	font-weight: 800;
}

.tds-faq__still p {
	margin: 0 0 var(--tds-space-3);
}

.tds-faq__still a {
	color: var(--tds-primary);
	font-weight: 700;
}

.tds-faq__links {
	margin-bottom: 0;
	color: var(--tds-muted);
	font-size: var(--tds-fs-base);
}

/* --- Phones -------------------------------------------------------------- */

@media (max-width: 600px) {
	.tds-faq__item > summary {
		padding: var(--tds-space-4);
		font-size: var(--tds-fs-base);
	}

	.tds-faq__answer {
		padding-left: var(--tds-space-4);
		padding-right: var(--tds-space-4);
		padding-bottom: var(--tds-space-4);
	}

	.tds-faq__still {
		padding: var(--tds-space-4);
	}
}

/* Someone who has asked their system to reduce motion gets no chevron spin. */
@media (prefers-reduced-motion: reduce) {
	.tds-faq__toc a,
	.tds-faq__item > summary,
	.tds-faq__item > summary::after {
		transition: none;
	}
}

/* ==========================================================================
   Shipping simulator (.tds-sim)
   --------------------------------------------------------------------------
   Appended to faq.css on 2026-08-24 when the simulator page landed.
   Scoped to .tds-sim so it never bleeds onto the FAQ page that shares this
   stylesheet. Every colour, font-size and spacing reads a token from
   tokens.css -- no raw values, by the same rule the rest of this sheet
   follows.
   ========================================================================== */

.tds-sim {
	max-width: var(--tds-measure);
	margin-inline: 0;
	color: var(--tds-body);
	font-family: var(--tds-font);
	font-size: var(--tds-fs-md);
	line-height: var(--tds-lh-body);
}

.tds-sim__intro {
	margin: 0 0 var(--tds-space-4);
	color: var(--tds-muted);
}

.tds-sim__trust {
	display: flex;
	flex-wrap: wrap;
	gap: var(--tds-space-2) var(--tds-space-5);
	margin: 0 0 var(--tds-space-5);
	padding: 0;
	list-style: none;
	color: var(--tds-muted);
	font-size: var(--tds-fs-sm);
	font-weight: 700;
}

.tds-sim__trust li {
	position: relative;
	padding-left: var(--tds-space-4);
}

.tds-sim__trust li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 50%;
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: var(--tds-primary);
	transform: translateY(-50%);
}

.tds-sim__form {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: var(--tds-space-4);
	margin: 0 0 var(--tds-space-5);
	padding: var(--tds-space-5);
	border: 1px solid var(--tds-line);
	border-radius: var(--tds-radius);
	background: var(--tds-surface);
}

.tds-sim__field {
	display: flex;
	flex-direction: column;
	gap: var(--tds-space-2);
}

.tds-sim__label {
	color: var(--tds-ink);
	font-size: var(--tds-fs-base);
	font-weight: 700;
}

.tds-sim__hint {
	color: var(--tds-muted);
	font-size: var(--tds-fs-sm);
	font-weight: 400;
}

.tds-sim__select,
.tds-sim__input {
	appearance: none;
	-webkit-appearance: none;
	height: 44px;
	padding: 0 var(--tds-space-3);
	border: 1px solid var(--tds-line);
	border-radius: var(--tds-radius-sm);
	background: var(--tds-white);
	color: var(--tds-body);
	font-family: inherit;
	font-size: var(--tds-fs-md);
	line-height: 1;
}

.tds-sim__select:focus,
.tds-sim__input:focus {
	outline: 2px solid var(--tds-primary);
	outline-offset: 1px;
	border-color: var(--tds-primary);
}

.tds-sim__input[aria-invalid="true"] {
	border-color: var(--tds-urgency);
}

.tds-sim__error {
	color: var(--tds-urgency);
	font-size: var(--tds-fs-sm);
	font-weight: 700;
}

.tds-sim__actions {
	grid-column: 1 / -1;
	display: flex;
	flex-wrap: wrap;
	gap: var(--tds-space-3);
	align-items: center;
}

.tds-sim__button {
	height: 44px;
	padding: 0 var(--tds-space-5);
	border: 0;
	border-radius: var(--tds-radius-sm);
	background: var(--tds-primary);
	color: var(--tds-white);
	font-family: inherit;
	font-size: var(--tds-fs-base);
	font-weight: 700;
	cursor: pointer;
	transition: background-color 0.15s ease;
}

.tds-sim__button:hover,
.tds-sim__button:focus-visible {
	background: var(--tds-primary-ink);
	outline: none;
}

.tds-sim__guide {
	margin: 0 0 var(--tds-space-5);
	padding: var(--tds-space-4) var(--tds-space-5);
	border-radius: var(--tds-radius);
	background: var(--tds-accent-soft);
	color: var(--tds-body);
	font-size: var(--tds-fs-base);
}

.tds-sim__guide strong {
	color: var(--tds-ink);
}

.tds-sim__guide ul {
	margin: var(--tds-space-2) 0 0;
	padding-left: var(--tds-space-5);
}

.tds-sim__guide li {
	margin-bottom: var(--tds-space-1);
}

.tds-sim__guide summary {
	color: var(--tds-ink);
	font-weight: 700;
	cursor: pointer;
}

.tds-sim__guide[open] summary {
	margin-bottom: var(--tds-space-2);
}

.tds-sim__guide-note {
	margin: var(--tds-space-3) 0 0;
	color: var(--tds-muted);
	font-size: var(--tds-fs-sm);
}

/* Cart-aware weight fill (Release B-1). Sits between the guide and the
   manual form. The "ready" state is a small, low-emphasis card so it
   reads as a shortcut, not a replacement for the form. "unavailable" is
   shown when the API came back but the cart is unsafe to use; it stays
   muted so it does not look like a purchase-blocking red error. */
.tds-sim__cart {
	margin: 0 0 var(--tds-space-3);
	padding: var(--tds-space-4);
	border: 1px solid var(--tds-line);
	border-radius: var(--tds-radius-sm);
	background: var(--tds-accent-soft);
	color: var(--tds-body);
}

.tds-sim__cart[data-state="unavailable"] {
	border-color: var(--tds-line);
	background: var(--tds-surface-alt);
}

.tds-sim__cart-summary {
	margin: 0 0 var(--tds-space-3);
	color: var(--tds-ink);
	font-size: var(--tds-fs-base);
	font-weight: 700;
}

.tds-sim__cart[data-state="unavailable"] .tds-sim__cart-summary {
	color: var(--tds-body);
	font-weight: 400;
}

.tds-sim__cart-use {
	display: block;
	width: 100%;
}

.tds-sim__manual-label {
	margin: 0 0 var(--tds-space-4);
	color: var(--tds-muted);
	font-size: var(--tds-fs-sm);
}

@media (max-width: 600px) {
	.tds-sim__cart {
		padding: var(--tds-space-3);
	}
}

.tds-sim__result {
	margin: 0 0 var(--tds-space-5);
	padding: var(--tds-space-5);
	border: 1px solid var(--tds-line);
	border-radius: var(--tds-radius);
	background: var(--tds-white);
}

.tds-sim__result h2 {
	margin: 0 0 var(--tds-space-3);
	color: var(--tds-ink);
	font-size: var(--tds-fs-lg);
	font-weight: 800;
	line-height: var(--tds-lh-tight);
}

.tds-sim__result h2:focus {
	outline: 2px solid var(--tds-primary);
	outline-offset: 2px;
}

.tds-sim__breakdown {
	margin: 0 0 var(--tds-space-4);
	color: var(--tds-muted);
	font-size: var(--tds-fs-sm);
}

.tds-sim__cards {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
	gap: var(--tds-space-4);
	margin: 0 0 var(--tds-space-4);
}

.tds-sim__card {
	padding: var(--tds-space-4);
	border: 1px solid var(--tds-line);
	border-radius: var(--tds-radius-sm);
	background: var(--tds-surface);
}

.tds-sim__card-badge {
	display: inline-block;
	margin: 0 0 var(--tds-space-2);
	padding: 2px var(--tds-space-2);
	border-radius: var(--tds-radius-pill);
	color: var(--tds-white);
	font-size: var(--tds-fs-xs);
	font-weight: 800;
	letter-spacing: 0.03em;
}

.tds-sim__card-badge--cheapest {
	background: var(--tds-primary);
}

.tds-sim__card-badge--fastest {
	background: var(--tds-preorder);
}

.tds-sim__card-title {
	color: var(--tds-ink);
	font-size: var(--tds-fs-base);
	font-weight: 800;
}

.tds-sim__card-subtitle {
	margin: 0 0 var(--tds-space-2);
	color: var(--tds-muted);
	font-size: var(--tds-fs-sm);
}

.tds-sim__card-price {
	margin: 0 0 var(--tds-space-2);
	color: var(--tds-ink);
	font-size: var(--tds-fs-lg);
	font-weight: 800;
	font-variant-numeric: tabular-nums;
}

.tds-sim__card-meta {
	color: var(--tds-muted);
	font-size: var(--tds-fs-sm);
}

.tds-sim__note {
	margin: 0 0 var(--tds-space-4);
	color: var(--tds-muted);
	font-size: var(--tds-fs-sm);
}

.tds-sim__footer p {
	margin: 0 0 var(--tds-space-2);
	color: var(--tds-muted);
	font-size: var(--tds-fs-sm);
}

.tds-sim__links {
	display: flex;
	flex-wrap: wrap;
	gap: var(--tds-space-2) var(--tds-space-5);
	margin-top: var(--tds-space-3) !important;
}

.tds-sim__links a {
	color: var(--tds-primary);
	font-weight: 700;
}

.tds-sim__links a:hover,
.tds-sim__links a:focus-visible {
	color: var(--tds-primary-ink);
}

.tds-sim__empty {
	margin: 0;
	padding: var(--tds-space-4) var(--tds-space-5);
	border-radius: var(--tds-radius-sm);
	background: var(--tds-surface-alt);
	color: var(--tds-muted);
	font-size: var(--tds-fs-base);
}

.tds-sim__empty:focus {
	outline: none;
}

@media (max-width: 600px) {
	.tds-sim__form {
		grid-template-columns: 1fr;
		padding: var(--tds-space-4);
	}

	.tds-sim__result {
		padding: var(--tds-space-4);
	}

	.tds-sim__cards {
		grid-template-columns: 1fr;
	}

	.tds-sim__button {
		width: 100%;
	}
}

@media (prefers-reduced-motion: reduce) {
	.tds-sim__button {
		transition: none;
	}
}

/* ==========================================================================
   Contact form (.tds-form, drawn by Contact Form 7)
   --------------------------------------------------------------------------
   Added 2026-09-02 when the Contact Us page moved from "here is our email
   address" to a form people can fill in on the page. Contact Form 7 was
   already installed and active, so no plugin was added for this.

   The markup comes from the form definition in WordPress, not from a
   template file here, which is why these class names are typed into the
   form body rather than generated. Everything reads tokens.css and matches
   the shipping calculator's controls above — one look for every field on
   the site.

   The plain email address is deliberately still on the page underneath.
   A form that fails silently loses the message; an address never does.
   ========================================================================== */

body.tds-info-page .wpcf7 {
	margin: 0 0 var(--tds-section-gap);
	padding: var(--tds-space-5);
	border: 1px solid var(--tds-line);
	border-radius: var(--tds-radius-lg);
	background: var(--tds-surface);
}

body.tds-info-page .wpcf7 form > p {
	margin: 0 0 var(--tds-space-4);
}

body.tds-info-page .wpcf7 form > p:last-child {
	margin-bottom: 0;
}

.tds-form__field {
	display: flex;
	flex-direction: column;
	gap: var(--tds-space-2);
}

/* Contact Form 7 wraps every control in its own span; this is the row that
   actually holds the input, so it is the one that has to fill the width. */
.tds-form__control,
.tds-form__control .wpcf7-form-control-wrap {
	display: block;
}

.tds-form__field label {
	color: var(--tds-ink);
	font-size: var(--tds-fs-base);
	font-weight: 700;
}

.tds-form__optional,
.tds-form__hint {
	color: var(--tds-muted);
	font-size: var(--tds-fs-sm);
	font-weight: 400;
}

body.tds-info-page .wpcf7 .tds-form__field input[type="text"],
body.tds-info-page .wpcf7 .tds-form__field input[type="email"],
body.tds-info-page .wpcf7 .tds-form__field textarea {
	display: block;
	box-sizing: border-box;
	width: 100%;
	padding: var(--tds-space-3);
	border: 1px solid var(--tds-line);
	border-radius: var(--tds-radius-sm);
	background: var(--tds-white);
	color: var(--tds-body);
	font-family: inherit;
	font-size: var(--tds-fs-md);
	line-height: var(--tds-lh-body);
}

body.tds-info-page .wpcf7 .tds-form__field input[type="text"],
body.tds-info-page .wpcf7 .tds-form__field input[type="email"] {
	height: 44px;
	padding-block: 0;
	line-height: 1;
}

body.tds-info-page .wpcf7 .tds-form__field input:focus,
body.tds-info-page .wpcf7 .tds-form__field textarea:focus {
	outline: 2px solid var(--tds-primary);
	outline-offset: 1px;
	border-color: var(--tds-primary);
}

.tds-form__actions {
	display: flex;
	flex-wrap: wrap;
	gap: var(--tds-space-3);
	align-items: center;
}

/* Storefront styles the submit button as `input[type="submit"]`, which
   outranks a bare class, so the grey theme button won until this selector
   was made long enough to beat it. Measured on the live page 2026-09-02:
   background was #eeeeee with square corners. */
body.tds-info-page .wpcf7 .tds-form__button {
	height: 44px;
	padding: 0 var(--tds-space-5);
	border: 0;
	border-radius: var(--tds-radius-sm);
	background: var(--tds-primary);
	color: var(--tds-white);
	font-family: inherit;
	font-size: var(--tds-fs-base);
	font-weight: 700;
	cursor: pointer;
	transition: background-color 0.15s ease;
}

body.tds-info-page .wpcf7 .tds-form__button:hover,
body.tds-info-page .wpcf7 .tds-form__button:focus-visible {
	background: var(--tds-primary-ink);
	color: var(--tds-white);
	outline: none;
}

/* Contact Form 7's own notices: the red/green bars under the button. */
body.tds-info-page .wpcf7 .wpcf7-not-valid-tip {
	color: var(--tds-urgency);
	font-size: var(--tds-fs-sm);
	font-weight: 700;
}

body.tds-info-page .wpcf7 .wpcf7-response-output {
	margin: var(--tds-space-4) 0 0;
	padding: var(--tds-space-3) var(--tds-space-4);
	border-radius: var(--tds-radius-sm);
	font-size: var(--tds-fs-base);
}

body.tds-info-page .wpcf7 .wpcf7-spinner {
	margin: 0;
}

/* ==========================================================================
   Buying Guide (.tds-guide)
   --------------------------------------------------------------------------
   Appended to faq.css on 2026-09-02 when the Buying Guide page stopped being
   a placeholder paragraph. Scoped to .tds-guide so it cannot reach the FAQ or
   the simulator, which share this sheet.

   The jump links and the closing "Still have a question?" card are NOT
   redefined here: the page reuses .tds-faq__toc and .tds-faq__still directly,
   which is the reuse the top of this file describes. Only the parts the FAQ
   has no equivalent for -- numbered steps, the two service cards, the example
   rate table -- get new rules.

   Every colour, size and space reads a token from tokens.css. No raw values.
   ========================================================================== */

.tds-guide {
	max-width: var(--tds-measure-text);
	margin-inline: auto;
	color: var(--tds-body);
	font-family: var(--tds-font);
	font-size: var(--tds-fs-read);
	line-height: var(--tds-lh-body);
}

.tds-guide__intro {
	margin: 0 0 var(--tds-space-5);
	color: var(--tds-muted);
}

/* --- At a glance ---------------------------------------------------------
   The one box a reader who will not read the page still takes something from,
   so it sits above the jump links rather than inside a section.
   ------------------------------------------------------------------------ */

.tds-guide__glance {
	margin: 0 0 var(--tds-space-6);
	padding: var(--tds-space-5);
	border-radius: var(--tds-radius-lg);
	background: linear-gradient(180deg, var(--tds-hero-from), var(--tds-hero-to));
}

body.tds-info-page .entry-content .tds-guide__glance h2 {
	margin: 0 0 var(--tds-space-3);
	padding: 0;
	border: 0;
	color: var(--tds-ink);
	font-size: var(--tds-fs-lg);
	font-weight: 800;
}

.tds-guide__glance ul {
	margin: 0;
	padding: 0;
	list-style: none;
}

.tds-guide__glance li {
	position: relative;
	margin-bottom: var(--tds-space-2);
	padding-left: var(--tds-space-5);
}

.tds-guide__glance li:last-child {
	margin-bottom: 0;
}

/* A tick rather than a bullet: these are five promises, not five items. */
.tds-guide__glance li::before {
	content: "✓";
	position: absolute;
	left: 0;
	color: var(--tds-primary);
	font-weight: 800;
}

/* --- Sections ------------------------------------------------------------
   Same shape as .tds-faq__section so the two pages sit at the same rhythm.
   ------------------------------------------------------------------------ */

.tds-guide__section {
	margin: 0 0 var(--tds-section-gap);
	scroll-margin-top: var(--tds-space-6);
}

body.tds-info-page .entry-content .tds-guide__heading {
	margin: 0 0 var(--tds-space-4);
	padding-bottom: var(--tds-space-3);
	border-bottom: 2px solid var(--tds-line);
	color: var(--tds-ink);
	font-size: var(--tds-fs-lg);
	font-weight: 800;
	line-height: var(--tds-lh-tight);
}

.tds-guide__heading span {
	margin-right: var(--tds-space-2);
}

.tds-guide__section h3 {
	margin: var(--tds-space-6) 0 var(--tds-space-3);
	color: var(--tds-ink);
	font-size: var(--tds-fs-md);
	font-weight: 800;
	line-height: var(--tds-lh-tight);
}

.tds-guide__section > h3:first-of-type {
	margin-top: var(--tds-space-4);
}

/* --- The four steps ------------------------------------------------------
   A real <ol>, so the order survives CSS being off and a screen reader still
   announces "1 of 4". The counter only replaces the marker with a filled
   circle; it does not invent the numbering.
   ------------------------------------------------------------------------ */

.tds-guide__steps {
	margin: 0;
	padding: 0;
	list-style: none;
	counter-reset: tds-guide-step;
}

body.tds-info-page .entry-content .tds-guide__step {
	position: relative;
	margin-bottom: var(--tds-space-4);
	padding: var(--tds-space-4) var(--tds-space-4) var(--tds-space-4) 60px;
	border: 1px solid var(--tds-line);
	border-radius: var(--tds-radius);
	background: var(--tds-white);
	counter-increment: tds-guide-step;
}

.tds-guide__step::before {
	content: counter(tds-guide-step);
	position: absolute;
	top: var(--tds-space-4);
	left: var(--tds-space-4);
	display: flex;
	align-items: center;
	justify-content: center;
	width: 28px;
	height: 28px;
	border-radius: var(--tds-radius-pill);
	background: var(--tds-primary);
	color: var(--tds-white);
	font-size: var(--tds-fs-base);
	font-weight: 800;
	line-height: 1;
}

.tds-guide__step h3 {
	margin: 0 0 var(--tds-space-2);
	font-size: var(--tds-fs-md);
}

.tds-guide__step p:last-child {
	margin-bottom: 0;
}

/* --- Aside note ---------------------------------------------------------- */

.tds-guide__note {
	margin: var(--tds-space-4) 0 0;
	padding: var(--tds-space-4);
	border-left: 3px solid var(--tds-primary);
	border-radius: 0 var(--tds-radius-sm) var(--tds-radius-sm) 0;
	background: var(--tds-surface);
	font-size: var(--tds-fs-base);
}

/* --- The two services ---------------------------------------------------- */

.tds-guide__methods {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: var(--tds-space-4);
	margin-bottom: var(--tds-space-4);
}

.tds-guide__method {
	padding: var(--tds-space-4);
	border: 1px solid var(--tds-line);
	border-radius: var(--tds-radius);
	background: var(--tds-white);
}

.tds-guide__method h4 {
	margin: 0;
	color: var(--tds-ink);
	font-size: var(--tds-fs-md);
	font-weight: 800;
	line-height: var(--tds-lh-tight);
}

.tds-guide__method-sub {
	margin: 0 0 var(--tds-space-3);
	color: var(--tds-muted);
	font-size: var(--tds-fs-sm);
}

.tds-guide__method ul {
	margin: 0;
	padding-left: var(--tds-space-5);
	font-size: var(--tds-fs-base);
}

/* --- The example rate table ----------------------------------------------
   The wrapper scrolls, not the page: six columns do not fit a phone, and a
   table that widens the document breaks every other screen on the site.
   ------------------------------------------------------------------------ */

.tds-guide__tablewrap {
	overflow-x: auto;
	margin-bottom: var(--tds-space-4);
	border: 1px solid var(--tds-line);
	border-radius: var(--tds-radius);
	background: var(--tds-white);
}

.tds-guide__table {
	width: 100%;
	margin: 0;
	border: 0;
	border-collapse: collapse;
	font-size: var(--tds-fs-base);
}

.tds-guide__table th,
.tds-guide__table td {
	padding: var(--tds-space-3);
	border: 0;
	border-bottom: 1px solid var(--tds-line);
	text-align: right;
	vertical-align: top;
	white-space: nowrap;
}

.tds-guide__table thead th {
	background: var(--tds-surface);
	color: var(--tds-ink);
	font-weight: 800;
	/* The destination names are long; only this row may wrap. */
	white-space: normal;
	min-width: 96px;
}

.tds-guide__table thead th:first-child,
.tds-guide__table tbody th {
	text-align: left;
	white-space: normal;
	min-width: 180px;
}

.tds-guide__table tbody th {
	color: var(--tds-ink);
	font-weight: 700;
}

/* The weight sits under the basket name, not beside it, so the first column
   stays narrow enough to leave room for five prices. */
.tds-guide__table tbody th span {
	display: block;
	color: var(--tds-muted);
	font-size: var(--tds-fs-sm);
	font-weight: 400;
}

.tds-guide__table tbody tr:last-child th,
.tds-guide__table tbody tr:last-child td {
	border-bottom: 0;
}

/* What the column headings had to leave out to stay one line each. */
.tds-guide__tablenote {
	margin: calc(-1 * var(--tds-space-2)) 0 var(--tds-space-4);
	color: var(--tds-muted);
	font-size: var(--tds-fs-sm);
}

/* --- Phones -------------------------------------------------------------- */

@media (max-width: 600px) {
	.tds-guide__glance {
		padding: var(--tds-space-4);
	}

	.tds-guide__methods {
		grid-template-columns: minmax(0, 1fr);
	}

	body.tds-info-page .entry-content .tds-guide__step {
		padding-left: var(--tds-space-4);
		padding-top: 52px;
	}
}
