/* ============================================================
   BARK SIDE OF THE GROOM — polish styles   *** GENERATED ***
   Edit gen_css.py (icons) or this file directly, then re-upload.
   ALL custom visual styling for the site lives in THIS file.
   Loaded by functions.php on the live site AND in the editor.
   Palette slugs live in theme.json (navy/blue/sky/foam/mist/ink).
   MAP:  1 GLOBAL  2 HEADER  3 HERO+BUBBLES  4 WHY+VIDEO
         5 CLIENTS  6 SERVICES/PRICING  7 AREAS  8 CONTACT  9 FOOTER
   ============================================================ */
:root{
	--bk-navy:#002b5c; --bk-blue:#3498db; --bk-sky:#87ceeb;
	--bk-foam:#e0f7fa; --bk-mist:#e0e4e8; --bk-ink:#3d5573;
	--bk-line:#dbe6ef; --bk-foam-2:#eef9fb;
	--bk-shadow:0 10px 30px -12px rgba(0,43,92,.22);
	--bk-shadow-sm:0 4px 14px -8px rgba(0,43,92,.30);
	--bk-radius:18px; --bk-radius-lg:26px;
}

/* 1. GLOBAL -------------------------------------------------- */
body{ -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility; }
h1,h2,h3,h4{ text-wrap:balance; letter-spacing:-0.01em; }

/* Smooth-scroll to the #section anchors instead of teleporting.
   scroll-margin keeps the sticky header from covering the heading you
   just jumped to. (bubbles.js also handles closing the mobile menu first.) */
html{ scroll-behavior:smooth; }
section[id]{ scroll-margin-top:110px; }
@media (max-width:781px){ section[id]{ scroll-margin-top:80px; } }
@media (prefers-reduced-motion:reduce){ html{ scroll-behavior:auto; } }

/* Don't paint a focus ring on mouse/touch -- only for keyboard users. */
a:focus:not(:focus-visible), button:focus:not(:focus-visible){ outline:none; }
h2{ font-size:clamp(1.9rem,4vw,2.6rem); line-height:1.15; }
h3{ font-size:1.2rem; }

/* --- WIDTH OVERRIDE (important!) ---------------------------------
   Twenty Twenty-Four constrains inner blocks to its narrow content
   width (theme.json contentSize). Our sections need to be wide, so
   .bk-wrap escapes that cap. !important is required because WP's
   layout rule is generated per-block with matching specificity.
   If sections ever look squeezed into a narrow column, look HERE. */
.wp-block-group.bk-wrap,
.wp-block-columns.bk-wrap{ max-width:1140px !important; width:100%; margin-left:auto; margin-right:auto; }
/* WP's constrained layout auto-centers any child narrower than the
   container (that's why lead paragraphs drifted to the middle while
   headings stayed left). Force section content flush left.
   !important is needed: WP's own rule has equal specificity.
   The hero IS centered on purpose and has no .bk-wrap. */
.wp-block-group.bk-wrap > *,
.wp-block-columns.bk-wrap > *{ margin-left:0 !important; margin-right:auto !important; }
/* The main wrapper must not add its own cap or padding. */
.bk-main{ max-width:none; }
/* Section paddings are set per-section in the page itself; don't let
   TT4's global padding double up on our full-width sections. */
.bk-main > .alignfull{ margin-left:0; margin-right:0; }
.bk-eyebrow{ display:inline-flex; align-items:center; gap:.5rem; font-weight:700;
	font-size:.8rem; letter-spacing:.14em; text-transform:uppercase;
	color:var(--bk-blue); margin-bottom:.4rem; }
.bk-eyebrow::before{ content:""; width:1.3em; height:1.3em; flex:none;
	background:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAyNCAyNCcgZmlsbD0nIzM0OThkYic+PHBhdGggZD0nTTEyIDEzLjVjLTIuMiAwLTQgMS42LTQgMy42IDAgMS41IDEuMiAyLjQgMi43IDIuNC41IDAgLjktLjEgMS4zLS4zLjQuMi44LjMgMS4zLjMgMS41IDAgMi43LS45IDIuNy0yLjQgMC0yLTEuOC0zLjYtNC0zLjZ6TTYuMiAxMS42Yy0xIDAtMS44LjktMS44IDJzLjggMiAxLjggMiAxLjgtLjkgMS44LTItLjgtMi0xLjgtMnptMTEuNiAwYy0xIDAtMS44LjktMS44IDJzLjggMiAxLjggMiAxLjgtLjkgMS44LTItLjgtMi0xLjgtMnpNOS4xIDkuNmMuOSAwIDEuNi0uOSAxLjYtMnMtLjctMi0xLjYtMi0xLjYuOS0xLjYgMiAuNyAyIDEuNiAyem01LjggMGMuOSAwIDEuNi0uOSAxLjYtMnMtLjctMi0xLjYtMi0xLjYuOS0xLjYgMiAuNyAyIDEuNiAyeicvPjwvc3ZnPg==") center/contain no-repeat; }
.bk-lead{ font-size:clamp(1.05rem,2vw,1.2rem); color:var(--bk-ink); max-width:62ch; }

/* 2. HEADER -------------------------------------------------- */
/* STICKY GOTCHA: WordPress wraps our header template part in ANOTHER
   <header> element. position:sticky only works against the scrolling
   ancestor, so putting it on the inner .bk-header did nothing (it was
   stuck inside a box its own height). Sticky must go on the OUTER
   wrapper; .bk-header keeps the looks. Don't "fix" this back. */
.wp-site-blocks > header{ position:sticky; top:0; z-index:100; }
.bk-header{ position:relative;
	background:rgba(255,255,255,.85); backdrop-filter:saturate(1.4) blur(12px);
	border-bottom:1px solid var(--bk-mist); padding-top:.4rem; padding-bottom:.4rem; }
/* Kill the 1.2rem WP puts between top-level blocks, which showed up as a
   white strip between the header and the hero. */
.bk-main{ margin-block-start:0 !important; }
.wp-site-blocks{ padding-top:0 !important; }
.bk-header-inner{ align-items:center; gap:.75rem; }
.bk-header .wp-block-site-logo img{ height:66px; width:auto; }
.bk-header-right{ gap:clamp(.6rem,2vw,1.5rem); align-items:center; }
.bk-nav a{ color:var(--bk-navy); font-weight:600; text-decoration:none; }
.bk-nav a:hover{ color:var(--bk-blue); }
.bk-ig a{ color:var(--bk-navy); } .bk-ig a:hover{ color:var(--bk-blue); }
.bk-call .wp-block-button__link{ box-shadow:var(--bk-shadow-sm); white-space:nowrap; }
/* Desktop order: logo | nav | instagram + call */
.bk-brand{ order:1; }
.bk-nav{ order:2; margin-left:auto; }
.bk-header-right{ order:3; }

/* 3. HERO + BUBBLES ----------------------------------------- */
.bk-hero{ position:relative; overflow:hidden; }
/* SQUISHED-BUBBLES GOTCHA: the hero is a constrained-layout block, so WP
   applies `max-width: <contentSize>` + auto margins to EVERY child --
   including our canvas. The canvas buffer stayed full width while the
   element got clamped to 820px, squeezing the circles into tall ellipses.
   max-width:none is what keeps them round. Don't remove it.
   (Also don't set width/height:100%; bubbles.js sizes the canvas itself.) */
.bk-hero > .bk-bubbles{ position:absolute; top:0; left:0; pointer-events:none; z-index:0;
	max-width:none !important; margin:0 !important; }
.bk-hero > :not(.bk-bubbles){ position:relative; z-index:1; }
.bk-hero-logo{ margin-bottom:.2rem !important; }
.bk-hero-logo img{ filter:drop-shadow(0 12px 26px rgba(0,43,92,.18)); }
.bk-tagline{ font-size:clamp(2.2rem,6vw,3.4rem); color:var(--bk-navy); margin-top:.2rem; margin-bottom:.6rem; }
.bk-hero .bk-lead{ margin-left:auto; margin-right:auto; }
.bk-hero-serving{ margin-top:1rem; color:var(--bk-ink); font-size:.95rem; opacity:.85; }
.bk-btn-ghost .wp-block-button__link{ background:transparent!important; color:var(--bk-blue)!important;
	border:2px solid var(--bk-blue)!important; }
.bk-btn-ghost .wp-block-button__link:hover{ background:var(--bk-blue)!important; color:#fff!important; }

/* 4. WHY MOBILE + VIDEO -------------------------------------- */
/* THE VIDEO IS PORTRAIT. It was filmed on a phone held upright (the source
   file is 1280x720 with a -90 rotation flag, i.e. really 720x1280). Forcing
   it into a landscape 16:9 frame cropped it to death. So: a 9:16 frame,
   capped narrow like a reel, centered. Don't "fix" this to 16:9.
   The cap also stops it overflowing the viewport on phones. */
/* The salon pair: branded trailer (outside) next to the video (inside).
   They're forced to the same height so it reads as one composition. */
.bk-salon{ gap:1.25rem; align-items:stretch; }
.bk-salon > .wp-block-column{ display:flex; }
.bk-salon .bk-trailer,
.bk-salon .bk-video{ flex:1; margin:0 !important; }
.bk-trailer{ position:relative; border-radius:var(--bk-radius-lg); overflow:hidden;
	box-shadow:var(--bk-shadow); }
.bk-trailer img{ width:100%; height:100%; object-fit:cover; display:block; }
.bk-media-cap{ position:absolute; left:14px; bottom:12px; margin:0; color:#fff !important;
	font-weight:700; font-size:.92rem; padding:.5rem .95rem; border-radius:999px;
	background:rgba(0,43,92,.55); backdrop-filter:blur(4px); }

.bk-video{ box-shadow:var(--bk-shadow); overflow:hidden;
	aspect-ratio:9/16 !important;
	min-height:0 !important;
	height:auto !important;
	width:100% !important;
	margin-left:auto !important; margin-right:auto !important; }
/* On phones the pair stacks; cap the video so it isn't an endless tall reel. */
@media (max-width:781px){
	.bk-salon{ gap:1rem; }
	.bk-salon > .wp-block-column{ display:block; }
	.bk-trailer{ aspect-ratio:4/3; }
	.bk-video{ max-width:min(300px, 78vw) !important; }
}
.bk-video video{ width:100%; height:100%; object-fit:cover; }
/* Poster shows through when the video hasn't loaded (phones). */
.bk-video video[data-src]{ background:#0c2340 center/cover no-repeat; }
.bk-video .wp-block-cover__inner-container{ align-self:flex-end; width:100%; text-align:center; padding-bottom:.4rem; }
.bk-video-cap{ display:inline-block; margin:0; color:#fff; font-weight:700; font-size:.92rem;
	background:rgba(0,43,92,.55); backdrop-filter:blur(4px); padding:.5rem .95rem; border-radius:999px; }
/* NOTE: there is deliberately NO mobile background-image hack here.
   The <video> carries a `poster` attribute and functions.php withholds the
   src on phones, so the poster image IS what mobile sees. One source of
   truth for the still frame: the `poster` attr (BARKSIDE_VIDEO_POSTER). */

/* Equal-height cards: WP columns don't stretch their children by default. */
.bk-pro-grid{ gap:1.25rem; align-items:stretch; }
.bk-pro-grid > .wp-block-column{ display:flex; }
.bk-pro{ flex:1; height:auto; background:#fff; border:1px solid var(--bk-line); border-radius:var(--bk-radius);
	box-shadow:var(--bk-shadow-sm); padding:1.6rem 1.4rem; }
.bk-pro::before{ content:""; display:block; width:56px; height:56px; border-radius:16px; margin-bottom:.9rem;
	background-color:color-mix(in srgb, var(--bk-sky) 42%, #fff); background-repeat:no-repeat;
	background-position:center; background-size:30px 30px; }
.bk-pro--convenience::before{ background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAyNCAyNCcgZmlsbD0nbm9uZScgc3Ryb2tlPScjMDAyYjVjJyBzdHJva2Utd2lkdGg9JzInIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLWxpbmVqb2luPSdyb3VuZCc+PHBhdGggZD0nTTEyIDIxcy03LTUuMi03LTExYTcgNyAwIDAgMSAxNCAwYzAgNS44LTcgMTEtNyAxMXonLz48Y2lyY2xlIGN4PScxMicgY3k9JzEwJyByPScyLjUnLz48L3N2Zz4="); }
.bk-pro--stress::before{ background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAyNCAyNCcgZmlsbD0nbm9uZScgc3Ryb2tlPScjMDAyYjVjJyBzdHJva2Utd2lkdGg9JzInIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLWxpbmVqb2luPSdyb3VuZCc+PHBhdGggZD0nTTEyIDIxcy03LTQuNS03LTEwYTQgNCAwIDAgMSA3LTIuNkE0IDQgMCAwIDEgMTkgMTFjMCA1LjUtNyAxMC03IDEweicvPjwvc3ZnPg=="); }
.bk-pro--care::before{ background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAyNCAyNCcgZmlsbD0nbm9uZScgc3Ryb2tlPScjMDAyYjVjJyBzdHJva2Utd2lkdGg9JzInIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLWxpbmVqb2luPSdyb3VuZCc+PGNpcmNsZSBjeD0nMTInIGN5PSc4JyByPSc0Jy8+PHBhdGggZD0nTTQgMjFjMC00IDMuNi02IDgtNnM4IDIgOCA2Jy8+PC9zdmc+"); }
.bk-pro--health::before{ background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAyNCAyNCcgZmlsbD0nbm9uZScgc3Ryb2tlPScjMDAyYjVjJyBzdHJva2Utd2lkdGg9JzInIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLWxpbmVqb2luPSdyb3VuZCc+PHBhdGggZD0nTTEyIDNsNyAzdjVjMCA0LjUtMyA4LTcgMTAtNC0yLTctNS41LTctMTBWNnonLz48cGF0aCBkPSdNOS41IDEybDEuOCAxLjhMMTUgMTAnLz48L3N2Zz4="); }
.bk-pro h3{ margin-bottom:.4rem; color:var(--bk-navy); }
.bk-pro p{ font-size:.96rem; color:var(--bk-ink); }

/* 5. HAPPY CLIENTS ------------------------------------------ */
/* Force a real 3-up grid with uniform 4:3 tiles (WP's gallery flex
   layout otherwise sizes tiles by each photo's aspect ratio). */
.bk-gallery{ margin-top:1.8rem; display:grid !important; grid-template-columns:repeat(3,1fr); gap:1.1rem; }
.bk-gallery .wp-block-image{ margin:0 !important; width:100% !important; overflow:hidden;
	border-radius:var(--bk-radius); box-shadow:var(--bk-shadow-sm); border:1px solid var(--bk-line); }
.bk-gallery .wp-block-image img{ width:100%; height:100%; aspect-ratio:4/3; object-fit:cover;
	display:block; border-radius:0; transition:transform .4s ease; }
.bk-gallery .wp-block-image:hover img{ transform:scale(1.04); }
.bk-clients-note{ margin-top:1.3rem; color:var(--bk-ink); opacity:.8; font-size:.95rem; }
@media (max-width:700px){ .bk-gallery{ grid-template-columns:1fr; } }

/* 6. SERVICES / PRICING ------------------------------------- */
.bk-cat-note{ color:var(--bk-ink); opacity:.85; font-size:.95rem; margin-top:.4rem; }
.bk-cat{ display:inline-block; font-size:.62rem; font-weight:800; letter-spacing:.08em; text-transform:uppercase;
	color:var(--bk-blue); background:color-mix(in srgb, var(--bk-sky) 34%, transparent);
	padding:2px 7px; border-radius:6px; margin-left:6px; vertical-align:middle; }
.bk-price-row{ margin-top:1.6rem; gap:1.5rem; align-items:stretch; }
.bk-price-row > .wp-block-column{ display:flex; }
.bk-price-card{ flex:1; height:auto; background:#fff; border:1px solid var(--bk-line); border-radius:var(--bk-radius-lg);
	box-shadow:var(--bk-shadow-sm); padding:1.6rem 1.6rem 1.3rem; }
.bk-price-card h3{ font-size:1.3rem; color:var(--bk-navy); margin-bottom:.1rem; }
.bk-card-cap{ font-size:.85rem; color:var(--bk-ink); opacity:.75; margin-bottom:.9rem; }
.bk-price-item{ align-items:baseline; gap:1rem; padding:.8rem 0; border-top:1px dashed var(--bk-line); }
.bk-price-item:first-of-type{ border-top:0; }
.bk-price-info{ gap:.1rem; }
.bk-price-name{ font-weight:700; color:var(--bk-navy); margin:0; }
.bk-price-desc{ font-size:.85rem; color:var(--bk-ink); opacity:.75; margin:.15rem 0 0; }
/* "from" sits ABOVE the amount. The markup is <span class="bk-from">from</span>$85,
   so this must be plain `column` (NOT column-reverse, which flips it back below). */
.bk-price{ display:inline-flex; flex-direction:column; align-items:flex-end; line-height:1.05;
	font-weight:800; color:var(--bk-blue); white-space:nowrap; font-variant-numeric:tabular-nums; margin:0; }
.bk-from{ font-weight:600; font-size:.62rem; color:var(--bk-ink); opacity:.7; letter-spacing:.05em;
	text-transform:uppercase; margin-bottom:1px; }

/* 7. AREAS -------------------------------------------------- */
.bk-chips{ gap:.85rem; margin-top:1.6rem; }
.bk-chip{ display:inline-flex; align-items:center; gap:.5rem; margin:0; background:#fff;
	border:1px solid var(--bk-line); border-radius:999px; padding:.7rem 1.2rem; font-weight:700;
	color:var(--bk-navy); box-shadow:var(--bk-shadow-sm); }
.bk-chip::before{ content:""; width:1.25em; height:1.25em; flex:none; background:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAyNCAyNCcgZmlsbD0nIzM0OThkYic+PHBhdGggZD0nTTEyIDEzLjVjLTIuMiAwLTQgMS42LTQgMy42IDAgMS41IDEuMiAyLjQgMi43IDIuNC41IDAgLjktLjEgMS4zLS4zLjQuMi44LjMgMS4zLjMgMS41IDAgMi43LS45IDIuNy0yLjQgMC0yLTEuOC0zLjYtNC0zLjZ6TTYuMiAxMS42Yy0xIDAtMS44LjktMS44IDJzLjggMiAxLjggMiAxLjgtLjkgMS44LTItLjgtMi0xLjgtMnptMTEuNiAwYy0xIDAtMS44LjktMS44IDJzLjggMiAxLjggMiAxLjgtLjkgMS44LTItLjgtMi0xLjgtMnpNOS4xIDkuNmMuOSAwIDEuNi0uOSAxLjYtMnMtLjctMi0xLjYtMi0xLjYuOS0xLjYgMiAuNyAyIDEuNiAyem01LjggMGMuOSAwIDEuNi0uOSAxLjYtMnMtLjctMi0xLjYtMi0xLjYuOS0xLjYgMiAuNyAyIDEuNiAyeicvPjwvc3ZnPg==") center/contain no-repeat; }
.bk-chip-note{ font-weight:600; font-size:.8rem; color:var(--bk-ink); opacity:.7; }
.bk-areas-note{ margin-top:1.3rem; color:var(--bk-ink); opacity:.8; font-size:.95rem; }

/* --- MY JOURNEY --------------------------------------------- */
/* >>> PHOTO PLACEHOLDER IS HIDDEN <<<
   Renea hasn't given us a photo yet, and an empty box looks unfinished on a
   live site. So the photo column is hidden and the story runs full width.

   WHEN THE PHOTO ARRIVES:
     1. WP Admin > Pages > Home > "My Journey" > replace the placeholder
        paragraph in the left column with an Image block.
     2. Delete the two rules directly below this comment.
   The .bk-journey-photo frame styling further down is still here and will
   give the photo its rounded frame automatically. */
.bk-journey-cols > .wp-block-column:first-child{ display:none !important; }
.bk-journey-cols > .wp-block-column:last-child{ flex-basis:100% !important; }

.bk-journey-cols{ gap:clamp(1.5rem,4vw,3.5rem); }
.bk-journey-photo{ position:relative; aspect-ratio:3/4; border-radius:var(--bk-radius-lg); overflow:hidden;
	background:linear-gradient(160deg, var(--bk-sky), var(--bk-blue)); box-shadow:var(--bk-shadow);
	display:flex; align-items:center; justify-content:center; padding:1.5rem; }
.bk-journey-photo img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.bk-photo-note{ color:#fff !important; font-weight:600; opacity:.95; max-width:22ch; margin:0; }
.bk-quote{ margin:1.2rem 0 0; padding:1rem 1.3rem; border-left:4px solid var(--bk-blue);
	background:rgba(255,255,255,.55); border-radius:0 14px 14px 0; }
.bk-quote p{ color:var(--bk-navy); font-weight:600; font-style:italic; margin:0; }

/* 8. CONTACT + FORM ----------------------------------------- */
.bk-contact-cols{ gap:clamp(1.5rem,4vw,3rem); align-items:flex-start; }
.bk-call-big .wp-block-button__link{ font-size:1.1rem; padding:1rem 1.8rem; box-shadow:var(--bk-shadow-sm); }
.bk-contact-list{ list-style:none; padding:0; margin:1rem 0 0; }
.bk-contact-list li{ padding:.35rem 0; color:var(--bk-ink); }
.bk-hours-soft{ opacity:.7; }
.bk-form-slot{ background:#fff; border:1px solid var(--bk-line); border-radius:var(--bk-radius-lg);
	box-shadow:var(--bk-shadow); padding:1.6rem; }
/* Fluent Forms booking form (form id 3 — see MAINTENANCE.md) */
.bk-form-slot .ff-el-group{ margin-bottom:.9rem; }
.bk-form-slot .ff-el-input--label label{ font-weight:700; font-size:.88rem; color:var(--bk-navy); margin-bottom:.3rem; }
.bk-form-slot .ff-el-form-control{ width:100%; padding:.72rem .85rem; border-radius:12px;
	border:1px solid var(--bk-line); background:#fff; color:var(--bk-ink);
	font-family:inherit; font-size:1rem; line-height:1.4; box-shadow:none; }
.bk-form-slot .ff-el-form-control:focus{ border-color:var(--bk-blue);
	box-shadow:0 0 0 3px color-mix(in srgb, var(--bk-blue) 22%, transparent); outline:none; }
.bk-form-slot textarea.ff-el-form-control{ min-height:110px; resize:vertical; }
.bk-form-slot .ff-btn-submit{ width:100%; background:var(--bk-blue); color:#fff; border:0;
	border-radius:999px; padding:.9rem 1.6rem; font-weight:700; font-size:1rem; font-family:inherit;
	cursor:pointer; box-shadow:var(--bk-shadow-sm); transition:background .2s ease, transform .12s ease; }
.bk-form-slot .ff-btn-submit:hover{ background:var(--bk-navy); transform:translateY(-1px); }
.bk-form-slot .ff-el-is-error .ff-el-form-control{ border-color:#d64545; }
.bk-form-slot .text-danger, .bk-form-slot .error{ color:#d64545; font-size:.85rem; }
.bk-form-slot .ff-message-success{ background:color-mix(in srgb, var(--bk-sky) 30%, #fff);
	border:1px solid var(--bk-blue); border-radius:12px; padding:1rem; color:var(--bk-navy); font-weight:600; }

/* 9. FOOTER -------------------------------------------------- */
.bk-footer{ padding:clamp(2.5rem,5vw,3.5rem) 0 1.5rem; }
.bk-footer, .bk-footer p, .bk-footer li{ color:#cfe0f2; }
.bk-footer a{ color:#cfe0f2; text-decoration:none; }
.bk-footer a:hover{ color:#fff; text-decoration:underline; }
.bk-footer h3, .bk-footer h4{ color:#fff; }
.bk-footer-brand{ font-size:1.5rem; margin-bottom:.4rem; }
.bk-footer h4{ font-size:.8rem; letter-spacing:.12em; text-transform:uppercase; margin-bottom:.6rem; }
.bk-footer-list{ list-style:none; padding:0; margin:0; }
.bk-footer-list li{ padding:.25rem 0; }
.bk-footer-bottom{ border-top:1px solid rgba(255,255,255,.15); margin-top:2rem; padding-top:1.2rem; }
.bk-footer-bottom p{ color:#9fc0e4; margin:0; }

/* RESPONSIVE ------------------------------------------------
   Sanity-checked against the narrow end of the phone range:
   iPhone SE 375px, iPhone 15/16 393px, Pixel 7 Pro 412px.
   375px is the tight one -- keep the header fitting there. */
@media (max-width:781px){
	/* Hamburger goes to the LEFT of the logo. The nav block renders only a
	   hamburger at this width, so we just flip the flex order. */
	.bk-nav{ order:1; margin-left:0; }
	.bk-brand{ order:2; margin-right:auto; }
	.bk-header-right{ order:3; }

	.bk-header-inner{ gap:.5rem; }
	.bk-header .wp-block-site-logo img{ height:46px; }

	/* Solid background on mobile: the translucent blur made the sticky header
	   render as a half-painted strip once you scrolled. */
	.bk-header{ background:#fff; backdrop-filter:none; }

	/* Stop the Call/Text button wrapping to two lines on narrow phones. */
	.bk-call .wp-block-button__link{
		font-size:.82rem; padding:.6rem 1rem; white-space:nowrap; line-height:1.2; }

	/* Instagram icon is redundant next to the call button on a phone; it's
	   still in the footer. Dropping it buys room for the button.
	   !important is needed: WP ships `body .is-layout-flex{display:flex}`,
	   which outranks a plain class selector. */
	.bk-header .bk-ig{ display:none !important; }

	/* Proper 3-line hamburger. WP's default icon is a 2-line glyph that reads
	   as broken, so we hide the SVG and draw the bars ourselves (middle bar +
	   two more via box-shadow). */
	.bk-nav .wp-block-navigation__responsive-container-open{
		width:44px; height:44px; border-radius:12px; padding:0;
		display:grid !important; place-items:center; background:transparent; }
	.bk-nav .wp-block-navigation__responsive-container-open svg{ display:none; }
	.bk-nav .wp-block-navigation__responsive-container-open::before{
		content:""; width:24px; height:2.5px; border-radius:2px;
		background:var(--bk-navy);
		box-shadow:0 -7px 0 var(--bk-navy), 0 7px 0 var(--bk-navy); }
	.bk-nav .wp-block-navigation__responsive-container-open:hover::before{
		background:var(--bk-blue); box-shadow:0 -7px 0 var(--bk-blue), 0 7px 0 var(--bk-blue); }
	/* The Call/Text nav item only makes sense inside the overlay menu. */
	.bk-nav-call{ margin-top:.6rem; }

	.bk-pro{ padding:1.3rem 1.2rem; }

	/* Footer text was jammed against the screen edge. */
	.bk-footer{ padding-left:1.25rem; padding-right:1.25rem; }
	.bk-footer-cols{ gap:1.75rem; }
}
/* ===== MOBILE OVERLAY MENU ==================================
   The stock WP overlay is a plain white sheet. This dresses it up to match
   the rest of the site: foam gradient, drifting bubbles, the logo up top,
   big Fredoka links with paw bullets that stagger in, and a Call CTA.
   All of it hangs off WP's own `.is-menu-open` state -- no extra markup
   except the `.bk-nav-call` nav item (added in parts/header.html).
   ============================================================ */
.wp-block-navigation__responsive-container.is-menu-open{
	background:radial-gradient(125% 85% at 50% 0%, #e0f7fa 0%, #ffffff 62%) !important;
	padding:0 !important; }

/* Drifting bubbles behind the links (pure CSS, no canvas here). */
.wp-block-navigation__responsive-container.is-menu-open::before{
	content:""; position:absolute; inset:0; pointer-events:none; z-index:0;
	/* `closest-side` keeps each bubble a true circle inscribed in its box --
	   without it the gradient overruns the box and clips into a square. */
	background-image:
		radial-gradient(circle closest-side at 38% 34%, rgba(255,255,255,.95) 8%, rgba(135,206,235,.50) 62%, rgba(52,152,219,0) 100%),
		radial-gradient(circle closest-side at 38% 34%, rgba(255,255,255,.95) 8%, rgba(135,206,235,.45) 62%, rgba(52,152,219,0) 100%),
		radial-gradient(circle closest-side at 38% 34%, rgba(255,255,255,.95) 8%, rgba(135,206,235,.40) 62%, rgba(52,152,219,0) 100%),
		radial-gradient(circle closest-side at 38% 34%, rgba(255,255,255,.95) 8%, rgba(135,206,235,.45) 62%, rgba(52,152,219,0) 100%),
		radial-gradient(circle closest-side at 38% 34%, rgba(255,255,255,.95) 8%, rgba(135,206,235,.35) 62%, rgba(52,152,219,0) 100%);
	background-repeat:no-repeat;
	background-size:120px 120px, 74px 74px, 52px 52px, 96px 96px, 38px 38px;
	background-position:-6% 82%, 84% 70%, 14% 44%, 78% 22%, 40% 92%;
	animation:bkFloat 13s ease-in-out infinite alternate; }
@keyframes bkFloat{
	from{ background-position:-6% 86%, 84% 74%, 14% 48%, 78% 26%, 40% 96%; }
	to  { background-position:-2% 62%, 88% 52%, 18% 26%, 74% 6%,  44% 70%; } }

/* Logo at the top of the menu (drawn in, no extra markup needed).
   Needs an explicit width -- a flex child with only a height collapses to 0. */
.is-menu-open .wp-block-navigation__responsive-container-content::before{
	content:""; display:block; width:min(190px, 55vw); height:78px;
	margin:0 auto .9rem; flex:none;
	background:url('https://barksidegrooms.com/wp-content/uploads/2026/06/barkside-logo-no-bubbles.png') center/contain no-repeat; }

.is-menu-open .wp-block-navigation__responsive-container-content{
	position:relative; z-index:2; width:100%;
	display:flex !important; flex-direction:column; justify-content:center; align-items:center;
	min-height:100vh; padding:2.5rem 1.5rem; }

/* Keep the links in a centered column. NOTE: the nav block deliberately has NO
   `justifyContent` set -- when it was "right", WP added an items-justified-right
   class that shoved the overlay links off the edge of the screen. The desktop
   nav is pushed right by `.bk-nav{margin-left:auto}` instead. */
.is-menu-open .wp-block-navigation__container{
	/* flex:none matters -- otherwise the <ul> stretches to fill the column and
	   centres its own items, which opened a big dead gap under the logo. */
	flex:0 0 auto !important;
	gap:.45rem !important;              /* roomier tap targets */
	width:100%; max-width:340px;
	flex-direction:column !important;
	align-items:stretch !important; justify-content:flex-start !important; }

/* The links themselves: big, rounded, paw-bulleted. */
.is-menu-open .wp-block-navigation-item{
	animation:bkMenuIn .42s cubic-bezier(.2,.75,.3,1) both; }
.is-menu-open .wp-block-navigation-item:nth-child(1){ animation-delay:.04s; }
.is-menu-open .wp-block-navigation-item:nth-child(2){ animation-delay:.09s; }
.is-menu-open .wp-block-navigation-item:nth-child(3){ animation-delay:.14s; }
.is-menu-open .wp-block-navigation-item:nth-child(4){ animation-delay:.19s; }
.is-menu-open .wp-block-navigation-item:nth-child(5){ animation-delay:.24s; }
.is-menu-open .wp-block-navigation-item:nth-child(6){ animation-delay:.31s; }
@keyframes bkMenuIn{ from{ opacity:0; transform:translateY(16px); } to{ opacity:1; transform:none; } }

.is-menu-open .wp-block-navigation-item{ width:100%; }
.is-menu-open .wp-block-navigation-item__content{
	display:flex !important; align-items:center; justify-content:flex-start; gap:.7rem;
	font-family:Fredoka, ui-rounded, system-ui, sans-serif;
	font-size:1.6rem !important; font-weight:600; color:var(--bk-navy) !important;
	padding:1rem 1.2rem; border-radius:18px; text-decoration:none !important;
	min-height:58px; box-sizing:border-box;   /* comfortable thumb target */
	transition:background .18s ease, transform .18s ease; }

/* The stock focus ring is a tight black box drawn right against the text, and
   it fires on tap as well as keyboard. Show it only for keyboard users, in
   brand blue, with room to breathe. */
.is-menu-open .wp-block-navigation-item__content:focus{ outline:none; }
.is-menu-open .wp-block-navigation-item__content:focus-visible{
	outline:3px solid var(--bk-blue); outline-offset:4px; border-radius:18px; }
.is-menu-open .wp-block-navigation-item__content::before{
	content:""; width:1.35em; height:1.35em; flex:none; opacity:.85;
	background:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAyNCAyNCcgZmlsbD0nIzM0OThkYic+PHBhdGggZD0nTTEyIDEzLjVjLTIuMiAwLTQgMS42LTQgMy42IDAgMS41IDEuMiAyLjQgMi43IDIuNC41IDAgLjktLjEgMS4zLS4zLjQuMi44LjMgMS4zLjMgMS41IDAgMi43LS45IDIuNy0yLjQgMC0yLTEuOC0zLjYtNC0zLjZ6TTYuMiAxMS42Yy0xIDAtMS44LjktMS44IDJzLjggMiAxLjggMiAxLjgtLjkgMS44LTItLjgtMi0xLjgtMnptMTEuNiAwYy0xIDAtMS44LjktMS44IDJzLjggMiAxLjggMiAxLjgtLjkgMS44LTItLjgtMi0xLjgtMnpNOS4xIDkuNmMuOSAwIDEuNi0uOSAxLjYtMnMtLjctMi0xLjYtMi0xLjYuOS0xLjYgMiAuNyAyIDEuNiAyem01LjggMGMuOSAwIDEuNi0uOSAxLjYtMnMtLjctMi0xLjYtMi0xLjYuOS0xLjYgMiAuNyAyIDEuNiAyeicvPjwvc3ZnPg==") center/contain no-repeat;
	transition:transform .18s ease; }
.is-menu-open .wp-block-navigation-item__content:hover,
.is-menu-open .wp-block-navigation-item__content:focus{
	background:rgba(52,152,219,.10); transform:translateX(4px); }
.is-menu-open .wp-block-navigation-item__content:hover::before{ transform:rotate(-12deg) scale(1.1); }

/* Call CTA at the bottom of the menu (hidden in the desktop bar). */
.is-menu-open .bk-nav-call{ width:100%; margin-top:1.4rem; }
.is-menu-open .bk-nav-call .wp-block-navigation-item__content{
	box-sizing:border-box; width:100%;
	justify-content:center; gap:.6rem;
	background:var(--bk-blue); color:#fff !important;
	font-size:1rem !important; font-weight:700; border-radius:999px;
	padding:1.05rem 1.6rem !important;   /* roomy: the label is long */
	box-shadow:var(--bk-shadow-sm);
	white-space:nowrap; }
.is-menu-open .bk-nav-call .wp-block-navigation-item__content::before{
	background:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAyNCAyNCcgZmlsbD0nbm9uZScgc3Ryb2tlPScjZmZmZmZmJyBzdHJva2Utd2lkdGg9JzInIHN0cm9rZS1saW5lY2FwPSdyb3VuZCcgc3Ryb2tlLWxpbmVqb2luPSdyb3VuZCc+PHBhdGggZD0nTTIyIDE2Ljl2M2EyIDIgMCAwIDEtMi4yIDIgMTkuOCAxOS44IDAgMCAxLTguNi0zLjEgMTkuNSAxOS41IDAgMCAxLTYtNkExOS44IDE5LjggMCAwIDEgMi4xIDQuMiAyIDIgMCAwIDEgNC4xIDJoM2EyIDIgMCAwIDEgMiAxLjdjLjEuOS4zIDEuOC42IDIuNmEyIDIgMCAwIDEtLjUgMi4xTDguMSA5LjZhMTYgMTYgMCAwIDAgNiA2bDEuMi0xLjFhMiAyIDAgMCAxIDIuMS0uNWMuOC4zIDEuNy41IDIuNi42YTIgMiAwIDAgMSAxLjcgMnonLz48L3N2Zz4=") center/contain no-repeat; width:1.15em; height:1.15em; opacity:1; }
.is-menu-open .bk-nav-call .wp-block-navigation-item__content:hover{
	background:var(--bk-navy); transform:none; }

/* Close button: bigger, on-brand, gently rotates on hover. */
.is-menu-open .wp-block-navigation__responsive-container-close{
	top:1.1rem; right:1.1rem; width:46px; height:46px; z-index:3;
	border-radius:999px; background:rgba(255,255,255,.75); }
.is-menu-open .wp-block-navigation__responsive-container-close svg{
	width:26px; height:26px; fill:var(--bk-navy);
	transition:transform .25s ease; }
.is-menu-open .wp-block-navigation__responsive-container-close:hover svg{
	transform:rotate(90deg); }

/* The Call item is menu-only: keep it out of the desktop nav bar. */
@media (min-width:782px){ .bk-nav-call{ display:none !important; } }

@media (prefers-reduced-motion:reduce){
	.wp-block-navigation__responsive-container.is-menu-open::before{ animation:none; }
	.is-menu-open .wp-block-navigation-item{ animation:none; }
}

/* Footer needs side padding at every width (the theme gives it none). */
.bk-footer{ padding-left:clamp(1.25rem,4vw,2rem); padding-right:clamp(1.25rem,4vw,2rem); }

/* Safety net against sideways scrolling on phones.
   NOTE: this is `clip`, NOT `hidden`, and only on <body>. `overflow-x:hidden`
   here would create a scroll container and silently KILL the sticky header.
   Don't swap it. (The real overflow culprit was the video; it's capped now.) */
body{ overflow-x:clip; }
