/* Good Founders site styles: masthead, motion, poll, ratings, label, story cards. */
:root {
	--gf-paper: #F3F0E7; --gf-bone: #FAF7F2; --gf-cream: #F5F0DD; --gf-ink: #0A151B; --gf-red: #DD1F3B;
	--gf-teal-1: #DFEDED; --gf-teal-2: #A4DBDE; --gf-teal-3: #2BB3C1; --gf-teal-4: #1E7C86; --gf-teal-5: #175057; --gf-teal-6: #0B2429;
	--gf-rose-1: #FFEEF2; --gf-rose-2: #FFD1DC; --gf-rose-3: #FCA9BD; --gf-rose-4: #FF5A85; --gf-rose-5: #FA4B46; --gf-rose-6: #E73203;
	--gf-sky-1: #EEF1E6; --gf-sky-2: #DCE9E2; --gf-sky-3: #A5D1EA; --gf-sky-4: #54B9E5; --gf-sky-5: #0F9BD7; --gf-sky-6: #08486B;
	--gf-saff-1: #FFF4DE; --gf-saff-2: #FEE2AE; --gf-saff-3: #FDC45E; --gf-saff-4: #FBA30B; --gf-saff-5: #D98400; --gf-saff-6: #8A5200;
	--gf-display: 'Bebas Neue', Impact, sans-serif; --gf-mono: 'DM Mono', ui-monospace, monospace;
	--gf-serif: 'Instrument Serif', Georgia, serif; --gf-sans: 'DM Sans', system-ui, sans-serif;
	--gf-ease: cubic-bezier(.2, .7, .2, 1);
	--gf-page: var(--gf-paper);
	--gf-gutter: clamp(16px, 4vw, 72px);
}

/* Full width: page sections run edge to edge with one gutter, no boxed column. */
.e-con, .e-con-inner { --container-max-width: 100% !important; --content-width: 100% !important; }
.e-con-boxed > .e-con-inner { max-width: 100% !important; }
.elementor-location-footer > .e-con { --padding-left: var(--gf-gutter) !important; --padding-right: var(--gf-gutter) !important; }
[data-elementor-type="wp-page"] > .e-con { --padding-left: var(--gf-gutter) !important; --padding-right: var(--gf-gutter) !important; }
body { background: var(--gf-page); transition: background-color .9s var(--gf-ease); }
.gf-pill { display: inline-block; padding: 3px 8px; border: 1px solid currentColor; border-radius: 20px; font: 400 10px/1 var(--gf-mono); letter-spacing: .14em; text-transform: uppercase; }

/* ---------- Masthead ---------- */
.gf-mast { background: var(--gf-paper); color: var(--gf-ink); position: relative; z-index: 50; }
.gf-mast__ticker { overflow: hidden; background: linear-gradient(90deg, var(--gf-rose-3), var(--gf-rose-4) 55%, var(--gf-rose-5)); color: var(--gf-ink); font: 400 11px/1 var(--gf-mono); letter-spacing: .18em; text-transform: uppercase; }
.gf-mast__track { display: flex; width: max-content; gap: 22px; padding: 9px 0; animation: gf-tick 48s linear infinite; }
.gf-mast__track i { font-style: normal; opacity: .7; font-size: 7px; align-self: center; }
.gf-mast__ticker:hover .gf-mast__track { animation-play-state: paused; }
@keyframes gf-tick { to { transform: translateX(-50%); } }
.gf-mast__inner { padding: 0; }
.gf-mast__top, .gf-mast__nav { padding-left: var(--gf-gutter); padding-right: var(--gf-gutter); }
.gf-mast__top { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 16px; border-top: 4px solid var(--gf-ink); margin-top: 0; padding-top: 12px; padding-bottom: 8px; }
.gf-mast__word { font: 400 clamp(54px, 7.6vw, 104px)/.82 var(--gf-display); letter-spacing: .02em; color: var(--gf-ink); text-decoration: none; padding-top: .08em; transition: letter-spacing .5s var(--gf-ease), color .3s; white-space: nowrap; }
.gf-mast__word:hover { letter-spacing: .05em; color: var(--gf-red); }
.gf-mast__meta { display: flex; align-items: stretch; gap: 12px; }
.gf-mast__meta--right { justify-content: flex-end; text-align: right; color: inherit; text-decoration: none; }
.gf-mast__meta--right:hover .gf-mast__big { background: var(--gf-red); }
.gf-mast__stack { display: flex; flex-direction: column; justify-content: space-between; gap: 6px; font: 400 11px/1.25 var(--gf-mono); letter-spacing: .16em; text-transform: uppercase; padding: 1px 0; }
.gf-mast__big { display: flex; align-items: center; justify-content: center; min-width: 2.4em; padding: 0 10px; background: var(--gf-ink); color: var(--gf-paper); font: 400 30px/1 var(--gf-display); letter-spacing: .04em; font-variant-numeric: tabular-nums; }
.gf-mast__meta--left .gf-mast__big { background: var(--gf-red); min-width: 1.6em; }
.gf-mast__meta--left .gf-mast__big--clock { background: var(--gf-ink); min-width: 2.4em; }
.gf-mast__meta .gf-mast__stack { white-space: nowrap; }
/* Keep the wordmark centred as the left side runs out of room: weekday drops a line, then the words go. */
@media (max-width: 1500px) { .gf-mast__place, .gf-mast__dot { display: none; } .gf-mast__wd { display: block; } }
@media (max-width: 1100px) { .gf-mast__meta--left .gf-mast__stack { display: none; } }
.gf-mast__nav { padding-left: var(--gf-gutter); padding-right: var(--gf-gutter); }
.gf-mast__top { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 16px; border-top: 4px solid var(--gf-ink); margin-top: 0; padding-top: 12px; padding-bottom: 8px; }
.gf-mast__word { font: 400 clamp(54px, 7.6vw, 104px)/.82 var(--gf-display); letter-spacing: .02em; color: var(--gf-ink); text-decoration: none; padding-top: .08em; transition: letter-spacing .5s var(--gf-ease), color .3s; white-space: nowrap; }
.gf-mast__word:hover { letter-spacing: .05em; color: var(--gf-red); }
.gf-mast__nav { display: flex; align-items: center; gap: 16px; border-top: 1.5px solid var(--gf-ink); border-bottom: 4px solid var(--gf-ink); background: linear-gradient(90deg, rgba(255, 244, 222, 0) 0%, var(--gf-saff-1) 35%, var(--gf-saff-2) 100%); }
.gf-mast__edition { font: italic 400 20px/1 var(--gf-serif); white-space: nowrap; padding: 10px 0; }
.gf-mast__menu { flex: 1; }
.gf-mast__list { list-style: none; margin: 0; padding: 0; display: flex; justify-content: flex-end; }
.gf-mast__list a { position: relative; display: block; padding: 14px 16px; font: 400 13px/1 var(--gf-mono); letter-spacing: .16em; text-transform: uppercase; color: var(--gf-ink); text-decoration: none; }
.gf-mast__list a::after { content: ''; position: absolute; left: 16px; right: 16px; bottom: 8px; height: 2px; background: var(--gf-red); transform: scaleX(0); transform-origin: right; transition: transform .4s var(--gf-ease); }
.gf-mast__list a:hover::after, .gf-mast__list .current-menu-item > a::after { transform: scaleX(1); transform-origin: left; }
.gf-mast__list a:hover { color: var(--gf-red); }
.gf-mast__tools { display: flex; align-items: center; }
.gf-mast__burger { display: none; width: 44px; height: 44px; border: 0; background: none; padding: 12px 10px; cursor: pointer; }
button.gf-mast__burger { color: var(--gf-ink); }
.gf-mast__burger i { display: block; height: 2px; background: var(--gf-ink); margin: 6px 0; transition: transform .3s var(--gf-ease); }
.gf-mast.is-menu-open .gf-mast__burger i:first-child { transform: translateY(4px) rotate(45deg); }
.gf-mast.is-menu-open .gf-mast__burger i:last-child { transform: translateY(-4px) rotate(-45deg); }
@media (max-width: 900px) {
	.gf-mast__top { grid-template-columns: 1fr; text-align: center; gap: 6px; }
	.gf-mast__meta { justify-content: center; }
	.gf-mast__big { font-size: 24px; }
	.gf-mast__meta--right { order: 3; }
	.gf-mast__word { order: 2; font-size: clamp(46px, 14vw, 80px); }
	.gf-mast__meta--left { order: 1; }
	.gf-mast__menu { position: absolute; left: 0; right: 0; top: 100%; background: linear-gradient(160deg, var(--gf-rose-4), var(--gf-rose-6)); padding: 12px 24px 28px; clip-path: inset(0 0 100% 0); transition: clip-path .5s var(--gf-ease); }
	.gf-mast.is-menu-open .gf-mast__menu { clip-path: inset(0 0 0 0); }
	.gf-mast__list { flex-direction: column; }
	.gf-mast__list a { color: var(--gf-bone); font: 400 44px/1 var(--gf-display); letter-spacing: .02em; padding: 10px 0; }
	.gf-mast__list a::after { left: 0; right: auto; width: 40px; background: var(--gf-bone); }
	.gf-mast__burger { display: block; }
	.gf-mast__nav { justify-content: space-between; }
}

/* ---------- Buttons: ink fill sweeps in ---------- */
.gf-btn, .elementor-button { position: relative; overflow: hidden; isolation: isolate; transition: color .35s var(--gf-ease), transform .2s; }
.gf-btn { display: inline-block; padding: 14px 24px; border: 2px solid var(--gf-ink); color: var(--gf-ink); background: transparent; font: 400 12px/1 var(--gf-mono); letter-spacing: .16em; text-transform: uppercase; text-decoration: none; }
.gf-btn::before, .elementor-button::before { content: ''; position: absolute; inset: 0; z-index: -1; background: var(--gf-red); transform: translateY(101%); transition: transform .45s var(--gf-ease); }
.gf-btn:hover, .elementor-button:hover { color: var(--gf-bone) !important; }
.gf-btn:hover::before, .elementor-button:hover::before { transform: translateY(0); }
.gf-btn:active, .elementor-button:active { transform: scale(.97); }

/* ---------- Ruled label headers (class gf-ruled on a heading widget's container) ---------- */
.gf-ruled { border-top: 3px solid var(--gf-ink); padding-top: 12px; }

/* ---------- Category tiles (class gf-tile on the tile container) ---------- */
.gf-tile { position: relative; overflow: hidden; isolation: isolate; transition: transform .45s var(--gf-ease), box-shadow .45s var(--gf-ease); }
.gf-tile::before { content: ''; position: absolute; inset: 0; z-index: -1; background: radial-gradient(circle at 85% 15%, rgba(10, 21, 27, .0) 0 18%, rgba(10, 21, 27, .08) 18% 30%, rgba(10, 21, 27, .14) 30% 44%, rgba(10, 21, 27, .2) 44% 60%, rgba(10, 21, 27, .26) 60%); opacity: 0; transform: scale(.6); transform-origin: 85% 15%; transition: opacity .5s var(--gf-ease), transform .7s var(--gf-ease); }
.gf-tile::after { content: '→'; position: absolute; top: 14px; right: 16px; font: 400 26px/1 var(--gf-display); color: var(--gf-ink); transform: translateX(-10px); opacity: 0; transition: transform .4s var(--gf-ease), opacity .4s; }
.gf-tile:hover { transform: translateY(-6px) rotate(-.6deg); box-shadow: 0 18px 0 -8px var(--gf-ink); }
.gf-tile:hover::before { opacity: 1; transform: scale(1.4); }
.gf-tile:hover::after { opacity: 1; transform: none; }

/* ---------- Reveals: visible by default; JS hides only what is below the fold, then brings it in ---------- */
.gf-pre { opacity: 0; transform: translateY(28px); }
.gf-in { opacity: 1; transform: none; transition: opacity .9s var(--gf-ease), transform .9s var(--gf-ease); }
.gf-rise .elementor-heading-title { clip-path: inset(0 0 0 0); }
.gf-rise.gf-pre { opacity: 1; transform: none; }
.gf-rise.gf-pre .elementor-heading-title { clip-path: inset(0 0 100% 0); transform: translateY(40%); }
.gf-rise.gf-in .elementor-heading-title { clip-path: inset(0 0 0 0); transform: none; transition: clip-path 1s var(--gf-ease), transform 1s var(--gf-ease); }

/* ---------- Daily poll ---------- */
.gf-poll { display: grid; grid-template-columns: 1.25fr 1fr; gap: 20px; }
.gf-poll__card { background: var(--gf-bone); border-top: 4px solid var(--gf-ink); padding: 26px 28px 22px; position: relative; }
.gf-poll__card--today { background: var(--gf-ink); color: var(--gf-paper); border-top-color: var(--gf-sky-4); }
.gf-poll__label { display: flex; justify-content: space-between; align-items: center; font: 400 11px/1 var(--gf-mono); letter-spacing: .16em; text-transform: uppercase; padding-bottom: 14px; border-bottom: 1px solid currentColor; }
.gf-poll__live { display: inline-flex; align-items: center; gap: 8px; }
.gf-poll__live i { width: 8px; height: 8px; border-radius: 50%; background: var(--gf-sky-4); box-shadow: 0 0 0 0 rgba(84, 185, 229, .7); animation: gf-live 1.8s infinite; }
@keyframes gf-live { 70% { box-shadow: 0 0 0 10px rgba(84, 185, 229, 0); } 100% { box-shadow: 0 0 0 0 rgba(84, 185, 229, 0); } }
.gf-poll__q { font: 400 clamp(30px, 3.2vw, 44px)/.95 var(--gf-display); letter-spacing: .01em; margin: 18px 0 8px; text-wrap: balance; }
.gf-poll__headline { margin: 0 0 18px; font: 400 64px/1 var(--gf-display); color: var(--gf-teal-5); font-variant-numeric: tabular-nums; }
.gf-poll__headline em { font: italic 400 22px/1.2 var(--gf-serif); color: var(--gf-ink); margin-left: 10px; }
.gf-poll__bars { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.gf-poll__row { display: grid; grid-template-columns: minmax(0, 190px) 1fr 52px; align-items: center; gap: 14px; position: relative; outline: none; }
.gf-poll__answer { font: 400 15px/1.3 var(--gf-sans); }
.gf-poll__track { height: 22px; background: var(--gf-teal-1); position: relative; }
.gf-poll__fill { position: absolute; inset: 0 auto 0 0; width: var(--w); background: linear-gradient(90deg, var(--gf-teal-2), var(--gf-teal-3)); border-radius: 0 4px 4px 0; transform-origin: left; transition: transform 1.2s var(--gf-ease), filter .2s; }
.gf-poll__row.is-top .gf-poll__fill { background: linear-gradient(90deg, var(--gf-teal-4), var(--gf-teal-5)); }
.gf-poll.gf-pre .gf-poll__fill { transform: scaleX(0); }
.gf-poll__row:nth-child(2) .gf-poll__fill { transition-delay: .1s; }
.gf-poll__row:nth-child(3) .gf-poll__fill { transition-delay: .2s; }
.gf-poll__row:nth-child(4) .gf-poll__fill { transition-delay: .3s; }
.gf-poll__pct { font: 400 14px var(--gf-mono); text-align: right; font-variant-numeric: tabular-nums; }
.gf-poll__row::after { content: attr(data-tip); position: absolute; right: 60px; top: -30px; background: var(--gf-ink); color: var(--gf-paper); font: 400 11px/1 var(--gf-mono); letter-spacing: .08em; padding: 7px 9px; opacity: 0; transform: translateY(4px); pointer-events: none; transition: opacity .2s, transform .2s; }
.gf-poll__row:hover::after, .gf-poll__row:focus::after { opacity: 1; transform: none; }
.gf-poll__row:hover .gf-poll__fill { filter: brightness(.92); }
.gf-poll__foot { margin: 16px 0 0; font: 400 11px var(--gf-mono); letter-spacing: .12em; text-transform: uppercase; opacity: .7; }
.gf-poll__options { display: grid; margin-top: 22px; border-bottom: 1px solid rgba(243, 240, 231, .3); }
button.gf-poll__opt, button.gf-poll__opt:hover, button.gf-poll__opt:focus {
	display: grid; grid-template-columns: 34px 1fr auto 26px; align-items: center; gap: 14px; width: 100%;
	margin: 0; padding: 16px 6px; border: 0; border-top: 1px solid rgba(243, 240, 231, .3); border-radius: 0;
	background: transparent; color: var(--gf-paper); text-align: left; font: 400 18px/1.3 var(--gf-sans);
	cursor: pointer; position: relative; isolation: isolate; box-shadow: none; outline: none; text-transform: none; letter-spacing: 0;
}
button.gf-poll__opt::before { content: ''; position: absolute; inset: 0; z-index: -1; background: linear-gradient(90deg, var(--gf-sky-4), var(--gf-sky-3)); transform: scaleX(0); transform-origin: left; transition: transform .5s var(--gf-ease); }
button.gf-poll__opt:hover::before, button.gf-poll__opt:focus-visible::before, button.gf-poll__opt.is-picked::before { transform: scaleX(1); }
button.gf-poll__opt:hover, button.gf-poll__opt:focus-visible, button.gf-poll__opt.is-picked { color: var(--gf-ink); }
.gf-poll__key { display: grid; place-items: center; width: 30px; height: 30px; border: 1.5px solid currentColor; font: 400 13px/1 var(--gf-mono); letter-spacing: 0; transition: background .3s, color .3s; }
button.gf-poll__opt.is-picked .gf-poll__key { background: var(--gf-ink); color: var(--gf-sky-3); border-color: var(--gf-ink); }
.gf-poll__txt { transition: transform .4s var(--gf-ease); }
button.gf-poll__opt:hover .gf-poll__txt { transform: translateX(6px); }
.gf-poll__mark { font: 400 10px/1 var(--gf-mono); letter-spacing: .16em; text-transform: uppercase; opacity: 0; transition: opacity .3s; }
button.gf-poll__opt.is-picked .gf-poll__mark { opacity: 1; }
.gf-poll__ring { width: 26px; height: 26px; overflow: visible; }
.gf-poll__ring circle { transform-box: view-box; transform-origin: 12px 12px; }
.gf-poll__ring .r1 { fill: none; stroke: currentColor; stroke-width: 1.5; }
.gf-poll__ring .r2, .gf-poll__ring .r3 { fill: none; transform: scale(0); }
.gf-poll__ring .r4 { fill: currentColor; transform: scale(0); }
button.gf-poll__opt:hover .gf-poll__ring .r4 { transform: scale(1); transition: transform .3s var(--gf-ease); }
button.gf-poll__opt.is-picked .gf-poll__ring .r1 { fill: var(--gf-sky-2); stroke: none; }
button.gf-poll__opt.is-picked .gf-poll__ring .r2 { fill: var(--gf-sky-5); transform: scale(1); transition: transform .45s .05s var(--gf-ease); }
button.gf-poll__opt.is-picked .gf-poll__ring .r3 { fill: var(--gf-sky-6); transform: scale(1); transition: transform .45s .12s var(--gf-ease); }
button.gf-poll__opt.is-picked .gf-poll__ring .r4 { fill: var(--gf-bone); transform: scale(1); animation: gf-dotbeat 2.4s ease-in-out infinite; }
.gf-poll__card--today.is-voted button.gf-poll__opt:not(.is-picked) { opacity: .4; cursor: default; }
.gf-poll__card--today.is-voted button.gf-poll__opt:not(.is-picked):hover::before { transform: scaleX(0); }
.gf-poll__card--today.is-voted button.gf-poll__opt:not(.is-picked):hover { color: var(--gf-paper); }

/* The theme styles every button pink; our buttons opt out. */
button.gf-search__bar, button.gf-search__bar:hover, button.gf-search__bar:focus { display: flex; padding: 0; border: 2px solid var(--gf-ink); border-radius: 0; background: var(--gf-bone); color: var(--gf-ink); text-align: left; text-transform: none; letter-spacing: 0; box-shadow: none; }
button.gf-search__icon, button.gf-search__icon:hover, button.gf-search__icon:focus,
button.gf-mast__burger, button.gf-mast__burger:hover, button.gf-mast__burger:focus,
button.gf-search__close, button.gf-search__close:hover, button.gf-search__close:focus { border: 0; border-radius: 0; background: transparent; box-shadow: none; }
button.gf-search__icon { color: var(--gf-ink); padding: 9px; }
button.gf-search__icon:hover { color: var(--gf-red); }
button.gf-search__close { color: var(--gf-paper); padding: 8px 0; }
button.gf-search__close:hover { color: var(--gf-rose-4); }
.gf-poll__thanks { margin: 16px 0 0; font: italic 400 22px var(--gf-serif); color: var(--gf-sky-3); }
.gf-poll__error { margin: 12px 0 0; font: italic 400 18px/1.3 var(--gf-serif); color: var(--gf-paper); }
.gf-poll__empty { margin: 0 0 18px; flex: 1; font: italic 400 22px/1.3 var(--gf-serif); color: var(--gf-ink); }
@media (max-width: 860px) { .gf-poll { grid-template-columns: 1fr; } .gf-poll__row { grid-template-columns: 1fr 52px; } .gf-poll__answer { grid-column: 1 / -1; } }

/* ---------- Ring-dot ratings ---------- */
.gf-dots { display: inline-flex; gap: 5px; }
.gf-dot { width: 26px; height: 26px; overflow: visible; }
.gf-dot circle { transform-box: view-box; transform-origin: 12px 12px; }
.gf-dot__a { fill: none; stroke: rgba(10, 21, 27, .25); stroke-width: 1.5; }
.gf-dot__b, .gf-dot__c { fill: none; }
.gf-dot__d { fill: rgba(10, 21, 27, .25); }
.gf-dot.is-on .gf-dot__a { fill: var(--gf-saff-2); stroke: none; }
.gf-dot.is-on .gf-dot__b { fill: var(--gf-saff-3); }
.gf-dot.is-on .gf-dot__c { fill: var(--gf-saff-5); }
.gf-dot.is-on .gf-dot__d { fill: var(--gf-bone); }
.gf-dots .gf-dot.is-on circle { animation: gf-dotpop .7s var(--gf-ease) both; animation-delay: calc(var(--i) * .12s); }
.gf-dots .gf-dot.is-on .gf-dot__b { animation-delay: calc(var(--i) * .12s + .06s); }
.gf-dots .gf-dot.is-on .gf-dot__c { animation-delay: calc(var(--i) * .12s + .12s); }
.gf-dots .gf-dot.is-on .gf-dot__d { animation: gf-dotbeat 2.4s ease-in-out infinite; animation-delay: calc(var(--i) * .2s); }
.gf-pre .gf-dot circle { animation-play-state: paused; }
@keyframes gf-dotpop { 0% { transform: scale(0); } 70% { transform: scale(1.15); } 100% { transform: scale(1); } }
@keyframes gf-dotbeat { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.6); } }
.gf-reviews__note { font: 400 14px var(--gf-sans); margin: 0 0 16px; color: var(--gf-paper); }
.gf-reviews__note .gf-pill { color: var(--gf-saff-3); border-color: var(--gf-saff-3); margin-right: 6px; }
.gf-pill--light { color: inherit; }
.gf-reviews__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.gf-review { margin: 0; background: var(--gf-bone); color: var(--gf-ink); padding: 24px; display: flex; flex-direction: column; gap: 16px; border-top: 4px solid var(--gf-saff-4); transition: transform .45s var(--gf-ease), box-shadow .45s var(--gf-ease); }
.gf-review:hover { transform: translateY(-6px); box-shadow: 0 16px 0 -6px var(--gf-saff-4); }
.gf-review__quote { margin: 0; font: italic 400 24px/1.25 var(--gf-serif); text-wrap: pretty; }
.gf-review figcaption { margin-top: auto; display: flex; flex-direction: column; gap: 4px; border-top: 1px solid rgba(10, 21, 27, .2); padding-top: 12px; }
.gf-review__biz { font: 400 22px/1 var(--gf-display); letter-spacing: .02em; }
.gf-review__biz a { color: inherit; text-decoration: none; }
.gf-review__biz a:hover { color: var(--gf-red); }
.gf-review__who { font: 400 11px var(--gf-mono); letter-spacing: .12em; text-transform: uppercase; opacity: .7; }
@media (max-width: 860px) { .gf-reviews__grid { grid-template-columns: 1fr; } }

/* ---------- Featured business as a product label ---------- */
.gf-label { background: var(--gf-bone); color: var(--gf-ink); border-top: 5px solid var(--gf-ink); border-bottom: 5px solid var(--gf-ink); }
.gf-label__row { border-bottom: 1.5px solid var(--gf-ink); padding: 16px 22px; }
.gf-label__row:last-child { border-bottom: 0; }
.gf-label__row--top { display: grid; grid-template-columns: 1fr auto; padding: 0; }
.gf-label__name { margin: 0; padding: 18px 22px 12px; font: 400 clamp(52px, 7vw, 104px)/.85 var(--gf-display); letter-spacing: .01em; }
.gf-label__no { display: flex; align-items: center; gap: 14px; border-left: 1.5px solid var(--gf-ink); padding: 0 22px; }
.gf-label__no span { font: 400 11px/1.3 var(--gf-mono); letter-spacing: .14em; text-transform: uppercase; }
.gf-label__no b { font: 400 clamp(44px, 5vw, 72px)/1 var(--gf-mono); color: var(--gf-red); }
/* The stamp sits just left of the number cell's rule, its edge touching "Good Founders". */
.gf-label__no { position: relative; }
.gf-label__no .gf-stamp--sticker { left: auto; right: calc(100% - 18px); top: -48px; }
.gf-label__mono { font: 400 13px/1.5 var(--gf-mono); letter-spacing: .12em; text-transform: uppercase; }
.gf-label__muted { opacity: .65; }
.gf-label__row--3 { display: grid; grid-template-columns: 1fr 1fr auto; padding: 0; }
.gf-label__row--3 span { padding: 14px 22px; }
.gf-label__row--3 span + span { border-left: 1.5px solid var(--gf-ink); }
.gf-label__row--why { display: grid; grid-template-columns: 1fr 240px; gap: 0; padding: 0; }
.gf-label__row--why > div:first-child { padding: 20px 22px 24px; }
.gf-label__why { font: 400 19px/1.55 var(--gf-sans); max-width: 60ch; margin: 10px 0 12px; text-wrap: pretty; }
.gf-label__founder { font: 400 15px var(--gf-sans); margin: 0 0 20px; }
.gf-label__founder em { font: italic 400 22px var(--gf-serif); }
.gf-label__side { border-left: 1.5px solid var(--gf-ink); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 18px; padding: 20px; }
.gf-label__logo img { max-width: 150px; max-height: 70px; width: auto; height: auto; object-fit: contain; }
.gf-stamp { width: 160px; color: var(--gf-red); }
.gf-stamp svg { width: 100%; height: auto; display: block; }
.gf-stamp__spin { transform-box: view-box; transform-origin: 100px 100px; animation: gf-spin 30s linear infinite; }
@keyframes gf-spin { to { transform: rotate(360deg); } }
@media (max-width: 760px) {
	.gf-label__row--top, .gf-label__row--3, .gf-label__row--why { grid-template-columns: 1fr; }
	.gf-label__no, .gf-label__side, .gf-label__row--3 span + span { border-left: 0; border-top: 1.5px solid var(--gf-ink); }
	.gf-label__no { padding: 12px 22px; }
}

/* Featured business: photo beside the label, stamp stuck across the join */
.gf-feature { position: relative; }
.gf-feature.has-photo { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); align-items: stretch; }
.gf-feature__photo { position: relative; display: block; overflow: hidden; background: var(--gf-ink); min-height: 0; }
.gf-feature__photo img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 50% 28%; transform: scale(1.02); transition: transform 1.6s var(--gf-ease); }
.gf-feature:hover .gf-feature__photo img { transform: scale(1.07); }
.gf-feature__cap { position: absolute; left: 0; bottom: 0; background: var(--gf-ink); color: var(--gf-paper); font: 400 11px/1 var(--gf-mono); letter-spacing: .14em; text-transform: uppercase; padding: 11px 14px; }
.gf-feature.gf-pre .gf-feature__photo img { transform: scale(1.18); }
.gf-feature.gf-in .gf-feature__photo img { transition: transform 2s var(--gf-ease); }
.gf-feature.has-photo .gf-label { border-left: 5px solid var(--gf-ink); display: flex; flex-direction: column; }
/* See-through stamp: a lighter red set to multiply, so it reads like ink over whatever it lands on. */
.gf-stamp--sticker { position: absolute; z-index: 3; width: 168px; right: -18px; top: -48px; color: #EF5A68; background: transparent; padding: 0; transform: rotate(-12deg); mix-blend-mode: multiply; transition: transform .6s var(--gf-ease); }
.gf-feature:hover .gf-stamp--sticker { transform: rotate(4deg) scale(1.05); }
.gf-feature.gf-pre .gf-stamp--sticker { transform: rotate(-60deg) scale(.4); opacity: 0; }
.gf-feature.gf-in .gf-stamp--sticker { transition: transform 1s .5s cubic-bezier(.3, 1.6, .5, 1), opacity .4s .5s; }
.gf-label__line { font-size: 14px; }
.gf-label__body { display: grid; grid-template-columns: minmax(0, 1.75fr) minmax(0, 1fr); padding: 0; flex: none; align-items: stretch; }
.gf-label__quote { padding: 26px 26px 30px; display: flex; flex-direction: column; align-items: flex-start; }
.gf-label__body .gf-label__why { font: 400 clamp(26px, 2.3vw, 40px)/1.18 var(--gf-serif); letter-spacing: -.005em; max-width: none; margin: 14px 0 26px; text-wrap: pretty; }
.gf-label__quote .gf-btn { margin-top: 0; }
.gf-label__facts { border-left: 1.5px solid var(--gf-ink); display: flex; flex-direction: column; background: linear-gradient(180deg, var(--gf-saff-1), var(--gf-saff-2)); }
.gf-label__fact { flex: 1; padding: 18px 22px; display: flex; flex-direction: column; justify-content: center; gap: 8px; }
.gf-label__fact + .gf-label__fact { border-top: 1px solid rgba(10, 21, 27, .3); }
.gf-label__fact ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.gf-label__fact li { font: 400 16px/1.35 var(--gf-sans); display: flex; gap: 10px; align-items: baseline; }
.gf-label__fact li::before { content: ''; width: 6px; height: 6px; border-radius: 50%; background: var(--gf-red); flex: none; transform: translateY(-2px); }
.gf-label__name-sm { font: italic 400 clamp(22px, 1.7vw, 28px)/1.1 var(--gf-serif); }
.gf-label__links { display: flex; flex-wrap: wrap; gap: 8px 18px; }
.gf-label__links a { position: relative; font: 400 12px var(--gf-mono); letter-spacing: .14em; text-transform: uppercase; color: var(--gf-ink); text-decoration: none; padding-bottom: 3px; }
.gf-label__links a::after { content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 1.5px; background: var(--gf-red); transform: scaleX(.25); transform-origin: left; transition: transform .4s var(--gf-ease); }
.gf-label__links a:hover::after { transform: scaleX(1); }
@media (max-width: 900px) { .gf-label__body { grid-template-columns: 1fr; } .gf-label__facts { border-left: 0; border-top: 1.5px solid var(--gf-ink); } }
/* Photos share what is left beside a fixed-width logo block (the width it had with three square photos), so four photos come out 3:4 portrait. */
.gf-label__strip { display: grid; grid-template-columns: repeat(var(--n, 4), minmax(0, 1fr)) 28.5714%; padding: 0; }
.gf-label__thumb { aspect-ratio: 3 / 4; overflow: hidden; border-right: 1.5px solid var(--gf-ink); }
.gf-label__thumb img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 0%; transition: transform .8s var(--gf-ease); }
.gf-label__thumb:hover img { transform: scale(1.1); }
.gf-label__strip .gf-label__logo { display: grid; place-items: center; padding: 16px; }
.gf-label__strip .gf-label__logo img { max-width: 140px; max-height: 64px; width: auto; height: auto; }
@media (max-width: 900px) {
	.gf-feature.has-photo { grid-template-columns: 1fr; }
	.gf-feature__photo { min-height: 0; aspect-ratio: 4 / 5; }
	.gf-feature.has-photo .gf-label { border-left: 0; }
	.gf-stamp--sticker { width: 112px; right: 10px; top: -30px; }
	.gf-label__no .gf-stamp--sticker { right: 10px; top: 50%; margin-top: -56px; }
	.gf-label__strip { grid-template-columns: repeat(var(--n, 4), minmax(0, 1fr)); }
	.gf-label__strip .gf-label__logo { grid-column: 1 / -1; border-top: 1.5px solid var(--gf-ink); }
}

/* How a business gets listed: three steps in colour fields */
.gf-steps { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0; border-top: 4px solid var(--gf-ink); border-bottom: 4px solid var(--gf-ink); }
.gf-step { --a: var(--gf-saff-1); --b: var(--gf-saff-2); --d: var(--gf-saff-6); position: relative; padding: 28px 28px 34px; background: linear-gradient(170deg, var(--a), var(--b)); overflow: hidden; isolation: isolate; }
.gf-step + .gf-step { border-left: 1.5px solid var(--gf-ink); }
.gf-step--rose { --a: var(--gf-rose-1); --b: var(--gf-rose-2); --d: var(--gf-rose-6); }
.gf-step--teal { --a: var(--gf-teal-1); --b: var(--gf-teal-2); --d: var(--gf-teal-5); }
.gf-step__n { display: block; font: 400 clamp(120px, 14vw, 220px)/.8 var(--gf-display); color: var(--d); letter-spacing: -.01em; margin: 0 0 10px; transition: transform .7s var(--gf-ease); transform-origin: left bottom; }
.gf-step:hover .gf-step__n { transform: translateY(-6px) scale(1.04); }
.gf-step::after { content: ''; position: absolute; right: -60px; bottom: -60px; width: 220px; height: 220px; z-index: -1; border-radius: 50%; background: radial-gradient(circle, var(--d) 0 8%, transparent 8% 20%, var(--d) 20% 22%, transparent 22% 38%, var(--d) 38% 39.5%, transparent 39.5% 58%, var(--d) 58% 59%, transparent 59%); opacity: .25; transition: transform 1.2s var(--gf-ease), opacity .6s; }
.gf-step:hover::after { transform: scale(1.25) rotate(20deg); opacity: .45; }
.gf-step__t { margin: 0 0 12px; font: 400 clamp(34px, 3.2vw, 48px)/.92 var(--gf-display); letter-spacing: .01em; color: var(--gf-ink); text-wrap: balance; }
.gf-step__p { margin: 0; font: 400 clamp(18px, 1.3vw, 22px)/1.45 var(--gf-sans); color: var(--gf-ink); text-wrap: pretty; }
@media (max-width: 860px) { .gf-steps { grid-template-columns: 1fr; } .gf-step + .gf-step { border-left: 0; border-top: 1.5px solid var(--gf-ink); } }

/* ---------- Story cards with pattern covers ---------- */
.gf-stories { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 22px; }
.gf-story { --c1: var(--gf-teal-1); --c2: var(--gf-teal-2); --c3: var(--gf-teal-3); --c4: var(--gf-teal-4); --c5: var(--gf-teal-5);
	display: flex; flex-direction: column; text-decoration: none; color: var(--gf-ink); background: var(--gf-bone); transition: transform .5s var(--gf-ease); }
.gf-field--rose { --c1: var(--gf-rose-1); --c2: var(--gf-rose-2); --c3: var(--gf-rose-3); --c4: var(--gf-rose-4); --c5: var(--gf-rose-6); }
.gf-field--sky { --c1: var(--gf-sky-1); --c2: var(--gf-sky-2); --c3: var(--gf-sky-3); --c4: var(--gf-sky-4); --c5: var(--gf-sky-5); }
.gf-field--saffron { --c1: var(--gf-saff-1); --c2: var(--gf-saff-2); --c3: var(--gf-saff-3); --c4: var(--gf-saff-4); --c5: var(--gf-saff-5); }
.gf-story__cover { position: relative; display: block; aspect-ratio: 4 / 3; overflow: hidden; background: var(--c1); }
.gf-story__cover::before { content: ''; position: absolute; inset: -10%; transition: transform 1.2s var(--gf-ease); }
.gf-pattern--rings::before { background: radial-gradient(circle at 68% 62%, var(--c5) 0 5%, var(--c4) 5% 13%, var(--c3) 13% 23%, var(--c2) 23% 35%, var(--c1) 35% 50%, transparent 50%), var(--c1); }
.gf-pattern--grid::before { background:
	linear-gradient(90deg, var(--gf-bone) 2px, transparent 2px) 50% 50% / 64px 64px,
	linear-gradient(0deg, var(--gf-bone) 2px, transparent 2px) 50% 50% / 64px 64px,
	radial-gradient(circle at 50% 55%, var(--c5) 0 10%, var(--c4) 10% 24%, var(--c3) 24% 40%, var(--c2) 40% 60%, var(--c1) 60%); }
/* Rings stay circles and grid cells stay square at any card shape; never let a graphic stretch. */
.gf-pattern--bloom::before { background: conic-gradient(from 20deg at 50% 52%, var(--c1), var(--c3), var(--c5), var(--c3), var(--c1), var(--c3), var(--c5), var(--c3), var(--c1)); -webkit-mask: radial-gradient(circle at 50% 52%, #000 0 34%, transparent 34.5%); mask: radial-gradient(circle at 50% 52%, #000 0 34%, transparent 34.5%); }
.gf-pattern--bloom { background: var(--c1); }
.gf-story__no { position: absolute; left: 14px; top: 14px; font: 400 12px var(--gf-mono); letter-spacing: .14em; z-index: 1; }
.gf-story__cover .gf-pill { position: absolute; right: 14px; top: 12px; z-index: 1; }
.gf-story__body { display: flex; flex-direction: column; gap: 10px; padding: 18px 20px 22px; border-top: 4px solid var(--c4); position: relative; isolation: isolate; }
.gf-story__body::before { content: ''; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, var(--c1), var(--c2)); transform: scaleY(0); transform-origin: top; transition: transform .6s var(--gf-ease); }
.gf-story__type { font: 400 11px var(--gf-mono); letter-spacing: .14em; text-transform: uppercase; }
.gf-story__title { font: 400 34px/.95 var(--gf-display); letter-spacing: .01em; text-wrap: balance; }
.gf-story__intro { font: 400 16px/1.5 var(--gf-sans); text-wrap: pretty; }
.gf-story__more { font: 400 12px var(--gf-mono); letter-spacing: .14em; text-transform: uppercase; }
.gf-story__more i { display: inline-block; font-style: normal; transition: transform .4s var(--gf-ease); }
.gf-story:hover { transform: translateY(-8px); }
/* Card text takes a dark shade of its own colour field, and keeps it on hover instead of the site's red link colour. */
.gf-story { --ct: var(--gf-teal-5); }
.gf-story.gf-field--saffron { --ct: var(--gf-saff-6); }
.gf-story.gf-field--sky { --ct: var(--gf-sky-6); }
.gf-story.gf-field--rose { --ct: #8E1F3E; }
body a.gf-story, body a.gf-story:hover, body a.gf-story:focus, body a.gf-story:visited { color: var(--ct); }
.gf-story:hover .gf-story__cover::before { transform: scale(1.12) rotate(4deg); }
.gf-story:hover .gf-story__body::before { transform: scaleY(1); }
.gf-story:hover .gf-story__more i { transform: translateX(8px); }
@media (max-width: 900px) { .gf-stories { grid-template-columns: 1fr; } }

/* ---------- Posts widget cards (Just added) ---------- */
.elementor-posts .elementor-post { transition: transform .45s var(--gf-ease); }
.elementor-posts .elementor-post:hover { transform: translateY(-6px); }

/* Hello Elementor puts a box on search inputs; the takeover needs a bare line. */
.gf-search__takeover input.gf-search__input, .gf-search__takeover input.gf-search__input:focus { border: 0 !important; border-bottom: 3px solid var(--gf-paper) !important; border-radius: 0 !important; box-shadow: none !important; outline: none !important; padding: 0 0 10px !important; background: transparent !important; }

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; }
	.gf-mast__track { animation: none; }
	.gf-pre { opacity: 1 !important; transform: none !important; }
}

/* ---------- Hero: front page opener ---------- */
.gf-hero { padding: 0 var(--gf-gutter); }
.gf-hero__sub { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr); gap: 32px; align-items: end; padding: 28px 0 18px; }
.gf-hero__kicker { font: 400 12px/1.5 var(--gf-mono); letter-spacing: .16em; text-transform: uppercase; }
.gf-hero__intro { margin: 0; font: 400 clamp(16px, 1.39vw, 21px)/1.4 var(--gf-sans); justify-self: end; max-width: 40ch; text-align: right; text-wrap: pretty; }
.gf-hero__head { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 32px; border-top: 6px solid var(--gf-ink); padding-top: 18px; }
.gf-hero__title { margin: 0; font: 400 clamp(64px, 10.5vw, 210px)/.84 var(--gf-display); letter-spacing: -.005em; color: var(--gf-ink); }
.gf-hero__line { display: block; }
.gf-hero__ring { width: clamp(150px, 22vw, 400px); }
.gf-hero__ring .gf-rings { width: 100%; }
@media (max-width: 760px) { .gf-hero__head { grid-template-columns: 1fr; } .gf-hero__title { font-size: 21vw; } .gf-hero__sub { grid-template-columns: 1fr; gap: 12px; } .gf-hero__intro { justify-self: start; text-align: left; } }

button.gf-hero__search, button.gf-hero__search:hover, button.gf-hero__search:focus {
	display: grid; grid-template-columns: auto 1fr auto; align-items: stretch; width: 100%; margin: 22px 0 0; padding: 0;
	border: 0; border-top: 4px solid var(--gf-ink); border-bottom: 1.5px solid var(--gf-ink); border-radius: 0;
	background: transparent; color: var(--gf-ink); text-align: left; cursor: text; box-shadow: none; text-transform: none; letter-spacing: 0;
}
.gf-hero__search-label { display: flex; align-items: center; padding: 0 22px 0 0; font: 400 12px var(--gf-mono); letter-spacing: .16em; text-transform: uppercase; border-right: 1.5px solid var(--gf-ink); }
.gf-hero__search-text { display: flex; align-items: center; padding: 18px 24px; font: italic 400 clamp(30px, 3.6vw, 60px)/1 var(--gf-serif); color: var(--gf-ink); overflow: hidden; white-space: nowrap; background: linear-gradient(90deg, var(--gf-bone), transparent); transition: background .4s; }
.gf-hero__caret { display: inline-block; width: 3px; height: .9em; margin-left: 6px; background: var(--gf-red); animation: gf-caret 1s steps(1) infinite; }
@keyframes gf-caret { 50% { opacity: 0; } }
.gf-hero__search-go { display: flex; align-items: center; gap: 12px; padding: 0 clamp(20px, 3vw, 44px); background: var(--gf-ink); color: var(--gf-paper); font: 400 13px var(--gf-mono); letter-spacing: .18em; text-transform: uppercase; position: relative; overflow: hidden; isolation: isolate; }
.gf-hero__search-go svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 2; }
.gf-hero__search-go::before { content: ''; position: absolute; inset: 0; z-index: -1; background: var(--gf-red); transform: translateX(-101%); transition: transform .45s var(--gf-ease); }
button.gf-hero__search:hover .gf-hero__search-go::before { transform: none; }
button.gf-hero__search:hover .gf-hero__search-text { background: linear-gradient(90deg, var(--gf-saff-1), transparent); }
@media (max-width: 760px) { .gf-hero__search-label { display: none; } .gf-hero__search-text { font-size: 24px; padding: 16px 14px; } .gf-hero__search-go { padding: 0 16px; font-size: 0; gap: 0; } }

.gf-hero__cats { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); border-bottom: 4px solid var(--gf-ink); }
.gf-hero__cat { --c1: var(--gf-teal-1); --c2: var(--gf-teal-2); --c4: var(--gf-teal-4); position: relative; display: flex; flex-direction: column; justify-content: space-between; gap: 22px; min-height: 120px; padding: 14px 16px 16px; color: var(--gf-ink); text-decoration: none; isolation: isolate; overflow: hidden; }
.gf-hero__cat + .gf-hero__cat { border-left: 1.5px solid var(--gf-ink); }
.gf-hero__cat.gf-field--rose { --c1: var(--gf-rose-1); --c2: var(--gf-rose-3); --c4: var(--gf-rose-5); }
.gf-hero__cat.gf-field--sky { --c1: var(--gf-sky-1); --c2: var(--gf-sky-3); --c4: var(--gf-sky-5); }
.gf-hero__cat.gf-field--saffron { --c1: var(--gf-saff-1); --c2: var(--gf-saff-3); --c4: var(--gf-saff-5); }
.gf-hero__cat::before { content: ''; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, var(--c1), var(--c2)); transform: scaleY(0); transform-origin: bottom; transition: transform .55s var(--gf-ease); }
.gf-hero__cat:hover::before, .gf-hero__cat:focus-visible::before { transform: scaleY(1); }
.gf-hero__cat i { width: 18px; height: 18px; border-radius: 50%; background: radial-gradient(circle, var(--gf-bone) 0 18%, var(--c4) 18% 42%, var(--c2) 42% 70%, var(--c1) 70%); transition: transform .6s var(--gf-ease); }
.gf-hero__cat:hover i { transform: scale(2.2); }
.gf-hero__cat span { font: 400 clamp(22px, 1.9vw, 32px)/.92 var(--gf-display); letter-spacing: .01em; text-wrap: balance; }
.gf-hero__cat b { position: absolute; right: 14px; top: 10px; font: 400 22px/1 var(--gf-display); font-weight: 400; opacity: 0; transform: translateX(-8px); transition: opacity .3s, transform .4s var(--gf-ease); }
.gf-hero__cat:hover b { opacity: 1; transform: none; }
@media (max-width: 1100px) { .gf-hero__cats { grid-template-columns: repeat(4, minmax(0, 1fr)); } .gf-hero__cat:nth-child(5) { border-left: 0; } .gf-hero__cat:nth-child(n+5) { border-top: 1.5px solid var(--gf-ink); } }
@media (max-width: 600px) { .gf-hero__cats { grid-template-columns: repeat(2, minmax(0, 1fr)); } .gf-hero__cat:nth-child(odd) { border-left: 0; } .gf-hero__cat:nth-child(even) { border-left: 1.5px solid var(--gf-ink); } .gf-hero__cat:nth-child(n+3) { border-top: 1.5px solid var(--gf-ink); } .gf-hero__cat { min-height: 96px; } }
[data-elementor-type="wp-page"] > .e-con.gf-bleed { --padding-left: 0px !important; --padding-right: 0px !important; --padding-top: 0px !important; }

/* ---------- Nominate band: rose colour grid + nomination slip ---------- */
.gf-nom { position: relative; overflow: hidden; isolation: isolate; background: #FFD1DC; border-top: 4px solid var(--gf-ink); border-bottom: 4px solid var(--gf-ink); }
.gf-nom__grid { position: absolute; inset: 0; width: 100%; height: 100%; z-index: -1; }
.gf-nom__grid rect { animation: gf-nom-ripple 6s ease-in-out infinite; animation-delay: calc(var(--d) * -.35s); }
@keyframes gf-nom-ripple { 0%, 100% { opacity: 1; } 50% { opacity: .78; } }
.gf-nom__inner { display: flex; justify-content: center; align-items: center; gap: clamp(28px, 3vw, 48px); padding: clamp(64px, 8vw, 128px) var(--gf-gutter); }
.gf-nom__copy { position: relative; z-index: 1; }
.gf-nom .gf-slip { position: relative; z-index: 2; width: min(500px, 34vw); flex: none; margin: 0; }
.gf-nom__copy { justify-self: start; width: fit-content; background: var(--gf-paper); padding: clamp(24px, 3vw, 44px); border-top: 5px solid var(--gf-ink); box-shadow: 14px 14px 0 var(--gf-ink); }
.gf-nom__kicker { display: inline-flex; align-items: center; gap: 10px; font: 400 12px/1 var(--gf-mono); letter-spacing: .16em; text-transform: uppercase; color: var(--gf-ink); }
.gf-nom__kicker::before { content: ''; width: 10px; height: 10px; border-radius: 50%; background: var(--gf-red); box-shadow: 0 0 0 0 rgba(221, 31, 59, .6); animation: gf-live 1.8s infinite; }
.gf-nom__title { margin: 16px 0 18px; font: 400 clamp(72px, 9vw, 168px)/.84 var(--gf-display); letter-spacing: -.005em; color: var(--gf-ink); }
.gf-nom__title span { display: block; }
.gf-nom__title span + span { color: var(--gf-red); }
.gf-nom__text { width: 0; min-width: 100%; margin: 0; font: 400 clamp(22px, 1.8vw, 30px)/1.3 var(--gf-serif); color: var(--gf-ink); text-wrap: pretty; }
.gf-slip { display: block; background: var(--gf-bone); color: var(--gf-ink); text-decoration: none; border-top: 5px solid var(--gf-ink); border-bottom: 5px solid var(--gf-ink); transform: rotate(3deg); box-shadow: 0 24px 40px -18px rgba(10, 21, 27, .45); transition: transform .6s var(--gf-ease), box-shadow .6s var(--gf-ease); }
.gf-slip:hover, .gf-slip:focus-visible { transform: rotate(0) translateY(-6px); box-shadow: 0 34px 50px -20px rgba(10, 21, 27, .5); }
.gf-slip__head { display: flex; justify-content: space-between; align-items: baseline; padding: 16px 20px; border-bottom: 1.5px solid var(--gf-ink); font: 400 13px var(--gf-mono); letter-spacing: .16em; text-transform: uppercase; }
.gf-slip__head b { font: 400 28px/1 var(--gf-mono); color: var(--gf-red); letter-spacing: 0; }
.gf-slip__row { display: grid; grid-template-columns: 9.5em 1fr; align-items: end; gap: 14px; padding: 18px 20px 12px; border-bottom: 1px solid rgba(10, 21, 27, .25); }
.gf-slip__row i { font: italic 400 20px/1 var(--gf-serif); }
.gf-slip__row em { display: block; height: 1px; border-bottom: 1.5px dotted var(--gf-ink); }
.gf-slip__row--tick > span { font: 400 12px var(--gf-mono); letter-spacing: .14em; text-transform: uppercase; display: flex; align-items: center; gap: 8px; }
.gf-slip__row--tick u { display: inline-block; width: 16px; height: 16px; border: 1.5px solid var(--gf-ink); }
.gf-slip__go { position: relative; display: flex; justify-content: space-between; align-items: center; padding: 20px; background: var(--gf-ink); color: var(--gf-paper); font: 400 13px var(--gf-mono); letter-spacing: .18em; text-transform: uppercase; overflow: hidden; isolation: isolate; }
.gf-slip__go b { font: 400 30px/1 var(--gf-display); transition: transform .4s var(--gf-ease); }
.gf-slip__go::before { content: ''; position: absolute; inset: 0; z-index: -1; background: var(--gf-red); transform: translateX(-101%); transition: transform .5s var(--gf-ease); }
.gf-slip:hover .gf-slip__go::before { transform: none; }
.gf-slip:hover .gf-slip__go b { transform: translateX(6px); }
.gf-nom.gf-pre .gf-slip { transform: rotate(14deg) translateY(60px); opacity: 0; }
.gf-nom.gf-in .gf-slip { transition: transform 1.1s .2s cubic-bezier(.3, 1.4, .5, 1), opacity .5s .2s, box-shadow .6s; }
@media (max-width: 900px) { .gf-nom__inner { flex-direction: column; } .gf-nom .gf-slip { width: 100%; margin: 0; } .gf-slip { transform: rotate(1.5deg); } .gf-nom__copy { box-shadow: 8px 8px 0 var(--gf-ink); } }

/* One rhythm between sections: no stacked padding, nothing under the hero strip. */
/* Even rhythm: every section carries half the gap above and half below, so neighbours never touch. */
[data-elementor-type="wp-page"] > .e-con { --padding-top: clamp(28px, 2.8vw, 48px) !important; --padding-bottom: clamp(28px, 2.8vw, 48px) !important; }
[data-elementor-type="wp-page"] > .e-con.gf-bleed { --padding-top: 0px !important; --padding-bottom: 0px !important; }
[data-elementor-type="wp-page"] > .e-con:has(.gf-reviews) { --padding-top: clamp(56px, 5.5vw, 104px) !important; --padding-bottom: clamp(56px, 5.5vw, 104px) !important; margin: clamp(28px, 2.8vw, 48px) 0; }

/* Poll as one unit: equal card heights, bars thicken to fill, and they always animate in. */
.gf-poll { align-items: stretch; }
.gf-poll__card { display: flex; flex-direction: column; }
.gf-poll__card--results .gf-poll__bars { flex: 1; grid-auto-rows: 1fr; align-content: stretch; gap: 12px; }
.gf-poll__card--results .gf-poll__row { align-items: stretch; }
.gf-poll__card--results .gf-poll__answer, .gf-poll__card--results .gf-poll__pct { align-self: center; }
.gf-poll__card--results .gf-poll__track { height: auto; min-height: 34px; }
.gf-poll__card--results .gf-poll__fill { border-radius: 0 6px 6px 0; }
.gf-poll__pct { font-size: 16px; }
.gf-poll.is-wait .gf-poll__fill { transform: scaleX(0); transition: none; }
.gf-poll__card--today .gf-poll__options { flex: 1; grid-auto-rows: 1fr; }

/* Theme links are pink; the brand's are ink with a red hover. */
body a { color: var(--gf-ink); }
body a:hover { color: var(--gf-red); }
.gf-mast__ticker a, .gf-search__takeover a, .elementor-location-footer a { color: inherit; }

/* Consistent space between a module and the button under it. */
.elementor-widget-gf-reviews + .elementor-widget-button, .elementor-widget-gf-story-cards + .elementor-widget-button, .elementor-widget-gf-poll + .elementor-widget-button { margin-top: clamp(12px, 1.4vw, 24px); }

/* No doubled rules: a section that follows a full-width band already closed by a heavy rule drops its own top rule and sits up close. */
[data-elementor-type="wp-page"] > .e-con.gf-bleed + .e-con { --padding-top: clamp(18px, 1.8vw, 28px) !important; }
[data-elementor-type="wp-page"] > .e-con.gf-bleed + .e-con > .e-con-inner > .e-con:first-child,
[data-elementor-type="wp-page"] > .e-con.gf-bleed + .e-con > .e-con:first-child { border-top-width: 0 !important; --border-top-width: 0px !important; padding-top: 0 !important; --padding-top: 0px !important; }

/* A section that ends on a ruled module (the featured label) closes on that rule; the next heading drops its own. */
[data-elementor-type="wp-page"] > .e-con:has(.gf-feature) { --padding-bottom: 0px !important; }
[data-elementor-type="wp-page"] > .e-con:has(.gf-feature) + .e-con { --padding-top: clamp(22px, 2.2vw, 34px) !important; }
[data-elementor-type="wp-page"] > .e-con:has(.gf-feature) + .e-con > .e-con-inner > .e-con:first-child,
[data-elementor-type="wp-page"] > .e-con:has(.gf-feature) + .e-con > .e-con:first-child { border-top-width: 0 !important; --border-top-width: 0px !important; padding-top: 0 !important; --padding-top: 0px !important; }

/* The typing line keeps its height while the text empties and refills, so the search bar never jumps. */
.gf-hero__search-text { height: calc(1.2em + 36px); box-sizing: border-box; line-height: 1.2; }
.gf-hero__search-text [data-gf-typed] { display: inline-block; min-height: 1.2em; line-height: 1.2; }
.gf-hero__caret { height: 1em; flex: none; }
@media (max-width: 760px) { .gf-hero__search-text { height: calc(1.2em + 32px); } }

/* Photos always fill their frame; Elementor's img { height: auto } must not win. */
.gf-feature__photo img, .gf-label__thumb img { position: absolute !important; inset: 0 !important; width: 100% !important; height: 100% !important; max-width: none !important; object-fit: cover !important; }
.gf-label__thumb { position: relative; }
.gf-poll__card--today .gf-poll__q { color: var(--gf-sky-4); }

/* ---------- Hero map: South Africa in tonal dots ---------- */
.gf-hero__map { width: clamp(300px, 44vw, 860px); align-self: center; }
.gf-hero__map svg { display: block; width: 100%; height: auto; overflow: visible; }
.gf-map__dots circle { transform-box: fill-box; transform-origin: center; animation: gf-map-in .9s cubic-bezier(.2, .7, .2, 1) both; animation-delay: calc(var(--d) * 45ms); }
.gf-map__dots .t1 { fill: #0B2429; } .gf-map__dots .t2 { fill: #175057; } .gf-map__dots .t3 { fill: #1E7C86; }
.gf-map__dots .t4 { fill: #2BB3C1; } .gf-map__dots .t5 { fill: #6FC9D1; } .gf-map__dots .t6 { fill: #A4DBDE; }
@keyframes gf-map-in { from { opacity: 0; transform: scale(0); } to { opacity: 1; transform: scale(1); } }
.gf-map__city .a { fill: var(--gf-bone); stroke: var(--gf-ink); stroke-width: .5; }
.gf-map__city .b { fill: var(--gf-red); }
.gf-map__city .c { fill: var(--gf-bone); }
.gf-map__city .p { fill: none; stroke: var(--gf-red); stroke-width: .5; transform-box: fill-box; transform-origin: center; animation: gf-map-ping 3.6s cubic-bezier(.2, .6, .3, 1) infinite; animation-delay: calc(1.2s + var(--i) * .45s); opacity: 0; }
@keyframes gf-map-ping { 0% { transform: scale(1); opacity: .9; } 70% { opacity: 0; } 100% { transform: scale(4.5); opacity: 0; } }
.gf-map__city text { font: 400 2.5px var(--gf-mono); letter-spacing: .32px; fill: var(--gf-ink); paint-order: stroke; stroke: var(--gf-paper); stroke-width: .9px; stroke-linejoin: round; }
.gf-map__town .a { fill: var(--gf-bone); stroke: var(--gf-ink); stroke-width: .4; }
.gf-map__town .b { fill: var(--gf-ink); }
.gf-map__town text { font: italic 400 3.1px var(--gf-serif); fill: var(--gf-ink); paint-order: stroke; stroke: var(--gf-paper); stroke-width: .9px; stroke-linejoin: round; }
.gf-map__city, .gf-map__town { animation: gf-map-label .6s ease both; animation-delay: calc(.9s + var(--i) * .08s); }
@keyframes gf-map-label { from { opacity: 0; } to { opacity: 1; } }
.gf-map__town:hover .a, .gf-map__city:hover .a { fill: var(--gf-saff-3); }
@media (max-width: 760px) { .gf-hero__map { width: 100%; order: -1; } }
@media (prefers-reduced-motion: reduce) { .gf-map__dots circle, .gf-map__city, .gf-map__town { animation: none; } .gf-map__city .p { display: none; } }

/* Hero: left column (small line, intro, headline) and the map share one row and finish level. */
.gf-hero__head { grid-template-columns: minmax(0, 1fr) minmax(0, .95fr); align-items: stretch; gap: clamp(20px, 3vw, 56px); padding-top: 0; }
.gf-hero__left { display: flex; flex-direction: column; justify-content: space-between; padding: 22px 0 6px; }
.gf-hero__left .gf-hero__sub { display: flex; flex-direction: column; align-items: flex-start; gap: 14px; padding: 0 0 clamp(24px, 3vw, 48px); }
.gf-hero__left .gf-hero__intro { justify-self: start; text-align: left; max-width: none; }
.gf-hero__map { position: relative; width: auto; min-height: 340px; align-self: stretch; }
.gf-hero__map svg { position: absolute; inset: 0; width: 100%; height: 100%; }
@media (max-width: 760px) { .gf-hero__head { grid-template-columns: 1fr; } .gf-hero__map { order: 2; min-height: 0; aspect-ratio: 1.45; } .gf-hero__left { padding-top: 16px; } }
.gf-hero__head { border-top: 0; }

/* Hero, final: left column is as wide as the headline; the map fills the rest at its true shape. */
.gf-hero__head { grid-template-columns: auto minmax(0, 1fr); align-items: stretch; }
.gf-hero__left { justify-content: space-between; }
.gf-hero__left .gf-hero__intro { width: 0; min-width: 100%; }
.gf-hero__map { min-height: 0; aspect-ratio: 170.9 / 139.0; align-self: center; }
.gf-hero__title { white-space: nowrap; }
@media (max-width: 760px) { .gf-hero__head { grid-template-columns: 1fr; } .gf-hero__title { white-space: normal; } }
/* Balance: the map takes the left column's height; the headline is sized so headline + map fill the width. */
.gf-hero__head { grid-template-columns: auto minmax(0, 1fr); align-items: stretch; }
.gf-hero__title { font-size: clamp(64px, 14.2vw, 330px); }
.gf-hero__left { justify-content: flex-start; padding-bottom: 0; }
.gf-hero__map { aspect-ratio: auto; align-self: stretch; height: auto; min-height: 0; }
.gf-hero__map svg { position: absolute; inset: 0; width: 100%; height: 100%; }
@media (max-width: 760px) { .gf-hero__map { aspect-ratio: 1.229; } .gf-hero__map svg { position: static; } }

/* ---------- Business page ---------- */
.gf-biz { --c1: var(--gf-teal-1); --c2: var(--gf-teal-2); --c3: var(--gf-teal-3); --c4: var(--gf-teal-4); --c5: var(--gf-teal-5); color: var(--gf-ink); }
.gf-biz.gf-field--rose { --c1: var(--gf-rose-1); --c2: var(--gf-rose-2); --c3: var(--gf-rose-3); --c4: var(--gf-rose-4); --c5: var(--gf-rose-6); }
.gf-biz.gf-field--sky { --c1: var(--gf-sky-1); --c2: var(--gf-sky-2); --c3: var(--gf-sky-3); --c4: var(--gf-sky-4); --c5: var(--gf-sky-5); }
.gf-biz.gf-field--saffron { --c1: var(--gf-saff-1); --c2: var(--gf-saff-2); --c3: var(--gf-saff-3); --c4: var(--gf-saff-4); --c5: var(--gf-saff-5); }
.gf-biz__head { padding: clamp(20px, 2.4vw, 36px) var(--gf-gutter) 0; }
.gf-biz__crumbs { display: flex; gap: 10px; font: 400 12px var(--gf-mono); letter-spacing: .16em; text-transform: uppercase; }
.gf-biz__crumbs span { opacity: .5; }
.gf-biz__titlerow { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: 24px; margin-top: clamp(10px, 1.4vw, 20px); }
.gf-biz__name { margin: 0; font: 400 clamp(72px, 12vw, 250px)/.82 var(--gf-display); letter-spacing: -.005em; overflow-wrap: anywhere; }
/* Accents (É) rise about .16em above the capitals; give them room so they never touch the line above. */
.gf-biz__name.has-accent { padding-top: .14em; }
.gf-card__name.has-accent { padding-top: .16em; }
.gf-biz__no { display: flex; align-items: center; gap: 14px; padding-bottom: .6vw; }
.gf-biz__no span { font: 400 11px/1.3 var(--gf-mono); letter-spacing: .14em; text-transform: uppercase; }
.gf-biz__no b { font: 400 clamp(48px, 5vw, 96px)/1 var(--gf-mono); color: var(--gf-red); }
.gf-biz__line { margin: clamp(14px, 1.6vw, 24px) 0 clamp(18px, 2vw, 28px); font: italic 400 clamp(26px, 2.6vw, 46px)/1.15 var(--gf-serif); text-wrap: balance; }
.gf-biz__facts { display: flex; flex-wrap: wrap; border-top: 1.5px solid var(--gf-ink); }
.gf-biz__facts > * { display: flex; align-items: center; gap: 10px; padding: 16px 22px; font: 400 12px var(--gf-mono); letter-spacing: .16em; text-transform: uppercase; color: var(--gf-ink); text-decoration: none; border-right: 1.5px solid var(--gf-ink); }
.gf-biz__facts > *:first-child { padding-left: 0; }
.gf-biz__facts > *:last-child { border-right: 0; }
.gf-biz__facts i { width: 12px; height: 12px; border-radius: 50%; background: radial-gradient(circle, var(--gf-bone) 0 20%, var(--c4) 20% 48%, var(--c2) 48%); }
.gf-biz__facts a:hover { color: var(--gf-red); }

.gf-biz__photos { position: relative; display: grid; gap: 4px; background: var(--gf-ink); border-top: 4px solid var(--gf-ink); border-bottom: 4px solid var(--gf-ink); height: clamp(380px, 62vh, 760px); }
/* Photos sit side by side in tall tiles, so full-length portraits keep their heads. */
.gf-biz__photos--1 { grid-template-columns: minmax(0, 1fr); }
.gf-biz__photos--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.gf-biz__photos--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.gf-biz__photos--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
/* Four across, the tiles take the 2:3 shape of a portrait photo, so the whole frame shows and heads keep their headroom. */
.gf-biz__photos--4 { height: auto; }
.gf-biz__photos--4 .gf-biz__photo { aspect-ratio: 2 / 3; }
.gf-biz__photo { position: relative; margin: 0; overflow: hidden; min-height: 0; }
.gf-biz__photo img { position: absolute !important; inset: 0 !important; width: 100% !important; height: 100% !important; max-width: none !important; object-fit: cover !important; object-position: 50% 0%; transition: transform 1.4s var(--gf-ease); }
/* Photos crop from the top edge and zoom from it too, so heads near the top of a frame never get cut. */
.gf-biz__photo img, .gf-card__img { transform-origin: 50% 0; }
.gf-biz__photo:hover img { transform: scale(1.05); }
.gf-biz__cover { position: relative; height: clamp(260px, 38vh, 460px); border-top: 4px solid var(--gf-ink); border-bottom: 4px solid var(--gf-ink); background: radial-gradient(circle at 72% 58%, var(--c5) 0 4%, var(--c4) 4% 11%, var(--c3) 11% 20%, var(--c2) 20% 32%, var(--c1) 32% 48%, transparent 48%), var(--c1); }
/* The stamp sits in the photos' bottom corner, clear of faces at the top of the frame. */
.gf-biz__stamp.gf-stamp--sticker { left: auto; right: var(--gf-gutter); top: auto; bottom: clamp(16px, 2vw, 32px); width: clamp(120px, 11vw, 176px); }
/* The nominate band opens with its own heavy rule, so the page's last block drops its bottom one. */
.gf-biz > :last-child { border-bottom: 0; }

.gf-biz__body { display: grid; grid-template-columns: minmax(0, 1.75fr) minmax(0, 1fr); align-items: stretch; border-bottom: 4px solid var(--gf-ink); }
.gf-biz__why { display: flex; flex-direction: column; justify-content: center; align-items: flex-start; gap: 18px; padding: clamp(28px, 3.4vw, 56px) clamp(24px, 3vw, 48px) clamp(28px, 3.4vw, 56px) var(--gf-gutter); }
.gf-biz__btns { display: flex; flex-wrap: wrap; gap: 12px; }
.gf-btn.gf-btn--ink { background: var(--gf-ink); color: var(--gf-bone); }
.gf-biz__why p { margin: 0; font: 400 clamp(30px, 2.7vw, 50px)/1.16 var(--gf-serif); letter-spacing: -.005em; text-wrap: pretty; }
.gf-biz__label { font: 400 11px var(--gf-mono); letter-spacing: .16em; text-transform: uppercase; color: #474e52; }
.gf-biz__side { display: flex; flex-direction: column; border-left: 1.5px solid var(--gf-ink); background: linear-gradient(180deg, var(--c1), var(--c2)); }
.gf-biz__cell { flex: 1; display: flex; flex-direction: column; justify-content: center; gap: 8px; padding: 18px var(--gf-gutter) 18px 26px; }
.gf-biz__cell + .gf-biz__cell { border-top: 1px solid rgba(10, 21, 27, .28); }
.gf-biz__cell ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 5px; }
.gf-biz__cell li { font: 400 16px/1.35 var(--gf-sans); display: flex; gap: 10px; align-items: baseline; }
.gf-biz__cell li::before { content: ''; width: 6px; height: 6px; border-radius: 50%; background: var(--gf-red); flex: none; transform: translateY(-2px); }
.gf-biz__founder { font: italic 400 clamp(24px, 1.9vw, 32px)/1.1 var(--gf-serif); }
.gf-biz__links { display: flex; flex-wrap: wrap; gap: 8px 20px; }
.gf-biz__links a, .gf-biz__val a { position: relative; font: 400 12px var(--gf-mono); letter-spacing: .14em; text-transform: uppercase; color: var(--gf-ink); text-decoration: none; padding-bottom: 3px; }
.gf-biz__links a::after { content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 1.5px; background: var(--gf-red); transform: scaleX(.25); transform-origin: left; transition: transform .4s var(--gf-ease); }
.gf-biz__links a:hover::after { transform: scaleX(1); }
.gf-biz__val { font: 400 16px/1.4 var(--gf-sans); }
.gf-biz__logo { align-items: flex-start; }
.gf-biz__logo img { max-width: 170px; max-height: 70px; width: auto; height: auto; }

/* Reviews on a business page: ruled columns, ring-dot ratings, an average up top. */
.gf-biz__reviews { padding: clamp(28px, 3.4vw, 56px) var(--gf-gutter); border-bottom: 4px solid var(--gf-ink); background: linear-gradient(180deg, var(--c1), var(--gf-paper)); }
.gf-biz__reviews-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 16px; }
.gf-biz__reviews-head .gf-pill { margin-left: 8px; color: var(--gf-red); }
.gf-biz__reviews-avg { display: flex; align-items: center; gap: 12px; font: 400 11px var(--gf-mono); letter-spacing: .14em; text-transform: uppercase; }
.gf-biz__reviews-avg b { font: 400 40px/1 var(--gf-display); letter-spacing: .02em; }
.gf-biz__reviews-note { margin: 10px 0 0; font: 400 14px/1.4 var(--gf-sans); color: #474e52; }
.gf-biz__reviews-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); margin-top: clamp(18px, 2vw, 28px); border-top: 1.5px solid var(--gf-ink); }
.gf-biz__review { display: flex; flex-direction: column; gap: 16px; margin: 0; padding: 22px 24px 4px 0; }
.gf-biz__review + .gf-biz__review { padding-left: 24px; border-left: 1.5px solid var(--gf-ink); }
.gf-biz__review .gf-dot { width: 20px; height: 20px; }
.gf-biz__review blockquote { margin: 0; font: italic 400 clamp(22px, 1.6vw, 28px)/1.25 var(--gf-serif); text-wrap: pretty; }
.gf-biz__review figcaption { margin-top: auto; padding-top: 12px; border-top: 1px solid rgba(10, 21, 27, .25); font: 400 11px var(--gf-mono); letter-spacing: .14em; text-transform: uppercase; }
/* Founder and business write-ups: name on the left, text flowing in two balanced columns on the right. */
.gf-biz__about { border-bottom: 4px solid var(--gf-ink); }
.gf-biz__about-row { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2.4fr); gap: 40px; padding: clamp(28px, 3.4vw, 56px) var(--gf-gutter); }
.gf-biz__about-row + .gf-biz__about-row { border-top: 1.5px solid var(--gf-ink); }
.gf-biz__about-head { display: flex; flex-direction: column; gap: 12px; }
.gf-biz__founder-photo { margin: 10px 0 0; width: min(100%, 320px); aspect-ratio: 4 / 5; overflow: hidden; border: 1.5px solid var(--gf-ink); }
.gf-biz__founder-photo img { width: 100% !important; height: 100% !important; max-width: none !important; object-fit: cover; object-position: 50% 15%; display: block; }
/* A landscape founder photo (often two people side by side) shows whole in its own shape, so no face is cut. */
.gf-biz__founder-photo.is-landscape { aspect-ratio: auto; }
.gf-biz__founder-photo.is-landscape img { height: auto !important; }
.gf-biz__about-name { margin: 0; font: 400 clamp(44px, 4.4vw, 84px)/.9 var(--gf-display); color: var(--gf-ink); }
.gf-biz__about-text { font: 400 clamp(17px, 1.15vw, 20px)/1.6 var(--gf-sans); columns: 2 30ch; column-gap: 48px; column-rule: 1px solid rgba(10, 21, 27, .2); }
.gf-biz__about-text p { margin: 0 0 1em; }
.gf-biz__about-text p:last-child { margin-bottom: 0; }
.gf-biz__more { padding: clamp(28px, 3vw, 48px) var(--gf-gutter); border-bottom: 4px solid var(--gf-ink); }
.gf-biz__more-head { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 16px; font: 400 12px var(--gf-mono); letter-spacing: .14em; text-transform: uppercase; }
.gf-biz__more-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); border-top: 1.5px solid var(--gf-ink); } /* cards stretch to fill the row, however many there are */
.gf-biz__card { display: flex; flex-direction: column; gap: 8px; padding: 18px 18px 22px 0; color: var(--gf-ink); text-decoration: none; }
.gf-biz__card + .gf-biz__card { border-left: 1.5px solid var(--gf-ink); padding-left: 18px; }
.gf-biz__card b { font: 400 30px/.95 var(--gf-display); font-weight: 400; }
.gf-biz__card span { font: 400 15px/1.4 var(--gf-sans); }
.gf-biz__card:hover b { color: var(--gf-red); }

/* Search bar on list and business pages: full width, label lined up with the page gutter. */
.gf-findbar button.gf-hero__search { margin: 0; }
.gf-findbar .gf-hero__search-label { padding-left: var(--gf-gutter); }
.gf-findbar + .gf-grid__cats { border-top: 0; }
.gf-findbar--top button.gf-hero__search { border-top: 0; }

/* ---------- Business grid (list, category, town and search pages) ---------- */
.gf-grid { color: var(--gf-ink); overflow: hidden; }
.gf-grid__head { padding: clamp(20px, 2.4vw, 36px) var(--gf-gutter) clamp(22px, 2.4vw, 36px); }
.gf-grid__titlerow { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: 24px; margin-top: clamp(10px, 1.4vw, 20px); }
.gf-grid__title { margin: 0; font: 400 clamp(64px, 8vw, 160px)/.86 var(--gf-display); overflow-wrap: anywhere; }
.gf-grid__count { display: flex; align-items: center; gap: 14px; margin: 0; padding-bottom: .5vw; }
.gf-grid__count b { font: 400 clamp(48px, 5vw, 96px)/1 var(--gf-mono); color: var(--gf-red); }
.gf-grid__count span { font: 400 11px/1.3 var(--gf-mono); letter-spacing: .14em; text-transform: uppercase; }
.gf-grid__intro { margin: clamp(14px, 1.6vw, 24px) 0 0; font: italic 400 clamp(24px, 2.2vw, 40px)/1.15 var(--gf-serif); text-wrap: balance; }
.gf-grid__cats { display: grid; grid-template-columns: repeat(8, minmax(0, 1fr)); border-top: 1.5px solid var(--gf-ink); border-bottom: 4px solid var(--gf-ink); }
.gf-grid__cat { --c1: var(--gf-paper); --c2: var(--gf-cream); --c4: var(--gf-ink); position: relative; display: flex; align-items: center; gap: 10px; padding: 16px 14px; color: var(--gf-ink); font: 400 clamp(16px, 1.25vw, 22px)/.95 var(--gf-display); letter-spacing: .02em; text-decoration: none; isolation: isolate; overflow: hidden; }
.gf-grid__cat:first-child { padding-left: var(--gf-gutter); }
.gf-grid__cat + .gf-grid__cat { border-left: 1.5px solid var(--gf-ink); }
.gf-grid__cat.gf-field--rose { --c1: var(--gf-rose-1); --c2: var(--gf-rose-2); --c4: var(--gf-rose-4); }
.gf-grid__cat.gf-field--teal { --c1: var(--gf-teal-1); --c2: var(--gf-teal-2); --c4: var(--gf-teal-4); }
.gf-grid__cat.gf-field--sky { --c1: var(--gf-sky-1); --c2: var(--gf-sky-2); --c4: var(--gf-sky-4); }
.gf-grid__cat.gf-field--saffron { --c1: var(--gf-saff-1); --c2: var(--gf-saff-2); --c4: var(--gf-saff-4); }
.gf-grid__cat i { flex: none; width: 12px; height: 12px; border-radius: 50%; background: radial-gradient(circle, var(--gf-bone) 0 20%, var(--c4) 20% 48%, var(--c2) 48%); }
.gf-grid__cat::before { content: ''; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, var(--c1), var(--c2)); transform: scaleY(0); transform-origin: bottom; transition: transform .45s var(--gf-ease); }
.gf-grid__cat:hover::before, .gf-grid__cat.is-on::before { transform: scaleY(1); }
/* Town filter: a ruled strip under the categories; it takes over the heavy closing rule. */
.gf-grid__cats:has(+ .gf-grid__towns) { border-bottom-width: 1.5px; }
.gf-grid__towns { display: flex; flex-wrap: wrap; align-items: stretch; border-bottom: 4px solid var(--gf-ink); }
.gf-grid__towns-label { display: flex; align-items: center; padding: 14px 18px 14px var(--gf-gutter); font: 400 11px var(--gf-mono); letter-spacing: .16em; text-transform: uppercase; color: #474e52; }
.gf-grid__town { display: flex; align-items: center; gap: 10px; padding: 14px 20px; border-left: 1.5px solid var(--gf-ink); color: var(--gf-ink); font: 400 12px var(--gf-mono); letter-spacing: .14em; text-transform: uppercase; text-decoration: none; transition: background .3s; }
.gf-grid__town:last-child { border-right: 1.5px solid var(--gf-ink); }
.gf-grid__town b { font: 400 12px var(--gf-mono); color: var(--gf-red); }
.gf-grid__town:hover { background: var(--gf-cream); }
.gf-grid__town.is-on { background: var(--gf-ink); color: var(--gf-paper); }
.gf-grid__town.is-on b { color: var(--gf-saff-2); }
/* The negative margins tuck the outer card rules under the edges, so only rules between cards show. */
.gf-grid__cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); margin: 0 -1.5px -1.5px 0; }
.gf-card { display: flex; flex-direction: column; min-width: 0; color: var(--gf-ink); text-decoration: none; border-bottom: 1.5px solid var(--gf-ink); border-right: 1.5px solid var(--gf-ink); }
.gf-card__media { position: relative; display: block; aspect-ratio: 4 / 5; overflow: hidden; background: var(--gf-ink); border-bottom: 1.5px solid var(--gf-ink); }
.gf-card__img { position: absolute; inset: 0; width: 100% !important; height: 100% !important; max-width: none !important; object-fit: cover; object-position: 50% 0%; transition: transform 1.2s var(--gf-ease); }
.gf-card:hover .gf-card__img { transform: scale(1.04); }
.gf-card__cover { position: absolute; inset: 0; background: radial-gradient(circle at 62% 56%, var(--c5, var(--gf-teal-5)) 0 4%, var(--c4, var(--gf-teal-4)) 4% 11%, var(--c3, var(--gf-teal-3)) 11% 20%, var(--c2, var(--gf-teal-2)) 20% 32%, var(--c1, var(--gf-teal-1)) 32% 48%, transparent 48%), var(--c1, var(--gf-teal-1)); }
.gf-card.gf-field--rose { --c1: var(--gf-rose-1); --c2: var(--gf-rose-2); --c3: var(--gf-rose-3); --c4: var(--gf-rose-4); --c5: var(--gf-rose-6); }
.gf-card.gf-field--teal { --c1: var(--gf-teal-1); --c2: var(--gf-teal-2); --c3: var(--gf-teal-3); --c4: var(--gf-teal-4); --c5: var(--gf-teal-5); }
.gf-card.gf-field--sky { --c1: var(--gf-sky-1); --c2: var(--gf-sky-2); --c3: var(--gf-sky-3); --c4: var(--gf-sky-4); --c5: var(--gf-sky-5); }
.gf-card.gf-field--saffron { --c1: var(--gf-saff-1); --c2: var(--gf-saff-2); --c3: var(--gf-saff-3); --c4: var(--gf-saff-4); --c5: var(--gf-saff-5); }
.gf-card__logo { position: absolute; left: 16px; bottom: 16px; display: flex; align-items: center; justify-content: center; width: 128px; height: 64px; padding: 10px 14px; background: var(--gf-bone); border: 1.5px solid var(--gf-ink); }
.gf-card__logo img { max-width: 100% !important; max-height: 100% !important; width: auto !important; height: auto !important; object-fit: contain; }
.gf-card__no { position: absolute; top: 14px; right: 14px; padding: 6px 9px; background: var(--gf-bone); font: 400 11px/1 var(--gf-mono); letter-spacing: .14em; text-transform: uppercase; color: var(--gf-red); }
.gf-card__body { display: flex; flex: 1; flex-direction: column; gap: 10px; padding: 20px 22px 18px; background: var(--gf-paper); transition: background .4s; }
.gf-card:hover .gf-card__body { background: linear-gradient(180deg, var(--c1, var(--gf-paper)), var(--gf-paper)); }
.gf-card__meta { font: 400 11px var(--gf-mono); letter-spacing: .16em; text-transform: uppercase; color: #474e52; }
.gf-card__name { font: 400 clamp(36px, 3vw, 56px)/.9 var(--gf-display); font-weight: 400; transition: color .3s; }
.gf-card:hover .gf-card__name { color: var(--gf-red); }
.gf-card__line { font: italic 400 clamp(20px, 1.5vw, 26px)/1.15 var(--gf-serif); }
.gf-card__excerpt { font: 400 15px/1.5 var(--gf-sans); }
.gf-card__foot { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-top: auto; padding-top: 14px; border-top: 1px solid rgba(10, 21, 27, .25); font: 400 11px var(--gf-mono); letter-spacing: .16em; text-transform: uppercase; }
.gf-card__go { font: 400 11px var(--gf-mono); letter-spacing: .16em; text-transform: uppercase; color: var(--gf-red); }
/* The nomination card closes the last row: it runs from its own cell to the end of the row. */
.gf-card--fill { grid-column: span var(--f3, 1); justify-content: center; align-items: flex-start; gap: 18px; padding: clamp(28px, 3vw, 56px); border-right: 0; background: radial-gradient(circle at 85% 50%, var(--gf-rose-3) 0 8%, var(--gf-rose-2) 8% 22%, var(--gf-rose-1) 22% 40%, transparent 40%), var(--gf-rose-1); }
.gf-card__fill-kicker { font: 400 11px var(--gf-mono); letter-spacing: .16em; text-transform: uppercase; }
.gf-card__fill-title { font: 400 clamp(56px, 6vw, 120px)/.86 var(--gf-display); font-weight: 400; }
.gf-card--fill:hover .gf-card__fill-title { color: var(--gf-red); }

/* Business page: link to the business's story, between the reviews and the founder section. */
.gf-biz__story { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); border-bottom: 4px solid var(--gf-ink); }
.gf-biz__story-card { display: flex; flex-direction: column; align-items: flex-start; gap: 14px; padding: clamp(28px, 3.4vw, 56px) var(--gf-gutter); color: var(--gf-ink); text-decoration: none; background: linear-gradient(180deg, var(--c1), var(--gf-paper)); }
.gf-biz__story-card + .gf-biz__story-card { border-left: 1.5px solid var(--gf-ink); }
.gf-biz__story-title { font: 400 clamp(44px, 4.6vw, 88px)/.9 var(--gf-display); font-weight: 400; text-wrap: balance; }
.gf-biz__story-intro { font: italic 400 clamp(22px, 1.8vw, 32px)/1.2 var(--gf-serif); text-wrap: pretty; }
.gf-biz__story-go { margin-top: 6px; padding-bottom: 3px; border-bottom: 1.5px solid var(--gf-ink); font: 400 12px var(--gf-mono); letter-spacing: .16em; text-transform: uppercase; transition: letter-spacing .3s var(--gf-ease); }
.gf-biz__story-card:hover .gf-biz__story-go { letter-spacing: .24em; }

/* Story page: business-page header and photo row, then the story beside a ruled side column. */
.gf-storyp__title { margin: clamp(10px, 1.4vw, 20px) 0 0; font: 400 clamp(56px, 6.6vw, 132px)/.9 var(--gf-display); letter-spacing: -.003em; text-wrap: balance; }
.gf-storyp__text { padding: clamp(28px, 3.4vw, 56px) clamp(24px, 3vw, 48px) clamp(28px, 3.4vw, 56px) var(--gf-gutter); font: 400 clamp(18px, 1.3vw, 23px)/1.65 var(--gf-sans); color: var(--gf-ink); }
.gf-storyp__text > p:first-child { font: 400 clamp(26px, 2.1vw, 38px)/1.25 var(--gf-serif); }
.gf-storyp__text p { margin: 0 0 1.05em; text-wrap: pretty; }
.gf-storyp__text h2 { margin: 1.5em 0 .5em; font: 400 clamp(34px, 2.8vw, 52px)/.95 var(--gf-display); font-weight: 400; }
.gf-storyp__text blockquote { margin: 1.4em 0; padding: 4px 0 4px 24px; border-left: 4px solid var(--gf-ink); font: italic 400 clamp(26px, 2vw, 36px)/1.25 var(--gf-serif); }
.gf-storyp__text blockquote p { margin: 0; }
.gf-storyp__text a { color: inherit; text-decoration: underline; text-decoration-thickness: 1.5px; text-underline-offset: 3px; }
.gf-storyp__text .gf-biz__btns { margin-top: 2em; }
.gf-storyp__text .gf-biz__btns a { text-decoration: none; }
.gf-storyp__biz { display: flex; flex-direction: column; gap: 6px; color: var(--gf-ink); text-decoration: none; }
.gf-storyp__biz b { font: 400 clamp(32px, 2.4vw, 44px)/.95 var(--gf-display); font-weight: 400; }
.gf-storyp__biz span { font: italic 400 19px/1.3 var(--gf-serif); }
.gf-storyp__biz em { font: 400 11px var(--gf-mono); font-style: normal; letter-spacing: .16em; text-transform: uppercase; }
.gf-storyp__biz:hover b { text-decoration: underline; text-decoration-thickness: 2px; }
.gf-storyp__pull blockquote { margin: 0; font: italic 400 clamp(22px, 1.7vw, 30px)/1.25 var(--gf-serif); }
.gf-storyp__pull cite { display: block; margin-top: 10px; font: 400 11px var(--gf-mono); font-style: normal; letter-spacing: .14em; text-transform: uppercase; }
.gf-storyp__sources { flex-direction: column; align-items: flex-start; }
/* The coloured side column runs the length of the story; its boxes stay together and follow the reader down. */
.gf-storyp__rail { position: sticky; top: 0; display: flex; flex-direction: column; }
.gf-storyp__rail .gf-biz__cell { flex: none; }

/* Phone and tablet layouts last, so no desktop rule above can override them. */
@media (max-width: 860px) {
	.gf-poll { grid-template-columns: minmax(0, 1fr); }
	.gf-poll__card { min-width: 0; }
	.gf-poll__card--results .gf-poll__row { grid-template-columns: minmax(0, 1fr) 52px; }
	.gf-poll__card--results .gf-poll__answer { grid-column: 1 / -1; }
}
@media (max-width: 760px) {
	.gf-hero__head { grid-template-columns: minmax(0, 1fr); }
	.gf-hero__title { white-space: normal; font-size: 21vw; }
	.gf-hero__map { order: 2; width: 100%; aspect-ratio: 1.229; align-self: auto; }
	.gf-hero__map svg { position: static; width: 100%; height: auto; }
}
button.gf-poll__opt, button.gf-poll__opt:hover, button.gf-poll__opt:focus { grid-template-columns: 34px minmax(0, 1fr) auto 26px; min-width: 0; white-space: normal; }
.gf-poll__txt { min-width: 0; overflow-wrap: anywhere; }
@media (max-width: 600px) { .gf-poll__mark { display: none; } button.gf-poll__opt, button.gf-poll__opt:hover, button.gf-poll__opt:focus { grid-template-columns: 30px minmax(0, 1fr) 24px; gap: 12px; font-size: 16px; } }

@media (max-width: 900px) {
	.gf-biz__body { grid-template-columns: minmax(0, 1fr); }
	.gf-biz__side { border-left: 0; border-top: 1.5px solid var(--gf-ink); }
	.gf-biz__cell { padding: 16px var(--gf-gutter); }
	.gf-biz__why { padding: 28px var(--gf-gutter); }
	.gf-biz__about-row { grid-template-columns: minmax(0, 1fr); gap: 16px; padding: 28px var(--gf-gutter); }
	.gf-biz__about-text { columns: 1; }
	.gf-biz__photos { height: auto; grid-template-columns: 1fr 1fr !important; grid-template-rows: auto !important; }
	.gf-biz__photo { aspect-ratio: 4 / 5; grid-row: auto !important; grid-column: auto !important; }
	.gf-biz__photo:first-child { grid-column: 1 / -1 !important; aspect-ratio: 4 / 5; }
	.gf-biz__facts > * { padding: 12px 14px 12px 0; border-right: 0; }
	.gf-biz__facts > *:last-child { margin-left: 0; }
	.gf-biz__titlerow { grid-template-columns: minmax(0, 1fr); }
	.gf-biz__stamp.gf-stamp--sticker { bottom: 14px; right: 14px; width: 96px; }
	.gf-biz__name { font-size: 15vw; }
	/* An odd photo out spans the full width instead of leaving an empty half tile. */
	.gf-biz__photos--2 .gf-biz__photo:nth-child(2), .gf-biz__photos--4 .gf-biz__photo:nth-child(4) { grid-column: 1 / -1 !important; aspect-ratio: 4 / 5; }
	/* Four photos make an even two-by-two of portrait tiles on a phone. */
	.gf-biz__photos--4 .gf-biz__photo, .gf-biz__photos--4 .gf-biz__photo:first-child, .gf-biz__photos--4 .gf-biz__photo:nth-child(4) { grid-column: auto !important; aspect-ratio: 2 / 3; }
}
@media (min-width: 1700px) { .gf-grid__cards { grid-template-columns: repeat(4, minmax(0, 1fr)); } .gf-card--fill { grid-column: span var(--f4, 1); } }
@media (max-width: 1100px) {
	.gf-grid__cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.gf-card--fill { grid-column: span var(--f2, 1); }
	.gf-grid__cats { grid-template-columns: repeat(4, minmax(0, 1fr)); }
	.gf-grid__cat:nth-child(4n+1) { border-left: 0; padding-left: var(--gf-gutter); }
	.gf-grid__cat:nth-child(n+5) { border-top: 1.5px solid var(--gf-ink); }
}
@media (max-width: 640px) {
	.gf-grid__cards { grid-template-columns: minmax(0, 1fr); }
	.gf-card { border-right: 0; }
	.gf-grid__titlerow { grid-template-columns: minmax(0, 1fr); }
	.gf-grid__title { font-size: 17vw; }
	.gf-grid__cats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.gf-grid__cat, .gf-grid__cat:nth-child(4n+1) { padding-left: 14px; border-left: 1.5px solid var(--gf-ink); }
	.gf-grid__cat:nth-child(odd) { border-left: 0; padding-left: var(--gf-gutter); }
	.gf-grid__cat:nth-child(n+3) { border-top: 1.5px solid var(--gf-ink); }
	.gf-card--fill { grid-column: auto; min-height: 280px; }
}
@media (max-width: 1100px) {
	.gf-biz__reviews-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.gf-biz__review:nth-child(odd) { padding-left: 0; border-left: 0; }
	.gf-biz__review:nth-child(n+3) { border-top: 1.5px solid var(--gf-ink); margin-top: 18px; }
}
@media (max-width: 640px) {
	.gf-biz__reviews-grid { grid-template-columns: minmax(0, 1fr); }
	.gf-biz__review, .gf-biz__review + .gf-biz__review { padding: 18px 0 4px; border-left: 0; }
	.gf-biz__review + .gf-biz__review { border-top: 1.5px solid var(--gf-ink); margin-top: 18px; }
}
@media (max-width: 640px) { .gf-biz__card + .gf-biz__card { border-left: 0; padding-left: 0; border-top: 1.5px solid var(--gf-ink); } }

.gf-biz__review:only-child { grid-column: 1 / -1; }

/* Masthead ring: the four colour fields flip from one to the next and the ring pulses as each lands. */
.gf-mast__word { display: inline-flex; align-items: center; gap: .2em; }
.gf-ring { position: relative; flex: none; display: inline-block; width: .74em; height: .74em; perspective: 4em; animation: gf-ring-pulse 2s var(--gf-ease) infinite; }
.gf-ring__face { position: absolute; inset: 0; width: 100%; height: 100%; backface-visibility: hidden; opacity: 0; transform: rotateY(90deg); animation: gf-ring-flip 8s linear infinite; }
.gf-ring__face--1 { animation-delay: 2s; }
.gf-ring__face--2 { animation-delay: 4s; }
.gf-ring__face--3 { animation-delay: 6s; }
.gf-ring__face--0 { animation-delay: 0s; }
@keyframes gf-ring-flip {
	0% { opacity: 1; transform: rotateY(90deg); }
	5% { opacity: 1; transform: rotateY(0deg); }
	22% { opacity: 1; transform: rotateY(0deg); }
	27% { opacity: 1; transform: rotateY(-90deg); }
	27.01%, 100% { opacity: 0; transform: rotateY(-90deg); }
}
@keyframes gf-ring-pulse { 0%, 100% { transform: scale(1); } 12% { transform: scale(1.09); } 30% { transform: scale(1); } }
@media (prefers-reduced-motion: reduce) {
	.gf-ring, .gf-ring__face { animation: none; }
	.gf-ring__face--0 { opacity: 1; transform: none; }
}

/* Nomination form: ruled label groups like the brand's product labels. Fields stay 16px or more so phones never zoom. */
.gf-form { display: grid; gap: 28px; }
.gf-form__group { border: 0; border-top: 3px solid var(--gf-ink); margin: 0; padding: 14px 0 0; display: grid; gap: 18px; min-width: 0; }
.gf-form__legend { float: left; width: 100%; padding: 0 0 4px; font: 400 12px var(--gf-mono); letter-spacing: .16em; text-transform: uppercase; }
.gf-form__row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px 24px; }
.gf-form__field { display: grid; gap: 8px; min-width: 0; }
.gf-form__label { font: 400 12px var(--gf-mono); letter-spacing: .14em; text-transform: uppercase; }
.gf-form__label em { font-style: normal; color: var(--gf-muted, #5b6266); letter-spacing: .1em; text-transform: none; }
.gf-form .gf-form__input { width: 100%; box-sizing: border-box; font: 400 18px/1.4 var(--gf-sans); color: var(--gf-ink); background: var(--gf-bone); border: 1.5px solid var(--gf-ink); border-radius: 0; padding: 12px 14px; min-height: 50px; }
.gf-form select.gf-form__input { appearance: none; background-image: linear-gradient(45deg, transparent 50%, var(--gf-ink) 50%), linear-gradient(135deg, var(--gf-ink) 50%, transparent 50%); background-position: calc(100% - 20px) 50%, calc(100% - 14px) 50%; background-size: 6px 6px; background-repeat: no-repeat; padding-right: 40px; }
.gf-form .gf-form__area { min-height: 150px; resize: vertical; }
.gf-form .gf-form__input:focus { outline: 3px solid var(--gf-saff-4); outline-offset: 0; }
.gf-form__tick { display: flex; gap: 12px; align-items: flex-start; font: 400 16px/1.5 var(--gf-sans); cursor: pointer; }
.gf-form__tick input { width: 22px; height: 22px; margin: 1px 0 0; flex: none; accent-color: var(--gf-ink); }
.gf-form__tick a { text-decoration: underline; }
.gf-form__trap { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }
.gf-form__error { margin: 0; padding: 14px 16px; border-left: 4px solid var(--gf-red); background: var(--gf-rose-1); font: 400 16px/1.5 var(--gf-sans); }
button.gf-form__send, button.gf-form__send:hover, button.gf-form__send:focus { justify-self: start; display: inline-flex; align-items: center; gap: 14px; padding: 18px 28px; border: 0; border-radius: 0; background: var(--gf-ink); color: var(--gf-paper); font: 400 14px var(--gf-mono); letter-spacing: .16em; text-transform: uppercase; cursor: pointer; transition: background .3s; }
button.gf-form__send:hover { background: var(--gf-red); }
button.gf-form__send i { font-style: normal; transition: transform .3s var(--gf-ease); }
button.gf-form__send:hover i { transform: translateX(6px); }
@media (max-width: 760px) { .gf-form__row { grid-template-columns: minmax(0, 1fr); } button.gf-form__send { justify-self: stretch; justify-content: center; } }

/* Reviews wall and stories page: a count line above the full grids. */
.gf-wall__count { margin: 0 0 18px; font: 400 12px var(--gf-mono); letter-spacing: .16em; text-transform: uppercase; }
.gf-wall__count b { font: 400 28px/1 var(--gf-display); letter-spacing: .02em; vertical-align: -3px; }
.gf-stories--all { grid-template-columns: repeat(3, minmax(0, 1fr)); }
@media (max-width: 900px) { .gf-stories--all { grid-template-columns: minmax(0, 1fr); } }

/* Archive templates made of ordinary sections (Stories) get the same gutter and section spacing as pages. */
[data-elementor-type="archive"] > .e-con:not(.gf-bleed) { --padding-left: var(--gf-gutter) !important; --padding-right: var(--gf-gutter) !important; --padding-top: clamp(28px, 2.8vw, 48px) !important; --padding-bottom: clamp(28px, 2.8vw, 48px) !important; }
/* Big headings never leave one word alone on the last line. */
.elementor-widget-heading .elementor-heading-title { text-wrap: balance; }
@media (max-width: 760px) {
	.gf-grid__towns-label { flex: 1 0 100%; padding: 12px var(--gf-gutter) 0; }
	.gf-grid__town { flex: 1 1 auto; justify-content: center; padding: 14px 12px; }
	.gf-grid__town:first-of-type { border-left: 0; }
	.gf-grid__town:last-child { border-right: 0; }
}
@media (max-width: 760px) {
	.gf-biz__story { grid-auto-flow: row; }
	.gf-biz__story-card + .gf-biz__story-card { border-left: 0; border-top: 1.5px solid var(--gf-ink); }
	.gf-storyp__title { font-size: 13vw; }
	.gf-storyp__text { padding: 28px var(--gf-gutter); }
}
