/* Winter Angels campaign (9 Nov 2026). Home banner, dental packages card and /winter-angels/.
   THA's own look (navy, sparkles, gold, Georgia italic accent) with a winter frost layer:
   icy blue glow, frosted glass panels and gold tier badges. Data: src/data/campaign.ts. */
.wa {
	--wa-ink: #f2f7fb;
	--wa-soft: rgba(239, 245, 250, .8);
	--wa-faint: rgba(239, 245, 250, .62);
	--wa-ice: #d9eefc;
	--wa-frost: rgba(205, 232, 252, .14);
	--wa-line: rgba(214, 236, 252, .26);
	--wa-gold: #efd79e;
	--wa-gold-deep: #c7a363;
	--wa-teal: var(--teal, #087d78);
	color: var(--wa-ink);
}
.wa :is(h1, h2, h3, p) { margin: 0; }
.wa p { color: var(--wa-soft); line-height: 1.6; }

/* Wordmark: "WINTER" in tracked capitals, "Angels" in gold Georgia italic (as the Home hero accent). */
.wa-mark { display: grid; justify-items: center; gap: 0; line-height: .9; text-align: center; }
.wa-mark-winter { color: #fff; font-size: clamp(2.6rem, 8vw, 5.6rem); font-weight: 800; letter-spacing: .14em; text-shadow: 0 0 30px rgba(186, 225, 255, .55), 0 2px 0 rgba(255, 255, 255, .2); }
.wa-mark-angels { margin-top: -.08em; color: var(--wa-gold); font-family: Georgia, "Times New Roman", serif; font-size: clamp(2.4rem, 7.2vw, 5rem); font-style: italic; font-weight: 400; letter-spacing: .01em; text-shadow: 0 0 26px rgba(239, 215, 158, .45); }
.wa-mark-sm .wa-mark-winter { font-size: clamp(2rem, 4.5vw, 3.2rem); }
.wa-mark-sm .wa-mark-angels { font-size: clamp(1.9rem, 4.2vw, 3rem); }
.wa-kicker { color: var(--wa-ice); font-size: .78rem; font-weight: 750; letter-spacing: .32em; text-transform: uppercase; }

/* Frost backdrop shared by the banner and the landing hero */
.wa-frost { position: relative; isolation: isolate; overflow: hidden; border: 1px solid var(--wa-line); border-radius: 22px; background:
	radial-gradient(ellipse at 50% -20%, rgba(170, 216, 252, .38), transparent 55%),
	radial-gradient(ellipse at 0% 100%, rgba(8, 125, 120, .35), transparent 50%),
	radial-gradient(ellipse at 100% 90%, rgba(199, 163, 99, .22), transparent 45%),
	linear-gradient(160deg, #0f2a44 0%, #0a1d31 55%, #0b1b2c 100%); box-shadow: 0 30px 70px rgba(0, 0, 0, .35); }
.wa-frost::before { position: absolute; z-index: -1; inset: 0; background-image:
	radial-gradient(circle at 12% 22%, rgba(255, 255, 255, .55) 0 1.5px, transparent 2px),
	radial-gradient(circle at 78% 14%, rgba(255, 255, 255, .45) 0 1.2px, transparent 2px),
	radial-gradient(circle at 88% 62%, rgba(255, 255, 255, .5) 0 1.6px, transparent 2px),
	radial-gradient(circle at 30% 80%, rgba(255, 255, 255, .35) 0 1.2px, transparent 2px),
	radial-gradient(circle at 58% 40%, rgba(255, 255, 255, .3) 0 1px, transparent 2px),
	radial-gradient(circle at 6% 66%, rgba(255, 255, 255, .4) 0 1.3px, transparent 2px);
	background-size: 340px 260px; content: ""; animation: wa-snow 26s linear infinite; opacity: .8; }
.wa-frost::after { position: absolute; z-index: -1; top: -40%; left: 50%; width: 520px; aspect-ratio: 1; border-radius: 50%; background: radial-gradient(circle, rgba(207, 233, 252, .22), transparent 62%); transform: translateX(-50%); content: ""; }
@keyframes wa-snow { from { background-position: 0 0; } to { background-position: 40px 520px; } }


/* Date pill, buttons, fine print */
.wa-pill { display: inline-block; padding: 9px 16px; border: 1px solid rgba(239, 215, 158, .5); border-radius: 999px; color: var(--wa-gold); background: rgba(199, 163, 99, .1); font-size: .76rem; font-weight: 750; letter-spacing: .14em; text-transform: uppercase; }
.wa-actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; }
.wa-btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 52px; padding: 12px 26px; border: 1px solid transparent; border-radius: 8px; font-weight: 750; letter-spacing: .02em; text-decoration: none; transition: transform .18s ease, background-color .18s ease; }
.wa-btn > span { display: inline; }
.wa .wa-btn-primary { color: #fff; background: var(--wa-teal); box-shadow: 0 10px 26px rgba(8, 125, 120, .35); }
.wa .wa-btn-primary:hover, .wa .wa-btn-primary:focus-visible { color: #fff; background: var(--teal-deep, #056964); transform: translateY(-2px); }
.wa .wa-btn-quiet { border-color: rgba(236, 244, 250, .6); color: #eef5fa; background: rgba(255, 255, 255, .05); }
.wa .wa-btn-quiet:hover, .wa .wa-btn-quiet:focus-visible { background: rgba(255, 255, 255, .13); transform: translateY(-2px); }
.wa .wa-fine { color: var(--wa-faint); font-size: .84rem; line-height: 1.5; }
.wa .wa-fine a, .wa .wa-fine strong { color: var(--wa-ink); }

/* Home banner */
.wa-band { padding-block: 10px 70px; }
.wa-band .wa-frost { display: grid; justify-items: center; gap: 22px; padding: 46px clamp(18px, 5vw, 64px) 40px; text-align: center; }
.wa-band .wa-headline { max-width: 26ch; color: #fff; font-size: clamp(1.5rem, 3.2vw, 2.3rem); font-weight: 700; line-height: 1.2; }

/* Dental packages card */
.wa-card-section { padding-block: 8px 56px; }
.wa-card-heading { margin: 0 0 18px; color: #fff; font-size: clamp(1.7rem, 3vw, 2.4rem); text-align: center; }
.wa-card { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); overflow: hidden; border: 1px solid var(--wa-line); border-radius: 22px; background: linear-gradient(135deg, rgba(14, 38, 58, .96), rgba(10, 27, 43, .98)); box-shadow: 0 30px 70px rgba(0, 0, 0, .35); }
.wa-card-art { display: grid; place-content: center; justify-items: center; gap: 18px; min-height: 360px; padding: 34px 24px; border: 0; border-radius: 0; }
.wa-card-art img { width: 120px; height: auto; opacity: .9; filter: drop-shadow(0 0 22px rgba(170, 216, 252, .55)); }
.wa-card-body { display: grid; align-content: center; gap: 16px; padding: 38px clamp(22px, 4vw, 48px); }
.wa-card-body h2 { color: #fff; font-size: clamp(1.8rem, 3vw, 2.5rem); line-height: 1.1; }
.wa-card-body h2 em { color: var(--wa-gold); font-family: Georgia, serif; font-weight: 400; }
.wa-checks { display: grid; gap: 10px; margin: 0; padding: 0; list-style: none; }
.wa-checks li { position: relative; padding-left: 32px; color: #fff; font-weight: 650; line-height: 1.45; }
.wa-checks li::before { position: absolute; top: 1px; left: 0; display: grid; width: 22px; height: 22px; place-items: center; border-radius: 50%; color: #0b1b2c; background: var(--wa-gold); content: "✓"; font-size: .8rem; font-weight: 800; }
.wa-card-body .wa-actions { justify-content: flex-start; }
.wa-terms { border-top: 1px solid var(--wa-line); padding-top: 12px; }
.wa-terms summary { display: flex; justify-content: space-between; color: #fff; font-weight: 700; cursor: pointer; list-style: none; }
.wa-terms summary::-webkit-details-marker { display: none; }
.wa-terms summary::after { color: var(--wa-gold); content: "+"; font-size: 1.3rem; line-height: 1; }
.wa-terms[open] summary::after { content: "–"; }
.wa-terms ul { display: grid; gap: 6px; margin: 12px 0 0; padding-left: 1.1em; color: var(--wa-soft); font-size: .88rem; }

/* Landing page */
.wa-page .wa-hero { padding-block: 26px 40px; }
.wa-page .wa-hero .wa-frost { display: grid; justify-items: center; gap: 22px; padding: 54px clamp(18px, 5vw, 64px) 44px; text-align: center; }
.wa-page .wa-hero h1 { max-width: 40ch; color: #fff; font-size: clamp(1.45rem, 2.9vw, 2.2rem); font-weight: 700; line-height: 1.25; }
.wa-h1-line { display: block; text-wrap: balance; }
.wa-section { padding-block: 48px; }
.wa-section h2 { color: #fff; font-size: clamp(1.8rem, 3.2vw, 2.6rem); line-height: 1.15; }
.wa-section .wa-eyebrow { margin-bottom: 8px; color: var(--wa-gold); font-size: .75rem; font-weight: 750; letter-spacing: .18em; text-transform: uppercase; }
.wa-section > .wrap > p:not(.wa-eyebrow) { max-width: 70ch; margin-top: 12px; }
.wa-table-wrap { margin-top: 24px; overflow-x: auto; border: 1px solid var(--wa-line); border-radius: 16px; background: rgba(18, 43, 62, .82); }
.wa-table { width: 100%; min-width: 560px; border-collapse: collapse; }
.wa-table th, .wa-table td { padding: 14px 18px; border-bottom: 1px solid var(--wa-line); text-align: left; vertical-align: middle; }
.wa-table thead th { color: var(--wa-faint); font-size: .74rem; letter-spacing: .12em; text-transform: uppercase; }
.wa-table tbody tr:last-child > * { border-bottom: 0; }
.wa-table tbody th a { color: #fff; font-weight: 700; text-underline-offset: 4px; }
.wa-table .wa-was { color: var(--wa-faint); text-decoration: line-through; }
.wa-table .wa-now { color: var(--wa-gold); font-size: 1.15rem; font-weight: 800; }
.wa-table .wa-off { display: inline-block; padding: 3px 10px; border-radius: 999px; color: #0b1b2c; background: var(--wa-gold); font-size: .8rem; font-weight: 800; }
.wa-steps { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; margin: 24px 0 0; padding: 0; list-style: none; counter-reset: wa; }
.wa-steps li { padding: 22px; border: 1px solid var(--wa-line); border-radius: 14px; background: rgba(18, 43, 62, .82); counter-increment: wa; }
.wa-steps li::before { display: grid; width: 38px; height: 38px; place-items: center; margin-bottom: 12px; border: 1px solid rgba(239, 215, 158, .6); border-radius: 50%; color: var(--wa-gold); content: "0" counter(wa); font-size: .78rem; font-weight: 750; }
.wa-steps h3 { margin-bottom: 6px; color: #fff; font-size: 1.1rem; }
.wa-steps p { font-size: .92rem; }
.wa-steps a { color: #fff; }
.wa-terms-list { display: grid; gap: 8px; max-width: 80ch; margin: 18px 0 0; padding-left: 1.2em; color: var(--wa-soft); }
.wa-ended { display: none; padding: 16px 20px; border: 1px solid rgba(239, 215, 158, .55); border-radius: 12px; color: #fff; background: rgba(199, 163, 99, .14); }
.wa-is-ended .wa-ended { display: block; }
.wa-is-ended .wa-live { display: none; }

@media (max-width: 900px) {
	.wa-card { grid-template-columns: minmax(0, 1fr); }
	.wa-card-art { min-height: 0; }
	.wa-steps { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
	.wa-btn, .wa-actions { width: 100%; }
	.wa-steps { grid-template-columns: minmax(0, 1fr); }
	.wa-pill { letter-spacing: .08em; }
}
@media (prefers-reduced-motion: reduce) {
	.wa-frost::before { animation: none; }
	.wa-btn { transition: none; }
}

.visually-hidden { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* Paragraph-based labels: beat the generic ".wa p" colour. */
.wa .wa-card-heading { color: #fff; font-weight: 750; }
.wa .wa-kicker { color: var(--wa-ice); }
.wa .wa-pill { color: var(--wa-gold); }

/* Discount ladder (WinterAngelsLadder.astro, owner-approved 9 Nov 2026): tiers from campaign.ts, the top tier
   highlighted, real example prices, and the "included" strip kept apart from the discounts. */
.wa-ladder { display: grid; gap: 14px; width: min(100%, 900px); }
.wa-rungs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 44px; margin: 0; padding: 0; list-style: none; counter-reset: none; }
.wa-rung { position: relative; display: flex; }
.wa-rung:not(:last-child)::after { position: absolute; top: 50%; right: -30px; width: 14px; height: 14px; border-top: 2px solid var(--wa-gold); border-right: 2px solid var(--wa-gold); transform: translateY(-50%) rotate(45deg); content: ""; opacity: .85; }
.wa-rung-link { position: relative; display: grid; flex: 1; align-content: start; justify-items: start; gap: 8px; overflow: hidden; padding: 22px 24px 20px; border: 1px solid var(--wa-line); border-radius: 16px; color: var(--wa-ink); background: var(--wa-frost); text-align: left; text-decoration: none; backdrop-filter: blur(10px); transition: transform .2s ease, border-color .2s ease, box-shadow .2s ease; }
.wa .wa-rung-link:hover, .wa .wa-rung-link:focus-visible { color: var(--wa-ink); border-color: rgba(239, 215, 158, .75); box-shadow: 0 16px 34px rgba(0, 0, 0, .28); transform: translateY(-3px); }
.wa-rung-link:focus-visible { outline: 3px solid var(--wa-gold); outline-offset: 3px; }
.wa-rung-pct { display: flex; align-items: baseline; gap: 8px; color: #fff; font-size: 1.15rem; font-weight: 700; line-height: 1; }
.wa-rung-pct strong { color: var(--wa-gold); font-size: clamp(2.7rem, 6vw, 3.5rem); font-weight: 800; letter-spacing: -.02em; text-shadow: 0 0 22px rgba(239, 215, 158, .35); }
.wa-rung-from { padding: 5px 12px; border-radius: 999px; color: #fff; background: rgba(255, 255, 255, .1); font-size: .92rem; font-weight: 650; }
.wa-rung-eg { color: rgba(239, 245, 250, .86); font-size: .95rem; line-height: 1.45; }
.wa-rung-eg s { color: rgba(239, 245, 250, .6); }
.wa-rung-eg b { color: var(--wa-gold); font-weight: 800; }
.wa-rung-tag { position: absolute; top: 14px; right: 14px; padding: 4px 10px; border-radius: 999px; color: #0b1b2c; background: var(--wa-gold); font-size: .7rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }
.wa-rung.is-top .wa-rung-link { border: 1.5px solid rgba(239, 215, 158, .85); background: linear-gradient(150deg, rgba(199, 163, 99, .2), rgba(205, 232, 252, .08) 60%); box-shadow: 0 0 0 4px rgba(239, 215, 158, .08), 0 18px 40px rgba(199, 163, 99, .16); }
@media (prefers-reduced-motion: no-preference) {
	.wa-rung.is-top .wa-rung-link::before { position: absolute; inset: 0; background: linear-gradient(105deg, transparent 35%, rgba(255, 244, 214, .28) 50%, transparent 65%); transform: translateX(-120%); content: ""; animation: wa-sweep 1.6s ease .8s 1 forwards; pointer-events: none; }
}
@keyframes wa-sweep { to { transform: translateX(120%); } }
.wa-included { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 8px 14px; margin: 0; padding: 14px 18px; border: 1px solid rgba(217, 238, 252, .32); border-radius: 14px; color: #fff; background: rgba(217, 238, 252, .07); font-weight: 750; }
.wa .wa-included { color: #fff; }
.wa-included-item { display: inline-flex; align-items: center; gap: 8px; }
.wa-included-item svg { flex: 0 0 auto; color: var(--wa-gold); }
.wa-included-plus { color: var(--wa-gold); font-size: 1.2rem; }
.wa-included-note { color: rgba(239, 245, 250, .86); font-weight: 500; }

/* Compact (dental packages card art panel): tiers stacked, arrow pointing down */
.wa-ladder--compact { width: min(100%, 340px); }
.wa-ladder--compact .wa-rungs { grid-template-columns: minmax(0, 1fr); gap: 30px; }
.wa-ladder--compact .wa-rung:not(:last-child)::after { top: auto; right: auto; bottom: -22px; left: 50%; transform: translateX(-50%) rotate(135deg); }
.wa-ladder--compact .wa-rung-link { padding: 16px 18px; gap: 6px; }
.wa-ladder--compact .wa-rung-pct strong { font-size: 2.4rem; }
.wa-ladder--compact .wa-rung-eg { font-size: .88rem; }

@media (max-width: 640px) {
	.wa-rungs { grid-template-columns: minmax(0, 1fr); gap: 30px; }
	.wa-rung:not(:last-child)::after { top: auto; right: auto; bottom: -22px; left: 50%; transform: translateX(-50%) rotate(135deg); }
	.wa-included { flex-direction: column; gap: 6px; }
	.wa-included-plus { display: none; }
}
@media (prefers-reduced-motion: reduce) { .wa-rung-link { transition: none; } }

.wa-ladder .nowrap { white-space: nowrap; }
@media (max-width: 640px) { .wa .wa-kicker { letter-spacing: .16em; } }

/* Headlines never break words with a hyphen ("ho-tel") and wrap into balanced lines (owner, 9 Nov 2026). */
.wa h1, .wa h2, .wa .wa-headline { hyphens: manual; overflow-wrap: normal; text-wrap: balance; }
@media (max-width: 640px) { .wa-h1-line { display: inline; } }

/* Keep the wordmark tight on the landing page too (".uk p" line-height would otherwise open a gap). */
.wa .wa-mark { line-height: .9; }

/* Home campaign hero (owner, 9 Nov 2026): full width above the normal home hero while Winter Angels runs. */
.wa-home-hero { position: relative; isolation: isolate; overflow: hidden; border-bottom: 1px solid var(--wa-line); background:
	radial-gradient(ellipse at 50% -10%, rgba(170, 216, 252, .42), transparent 55%),
	radial-gradient(ellipse at 0% 100%, rgba(8, 125, 120, .38), transparent 50%),
	radial-gradient(ellipse at 100% 85%, rgba(199, 163, 99, .24), transparent 45%),
	linear-gradient(165deg, #0f2a44 0%, #0a1d31 55%, #0b1b2c 100%); }
.wa-home-hero::before { position: absolute; z-index: -1; inset: 0; background-image:
	radial-gradient(circle at 12% 22%, rgba(255, 255, 255, .55) 0 1.5px, transparent 2px),
	radial-gradient(circle at 78% 14%, rgba(255, 255, 255, .45) 0 1.2px, transparent 2px),
	radial-gradient(circle at 88% 62%, rgba(255, 255, 255, .5) 0 1.6px, transparent 2px),
	radial-gradient(circle at 30% 80%, rgba(255, 255, 255, .35) 0 1.2px, transparent 2px),
	radial-gradient(circle at 58% 40%, rgba(255, 255, 255, .3) 0 1px, transparent 2px);
	background-size: 360px 280px; content: ""; animation: wa-snow 28s linear infinite; opacity: .8; }
.wa-home-hero-inner { display: grid; justify-items: center; gap: 22px; min-height: clamp(560px, 80vh, 820px); align-content: center; padding-block: 44px 40px; text-align: center; }
.wa-mark-xl .wa-mark-winter { font-size: clamp(3.2rem, 11vw, 7.2rem); background: linear-gradient(180deg, #ffffff 0%, #f1f9ff 50%, #b9dcf6 100%); -webkit-background-clip: text; background-clip: text; color: transparent; text-shadow: none; filter: drop-shadow(0 0 26px rgba(186, 225, 255, .45)); }
.wa-mark-xl .wa-mark-angels { font-size: clamp(2.8rem, 9vw, 6rem); }
.wa-home-hero .wa-headline { max-width: none; color: #fff; font-size: clamp(1.45rem, 3vw, 2.3rem); font-weight: 700; line-height: 1.22; }
.wa-home-hero .wa-fine { max-width: 70ch; }
.wa-home-hero + .hero { padding-top: 56px; }
@media (max-width: 640px) {
	.wa-home-hero-inner { min-height: 0; padding-block: 34px 30px; gap: 18px; }
}
@media (prefers-reduced-motion: reduce) { .wa-home-hero::before { animation: none; } }

/* Home hero: keep the two sentences on their own lines on phones too. */
.wa-home-hero .wa-h1-line { display: block; }

/* Permanent offers page (/dental-offers/): the direct answer, and text shown only once the offer has ended. */
.wa-answer { padding-block: 8px 8px; }
.wa .wa-show-ended { display: none; }
.wa-is-ended .wa-show-ended { display: block; }

.wa-is-ended .wa-mark.wa-live, .wa-is-ended .wa-kicker.wa-live { display: none; }
