/* Shared public appearance, plus the Heartbeat destination. */
.hp-site-theme { flex-shrink:0;border:1px solid #ddcbed;border-radius:99px;background:#f8f3ff;color:#54267b;font-size:11px;padding:10px 12px;min-height:44px; }
.hp-site-theme:focus-visible { outline:3px solid #9861c7;outline-offset:3px; }
@media(min-width:768px) { .hp-tabbar { display:none!important; } }
html.hp-experience-dark { color-scheme:dark;--hp-color-ink:#eee6f7;--hp-color-body:#c3b6d0;--hp-color-text:#eee6f7;--hp-color-heading:#eee6f7;--hp-color-text-muted:#c3b6d0;--hp-color-ink-muted:#b9a6c9;--hp-color-link:#cc9cff;--hp-color-link-hover:#eedbff;--hp-color-border:#44334f;--hp-color-border-strong:#604571;--hp-color-surface:#21162c;--hp-color-surface-muted:#191120;--hp-color-canvas:#100b17; }
.hp-experience-dark body { background:#100b17;color:#eee6f7; }
.hp-experience-dark :is(.hp-nav,.hp-tabbar) { background:#171020;border-color:#463153;color:#eee6f7; }
.hp-experience-dark .hp-nav a,.hp-experience-dark .hp-tabbar a { color:#eee6f7; }
.hp-experience-dark .hp-nav__logo { background:#fff;border-radius:12px;padding:6px 10px; }
.hp-experience-dark .hp-site-theme { background:#2c1d39;color:#ecdafa;border-color:#68477f; }
.hp-experience-dark :is(.hp-c-card,.hp-c-panel,.hp-card,.hp-surface,.hp-directory-card,.hp-dashboard-card,.hp-help-card,.hp-tools-card) { background:#20162b;border-color:#493255;color:#eee6f7; }
.hp-experience-dark :is(input,select,textarea) { background:#22172e;color:#efe5fa;border-color:#654975; }
.hp-experience-dark :is(.site-footer,.hp-footer) { background:#160e20;color:#cdbddc; }

/* Accent TEXT that sits directly on the dark canvas.

   --hp-color-primary-600 is the brand purple itself (#7c3aed). It is correct
   as a button or badge BACKGROUND carrying white text, which is why it is
   deliberately not flipped -- but used as a LABEL on a transparent control it
   lands on the dark page, measured at 2.9:1 against the 4.5:1 body text needs.
   It takes the link token, which already has a dark value for exactly this
   role. `.hp-c-btn--secondary` needs nothing here: it is already covered by
   the dark rule above it. */
.hp-experience-dark .hp-heartbeat-insight__link { color:var(--hp-color-link); }

/*
 * The Local insight card was unreadable in dark mode, and the cause is worth
 * naming because it is easy to repeat.
 *
 * The dark rule below sets `background-color` on a group of Heartbeat cards.
 * Every other card in that group paints a FLAT colour (`background: #fff`),
 * so overriding background-color is enough. This one paints a gradient
 * (`background: linear-gradient(110deg,#fff,#f8f3ff)`) through the shorthand,
 * which also sets background-IMAGE -- and a background-image paints on top of
 * background-color. So the card kept its white gradient in dark mode while
 * `.hp-experience-dark .hp-heartbeat :is(...,strong,b)` turned its headline
 * near-white: near-white text on a white card.
 *
 * Killing the image is therefore the actual fix, not a colour tweak. The text
 * colours below are then set explicitly rather than inherited, so the card
 * cannot be half-converted again. Contrast on #251831: headline ~14:1,
 * eyebrow ~7:1, supporting copy ~6:1 -- all clear of 4.5:1 body text.
 */
.hp-experience-dark .hp-heartbeat-insight {
	background-image: none;
	background-color: #251831;
	border-color: #58386c;
	box-shadow: 0 16px 42px rgba(0, 0, 0, .34);
}
.hp-experience-dark .hp-heartbeat-insight:hover,
.hp-experience-dark .hp-heartbeat-insight:focus-visible {
	border-color: #7f57a0;
	box-shadow: 0 20px 52px rgba(0, 0, 0, .46);
}
.hp-experience-dark .hp-heartbeat-insight__icon { background:#3a2450; color:#d9c2f2; }
.hp-experience-dark .hp-heartbeat-insight__body small { color:#c9a7ea; }
.hp-experience-dark .hp-heartbeat-insight__body strong { color:#f3e9fc; }
.hp-experience-dark .hp-heartbeat-insight__body em { color:#bda8cf; }
.hp-home .hp-home-feature { border:1px solid #ddcaec;border-radius:28px;padding:clamp(24px,4vw,44px);background:radial-gradient(ellipse at 5% 0%,#d5b5f640,transparent 60%),#faf7ff; }
.hp-home .hp-home-feature__routes { display:grid;gap:14px; }
.hp-home .hp-home-feature__routes>a { position:relative;display:grid;grid-template-columns:auto 1fr auto;gap:9px 16px;padding:22px;border:1px solid #ddcaec;border-radius:20px;background:radial-gradient(180px circle at var(--hp-pointer-x,50%) var(--hp-pointer-y,0%),#bd94e938,transparent),#fff;transition:transform .2s,border-color .2s,box-shadow .2s; }
.hp-home .hp-home-feature__routes>a small { grid-column:2;line-height:1.5;color:#695677;font-size:13px; }
.hp-home .hp-home-feature__routes>a:is(:hover,:focus-visible) { transform:translateY(-3px);border-color:#aa7acd;box-shadow:0 14px 35px #76439e18; }
.hp-home .hp-home-panel--cta { position:relative;overflow:hidden;padding:clamp(24px,4vw,42px);border:1px solid #825ba1;border-radius:28px;background:radial-gradient(400px circle at var(--hp-pointer-x,80%) var(--hp-pointer-y,0%),#9a5cce55,transparent),linear-gradient(125deg,#20102f,#432459);box-shadow:0 18px 50px #42215b18; }
.hp-home .hp-home-panel--cta h2 { font-size:clamp(27px,3vw,38px);letter-spacing:-.04em; }
.hp-home .hp-home-panel--cta p { max-width:620px;color:#dccbe8;font-size:15px;line-height:1.6; }
.hp-experience-dark .hp-home .hp-home-feature { background:radial-gradient(ellipse at 0 0,#64408040,transparent 60%),#191120;border-color:#50365f; }
.hp-experience-dark .hp-home .hp-home-feature__routes>a { background-color:#241830;border-color:#533761;color:#eee3f7; }
.hp-experience-dark .hp-home .hp-home-feature__routes>a small { color:#cbb6da; }
/* Smaller orbital field, balanced around the real subject nodes. */
.hp-heartbeat { background:#faf8fe; }
.hp-heartbeat__hero { background:radial-gradient(ellipse at 50% 60%,#c8a6ed50,transparent 55%),linear-gradient(180deg,#fff,#faf8fe); }
.hp-heartbeat__intro { max-width:660px;margin-inline:auto; }
.hp-heartbeat-trust { font-size:11px; }
.hp-heartbeat-radar { max-width:1080px;min-height:440px;margin-bottom:14px; }
.hp-heartbeat-node { border-radius:20px;border:1px solid #dfcfee;background:radial-gradient(180px circle at var(--hp-pointer-x,50%) var(--hp-pointer-y,0%),#cba7f030,transparent),#ffffffec;box-shadow:0 12px 35px #603c9010; }
.hp-pulse-shortcuts { position:absolute;inset:40% 0 auto;display:flex;justify-content:space-between;pointer-events:none; }
.hp-pulse-shortcuts a { pointer-events:auto;width:235px;padding:16px 18px;text-align:left;border:1px solid #dbc5ee;border-radius:18px;background:#fff9;backdrop-filter:blur(12px);color:#522b71; }
.hp-pulse-shortcuts small { display:block;font-size:9px;letter-spacing:.1em;color:#82549e; }
.hp-pulse-shortcuts strong { display:block;font-size:18px;letter-spacing:-.03em;margin-block:7px; }
.hp-pulse-shortcuts span { font-size:11px; }
.hp-pulse-shortcuts a:is(:hover,:focus-visible) { border-color:#a576cc;box-shadow:0 8px 28px #7e45ac20; }
.hp-heartbeat__section { padding-block:30px; }
.hp-heartbeat-feed { display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px; }
.hp-heartbeat-feed__item { position:relative;overflow:hidden;padding:22px;border:1px solid #dfcdeb;border-radius:22px;background:radial-gradient(200px circle at var(--hp-pointer-x,50%) var(--hp-pointer-y,0%),#c79feb26,transparent),#fff;box-shadow:0 9px 28px #5d397510;transition:transform .2s,box-shadow .2s,border-color .2s; }
.hp-heartbeat-feed__item[hidden] { display:none!important; }
.hp-heartbeat-feed__item:is(:hover,:focus-within) { transform:translateY(-3px);border-color:#af82ce;box-shadow:0 16px 35px #6f409b18; }
.hp-heartbeat-feed__item h3 { font-size:20px;letter-spacing:-.025em;line-height:1.3; }
.hp-heartbeat-feed__item>p { font-size:14px;line-height:1.6; }
.hp-heartbeat-feed__item>small { font-size:11px;line-height:1.5;display:block;border-top:1px solid #e9dfef;padding-top:12px; }
.hp-pulse-art { display:block;margin:-22px -22px 18px;height:185px;background:#f0e9f7; }
.hp-pulse-art img { width:100%;height:100%;object-fit:contain; }
.hp-pulse-filters { display:flex;flex-wrap:wrap;align-items:center;gap:9px;margin:0 0 22px; }
.hp-pulse-filters input { flex:1 1 260px;min-width:0;border-radius:14px;padding:13px 16px;border:1px solid #dac6e9; }
.hp-pulse-filters button { min-height:44px;border:1px solid #dcc6ed;border-radius:99px;padding:10px 16px;background:#fff;color:#633382;font-size:12px; }
.hp-pulse-filters button[aria-pressed=true] { color:#fff;background:#7140a0;border-color:#7140a0; }
.hp-pulse-filters output { flex-basis:100%;font-size:12px;color:#7b648a; }
.hp-experience-dark .hp-heartbeat { background:#100b17; }
.hp-experience-dark .hp-heartbeat__hero { background:radial-gradient(ellipse at 50% 55%,#7546a544,transparent 60%),linear-gradient(180deg,#171020,#100b17); }
.hp-experience-dark .hp-heartbeat__hero-fade { background:linear-gradient(transparent,#100b17); }
.hp-experience-dark :is(.hp-heartbeat-node,.hp-heartbeat-ambient__chip,.hp-heartbeat-trust li,.hp-heartbeat-radar__signal-state,.hp-heartbeat-radar__heart-panel,.hp-pulse-shortcuts a,.hp-heartbeat-feed__item,.hp-heartbeat-insight) { background-color:#251831;color:#ece0f6;border-color:#58386c; }
.hp-experience-dark .hp-heartbeat :is(h1,h2,h3,h3 a,strong,b) { color:#efe3fa; }
/*
 * HP-CLAUDE-057 (owner refinement A, 2026-09-14): the Heartbeat insight/status
 * panel in dark mode.
 *
 * The generic dark rule above recolours the panel's own box, but every CHILD
 * kept its light-mode colour, and the cascade then flattened them: the
 * .hp-heartbeat .hp-heartbeat-radar__heart-panel-* rules are 0-1-0, while
 * `.hp-experience-dark .hp-heartbeat :is(p,small,em)` is 0-2-1, so the eyebrow,
 * the location and the helper text all collapsed to one muted lavender and the
 * card lost its hierarchy. The call-to-action is an <a>, so it matched neither
 * and kept a near-white #f1eaff pill -- the pale patch that reads as glare on a
 * dark card.
 *
 * Fixed by restoring the hierarchy rather than redesigning the component. The
 * selectors below are 0-3-0 so they genuinely beat the flattening rule, the
 * treatment stays translucent and soft rather than becoming a white box, and
 * NOTHING here is outside `.hp-experience-dark`, so light mode is untouched.
 *
 * Measured contrast against the panel's own lightest point (#3a264e):
 *   status/eyebrow #f4ecff  11.7:1      location #d9bff5  8.1:1
 *   helper #c3aed6           6.6:1      CTA text on its pill  7.5:1
 *   border ring                        3.2:1 (meets the 3:1 UI-boundary target)
 * All comfortably past WCAG AA, none of it harsh.
 */
.hp-experience-dark .hp-heartbeat .hp-heartbeat-radar__heart-panel {
	background-image: linear-gradient(160deg, rgba(58,38,78,.96), rgba(37,24,49,.96));
	border-color: rgba(198,160,245,.6);
	box-shadow: 0 18px 44px rgba(10,4,20,.5), inset 0 1px 0 rgba(255,255,255,.06);
}
.hp-experience-dark .hp-heartbeat .hp-heartbeat-radar__heart-panel-status { color: #f4ecff; }
.hp-experience-dark .hp-heartbeat .hp-heartbeat-radar__heart-panel-status i {
	background: #35e07f;
	box-shadow: 0 0 0 4px rgba(53,224,127,.26);
}
.hp-experience-dark .hp-heartbeat .hp-heartbeat-radar__heart-panel-location { color: #d9bff5; }
.hp-experience-dark .hp-heartbeat .hp-heartbeat-radar__heart-panel-latest-label { color: #c9a9ee; }
.hp-experience-dark .hp-heartbeat .hp-heartbeat-radar__heart-panel-detail { color: #c3aed6; }
.hp-experience-dark .hp-heartbeat .hp-heartbeat-radar__heart-panel-link {
	background: rgba(167,117,240,.2);
	border: 1px solid rgba(198,160,245,.45);
	color: #e9d8ff;
}
.hp-experience-dark .hp-heartbeat .hp-heartbeat-radar__heart-panel-link:is(:hover,:focus-visible) {
	background: rgba(167,117,240,.32);
	color: #f6ecff;
}

.hp-experience-dark .hp-heartbeat :is(p,small,em) { color:#c6b3d5; }
.hp-experience-dark .hp-heartbeat-radar__heart { background:#2d1b3e;border-color:#77509b; }
.hp-experience-dark .hp-heartbeat__section--map { background:#181020; }
.hp-experience-dark .hp-pulse-art { background:#1a1024; }
.hp-experience-dark .hp-pulse-filters button { background:#291a37;color:#e9d9f5;border-color:#68447f; }
.hp-experience-dark .hp-pulse-filters button[aria-pressed=true] { background:#7946a6;color:white; }
@media(max-width:1000px) { .hp-heartbeat-feed { grid-template-columns:repeat(2,minmax(0,1fr)); }.hp-pulse-shortcuts a { width:205px;padding:14px; } }
@media(max-width:700px) {
 .hp-heartbeat-feed { grid-template-columns:minmax(0,1fr); }
 .hp-pulse-shortcuts { position:static;grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:12px;width:100%;margin-top:18px; }
 .hp-pulse-shortcuts a { width:auto;padding:16px; }.hp-pulse-shortcuts strong { font-size:16px; }
 .hp-site-theme { margin-left:auto;font-size:10px;padding:8px; }
 .hp-heartbeat-radar { min-height:0; }
 .hp-home .hp-home-feature__routes>a { padding:18px; }
}
@media(prefers-reduced-motion:reduce) { .hp-heartbeat-feed__item,.hp-home .hp-home-feature__routes>a { transition:none;transform:none!important; } }
.hp-site-theme { width:44px;padding:8px;font-size:20px; }
.hp-nav__inner { gap:12px; }
.hp-pulse-shortcuts--below { position:relative;inset:auto;grid-column:1/-1;margin-top:24px;width:100%; }
.hp-experience-dark .hp-heartbeat__hero::before,.hp-experience-dark .hp-heartbeat__hero::after { background:#713bb518; }
.hp-experience-dark .hp-heartbeat-radar__heart>span:last-child { color:#d5b4ef; }
@media(min-width:1025px) and (max-width:1350px) { .hp-nav__primary ul { gap:12px; }.hp-nav__primary a { font-size:12px; }.hp-nav__logo { max-width:160px; }.hp-nav input { max-width:110px; } }
.hp-heartbeat-feed__item>p:first-of-type { display:flex;align-items:center;gap:9px;font-size:12px; }
.hp-heartbeat-feed__item>p:first-of-type>span { padding:4px 9px;border-radius:99px;background:#eee2f7;color:#67398a;font-weight:650; }
.hp-experience-dark .hp-heartbeat-feed__item>p:first-of-type>span { background:#3b2450;color:#dfbcf7; }
.hp-experience-dark :is(.hp-heartbeat__section-heading>a,.hp-c-btn--secondary,.hp-page-masthead__eyebrow,.hp-free-tools__tile-cta,.hp-free-tools__tile-eyebrow,.hp-free-tools__eyebrow,.hp-gateway-card__price) { color:#d7aff5; }
.hp-experience-dark :is(.hp-page-masthead,.hp-utility-masthead) { background:radial-gradient(ellipse at 70% 0%,#69418936,transparent 65%),#171020; }
.hp-experience-dark :is(.hp-content-surface,.hp-content-surface__body,.hp-contact-page,.hp-directory-archive-full,.directorist-container-fluid) { background:#100b17;color:#e8dbf4; }
.hp-experience-dark :is(.hp-free-tools__tile,.hp-free-tools__tool,.hp-context-gate,.hp-gateway-card,.hp-directory-search-shell,.hp-directory-quick-search,.directorist-listing-single,.directorist-listing-single__content,.directorist-listing-single__info,.directorist-listing-single__meta) { background:#21162c;color:#e8dbf4;border-color:#50365f; }
.hp-experience-dark .hp-compact-filters__row { background:#2a1b39; }
.hp-experience-dark :is(.hp-directory-quick-search label,.directorist-listing-title a,.directorist-listing-single a,.directorist-listing-single p,.directorist-listing-single li,.hp-directory-contact__label) { color:#dbc5ee; }
.hp-experience-dark .hp-directory-quick-search :is(input,select) { background:#1a1024;color:#eee2f8;border-color:#694880; }
.hp-experience-dark input::placeholder,.hp-experience-dark textarea::placeholder { color:#b4a1c4;opacity:1; }
@media(min-width:701px) { .hp-heartbeat-node { width:235px;max-width:25%; }.hp-pulse-shortcuts a { width:235px;max-width:25%; } }
@media print { .hp-site-theme { display:none; } }

/* Keep Heartbeat status surfaces and interaction states readable in dark mode. */
.hp-experience-dark .hp-heartbeat__empty,
.hp-experience-dark .hp-heartbeat .hp-local-map__status,
.hp-experience-dark .hp-heartbeat .hp-local-map__facts>*,
.hp-experience-dark .hp-heartbeat-radar__status,
.hp-experience-dark .hp-heartbeat-radar__location { background:#251831;color:#ece0f6;border-color:#58386c; }
.hp-experience-dark .hp-heartbeat-node:is(:hover,:focus-visible) { background:linear-gradient(145deg,#30203f,#251831); }
.hp-experience-dark .hp-pulse-filters output { color:#c6b3d5; }
.hp-heartbeat :is(a,button,input,summary):focus-visible { outline:3px solid #8650b5;outline-offset:3px; }
.hp-experience-dark .hp-heartbeat :is(a,button,input,summary):focus-visible { outline-color:#d7aff5; }

/* Reserve a separate row for shortcuts when all six orbital slots are used. */
@media(min-width:761px) {
 .hp-heartbeat-radar:has(.hp-pulse-shortcuts--below) { margin-bottom:180px; }
 .hp-pulse-shortcuts--below { position:absolute;top:100%;left:0;right:0; }
}
@media(min-width:761px) and (max-width:1000px) {
 .hp-heartbeat-node--three { left:0; }
 .hp-heartbeat-node--four { right:0; }
 .hp-heartbeat-radar__location { max-width:calc(100% - 400px);flex-wrap:wrap;justify-content:center;text-align:center; }
}

/* Heartbeat signature composition: one honest snapshot, with room to breathe. */
.hp-heartbeat { --pulse-surface:#fff;--pulse-ink:#2c1748;--pulse-muted:#72617f;--pulse-line:#dfd3ec;--pulse-wash:#f4edf9; }
.hp-experience-dark .hp-heartbeat { --pulse-surface:#21162f;--pulse-ink:#f0e7fb;--pulse-muted:#c1aecf;--pulse-line:#503763;--pulse-wash:#1a1026; }
.hp-heartbeat .hp-heartbeat__hero { padding:42px 0 28px;background:radial-gradient(ellipse at 50% 46%,#ab79dd25,transparent 58%),var(--pulse-wash); }
.hp-heartbeat .hp-heartbeat__hero::before,.hp-heartbeat .hp-heartbeat__hero::after,.hp-heartbeat .hp-heartbeat__hero-fade { display:none; }
.hp-heartbeat h1 { font-size:clamp(48px,6vw,78px);letter-spacing:-.065em;line-height:1.05;margin:12px 0; }
.hp-heartbeat .hp-heartbeat__tagline { font-size:clamp(18px,2vw,24px);font-weight:500;color:var(--pulse-muted); }
.hp-heartbeat .hp-heartbeat__intro { max-width:550px;font-size:14px;line-height:1.65;margin:16px auto; }
.hp-heartbeat .hp-heartbeat-trust { display:none; }
.hp-heartbeat .hp-heartbeat-ambient { margin:22px auto 28px; }
.hp-heartbeat .hp-heartbeat-ambient__chip { background:var(--pulse-surface);box-shadow:none;border-color:var(--pulse-line);border-radius:14px; }
.hp-heartbeat .hp-heartbeat-radar { display:grid;grid-template-columns:minmax(0,1fr) 300px minmax(0,1fr);grid-template-rows:auto repeat(3,minmax(96px,auto)) auto auto;gap:16px 46px;width:100%;max-width:1080px;min-height:0;margin:0 auto;padding:24px 0 0;place-items:stretch; }
.hp-heartbeat .hp-heartbeat-radar__grid { inset:65px 0 150px;opacity:.3;mask-image:radial-gradient(ellipse,#000,transparent 70%); }
.hp-heartbeat .hp-heartbeat-radar__rings { width:300px;height:300px;inset:auto;align-self:center;justify-self:center;grid-column:2;grid-row:2/5;box-shadow:0 0 0 20px #9460c508,0 0 0 42px #9460c505;animation:none; }
.hp-heartbeat .hp-heartbeat-radar__status { display:contents;background:none; }
.hp-heartbeat .hp-heartbeat-radar__signal-state { position:static;grid-column:1/-1;grid-row:1;justify-self:center;margin:0 0 8px;background:transparent;box-shadow:none;border:0;color:var(--pulse-muted); }
.hp-heartbeat .hp-heartbeat-radar__location { position:static;grid-column:2;grid-row:5;max-width:none;justify-content:center;align-self:center;flex-wrap:wrap;text-align:center;padding:8px;background:none;box-shadow:none;border:0;color:var(--pulse-ink); }
.hp-heartbeat .hp-heartbeat-radar__location small { font-size:11px; }
.hp-heartbeat .hp-heartbeat-radar__heart { position:relative;grid-column:2;grid-row:2/5;align-self:center;justify-self:center;width:230px;height:250px;display:flex;flex-direction:column;justify-content:center;gap:26px;border-radius:46% 46% 44% 44%;border:1px solid #bb9ed980;background:radial-gradient(ellipse at 30% 12%,#ffffffb0,transparent 48%),linear-gradient(145deg,#f8f0ff,#ddc6f1);box-shadow:inset 0 2px 3px #fff, inset 0 -12px 28px #9a60c535,0 26px 55px #7840a425,0 0 65px #a463dc20;animation:none;transform:perspective(700px) rotateX(var(--pulse-tilt-x,0deg)) rotateY(var(--pulse-tilt-y,0deg));transition:transform .3s,box-shadow .3s; }
.hp-experience-dark .hp-heartbeat .hp-heartbeat-radar__heart { background:radial-gradient(ellipse at 30% 5%,#a176ce70,transparent 55%),linear-gradient(145deg,#382046,#180d28);box-shadow:inset 0 2px 2px #e9ceff55,inset 0 -14px 30px #09021080,0 30px 65px #0005,0 0 60px #ac62e222; }
.hp-heartbeat .hp-heartbeat-radar__heart img { width:122px;height:122px;object-fit:contain;filter:drop-shadow(0 15px 10px #52238555);animation:hp-pulse-breathe 5s ease-in-out infinite;z-index:1; }
.hp-heartbeat .hp-heartbeat-radar__heart>span:last-child { font-size:11px;letter-spacing:.11em;color:var(--pulse-ink);z-index:1; }
.hp-heartbeat .hp-heartbeat-radar__halo { inset:12px;border-radius:44%;opacity:.5; }
.hp-heartbeat .hp-heartbeat-radar__heart:is(:hover,:focus-visible) { box-shadow:0 0 0 6px #a378ce22,0 26px 65px #70419940; }
.hp-pulse-ecg { position:absolute;left:-25px;right:-25px;bottom:40px;width:280px;height:80px;overflow:visible;pointer-events:none; }
.hp-pulse-ecg path { fill:none;stroke:#168e68;stroke-width:2;stroke-linecap:round; }
.hp-pulse-ecg__track { opacity:.16; }
.hp-pulse-ecg .hp-pulse-ecg__trace { stroke:#19b887;stroke-dasharray:65 370;animation:hp-pulse-travel 5s linear infinite;filter:drop-shadow(0 0 3px #20aa8260); }
@keyframes hp-pulse-breathe { 50% { transform:translateY(-4px) scale(1.025); } }
@keyframes hp-pulse-travel { from { stroke-dashoffset:435; } to { stroke-dashoffset:0; } }
.hp-heartbeat .hp-heartbeat-radar .hp-heartbeat-node { position:relative;inset:auto;grid-area:auto;width:100%;max-width:none;min-width:0;padding:18px;display:grid;grid-template-columns:38px minmax(0,1fr);gap:8px 12px;align-content:center;align-self:stretch;text-align:left;border-radius:18px;background:var(--pulse-surface);border-color:var(--pulse-line);box-shadow:0 6px 22px #4a235509;transform:none; }
.hp-heartbeat .hp-heartbeat-radar .hp-heartbeat-node--one { grid-column:1;grid-row:2; }
.hp-heartbeat .hp-heartbeat-radar .hp-heartbeat-node--two { grid-column:3;grid-row:2; }
.hp-heartbeat .hp-heartbeat-radar .hp-heartbeat-node--three { grid-column:1;grid-row:3; }
.hp-heartbeat .hp-heartbeat-radar .hp-heartbeat-node--four { grid-column:3;grid-row:3; }
.hp-heartbeat .hp-heartbeat-radar .hp-heartbeat-node--five { grid-column:1;grid-row:4; }
.hp-heartbeat .hp-heartbeat-radar .hp-heartbeat-node--six { grid-column:3;grid-row:4; }
.hp-heartbeat .hp-heartbeat-radar[data-subject-count="2"] .hp-heartbeat-node { grid-row:3; }
.hp-heartbeat .hp-heartbeat-radar[data-subject-count="4"] :is(.hp-heartbeat-node--three,.hp-heartbeat-node--four) { grid-row:4; }
.hp-heartbeat .hp-heartbeat-node>span { display:block;min-width:0; }
.hp-heartbeat .hp-heartbeat-node b { display:block;font-size:14px;line-height:1.3;color:var(--pulse-ink); }
.hp-heartbeat .hp-heartbeat-node strong { display:inline;font-size:24px;line-height:1.45;color:var(--pulse-ink); }
.hp-heartbeat .hp-heartbeat-node small { display:inline;font-size:12px;white-space:normal;color:var(--pulse-muted); }
.hp-heartbeat .hp-heartbeat-node .hp-heartbeat-node__event-title { display:block;font-size:15px;line-height:1.4; }
.hp-heartbeat .hp-heartbeat-node__adaptive { display:none; }
.hp-heartbeat .hp-heartbeat-node .hp-pulse-node-action { grid-column:2;font-size:11px;color:var(--pulse-muted); }
.hp-heartbeat .hp-heartbeat-node::after { width:46px;opacity:.45;top:50%; }
.hp-heartbeat .hp-heartbeat-node:is(:hover,:focus-visible) { border-color:#a47ac5;background:var(--pulse-wash); }
.hp-heartbeat .hp-pulse-shortcuts,.hp-heartbeat .hp-pulse-shortcuts--below { position:static;inset:auto;grid-column:1/-1;grid-row:6;display:grid;grid-template-columns:1fr 1fr;gap:16px;width:100%;margin:12px 0 0; }
.hp-heartbeat .hp-pulse-shortcuts a { width:100%;max-width:none;padding:22px 26px;border-radius:18px;background:linear-gradient(115deg,#9b6bca12,transparent),var(--pulse-surface);border-color:var(--pulse-line); }
.hp-heartbeat .hp-pulse-shortcuts strong { font-size:21px;color:var(--pulse-ink); }
.hp-heartbeat .hp-pulse-shortcuts small { color:var(--pulse-muted);font-size:10px; }
.hp-heartbeat .hp-pulse-shortcuts span { color:var(--pulse-ink);font-size:13px; }
.hp-pulse-motion { display:block;margin:16px auto 0;padding:9px 15px;min-height:44px;border:1px solid var(--pulse-line);border-radius:30px;background:transparent;color:var(--pulse-muted);font-size:12px; }
.hp-heartbeat .hp-heartbeat__section { padding-block:30px 48px; }
.hp-heartbeat .hp-heartbeat__section-heading h2 { font-size:clamp(30px,4vw,46px);letter-spacing:-.05em; }
.hp-heartbeat .hp-pulse-filters { padding:14px;border:1px solid var(--pulse-line);border-radius:20px;background:var(--pulse-surface);gap:8px;margin-bottom:26px; }
.hp-heartbeat .hp-pulse-filters input { min-height:46px;background:var(--pulse-wash);border:1px solid var(--pulse-line);color:var(--pulse-ink);font-size:14px; }
.hp-heartbeat .hp-pulse-filters button { padding:10px 17px;background:transparent;color:var(--pulse-muted);border-color:var(--pulse-line); }
.hp-heartbeat .hp-pulse-filters button[aria-pressed=true] { background:#7140a0;color:white;border-color:#7140a0;box-shadow:0 3px 8px #71349920; }
.hp-heartbeat .hp-pulse-filters output { color:var(--pulse-muted);padding:3px 4px;font-variant-numeric:tabular-nums; }
.hp-heartbeat .hp-heartbeat-feed { gap:24px;align-items:start; }
.hp-heartbeat .hp-heartbeat-feed__item { padding:24px;display:flex;flex-direction:column;background:var(--pulse-surface);border-color:var(--pulse-line);border-radius:20px;box-shadow:0 7px 30px #55277708; }
.hp-heartbeat .hp-pulse-art { margin:-24px -24px 22px;height:220px;background:var(--pulse-wash);border-bottom:1px solid var(--pulse-line);overflow:hidden; }
.hp-heartbeat .hp-pulse-art img { object-fit:contain;transition:transform .5s; }
.hp-heartbeat .hp-heartbeat-feed__item:hover .hp-pulse-art img { transform:scale(1.025); }
.hp-heartbeat .hp-heartbeat-feed__item .hp-pulse-meta { flex-wrap:wrap;gap:6px;margin:0 0 14px; }
.hp-heartbeat .hp-heartbeat-feed__item .hp-pulse-place { background:transparent;padding:4px 0;color:var(--pulse-muted);font-weight:500; }
.hp-heartbeat .hp-heartbeat-feed__item h3 { font-size:23px;line-height:1.3;letter-spacing:-.035em;margin:0 0 12px;overflow-wrap:anywhere; }
.hp-heartbeat .hp-heartbeat-feed__item h3 a { color:var(--pulse-ink); }
.hp-heartbeat .hp-heartbeat-feed__item>p:not(.hp-pulse-meta) { font-size:14px;line-height:1.65;color:var(--pulse-muted);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden; }
.hp-pulse-story-link { display:flex;justify-content:space-between;font-size:13px;font-weight:650;margin:8px 0 20px;color:var(--pulse-ink); }
.hp-heartbeat .hp-heartbeat-feed__item>small { margin-top:auto;color:var(--pulse-muted);border-color:var(--pulse-line);font-size:11px; }
.hp-heartbeat.hp-pulse-paused *,.hp-heartbeat.hp-pulse-paused *::before,.hp-heartbeat.hp-pulse-paused *::after { animation-play-state:paused!important; }
.hp-heartbeat.hp-pulse-paused .hp-heartbeat-radar__heart { transform:none; }
@media(min-width:761px) and (max-width:1000px) {
 .hp-heartbeat .hp-heartbeat-radar { grid-template-columns:minmax(0,1fr) 220px minmax(0,1fr);gap:14px 20px; }
 .hp-heartbeat .hp-heartbeat-radar__heart { width:190px;height:220px; }
 .hp-heartbeat .hp-heartbeat-radar__rings { width:220px;height:240px; }
 .hp-heartbeat .hp-heartbeat-node::after { width:20px; }
 .hp-heartbeat .hp-heartbeat-radar .hp-heartbeat-node { padding:14px;grid-template-columns:28px minmax(0,1fr);gap:8px; }
}
@media(max-width:760px) {
 .hp-heartbeat .hp-heartbeat__hero { padding:24px 0; }
 .hp-heartbeat h1 { font-size:52px; }
 .hp-heartbeat .hp-heartbeat__intro { order:3;font-size:13px;opacity:1;margin:12px auto 18px; }
 .hp-heartbeat .hp-heartbeat-radar { display:flex;flex-direction:column;gap:12px;padding:8px 0 0; }
 .hp-heartbeat .hp-heartbeat-radar__signal-state { order:0;font-size:11px;align-self:center; }
 .hp-heartbeat .hp-heartbeat-radar__rings { display:none; }
 .hp-heartbeat .hp-heartbeat-radar__heart { order:1;width:196px;height:214px;margin:10px auto;flex-shrink:0; }
 .hp-heartbeat .hp-heartbeat-radar__heart img { width:108px;height:108px; }
 .hp-heartbeat .hp-pulse-ecg { width:246px; }
 .hp-heartbeat .hp-heartbeat-radar__location { order:2;display:flex;margin:0 0 8px; }
 .hp-heartbeat .hp-heartbeat-radar__location small { position:static;width:auto;height:auto;clip:auto;overflow:visible;white-space:normal; }
 .hp-heartbeat .hp-heartbeat-radar__heart-panel { order:3;width:100%; }
 .hp-heartbeat .hp-heartbeat-radar .hp-heartbeat-node { order:4;display:grid;grid-template-columns:38px minmax(0,1fr) auto;padding:16px;min-height:88px; }
 .hp-heartbeat .hp-heartbeat-node .hp-pulse-node-action { grid-column:3;grid-row:1;align-self:center; }
 .hp-heartbeat .hp-heartbeat-node>i { grid-row:1; }
 .hp-heartbeat .hp-heartbeat-node>span { grid-column:2;align-items:start; }
 .hp-heartbeat .hp-heartbeat-node::after { display:none; }
 .hp-heartbeat .hp-pulse-shortcuts { order:5;grid-template-columns:1fr;gap:12px; }
 .hp-heartbeat .hp-pulse-shortcuts a { padding:20px; }
 .hp-heartbeat .hp-pulse-shortcuts strong { font-size:21px; }
 .hp-heartbeat .hp-heartbeat-ambient { order:6;margin:24px 0 0; }
 .hp-heartbeat .hp-pulse-motion { order:7; }
 .hp-heartbeat .hp-heartbeat-feed { grid-template-columns:minmax(0,1fr); }
 .hp-heartbeat .hp-pulse-filters input { flex-basis:100%; }
 .hp-heartbeat .hp-pulse-filters button { padding:10px 12px; }
}
@media(prefers-reduced-motion:reduce) {
 .hp-heartbeat *,.hp-heartbeat *::before,.hp-heartbeat *::after { animation:none!important;transition:none!important;scroll-behavior:auto!important; }
 .hp-heartbeat .hp-heartbeat-radar__heart { transform:none; }
}

.hp-heartbeat .hp-heartbeat__hero { padding-top:28px; }
.hp-heartbeat .hp-heartbeat-connector { display:none; }
.hp-heartbeat .hp-heartbeat-radar__rings { position:relative;transform:none;top:auto;left:auto;pointer-events:none; }
.hp-heartbeat .hp-heartbeat__intro { max-width:660px;margin:10px auto; }
.hp-heartbeat .hp-heartbeat-ambient { margin:16px auto; }
.hp-heartbeat .hp-heartbeat-radar { padding-top:12px; }
.hp-heartbeat .hp-heartbeat-radar__signal-state { line-height:1.5; }

/* Map identity: explicit surface/text pairs in both themes; keep hearts unobscured. */
.hp-home .hp-home-discovery-panel { background:radial-gradient(ellipse at 90% 0, #e4d4ff 0, transparent 55%),#f6f1ff;color:#251437;border-color:#d9c9ef; }
.hp-home .hp-home-map-intro h2 { color:#251437; }
.hp-home .hp-home-map-intro p,.hp-home .hp-home-map-actions > p { color:#594369; }
.hp-home .hp-home-map-intro .hp-home-kicker { color:#6732a5; }
.hp-experience-dark .hp-home .hp-home-discovery-panel { background:radial-gradient(ellipse at 85% 0,#493064 0,transparent 65%),#1d1329;border-color:#5a3d70;color:#f6efff;box-shadow:0 28px 70px #08050d35; }
.hp-experience-dark .hp-home .hp-home-map-intro h2 { color:#f6efff; }
.hp-experience-dark .hp-home .hp-home-map-intro p,.hp-experience-dark .hp-home .hp-home-map-actions > p { color:#d5c7e2; }
.hp-experience-dark .hp-home .hp-home-map-intro .hp-home-kicker { color:#d9b7ff; }
body .hp-local-map-marker span,body .hp-local-map-cluster span { background:#fff;border:2px solid #7236c8;box-shadow:0 3px 12px #27103d55;filter:none; }
body .hp-local-map-marker span::before,body .hp-local-map-cluster span::before,body .hp-local-map-marker span::after,body .hp-local-map-cluster span::after { display:none; }
body .hp-local-map-marker span > img,body .hp-local-map-cluster span > img { inset:2px;width:calc(100% - 4px);height:calc(100% - 4px);filter:none; }
body .hp-local-map-marker span i { display:none; }
body .hp-local-map-cluster b { position:absolute;right:-7px;bottom:-4px;min-width:25px;padding:5px;border:2px solid #fff;background:#572398;color:#fff;text-align:center;box-shadow:0 2px 6px #27103d40; }
body .hp-local-map-marker:focus-visible,body .hp-local-map-cluster:focus-visible { outline:3px solid #572398;outline-offset:5px;border-radius:50%; }

/* L01.3 (2026-09-12): co-located businesses -- a business park, a shared
   office building, a shopping centre -- now share one marker at full zoom
   instead of stacking N unreachable pins on the identical point. Styled here
   rather than in heartbeat.css so it does not depend on work in progress. */
/* Leaflet z-orders markers by latitude, so a single neighbouring pin could
   sit on top of a stack representing many businesses and swallow its click.
   A stack always wins. */
.leaflet-marker-icon.hp-local-map-colocated { z-index:640 !important; }
.hp-local-map-colocated span { position:relative;display:block;width:44px;height:44px;border-radius:50%;background:#fff;border:2px solid #7236c8;box-shadow:0 3px 12px #27103d55;overflow:visible; }
.hp-local-map-colocated span > img { position:absolute;inset:2px;width:calc(100% - 4px);height:calc(100% - 4px);border-radius:50%;object-fit:cover; }
.hp-local-map-colocated b { position:absolute;right:-7px;bottom:-4px;min-width:23px;padding:4px;border-radius:999px;border:2px solid #fff;background:#572398;color:#fff;font-size:.72rem;line-height:1;text-align:center;box-shadow:0 2px 6px #27103d40; }
.hp-local-map-colocated:focus-visible { outline:3px solid #572398;outline-offset:5px;border-radius:50%; }

.hp-local-map__colocated-list { margin:6px 0 0;padding:0;list-style:none;max-height:230px;overflow-y:auto;display:grid;gap:6px; }
.hp-local-map__colocated-list[hidden] { display:none; }
.hp-local-map__colocated-choice { display:flex;flex-direction:column;gap:2px;width:100%;min-height:44px;padding:8px 10px;border:1px solid var(--hp-color-border);border-radius:10px;background:var(--hp-color-surface);color:var(--hp-color-ink);font:inherit;text-align:left;cursor:pointer; }
.hp-local-map__colocated-choice:hover,.hp-local-map__colocated-choice:focus-visible { border-color:var(--hp-color-primary-500,#7c3aed);background:var(--hp-color-surface-muted); }
.hp-local-map__colocated-choice span { color:var(--hp-color-text-muted);font-size:.82rem; }

/* Mobile navigation sheet must use a matched surface and text palette. */
.hp-mobile-menu .hp-mobile-menu__inner { background:#faf7ff;color:#291936;border:1px solid #ded1ea;box-shadow:0 -12px 60px #10071930; }
.hp-mobile-menu .hp-mobile-menu__title,.hp-mobile-menu .hp-mobile-menu__primary a { color:#291936; }
.hp-mobile-menu .hp-mobile-menu__primary a { min-height:48px;border-color:#dfd2eb; }
.hp-mobile-menu .hp-mobile-menu__search { background:#fff;color:#674a80;border-color:#aa90be; }
.hp-mobile-menu input.hp-mobile-menu__search-input { background:transparent;color:#291936;border:0;box-shadow:none; }
.hp-mobile-menu input.hp-mobile-menu__search-input::placeholder { color:#705b80;opacity:1; }
.hp-mobile-menu .hp-mobile-menu__primary a[aria-current="page"],.hp-mobile-menu .hp-mobile-menu__primary a:hover,.hp-mobile-menu .hp-mobile-menu__primary a:focus-visible { background:#eee3fa;color:#54228a; }
.hp-experience-dark .hp-mobile-menu .hp-mobile-menu__inner { background:#21162e;color:#f5effb;border-color:#644779; }
.hp-experience-dark .hp-mobile-menu .hp-mobile-menu__title,.hp-experience-dark .hp-mobile-menu .hp-mobile-menu__primary a { color:#f5effb;border-color:#533c65; }
.hp-experience-dark .hp-mobile-menu .hp-mobile-menu__search { background:#160e20;color:#cfb7e5;border-color:#77588d; }
.hp-experience-dark .hp-mobile-menu input.hp-mobile-menu__search-input { color:#f5effb; }
.hp-experience-dark .hp-mobile-menu input.hp-mobile-menu__search-input::placeholder { color:#cfb7e5; }
.hp-experience-dark .hp-mobile-menu .hp-mobile-menu__primary a[aria-current="page"],.hp-experience-dark .hp-mobile-menu .hp-mobile-menu__primary a:hover,.hp-experience-dark .hp-mobile-menu .hp-mobile-menu__primary a:focus-visible { background:#382345;color:#fff; }
.hp-mobile-menu .hp-mobile-menu__cta { color:#fff;background:#7435d0; }

/* Older square/portrait artwork: whole-image fit with a sampled colour matte. */
body .hp-home-business-card__media.hp-thumb-logo-safe { background:var(--hp-media-matte,#eee8f5); }
body .hp-home-business-card__media.hp-thumb-logo-safe img { object-fit:contain!important;object-position:center!important;padding:8px!important;background:transparent!important; }
body .hp-home-business-card:hover .hp-home-business-card__media.hp-thumb-logo-safe img { transform:none; }

body .hp-home-business-card__media { position:relative; }
body .hp-home-business-card__media > .hp-home-business-card__media-link { position:absolute;inset:0;width:100%;height:100%; }

/* Business offer: the same continuous canvas as the resident pages. */
.hp-context-page--advertise-with-hertspartners #content {
  width:100%;max-width:1240px;margin-inline:auto;padding:0 clamp(20px,4vw,48px) 64px;
  --hp-offer-ink:#271832;--hp-offer-muted:#66566f;--hp-offer-panel:#fff;--hp-offer-line:#ded3e8;
}
.hp-experience-dark .hp-context-page--advertise-with-hertspartners #content {
  --hp-offer-ink:#f3ebfc;--hp-offer-muted:#cbbbd7;--hp-offer-panel:#201629;--hp-offer-line:#493455;
}
.hp-context-page--advertise-with-hertspartners #content .hp-section {
  width:100%;max-width:none;margin:0;padding:40px 0;background:transparent;border:0;box-shadow:none;color:var(--hp-offer-muted);
}
.hp-context-page--advertise-with-hertspartners #content :is(h1,h2,h3,h4,.hp-package-card__price-amount) { color:var(--hp-offer-ink); }
.hp-context-page--advertise-with-hertspartners #content :is(p,li,th,td,.hp-package-card__price-period) { color:var(--hp-offer-muted); }
.hp-context-page--advertise-with-hertspartners #content .hp-advertise-hero { text-align:left;padding:clamp(44px,7vw,88px) 0 40px; }
.hp-context-page--advertise-with-hertspartners #content .hp-advertise-hero__title { max-width:920px;font-size:clamp(40px,6.4vw,78px);font-weight:750;line-height:1.04;letter-spacing:-.055em;margin:16px 0 24px;background:none; }
.hp-context-page--advertise-with-hertspartners #content .hp-advertise-hero__eyebrow { color:var(--hp-color-link,#6831b4);font-size:11px;font-weight:750;letter-spacing:.14em;text-transform:uppercase; }
.hp-context-page--advertise-with-hertspartners #content .hp-overview__lede { max-width:680px;margin:0 0 26px;font-size:clamp(17px,2vw,21px);line-height:1.65; }
.hp-context-page--advertise-with-hertspartners #content .hp-advertise-fineprint { font-size:12px;margin-top:18px; }
.hp-context-page--advertise-with-hertspartners #content h2 { font-size:clamp(26px,3.2vw,38px);line-height:1.15;letter-spacing:-.035em; }
.hp-context-page--advertise-with-hertspartners #content .hp-package-grid { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:24px;margin-top:34px; }
.hp-context-page--advertise-with-hertspartners #content .hp-package-card { min-width:0;padding:clamp(24px,3vw,36px);border:1px solid var(--hp-offer-line);background:var(--hp-offer-panel);border-radius:24px;box-shadow:none;color:var(--hp-offer-ink); }
.hp-context-page--advertise-with-hertspartners #content .hp-package-card--featured { border-color:#9760db;box-shadow:0 0 0 1px #9760db; }
.hp-context-page--advertise-with-hertspartners #content .hp-package-card__price-amount { font-size:clamp(34px,4vw,48px);letter-spacing:-.045em; }
.hp-context-page--advertise-with-hertspartners #content .hp-package-card__description { font-size:15px;line-height:1.7; }
.hp-context-page--advertise-with-hertspartners #content .hp-btn--primary { background:#7835e7;color:#fff;border-color:transparent;text-decoration:none;border-radius:14px;min-height:48px; }
.hp-context-page--advertise-with-hertspartners #content .hp-package-card__badge { background:#7835e7;color:#fff; }
/* Keep allowance text and its surface paired in both colour modes. */
.hp-context-page--advertise-with-hertspartners #content .hp-package-card__highlights li { background:#eee5fa;color:#452568;border:1px solid #d8c2ee;font-size:14px;font-weight:650;line-height:1.5;padding:8px 12px; }
.hp-experience-dark .hp-context-page--advertise-with-hertspartners #content .hp-package-card__highlights li { background:#382348;color:#f3ebfc;border-color:#785392; }
.hp-context-page--advertise-with-hertspartners #content .hp-package-card__details-toggle { color:var(--hp-offer-ink);padding:16px 0;border-top:1px solid var(--hp-offer-line); }
.hp-context-page--advertise-with-hertspartners #content .hp-advertise-steps { display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px;margin-top:32px; }
.hp-context-page--advertise-with-hertspartners #content .hp-advertise-steps article { padding-top:20px;border-top:1px solid var(--hp-offer-line); }
.hp-context-page--advertise-with-hertspartners #content .hp-advertise-steps span { color:var(--hp-color-link,#6831b4);font-size:12px; }
.hp-context-page--advertise-with-hertspartners #content .hp-advertise-steps h3 { font-size:20px;margin:16px 0 12px; }
.hp-context-page--advertise-with-hertspartners #content .hp-advertise-steps p { font-size:15px;line-height:1.7; }
.hp-context-page--advertise-with-hertspartners #content :is(.hp-channel-card,.hp-stat-card,.hp-testimonial-card) { background:var(--hp-offer-panel);border-color:var(--hp-offer-line);color:var(--hp-offer-ink); }
.hp-context-page--advertise-with-hertspartners #content .hp-pill { color:var(--hp-offer-ink);background:transparent;border:1px solid var(--hp-offer-line);white-space:normal; }
.hp-context-page--advertise-with-hertspartners #content .hp-advertise-directory-note { border-block:1px solid var(--hp-offer-line); }
.hp-context-page--advertise-with-hertspartners #content .hp-advertise-final-cta { padding-top:56px; }
/* L01.1 (2026-09-12), found by rendering this page rather than reading it.
   Three colours were left behind by the page palette above:
   - the stat card is repainted as a light offer panel here, but its value kept
     the pale purple it was designed for on the hub's dark card (1.85:1);
   - the blanket p/li/th rule reaches inside the Facebook CTA, which is a
     deliberately black panel in both themes, and painted its copy muted grey
     (2.92:1);
   - the channel-card action is a secondary button whose brand purple is too
     dark against the dark offer panel (3.05:1).
   Each is corrected where the page palette is defined, not with a global. */
.hp-context-page--advertise-with-hertspartners #content .hp-stat-card__value { color:var(--hp-color-primary-700,#6d28d9); }
.hp-context-page--advertise-with-hertspartners #content .hp-facebook-cta :is(p,li,th,td) { color:#e7dff0; }
.hp-context-page--advertise-with-hertspartners #content .hp-channel-card__link { color:var(--hp-color-primary-700,#6d28d9); }
.hp-experience-dark .hp-context-page--advertise-with-hertspartners #content .hp-stat-card__value,
.hp-experience-dark .hp-context-page--advertise-with-hertspartners #content .hp-channel-card__link { color:#d6b4ff; }
@media(max-width:620px) {
  .hp-context-page--advertise-with-hertspartners #content :is(.hp-package-grid,.hp-advertise-steps) { grid-template-columns:1fr; }
  .hp-context-page--advertise-with-hertspartners #content .hp-section { padding-block:28px; }
}
/* A visible search field must keep its prompt visible without hover. */
.hp-nav .hp-nav__search-input { opacity:1!important; }
/* L01.1 (2026-09-12): the partner application wrapper is declared with literal
   `background:#fff;color:#17131f` in navigation.css, which is the owner's work
   in progress and must not be edited here, so the dark value is supplied from
   this file instead. Everything inside the wizard resolves through the Partner
   Hub's own palette tokens, which now have dark values, so only the wrapper
   needed correcting. */
.hp-experience-dark .hp-partner-application { background:var(--hp-color-canvas,#100b17);color:var(--hp-color-ink,#eee6f7); }
.hp-experience-dark .hp-partner-application__hero > p:first-child { color:#cc9cff; }

.hp-experience-dark .hp-cv-account-prompt .hp-cv-how-it-works p { color:#cbbbd7; }
.hp-experience-dark .hp-cv-account-prompt .hp-notice { background:#241831;border-color:#493455;color:#eee6f7; }
.hp-experience-dark .hp-cv-account-prompt .hp-notice p { color:#eee6f7; }

/* WordPress toolbar stays above the sticky site header for signed-in owners. */
body.admin-bar .hp-nav{top:32px}
@media(min-width:601px) and (max-width:782px){body.admin-bar .hp-nav{top:46px}}
@media(max-width:600px){body.admin-bar .hp-nav{top:0}}

/* Branded editorial artwork includes text: keep its complete native composition. */
.hp-home .hp-home-listing__media:has(img.hp-local-update__editorial-image) { min-height:0;height:auto;aspect-ratio:auto; }
.hp-home .hp-home-listing__media img.hp-local-update__editorial-image { display:block;width:100%;height:auto;max-height:none;object-fit:contain;aspect-ratio:auto; }
/* Local Update cards need a matched dark surface, including their descriptive copy. */
.hp-experience-dark .hp-home .hp-home-listing { background:#21182b;color:#f5effb;border-color:#4d3a60; }
.hp-experience-dark .hp-home .hp-home-listing h3 { color:#f5effb; }
.hp-experience-dark .hp-home .hp-home-listing p { color:#d5c7df; }
.hp-experience-dark .hp-home .hp-home-listing :is(.hp-home-listing__eyebrow,.hp-home-listing__action) { color:#d2b2ff; }
.hp-experience-dark .hp-home .hp-home-listing > a > div:last-child > span { color:#d2b2ff; }

/* Heartbeat in the burger menu (owner-reported 2026-09-11). Lives here rather
   than in navigation.css so it does not collide with the uncommitted work in
   that file; it sits beside the existing .hp-mobile-menu dark rules above. */
.hp-mobile-menu__heartbeat {
	display:flex; align-items:center; gap:12px; margin:0 0 14px; padding:12px 14px; min-height:44px;
	max-height:76px; overflow:hidden;
	border:1px solid rgba(124,58,237,.28); border-radius:16px;
	background:linear-gradient(135deg,#f7f3ff,#ede4ff);
	color:#2e1065; text-decoration:none;
}
/* Explicitly bounded: this is a navigation row, never a hero. The icon tile
   cannot grow or shrink, and the brand asset is contained inside it without
   cropping or distortion, so neither its 602x548 intrinsic size nor a generic
   `img { width:100% }` rule elsewhere can expand it. */
.hp-mobile-menu__heartbeat-icon { flex:0 0 34px; display:grid; place-items:center; width:34px; height:34px; max-width:34px; max-height:34px; border-radius:11px; background:#fff; overflow:hidden; }
.hp-mobile-menu__heartbeat-icon img { width:26px !important; height:auto !important; max-width:26px !important; max-height:26px !important; object-fit:contain; flex:none; }
.hp-mobile-menu__heartbeat-copy { display:flex; flex-direction:column; gap:2px; min-width:0; }
.hp-mobile-menu__heartbeat-copy strong { font-size:1.02rem; line-height:1.2; }
.hp-mobile-menu__heartbeat-copy small { color:#5c4a75; font-size:.8rem; line-height:1.25; }
.hp-mobile-menu__heartbeat-go { margin-left:auto; flex:none; color:#6d28d9; font-size:1.1rem; }
.hp-mobile-menu__heartbeat:hover,
.hp-mobile-menu__heartbeat:focus-visible { border-color:#7c3aed; background:linear-gradient(135deg,#f2ebff,#e4d6ff); }
.hp-mobile-menu__heartbeat[aria-current="page"] { border-color:#7c3aed; box-shadow:0 0 0 1px #7c3aed inset; }

.hp-experience-dark .hp-mobile-menu__heartbeat {
	border-color:#6b4d8c; background:linear-gradient(135deg,#2f2040,#3a2752); color:#f5effb;
}
.hp-experience-dark .hp-mobile-menu__heartbeat-icon { background:#1d1428; }
.hp-experience-dark .hp-mobile-menu__heartbeat-copy small { color:#cbb6e2; }
.hp-experience-dark .hp-mobile-menu__heartbeat-go { color:#d2b2ff; }
.hp-experience-dark .hp-mobile-menu__heartbeat:hover,
.hp-experience-dark .hp-mobile-menu__heartbeat:focus-visible { border-color:#a78bfa; background:linear-gradient(135deg,#372748,#43305e); }

/* =========================================================
   DARK VALUES FOR SURFACES DECLARED IN WORK-IN-PROGRESS FILES
   AND IN VENDOR MARKUP  (L01.1, 2026-09-12)
   -------------------------------------------------------
   Each component below paints itself with --hp-color-white, which is a real
   white and must stay white (it is also the label colour on purple buttons),
   so these surfaces never changed for dark mode and their own text -- which
   the site does recolour -- ended up white on white.

   The account-hub choices and the dashboard action tiles are declared in
   navigation.css, which is the owner's work in progress, so their dark values
   are supplied from this file rather than by editing that file.
   ========================================================= */

.hp-experience-dark .hp-account-hub__choices label,
.hp-experience-dark .hp-account-hub__towns label,
.hp-experience-dark .hp-dashboard-actions__tile {
	background: var( --hp-color-surface, #21162c );
	border-color: var( --hp-color-border, #44334f );
	color: var( --hp-color-ink, #eee6f7 );
}

.hp-experience-dark .hp-account-hub__choices small,
.hp-experience-dark .hp-account-hub__muted,
.hp-experience-dark .hp-dashboard-actions__tile span,
.hp-experience-dark .hp-dashboard-actions__body span {
	color: var( --hp-color-text-muted, #c3b6d0 );
}

.hp-experience-dark .hp-dashboard-actions__tile strong,
.hp-experience-dark .hp-account-hub__choices strong {
	color: var( --hp-color-ink, #eee6f7 );
}

/* A text-only destructive action was measured at 3.34:1 on the dark canvas. */
.hp-experience-dark .hp-account-hub__text-action {
	color: #ffb3b3;
}

/* The shared "not available yet" panel (the inbox placeholder uses it). */
.hp-experience-dark .hp-community-box {
	background: var( --hp-color-surface, #21162c );
	border-color: var( --hp-color-border, #44334f );
	color: var( --hp-color-ink, #eee6f7 );
}

/* The Free Tools lead sits on a solid brand-purple panel, where the kicker's
   purple tint measured 2.61:1 and the secondary action 3.08:1. Both take a
   near-white against that panel; every other kicker on the page sits on the
   dark canvas and keeps its tint, so this is scoped to the panel itself. */
.hp-experience-dark .hp-home .hp-home-feature__lead .hp-home-kicker {
	color: #f3ebff;
}

.hp-experience-dark .hp-home .hp-home-feature__lead .hp-c-btn--secondary,
.hp-home-feature__lead .hp-c-btn--secondary {
	color: #ffffff;
	border-color: rgba( 255, 255, 255, 0.65 );
}

.hp-experience-dark .hp-home .hp-home-feature__lead .hp-c-btn--secondary:hover,
.hp-home-feature__lead .hp-c-btn--secondary:hover {
	background: rgba( 255, 255, 255, 0.14 );
	color: #ffffff;
}

/* Complianz renders the cookie policy as its own light grid, which stayed
   light while the page around it went dark. Its inner blocks are generically
   named (.purpose, .name, .retention, .function), so they are scoped to the
   Complianz containers that wrap them rather than matched globally. */
.hp-experience-dark .page-content :is(.cmplz-document, .cmplz-cookies-overview, .cookies-per-purpose, .cmplz-service-description, .cmplz-sharing-data, .cmplz-dropdown) :is(.purpose, .name, .name-header, .retention, .retention-header, .function, .function-header, .expiry, .expiry-header, .cookie-header, table, thead, tbody, tr, th, td),
.hp-experience-dark .page-content .cookies-per-purpose,
.hp-experience-dark .page-content .cmplz-service-description,
.hp-experience-dark .page-content .cmplz-sharing-data,
.hp-experience-dark .page-content .cmplz-document {
	background: var( --hp-color-surface, #21162c ) !important;
	border-color: var( --hp-color-border, #44334f ) !important;
	color: var( --hp-color-ink, #eee6f7 ) !important;
}

.hp-experience-dark .page-content :is(.cmplz-document, .cookies-per-purpose, .cmplz-service-description, .cmplz-sharing-data, .cmplz-dropdown) :is(h2, h3, h4, h5, .cmplz-category-title, .name, .retention, .function, .purpose) {
	color: var( --hp-color-ink, #eee6f7 ) !important;
}

.hp-experience-dark .page-content :is(.cmplz-document, .cookies-per-purpose, .cmplz-service-description, .cmplz-sharing-data, .cmplz-dropdown) :is(p, li, a) {
	color: var( --hp-color-text-muted, #c3b6d0 ) !important;
}

/* "Always active" was 4.47:1 -- a true green on a near-white row. */
body .page-content .cmplz-always-active {
	color: #0a6b2e !important;
}

.hp-experience-dark .page-content .cmplz-always-active {
	color: #8ce0a8 !important;
}

/* Complianz's accordion headers are filled with a translucent light grey
   (rgba(239,239,239,.5)), which over the now-dark document blends to a mid
   grey and left its near-white labels at about 1.06:1. The same translucent
   idea, in the opposite direction. */
.hp-experience-dark .page-content :is(.cmplz-category, .cmplz-category-header, .cmplz-service-header, .cmplz-dropdown, .cmplz-dropdown > summary) {
	background: rgba( 255, 255, 255, 0.06 ) !important;
	border-color: var( --hp-color-border, #44334f ) !important;
}

.hp-experience-dark .page-content :is(.cmplz-category-header, .cmplz-service-header) :is(h3, h4, span, .cmplz-category-title) {
	color: var( --hp-color-ink, #eee6f7 ) !important;
}

/* L01.1 (2026-09-12): Complianz lays each cookie out as a fixed multi-column
   grid, so on a phone its cells run about 290px past the viewport. The page
   itself does not scroll sideways, but the right-hand columns were simply
   unreachable. The grid now scrolls inside its own container, which is the
   established treatment for wide content here. */
@media (max-width: 560px) {
	.page-content .cookies-per-purpose {
		overflow-x: auto;
		-webkit-overflow-scrolling: touch;
	}

	.page-content .cmplz-document .cmplz-service-header,
	.page-content .cmplz-document details {
		max-width: 100%;
	}
}

/* Search suggestions are light panels in both themes; pair their text explicitly. */
:is(.hp-home-search__panel,.hp-nav__search-panel,.hp-mobile-menu__search-panel){background:#fff;color:#30233f}
:is(.hp-home-search__panel,.hp-nav__search-panel,.hp-mobile-menu__search-panel) .hp-search-result,:is(.hp-home-search__panel,.hp-nav__search-panel,.hp-mobile-menu__search-panel) .hp-search-result__title{color:#30233f}
:is(.hp-home-search__panel,.hp-nav__search-panel,.hp-mobile-menu__search-panel) :is(.hp-search-result__meta,.hp-search-panel__message){color:#62536f}
:is(.hp-home-search__panel,.hp-nav__search-panel,.hp-mobile-menu__search-panel) .hp-search-result:is(:hover,:focus-visible,.is-active){background:#eee7fa;color:#30233f}

/* -------------------------------------------------------------------------
 * Heartbeat orbit, owner corrections (2026-09-16)
 *
 * The orbit became a fixed six (What's On / Businesses / HertsJobs down the
 * left, Local updates / HertsOffers / Volunteering down the right), so the
 * node card had to stop behaving as if it were one of two.
 *
 * What was actually wrong: the radar grid above is
 * `minmax(0,1fr) 300px minmax(0,1fr)` inside a 1080px shell, which makes each
 * side column ~344px, and the node rule sets `width:100%`. A card holding
 * "Local updates / 1 published update" was therefore stretched to 344px --
 * roughly a third of the page for one number. (heartbeat.css's own
 * `min-width:190px` has no effect here at all; this grid override replaced
 * the absolute positioning that rule was written for.)
 *
 * Capping the width and pulling each card toward the centre also tightens the
 * connector: the `::after` line is 46px and the column gap is 46px, so the
 * line now bridges card-to-heart exactly instead of crossing a variable gap.
 * The heart, rings, halo and connector system are untouched.
 * ------------------------------------------------------------------------- */
@media(min-width:761px) {
 .hp-heartbeat .hp-heartbeat-radar .hp-heartbeat-node { max-width:262px;padding:15px 16px; }
 .hp-heartbeat .hp-heartbeat-radar :is(.hp-heartbeat-node--one,.hp-heartbeat-node--three,.hp-heartbeat-node--five) { justify-self:end; }
 .hp-heartbeat .hp-heartbeat-radar :is(.hp-heartbeat-node--two,.hp-heartbeat-node--four,.hp-heartbeat-node--six) { justify-self:start; }
 /* Six rows of 96px would out-run the 250px heart they flank; the cards
  * carry two or three short lines, so they do not need the extra height. */
 .hp-heartbeat .hp-heartbeat-radar { grid-template-rows:auto repeat(3,minmax(84px,auto)) auto auto; }
}

/* A genuine zero now keeps its node instead of vanishing from the ring, so it
 * renders the honest call to action the platform already wrote for this case
 * ("Local opportunities", "Volunteer locally") rather than a 24px "0", which
 * reads as a failed query rather than as "nothing published today". */
.hp-heartbeat .hp-heartbeat-node .hp-heartbeat-node__cta { display:block;font-size:15px;line-height:1.4;color:var(--pulse-ink); }
