/*
Theme Name: Tilework
Theme URI: https://www.tours-malaysia.com/
Author: Tours Malaysia
Author URI: https://www.tours-malaysia.com/
Description: Tilework is the house theme for Tours Malaysia. Its identity is built on Peranakan floor-tile geometry — quarter-circle corner discs that join into full circles across a grid, a coral centre dot, jade and coral on cream — drawn entirely in CSS, with no images required. Built for long, number-heavy travel guides: a sticky contents rail derived from the article's own headings, a baseline-numbers panel, cluster navigation that links a pillar to its siblings, and Gutenberg tables, callouts and FAQs styled as first-class furniture. Italiana and Karla are self-hosted; nothing is fetched from a third party at runtime.
Version: 1.0.0
Requires at least: 6.4
Tested up to: 7.1
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: tilework
Tags: blog, news, two-columns, right-sidebar, custom-colors, custom-logo, custom-menu, featured-images, footer-widgets, translation-ready, block-styles, wide-blocks, accessibility-ready
*/

/* ==========================================================================
   1. Tokens
   --------------------------------------------------------------------------
   Three tiers, deliberately:

   *identity*  the design's exact value, used for fills, discs, rules, dots.
   *mark*      the same colour as a large graphic element.
   *text*      a darkened sibling used wherever the colour becomes type, so
               small text clears WCAG AA (4.5:1) on every ground it lands on.

   The comp's jade text on cream is 5.71:1 and passes, but the same jade on
   the coral-light card-hover fill is 4.24:1 and does not; brick on cream is
   4.42:1 and brick on coral-light is 3.28:1; jade-light labels on jade are
   4.21:1; cream on the coral button is 2.61:1. The -text tokens below fix
   each of those without moving the fills the design is actually made of.
   Ratios are noted against the ground each token is used on.
   ========================================================================== */

:root {
	/* Grounds and ink */
	--tw-cream: #f8f2e7;
	--tw-ink: #1e2a26;
	--tw-ink-muted: rgba( 30, 42, 38, 0.65 );   /* 4.55:1 on cream — this is the floor */
	--tw-ink-soft: rgba( 30, 42, 38, 0.8 );     /* 6.6:1 on cream */

	/* Jade */
	--tw-jade: #1e6b58;                          /* fills, borders, rules, discs */
	--tw-jade-text: #1a6050;                     /* 6.65:1 on cream, 4.94:1 on coral-light */
	--tw-jade-light: #b9d9cf;                    /* tint panels, grout lines in the hero wall */
	--tw-jade-light-text: #c8e2da;               /* 4.65:1 on jade */

	/* Coral */
	--tw-coral: #e9765d;                         /* dots, discs, bullets, squares, buttons */
	--tw-coral-light: #f6c9bc;                   /* callouts, card hover fill */
	--tw-on-coral: #1e2a26;                      /* 5.10:1 — the comp's cream label is 2.61:1 */

	/* Structure */
	--tw-grout: #d8cdb8;                         /* hairlines */
	--tw-brick: #b5542c;                         /* identity only */
	--tw-brick-text: #93401f;                    /* 6.30:1 on cream, 4.68:1 on coral-light */

	/* Text on jade grounds */
	--tw-on-jade: #f8f2e7;                       /* 5.71:1 */
	--tw-on-jade-muted: rgba( 248, 242, 231, 0.85 ); /* 4.63:1 — also the floor */
	--tw-on-jade-rule: rgba( 248, 242, 231, 0.2 );

	/* Type */
	--tw-display: "Italiana", "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;
	--tw-text: "Karla", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;

	/* Measure and rhythm (8px base) */
	--tw-gutter: 48px;
	--tw-max: 1280px;
	--tw-measure: 720px;
	--tw-section: 72px;
	--tw-shadow-panel: 0 30px 60px rgba( 30, 43, 38, 0.18 );

	/* The tile. Corner discs are 30% of the tile, the centre dot 14%. */
	--tw-tile: 96px;
}

/* ==========================================================================
   2. Fonts (self-hosted; nothing is requested from a third party)
   ========================================================================== */

@font-face {
	font-family: "Italiana";
	font-style: normal;
	font-weight: 400;
	font-display: swap;
	src: url( "assets/fonts/italiana-latin.woff2" ) format( "woff2" );
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Karla ships as a variable font: one file answers 400, 500 and 600. */
@font-face {
	font-family: "Karla";
	font-style: normal;
	font-weight: 400 600;
	font-display: swap;
	src: url( "assets/fonts/karla-latin.woff2" ) format( "woff2" );
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
	font-family: "Karla";
	font-style: normal;
	font-weight: 400 600;
	font-display: swap;
	src: url( "assets/fonts/karla-latin-ext.woff2" ) format( "woff2" );
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* ==========================================================================
   3. Reset and base
   ========================================================================== */

*,
*::before,
*::after {
	box-sizing: border-box;
}

html {
	-webkit-text-size-adjust: 100%;
}

body {
	margin: 0;
	background: var( --tw-cream );
	color: var( --tw-ink );
	font-family: var( --tw-text );
	font-size: 18px;
	line-height: 1.65;
	font-weight: 400;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

/* No radius anywhere in this theme — the tile geometry does the softening. */
input,
select,
textarea,
button,
.tw-button,
img,
figure {
	border-radius: 0;
}

h1,
h2,
h3,
h4,
h5,
h6,
p,
figure,
blockquote,
dl,
dd {
	margin: 0;
}

ul,
ol {
	margin: 0;
	padding: 0 0 0 1.2em;
}

img,
svg,
video,
iframe {
	max-width: 100%;
	height: auto;
}

img {
	display: block;
}

a {
	color: var( --tw-jade-text );
}

:where( a ):focus-visible,
:where( button, input, select, textarea, summary ):focus-visible {
	outline: 2px solid var( --tw-jade );
	outline-offset: 2px;
}

::selection {
	background: var( --tw-coral-light );
	color: var( --tw-ink );
}

.screen-reader-text {
	border: 0;
	clip-path: inset( 50% );
	height: 1px;
	margin: -1px;
	overflow: hidden;
	padding: 0;
	position: absolute;
	white-space: nowrap;
	width: 1px;
}

.tw-skip-link {
	position: absolute;
	left: -9999px;
	top: 0;
	z-index: 100;
	background: var( --tw-jade );
	color: var( --tw-on-jade );
	padding: 14px 24px;
	font: 600 12px/1 var( --tw-text );
	letter-spacing: 0.14em;
	text-transform: uppercase;
	text-decoration: none;
}

.tw-skip-link:focus {
	left: 0;
}

/* ==========================================================================
   4. The tile system — pure CSS, no images
   --------------------------------------------------------------------------
   A tile of size S: cream ground, four jade quarter-discs of radius 0.30·S at
   the corners, a coral dot of radius 0.14·S at the centre. Repeated, the
   quarter-discs meet as full circles on the grid nodes.
   ========================================================================== */

.tw-tile-wall {
	background-color: var( --tw-cream );
	background-image:
		radial-gradient( circle at 0 0, var( --tw-jade ) 0 30px, transparent 31px ),
		radial-gradient( circle at 96px 0, var( --tw-jade ) 0 30px, transparent 31px ),
		radial-gradient( circle at 0 96px, var( --tw-jade ) 0 30px, transparent 31px ),
		radial-gradient( circle at 96px 96px, var( --tw-jade ) 0 30px, transparent 31px ),
		radial-gradient( circle at 48px 48px, var( --tw-coral ) 0 13px, transparent 14px ),
		linear-gradient( var( --tw-jade-light ) 1px, transparent 1px ),
		linear-gradient( 90deg, var( --tw-jade-light ) 1px, transparent 1px );
	background-size: 96px 96px;
}

/* Inverted strip above the footer: S = 24, jade ground, cream discs, no grout. */
.tw-tile-strip {
	height: 24px;
	background-color: var( --tw-jade );
	background-image:
		radial-gradient( circle at 0 0, var( --tw-cream ) 0 7px, transparent 8px ),
		radial-gradient( circle at 24px 0, var( --tw-cream ) 0 7px, transparent 8px ),
		radial-gradient( circle at 0 24px, var( --tw-cream ) 0 7px, transparent 8px ),
		radial-gradient( circle at 24px 24px, var( --tw-cream ) 0 7px, transparent 8px ),
		radial-gradient( circle at 12px 12px, var( --tw-coral ) 0 3px, transparent 4px );
	background-size: 24px 24px;
}

/* The mark. Sized by --tw-mark; discs and dot scale with it. */
.tw-tile-mark {
	--tw-mark: 34px;
	width: var( --tw-mark );
	height: var( --tw-mark );
	flex: 0 0 var( --tw-mark );
	background-color: var( --tw-cream );
	background-image:
		radial-gradient( circle at 0 0, var( --tw-jade ) 0 calc( var( --tw-mark ) * 0.3 ), transparent calc( var( --tw-mark ) * 0.3 + 1px ) ),
		radial-gradient( circle at 100% 0, var( --tw-jade ) 0 calc( var( --tw-mark ) * 0.3 ), transparent calc( var( --tw-mark ) * 0.3 + 1px ) ),
		radial-gradient( circle at 0 100%, var( --tw-jade ) 0 calc( var( --tw-mark ) * 0.3 ), transparent calc( var( --tw-mark ) * 0.3 + 1px ) ),
		radial-gradient( circle at 100% 100%, var( --tw-jade ) 0 calc( var( --tw-mark ) * 0.3 ), transparent calc( var( --tw-mark ) * 0.3 + 1px ) ),
		radial-gradient( circle at 50% 50%, var( --tw-coral ) 0 calc( var( --tw-mark ) * 0.14 ), transparent calc( var( --tw-mark ) * 0.14 + 1px ) );
	border: 1px solid var( --tw-jade );
}

.tw-tile-mark--md {
	--tw-mark: 48px;
}

.tw-tile-mark--lg {
	--tw-mark: 120px;
	border-width: 2px;
}

/* Card corner motif. Two 80px discs bled off opposite corners; the colours
   rotate through three variants so a grid of cards never repeats itself. */
.tw-card {
	position: relative;
	overflow: hidden;
	border: 1px solid var( --tw-jade );
	background: var( --tw-cream );
	color: var( --tw-ink );
	transition: background-color 150ms ease, color 150ms ease;
}

.tw-card::before,
.tw-card::after {
	content: "";
	position: absolute;
	width: 80px;
	height: 80px;
	border-radius: 50%;
	pointer-events: none;
}

.tw-card::before {
	top: -40px;
	right: -40px;
	background: var( --tw-jade );
}

.tw-card::after {
	bottom: -40px;
	left: -40px;
	background: var( --tw-coral );
}

/* Variant 1 — jade card, cream and coral discs. */
.tw-card--jade {
	background: var( --tw-jade );
	color: var( --tw-on-jade );
}

.tw-card--jade::before {
	background: var( --tw-cream );
}

/* Variant 2 — cream card, discs swapped. */
.tw-card--swap::before {
	background: var( --tw-coral );
}

.tw-card--swap::after {
	background: var( --tw-jade );
}

/* ==========================================================================
   5. Layout scaffolding
   ========================================================================== */

.tw-shell {
	max-width: var( --tw-max );
	margin-inline: auto;
	width: 100%;
}

.tw-pad {
	padding-inline: var( --tw-gutter );
}

.tw-section {
	padding-top: var( --tw-section );
}

.tw-section--end {
	padding-bottom: var( --tw-section );
}

.tw-section-head {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 24px;
	flex-wrap: wrap;
	margin-bottom: 28px;
}

/* ==========================================================================
   6. Type roles
   ========================================================================== */

.tw-display,
.tw-h1,
.tw-h2,
.tw-h3-display {
	font-family: var( --tw-display );
	font-weight: 400;
	text-wrap: pretty;
}

.tw-display {
	font-size: clamp( 44px, 5.5vw, 70px );
	line-height: 1;
	letter-spacing: 0.01em;
}

.tw-h1 {
	font-size: clamp( 40px, 4.9vw, 62px );
	line-height: 1;
	max-width: 960px;
}

.tw-h1--archive {
	font-size: clamp( 42px, 5.7vw, 72px );
}

.tw-h2 {
	font-size: clamp( 32px, 3.5vw, 44px );
	line-height: 1;
}

.tw-label {
	font-family: var( --tw-text );
	font-size: 11px;
	font-weight: 600;
	line-height: 1;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var( --tw-jade-text );
}

.tw-label--on-jade {
	color: var( --tw-jade-light-text );
}

.tw-label--brick {
	color: var( --tw-brick-text );
}

.tw-label--muted {
	color: var( --tw-ink-muted );
}

.tw-lede {
	font-size: 20px;
	line-height: 1.5;
	color: var( --tw-ink-soft );
	max-width: 780px;
}

.tw-deck {
	font-size: 14px;
	line-height: 1.5;
	color: var( --tw-ink-muted );
}

/* ==========================================================================
   7. Buttons, links, chips
   ========================================================================== */

.tw-button {
	display: inline-block;
	background: var( --tw-coral );
	color: var( --tw-on-coral );
	padding: 14px 24px;
	font: 600 12px/1 var( --tw-text );
	letter-spacing: 0.14em;
	text-transform: uppercase;
	text-decoration: none;
	border: 1px solid var( --tw-coral );
	cursor: pointer;
	transition: background-color 150ms ease, color 150ms ease, border-color 150ms ease;
}

.tw-button:hover,
.tw-button:focus-visible {
	background: var( --tw-jade );
	border-color: var( --tw-jade );
	color: var( --tw-on-jade );
}

.tw-button--outline {
	background: transparent;
	border-color: var( --tw-jade );
	color: var( --tw-jade-text );
	padding: 13px 24px;
}

.tw-button--outline:hover,
.tw-button--outline:focus-visible {
	background: var( --tw-jade );
	color: var( --tw-on-jade );
}

.tw-textlink {
	font: 600 11px/1 var( --tw-text );
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var( --tw-jade-text );
	text-decoration: none;
}

.tw-textlink:hover,
.tw-textlink:focus-visible {
	text-decoration: underline;
	text-underline-offset: 4px;
}

/* An 11px letterspaced label is a 11px-tall target. Padding grows the box to
   the 24px WCAG 2.5.8 asks for; the matching negative margin means nothing
   moves on screen. */
a.tw-textlink,
a.tw-label,
.tw-entrymeta__cat {
	display: inline-flex;
	align-items: center;
	min-height: 24px;
	padding-block: 6px;
	margin-block: -6px;
}

.tw-chip {
	display: inline-block;
	border: 1px solid var( --tw-jade );
	color: var( --tw-jade-text );
	padding: 6px 12px;
	font: 600 11px/1.4 var( --tw-text );
	letter-spacing: 0.14em;
	text-transform: uppercase;
	text-decoration: none;
	transition: background-color 150ms ease, color 150ms ease;
}

.tw-chip:hover,
.tw-chip:focus-visible {
	background: var( --tw-jade );
	color: var( --tw-on-jade );
}

.tw-chip--muted {
	border-color: var( --tw-grout );
	color: var( --tw-ink-muted );
}

.tw-chip--muted:hover,
.tw-chip--muted:focus-visible {
	border-color: var( --tw-jade );
	background: var( --tw-jade );
	color: var( --tw-on-jade );
}

/* ==========================================================================
   8. Header
   ========================================================================== */

.tw-header {
	border-bottom: 1px solid var( --tw-grout );
	background: var( --tw-cream );
}

.tw-header__inner {
	display: grid;
	grid-template-columns: minmax( 0, 1fr ) auto minmax( 0, 1fr );
	align-items: center;
	gap: 18px 24px;
	padding-block: 22px;
}

/* The two nav groups are grid items of the header itself on desktop, and a
   single wrapped row under the logo once the toggle appears. */
.tw-header__navs {
	display: contents;
}

.tw-header__side {
	display: flex;
	align-items: center;
	gap: 28px;
	flex-wrap: wrap;
	min-width: 0;
}

.tw-header__side--start {
	grid-column: 1;
	grid-row: 1;
}

.tw-header__side--end {
	grid-column: 3;
	grid-row: 1;
	justify-content: flex-end;
}

.tw-brand__wrap {
	grid-column: 2;
	grid-row: 1;
	justify-self: center;
}

.tw-brand {
	display: flex;
	align-items: center;
	gap: 14px;
	text-decoration: none;
	color: inherit;
	justify-self: center;
}

.tw-brand__name {
	font-family: var( --tw-display );
	font-weight: 400;
	font-size: 30px;
	line-height: 1;
	letter-spacing: 0.06em;
	white-space: nowrap;
}

.tw-brand__tagline {
	display: block;
	margin-top: 4px;
	font-size: 11px;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var( --tw-ink-muted );
	white-space: nowrap;
}

.tw-brand__logo {
	max-height: 48px;
	width: auto;
}

.tw-nav {
	display: flex;
	align-items: center;
	gap: 28px;
	margin: 0;
	padding: 0;
	list-style: none;
	flex-wrap: wrap;
}

.tw-nav--end {
	justify-content: flex-end;
}

.tw-nav li {
	position: relative;
}

.tw-nav a,
.tw-nav__button {
	font: 600 12px/1.3 var( --tw-text );
	letter-spacing: 0.12em;
	text-transform: uppercase;
	text-decoration: none;
	color: var( --tw-ink );
	background: none;
	border: 0;
	padding: 6px 0;
	cursor: pointer;
	display: inline-block;
	transition: color 150ms ease;
}

.tw-nav a:hover,
.tw-nav a:focus-visible,
.tw-nav__button:hover,
.tw-nav__button:focus-visible,
.tw-nav .current-menu-item > a,
.tw-nav .current-menu-ancestor > a,
.tw-nav .current-cat > a {
	color: var( --tw-jade-text );
}

/* Sub-menus, styled but unfussy. */
.tw-nav .sub-menu {
	position: absolute;
	left: 0;
	top: 100%;
	z-index: 20;
	min-width: 220px;
	margin: 0;
	padding: 8px 0;
	list-style: none;
	background: var( --tw-cream );
	border: 1px solid var( --tw-jade );
	display: none;
}

.tw-nav li:hover > .sub-menu,
.tw-nav li:focus-within > .sub-menu {
	display: block;
}

.tw-nav .sub-menu a {
	display: block;
	padding: 8px 16px;
	letter-spacing: 0.08em;
}

/* Mobile toggle — hidden until the nav collapses. */
.tw-navtoggle {
	display: none;
	align-items: center;
	gap: 10px;
	background: none;
	border: 1px solid var( --tw-jade );
	color: var( --tw-jade-text );
	padding: 10px 14px;
	font: 600 11px/1 var( --tw-text );
	letter-spacing: 0.14em;
	text-transform: uppercase;
	cursor: pointer;
	min-height: 44px;
}

/* Search field in the header. */
.tw-search {
	display: flex;
	width: 100%;
}

.tw-search__field {
	flex: 1 1 auto;
	min-width: 0;
	border: 1px solid var( --tw-jade );
	border-right: 0;
	background: var( --tw-cream );
	padding: 12px 16px;
	font: 400 15px/1.4 var( --tw-text );
	color: var( --tw-ink );
}

.tw-search__field::placeholder {
	color: var( --tw-ink-muted );
	opacity: 1;
}

.tw-search__submit {
	flex: 0 0 auto;
	background: var( --tw-jade );
	color: var( --tw-on-jade );
	border: 1px solid var( --tw-jade );
	padding: 12px 18px;
	font: 600 12px/1 var( --tw-text );
	letter-spacing: 0.14em;
	text-transform: uppercase;
	cursor: pointer;
	transition: background-color 150ms ease;
}

.tw-search__submit:hover,
.tw-search__submit:focus-visible {
	background: var( --tw-ink );
	border-color: var( --tw-ink );
}

.tw-header__search {
	border-top: 1px solid var( --tw-grout );
	padding-block: 16px;
}

.tw-header__search[hidden] {
	display: none;
}

/* ==========================================================================
   9. Front page
   ========================================================================== */

.tw-hero {
	position: relative;
	min-height: 600px;
	display: flex;
	align-items: center;
}

.tw-hero__panel {
	width: 620px;
	max-width: 100%;
	margin-left: 96px;
	background: var( --tw-cream );
	padding: 56px 60px;
	display: flex;
	flex-direction: column;
	gap: 22px;
	box-shadow: var( --tw-shadow-panel );
}

.tw-hero__lede {
	font-size: 17px;
	line-height: 1.55;
	color: var( --tw-ink-soft );
}

.tw-hero__actions {
	display: flex;
	gap: 12px;
	margin-top: 6px;
	flex-wrap: wrap;
}

/* Itinerary cards */
.tw-grid-3 {
	display: grid;
	grid-template-columns: repeat( 3, minmax( 0, 1fr ) );
	gap: 16px;
}

.tw-itinerary {
	padding: 32px 28px 36px;
	display: flex;
	flex-direction: column;
	gap: 14px;
	min-height: 300px;
	text-decoration: none;
}

.tw-itinerary__numeral {
	font-family: var( --tw-display );
	font-weight: 400;
	font-size: clamp( 72px, 8vw, 104px );
	line-height: 0.9;
}

.tw-itinerary__body {
	font-size: 16px;
	line-height: 1.5;
	color: var( --tw-ink-soft );
}

.tw-card--jade .tw-itinerary__body,
.tw-card--jade .tw-region__list {
	color: var( --tw-on-jade-muted );
}

/* Region columns — four fills, no gaps. */
.tw-regions {
	display: grid;
	grid-template-columns: repeat( 4, minmax( 0, 1fr ) );
}

.tw-region {
	padding: 36px 28px 40px;
	display: flex;
	flex-direction: column;
	gap: 14px;
	min-height: 280px;
	text-decoration: none;
	color: inherit;
	position: relative;
	transition: filter 150ms ease;
}

.tw-region:hover,
.tw-region:focus-visible {
	filter: brightness( 0.96 );
}

.tw-region__name {
	font-family: var( --tw-display );
	font-weight: 400;
	font-size: clamp( 28px, 2.8vw, 36px );
	line-height: 1;
}

.tw-region__list {
	font-size: 15px;
	line-height: 1.7;
	color: var( --tw-ink-soft );
	list-style: none;
	padding: 0;
	margin: 0;
}

/* A column of links is a list of targets, not prose, so each one carries a
   24px box (WCAG 2.5.8) rather than the 18px its font box would give it. */
.tw-region__list a,
.tw-footer__col a,
.tw-footer__widgets a,
.tw-rail__siblings a {
	display: inline-block;
	min-height: 24px;
	padding-block: 3px;
}

.tw-region__season {
	margin-top: auto;
	padding-top: 16px;
}

.tw-region a {
	color: inherit;
	text-decoration: none;
}

.tw-region a:hover,
.tw-region a:focus-visible {
	text-decoration: underline;
	text-underline-offset: 4px;
	text-decoration-thickness: 2px;
}

.tw-region--jade {
	background: var( --tw-jade );
	color: var( --tw-on-jade );
}

/* The default label colour is jade — invisible on the jade column. */
.tw-region--jade .tw-label {
	color: var( --tw-jade-light-text );
}

.tw-region--jade .tw-region__list {
	color: var( --tw-on-jade-muted );
}

.tw-region--coral-light {
	background: var( --tw-coral-light );
}

.tw-region--coral-light .tw-region__season {
	color: var( --tw-brick-text );
}

.tw-region--jade-light {
	background: var( --tw-jade-light );
}

.tw-region--coral {
	background: var( --tw-coral );
	color: var( --tw-on-coral );
}

.tw-region--coral .tw-region__list {
	color: var( --tw-on-coral );
}

.tw-region--coral .tw-region__season {
	color: var( --tw-on-coral );
}

/* Recent guides + numbers */
.tw-split {
	display: grid;
	grid-template-columns: repeat( 2, minmax( 0, 1fr ) );
	gap: 80px;
}

.tw-recent {
	display: flex;
	flex-direction: column;
}

.tw-recent__item {
	display: grid;
	grid-template-columns: auto minmax( 0, 1fr );
	gap: 16px;
	align-items: baseline;
	padding: 16px 0;
	border-top: 1px solid var( --tw-grout );
	text-decoration: none;
	color: inherit;
}

.tw-recent__item:last-child {
	border-bottom: 1px solid var( --tw-grout );
}

.tw-recent__bullet {
	width: 12px;
	height: 12px;
	background: var( --tw-jade );
	display: inline-block;
	transform: translateY( 1px );
	flex: none;
}

.tw-recent__item:nth-child( even ) .tw-recent__bullet {
	background: var( --tw-coral );
}

.tw-recent__title {
	font-family: var( --tw-display );
	font-weight: 400;
	font-size: 26px;
	line-height: 1.1;
	text-wrap: pretty;
}

.tw-recent__item:hover .tw-recent__title,
.tw-recent__item:focus-visible .tw-recent__title {
	color: var( --tw-jade-text );
}

.tw-h2--spaced {
	margin-bottom: 24px;
}

.tw-numbers-col {
	display: flex;
	flex-direction: column;
	gap: 22px;
}

.tw-recent__deck {
	display: block;
	font-size: 14px;
	color: var( --tw-ink-muted );
	margin-top: 4px;
	line-height: 1.5;
}

/* Key / value rows — the front page numbers, the silo facts, the baseline panel. */
.tw-facts {
	display: grid;
	grid-template-columns: minmax( 0, 1fr ) auto;
	gap: 0 24px;
	font-size: 16px;
	line-height: 1.4;
	margin: 0;
}

.tw-facts dt,
.tw-facts dd {
	padding: 12px 0;
	border-top: 1px solid var( --tw-grout );
	margin: 0;
}

.tw-facts dd {
	font-weight: 600;
	color: var( --tw-jade-text );
	text-align: right;
}

.tw-facts dd.is-negative {
	color: var( --tw-brick-text );
}

.tw-facts dt:nth-last-of-type( 1 ),
.tw-facts dd:nth-last-of-type( 1 ) {
	border-bottom: 1px solid var( --tw-grout );
}

/* ==========================================================================
   10. Cards used across home, archives and cluster nav
   ========================================================================== */

/* No `color: inherit` here: it is a single class declared after
   .tw-card--jade, so it would win the cascade and paint the jade card's title
   in ink. The card variants own the colour. */
.tw-tilecard {
	padding: 30px 28px 34px;
	display: flex;
	flex-direction: column;
	gap: 12px;
	min-height: 240px;
	text-decoration: none;
}

.tw-tilecard__title {
	font-family: var( --tw-display );
	font-weight: 400;
	font-size: 28px;
	line-height: 1.1;
	text-wrap: pretty;
}

.tw-tilecard__deck {
	font-size: 15px;
	line-height: 1.5;
	color: var( --tw-ink-soft );
}

.tw-card--jade .tw-tilecard__deck {
	color: var( --tw-on-jade-muted );
}

.tw-tilecard__meta {
	margin-top: auto;
	padding-top: 12px;
}

/* Hover: coral-light fill with ink text — the discs stay. */
.tw-card--link:hover,
.tw-card--link:focus-visible,
.tw-card--link:focus-within {
	background: var( --tw-coral-light );
	color: var( --tw-ink );
}

.tw-card--link:hover .tw-tilecard__deck,
.tw-card--link:focus-within .tw-tilecard__deck {
	color: var( --tw-ink-soft );
}

.tw-card--link:hover .tw-label,
.tw-card--link:focus-within .tw-label {
	color: var( --tw-jade-text );
}

/* The whole card is the target. One nominated link inside it stretches over the
   card; any other link in the card still works because it sits above the
   overlay. */
.tw-card--link .tw-card__link {
	color: inherit;
	text-decoration: none;
}

.tw-card--link .tw-card__link::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
}

.tw-card--link .tw-card__link:focus-visible {
	outline: none;
}

.tw-card--link:focus-within {
	outline: 2px solid var( --tw-jade );
	outline-offset: 2px;
}

/* ==========================================================================
   11. Article
   ========================================================================== */

.tw-breadcrumb {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	font: 600 11px/1.5 var( --tw-text );
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var( --tw-jade-text );
}

.tw-breadcrumb a {
	color: inherit;
	text-decoration: none;
}

.tw-breadcrumb a:hover,
.tw-breadcrumb a:focus-visible {
	text-decoration: underline;
	text-underline-offset: 3px;
}

.tw-breadcrumb__sep {
	color: var( --tw-grout );
}

.tw-breadcrumb [aria-current="page"] {
	color: var( --tw-ink-muted );
}

.tw-articlehead {
	padding-top: 44px;
}

.tw-articlehead .tw-h1 {
	margin-top: 24px;
}

.tw-articlehead .tw-lede {
	margin-top: 20px;
}

.tw-entrymeta {
	display: flex;
	flex-wrap: wrap;
	gap: 12px 28px;
	margin-top: 24px;
	font: 600 12px/1.4 var( --tw-text );
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var( --tw-ink-muted );
}

.tw-entrymeta__cat {
	display: flex;
	align-items: center;
	gap: 8px;
	color: var( --tw-ink );
	text-decoration: none;
}

.tw-entrymeta__cat::before {
	content: "";
	width: 10px;
	height: 10px;
	background: var( --tw-coral );
	display: inline-block;
	flex: none;
}

.tw-entrymeta__cat:hover,
.tw-entrymeta__cat:focus-visible {
	color: var( --tw-jade-text );
}

/* Featured image, content width. */
.tw-featured {
	margin-top: 36px;
}

.tw-featured img {
	width: 100%;
	border: 1px solid var( --tw-grout );
}

.tw-credit {
	font-size: 13px;
	line-height: 1.5;
	color: var( --tw-ink-muted );
	margin-top: 10px;
}

.tw-credit a {
	color: inherit;
}

/* The body grid: sidebar rail and the measure. */
.tw-articlegrid {
	display: grid;
	grid-template-columns: 300px minmax( 0, 1fr );
	gap: 72px;
	padding-top: 56px;
	padding-bottom: var( --tw-section );
	align-items: start;
}

.tw-rail {
	position: sticky;
	top: 24px;
	display: flex;
	flex-direction: column;
	gap: 24px;
	min-width: 0;
}

/* The contents box is one <details> at every width: open and box-like beside
   the article, collapsed under the headline on a phone. Two DOMs would put the
   list into the page twice for a screen reader. */
.tw-rail__toc {
	border: 1px solid var( --tw-jade );
}

.tw-toc {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	/* 8px gap plus 3px of padding either side of each link is the comp's 14px
	   rhythm, with a 26px target instead of a 20px one. */
	gap: 8px;
}

.tw-toc a {
	font-size: 15px;
	line-height: 1.35;
	color: var( --tw-ink-soft );
	text-decoration: none;
	padding: 3px 0 3px 18px;
	min-height: 24px;
	display: block;
	transition: color 150ms ease;
}

.tw-toc a:hover,
.tw-toc a:focus-visible {
	color: var( --tw-jade-text );
}

.tw-toc .is-current a {
	font-weight: 600;
	color: var( --tw-jade-text );
	padding-left: 0;
	display: flex;
	gap: 10px;
	align-items: baseline;
}

.tw-toc .is-current a::before {
	content: "";
	width: 8px;
	height: 8px;
	background: var( --tw-coral );
	display: inline-block;
	flex: none;
	transform: translateY( -1px );
}

.tw-rail__panel {
	background: var( --tw-jade-light );
	padding: 24px;
	display: flex;
	flex-direction: column;
	gap: 10px;
}

/* In the rail the two columns share one continuous hairline per row, so the
   panel reads as a single list of facts. A column gap would break every rule
   into two floating segments. The front-page numbers keep their gap, as drawn. */
.tw-rail__panel .tw-facts {
	grid-template-columns: minmax( 0, 1fr ) auto;
	font-size: 15px;
	gap: 0;
	line-height: 1.35;
}

.tw-rail__panel .tw-facts dt {
	padding-right: 16px;
}

.tw-rail__panel .tw-facts dt,
.tw-rail__panel .tw-facts dd {
	border-top-color: rgba( 30, 42, 38, 0.15 );
	padding: 10px 0 0;
}

.tw-rail__panel .tw-facts dd {
	color: var( --tw-ink );
}

.tw-rail__panel .tw-facts dd.is-negative {
	color: var( --tw-brick-text );
}

.tw-rail__panel .tw-facts dt:nth-last-of-type( 1 ),
.tw-rail__panel .tw-facts dd:nth-last-of-type( 1 ) {
	border-bottom: 0;
}

.tw-rail__cluster {
	border-top: 1px solid var( --tw-grout );
	padding-top: 20px;
	display: flex;
	flex-direction: column;
	gap: 12px;
}

.tw-rail__pillar {
	font-family: var( --tw-display );
	font-weight: 400;
	font-size: 24px;
	line-height: 1.1;
	color: inherit;
	text-decoration: none;
	text-wrap: pretty;
}

.tw-rail__pillar:hover,
.tw-rail__pillar:focus-visible {
	color: var( --tw-jade-text );
}

.tw-rail__siblings {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
}

.tw-rail__siblings li {
	border-top: 1px solid var( --tw-grout );
	padding-top: 10px;
	margin-top: 10px;
}

.tw-rail__siblings a {
	font-size: 15px;
	line-height: 1.4;
	color: var( --tw-ink );
	text-decoration: none;
}

.tw-rail__siblings a:hover,
.tw-rail__siblings a:focus-visible {
	color: var( --tw-jade-text );
}

/* The collapsed rail used below 1024px. */
.tw-rail__details > summary {
	cursor: pointer;
	padding: 18px 24px;
	font: 600 11px/1 var( --tw-text );
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var( --tw-jade-text );
	list-style: none;
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 16px;
	min-height: 44px;
}

.tw-rail__details > summary::-webkit-details-marker {
	display: none;
}

.tw-rail__details > summary::after {
	content: "+";
	font-size: 18px;
	line-height: 1;
}

.tw-rail__details[open] > summary::after {
	content: "\2013";
}

.tw-rail__details .tw-toc {
	padding: 0 24px 24px;
}

/* ==========================================================================
   12. The article measure — core blocks styled as they arrive
   ========================================================================== */

.tw-prose {
	max-width: var( --tw-measure );
	font-size: 18px;
	line-height: 1.65;
	min-width: 0;
}

.tw-prose > * {
	margin-block: 0 26px;
}

.tw-prose > *:last-child {
	margin-bottom: 0;
}

.tw-prose h2 {
	font-family: var( --tw-display );
	font-weight: 400;
	font-size: clamp( 30px, 3.2vw, 40px );
	line-height: 1.05;
	margin-top: 42px;
	scroll-margin-top: 24px;
	text-wrap: pretty;
}

.tw-prose h3 {
	font-size: 23px;
	font-weight: 600;
	line-height: 1.25;
	margin-top: 32px;
	scroll-margin-top: 24px;
	text-wrap: pretty;
}

.tw-prose h4 {
	font-size: 19px;
	font-weight: 600;
	line-height: 1.3;
	margin-top: 28px;
}

.tw-prose h2:first-child,
.tw-prose h3:first-child {
	margin-top: 0;
}

.tw-prose :is( p, li, dd, td, th, figcaption ) a {
	color: var( --tw-jade-text );
	text-decoration: underline;
	text-decoration-color: var( --tw-jade-light );
	text-decoration-thickness: 2px;
	text-underline-offset: 4px;
	transition: text-decoration-color 150ms ease;
}

.tw-prose :is( p, li, dd, td, th, figcaption ) a:hover,
.tw-prose :is( p, li, dd, td, th, figcaption ) a:focus-visible {
	text-decoration-color: var( --tw-jade );
}

.tw-prose ul,
.tw-prose ol {
	padding-left: 22px;
}

.tw-prose li {
	margin-bottom: 10px;
}

.tw-prose ul {
	list-style: none;
	padding-left: 0;
}

.tw-prose ul > li {
	position: relative;
	padding-left: 26px;
}

.tw-prose ul > li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0.62em;
	width: 10px;
	height: 10px;
	background: var( --tw-coral );
}

.tw-prose ul ul > li::before {
	background: var( --tw-jade );
}

.tw-prose ol {
	list-style: decimal;
}

.tw-prose ol > li::marker {
	font-weight: 600;
	color: var( --tw-jade-text );
}

.tw-prose strong {
	font-weight: 600;
}

.tw-prose code,
.tw-prose kbd {
	font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
	font-size: 0.9em;
	background: rgba( 30, 42, 38, 0.06 );
	padding: 2px 6px;
}

.tw-prose pre {
	background: var( --tw-ink );
	color: var( --tw-cream );
	padding: 24px;
	overflow-x: auto;
	font-size: 14px;
	line-height: 1.6;
}

.tw-prose pre code {
	background: none;
	padding: 0;
	color: inherit;
}

.tw-prose hr,
.tw-prose .wp-block-separator {
	border: 0;
	border-top: 1px solid var( --tw-grout );
	height: 0;
	margin-block: 42px;
}

/* Images inside the measure, with the site's credit caption. */
.tw-prose figure,
.tw-prose .wp-block-image {
	margin-block: 0 26px;
}

.tw-prose figure img {
	width: 100%;
	border: 1px solid var( --tw-grout );
}

.tw-prose figcaption,
.tw-prose .wp-block-image figcaption {
	font-size: 13px;
	line-height: 1.5;
	color: var( --tw-ink-muted );
	margin-top: 10px;
	text-align: left;
}

/* Tables: jade top rule, jade header row, grout row rules, jade last rule. */
.tw-tablewrap {
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
	margin-bottom: 26px;
}

.tw-prose table,
.tw-prose .wp-block-table table {
	width: 100%;
	border-collapse: collapse;
	border-top: 1px solid var( --tw-jade );
	font-size: 16px;
	line-height: 1.45;
	min-width: 520px;
}

/* Core's wp-block-styles gives every cell a full box border. The comp rules
   the rows only, so the side borders are cleared explicitly rather than by
   dropping core's stylesheet, which is doing useful work elsewhere. */
.tw-prose :is( td, th ) {
	border: 0;
}

.tw-prose thead th {
	background: var( --tw-jade );
	color: var( --tw-on-jade );
	font: 600 11px/1.4 var( --tw-text );
	letter-spacing: 0.16em;
	text-transform: uppercase;
	text-align: left;
	padding: 12px 16px;
	vertical-align: bottom;
}

.tw-prose tbody td,
.tw-prose tbody th {
	padding: 12px 16px;
	border-bottom: 1px solid var( --tw-grout );
	text-align: left;
	vertical-align: top;
}

.tw-prose tbody th {
	font-weight: 600;
}

.tw-prose tbody tr:last-child td,
.tw-prose tbody tr:last-child th {
	border-bottom: 1px solid var( --tw-jade );
}

.tw-prose .wp-block-table {
	margin-bottom: 26px;
	overflow-x: auto;
}

.tw-prose .wp-block-table figcaption,
.tw-tablewrap + .tw-tablenote {
	font-size: 13px;
	color: var( --tw-ink-muted );
	margin-top: 10px;
}

/* Quotes — a coral square and an Italiana statement. */
.tw-prose blockquote,
.tw-prose .wp-block-quote {
	display: grid;
	grid-template-columns: auto minmax( 0, 1fr );
	gap: 16px;
	border: 0;
	padding: 0;
	margin-block: 34px;
}

.tw-prose blockquote::before {
	content: "";
	width: 12px;
	height: 12px;
	background: var( --tw-coral );
	margin-top: 12px;
	flex: none;
}

.tw-prose blockquote > * {
	grid-column: 2;
	font-family: var( --tw-display );
	font-weight: 400;
	font-size: 30px;
	line-height: 1.2;
	margin: 0;
	text-wrap: pretty;
}

.tw-prose blockquote cite,
.tw-prose blockquote .wp-block-quote__citation {
	font-family: var( --tw-text );
	font-size: 13px;
	font-style: normal;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var( --tw-ink-muted );
	margin-top: 12px;
	display: block;
}

.tw-prose .wp-block-pullquote {
	background: var( --tw-jade-light );
	padding: 32px;
	text-align: left;
	border: 0;
}

/* The callout: coral-light, brick label, Italiana statement. Editors get this
   as a block style; the theme also derives one from a "What to skip" heading. */
.tw-callout,
.tw-prose .is-style-tw-callout {
	background: var( --tw-coral-light );
	padding: 28px 30px;
	display: flex;
	flex-direction: column;
	gap: 12px;
	margin-block: 34px;
}

.tw-callout__label {
	font: 600 11px/1 var( --tw-text );
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var( --tw-brick-text );
}

.tw-callout__statement {
	font-family: var( --tw-display );
	font-weight: 400;
	font-size: 26px;
	line-height: 1.2;
	margin: 0;
	text-wrap: pretty;
}

.tw-callout p,
.tw-callout li {
	font-size: 16px;
	line-height: 1.55;
	color: rgba( 30, 42, 38, 0.85 );
	margin: 0;
}

.tw-callout ul {
	list-style: none;
	padding: 0;
	margin: 0;
	display: flex;
	flex-direction: column;
	gap: 12px;
}

.tw-callout ul > li {
	position: relative;
	padding-left: 26px;
}

.tw-callout ul > li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0.55em;
	width: 10px;
	height: 10px;
	background: var( --tw-brick-text );
}

.tw-prose .is-style-tw-callout > *:first-child {
	font-family: var( --tw-display );
	font-size: 26px;
	line-height: 1.2;
}

/* The numbers panel as an in-content block style. */
.tw-prose .is-style-tw-numbers {
	background: var( --tw-jade-light );
	padding: 28px 30px;
	margin-block: 34px;
}

.tw-prose .is-style-tw-numbers table {
	border-top: 0;
	min-width: 0;
}

.tw-prose .is-style-tw-numbers thead th {
	background: transparent;
	color: var( --tw-ink );
}

.tw-prose .is-style-tw-numbers tbody td {
	border-bottom-color: rgba( 30, 42, 38, 0.15 );
}

/* FAQ, derived from the article's own question headings. */
.tw-faq {
	border-bottom: 1px solid var( --tw-grout );
	display: flex;
	flex-direction: column;
	margin-bottom: 26px;
}

.tw-faq__item {
	padding: 20px 0;
	border-top: 1px solid var( --tw-grout );
	display: flex;
	flex-direction: column;
	gap: 8px;
}

.tw-faq__q {
	font-family: var( --tw-display );
	font-weight: 400;
	font-size: 24px;
	line-height: 1.2;
	margin: 0;
	scroll-margin-top: 24px;
	text-wrap: pretty;
}

.tw-faq__a > * {
	font-size: 17px;
	line-height: 1.6;
	color: var( --tw-ink-soft );
	margin-block: 0 14px;
}

.tw-faq__a > *:last-child {
	margin-bottom: 0;
}

/* Tags and the author box. */
.tw-tags {
	display: flex;
	gap: 8px;
	flex-wrap: wrap;
	margin-top: 8px;
	padding: 0;
	list-style: none;
}

.tw-authorbox {
	border: 1px solid var( --tw-grout );
	padding: 24px;
	display: grid;
	grid-template-columns: auto minmax( 0, 1fr );
	gap: 20px;
	align-items: center;
	margin-top: 34px;
}

.tw-authorbox__name {
	font-family: var( --tw-display );
	font-weight: 400;
	font-size: 24px;
	line-height: 1;
	margin: 0;
}

.tw-authorbox__bio {
	font-size: 15px;
	line-height: 1.5;
	color: var( --tw-ink-muted );
	margin: 6px 0 0;
}

.tw-authorbox .tw-textlink {
	margin-top: 10px;
	display: inline-block;
}

.tw-authorbox img {
	border: 1px solid var( --tw-jade );
}

/* Post navigation */
.tw-postnav {
	display: grid;
	grid-template-columns: repeat( 2, minmax( 0, 1fr ) );
	gap: 16px;
	margin-top: 34px;
	border-top: 1px solid var( --tw-grout );
	padding-top: 24px;
}

.tw-postnav a {
	text-decoration: none;
	color: inherit;
	display: flex;
	flex-direction: column;
	gap: 8px;
}

.tw-postnav__title {
	font-family: var( --tw-display );
	font-size: 22px;
	line-height: 1.15;
}

.tw-postnav a:hover .tw-postnav__title {
	color: var( --tw-jade-text );
}

.tw-postnav__next {
	text-align: right;
}

/* ==========================================================================
   13. Archives, search, 404
   ========================================================================== */

.tw-titleband {
	display: grid;
	grid-template-columns: 1.1fr 0.9fr;
	border-bottom: 1px solid var( --tw-grout );
}

.tw-titleband__text {
	padding: 64px var( --tw-gutter );
	display: flex;
	flex-direction: column;
	gap: 20px;
	min-width: 0;
}

.tw-titleband__desc {
	font-size: 19px;
	line-height: 1.55;
	max-width: 560px;
	color: var( --tw-ink-soft );
}

.tw-titleband__count {
	font: 600 12px/1.4 var( --tw-text );
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var( --tw-ink-muted );
}

.tw-titleband__wall {
	border-left: 1px solid var( --tw-grout );
	min-height: 260px;
}

/* Pillar feature */
.tw-pillar {
	display: grid;
	grid-template-columns: 1.1fr 0.9fr;
	border: 1px solid var( --tw-jade );
	text-decoration: none;
	color: inherit;
	position: relative;
}

.tw-pillar__main {
	background: var( --tw-jade );
	color: var( --tw-on-jade );
	padding: 44px 48px;
	display: flex;
	flex-direction: column;
	gap: 16px;
	min-width: 0;
}

.tw-pillar__title {
	font-family: var( --tw-display );
	font-weight: 400;
	font-size: clamp( 34px, 3.8vw, 48px );
	line-height: 1.02;
	margin: 0;
	text-wrap: pretty;
}

.tw-pillar__title a {
	color: inherit;
	text-decoration: none;
}

.tw-pillar__title a::after {
	content: "";
	position: absolute;
	inset: 0;
}

.tw-pillar__deck {
	font-size: 17px;
	line-height: 1.55;
	color: var( --tw-on-jade-muted );
}

.tw-pillar__cta {
	margin-top: 8px;
	font: 600 11px/1 var( --tw-text );
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var( --tw-on-jade );
}

.tw-pillar:hover .tw-pillar__cta,
.tw-pillar:focus-within .tw-pillar__cta {
	text-decoration: underline;
	text-underline-offset: 4px;
}

.tw-pillar__facts {
	padding: 44px 48px;
	display: flex;
	flex-direction: column;
	gap: 14px;
	justify-content: center;
	min-width: 0;
}

/* One continuous rule per row, as in the comp. */
.tw-pillar__facts .tw-facts {
	gap: 0;
}

.tw-pillar__facts .tw-facts dt {
	padding-right: 24px;
}

/* Sort chips and pagination */
.tw-sorts {
	display: flex;
	gap: 8px;
	flex-wrap: wrap;
}

.tw-pagination {
	display: flex;
	gap: 8px;
	flex-wrap: wrap;
	margin-top: 48px;
}

.tw-pagination .page-numbers {
	width: 44px;
	height: 44px;
	display: grid;
	place-items: center;
	border: 1px solid var( --tw-jade );
	color: var( --tw-jade-text );
	font: 600 13px/1 var( --tw-text );
	text-decoration: none;
	transition: background-color 150ms ease, color 150ms ease;
}

.tw-pagination .page-numbers.current {
	background: var( --tw-jade );
	border-color: var( --tw-jade );
	color: var( --tw-on-jade );
}

.tw-pagination .page-numbers:hover:not( .current ),
.tw-pagination .page-numbers:focus-visible:not( .current ) {
	background: var( --tw-coral-light );
}

.tw-pagination .page-numbers.dots {
	border-color: var( --tw-grout );
	color: var( --tw-ink-muted );
}

.tw-empty {
	padding-block: 72px;
	max-width: 620px;
}

.tw-empty .tw-search {
	margin-top: 28px;
	max-width: 420px;
}

.tw-404 {
	display: grid;
	grid-template-columns: 1.1fr 0.9fr;
	align-items: stretch;
	border-bottom: 1px solid var( --tw-grout );
}

.tw-404__wall {
	min-height: 340px;
	border-left: 1px solid var( --tw-grout );
}

/* Search result rows reuse the recent-guides list. */
.tw-results {
	padding-bottom: var( --tw-section );
}

/* ==========================================================================
   14. Pages and comments
   ========================================================================== */

.tw-page {
	padding-top: 44px;
	padding-bottom: var( --tw-section );
}

.tw-page__body {
	margin-top: 36px;
}

.tw-comments {
	margin-top: 56px;
	border-top: 1px solid var( --tw-grout );
	padding-top: 32px;
	max-width: var( --tw-measure );
}

.tw-comments ol {
	list-style: none;
	padding: 0;
	margin: 0;
}

.tw-comments .comment-body {
	border-top: 1px solid var( --tw-grout );
	padding: 20px 0;
}

.tw-comments .children {
	padding-left: 28px;
	border-left: 1px solid var( --tw-grout );
	margin-left: 6px;
}

.tw-comments .comment-meta {
	font: 600 11px/1.4 var( --tw-text );
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var( --tw-ink-muted );
	margin-bottom: 10px;
}

.tw-comments .comment-author .fn {
	font-style: normal;
	color: var( --tw-ink );
}

.tw-comments input[type="text"],
.tw-comments input[type="email"],
.tw-comments input[type="url"],
.tw-comments textarea {
	width: 100%;
	border: 1px solid var( --tw-jade );
	background: var( --tw-cream );
	padding: 12px 16px;
	font: 400 16px/1.5 var( --tw-text );
	color: var( --tw-ink );
}

.tw-comments .comment-form p {
	margin-bottom: 16px;
}

.tw-comments .comment-form label {
	display: block;
	font: 600 11px/1 var( --tw-text );
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var( --tw-jade-text );
	margin-bottom: 8px;
}

.tw-comments .form-submit input[type="submit"] {
	background: var( --tw-coral );
	color: var( --tw-on-coral );
	border: 1px solid var( --tw-coral );
	padding: 14px 24px;
	font: 600 12px/1 var( --tw-text );
	letter-spacing: 0.14em;
	text-transform: uppercase;
	cursor: pointer;
}

.tw-comments .form-submit input[type="submit"]:hover {
	background: var( --tw-jade );
	border-color: var( --tw-jade );
	color: var( --tw-on-jade );
}

/* ==========================================================================
   15. Footer
   ========================================================================== */

.tw-footer {
	background: var( --tw-jade );
	color: var( --tw-on-jade );
}

.tw-footer__inner {
	display: grid;
	grid-template-columns: minmax( 0, 1fr ) auto;
	gap: 40px 80px;
	align-items: start;
	padding: 44px var( --tw-gutter ) 28px;
}

.tw-footer__brand {
	display: flex;
	flex-direction: column;
	gap: 14px;
}

.tw-footer__name {
	font-family: var( --tw-display );
	font-weight: 400;
	font-size: 28px;
	line-height: 1.1;
	letter-spacing: 0.06em;
}

.tw-footer__desc {
	font-size: 14px;
	line-height: 1.6;
	max-width: 400px;
	color: var( --tw-on-jade-muted );
}

.tw-footer__cols {
	display: flex;
	gap: 56px;
	flex-wrap: wrap;
}

.tw-footer__colwrap {
	display: flex;
	flex-direction: column;
	gap: 12px;
	min-width: 120px;
}

.tw-footer__col {
	display: flex;
	flex-direction: column;
	gap: 10px;
	list-style: none;
	margin: 0;
	padding: 0;
	min-width: 120px;
}

.tw-footer__col .tw-label {
	margin-bottom: 2px;
}

.tw-footer__col a {
	font-size: 14px;
	font-weight: 500;
	line-height: 1.4;
	color: var( --tw-on-jade );
	text-decoration: none;
}

.tw-footer__col a:hover,
.tw-footer__col a:focus-visible {
	text-decoration: underline;
	text-underline-offset: 4px;
}

.tw-footer__base {
	grid-column: 1 / -1;
	border-top: 1px solid var( --tw-on-jade-rule );
	padding-top: 16px;
	display: flex;
	justify-content: space-between;
	gap: 16px 32px;
	flex-wrap: wrap;
	font: 400 11px/1.6 var( --tw-text );
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var( --tw-on-jade-muted );
}

/* Footer widgets, if the site ever uses them. */
.tw-footer__widgets {
	display: grid;
	grid-template-columns: repeat( auto-fit, minmax( 220px, 1fr ) );
	gap: 40px;
	padding: 44px var( --tw-gutter ) 0;
}

.tw-footer__widgets .widget-title,
.tw-footer__widgets .wp-block-heading {
	font: 600 11px/1 var( --tw-text );
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var( --tw-jade-light-text );
	margin-bottom: 14px;
}

.tw-footer__widgets ul {
	list-style: none;
	padding: 0;
	margin: 0;
	display: flex;
	flex-direction: column;
	gap: 10px;
}

.tw-footer__widgets a {
	color: var( --tw-on-jade );
	font-size: 14px;
	text-decoration: none;
}

.tw-footer__widgets a:hover {
	text-decoration: underline;
	text-underline-offset: 4px;
}

/* ==========================================================================
   16. Alignment support for core blocks
   ========================================================================== */

.tw-prose .alignwide {
	width: min( 1184px, calc( 100vw - var( --tw-gutter ) * 2 ) );
	max-width: none;
	margin-inline: 0;
}

.tw-prose .alignfull {
	width: min( 1184px, calc( 100vw - var( --tw-gutter ) * 2 ) );
	max-width: none;
	margin-inline: 0;
}

.tw-prose .alignleft {
	float: left;
	margin: 6px 26px 20px 0;
	max-width: 45%;
}

.tw-prose .alignright {
	float: right;
	margin: 6px 0 20px 26px;
	max-width: 45%;
}

.tw-prose .aligncenter {
	margin-inline: auto;
}

.tw-prose .wp-block-embed__wrapper {
	position: relative;
}

.tw-prose .wp-block-embed iframe {
	width: 100%;
	aspect-ratio: 16 / 9;
	height: auto;
}

.tw-prose .wp-block-buttons {
	display: flex;
	gap: 12px;
	flex-wrap: wrap;
}

.tw-prose .wp-block-button__link {
	background: var( --tw-coral );
	color: var( --tw-on-coral );
	border: 1px solid var( --tw-coral );
	padding: 14px 24px;
	font: 600 12px/1 var( --tw-text );
	letter-spacing: 0.14em;
	text-transform: uppercase;
	text-decoration: none;
	border-radius: 0;
	display: inline-block;
}

.tw-prose .wp-block-button__link:hover,
.tw-prose .wp-block-button__link:focus-visible {
	background: var( --tw-jade );
	border-color: var( --tw-jade );
	color: var( --tw-on-jade );
}

.tw-prose .is-style-outline .wp-block-button__link {
	background: transparent;
	color: var( --tw-jade-text );
	border-color: var( --tw-jade );
}

.tw-prose .is-style-outline .wp-block-button__link:hover {
	background: var( --tw-jade );
	color: var( --tw-on-jade );
}

/* ==========================================================================
   17. Responsive
   --------------------------------------------------------------------------
   The comp is drawn at 1280. Below 1024 the header nav drops under the logo,
   regions become 2x2, card grids 2-up and the article rail collapses into a
   details element above the body. Below 640 everything is single column and
   the display sizes step down.
   ========================================================================== */

@media ( max-width: 1180px ) {
	:root {
		--tw-gutter: 32px;
	}

	.tw-articlegrid {
		gap: 48px;
		grid-template-columns: 264px minmax( 0, 1fr );
	}

	.tw-split {
		gap: 48px;
	}

	.tw-hero__panel {
		margin-left: 48px;
		padding: 48px;
	}
}

@media ( max-width: 1023px ) {
	.tw-header__inner {
		grid-template-columns: minmax( 0, 1fr ) auto;
	}

	.tw-brand__wrap {
		justify-self: start;
		grid-column: 1;
		grid-row: 1;
	}

	.tw-navtoggle {
		display: inline-flex;
		grid-column: 2;
		grid-row: 1;
		justify-self: end;
	}

	.tw-header__navs {
		grid-column: 1 / -1;
		grid-row: 2;
		display: flex;
		flex-wrap: wrap;
		gap: 12px 28px;
	}

	.tw-header__navs[hidden] {
		display: none;
	}

	.tw-header__side,
	.tw-header__side--start,
	.tw-header__side--end {
		grid-column: auto;
		grid-row: auto;
		gap: 12px 24px;
		justify-content: flex-start;
	}

	.tw-nav {
		gap: 12px 24px;
	}

	.tw-nav--end {
		justify-content: flex-start;
	}

	.tw-nav .sub-menu {
		position: static;
		display: block;
		border: 0;
		padding: 4px 0 4px 16px;
		min-width: 0;
	}

	.tw-articlegrid {
		grid-template-columns: minmax( 0, 1fr );
		gap: 32px;
		padding-top: 40px;
	}

	.tw-rail {
		position: static;
		gap: 20px;
	}

	.tw-prose {
		max-width: none;
	}

	.tw-regions {
		grid-template-columns: repeat( 2, minmax( 0, 1fr ) );
	}

	.tw-grid-3 {
		grid-template-columns: repeat( 2, minmax( 0, 1fr ) );
	}

	.tw-split {
		grid-template-columns: minmax( 0, 1fr );
		gap: 56px;
	}

	.tw-titleband,
	.tw-pillar,
	.tw-404 {
		grid-template-columns: minmax( 0, 1fr );
	}

	.tw-titleband__wall {
		min-height: 160px;
		border-left: 0;
		border-top: 1px solid var( --tw-grout );
	}

	.tw-404__wall {
		min-height: 200px;
		border-left: 0;
		border-top: 1px solid var( --tw-grout );
	}

	.tw-titleband__text {
		padding-block: 48px;
	}

	.tw-pillar__main,
	.tw-pillar__facts {
		padding: 36px 32px;
	}

	.tw-footer__inner {
		grid-template-columns: minmax( 0, 1fr );
	}
}

@media ( max-width: 767px ) {
	.tw-grid-3 {
		grid-template-columns: minmax( 0, 1fr );
	}

	.tw-hero {
		min-height: 0;
		padding-block: 56px;
	}

	.tw-hero__panel {
		margin-left: 0;
		width: 100%;
		padding: 32px;
	}

	.tw-postnav {
		grid-template-columns: minmax( 0, 1fr );
	}

	.tw-postnav__next {
		text-align: left;
	}
}

@media ( max-width: 639px ) {
	:root {
		--tw-gutter: 20px;
		--tw-section: 48px;
	}

	body {
		font-size: 18px;
	}

	.tw-regions {
		grid-template-columns: minmax( 0, 1fr );
	}

	.tw-region {
		min-height: 0;
	}

	/* A 64px wall below the hero panel, per the responsive notes. */
	.tw-hero {
		background-size: 64px 64px;
		background-image:
			radial-gradient( circle at 0 0, var( --tw-jade ) 0 20px, transparent 21px ),
			radial-gradient( circle at 64px 0, var( --tw-jade ) 0 20px, transparent 21px ),
			radial-gradient( circle at 0 64px, var( --tw-jade ) 0 20px, transparent 21px ),
			radial-gradient( circle at 64px 64px, var( --tw-jade ) 0 20px, transparent 21px ),
			radial-gradient( circle at 32px 32px, var( --tw-coral ) 0 9px, transparent 10px ),
			linear-gradient( var( --tw-jade-light ) 1px, transparent 1px ),
			linear-gradient( 90deg, var( --tw-jade-light ) 1px, transparent 1px );
	}

	.tw-brand__name {
		font-size: 24px;
	}

	.tw-entrymeta {
		gap: 10px 20px;
	}

	.tw-authorbox {
		grid-template-columns: minmax( 0, 1fr );
		gap: 16px;
	}

	.tw-footer__cols {
		gap: 32px;
	}

	.tw-prose .alignleft,
	.tw-prose .alignright {
		float: none;
		margin-inline: 0;
		max-width: none;
	}
}

/* ==========================================================================
   18. Motion, print, forced colours
   ========================================================================== */

@media ( prefers-reduced-motion: reduce ) {
	*,
	*::before,
	*::after {
		transition-duration: 0.01ms !important;
		animation-duration: 0.01ms !important;
		scroll-behavior: auto !important;
	}
}

@media ( forced-colors: active ) {
	.tw-card,
	.tw-chip,
	.tw-button,
	.tw-pagination .page-numbers {
		border: 1px solid currentColor;
	}
}

@media print {
	.tw-header,
	.tw-footer,
	.tw-rail,
	.tw-tile-strip,
	.tw-pagination,
	.tw-postnav {
		display: none !important;
	}

	.tw-articlegrid {
		display: block;
		padding: 0;
	}

	.tw-prose {
		max-width: none;
		font-size: 12pt;
	}

	body {
		background: #fff;
	}
}
