/*! Sydney Home Fix — WordPress layer
 *  Everything the static design did not cover: dynamic grids, inner pages,
 *  editor blocks, widgets, comments and accessibility helpers.
 */

/* =========================================================
   1. ACCESSIBILITY HELPERS
   ========================================================= */
.screen-reader-text{
  position:absolute !important;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;
}
.skip-link{
  position:absolute;left:-9999px;top:0;z-index:200;
  background:var(--brand);color:#fff;padding:14px 22px;border-radius:0 0 var(--r) 0;font-weight:700;
}
.skip-link:focus{left:0;}

/* Honeypot field — hidden from people, visible to bots. */
.shf-hp{position:absolute !important;left:-9999px;height:0;overflow:hidden;}

/* =========================================================
   2. DYNAMIC GRIDS (column counts come from the Customizer)
   ========================================================= */
.services-grid{grid-template-columns:repeat(var(--cols,6),minmax(0,1fr));}
.how-steps{grid-template-columns:repeat(var(--steps,4),minmax(0,1fr));}
.how-steps::before{
  left:calc(50% / var(--steps,4));
  right:calc(50% / var(--steps,4));
}

/* Service cards link the whole tile without nesting anchors. */
.service-card{position:relative;}
.service-card h3 a{color:inherit;}
.service-card .stretched{position:absolute;inset:0;border-radius:inherit;}
.service-card .service-icon{
  display:grid;place-items:center;width:96px;height:96px;border-radius:50%;
  background:var(--tint);color:var(--brand);
}
.service-card .service-icon svg{width:40px;height:40px;stroke-width:1.6;}

/* Hero background image comes through a custom property. */
.hero{background-image:linear-gradient(180deg,#FBFEFE 0%,#F2FAFA 55%,#EDF8F8 100%),var(--hero-bg,none);}

/* =========================================================
   3. INNER PAGE HERO
   ========================================================= */
.page-hero{
  background:linear-gradient(160deg,#FBFEFE 0%,#F5FCFC 60%,#F0F9F9 100%);
  padding:56px 0 60px;margin-bottom:56px;
}
.page-hero h1{font-size:44px;line-height:1.14;letter-spacing:-.015em;max-width:900px;}
.page-hero .badge{
  display:inline-block;background:#E8F7F7;color:var(--brand);
  font-size:12px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;
  padding:9px 15px;border-radius:12px;margin-bottom:18px;
}
.page-hero-sub{font-size:17px;line-height:1.7;color:var(--body);max-width:640px;margin-top:16px;}
.page-hero .post-meta{margin-top:16px;}

.breadcrumb{display:flex;flex-wrap:wrap;align-items:center;gap:9px;font-size:14px;color:var(--muted);margin-bottom:22px;}
.breadcrumb a{color:var(--brand);}
.breadcrumb a:hover{text-decoration:underline;}
.breadcrumb svg{width:14px;height:14px;}

/* =========================================================
   4. CONTENT LAYOUTS
   ========================================================= */
.content-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--grid-gap,32px);padding-bottom:var(--sec-y,120px);}
.content-layout.has-sidebar{grid-template-columns:minmax(0,1fr) 340px;}
.content-layout.is-narrow{max-width:860px;}
.content-main{min-width:0;}

/* Long-form typography */
.entry-content{font-size:17px;line-height:1.85;color:var(--body);}
.entry-content > * + *{margin-top:1.4em;}
.entry-content h2{font-size:30px;margin-top:1.8em;}
.entry-content h3{font-size:23px;margin-top:1.6em;}
.entry-content h4{font-size:19px;}
.entry-content a{color:var(--brand);text-decoration:underline;text-underline-offset:3px;}
.entry-content ul,.entry-content ol{padding-left:1.4em;}
.entry-content ul{list-style:disc;}
.entry-content ol{list-style:decimal;}
.entry-content li{margin-bottom:.6em;}
.entry-content img{border-radius:var(--r-img,20px);}
.entry-content blockquote{
  margin:1.8em 0;padding:22px 28px;background:var(--tint);
  border-left:4px solid var(--brand);border-radius:0 var(--r) var(--r) 0;
  font-size:18px;font-style:italic;color:var(--ink);
}
.entry-content blockquote cite{display:block;margin-top:10px;font-size:14px;font-style:normal;color:var(--muted);}
.entry-content code,.entry-content kbd{
  background:var(--tint);border-radius:6px;padding:2px 7px;font-size:.9em;color:var(--ink);
}
.entry-content pre{
  background:var(--navy);color:#E7F5F6;padding:22px;border-radius:var(--r);
  overflow-x:auto;font-size:14px;line-height:1.6;
}
.entry-content pre code{background:none;color:inherit;padding:0;}
.entry-content table{width:100%;border-collapse:collapse;font-size:15px;}
.entry-content th,.entry-content td{border:1px solid var(--line);padding:12px 16px;text-align:left;}
.entry-content th{background:var(--tint);color:var(--ink);font-weight:800;}
.entry-content hr{border:0;border-top:1px solid var(--line);margin:2.4em 0;}
.entry-content figure{margin:0;}
.entry-content figcaption{font-size:13.5px;color:var(--muted);margin-top:10px;text-align:center;}

/* Gutenberg alignments */
.alignleft{float:left;margin:0 1.6em 1.2em 0;}
.alignright{float:right;margin:0 0 1.2em 1.6em;}
.aligncenter{margin-left:auto;margin-right:auto;}
.alignwide{width:min(1100px,92vw);margin-left:50%;transform:translateX(-50%);max-width:none;}
.alignfull{width:100vw;margin-left:50%;transform:translateX(-50%);max-width:none;}
.wp-caption{max-width:100%;}
.wp-block-button__link{border-radius:var(--r);}
.page-links{margin-top:2em;font-weight:700;}

/* =========================================================
   5. POST LISTS
   ========================================================= */
.post-list{display:grid;gap:28px;}
.post-item{
  display:grid;grid-template-columns:300px minmax(0,1fr);gap:28px;
  background:#fff;border:1px solid var(--line);border-radius:var(--r-md);
  padding:24px;box-shadow:var(--sh-xs);
  transition:box-shadow var(--t),transform var(--t);
}
.post-item:hover{box-shadow:var(--sh-md);transform:translateY(-4px);}
.post-item .post-thumb{display:block;overflow:hidden;border-radius:var(--r);}
.post-item .post-thumb img{width:100%;aspect-ratio:16/10;object-fit:cover;object-position:center;transition:transform 300ms;}
.post-item:hover .post-thumb img{transform:scale(1.05);}
.post-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:13.5px;color:var(--muted);margin-bottom:12px;}
.post-meta a{color:var(--brand);}
.post-title{font-size:22px;line-height:1.3;margin-bottom:12px;}
.post-title a:hover{color:var(--brand);}
.post-excerpt{font-size:15px;line-height:1.7;margin-bottom:16px;}
.more{display:inline-flex;align-items:center;gap:7px;font-size:14.5px;font-weight:700;color:var(--brand);}
.more svg{width:15px;height:15px;}
.more:hover{gap:11px;}

/* Blog card thumbnail wrapper (front page + archives) */
.blog-thumb{display:block;overflow:hidden;border-radius:var(--r-img,20px);margin-bottom:20px;box-shadow:var(--sh-sm);}
.blog-thumb img{width:100%;aspect-ratio:16/10;height:auto;object-fit:cover;object-position:center;transition:transform 300ms;}
.blog-card:hover .blog-thumb img{transform:scale(1.06);}
.thumb-placeholder{display:grid;place-items:center;aspect-ratio:16/10;background:var(--tint);color:var(--brand);}
.thumb-placeholder svg{width:36px;height:36px;}
.blog-card h3 a:hover{color:var(--brand);}
/* Grid stretch already equalises card heights; a fixed min-height leaves a
   large gap when a post has no excerpt. */
.blog-card{min-height:0;}
.blog-thumb .thumb-placeholder{width:100%;}

.post-hero-image{margin:0 0 40px;}
.post-hero-image img{width:100%;aspect-ratio:16/7;object-fit:cover;object-position:center;border-radius:var(--r-img,20px);}

.post-tags{display:flex;flex-wrap:wrap;gap:10px;margin-top:2.5em;}
.post-tags a{
  background:var(--tint);color:var(--brand);font-size:13px;font-weight:700;
  padding:8px 14px;border-radius:var(--r-pill,999px);
}
.post-nav{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:3em;}
.post-nav a{
  display:block;background:#fff;border:1px solid var(--line);border-radius:var(--r);
  padding:20px 22px;font-weight:700;color:var(--ink);transition:box-shadow var(--t),transform var(--t);
}
.post-nav a:hover{box-shadow:var(--sh-md);transform:translateY(-3px);color:var(--brand);}
.post-nav span{display:block;font-size:12.5px;font-weight:600;color:var(--muted);margin-bottom:5px;}
.post-nav .next{text-align:right;}

/* Pagination */
.pagination{display:flex;justify-content:center;margin-top:48px;}
.pagination .nav-links{display:flex;flex-wrap:wrap;gap:10px;align-items:center;}
.pagination .page-numbers{
  min-width:46px;height:46px;padding:0 14px;border-radius:var(--r);
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  background:#fff;border:1px solid var(--line);font-weight:700;color:var(--ink);
  transition:background var(--t),color var(--t),transform var(--t);
}
.pagination .page-numbers:hover{background:var(--tint);color:var(--brand);transform:translateY(-2px);}
.pagination .page-numbers.current{background:var(--brand);border-color:var(--brand);color:#fff;}
.pagination svg{width:15px;height:15px;}

/* =========================================================
   6. AREAS ARCHIVE
   ========================================================= */
.areas-archive{padding-bottom:var(--sec-y,120px);}
.area-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--grid-gap,32px);}
.area-card{
  background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:26px;
  box-shadow:var(--sh-xs);transition:box-shadow var(--t),transform var(--t);
}
.area-card:hover{box-shadow:var(--sh-md);transform:translateY(-5px);}
.area-thumb{display:block;overflow:hidden;border-radius:var(--r);margin-bottom:20px;}
.area-thumb img{width:100%;aspect-ratio:16/10;object-fit:cover;object-position:center;}
.area-card h2{font-size:19px;margin-bottom:10px;}
.area-card h2 a{display:inline-flex;align-items:center;gap:8px;}
.area-card h2 svg{width:17px;height:17px;color:var(--brand);}
.area-card h2 a:hover{color:var(--brand);}
.area-card p{font-size:14.5px;line-height:1.65;color:var(--muted);margin-bottom:16px;}
.area-map{margin:2em 0;}
.area-map img{width:100%;border-radius:var(--r-img,20px);}

/* =========================================================
   7. CONTACT PAGE
   ========================================================= */
.contact-section{padding-bottom:var(--sec-y,120px);}
.contact-layout{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:var(--grid-gap,32px);align-items:start;}
.contact-aside{display:grid;gap:24px;}
.contact-aside .side-card{
  background:#fff;border:1px solid var(--line);border-radius:var(--r-md);
  padding:28px;box-shadow:var(--sh-xs);
}
.contact-aside .side-card h2{font-size:19px;margin-bottom:20px;}
.contact-aside .socials{margin-top:20px;}
.contact-aside .areas-cta{height:auto;padding:34px 30px;}

.note.is-success{background:#ECFDF3;}
.note.is-success b,.note.is-success svg{color:#12805C;}
.note.is-error{background:#FEF3F2;}
.note.is-error b,.note.is-error svg{color:#B42318;}
.form-message{margin-top:18px;font-size:14.5px;font-weight:600;min-height:1.2em;}
.form-message.is-error{color:#B42318;}
.form-message.is-success{color:#12805C;}

/* =========================================================
   8. 404 + EMPTY STATES
   ========================================================= */
.error-404{padding:90px 0 var(--sec-y,120px);text-align:center;}
.error-code{font-size:120px;font-weight:800;line-height:1;color:var(--brand);letter-spacing:-.04em;}
.error-404 h1{font-size:36px;margin:14px 0 14px;}
.error-text{font-size:17px;color:var(--body);max-width:520px;margin:0 auto 30px;}
.error-actions{display:flex;flex-wrap:wrap;gap:16px;justify-content:center;margin-top:26px;}
.no-results{
  background:#fff;border:1px solid var(--line);border-radius:var(--r-md);
  padding:44px;text-align:center;box-shadow:var(--sh-xs);
}
.no-results h2{font-size:24px;margin-bottom:10px;}
.no-results p{margin-bottom:22px;}

.search-form{display:flex;gap:12px;max-width:560px;margin:0 auto;}
.search-form .input{
  flex:1;height:56px;border:1.5px solid var(--line);border-radius:var(--r);
  padding:0 18px;font:inherit;font-size:15px;background:#fff;color:var(--ink);
}
.search-form .input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 4px rgba(12,122,135,.12);}

/* =========================================================
   9. SIDEBAR + WIDGETS
   ========================================================= */
.content-sidebar{display:grid;gap:24px;align-content:start;position:sticky;top:104px;}
.widget{
  background:#fff;border:1px solid var(--line);border-radius:var(--r-md);
  padding:26px;box-shadow:var(--sh-xs);
}
.widget-title{font-size:17px;margin-bottom:18px;}
.widget ul{display:grid;gap:12px;}
.widget li a{font-size:14.5px;color:var(--body);}
.widget li a:hover{color:var(--brand);}
.widget select,.widget input[type="search"],.widget input[type="text"]{
  width:100%;height:52px;border:1.5px solid var(--line);border-radius:var(--r);
  padding:0 16px;font:inherit;font-size:14.5px;background:#fff;
}
.footer-extra{padding-bottom:36px;display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:28px;}

/* =========================================================
   10. FOOTER MENUS (wp_nav_menu output)
   ========================================================= */
.footer-menu{display:grid;gap:16px;}
.footer-menu a{font-size:14.5px;color:var(--muted);transition:color var(--t);}
.footer-menu a:hover{color:var(--brand);}
.site-footer.is-dark .footer-menu a{color:rgba(255,255,255,.68);}
.site-footer.is-dark .footer-menu a:hover{color:#fff;}
.legal-menu{display:flex;flex-wrap:wrap;align-items:center;gap:16px;}
.legal-menu a{font-size:13.5px;}
.logo.has-image img{max-height:52px;width:auto;}

/* The column count varies with how many footer menus are assigned, so the
   track comes from the template rather than being hard-coded to five. */
.footer-grid{grid-template-columns:var(--footer-track,1.4fr 1fr 1fr 1fr 1fr);}
.site-footer.is-dark .footer-grid{grid-template-columns:var(--footer-track,1.4fr 1fr 1fr 1fr 1fr);}
.footer-col{min-width:0;}
.footer-book .btn{max-width:220px;}

/* Defensive: keep light-footer text readable even if a dark rule leaks. */
.site-footer:not(.is-dark) .footer-mail,
.site-footer:not(.is-dark) .footer-about p,
.site-footer:not(.is-dark) .footer-bottom{color:var(--muted);}
.site-footer:not(.is-dark) .footer-col a,
.site-footer:not(.is-dark) .footer-menu a{color:var(--muted);}
.site-footer:not(.is-dark) .footer-col a:hover,
.site-footer:not(.is-dark) .footer-menu a:hover{color:var(--brand);}
.site-footer:not(.is-dark) .footer-col h3{color:var(--ink);}
.site-footer:not(.is-dark) .footer-book .tagline{color:var(--muted);}
.site-footer:not(.is-dark) .btn-outline{color:var(--brand);}

/* Sub-menus in the primary navigation */
.nav-list li{position:relative;}
.nav-list .sub-menu{
  position:absolute;top:calc(100% + 12px);left:0;min-width:230px;z-index:70;
  background:#fff;border:1px solid var(--line);border-radius:var(--r);
  box-shadow:var(--sh-md);padding:10px;display:none;
}
.nav-list li:hover > .sub-menu,.nav-list li:focus-within > .sub-menu{display:block;}
.nav-list .sub-menu a{display:block;padding:10px 14px;border-radius:10px;font-size:14.5px;}
.nav-list .sub-menu a:hover{background:var(--tint);}
.nav-list .current-menu-item > a,.nav-list .current_page_item > a{color:var(--brand);}

/* =========================================================
   11. COMMENTS
   ========================================================= */
.comments-area{margin-top:64px;padding-top:44px;border-top:1px solid var(--line);}
.comments-title{font-size:24px;margin-bottom:28px;}
.comment-list{display:grid;gap:24px;}
.comment-list .children{display:grid;gap:24px;margin-top:24px;padding-left:34px;}
.comment-body{
  background:#fff;border:1px solid var(--line);border-radius:var(--r-md);
  padding:24px;box-shadow:var(--sh-xs);
}
.comment-author{display:flex;align-items:center;gap:12px;font-weight:800;color:var(--ink);}
.comment-author img{border-radius:50%;}
.comment-metadata{font-size:13px;color:var(--muted);margin:6px 0 12px;}
.comment-reply-link{font-weight:700;color:var(--brand);font-size:14px;}
.comment-respond{margin-top:40px;}
.comment-reply-title{font-size:22px;margin-bottom:18px;}
.comment-form{display:grid;gap:18px;}
.comment-form label{display:block;font-size:13.5px;font-weight:700;color:var(--ink);margin-bottom:8px;}
.comment-form input[type="text"],.comment-form input[type="email"],
.comment-form input[type="url"],.comment-form textarea{
  width:100%;border:1.5px solid var(--line);border-radius:var(--r);
  padding:15px 18px;font:inherit;font-size:15px;background:#fff;color:var(--ink);
}
.comment-form textarea{min-height:150px;resize:vertical;}
.comment-form input:focus,.comment-form textarea:focus{
  outline:none;border-color:var(--brand);box-shadow:0 0 0 4px rgba(12,122,135,.12);
}
.comment-form .form-submit{margin:0;}

/* =========================================================
   12. BOOKING EXTRAS
   ========================================================= */
.booking-ref{font-size:14px;color:var(--muted);margin-top:6px;}
.booking-ref strong{color:var(--brand);letter-spacing:.04em;}
.panel-title-sub{margin:26px 0 14px;}
.panel-title-sub h3{font-size:17px;}
.secure-wrap{padding:0;border:0;box-shadow:none;background:none;}
.review-body p{margin:0 0 14px;}
.review-source{font-size:13px;font-weight:700;color:var(--muted);}
.btn-block{width:100%;}
.is-loading{opacity:.6;pointer-events:none;}

/* =========================================================
   13. RESPONSIVE
   ========================================================= */
@media (max-width:1280px){
  .content-layout.has-sidebar{grid-template-columns:minmax(0,1fr) 300px;}
  .contact-layout{grid-template-columns:minmax(0,1fr) 330px;}
}
@media (max-width:1024px){
  .content-layout.has-sidebar,.contact-layout{grid-template-columns:1fr;}
  .content-sidebar{position:static;}
  .page-hero{padding:44px 0 48px;margin-bottom:44px;}
  .page-hero h1{font-size:36px;}
  .post-item{grid-template-columns:240px minmax(0,1fr);}
}
@media (max-width:1024px){
  .footer-grid,.site-footer.is-dark .footer-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:40px;}
}
@media (max-width:768px){
  .footer-grid,.site-footer.is-dark .footer-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:32px;}
  .page-hero h1{font-size:30px;}
  .post-item{grid-template-columns:1fr;gap:20px;}
  .post-nav{grid-template-columns:1fr;}
  .post-nav .next{text-align:left;}
  .error-code{font-size:88px;}
  .entry-content{font-size:16px;}
  .entry-content h2{font-size:25px;}
  .alignwide,.alignfull{width:auto;margin-left:0;transform:none;}
  .search-form{flex-direction:column;}
}
@media (max-width:480px){
  .footer-grid,.site-footer.is-dark .footer-grid{grid-template-columns:1fr;gap:28px;}
  .page-hero h1{font-size:26px;}
  .comment-list .children{padding-left:16px;}
  .no-results{padding:28px 22px;}
}


/* =========================================================
   14. IMAGE & LAYOUT REFINEMENTS
   Photography behaves differently to the flat cut-outs the
   mockup used, so every image slot gets an explicit ratio,
   a crop rule and a radius.
   ========================================================= */

/* --- Ordered lists used as layout (timeline, stepper, badges) must not
       show their markers. Prose lists inside .entry-content keep theirs. --- */
.how-steps,
.process-steps,
.next-steps,
.stepper,
.areas-list,
.sum-list,
.cf-badges,
.pills,
.slot-grid,
.footer-menu,
.legal-menu,
.nav-list,
.comment-list,
.brand-track{
  list-style:none;margin:0;padding:0;
}
.how-steps > li,
.process-steps > li,
.next-steps > li,
.stepper > li{list-style:none;}

/* --- HOME HERO -------------------------------------------------------
   The photo bleeds off the right edge and dissolves into the tint,
   rather than sitting in a hard-edged box. --- */
.hero-inner{grid-template-columns:47% 53%;min-height:660px;}
.hero-copy{max-width:640px;}
.hero h1{font-size:52px;max-width:640px;}

.hero-media{
  width:53%;overflow:hidden;
  display:block;                      /* was flex, which letterboxed the image */
}
.hero-media img{
  width:100%;height:100%;
  object-fit:cover;                   /* fill the column, never letterbox */
  object-position:center 30%;
}
/* Soft blend along the left edge of the photo. */
.hero-media::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(90deg,
    #E8F6F7 0%,
    rgba(232,246,247,.82) 10%,
    rgba(232,246,247,.28) 26%,
    rgba(232,246,247,0) 46%);
}

/* Four trust badges should sit on one row again. */
.hero .pills{max-width:640px;gap:10px;}
.hero .pill{padding:11px 14px;min-height:58px;gap:9px;}
.hero .pill svg{width:19px;height:19px;}
.hero .pill-txt{font-size:11.5px;}
.hero .pill-txt b{font-size:12.5px;}

/* --- SERVICE CARDS ---------------------------------------------------
   Real photos need a fixed ratio and a crop, otherwise each card is a
   different height and the grid looks ragged. --- */
.service-card{
  min-height:0;padding:20px 16px 22px;justify-content:flex-start;
}
.service-card h3{min-height:0;margin-bottom:14px;font-size:15px;line-height:1.35;}
.service-card figure{
  width:100%;height:auto;flex:0 0 auto;
  aspect-ratio:4/3;border-radius:14px;overflow:hidden;
  background:var(--tint-2);display:block;
}
.service-card figure img{
  width:100%;height:100%;max-height:none;
  object-fit:cover;object-position:center;
  transition:transform 300ms cubic-bezier(.4,0,.2,1);
}
.service-card:hover figure img{transform:scale(1.05);}
.service-card .service-icon{width:100%;height:100%;border-radius:0;}

/* --- HOW IT WORKS ----------------------------------------------------- */
.how-media img{
  width:100%;height:auto;aspect-ratio:4/3;
  object-fit:cover;object-position:center;
  border-radius:var(--r-img,20px);box-shadow:var(--sh-sm);
}

/* --- AREAS ------------------------------------------------------------
   Give the list column enough room for two readable columns. --- */
.areas-inner{grid-template-columns:28fr 42fr 30fr;}
.areas-card{padding:30px 26px;}
.areas-list{gap:14px 16px;}
.areas-list li{font-size:13.5px;line-height:1.35;align-items:flex-start;}
.areas-list svg{margin-top:3px;}
.areas-map{height:420px;}
.areas-map img{
  width:100%;height:100%;min-height:0;
  object-fit:cover;object-position:center;
  border-radius:var(--r-img,20px);
}

/* --- TESTIMONIALS ----------------------------------------------------- */
.review-source{
  background:var(--tint);color:var(--brand);
  padding:6px 13px;border-radius:var(--r-pill,999px);
  font-size:12px;font-weight:700;
}
.g-badge{object-fit:contain;background:#fff;}

/* --- BRANDS ----------------------------------------------------------- */
.brand{white-space:nowrap;padding:0 24px;}
.brand img{max-height:38px;width:auto;object-fit:contain;}

/* --- BLOG CARDS ------------------------------------------------------- */
.blog-thumb img,
.blog-card img{aspect-ratio:16/10;object-fit:cover;object-position:center;}

/* --- MEDIA DEFAULTS --------------------------------------------------- */
.post-hero-image img,
.area-thumb img,
.area-map img{object-position:center;}

@media (max-width:1440px){
  .hero h1{font-size:48px;}
}
@media (max-width:1280px){
  .hero-inner{min-height:600px;}
  .hero h1{font-size:44px;}
  .areas-inner{grid-template-columns:30fr 40fr 30fr;}
  .areas-map{height:400px;}
}
@media (max-width:1024px){
  .hero-inner{grid-template-columns:1fr;min-height:0;}
  .hero-media{position:relative;width:100%;height:400px;}
  .hero-media::after{
    background:linear-gradient(180deg,rgba(232,246,247,.55) 0%,rgba(232,246,247,0) 30%);
  }
  .areas-map{height:340px;}
  .service-card figure{aspect-ratio:16/10;}
}
@media (max-width:768px){
  .hero h1{font-size:34px;}
  .hero-media{height:320px;}
  .areas-map{height:280px;}
}
@media (max-width:480px){
  .hero-media{height:260px;}
  .hero .pills{gap:8px;}
  .hero .pill{padding:10px 12px;min-height:52px;}
}


/* =========================================================
   15. PRIMARY NAVIGATION DROPDOWNS
   ========================================================= */
.nav-list > li{position:relative;}
.nav-list .nav-caret{
  width:14px;height:14px;margin-left:2px;
  transition:transform var(--t);
}
.nav-list > li:hover > a .nav-caret,
.nav-list > li:focus-within > a .nav-caret{transform:rotate(180deg);}

/* Hover bridge so the pointer can travel from the link to the panel. */
.nav-list > li.menu-item-has-children::after{
  content:"";position:absolute;left:0;right:0;top:100%;height:16px;
}

.nav-list .sub-menu{
  position:absolute;top:calc(100% + 14px);left:-14px;z-index:80;
  min-width:262px;padding:12px;
  background:#fff;border:1px solid var(--line);border-radius:var(--r-md);
  box-shadow:var(--sh-md);
  display:block;                       /* animated rather than toggled */
  opacity:0;visibility:hidden;pointer-events:none;
  transform:translateY(-6px);
  transition:opacity var(--t),transform var(--t),visibility var(--t);
}
.nav-list > li:hover > .sub-menu,
.nav-list > li:focus-within > .sub-menu{
  opacity:1;visibility:visible;pointer-events:auto;transform:translateY(0);
}

/* Long lists split into two columns. */
.nav-list > li.has-columns > .sub-menu{
  display:grid;grid-template-columns:1fr 1fr;gap:2px 8px;min-width:520px;
}

.nav-list .sub-menu li{position:relative;}
.nav-list .sub-menu a{
  display:flex;align-items:center;gap:9px;
  padding:11px 14px;border-radius:12px;
  font-size:14.5px;font-weight:600;color:var(--body);white-space:normal;
  transition:background var(--t),color var(--t);
}
.nav-list .sub-menu a::before{
  content:"";flex:none;width:6px;height:6px;border-radius:50%;
  background:#D4EDEE;transition:background var(--t),transform var(--t);
}
.nav-list .sub-menu a:hover,
.nav-list .sub-menu a:focus-visible{background:var(--tint);color:var(--brand);}
.nav-list .sub-menu a:hover::before{background:var(--brand);transform:scale(1.3);}
.nav-list .sub-menu .current-menu-item > a{color:var(--brand);}
.nav-list .sub-menu .current-menu-item > a::before{background:var(--brand);}

/* The mobile expand button is hidden on desktop, where hover does the work. */
.submenu-toggle{
  display:none;align-items:center;justify-content:center;
  width:42px;height:42px;flex:none;border-radius:10px;color:var(--ink);
}
.submenu-toggle svg{width:18px;height:18px;transition:transform var(--t);}
.submenu-toggle[aria-expanded="true"] svg{transform:rotate(180deg);}

@media (max-width:1024px){
  /* Accordion behaviour inside the mobile drawer. */
  .nav-list > li.menu-item-has-children{
    display:grid;grid-template-columns:1fr auto;align-items:center;
  }
  .nav-list > li.menu-item-has-children > a{grid-column:1;}
  .nav-list > li.menu-item-has-children::after{display:none;}
  .nav-list .nav-caret{display:none;}
  .submenu-toggle{display:inline-flex;grid-column:2;}

  .nav-list .sub-menu{
    position:static;grid-column:1/-1;
    min-width:0;padding:0 0 10px 12px;margin:0;
    border:0;border-radius:0;box-shadow:none;background:none;
    opacity:1;visibility:visible;pointer-events:auto;transform:none;
    display:none;
  }
  .nav-list > li:hover > .sub-menu,
  .nav-list > li:focus-within > .sub-menu{display:none;}
  .nav-list > li.is-open > .sub-menu,
  .nav-list > li.has-columns.is-open > .sub-menu{display:block;}
  .nav-list > li.has-columns > .sub-menu{grid-template-columns:1fr;min-width:0;}
  .nav-list .sub-menu a{padding:10px 0;border-bottom:1px solid var(--line-soft);border-radius:0;}
  .nav-list .sub-menu li:last-child a{border-bottom:0;}
}

/* =========================================================
   CONTENT SAFETY NET
   Pages inherited from another theme often carry raw inline
   <svg> icons with no width or height attribute. Left alone
   they expand to the full width of the column, so an icon
   ends up a metre tall. Anything Lucide renders carries
   width/height attributes and is untouched by this rule.
   Add class="shf-svg-full" to opt a real illustration out.
   ========================================================= */
.entry-content svg,
.content-main svg{max-width:100%;}
.entry-content svg:not([width]):not([height]):not(.shf-svg-full),
.content-main svg:not([width]):not([height]):not(.shf-svg-full){
  width:1.5rem;height:1.5rem;vertical-align:-.25em;flex:none;
}
.entry-content img,
.content-main img{height:auto;}
.entry-content iframe,
.entry-content video,
.entry-content embed,
.entry-content object{max-width:100%;}

/* Contact form dropped into page content with [shf_contact_form] */
.shf-contact-embed{margin:32px 0;}
.shf-contact-embed .panel{margin:0;}
.entry-content .shf-contact-embed label{display:block;}
.entry-content .shf-contact-embed a{text-decoration:none;}
