/* ============================================================
   DEZACT site — base typography, core-block defaults, page
   scaffolding, bilingual (zh-Hant) rules. Loads last.
   ============================================================ */

body {
	background: var(--dz-plaster);
	color: var(--dz-ink);
	font-family: var(--dz-font-sans);
	font-size: 16px;
	line-height: 1.65;
	-webkit-font-smoothing: antialiased;
}

/* links */
a { color: var(--dz-ink); text-decoration-thickness: 1px; text-underline-offset: 3px; }
a:hover { color: var(--dz-oak-deep); }
::selection { background: var(--dz-oak); color: #fff; }

/* headings — machined grotesk, tight tracking */
h1, h2, h3, h4, .wp-block-post-title {
	font-family: var(--dz-font-sans);
	font-weight: 500;
	letter-spacing: -.02em;
	line-height: 1.05;
	text-wrap: balance;
}
h1, .wp-block-post-title { font-size: clamp(2.4rem, 5.4vw, 4rem); }
h2 { font-size: clamp(1.6rem, 3.2vw, 2.4rem); letter-spacing: -.015em; }
h3 { font-size: clamp(1.2rem, 2.2vw, 1.5rem); }
p { text-wrap: pretty; }

/* content column — post-content flows in a constrained column,
   wide/full alignments break out (core handles the layout math) */
.dz-content > * { margin-block-start: 1.4em; }
.dz-content > h2 { margin-block-start: 2.4em; }

/* page title block (page.html) */
.dz-title-block { padding: clamp(40px, 6vw, 70px) var(--dz-gutter) 0; }
.dz-title-block .wp-block-post-title { margin: 14px 0 0; }

/* generic page main */
.dz-main { padding-bottom: var(--dz-section); }

/* wp core niceties */
.wp-block-separator:not(.dz-ribbon) {
	border: 0;
	border-top: 1px solid var(--dz-hairline-strong);
	opacity: 1;
}
.wp-block-quote {
	border-left: 0;
	padding: 26px 34px;
	background: var(--dz-surface-gloss);
	border: 1px solid var(--dz-hairline);
	border-radius: 0 70px 0 0;
	font-size: 1.15em;
	font-weight: 300;
}
.wp-block-table table { border-collapse: collapse; width: 100%; }
.wp-block-table td, .wp-block-table th { border: 0; border-bottom: 1px solid var(--dz-hairline); padding: 12px 16px 12px 0; }
.wp-block-table th { font-family: var(--dz-font-mono); font-size: 11px; letter-spacing: var(--dz-track-label); text-transform: uppercase; color: var(--dz-grey-soft); text-align: left; }
code, kbd { font-family: var(--dz-font-mono); font-size: .9em; background: rgba(20, 19, 23, .06); border-radius: 6px; padding: 2px 7px; }
.wp-block-image img { height: auto; }  /* archival honesty: no forced stretching */

/* lists in briefs */
.dz-content ul { padding-left: 1.2em; }
.dz-content li { margin: .4em 0; }

/* search + 404 */
.dz-search-form .wp-block-search__input {
	border: 1px solid var(--dz-hairline-strong);
	border-radius: var(--dz-r-blade);
	padding: 14px 26px;
	font-family: var(--dz-font-sans);
	font-size: 15px;
	background: var(--dz-gloss);
}
.dz-search-form .wp-block-search__button {
	border-radius: var(--dz-r-blade) var(--dz-r-blade) var(--dz-r-blade) 22px;
	background: var(--dz-ink);
	color: var(--dz-plaster);
	border: 0;
	padding: 14px 30px;
	font-family: var(--dz-font-sans);
	transition: background var(--dz-speed) var(--dz-ease);
}
.dz-search-form .wp-block-search__button:hover { background: var(--dz-oak-deep); }
.dz-404-code {
	font-family: var(--dz-font-mono) !important;
	font-size: clamp(120px, 24vw, 280px) !important;
	line-height: 1 !important;
	-webkit-text-stroke: 2.5px var(--dz-ink);
	color: transparent !important;
	letter-spacing: .04em;
	margin: 0 !important;
}

/* query pagination */
.wp-block-query-pagination { font-family: var(--dz-font-mono); font-size: 13px; letter-spacing: .08em; }
.wp-block-query-pagination a { text-decoration: none; padding: 8px 16px; border: 1px solid var(--dz-hairline); border-radius: var(--dz-r-blade); transition: border-color var(--dz-speed), background var(--dz-speed); }
.wp-block-query-pagination a:hover { border-color: var(--dz-oak-deep); background: rgba(179, 146, 95, .12); }

/* footer part */
.dz-footer-word {
	font-size: clamp(64px, 12vw, 150px) !important;
	font-weight: 600 !important;
	letter-spacing: .14em !important;
	line-height: 1 !important;
	text-align: center;
	pointer-events: none;
	margin: 0 !important;
}
.dz-footer-meta { font-family: var(--dz-font-mono); font-size: 10.5px; letter-spacing: .16em; text-transform: uppercase; color: #56544f; }
.dz-footer nav a, .dz-footer .wp-block-navigation-item__content { color: #c9c7c1; }

/* ============ BILINGUAL — Traditional Chinese ============ */
/* /tw/ and /zh/ trees get lang="zh-Hant" via functions.php */
:lang(zh-Hant) body, body:lang(zh-Hant), .dz-zh body { line-height: 1.95; }
:lang(zh-Hant) p, .dz-zh p { line-height: 1.95; letter-spacing: .02em; }
:lang(zh-Hant) h1, :lang(zh-Hant) h2, :lang(zh-Hant) h3, :lang(zh-Hant) .wp-block-post-title,
.dz-zh h1, .dz-zh h2, .dz-zh h3, .dz-zh .wp-block-post-title {
	letter-spacing: .04em;
	line-height: 1.25;
	text-wrap: balance;
}
:lang(zh-Hant) .dz-kicker, .dz-zh .dz-kicker { letter-spacing: .3em; font-family: var(--dz-font-sans) !important; font-size: 12px !important; }
/* CJK never gets faux-condensed tracking */
:lang(zh-Hant) .wp-block-site-title, .dz-zh .wp-block-site-title { letter-spacing: var(--dz-track-wordmark); } /* wordmark stays Latin */

/* ============ RESPONSIVE ============ */
@media (max-width: 781px) {
	.dz-header { margin: 12px 12px 0; gap: 12px; padding: 10px 12px 10px 18px; }
	.dz-shell { border-radius: 8px 8px 120px 8px; }
	.dz-dark { border-radius: 80px 8px 8px 8px; }
	.dz-shell-oak { border-radius: 0 90px 0 0; }
	.dz-indent-1, .dz-indent-2 { margin-left: 0 !important; }
	.dz-blade:hover, .dz-index > *:hover { transform: none; }
	.dz-index > *:nth-child(n) { margin-right: 0; }
	.dz-specs p { grid-template-columns: 1fr; gap: 2px; }
}

/* print: keep it readable, drop theatrics */
@media print {
	.dz-cursor-ring, .dz-cursor-dot, .dz-marquee { display: none !important; }
	body { background: #fff; }
}

/* ============================================================
   FRONT PAGE — image-led hero + immersive showcase
   ============================================================ */
.dz-front { padding-top: 16px; padding-bottom: 0; }

/* full-bleed parametric hero — image stays vivid; text sits in a frosted
   dark-glass panel so contrast is deterministic (FUP: WCAG AA verified,
   not eyeballed — see the contrast monitor). */
.dz-hero.wp-block-cover {
	min-height: 90vh;
	margin: 0 12px 0;
	border-radius: 8px 8px 220px 8px;
	overflow: hidden;
	align-items: flex-end;
	justify-content: flex-start;
	box-shadow: var(--dz-sheen), 0 40px 80px -60px rgba(20,19,23,.6);
}
.dz-hero .wp-block-cover__inner-container {
	width: auto;
	max-width: min(560px, 92vw);
	margin: 0 0 clamp(36px, 6vh, 74px) clamp(16px, 5vw, 64px);
	padding: clamp(26px, 3vw, 40px) clamp(28px, 3.2vw, 44px);
	background: rgba(12, 11, 14, .72);
	-webkit-backdrop-filter: blur(9px) saturate(118%);
	backdrop-filter: blur(9px) saturate(118%);
	border-radius: 4px 46px 4px 46px;
	box-shadow: var(--dz-sheen), 0 34px 60px -40px rgba(0,0,0,.7);
}
.dz-hero .dz-kicker { color: var(--dz-oak-pale); }
.dz-hero h1 {
	color: #fff;
	font-size: clamp(2.6rem, 6vw, 4.6rem);
	line-height: .98;
	max-width: 15ch;
	margin: 14px 0 0;
}
.dz-hero p.dz-hero-sub { color: rgba(255,255,255,.9); max-width: 42ch; font-size: clamp(15px,1.25vw,18px); margin-top: 18px; }
.dz-hero .wp-block-buttons { margin-top: 30px; }
.dz-hero .is-style-outline .wp-block-button__link { color: #fff; border-color: rgba(255,255,255,.55); }
.dz-hero .is-style-outline .wp-block-button__link:hover { border-color: #fff; background: rgba(255,255,255,.12); }

/* section rhythm on the front page */
.dz-front > .wp-block-group,
.dz-front > .wp-block-columns,
.dz-front > .wp-block-gallery,
.dz-front > .wp-block-separator,
.dz-front > .wp-block-heading,
.dz-front > .wp-block-paragraph,
.dz-front > .wp-block-spacer { margin-inline: auto; }

/* big editorial statement */
.dz-statement {
	font-size: clamp(1.8rem, 4.2vw, 3.4rem) !important;
	font-weight: 500;
	line-height: 1.08;
	letter-spacing: -.02em;
	max-width: 18ch;
	margin: clamp(60px,9vw,120px) auto clamp(28px,4vw,44px);
	text-wrap: balance;
}
.dz-statement .dz-accent { color: var(--dz-oak-deep); }

/* full-bleed immersive strata band */
.dz-band { margin: clamp(40px,6vw,70px) 12px; }
.dz-band .wp-block-image img { border-radius: 0 var(--dz-r-sweep-size) 0 0; box-shadow: 0 30px 60px -46px rgba(20,19,23,.6); }

@media (max-width: 781px) {
	.dz-hero.wp-block-cover { min-height: 74vh; border-radius: 8px 8px 110px 8px; }
}


/* hero crop favours the parametric structure */
.dz-hero img.wp-block-cover__image-background { object-position: center 55%; }
