/*
Theme Name: Deatherage Senior Benefits
Theme URI: https://deatherageseniorbenefits.com
Author: Ideas & Pixels
Author URI: https://ideasandpixels.com
Description: Single-page theme for Deatherage Senior Benefits with a pre-licensure and a licensed version, switched with one toggle under Site Content. Pre-licensure shows a basic hero, a scheduling calendar, and a "stay in touch" form; licensed adds the full home page and its CMS disclaimer. Every piece of copy is editable under Site Content, which requires Advanced Custom Fields PRO. Leads are stored in WordPress and emailed. Brand colors, logos, and photography are built in.
Version: 1.2.0
Requires at least: 6.0
Tested up to: 6.7
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: dsb
Tags: one-column, custom-logo, editor-style, translation-ready, accessibility-ready
*/

/* ==========================================================================
   1. Fonts
   Nunito Sans (SIL OFL 1.1) is bundled as the stand-in for Museo Sans.
   If you have an Adobe Fonts (Typekit) project with Museo Sans, paste the
   project ID in Site Content > Site Settings > Typography and the real
   brand font is used automatically.
   ========================================================================== */

@font-face {
	font-family: 'Nunito Sans';
	font-style: normal;
	font-weight: 300 800;
	font-display: swap;
	src: url('assets/fonts/nunito-sans-normal-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: 'Nunito Sans';
	font-style: normal;
	font-weight: 300 800;
	font-display: swap;
	src: url('assets/fonts/nunito-sans-normal-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;
}

@font-face {
	font-family: 'Nunito Sans';
	font-style: italic;
	font-weight: 400 700;
	font-display: swap;
	src: url('assets/fonts/nunito-sans-italic-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: 'Nunito Sans';
	font-style: italic;
	font-weight: 400 700;
	font-display: swap;
	src: url('assets/fonts/nunito-sans-italic-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;
}

/* ==========================================================================
   2. Tokens
   ========================================================================== */

:root {
	/* Brand palette, straight from the 2026 brand guide. */
	--dsb-navy: #0F2A43;
	--dsb-green: #398D6D;
	--dsb-orange: #F2A659;

	/* Working tints derived from the three brand colors. */
	--dsb-navy-700: #1B3E5C;
	--dsb-navy-900: #0A1E31;
	--dsb-green-700: #2E765A;
	--dsb-green-050: #EDF5F1;
	--dsb-orange-700: #C97D22;
	--dsb-orange-050: #FDF2E4;

	--dsb-paper: #FBF8F4;
	--dsb-white: #FFFFFF;
	--dsb-ink: #1B2B38;
	--dsb-muted: #55697A;
	--dsb-line: #E2DACF;

	--dsb-font: 'Nunito Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Trebuchet MS', Helvetica, Arial, sans-serif;

	--dsb-radius: 14px;
	--dsb-radius-sm: 8px;
	--dsb-shadow: 0 1px 2px rgba(15, 42, 67, .06), 0 8px 24px rgba(15, 42, 67, .07);
	--dsb-shadow-lg: 0 2px 4px rgba(15, 42, 67, .06), 0 18px 48px rgba(15, 42, 67, .12);

	--dsb-wrap: 1440px;
	--dsb-gutter: 24px;
}

@media (min-width: 1180px) {
	:root { --dsb-gutter: 44px; }
}

/* Museo Sans, when an Adobe Fonts project ID is supplied. */
.dsb-has-museo {
	--dsb-font: 'museo-sans', 'Nunito Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Trebuchet MS', Helvetica, Arial, sans-serif;
}

/*
 * Museo Sans ships in 100 / 300 / 500 / 700 / 900 — there is no 400 or 800 —
 * so the handful of places that ask for one are remapped onto real weights:
 * 500 for text, 700 for labels and buttons, 900 for headings (the same weight
 * as "SENIOR BENEFITS" in the logo). Applies only when Museo is actually
 * loaded; the bundled Nunito Sans covers 300-800 on its own.
 */
body.dsb-has-museo { font-weight: 500; }

.dsb-has-museo h1,
.dsb-has-museo h2,
.dsb-has-museo h3,
.dsb-has-museo h4,
.dsb-has-museo .dsb-logo--text,
.dsb-has-museo .dsb-step__num { font-weight: 900; }

.dsb-has-museo .dsb-quote blockquote { font-weight: 700; }

/* ==========================================================================
   3. Base
   ========================================================================== */

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

html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }

@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	*, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}

body {
	margin: 0;
	background: var(--dsb-paper);
	color: var(--dsb-ink);
	font-family: var(--dsb-font);
	font-size: 18px;
	line-height: 1.65;
	-webkit-font-smoothing: antialiased;
}

img { max-width: 100%; height: auto; display: block; }

a { color: var(--dsb-green-700); }
a:hover, a:focus { color: var(--dsb-navy); }

:where(a, button, input, select, textarea, summary):focus-visible {
	outline: 3px solid var(--dsb-orange-700);
	outline-offset: 2px;
	border-radius: 4px;
}

h1, h2, h3, h4 {
	font-weight: 800;
	color: var(--dsb-navy);
	line-height: 1.15;
	margin: 0 0 .5em;
	letter-spacing: -.01em;
}

h1 { font-size: clamp(2.1rem, 1.35rem + 2.6vw, 3.25rem); }
h2 { font-size: clamp(1.7rem, 1.25rem + 1.6vw, 2.4rem); }
h3 { font-size: 1.3rem; }

p { margin: 0 0 1.1em; }
p:last-child { margin-bottom: 0; }

.dsb-wrap {
	width: 100%;
	max-width: var(--dsb-wrap);
	margin-inline: auto;
	padding-inline: var(--dsb-gutter);
}

.dsb-narrow { max-width: 820px; }

.dsb-section { padding-block: clamp(56px, 7vw, 92px); }
.dsb-section--tight { padding-block: clamp(40px, 5vw, 64px); }

/* Keeps a section's heading clear of the sticky header when a button jumps to it. */
.dsb-section[id] { scroll-margin-top: 40px; }

.dsb-eyebrow {
	display: inline-block;
	font-size: .8rem;
	font-weight: 700;
	letter-spacing: .18em;
	text-transform: uppercase;
	color: var(--dsb-green-700);
	margin: 0 0 .9rem;
}

.dsb-lede { font-size: 1.15rem; color: var(--dsb-muted); }

.dsb-skip-link {
	position: absolute;
	left: -9999px;
	top: 0;
	z-index: 100;
	background: var(--dsb-navy);
	color: #fff;
	padding: 12px 20px;
	border-radius: 0 0 var(--dsb-radius-sm) 0;
}

.dsb-skip-link:focus {
	left: 0;
	color: #fff;
}

/* ==========================================================================
   4. Buttons
   ========================================================================== */

.dsb-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: .55em;
	min-height: 56px;
	padding: 14px 30px;
	border: 2px solid transparent;
	border-radius: 999px;
	font: inherit;
	font-weight: 700;
	font-size: 1.05rem;
	line-height: 1.2;
	text-align: center;
	text-decoration: none;
	cursor: pointer;
	transition: background-color .18s ease, color .18s ease, border-color .18s ease, transform .18s ease;
}

.dsb-btn:hover { transform: translateY(-1px); }
.dsb-btn:active { transform: translateY(0); }

.dsb-btn--primary {
	background: var(--dsb-orange);
	border-color: var(--dsb-orange);
	color: var(--dsb-navy);
}

.dsb-btn--primary:hover, .dsb-btn--primary:focus {
	background: #E9973F;
	border-color: #E9973F;
	color: var(--dsb-navy);
}

.dsb-btn--secondary {
	background: transparent;
	border-color: var(--dsb-navy);
	color: var(--dsb-navy);
}

.dsb-btn--secondary:hover, .dsb-btn--secondary:focus {
	background: var(--dsb-navy);
	color: #fff;
}

.dsb-btn--ghost-light {
	background: transparent;
	border-color: rgba(255, 255, 255, .55);
	color: #fff;
}

.dsb-btn--ghost-light:hover, .dsb-btn--ghost-light:focus {
	background: #fff;
	border-color: #fff;
	color: var(--dsb-navy);
}

.dsb-btn--green {
	background: var(--dsb-green-700);
	border-color: var(--dsb-green-700);
	color: #fff;
}

.dsb-btn--green:hover, .dsb-btn--green:focus {
	background: #25604A;
	border-color: #25604A;
	color: #fff;
}

.dsb-btn--block { width: 100%; }

.dsb-btn-row {
	display: flex;
	flex-wrap: wrap;
	gap: 14px;
	margin-top: 28px;
}

/* ==========================================================================
   5. Header
   ========================================================================== */

.dsb-header {
	position: sticky;
	top: 0;
	z-index: 50;
	background: rgba(251, 248, 244, .95);
	backdrop-filter: saturate(150%) blur(8px);
	border-bottom: 1px solid transparent;
	transition: border-color .2s ease, box-shadow .2s ease;
}

.dsb-header.is-stuck {
	border-bottom-color: var(--dsb-line);
	box-shadow: 0 6px 20px rgba(15, 42, 67, .06);
}

.dsb-header__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 20px;
	padding-block: 14px;
}

.dsb-logo { display: inline-block; line-height: 0; }
.dsb-logo img { width: auto; height: clamp(46px, 6vw, 62px); }

.dsb-logo--text {
	line-height: 1.1;
	text-decoration: none;
	color: var(--dsb-navy);
	font-weight: 800;
	font-size: 1.25rem;
}

.dsb-header__actions {
	display: flex;
	align-items: center;
	gap: 10px;
}

.dsb-header__phone {
	display: inline-flex;
	align-items: center;
	gap: .5em;
	font-weight: 700;
	color: var(--dsb-navy);
	text-decoration: none;
	white-space: nowrap;
	padding: 8px 4px;
}

.dsb-header__phone:hover, .dsb-header__phone:focus { color: var(--dsb-green-700); }
.dsb-header__phone svg { flex: none; }

.dsb-header .dsb-btn {
	white-space: nowrap;
	min-height: 48px;
	padding: 10px 22px;
	font-size: .98rem;
}

@media (max-width: 680px) {
	.dsb-header__phone span { display: none; }
	.dsb-header__phone { padding: 12px; }
}

@media (max-width: 560px) {
	.dsb-logo img { height: 38px; }
	.dsb-header__inner { gap: 10px; padding-block: 10px; }
	.dsb-header .dsb-btn { min-height: 44px; padding: 9px 15px; font-size: .9rem; }
}

/* ==========================================================================
   6. Hero
   ========================================================================== */

.dsb-hero {
	position: relative;
	overflow: hidden;
	background: var(--dsb-navy);
	color: #fff;
	padding-block: clamp(56px, 7vw, 104px);
}

.dsb-hero::after {
	content: "";
	position: absolute;
	inset: 0;
	background-image: var(--dsb-hero-pattern, none);
	background-size: 780px;
	background-position: right -170px top -120px;
	background-repeat: no-repeat;
	opacity: .1;
	pointer-events: none;
	/* Fades the tile's own edges so it reads as texture, not a pasted square. */
	-webkit-mask-image: radial-gradient(75% 95% at 100% 0%, #000 15%, transparent 70%);
	mask-image: radial-gradient(75% 95% at 100% 0%, #000 15%, transparent 70%);
}

.dsb-hero__inner { position: relative; z-index: 1; }

.dsb-hero__grid {
	display: grid;
	gap: clamp(32px, 5vw, 64px);
	align-items: center;
}

@media (min-width: 900px) {
	.dsb-hero__grid { grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr); }
}

@media (min-width: 1180px) {
	.dsb-hero__grid { gap: 80px; }
}

@media (min-width: 900px) {
	.dsb-hero--no-media .dsb-hero__grid {
		grid-template-columns: minmax(0, 1fr);
		max-width: 880px;
	}
}

.dsb-hero h1 { color: #fff; margin-bottom: .55em; }

.dsb-hero__badge {
	display: inline-flex;
	align-items: flex-start;
	gap: .6em;
	background: rgba(242, 166, 89, .14);
	border: 1px solid rgba(242, 166, 89, .5);
	color: var(--dsb-orange);
	font-size: .92rem;
	font-weight: 700;
	letter-spacing: .04em;
	padding: 8px 18px;
	border-radius: 999px;
	margin-bottom: 26px;
}

.dsb-hero__badge::before {
	content: "";
	margin-top: .5em;
	width: 9px;
	height: 9px;
	background: var(--dsb-orange);
	border-radius: 2px;
	flex: none;
}

.dsb-hero__text {
	font-size: 1.18rem;
	max-width: 58ch;
	color: rgba(255, 255, 255, .87);
}

.dsb-hero__slogan {
	margin: -.15em 0 .9em;
	color: var(--dsb-orange);
	font-size: clamp(1.2rem, 1rem + .6vw, 1.45rem);
	font-weight: 700;
	letter-spacing: .01em;
}

.dsb-hero__note {
	margin-top: 26px;
	font-size: .97rem;
	color: rgba(255, 255, 255, .7);
}

.dsb-hero__media { display: flex; justify-content: center; }

/*
 * Photos sit in a frame with an offset square outline behind them — the same
 * two-squares idea as the maze mark in the logo.
 */
.dsb-figure {
	position: relative;
	margin: 0;
	width: 100%;
	max-width: 560px;
}

.dsb-figure::before {
	content: "";
	position: absolute;
	inset: 26px -26px -26px 26px;
	border: 3px solid var(--dsb-orange);
	border-radius: var(--dsb-radius);
	pointer-events: none;
}

.dsb-figure img {
	position: relative;
	z-index: 1;
	width: 100%;
	height: auto;
	border-radius: var(--dsb-radius);
	box-shadow: var(--dsb-shadow-lg);
}

.dsb-figure--hero {
	max-width: 470px;
}

.dsb-figure--family {
	max-width: 620px;
}

.dsb-figure--family::before {
	border-color: var(--dsb-green);
}

@media (max-width: 720px) {
	.dsb-figure::before { inset: 16px -16px -16px 16px; }
}

.dsb-hero__card {
	background: rgba(255, 255, 255, .06);
	border: 1px solid rgba(255, 255, 255, .16);
	border-radius: var(--dsb-radius);
	padding: 30px;
	width: 100%;
}

.dsb-hero__card h2 {
	color: #fff;
	font-size: 1.2rem;
	margin-bottom: .8em;
}

.dsb-hero__list { list-style: none; margin: 0; padding: 0; }

.dsb-hero__list li {
	position: relative;
	padding-left: 30px;
	margin-bottom: 14px;
	color: rgba(255, 255, 255, .88);
	font-size: 1.02rem;
}

.dsb-hero__list li:last-child { margin-bottom: 0; }

.dsb-hero__list li::before {
	content: "";
	position: absolute;
	left: 0;
	top: .5em;
	width: 12px;
	height: 12px;
	border: 2px solid var(--dsb-green);
	background: var(--dsb-orange);
	border-radius: 2px;
}

/* ==========================================================================
   7. Pillars
   ========================================================================== */

.dsb-pillars { background: var(--dsb-white); }

.dsb-grid {
	display: grid;
	gap: 22px;
	grid-template-columns: 1fr;
	margin-top: 44px;
}

@media (min-width: 620px) {
	.dsb-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (min-width: 980px) {
	.dsb-grid { grid-template-columns: repeat(3, 1fr); }
}

@media (min-width: 1180px) {
	.dsb-grid { gap: 28px; }
	.dsb-steps__grid { gap: 28px; }
}

.dsb-card {
	background: var(--dsb-white);
	border: 1px solid var(--dsb-line);
	border-radius: var(--dsb-radius);
	padding: 30px 28px;
	box-shadow: var(--dsb-shadow);
}

.dsb-card__mark {
	width: 34px;
	height: 34px;
	border: 3px solid var(--dsb-green);
	border-radius: 4px;
	position: relative;
	margin-bottom: 18px;
}

.dsb-card__mark::after {
	content: "";
	position: absolute;
	inset: 5px;
	background: var(--dsb-orange);
	border-radius: 2px;
}

.dsb-card h3 { margin-bottom: .45em; }
.dsb-card p { color: var(--dsb-muted); font-size: 1rem; }

/* Four cards read better as 2 x 2, then a single row once there is room. */
@media (min-width: 980px) {
	.dsb-grid--4 { grid-template-columns: repeat(2, 1fr); }
}

@media (min-width: 1180px) {
	.dsb-grid--4 { grid-template-columns: repeat(4, 1fr); }
}

/* ==========================================================================
   7a. Intro and Medicare basics (licensed)
   ========================================================================== */

.dsb-intro { background: var(--dsb-paper); }

.dsb-intro__grid {
	display: grid;
	gap: clamp(36px, 5vw, 72px);
	align-items: start;
}

@media (min-width: 900px) {
	.dsb-intro__grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
}

.dsb-intro__text .dsb-lede { max-width: 58ch; }

.dsb-intro__basics {
	display: grid;
	gap: 22px;
}

/* ==========================================================================
   7b. Family band
   ========================================================================== */

.dsb-family { background: var(--dsb-paper); }

.dsb-family__grid {
	display: grid;
	gap: clamp(44px, 6vw, 88px);
	align-items: center;
}

@media (min-width: 900px) {
	.dsb-family__grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
}

.dsb-family__text .dsb-lede { max-width: 52ch; }
.dsb-family__cta { margin-top: 30px; }

.dsb-audiences {
	list-style: none;
	margin: 30px 0 0;
	padding: 0;
	display: grid;
	gap: 24px;
}

.dsb-audiences li {
	position: relative;
	padding-left: 32px;
}

.dsb-audiences li::before {
	content: "";
	position: absolute;
	left: 0;
	top: .35em;
	width: 16px;
	height: 16px;
	border: 3px solid var(--dsb-green);
	border-radius: 3px;
}

.dsb-audiences h3 {
	font-size: 1.12rem;
	margin-bottom: .3em;
}

.dsb-audiences p {
	color: var(--dsb-muted);
	font-size: 1rem;
}

/* ==========================================================================
   8. Steps
   ========================================================================== */

.dsb-steps { background: var(--dsb-green-050); }

.dsb-steps__grid {
	display: grid;
	gap: 22px;
	grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
	margin-top: 44px;
}

.dsb-step {
	background: var(--dsb-white);
	border: 1px solid rgba(57, 141, 109, .22);
	border-radius: var(--dsb-radius);
	padding: 28px 26px;
}

.dsb-step__num {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 42px;
	height: 42px;
	background: var(--dsb-navy);
	color: var(--dsb-orange);
	font-weight: 800;
	border-radius: var(--dsb-radius-sm);
	margin-bottom: 16px;
}

.dsb-step h3 { font-size: 1.15rem; }
.dsb-step p { color: var(--dsb-muted); font-size: .98rem; }

/* ==========================================================================
   9. Quote band
   ========================================================================== */

.dsb-quote {
	background: var(--dsb-navy);
	color: #fff;
	text-align: center;
}

.dsb-quote blockquote {
	margin: 0 auto;
	max-width: 60ch;
	font-size: clamp(1.25rem, 1rem + 1vw, 1.6rem);
	line-height: 1.45;
	font-weight: 600;
}

.dsb-quote cite {
	display: block;
	margin-top: 22px;
	font-size: .95rem;
	font-style: normal;
	letter-spacing: .16em;
	text-transform: uppercase;
	color: var(--dsb-orange);
}

/* ==========================================================================
   9a. Scheduling calendar
   ========================================================================== */

.dsb-schedule { background: var(--dsb-white); }

.dsb-schedule__frame {
	margin-top: 36px;
	background: var(--dsb-white);
	border: 1px solid var(--dsb-line);
	border-radius: var(--dsb-radius);
	box-shadow: var(--dsb-shadow);
	overflow: hidden;
}

/* Calendly fills this box, so its height is the calendar's height. */
.dsb-schedule__widget { height: 700px; }

.dsb-schedule__alt {
	margin-top: 18px;
	font-size: .95rem;
	color: var(--dsb-muted);
}

/* On phones the calendar runs edge to edge, so the day grid gets every pixel. */
@media (max-width: 560px) {
	.dsb-schedule__frame {
		margin-inline: calc(var(--dsb-gutter) * -1);
		border-inline: 0;
		border-radius: 0;
	}
}

/* ==========================================================================
   10. Contact + form
   ========================================================================== */

.dsb-contact { background: var(--dsb-paper); }

.dsb-contact__grid {
	display: grid;
	gap: clamp(28px, 4vw, 52px);
	align-items: start;
	margin-top: 40px;
}

@media (min-width: 900px) {
	.dsb-contact__grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1.35fr); }

	/* The form is much taller than the contact card, so let the card follow. */
	.dsb-contact__aside { position: sticky; top: 110px; }
}

.dsb-contact__aside {
	background: var(--dsb-white);
	border: 1px solid var(--dsb-line);
	border-radius: var(--dsb-radius);
	padding: 30px 28px;
	box-shadow: var(--dsb-shadow);
}

.dsb-contact__aside h3 { font-size: 1.15rem; }

.dsb-contact__list { list-style: none; margin: 0 0 24px; padding: 0; }
.dsb-contact__list li { margin-bottom: 18px; }

.dsb-contact__list a {
	display: inline-flex;
	align-items: center;
	gap: .6em;
	font-weight: 700;
	font-size: 1.08rem;
	color: var(--dsb-navy);
	text-decoration: none;
	word-break: break-word;
}

.dsb-contact__list a:hover, .dsb-contact__list a:focus { color: var(--dsb-green-700); text-decoration: underline; }
.dsb-contact__list svg { flex: none; color: var(--dsb-green); }

.dsb-contact__schedule { margin-top: 22px; }

.dsb-contact__label {
	display: block;
	font-size: .78rem;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: var(--dsb-muted);
	font-weight: 700;
	margin-bottom: 2px;
}

.dsb-form {
	background: var(--dsb-white);
	border: 1px solid var(--dsb-line);
	border-radius: var(--dsb-radius);
	padding: clamp(26px, 3.5vw, 40px);
	box-shadow: var(--dsb-shadow);
}

.dsb-form__row {
	display: grid;
	gap: 20px;
	margin-bottom: 20px;
}

@media (min-width: 620px) {
	.dsb-form__row--2 { grid-template-columns: 1fr 1fr; }
}

.dsb-field { display: flex; flex-direction: column; }

.dsb-field label,
.dsb-fieldset legend {
	font-weight: 700;
	color: var(--dsb-navy);
	margin-bottom: 8px;
	font-size: 1rem;
}

.dsb-hint {
	font-size: .9rem;
	color: var(--dsb-muted);
	font-weight: 400;
	margin-bottom: 10px;
}

.dsb-required { color: #A85F12; }

.dsb-field input[type="text"],
.dsb-field input[type="email"],
.dsb-field input[type="tel"],
.dsb-field select,
.dsb-field textarea {
	font: inherit;
	font-size: 1.05rem;
	color: var(--dsb-ink);
	background: var(--dsb-white);
	border: 2px solid var(--dsb-line);
	border-radius: var(--dsb-radius-sm);
	padding: 13px 15px;
	min-height: 54px;
	width: 100%;
	transition: border-color .15s ease, box-shadow .15s ease;
}

.dsb-field textarea { min-height: 110px; resize: vertical; }

.dsb-field input:focus,
.dsb-field select:focus,
.dsb-field textarea:focus {
	border-color: var(--dsb-green);
	box-shadow: 0 0 0 4px rgba(57, 141, 109, .14);
	outline: none;
}

.dsb-field--error input,
.dsb-field--error select,
.dsb-field--error textarea { border-color: var(--dsb-orange-700); }

.dsb-fieldset {
	border: 0;
	padding: 0;
	margin: 0 0 20px;
}

.dsb-fieldset legend { padding: 0; }

.dsb-check {
	display: flex;
	align-items: flex-start;
	gap: 12px;
	padding: 11px 0;
	cursor: pointer;
	font-size: 1.02rem;
}

.dsb-check input {
	flex: none;
	width: 24px;
	height: 24px;
	margin: 2px 0 0;
	accent-color: var(--dsb-green);
	cursor: pointer;
}

.dsb-consent {
	background: var(--dsb-green-050);
	border: 1px solid rgba(57, 141, 109, .25);
	border-radius: var(--dsb-radius-sm);
	padding: 20px 22px;
	margin-bottom: 24px;
}

.dsb-consent .dsb-check { font-size: .96rem; line-height: 1.55; padding-top: 0; }
.dsb-consent .dsb-consent__fine { font-size: .86rem; color: var(--dsb-muted); margin: 12px 0 0; }

.dsb-form__footer p { font-size: .88rem; color: var(--dsb-muted); margin-top: 16px; }

.dsb-honeypot {
	position: absolute !important;
	left: -9999px;
	opacity: 0;
	height: 0;
	overflow: hidden;
}

.dsb-notice {
	border-radius: var(--dsb-radius-sm);
	padding: 20px 24px;
	margin-bottom: 28px;
	border-left: 6px solid;
	font-size: 1.02rem;
}

.dsb-notice--success {
	background: var(--dsb-green-050);
	border-color: var(--dsb-green);
	color: #1F4E3C;
}

.dsb-notice--error {
	background: var(--dsb-orange-050);
	border-color: var(--dsb-orange-700);
	color: #7A4A11;
}

.dsb-notice strong { display: block; margin-bottom: 4px; font-size: 1.1rem; }
.dsb-notice ul { margin: 8px 0 0; padding-left: 20px; }

/* ==========================================================================
   11. Footer
   ========================================================================== */

.dsb-footer {
	background: var(--dsb-navy-900);
	color: rgba(255, 255, 255, .78);
	padding-block: clamp(44px, 5vw, 68px) 32px;
	font-size: .98rem;
}

.dsb-footer__top {
	display: grid;
	gap: 32px;
	align-items: start;
	padding-bottom: 32px;
	border-bottom: 1px solid rgba(255, 255, 255, .14);
}

@media (min-width: 780px) {
	.dsb-footer__top { grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); }
	.dsb-footer__contact { text-align: right; }
}

.dsb-footer__logo { display: inline-block; line-height: 0; }
.dsb-footer__logo img { height: 64px; width: auto; }

.dsb-footer__tagline { margin-top: 18px; max-width: 46ch; }

.dsb-footer__contact a {
	color: #fff;
	font-weight: 700;
	text-decoration: none;
	display: inline-block;
	margin-bottom: 8px;
	word-break: break-word;
}

.dsb-footer__contact a:hover, .dsb-footer__contact a:focus { color: var(--dsb-orange); text-decoration: underline; }

.dsb-footer__disclaimer {
	margin-top: 28px;
	font-size: .88rem;
	line-height: 1.6;
	color: rgba(255, 255, 255, .62);
	max-width: 80ch;
}

.dsb-footer__bottom {
	margin-top: 22px;
	display: flex;
	flex-wrap: wrap;
	gap: 8px 24px;
	justify-content: space-between;
	align-items: center;
	font-size: .86rem;
	color: rgba(255, 255, 255, .55);
}

.dsb-footer__bottom a { color: rgba(255, 255, 255, .8); }
.dsb-footer__bottom a:hover, .dsb-footer__bottom a:focus { color: var(--dsb-orange); }

/* ==========================================================================
   12. Interior pages (privacy policy, etc.)
   ========================================================================== */

.dsb-page { padding-block: clamp(48px, 6vw, 80px); }
.dsb-page__header { margin-bottom: 36px; }

.dsb-entry-content { max-width: 760px; }
.dsb-entry-content > * { margin-bottom: 1.15em; }
.dsb-entry-content h2 { margin-top: 1.6em; }
.dsb-entry-content h3 { margin-top: 1.4em; }
.dsb-entry-content ul, .dsb-entry-content ol { padding-left: 1.4em; }
.dsb-entry-content li { margin-bottom: .5em; }

.dsb-entry-content blockquote {
	margin: 1.6em 0;
	padding: 4px 0 4px 24px;
	border-left: 4px solid var(--dsb-orange);
	color: var(--dsb-muted);
}

.dsb-entry-content table { width: 100%; border-collapse: collapse; }

.dsb-entry-content th, .dsb-entry-content td {
	border: 1px solid var(--dsb-line);
	padding: 10px 14px;
	text-align: left;
}

.dsb-entry-content img { border-radius: var(--dsb-radius-sm); }

.dsb-back-link {
	display: inline-flex;
	align-items: center;
	gap: .5em;
	margin-top: 40px;
	font-weight: 700;
	text-decoration: none;
}

.dsb-back-link:hover, .dsb-back-link:focus { text-decoration: underline; }

/* WordPress core classes. */
.alignleft { float: left; margin: .3em 1.5em 1em 0; }
.alignright { float: right; margin: .3em 0 1em 1.5em; }
.aligncenter { margin-inline: auto; }
.alignwide, .alignfull { max-width: none; }
.wp-caption-text { font-size: .88rem; color: var(--dsb-muted); }

.screen-reader-text {
	position: absolute !important;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	clip-path: inset(50%);
	white-space: nowrap;
	border: 0;
}

/* ==========================================================================
   13. Print
   ========================================================================== */

@media print {
	.dsb-header, .dsb-form, .dsb-btn-row, .dsb-schedule { display: none; }
	body { background: #fff; font-size: 12pt; }
	.dsb-hero, .dsb-quote, .dsb-footer { background: #fff !important; color: #000 !important; }
	.dsb-hero h1, .dsb-hero__text, .dsb-hero__list li { color: #000 !important; }
	.dsb-hero::after { display: none; }
}
