/*
Theme Name: Tidewater Accounting & Bookkeeping
Description: WordPress theme for Tidewater Accounting & Bookkeeping Services, Inc. Page-template based, built from the client's delivered static design.
Version: 8.4
Author: Tidewater Accounting & Bookkeeping Services
*/

/* ============================================================
   Fonts — self-hosted, extracted from the client's design export
   (Newsreader = serif display, Geist = sans/UI, Geist Mono = labels)
   ============================================================ */
@font-face{
  font-family:"Newsreader";
  src:url("assets/fonts/Newsreader-Variable.ttf") format("truetype");
  font-weight:200 800;
  font-style:normal;
  font-display:swap;
}
@font-face{
  font-family:"Newsreader";
  src:url("assets/fonts/Newsreader-Italic-Variable.ttf") format("truetype");
  font-weight:200 800;
  font-style:italic;
  font-display:swap;
}
@font-face{
  font-family:"Geist";
  src:url("assets/fonts/Geist-Variable.ttf") format("truetype");
  font-weight:100 900;
  font-style:normal;
  font-display:swap;
}
@font-face{
  font-family:"Geist";
  src:url("assets/fonts/Geist-Italic-Variable.ttf") format("truetype");
  font-weight:100 900;
  font-style:italic;
  font-display:swap;
}
@font-face{
  font-family:"Geist Mono";
  src:url("assets/fonts/GeistMono-Variable.ttf") format("truetype");
  font-weight:100 900;
  font-style:normal;
  font-display:swap;
}

/* ============================================================
   Design tokens
   ============================================================ */
:root{
  --green:#009750;
  --green-deep:#00733d;
  --green-soft:#E6F2EB;
  --green-tint-08: rgba(0,151,80,.08);
  --green-tint-25: rgba(0,151,80,.25);

  --ink:#231F20;
  --ink-2:#3a3534;
  --ink-3:#6b6663;

  --paper:#F5F2EC;
  --paper-2:#EBE6D9;
  --white:#ffffff;
  --line:#d9d3c7;

  --text-strong: var(--ink);
  --text-body: var(--ink-2);
  --text-muted: var(--ink-3);
  --surface-page: var(--paper);
  --surface-alt: var(--paper-2);
  --surface-card: var(--white);
  --surface-dark: var(--ink);
  --border-hairline: var(--line);
  --accent: var(--green);
  --accent-hover: var(--green-deep);

  --serif:"Newsreader", "Times New Roman", serif;
  --sans:"Geist", "Helvetica Neue", Arial, sans-serif;
  --mono:"Geist Mono", ui-monospace, monospace;
  --font-display: var(--serif);
  --font-body: var(--sans);
  --font-label: var(--mono);

  --display-xl: clamp(52px, 5.6vw, 92px);
  --display-lg: clamp(40px, 4.6vw, 66px);
  --display-md: clamp(34px, 4vw, 52px);
  --display-sm: clamp(28px, 3vw, 38px);

  --text-lead: 17px;
  --text-base: 15.5px;
  --text-sm: 13.5px;

  --eyebrow-size: 13px;
  --eyebrow-tracking: .28em;
  --label-size: 11px;
  --label-tracking: .16em;

  --space-1: 4px; --space-2: 8px; --space-3: 12px; --space-4: 16px;
  --space-5: 24px; --space-6: 32px; --space-7: 48px; --space-8: 64px;
  --space-9: 96px; --space-10: 120px;

  --container-max: 1440px;
  --container-pad: 56px;

  --radius-sm: 6px;
  --radius-md: 12px;
  --radius-lg: 16px;
  --radius-pill: 999px;

  --border-hair: 1px solid var(--line);

  --shadow-card: 0 22px 48px -30px rgba(35,31,32,.30), 0 6px 16px -12px rgba(35,31,32,.16);
  --shadow-card-hover: 0 38px 80px -38px rgba(35,31,32,.44), 0 10px 24px -14px rgba(35,31,32,.22);
  --shadow-media: 0 40px 90px -60px rgba(35,31,32,.45);
  --shadow-cta-green: 0 14px 30px -16px rgba(0,151,80,.7);

  --ease-out: cubic-bezier(.2,.7,.2,1);
  --ease-standard: cubic-bezier(.4,0,.2,1);
  --dur-fast: .25s; --dur-med: .45s; --dur-slow: .9s;
}

/* No global box-sizing:border-box reset — the original design doesn't
   use one (verified against source: browser default content-box
   everywhere), and adding it was silently shrinking every max-width +
   padding container site-wide (nav, hero, footer, page banners...).
   Scoped to form controls only, since those are built fresh for this
   theme (not extracted from the original) and rely on width:100% +
   padding not overflowing their container. */
input,textarea,select,button{box-sizing:border-box}
html{scroll-behavior:smooth}
/* Hides headings synchronously, before first paint, so there's never a
   moment where they're visible before reveal.js gets a chance to hide
   them itself (it only runs in the footer, after everything above it
   has already painted). reveal.js removes .tw-preload from <html> once
   it's finished setting up its own hide/observe state for them, so
   this is a handoff, not a permanent rule — see reveal.js. The
   <noscript> fallback (in header.php, right after <head> opens)
   neutralizes this instantly if JS is disabled, so nothing can ever
   stay hidden forever with no way to release it. */
.tw-preload h1,.tw-preload h2,.tw-preload h3{opacity:0}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans)}
a{color:var(--accent);text-decoration:none}
a:hover{color:var(--accent-hover)}
img{max-width:100%;display:block}

/* ============================================================
   Shared buttons / cards (used across page templates)
   ============================================================ */
.btn{display:inline-flex;align-items:center;gap:6px;font-family:var(--sans);font-size:15px;font-weight:500;border-radius:var(--radius-pill);padding:14px 30px;transition:background var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}
.btn-primary{color:#fff;background:var(--green);box-shadow:var(--shadow-cta-green)}
.btn-primary:hover{background:var(--accent-hover);color:#fff}
.btn-outline-light{color:var(--paper);border:1px solid rgba(245,242,236,.5)}
.btn-outline-light:hover{background:var(--paper);color:var(--ink)}
.btn-outline-dark{color:var(--ink);border:1px solid var(--ink)}
.btn-outline-dark:hover{background:var(--ink);color:var(--paper)}

.card{background:var(--white);border:var(--border-hair);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-card);transition:transform var(--dur-med) var(--ease-out)}
.card:hover{transform:translateY(-4px)}

.eyebrow{font-family:var(--mono);font-size:var(--eyebrow-size);letter-spacing:var(--eyebrow-tracking);text-transform:uppercase;color:var(--green);margin-bottom:var(--space-4)}

/* ============================================================
   Scroll-reveal / word-fade entrance animation
   (classes applied at runtime by assets/js/reveal.js — restored from
   the client's real export, not a recreation)
   ============================================================ */
.rv{opacity:0;transform:translateY(26px);transition:opacity .9s cubic-bezier(.2,.7,.2,1),transform .9s cubic-bezier(.2,.7,.2,1)}
.rv.in{opacity:1;transform:translateY(0)}
.tw .w{display:inline-block;opacity:0;transform:translateY(0.55em);filter:blur(3px);transition:opacity .6s cubic-bezier(.2,.7,.2,1),transform .6s cubic-bezier(.2,.7,.2,1),filter .6s cubic-bezier(.2,.7,.2,1)}
.tw.in .w{opacity:1;transform:translateY(0);filter:blur(0)}

/* ============================================================
   Sticky nav (from the client's real SiteNav component)
   ============================================================ */
.site-nav{position:sticky;top:0;z-index:900;background:var(--paper);border-bottom:var(--border-hair)}
.tw-skip-link{position:absolute;left:-9999px;top:auto;background:var(--green);color:#fff;padding:12px 20px;border-radius:0 0 var(--radius-sm) 0;font-family:var(--sans);font-size:14px;font-weight:500;z-index:9999}
.tw-skip-link:focus{position:fixed;left:0;top:0}

.nav-row{max-width:var(--container-max);margin:0 auto;padding:10px clamp(16px,4vw,56px);min-height:117px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 32px;transition:min-height .4s var(--ease-out)}
.nav-logo{display:flex;align-items:center;gap:1px;color:var(--ink)}
.nav-logo-img{height:42px;flex-shrink:0;transition:height .4s var(--ease-out)}
.nav-logo-line{font-family:var(--serif);font-weight:400;font-style:italic;letter-spacing:-0.02em;color:var(--ink);display:block;font-size:clamp(18px,1.9vw,27px);line-height:24px;transition:font-size .4s var(--ease-out),line-height .4s var(--ease-out)}
.nav-logo-line em{font-style:italic;color:var(--green)}

.nav-links{display:flex;flex-wrap:wrap;align-items:center;gap:10px 20px;list-style:none;margin:0;padding:0}
.nav-links .nav-utility-start{margin-left:30px} /* 30px margin + the row's 20px gap = 50px total between the last nav link and Client Portal */
.nav-links li{display:flex}
.nav-links a:not(.nav-btn-outline):not(.nav-btn-cta){font-family:var(--mono);font-size:13px;letter-spacing:0.08em;text-transform:uppercase;white-space:nowrap;color:var(--ink);padding:6px 0;border-bottom:2px solid transparent}
.nav-links .current-menu-item > a:not(.nav-btn-outline):not(.nav-btn-cta),
.nav-links .current_page_item > a:not(.nav-btn-outline):not(.nav-btn-cta),
.nav-links a.current-menu-item:not(.nav-btn-outline):not(.nav-btn-cta){color:var(--green);border-bottom-color:var(--green)}

/* Desktop dropdown — opens on hover or keyboard focus, matches the
   nav's own card/shadow language (not invented, reuses --radius-md,
   --shadow-card, --border-hair already used elsewhere in the theme) */
.nav-links li.menu-item-has-children{position:relative}
.nav-links li.menu-item-has-children > a{display:flex;align-items:center;gap:5px}
.nav-links li.menu-item-has-children > a::after{content:'';width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg);margin-top:-3px;transition:transform var(--dur-fast) var(--ease-out)}
.nav-links li.menu-item-has-children:hover > a::after,
.nav-links li.menu-item-has-children:focus-within > a::after{transform:rotate(-135deg);margin-top:3px}
.nav-links .sub-menu{position:absolute;top:100%;left:0;min-width:220px;margin:0;padding:8px;list-style:none;background:var(--white);border:var(--border-hair);border-radius:var(--radius-md);box-shadow:var(--shadow-card);opacity:0;visibility:hidden;transform:translateY(6px);transition:opacity var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out),visibility var(--dur-fast)}
.nav-links li.menu-item-has-children:hover > .sub-menu,
.nav-links li.menu-item-has-children:focus-within > .sub-menu{opacity:1;visibility:visible;transform:translateY(0)}
.nav-links .sub-menu li{display:block}
.nav-links .sub-menu a{display:block;padding:10px 12px;border-radius:var(--radius-sm);border-bottom:none;white-space:nowrap;font-size:12.5px}
.nav-links .sub-menu a:hover,
.nav-links .sub-menu .current-menu-item > a{background:var(--green-tint-08);color:var(--green)}
/* Nested sub-sub-menus (rare, but WP allows unlimited depth) open to
   the side instead of stacking further down */
.nav-links .sub-menu .sub-menu{top:-8px;left:100%}
.nav-btn-outline{font-family:var(--sans);font-size:13px;font-weight:500;color:var(--ink);border:1px solid var(--ink);border-radius:var(--radius-pill);padding:10px 22px;white-space:nowrap}
.nav-btn-outline:hover{background:var(--ink);color:var(--paper)}
.nav-btn-cta{font-family:var(--sans);font-size:13px;font-weight:500;color:#fff;background:var(--green);border-radius:var(--radius-pill);padding:10px 22px;box-shadow:0 10px 24px -12px rgba(0,151,80,.55);white-space:nowrap}
.nav-btn-cta:hover{background:#00854a;color:#fff}

.nav-burger{display:none;background:transparent;border:1px solid #b9b3a7;border-radius:10px;padding:9px 11px;cursor:pointer;align-items:center;justify-content:center}
@media (min-width:921px){.nav-mobile{display:none !important}}
@media (max-width:920px){
  .nav-links{display:none !important}
  .nav-burger{display:inline-flex !important}
}
.nav-panel{display:none;flex-direction:column;border-top:var(--border-hair);background:var(--paper);padding:4px clamp(16px,4vw,56px) 20px}
.nav-panel.is-open{display:flex}
.nav-panel a{font-family:var(--mono);font-size:14px;letter-spacing:0.14em;text-transform:uppercase;color:var(--ink);min-height:48px;display:flex;align-items:center;border-bottom:1px solid #e5dfd3}
.nav-panel .current-menu-item > a,
.nav-panel a.current-menu-item{color:var(--green)}
/* Mobile dropdown — no JS accordion, just an indented nested list;
   the panel already scrolls the whole page if it's long, so hiding
   sub-items behind a tap would be one more step for no real benefit */
.nav-panel .sub-menu{list-style:none;margin:0;padding:0}
.nav-panel .sub-menu a{padding-left:20px;font-size:12.5px;color:var(--ink-2);min-height:42px}
.nav-panel .sub-menu .sub-menu a{padding-left:36px}
.nav-panel-cta{display:flex;flex-direction:column;gap:10px;margin-top:16px}
.nav-panel-cta .nav-btn-outline,.nav-panel-cta .nav-btn-cta{box-sizing:border-box;display:flex;width:100%;padding:11px 20px;font-size:14px;text-align:center;justify-content:center;white-space:nowrap}

body.nav-scrolled .site-nav .nav-row{min-height:72px}
@media (min-width:921px){
  body.nav-scrolled .site-nav .nav-logo-img{height:28px}
  body.nav-scrolled .site-nav .nav-logo-line{font-size:19px;line-height:17px}
}

.season-banner{background:var(--green);color:#fff;text-align:center;padding:10px 24px;font-family:var(--mono);font-size:11.5px;letter-spacing:0.14em;text-transform:uppercase}
.season-banner a{color:#fff;text-decoration:underline}

/* ============================================================
   Home hero (Banner Area, managed in wp-admin)
   ============================================================ */
.tw-hero-heading{margin:0;font-family:var(--serif);font-weight:300;font-size:clamp(40px,5vw,72px);letter-spacing:-0.02em;line-height:1.04;color:var(--paper);max-width:900px}
.tw-hero-heading .tw-accent{color:#3fbf7f;font-style:italic}
.tw-hero-plain{max-width:var(--container-max);margin:0 auto;padding:clamp(60px,8vw,110px) clamp(20px,5vw,56px) clamp(30px,5vw,50px)}
.tw-hero-plain h1{margin:0;font-family:var(--serif);font-weight:300;font-size:clamp(34px,4.2vw,56px);letter-spacing:-0.02em;line-height:1.1;color:var(--ink)}

/* ============================================================
   404 / search / single / archive — default WP template fallbacks
   ============================================================ */

/* 404.php */
.tw-error-404{max-width:720px;margin:0 auto;padding:clamp(70px,10vw,140px) clamp(20px,5vw,56px) clamp(90px,10vw,160px);text-align:center}
.tw-error-404-eyebrow{font-family:var(--mono);font-size:clamp(48px,8vw,96px);letter-spacing:0.02em;color:var(--green-tint-25);line-height:1;margin-bottom:8px}
.tw-error-404 h1{margin:0 0 16px;font-family:var(--serif);font-weight:300;font-size:clamp(28px,3.6vw,44px);letter-spacing:-0.02em;color:var(--ink)}
.tw-error-404 p{margin:0 auto 32px;font-size:16px;line-height:1.7;color:#57524a;max-width:460px}
.tw-error-404-actions{display:flex;flex-wrap:wrap;gap:14px;justify-content:center;margin-bottom:48px}
.tw-error-404-links{display:flex;flex-wrap:wrap;gap:10px 22px;justify-content:center;padding-top:32px;border-top:var(--border-hair)}
.tw-error-404-links a{font-family:var(--mono);font-size:12px;letter-spacing:0.1em;text-transform:uppercase;color:var(--ink-2)}
.tw-error-404-links a:hover{color:var(--green)}

/* search.php */
.tw-search-wrap{max-width:760px;margin:0 auto;padding:clamp(30px,5vw,56px) clamp(20px,5vw,56px) clamp(60px,8vw,110px)}
.tw-search-count{margin:0 0 32px;font-size:14px;color:var(--ink-3)}
.tw-search-results{display:flex;flex-direction:column;gap:28px;margin-bottom:16px}
.tw-search-result{padding-bottom:28px;border-bottom:var(--border-hair)}
.tw-search-result-title{display:block;font-family:var(--serif);font-weight:400;font-size:22px;letter-spacing:-0.01em;color:var(--ink);margin-bottom:6px}
.tw-search-result-meta{font-family:var(--mono);font-size:11px;letter-spacing:0.1em;text-transform:uppercase;color:var(--ink-3);margin-bottom:8px}
.tw-search-result-excerpt{margin:0;font-size:14.5px;line-height:1.65;color:#57524a}
.tw-search-form{display:flex;gap:10px;margin-top:40px}
.tw-search-form-input{flex:1;font-family:var(--sans);font-size:15px;padding:12px 16px;border:var(--border-hair);border-radius:var(--radius-sm);background:var(--white);color:var(--ink)}

/* single.php */
.tw-single-featured{max-width:1000px;margin:0 auto;padding:0 clamp(20px,5vw,56px)}
.tw-single-featured img{width:100%;border-radius:var(--radius-lg);box-shadow:var(--shadow-media)}
.tw-single-post{max-width:720px;margin:0 auto;padding:clamp(36px,6vw,64px) clamp(20px,5vw,56px) clamp(50px,7vw,90px)}
.tw-single-meta{font-family:var(--mono);font-size:11px;letter-spacing:0.1em;text-transform:uppercase;color:var(--green);margin-bottom:14px}
.tw-single-title{margin:0 0 28px;font-family:var(--serif);font-weight:300;font-size:clamp(28px,4vw,44px);letter-spacing:-0.02em;line-height:1.15;color:var(--ink)}
.tw-single-content{font-size:16.5px;line-height:1.75;color:var(--ink-2)}
.tw-single-content p{margin:0 0 22px}
.tw-single-content h2{font-family:var(--serif);font-weight:400;font-size:28px;margin:40px 0 16px;color:var(--ink)}
.tw-single-content h3{font-family:var(--serif);font-weight:400;font-size:22px;margin:32px 0 14px;color:var(--ink)}
.tw-single-content img{max-width:100%;border-radius:var(--radius-md);margin:24px 0}
.tw-single-content a{text-decoration:underline}
.tw-single-nav{max-width:720px;margin:0 auto;padding:0 clamp(20px,5vw,56px) clamp(60px,8vw,100px);display:flex;justify-content:space-between;gap:20px;border-top:var(--border-hair);padding-top:28px}
.tw-single-nav a{font-size:14px;font-weight:500;max-width:45%}

/* archive.php */
.tw-archive-desc{margin-top:14px;font-size:15px;color:#57524a;max-width:600px}
.tw-archive-wrap{max-width:1440px;margin:0 auto;padding:0 clamp(20px,5vw,56px) clamp(70px,9vw,120px)}
.tw-archive-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:28px;margin-bottom:48px}
.tw-archive-card{background:var(--white);border:var(--border-hair);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-card)}
.tw-archive-card-img{width:100%;height:190px;object-fit:cover}
.tw-archive-card-body{padding:24px 26px 28px;display:flex;flex-direction:column;gap:8px}
.tw-archive-card-meta{font-family:var(--mono);font-size:10px;letter-spacing:0.14em;text-transform:uppercase;color:var(--ink-3)}
.tw-archive-card-title{margin:0;font-family:var(--serif);font-weight:400;font-size:20px;letter-spacing:-0.01em}
.tw-archive-card-title a{color:var(--ink)}
.tw-archive-card-excerpt{margin:0;font-size:13.5px;line-height:1.6;color:#57524a}
.tw-archive-card-link{font-size:13.5px;font-weight:500}

/* Shared pagination (search.php + archive.php) */
.tw-pagination{display:flex;justify-content:center;gap:8px;flex-wrap:wrap}
.tw-pagination .page-numbers{font-family:var(--mono);font-size:12px;letter-spacing:0.05em;color:var(--ink-2);border:var(--border-hair);border-radius:var(--radius-sm);padding:9px 14px}
.tw-pagination .page-numbers.current{background:var(--green);border-color:var(--green);color:#fff}
.tw-pagination a.page-numbers:hover{border-color:var(--green);color:var(--green)}

/* ============================================================
   VC elements (inc/vc-elements/) — reusable anywhere, not just Home
   ============================================================ */

/* [tidewater_section_heading] */
.tw-heading-wrap{margin-bottom:32px}
.tw-heading-wrap.align-center{text-align:center}
.tw-section-eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:0.24em;text-transform:uppercase;color:var(--green);margin-bottom:16px}
.tw-section-heading{margin:0;font-family:var(--serif);font-weight:400;letter-spacing:-0.02em;line-height:1.1}
.tw-section-heading.size-large{font-size:clamp(28px,4vw,48px)}
.tw-section-heading.size-medium{font-size:clamp(24px,3.2vw,40px)}
.tw-section-heading .tw-accent{color:var(--green);font-style:italic}
.tw-section-heading-desc{margin:12px 0 0;font-size:15px;line-height:1.65;color:#57524a;max-width:640px}
.tw-heading-wrap.align-center .tw-section-heading-desc{margin-left:auto;margin-right:auto}

/* [tidewater_topic_card] */
.tw-topic-card{display:flex;flex-direction:column;gap:10px;padding:28px;color:var(--ink)}
.tw-topic-card-head{display:flex;justify-content:space-between;align-items:center}
.tw-topic-card-num{font-family:var(--mono);font-size:11px;letter-spacing:0.12em;color:#8a8478}
.tw-topic-card-badge{font-family:var(--mono);font-size:10px;letter-spacing:0.08em;color:var(--green);border:1px solid rgba(0,151,80,.35);border-radius:6px;padding:4px 8px}
.tw-topic-card-title{margin:0;font-family:var(--serif);font-weight:400;font-size:21px;letter-spacing:-0.01em;line-height:1.25}
.tw-topic-card-desc{margin:0;font-size:13.5px;line-height:1.6;color:#57524a}
.tw-topic-card-link{margin-top:auto;font-size:13.5px;font-weight:500;color:var(--green)}

/* [tidewater_file_link] */
.tw-file-link{display:flex;align-items:center;gap:16px;background:var(--white);border:var(--border-hair);border-radius:var(--radius-md);padding:18px 22px;color:var(--ink);box-shadow:0 22px 48px -30px rgba(35,31,32,.22);transition:transform var(--dur-med) var(--ease-out)}
.tw-file-link-badge{flex-shrink:0;font-family:var(--mono);font-size:10px;letter-spacing:0.08em;color:var(--green);border:1px solid rgba(0,151,80,.35);border-radius:6px;padding:5px 8px}
.tw-file-link-label{flex:1;font-size:15px;font-weight:500;line-height:1.4}
.tw-file-link-arrow{color:var(--green);font-size:16px}

/* [tidewater_cta_box] */
.tw-cta-box{text-align:center;background:var(--paper-2);border-radius:var(--radius-lg);padding:clamp(24px,4vw,44px) clamp(20px,4vw,48px)}
.tw-cta-box-heading{margin:0 0 10px;font-family:var(--serif);font-weight:300;font-size:28px;letter-spacing:-0.02em}
.tw-cta-box-text{margin:0 0 24px;font-size:15px;color:#57524a}

/* [tidewater_team_card] */
.tw-team-card{display:flex;flex-direction:column}
.tw-team-card-photo{width:100%;height:280px;background-size:cover;background-repeat:no-repeat;background-color:var(--paper-2)}
.tw-team-card-body{padding:26px 26px 30px;display:flex;flex-direction:column;gap:8px}
.tw-team-card-role{font-family:var(--mono);font-size:10px;letter-spacing:0.2em;text-transform:uppercase;color:var(--green)}
.tw-team-card-name{margin:0;font-family:var(--serif);font-weight:400;font-size:23px;letter-spacing:-0.01em}
.tw-team-card-bio{margin:0;font-size:14px;line-height:1.65;color:#57524a}

/* [tidewater_photo_card] */
/* [tidewater_service_card] */
/* [tidewater_hours_card] */
/* [tidewater_spacer] */
.tw-spacer{width:100%;height:var(--tw-spacer-d,60px)}
@media (max-width:920px){.tw-spacer{height:var(--tw-spacer-t,var(--tw-spacer-d,60px))}}
@media (max-width:640px){.tw-spacer{height:var(--tw-spacer-m,var(--tw-spacer-t,var(--tw-spacer-d,60px)))}}

.tw-hours-card{background:var(--white);border:var(--border-hair);border-radius:var(--radius-md);padding:22px}
.tw-hours-card-title{font-family:var(--serif);font-weight:400;font-size:19px;margin-bottom:8px}
.tw-hours-card-range{color:var(--green);font-style:italic}
.tw-hours-card-hours{font-size:14px;line-height:1.7;color:#57524a}

.tw-service-card{padding:30px;display:flex;flex-direction:column;gap:12px}
.tw-service-card-num{width:40px;height:40px;border-radius:999px;background:rgba(0,151,80,.09);display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:12px;color:var(--green)}
.tw-service-card-title{margin:0;font-family:var(--serif);font-weight:400;font-size:22px;letter-spacing:-0.01em}
.tw-service-card-desc{margin:0;font-size:14px;line-height:1.6;color:#57524a}

.tw-photo-card{background:var(--white);border:var(--border-hair);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-card);display:flex;flex-direction:column;height:100%;transition:transform var(--dur-med) var(--ease-out)}
.tw-photo-card:hover{transform:translateY(-4px)}
.tw-photo-card-img{width:100%;height:210px;object-fit:cover}
.tw-photo-card-body{padding:28px 28px 32px;display:flex;flex-direction:column;gap:12px;flex:1}
.tw-photo-card-heading{margin:0;font-family:var(--serif);font-weight:400;font-size:24px;letter-spacing:-0.01em}
.tw-photo-card-text{margin:0;font-size:14.5px;line-height:1.65;color:var(--ink-2);flex:1}
.tw-photo-card-link{font-size:14px;font-weight:500}
.tw-photo-card-link span{display:inline-block}

/* [tidewater_image_badge] */
.tw-image-badge-wrap{position:relative}
.tw-image-badge-img{width:100%;height:368px;object-fit:cover;border-radius:var(--radius-lg);box-shadow:var(--shadow-media);display:block}
.tw-image-badge-box{position:absolute;background:var(--ink);color:var(--paper);border-radius:var(--radius-md);padding:18px 24px;max-width:300px}
.tw-image-badge-box.tw-badge-bottom-left{left:28px;bottom:28px}
.tw-image-badge-box.tw-badge-bottom-right{right:28px;bottom:28px}
.tw-image-badge-box.tw-badge-top-left{left:28px;top:28px}
.tw-image-badge-box.tw-badge-top-right{right:28px;top:28px}
.tw-image-badge-eyebrow{font-family:var(--mono);font-size:10px;letter-spacing:0.2em;text-transform:uppercase;color:#3fbf7f;margin-bottom:6px}
.tw-image-badge-text{font-family:var(--serif);font-weight:300;font-size:20px;line-height:1.3}

/* Home content area (the_content(), built with WPBakery below the Banner Area) */
.tw-home-content{background:var(--paper);max-width:var(--container-max);margin:0 auto}
.tw-bg-alt{background:var(--paper-2)}

/* ============================================================
   Page banner (interior-page hero, from the real PageBanner component)
   ============================================================ */
.page-banner{position:relative;background:var(--ink);overflow:hidden}
.page-banner-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.5}
.page-banner-img.pb-focus-right{object-position:78% center}
.page-banner-scrim{position:absolute;inset:0;background:linear-gradient(90deg,rgba(35,31,32,.92) 0%,rgba(35,31,32,.4) 55%,rgba(35,31,32,0) 100%)}
.page-banner-inner{position:relative;max-width:var(--container-max);margin:0 auto;padding:clamp(48px,8vw,96px) clamp(20px,5vw,56px) clamp(44px,8vw,88px)}
.page-banner-eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:0.24em;text-transform:uppercase;color:#3fbf7f;margin-bottom:18px}
.page-banner-title{margin:0;font-family:var(--serif);font-weight:300;font-size:clamp(33px,4.2vw,60px);letter-spacing:-0.02em;line-height:1.05;color:var(--paper);max-width:820px}
.page-banner-title em{color:#3fbf7f;font-style:italic}
.page-banner-lead{margin:22px 0 0;font-family:var(--sans);font-size:17px;line-height:1.65;color:#d8d3c8;max-width:560px}
@media (max-width:768px){.page-banner-img.pb-focus-right{object-position:78% center !important}}

/* ============================================================
   Footer (from the real SiteFooter component)
   ============================================================ */
.site-footer{background:var(--ink);color:var(--paper)}
.ft-grid{max-width:var(--container-max);margin:0 auto;padding:clamp(44px,8vw,88px) clamp(20px,5vw,56px) clamp(24px,8vw,48px);display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:48px}
.ft-brand{display:flex;flex-direction:column;gap:14px}
.ft-brand .nav-logo{color:var(--paper)}
.ft-brand .nav-logo-line{color:#fff;font-size:26px;line-height:23px}
.ft-brand p{margin:0;font-size:14px;line-height:1.6;color:#b8b2a6;max-width:320px}
.ft-badges{display:flex;gap:14px;align-items:center;margin-top:8px;flex-wrap:wrap}
.ft-badges img{height:40px}
.ft-col{display:flex;flex-direction:column;gap:10px}
.ft-col-label{font-family:var(--mono);font-size:10px;letter-spacing:0.2em;text-transform:uppercase;color:var(--green);margin-bottom:15px}
.ft-brand p:empty{display:none}
.ft-col p,.ft-col div.ft-text{font-size:14px;line-height:1.7;color:#d8d3c8}
.ft-col a{font-size:14px}
.ft-explore{display:flex;flex-direction:column;gap:8px;font-size:14px;list-style:none;margin:0;padding:0}
.ft-explore a{color:#d8d3c8}
.ft-explore a:hover{color:#fff}
.ft-bottom{border-top:1px solid rgba(245,242,236,.12)}
.ft-bottom-inner{max-width:var(--container-max);margin:0 auto;padding:clamp(16px,8vw,20px) clamp(20px,5vw,56px);display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}
.ft-copy{font-family:var(--mono);font-size:10.5px;letter-spacing:0.12em;color:#9b958a;text-transform:uppercase}
.ft-legal{display:flex;gap:18px;flex-wrap:wrap}
.ft-legal a{font-family:var(--mono);font-size:10.5px;letter-spacing:0.12em;text-transform:uppercase;color:#9b958a}
.ft-legal a:hover{color:#fff}

@media (max-width:768px){
  .pb-focus-right{object-position:78% center !important}
  .ft-explore-col{display:none !important}
  .ft-grid{grid-template-columns:1fr 1fr;gap:32px 24px}
  .ft-brand{grid-column:1 / -1}
}
