/* HiveOne Core – shared front-end styles */

/* Form status messages (used by enquiry, tour and contact forms) */
.hvo-enquiry-msg {
  display: none;
  margin: 0 0 16px;
  padding: 14px 18px;
  border-radius: 12px;
  font-size: 14px;
  font-weight: 600;
  line-height: 1.5;
}
.hvo-enquiry-msg.hvo-show-success {
  display: block;
  background: #ecfdf5;
  color: #047857;
  border: 1px solid #a7f3d0;
}
.hvo-enquiry-msg.hvo-show-error {
  display: block;
  background: #fef2f2;
  color: #b91c1c;
  border: 1px solid #fecaca;
}

/* My Account card (shortcode [hiveone_account]) */
.hvo-account {
  max-width: 560px;
  margin: 0 auto;
  background: #fff;
  border-radius: 24px;
  box-shadow: 0 20px 40px -12px rgba(0, 0, 0, 0.12);
  padding: 40px 36px;
  font-family: "Open Sans", Arial, sans-serif;
  color: #1a1a1a;
}
.hvo-account-head {
  text-align: center;
  margin-bottom: 28px;
}
.hvo-account-avatar {
  width: 64px;
  height: 64px;
  margin: 0 auto 14px;
  border-radius: 999px;
  background: #d71920;
  color: #fff;
  font-weight: 700;
  font-size: 26px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.hvo-account-title {
  font-family: Poppins, "Open Sans", Arial, sans-serif;
  font-size: 26px;
  font-weight: 700;
  margin: 0 0 6px;
  line-height: 1.2;
}
.hvo-account-sub {
  color: #6b7280;
  font-size: 14px;
  margin: 0;
}
.hvo-account-list {
  margin: 0 0 28px;
  padding: 0;
  border: 1px solid #f3f4f6;
  border-radius: 16px;
  overflow: hidden;
}
.hvo-account-list > div {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  padding: 14px 18px;
  border-bottom: 1px solid #f3f4f6;
  font-size: 14px;
}
.hvo-account-list > div:last-child {
  border-bottom: 0;
}
.hvo-account-list dt {
  color: #6b7280;
  font-weight: 600;
  margin: 0;
}
.hvo-account-list dd {
  margin: 0;
  font-weight: 600;
  text-align: right;
  word-break: break-word;
}
.hvo-account-actions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}
.hvo-account-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 12px 16px;
  border-radius: 999px;
  border: 1px solid #e5e7eb;
  font-size: 14px;
  font-weight: 700;
  color: #1a1a1a;
  text-decoration: none;
  transition: background 0.2s ease, color 0.2s ease;
}
.hvo-account-btn:hover {
  background: #f9fafb;
  color: #d71920;
}
.hvo-account-btn-primary {
  background: #d71920;
  border-color: #d71920;
  color: #fff;
  box-shadow: 0 10px 15px -3px rgba(215, 25, 32, 0.25);
}
.hvo-account-btn-primary:hover {
  background: #b5151b;
  color: #fff;
}
.hvo-account-btn-ghost {
  color: #6b7280;
}
.hvo-account-help {
  margin: 24px 0 0;
  font-size: 13px;
  color: #6b7280;
  text-align: center;
}
.hvo-account-help a {
  color: #d71920;
  text-decoration: none;
}
@media (max-width: 480px) {
  .hvo-account {
    padding: 28px 20px;
  }
  .hvo-account-actions {
    grid-template-columns: 1fr;
  }
}

/* =====================================================================
   Shared header (ported from the site's inline .hvo-nav styles)
   ===================================================================== */
html .hvo-nav{position:fixed;top:0;left:0;right:0;z-index:9999;background-color:transparent;transition:background-color .25s ease,box-shadow .25s ease,border-color .25s ease;font-family:"Open Sans",Arial,sans-serif}
html .admin-bar .hvo-nav{top:32px}
@media (max-width:782px){html .admin-bar .hvo-nav{top:46px}}
html .hvo-nav.hvo-solid,html .hvo-nav.hvo-scrolled{background-color:#fff;box-shadow:0 1px 2px 0 rgba(0,0,0,.05);border-bottom:1px solid #f3f4f6}
html .hvo-nav *{box-sizing:border-box}
html .hvo-nav button{appearance:none;-webkit-appearance:none;box-shadow:none;text-transform:none;letter-spacing:0}
html .hvo-nav a,html .hvo-footer a{box-shadow:none}
html .hvo-inner{max-width:1280px;margin:0 auto;padding:0 20px}
html .hvo-row{display:flex;align-items:center;justify-content:space-between;height:80px}
html .hvo-logo{display:flex;align-items:center;gap:8px;text-decoration:none}
html .hvo-logo img{height:60px;width:auto;display:block}
html .hvo-menu{display:flex;align-items:center;gap:2px}
html .hvo-actions{display:flex;align-items:center;gap:12px}
html .hvo-mobile-toggle{display:none;background:transparent;border:0;padding:8px;border-radius:999px;cursor:pointer;color:#fff}
html .hvo-nav.hvo-solid .hvo-mobile-toggle,html .hvo-nav.hvo-scrolled .hvo-mobile-toggle{color:#1a1a1a}
@media (max-width:1023px){html .hvo-menu,html .hvo-actions{display:none}html .hvo-mobile-toggle{display:inline-flex;align-items:center;justify-content:center}}
html .hvo-item{position:relative}
html .hvo-item-btn{display:flex;align-items:center;gap:5px;padding:9px 16px;border:0;background:transparent;cursor:pointer;font-size:14px;font-weight:600;border-radius:8px;color:rgba(255,255,255,.9);font-family:inherit;line-height:1.2;white-space:nowrap}
html .hvo-nav.hvo-solid .hvo-item-btn,html .hvo-nav.hvo-scrolled .hvo-item-btn{color:#1a1a1a}
html .hvo-item-btn:hover,html .hvo-item-link:hover{color:#fff;background:rgba(255,255,255,.12)}
html .hvo-nav.hvo-solid .hvo-item-btn:hover,html .hvo-nav.hvo-scrolled .hvo-item-btn:hover,html .hvo-nav.hvo-solid .hvo-item-link:hover,html .hvo-nav.hvo-scrolled .hvo-item-link:hover{color:#d71920;background:#f9fafb}
html .hvo-item-link{padding:9px 16px;font-size:14px;font-weight:600;border-radius:8px;text-decoration:none;display:inline-block;color:rgba(255,255,255,.9)}
html .hvo-nav.hvo-solid .hvo-item-link,html .hvo-nav.hvo-scrolled .hvo-item-link{color:#1a1a1a}
html .hvo-nav.hvo-solid .hvo-item-link.hvo-current,html .hvo-nav.hvo-solid .hvo-current-parent .hvo-item-btn{color:#d71920}
html .hvo-chevron{width:13px;height:13px;flex-shrink:0;transition:transform .2s ease}
html .hvo-item.hvo-open .hvo-chevron{transform:rotate(180deg)}
html .hvo-dropdown{position:absolute;left:0;top:100%;padding-top:10px;width:240px;z-index:70}
html .hvo-dropdown-inner{background:#fff;border-radius:16px;box-shadow:0 20px 25px -5px rgba(0,0,0,.12),0 8px 10px -6px rgba(0,0,0,.08);border:1px solid #f3f4f6;padding:8px 0;opacity:0;visibility:hidden;transform:translateY(6px);transition:opacity .18s ease,transform .18s ease,visibility .18s}
html .hvo-item:hover .hvo-dropdown-inner,html .hvo-item:focus-within .hvo-dropdown-inner,html .hvo-item.hvo-open .hvo-dropdown-inner{opacity:1;visibility:visible;transform:translateY(0)}
html .hvo-dropdown a{display:block;padding:11px 20px;font-size:14px;font-weight:500;color:#1a1a1a;text-decoration:none}
html .hvo-dropdown a:first-child{font-weight:700;border-bottom:1px solid #f3f4f6;margin-bottom:4px}
html .hvo-dropdown a:hover,html .hvo-dropdown a.hvo-current{background:#f9fafb;color:#d71920}
html .hvo-login-link{display:inline-flex;align-items:center;gap:6px;padding:9px 16px;border-radius:8px;font-size:14px;font-weight:600;text-decoration:none;color:rgba(255,255,255,.9)}
html .hvo-nav.hvo-solid .hvo-login-link,html .hvo-nav.hvo-scrolled .hvo-login-link{color:#1a1a1a}
html .hvo-login-link:hover{background:rgba(255,255,255,.12);color:#fff}
html .hvo-nav.hvo-solid .hvo-login-link:hover,html .hvo-nav.hvo-scrolled .hvo-login-link:hover{background:#f9fafb;color:#d71920}
html .hvo-signup-btn{display:inline-flex;align-items:center;gap:6px;background:#d71920;color:#fff;padding:10px 22px;border-radius:999px;font-size:14px;font-weight:700;text-decoration:none;box-shadow:0 10px 15px -3px rgba(215,25,32,.25);transition:background .2s ease,transform .2s ease}
html .hvo-signup-btn:hover{background:#b5151b;color:#fff;transform:scale(1.04)}
html .hvo-mobile-menu{display:none;background:#fff;border-top:1px solid #f3f4f6;padding:12px 20px 20px;max-height:calc(100vh - 80px);overflow-y:auto}
html .hvo-mobile-menu.hvo-mobile-open{display:block}
html .hvo-mobile-menu a.hvo-m-link{display:block;padding:11px 8px;font-size:14px;font-weight:700;color:#1a1a1a;text-decoration:none;border-radius:8px}
html .hvo-mobile-menu a.hvo-m-sub{display:block;padding:8px 8px 8px 24px;font-size:13px;font-weight:500;color:#4b5563;text-decoration:none;border-radius:8px}
html .hvo-mobile-menu a.hvo-m-link:hover,html .hvo-mobile-menu a.hvo-m-sub:hover,html .hvo-mobile-menu a.hvo-current{background:#f9fafb;color:#d71920}
html .hvo-mobile-actions{display:flex;flex-direction:column;gap:10px;padding-top:14px;margin-top:10px;border-top:1px solid #f3f4f6}
html .hvo-mobile-actions a{text-align:center;padding:12px;border-radius:999px;font-size:14px;font-weight:700;text-decoration:none}
html .hvo-mobile-actions .hvo-m-login{border:1px solid #e5e7eb;color:#1a1a1a}
html .hvo-mobile-actions .hvo-m-signup{background:#d71920;color:#fff}
/* Log Out state (class added by hiveone.js when a member is logged in): exact logo burgundy #951B2A, white text/icon in every state */
html .hvo-nav .hvo-signup-btn.hvo-logout-btn,html .hvo-nav .hvo-signup-btn.hvo-logout-btn:hover,html .hvo-nav .hvo-signup-btn.hvo-logout-btn:focus,html .hvo-nav .hvo-signup-btn.hvo-logout-btn:active{background:#951b2a;color:#fff;box-shadow:0 10px 15px -3px rgba(149,27,42,.3)}
html .hvo-nav .hvo-signup-btn.hvo-logout-btn svg{color:#fff;stroke:#fff}
html .hvo-nav .hvo-signup-btn.hvo-logout-btn:focus{outline:none}
html .hvo-nav .hvo-signup-btn.hvo-logout-btn:focus-visible{outline:none;box-shadow:0 0 0 2px #fff,0 0 0 4px #951b2a,0 10px 15px -3px rgba(149,27,42,.3);transform:scale(1.04)}
html .hvo-mobile-actions .hvo-m-signup.hvo-logout-btn,html .hvo-mobile-actions .hvo-m-signup.hvo-logout-btn:hover,html .hvo-mobile-actions .hvo-m-signup.hvo-logout-btn:focus,html .hvo-mobile-actions .hvo-m-signup.hvo-logout-btn:active{background:#951b2a;color:#fff}
html .hvo-mobile-actions .hvo-m-signup.hvo-logout-btn:focus-visible{outline:none;box-shadow:0 0 0 2px #fff,0 0 0 4px #951b2a}

/* =====================================================================
   Shared footer
   ===================================================================== */
html .hvo-footer{background:#1a1a1a;color:#fff;padding:80px 0 32px;font-family:"Open Sans",Arial,sans-serif;font-size:14px;line-height:1.6}
html .hvo-footer *{box-sizing:border-box}
html .hvo-footer-inner{max-width:1280px;margin:0 auto;padding:0 16px}
@media (min-width:640px){html .hvo-footer-inner{padding:0 24px}}
@media (min-width:1024px){html .hvo-footer-inner{padding:0 32px}}
html .hvo-footer-grid{display:grid;grid-template-columns:1fr;gap:48px;margin-bottom:64px}
@media (min-width:640px){html .hvo-footer-grid{grid-template-columns:1fr 1fr}}
@media (min-width:1024px){html .hvo-footer-grid{grid-template-columns:repeat(4,1fr)}}
html .hvo-footer-logo img{height:34px;width:auto;display:block;margin-bottom:16px}
html .hvo-footer-about{color:rgba(255,255,255,.6);font-size:14px;line-height:1.7;margin:0 0 24px}
html .hvo-footer-social{display:flex;gap:12px}
html .hvo-footer-social a{width:40px;height:40px;background:rgba(255,255,255,.1);border-radius:999px;display:flex;align-items:center;justify-content:center;color:#fff;transition:background .2s}
html .hvo-footer-social a:hover{background:#d71920}
html .hvo-footer h4{font-family:Poppins,"Open Sans",Arial,sans-serif;font-weight:700;font-size:18px;margin:0 0 16px;color:#fff}
html .hvo-footer ul{list-style:none;margin:0;padding:0}
html .hvo-footer li{margin:0 0 12px;color:rgba(255,255,255,.6);font-size:14px}
html .hvo-footer li.hvo-footer-gap{padding-top:8px}
html .hvo-footer li a{color:rgba(255,255,255,.6);text-decoration:none;transition:color .2s}
html .hvo-footer li a:hover{color:#d71920}
html .hvo-footer-bottom{border-top:1px solid rgba(255,255,255,.1);padding-top:32px;display:flex;flex-direction:column;align-items:center;justify-content:space-between;gap:16px}
@media (min-width:640px){html .hvo-footer-bottom{flex-direction:row}}
html .hvo-footer-bottom p{margin:0;color:rgba(255,255,255,.4);font-size:14px}
html .hvo-footer-legal{display:flex;gap:24px;font-size:14px}
html .hvo-footer-legal a{color:rgba(255,255,255,.4);text-decoration:none;transition:color .2s}
html .hvo-footer-legal a:hover{color:#fff}

/* =====================================================================
   Blank "HiveOne Page" template (landing, legal, account pages)
   ===================================================================== */
body.hvo-template{margin:0;background:#fff;color:#1a1a1a;font-family:"Open Sans",Arial,sans-serif;-webkit-font-smoothing:antialiased}
body.hvo-template .hvo-main{padding-top:80px}
body.hvo-template h1,body.hvo-template h2,body.hvo-template h3,body.hvo-template h4{font-family:Poppins,"Open Sans",Arial,sans-serif;line-height:1.2;margin:0}
body.hvo-template .hvo-main img{max-width:100%;height:auto}
body.hvo-template .hvl .hvl-hero h1,body.hvo-template .hvl .hvl-cta h2,body.hvo-template .hvg-hero h1{color:#fff}
body.hvo-template .hvl .hvl-head h2,body.hvo-template .hvl .hvl-card h3,body.hvo-template .hvl .hvl-why-item h4,body.hvo-template .hvl .hvl-stat b,body.hvo-template .hvg-body h2{color:#1a1a1a}
body.hvo-template .hvl a,body.hvo-template .hvg a{box-shadow:none}

/* Logo swap: white logo while the header is transparent over the homepage hero */
/* Front page (hvo-on-light): nav stays transparent over the light hero photo but uses dark text and the dark logo until scrolled */
html .hvo-nav.hvo-on-light:not(.hvo-scrolled) .hvo-item-btn,html .hvo-nav.hvo-on-light:not(.hvo-scrolled) .hvo-item-link,html .hvo-nav.hvo-on-light:not(.hvo-scrolled) .hvo-login-link,html .hvo-nav.hvo-on-light:not(.hvo-scrolled) .hvo-mobile-toggle{color:#1a1a1a}
html .hvo-nav.hvo-on-light:not(.hvo-scrolled) .hvo-item-btn:hover,html .hvo-nav.hvo-on-light:not(.hvo-scrolled) .hvo-item-link:hover,html .hvo-nav.hvo-on-light:not(.hvo-scrolled) .hvo-login-link:hover{color:#951b2a;background:rgba(255,255,255,.6)}
html .hvo-nav.hvo-on-light:not(.hvo-solid):not(.hvo-scrolled) .hvo-logo-light{display:none}
html .hvo-nav.hvo-on-light:not(.hvo-solid):not(.hvo-scrolled) .hvo-logo-dark{display:block}
html .hvo-nav .hvo-logo-light{display:none}
html .hvo-nav:not(.hvo-solid):not(.hvo-scrolled) .hvo-logo-light{display:block}
html .hvo-nav:not(.hvo-solid):not(.hvo-scrolled) .hvo-logo-dark{display:none}
/* Homepage hero on small screens: keep the background photo covering the full hero */
html #home .absolute.inset-0 > img.h-full{height:100%}

/* =====================================================================
   CTA button hover (site-wide)
   CAUSE: Hello Elementor's reset.css declares
       a:active, a:hover { color:#336 }
   whose specificity (0,1,1) beats the pages' .text-white utility (0,1,0),
   so a hovered CTA's label went dark blue (rgb(51,51,102)) and its Lucide
   icon followed, because those SVGs are drawn with stroke="currentColor".
   WHY THE FIRST PASS MISSED SOME: it required the class list to contain
   "px-" or "w-full". Variants padded with the shorthand p-* - notably the
   "Book a Tour" and "Find Location" tiles (p-5 rounded-2xl) - matched none
   of those selectors, so they kept the blue text and got no enlargement.
   FIX: identify CTAs by the reliable, padding-agnostic pair
   [class~="text-white"] + [class*="rounded-"], plus the site's own button
   component classes and form submits. Colour is set through `color` (and
   -webkit-text-fill-color), so currentColor turns icon strokes white while
   outline icons keep their fill="none" - no fill/stroke is forced here.
   Enlargement uses the standalone `scale` property, which composes with
   `transform`, so any positioning transform is preserved; it is limited to
   real hover-capable pointers and disabled under reduced-motion.
   Specificity is sufficient without !important: e.g.
   html a[class~="text-white"][class*="rounded-"]:hover = (0,3,2) > (0,1,1).
   Ordinary links, nav and dropdown items, badges and cards carry no
   text-white + rounded-* pair and are left untouched.
   ===================================================================== */
html a[class~="text-white"][class*="rounded-"],
html button[class~="text-white"][class*="rounded-"],
html .hvl-btn,
html .hvs-btn,
html .hvp-btn,
html .hvo-btn-submit,
html .hvo-account-btn,
html .hvo-signup-btn,
html .hvo-m-signup,
html form button[type="submit"],
html form input[type="submit"],
html a[class*="rounded-"][class*="px-"][class*="bg-white"]:not([class*="text-white"]),
html a[class*="rounded-"][class*="px-"][class*="bg-gray-"]:not([class*="text-white"]),
html button[class*="rounded-"][class*="px-"][class*="bg-white"]:not([class*="text-white"]),
html button[class*="rounded-"][class*="px-"][class*="bg-gray-"]:not([class*="text-white"]),
html .hvl-btn-outline,
html .hvo-account-btn,
html .hvo-account-btn-ghost,
html .hvs-btn{transition:background-color .2s ease,color .2s ease,border-color .2s ease,box-shadow .2s ease,scale .2s ease;transform-origin:center center}
/* Hover / focus / pressed: white label and white icons. Backgrounds kept as-is. */
html a[class~="text-white"][class*="rounded-"]:is(:hover,:focus,:focus-visible,:active),
html button[class~="text-white"][class*="rounded-"]:is(:hover,:focus,:focus-visible,:active),
html .hvl-btn:is(:hover,:focus,:focus-visible,:active),
html .hvs-btn:is(:hover,:focus,:focus-visible,:active),
html .hvp-btn:is(:hover,:focus,:focus-visible,:active),
html .hvo-btn-submit:is(:hover,:focus,:focus-visible,:active),
html .hvo-account-btn:is(:hover,:focus,:focus-visible,:active),
html .hvo-signup-btn:is(:hover,:focus,:focus-visible,:active),
html .hvo-m-signup:is(:hover,:focus,:focus-visible,:active),
html form button[type="submit"]:is(:hover,:focus,:focus-visible,:active),
html form input[type="submit"]:is(:hover,:focus,:focus-visible,:active),
html a[class~="text-white"][class*="rounded-"]:is(:hover,:focus,:focus-visible,:active) *,
html button[class~="text-white"][class*="rounded-"]:is(:hover,:focus,:focus-visible,:active) *,
html .hvl-btn:is(:hover,:focus,:focus-visible,:active) *,
html .hvs-btn:is(:hover,:focus,:focus-visible,:active) *,
html .hvp-btn:is(:hover,:focus,:focus-visible,:active) *,
html .hvo-btn-submit:is(:hover,:focus,:focus-visible,:active) *,
html .hvo-account-btn:is(:hover,:focus,:focus-visible,:active) *,
html .hvo-signup-btn:is(:hover,:focus,:focus-visible,:active) *,
html .hvo-m-signup:is(:hover,:focus,:focus-visible,:active) *,
html form button[type="submit"]:is(:hover,:focus,:focus-visible,:active) *,
html form input[type="submit"]:is(:hover,:focus,:focus-visible,:active) *{color:#fff;-webkit-text-fill-color:#fff}
/* Visited CTA links must not fall back to a link colour either. */
html a[class~="text-white"][class*="rounded-"]:visited:is(:hover,:focus,:focus-visible,:active){color:#fff;-webkit-text-fill-color:#fff}
/* Light-background buttons: logo burgundy fill on hover so the white label stays readable. */
html a[class*="rounded-"][class*="px-"][class*="bg-white"]:not([class*="text-white"]):is(:hover,:focus,:focus-visible,:active),
html a[class*="rounded-"][class*="px-"][class*="bg-gray-"]:not([class*="text-white"]):is(:hover,:focus,:focus-visible,:active),
html button[class*="rounded-"][class*="px-"][class*="bg-white"]:not([class*="text-white"]):is(:hover,:focus,:focus-visible,:active),
html button[class*="rounded-"][class*="px-"][class*="bg-gray-"]:not([class*="text-white"]):is(:hover,:focus,:focus-visible,:active),
html .hvl-btn-outline:is(:hover,:focus,:focus-visible,:active),
html .hvo-account-btn:is(:hover,:focus,:focus-visible,:active),
html .hvo-account-btn-ghost:is(:hover,:focus,:focus-visible,:active),
html .hvs-btn:is(:hover,:focus,:focus-visible,:active){background:#951b2a;border-color:#951b2a;color:#fff;-webkit-text-fill-color:#fff}
html a[class*="rounded-"][class*="px-"][class*="bg-white"]:not([class*="text-white"]):is(:hover,:focus,:focus-visible,:active) *,
html a[class*="rounded-"][class*="px-"][class*="bg-gray-"]:not([class*="text-white"]):is(:hover,:focus,:focus-visible,:active) *,
html button[class*="rounded-"][class*="px-"][class*="bg-white"]:not([class*="text-white"]):is(:hover,:focus,:focus-visible,:active) *,
html button[class*="rounded-"][class*="px-"][class*="bg-gray-"]:not([class*="text-white"]):is(:hover,:focus,:focus-visible,:active) *,
html .hvl-btn-outline:is(:hover,:focus,:focus-visible,:active) *,
html .hvo-account-btn:is(:hover,:focus,:focus-visible,:active) *,
html .hvo-account-btn-ghost:is(:hover,:focus,:focus-visible,:active) *,
html .hvs-btn:is(:hover,:focus,:focus-visible,:active) *{color:#fff;-webkit-text-fill-color:#fff}
/* Buttons inside a card that itself turns burgundy on hover: keep them distinct. */
html #offices .hvs-card:hover .hvs-btn:hover,html #offices .hvs-card:focus-within .hvs-btn:hover{background:rgba(255,255,255,.28);border-color:#fff;color:#fff}
html #pricing .hvp-card:hover .hvp-btn:hover,html #pricing .hvp-card:focus-within .hvp-btn:hover{background:#7a1522;color:#fff;box-shadow:0 0 0 2px #fff}
html #pricing .hvp-card:hover .hvp-btn:hover *,html #offices .hvs-card:hover .hvs-btn:hover *{color:#fff;-webkit-text-fill-color:#fff}
/* Gentle 3% enlargement, hover-capable pointers only. `scale` composes with transform. */
@media (hover:hover) and (pointer:fine){
html a[class~="text-white"][class*="rounded-"]:hover,
html button[class~="text-white"][class*="rounded-"]:hover,
html .hvl-btn:hover,
html .hvs-btn:hover,
html .hvp-btn:hover,
html .hvo-btn-submit:hover,
html .hvo-account-btn:hover,
html .hvo-signup-btn:hover,
html .hvo-m-signup:hover,
html form button[type="submit"]:hover,
html form input[type="submit"]:hover,
html a[class*="rounded-"][class*="px-"][class*="bg-white"]:not([class*="text-white"]):hover,
html a[class*="rounded-"][class*="px-"][class*="bg-gray-"]:not([class*="text-white"]):hover,
html button[class*="rounded-"][class*="px-"][class*="bg-white"]:not([class*="text-white"]):hover,
html button[class*="rounded-"][class*="px-"][class*="bg-gray-"]:not([class*="text-white"]):hover,
html .hvl-btn-outline:hover,
html .hvo-account-btn:hover,
html .hvo-account-btn-ghost:hover,
html .hvs-btn:hover{scale:1.03}
}
@media (prefers-reduced-motion:reduce){
html a[class~="text-white"][class*="rounded-"]:hover,
html button[class~="text-white"][class*="rounded-"]:hover,
html .hvl-btn:hover,
html .hvs-btn:hover,
html .hvp-btn:hover,
html .hvo-btn-submit:hover,
html .hvo-account-btn:hover,
html .hvo-signup-btn:hover,
html .hvo-m-signup:hover,
html form button[type="submit"]:hover,
html form input[type="submit"]:hover,
html a[class*="rounded-"][class*="px-"][class*="bg-white"]:not([class*="text-white"]):hover,
html a[class*="rounded-"][class*="px-"][class*="bg-gray-"]:not([class*="text-white"]):hover,
html button[class*="rounded-"][class*="px-"][class*="bg-white"]:not([class*="text-white"]):hover,
html button[class*="rounded-"][class*="px-"][class*="bg-gray-"]:not([class*="text-white"]):hover,
html .hvl-btn-outline:hover,
html .hvo-account-btn:hover,
html .hvo-account-btn-ghost:hover,
html .hvs-btn:hover{scale:1;transition:background-color .2s ease,color .2s ease,border-color .2s ease,box-shadow .2s ease}
}
/* A few CTAs ship their own hover:scale-105 utility. Because the standalone
   `scale` property composes with `transform`, that would compound to ~8%.
   Drop their transform so every CTA enlarges by the same 3%. Verified across
   all pages that no CTA relies on a positioning transform (no translate/
   rotate/skew on any matched button), so nothing is displaced. */
@media (hover:hover) and (pointer:fine){
html a[class*="hover:scale-"][class~="text-white"][class*="rounded-"]:hover,
html button[class*="hover:scale-"][class~="text-white"][class*="rounded-"]:hover{transform:none}
}

/* =====================================================================
   Form fields - consistent 12px corners (site-wide)
   Hello Elementor's reset.css rounds form controls to 3px through
   attribute selectors (input[type="text"], input[type="email"] ...,
   specificity 0,1,1). That beats the pages' own .rounded-xl utility
   (0,1,0), so Full Name / Email / Phone / Company rendered near-square,
   while <textarea> (only 0,0,1 in the reset) kept the utility's 12px -
   the mismatch seen on the "Enquire Now" form. The homepage separately
   forces pills via .hiveone-widget-scope .rounded-full{...!important}.
   These rules normalise every editable text-like input, native select
   and textarea to a single radius on all four corners, in every state
   (12px originally; now 50px - see the 50px block further down).
   width, height, padding, spacing, fonts, colours, borders, layout,
   buttons and validation are untouched, and nothing is clipped
   (no overflow rules, so dropdowns, messages and focus rings show).
   ===================================================================== */
html body :is(input[type="text"],input[type="email"],input[type="tel"],input[type="url"],input[type="number"],input[type="password"],input[type="search"],input[type="date"],input[type="datetime-local"],input[type="month"],input[type="time"],input[type="week"],input:not([type]),select,textarea):not([type="checkbox"]):not([type="radio"]),
html body :is(input[type="text"],input[type="email"],input[type="tel"],input[type="url"],input[type="number"],input[type="password"],input[type="search"],input[type="date"],input[type="datetime-local"],input[type="month"],input[type="time"],input[type="week"],input:not([type]),select,textarea):not([type="checkbox"]):not([type="radio"]):is(:hover,:focus,:focus-visible,:active,:disabled,[readonly],[aria-invalid="true"],.error,.is-invalid){border-radius:50px !important}
/* Leave the WordPress admin bar's own controls exactly as they were (admin-only chrome). */
html #wpadminbar :is(input,select,textarea){border-radius:0 !important}
/* =============================================================
   Service sub-pages: "Transparent Pricing" three-card alignment.
   Scoped to the white pricing section on the 12 service pages
   (section#pricing.bg-white). The homepage "Subscription Plans"
   section also uses id="pricing" but has bg-[#F0F0F0], so the
   [class*="bg-white"] test keeps the two apart.
   ============================================================= */
/* Equal columns that fill the row: cards become flex columns of
   full row height so their top and bottom edges line up. */
html section#pricing[class*="bg-white"] .grid>div{display:flex;flex-direction:column;height:100%;padding:32px}
/* The middle "Most Popular" card carried a permanent scale-[1.02]
   (wider, taller and 4px higher than its neighbours) and no border,
   which also shifted its inner content by 1px under border-box.
   Neutralise both; its dark background, shadow and badge stay. */
html section#pricing[class*="bg-white"] .grid>div[class*="scale-"]{--tw-scale-x:1;--tw-scale-y:1;border:1px solid transparent}
/* Pin the CTA to the bottom of every card so Solo Suite's shorter
   feature list leaves space below the list instead of lifting the
   button. The list keeps its own 24px bottom margin as the minimum
   gap, so the features are never stretched apart. */
html section#pricing[class*="bg-white"] .grid>div>a{margin-top:auto}
/* Feature rows: top-align so wrapped text lines up with the text
   above it rather than under the checkmark, and stop the icon from
   shrinking on narrow screens. */
html section#pricing[class*="bg-white"] .grid>div [class*="space-y-"]>div{align-items:flex-start}
html section#pricing[class*="bg-white"] .grid>div [class*="space-y-"]>div>svg{flex:0 0 auto;margin-top:2px}
/* =============================================================
   Service sub-pages: "Choose Your Option(s)" option cards.
   Scoped with :has() to the one grid per page whose cards begin
   with an <h5> - verified to match this component only, on the
   12 service pages, and nothing on the homepage, the hub pages
   or the location page.
   ============================================================= */
/* Guard against theme default top margins on the card headings
   and paragraphs. The existing bottom margins set the gaps. */
html div[class*="grid-cols-3"]:has(>div>h5)>div>:is(h5,p,div){margin-top:0}
/* Fallback for engines without subgrid: at minimum pin the CTA
   to the bottom of each card. */
html div[class*="grid-cols-3"]:has(>div>h5)>div{display:flex;flex-direction:column}
html div[class*="grid-cols-3"]:has(>div>h5)>div>a{margin-top:auto}
@supports (grid-template-rows:subgrid){
/* Each card becomes a subgrid of the section grid, so the title,
   description, capacity, pricing and CTA each occupy a row that
   is shared by every card in that row. The tallest description
   sizes the description row for the whole row - two lines here,
   three elsewhere - with no fixed heights and no filler markup.
   Stacked on mobile each card is alone in its row band, so the
   shared space disappears and heights follow the content. */
html div[class*="grid-cols-3"]:has(>div>h5)>div{display:grid;grid-template-rows:subgrid;row-gap:0;grid-row:span 4}
html div[class*="grid-cols-3"]:has(>div>h5)>div:has(>p+div+div){grid-row:span 5}
html div[class*="grid-cols-3"]:has(>div>h5)>div:has(>p+div+div+div){grid-row:span 6}
html div[class*="grid-cols-3"]:has(>div>h5)>div>a{margin-top:0;align-self:end}
}
/* =============================================================
   Brand burgundy for the "Book a Tour", "Submit Enquiry" and
   "Book My Tour" buttons. #951B2A is the primary burgundy sampled from
   HiveOne_Logo.png (54,766 px of the logo mark, by far its
   dominant colour).
   Scoped by element type + the exact Tailwind size tokens each
   of these buttons carries, so the other #D71920 buttons keep
   their colour: "Schedule a Visit" (px-10 py-5), "Get Quote"
   and "Get Started" (w-full py-3.5), "Get Directions"
   (px-5 py-2.5), and every black #1A1A1A button such as
   "Find Location".
   body.page-child on the first selector is what keeps the
   identically-classed "View Locations" (/location/) and
   "Schedule a Free Tour" (homepage) buttons red - only the 12
   service pages are child pages.
   --tw-shadow-color is re-tinted rather than a new box-shadow
   being declared, so each button keeps the exact shadow
   geometry and alpha it already had, just in burgundy.
   ============================================================= */
html :is(body.page-child a[class~="px-8"][class~="py-4"][class~="rounded-full"],a[class~="p-5"][class~="rounded-2xl"],a[class~="px-6"][class~="py-3"][class~="rounded-full"],a[class~="px-6"][class~="py-2.5"][class~="rounded-full"],button[class~="w-full"][class~="py-4"][class~="rounded-xl"],button[class~="w-full"][class~="py-4"][class~="rounded-full"])[class~="bg-[#D71920]"],html :is(body.page-child a[class~="px-8"][class~="py-4"][class~="rounded-full"],a[class~="p-5"][class~="rounded-2xl"],a[class~="px-6"][class~="py-3"][class~="rounded-full"],a[class~="px-6"][class~="py-2.5"][class~="rounded-full"],button[class~="w-full"][class~="py-4"][class~="rounded-xl"],button[class~="w-full"][class~="py-4"][class~="rounded-full"])[class~="bg-[#D71920]"]:is(:hover,:focus,:focus-visible,:active){background-color:#951b2a;border-color:#951b2a;color:#fff;-webkit-text-fill-color:#fff;--tw-shadow-color:rgba(149,27,42,.2)}
html :is(body.page-child a[class~="px-8"][class~="py-4"][class~="rounded-full"],a[class~="p-5"][class~="rounded-2xl"],a[class~="px-6"][class~="py-3"][class~="rounded-full"],a[class~="px-6"][class~="py-2.5"][class~="rounded-full"],button[class~="w-full"][class~="py-4"][class~="rounded-xl"],button[class~="w-full"][class~="py-4"][class~="rounded-full"])[class~="bg-[#D71920]"] *,html :is(body.page-child a[class~="px-8"][class~="py-4"][class~="rounded-full"],a[class~="p-5"][class~="rounded-2xl"],a[class~="px-6"][class~="py-3"][class~="rounded-full"],a[class~="px-6"][class~="py-2.5"][class~="rounded-full"],button[class~="w-full"][class~="py-4"][class~="rounded-xl"],button[class~="w-full"][class~="py-4"][class~="rounded-full"])[class~="bg-[#D71920]"]:is(:hover,:focus,:focus-visible,:active) *{color:#fff;-webkit-text-fill-color:#fff}
html :is(body.page-child a[class~="px-8"][class~="py-4"][class~="rounded-full"],a[class~="p-5"][class~="rounded-2xl"],a[class~="px-6"][class~="py-3"][class~="rounded-full"],a[class~="px-6"][class~="py-2.5"][class~="rounded-full"],button[class~="w-full"][class~="py-4"][class~="rounded-xl"],button[class~="w-full"][class~="py-4"][class~="rounded-full"])[class~="bg-[#D71920]"][class~="shadow-[#D71920]/30"]{--tw-shadow-color:rgba(149,27,42,.3)}
/* =============================================================
   Service sub-pages: "About This Service" two-column section.
   The grid carries items-start, so the image column sat at its
   own natural height and its bottom edge stopped above the last
   "Ideal For" badge row. (The markup asks for h-[420px] but the
   theme's img{height:auto} outranks that utility, so the image
   was rendering at its natural aspect ratio.)
   Only while the two columns are side by side (Tailwind lg,
   1024px and up) the row stretches and the image fills it, so
   the height follows each page's own text and badge wrapping -
   no fixed height anywhere. Stacked below 1024px the rules do
   not apply and the image keeps its natural aspect ratio.
   Scoped via the h-[420px] image token, which belongs to this
   section only - the three location cards on /location/ use
   h-[400px] and are left alone.
   ============================================================= */
@media (min-width:1024px){
html div[class~="lg:grid-cols-2"][class~="items-start"]:has(>div>img[class~="h-[420px]"]){align-items:stretch}
html div[class~="lg:grid-cols-2"][class~="items-start"]:has(>div>img[class~="h-[420px]"])>div{min-height:0}
html div[class~="lg:grid-cols-2"][class~="items-start"]:has(>div>img[class~="h-[420px]"])>div:has(>img[class~="h-[420px]"]){height:100%;position:relative}
html div[class~="lg:grid-cols-2"][class~="items-start"]:has(>div>img[class~="h-[420px]"])>div>img[class~="h-[420px]"]{position:absolute;inset:0;height:100%;width:100%;object-fit:cover;display:block}
}

/* =====================================================================
   Site-wide 50px corner radius + soft 1px borders for action buttons
   and form controls.
   The field selector above now resolves to 50px instead of 12px; the
   rules below add the matching border treatment and the button half.
   Buttons are matched by the same shared CTA group already used for the
   hover fix, so ordinary nav links, dropdown items, badges, cards,
   checkboxes, radios and the WP admin bar stay untouched.
   ===================================================================== */
/* Buttons: 50px on all four corners. !important is required because the
   homepage ships .hiveone-widget-scope .rounded-full{...!important}. */
html body :is(a[class~="text-white"][class*="rounded-"],button[class~="text-white"][class*="rounded-"],a[class*="rounded-"][class*="px-"][class*="bg-white"]:not([class*="text-white"]),a[class*="rounded-"][class*="px-"][class*="bg-gray-"]:not([class*="text-white"]),button[class*="rounded-"][class*="px-"][class*="bg-white"]:not([class*="text-white"]),button[class*="rounded-"][class*="px-"][class*="bg-gray-"]:not([class*="text-white"]),a[class*="rounded-full"][class*="px-"],button[class*="rounded-full"][class*="px-"],.hvl-btn,.hvl-btn-outline,.hvs-btn,.hvp-btn,.hvo-btn-submit,.hvo-account-btn,.hvo-account-btn-ghost,.hvo-signup-btn,.hvo-m-signup,button[type="submit"],input[type="submit"]):not(#wpadminbar *){border-radius:50px !important}
/* Outlined / bordered buttons: same 1px, hue kept, alpha dropped to 20%.
   Keyed on the border utility each button already carries, so filled
   buttons with no border (or a transparent one) never gain a visible
   edge. Only the border colour's alpha changes - background, label,
   placeholder and icons stay fully opaque. */
html body :is(a[class~="text-white"][class*="rounded-"],button[class~="text-white"][class*="rounded-"],a[class*="rounded-"][class*="px-"][class*="bg-white"]:not([class*="text-white"]),a[class*="rounded-"][class*="px-"][class*="bg-gray-"]:not([class*="text-white"]),button[class*="rounded-"][class*="px-"][class*="bg-white"]:not([class*="text-white"]),button[class*="rounded-"][class*="px-"][class*="bg-gray-"]:not([class*="text-white"]),a[class*="rounded-full"][class*="px-"],button[class*="rounded-full"][class*="px-"],.hvl-btn,.hvl-btn-outline,.hvs-btn,.hvp-btn,.hvo-btn-submit,.hvo-account-btn,.hvo-account-btn-ghost,.hvo-signup-btn,.hvo-m-signup,button[type="submit"],input[type="submit"]):not(#wpadminbar *)[class*="border-white"]{border-width:1px;border-style:solid;border-color:rgba(255,255,255,.20)}
html body :is(a[class~="text-white"][class*="rounded-"],button[class~="text-white"][class*="rounded-"],a[class*="rounded-"][class*="px-"][class*="bg-white"]:not([class*="text-white"]),a[class*="rounded-"][class*="px-"][class*="bg-gray-"]:not([class*="text-white"]),button[class*="rounded-"][class*="px-"][class*="bg-white"]:not([class*="text-white"]),button[class*="rounded-"][class*="px-"][class*="bg-gray-"]:not([class*="text-white"]),a[class*="rounded-full"][class*="px-"],button[class*="rounded-full"][class*="px-"],.hvl-btn,.hvl-btn-outline,.hvs-btn,.hvp-btn,.hvo-btn-submit,.hvo-account-btn,.hvo-account-btn-ghost,.hvo-signup-btn,.hvo-m-signup,button[type="submit"],input[type="submit"]):not(#wpadminbar *)[class*="border-gray-"]{border-width:1px;border-style:solid;border-color:rgba(0,0,0,.20)}
html body :is(a[class~="text-white"][class*="rounded-"],button[class~="text-white"][class*="rounded-"],a[class*="rounded-"][class*="px-"][class*="bg-white"]:not([class*="text-white"]),a[class*="rounded-"][class*="px-"][class*="bg-gray-"]:not([class*="text-white"]),button[class*="rounded-"][class*="px-"][class*="bg-white"]:not([class*="text-white"]),button[class*="rounded-"][class*="px-"][class*="bg-gray-"]:not([class*="text-white"]),a[class*="rounded-full"][class*="px-"],button[class*="rounded-full"][class*="px-"],.hvl-btn,.hvl-btn-outline,.hvs-btn,.hvp-btn,.hvo-btn-submit,.hvo-account-btn,.hvo-account-btn-ghost,.hvo-signup-btn,.hvo-m-signup,button[type="submit"],input[type="submit"]):not(#wpadminbar *)[class*="border-[#87292C]"]{border-width:1px;border-style:solid;border-color:rgba(135,41,44,.20)}
/* Filled burgundy submits carry the theme's default 1px button border,
   which the brand rule above paints #951B2A. Translucent version of that
   same colour, per the soft-border spec (visually identical - the border
   sits on its own background). */
html body :is(a[class~="text-white"][class*="rounded-"],button[class~="text-white"][class*="rounded-"],a[class*="rounded-"][class*="px-"][class*="bg-white"]:not([class*="text-white"]),a[class*="rounded-"][class*="px-"][class*="bg-gray-"]:not([class*="text-white"]),button[class*="rounded-"][class*="px-"][class*="bg-white"]:not([class*="text-white"]),button[class*="rounded-"][class*="px-"][class*="bg-gray-"]:not([class*="text-white"]),a[class*="rounded-full"][class*="px-"],button[class*="rounded-full"][class*="px-"],.hvl-btn,.hvl-btn-outline,.hvs-btn,.hvp-btn,.hvo-btn-submit,.hvo-account-btn,.hvo-account-btn-ghost,.hvo-signup-btn,.hvo-m-signup,button[type="submit"],input[type="submit"]):not(#wpadminbar *)[class~="bg-[#D71920]"]:not(:focus-visible){border-color:rgba(149,27,42,.20)}
/* Form fields: soft, consistent 1px normal-state border. Focus, error,
   readonly and disabled are excluded so those states stay distinct. */
html body :is(input[type="text"],input[type="email"],input[type="tel"],input[type="url"],input[type="number"],input[type="password"],input[type="search"],input[type="date"],input[type="datetime-local"],input[type="month"],input[type="time"],input[type="week"],input:not([type]),select,textarea):not([type="checkbox"]):not([type="radio"]):not(#wpadminbar *):not(:focus):not(:focus-visible):not(:disabled):not([readonly]):not([aria-invalid="true"]):not(.error):not(.is-invalid){border-width:1px !important;border-style:solid !important;border-color:rgba(0,0,0,.20) !important}
/* At 50px the corner curve cuts ~17px into the first and last lines of a
   textarea, which the old 16px side padding did not clear. Sides go to
   24px, which clears the curve; vertical padding, width, height and
   font are unchanged. */
html body textarea:not(#wpadminbar *){padding:12px 24px !important}
/* Keyboard focus stays obvious and full-strength - it is NOT softened to
   20%. The markup asks for focus:border + focus:ring, but the theme's
   input:focus rule (0,1,1) outranked those utilities (0,1,0) and
   focus:outline-none removed the fallback outline, so these fields had
   no visible focus indicator at all. Restored here in brand burgundy. */
html body :is(input[type="text"],input[type="email"],input[type="tel"],input[type="url"],input[type="number"],input[type="password"],input[type="search"],input[type="date"],input[type="datetime-local"],input[type="month"],input[type="time"],input[type="week"],input:not([type]),select,textarea):not([type="checkbox"]):not([type="radio"]):not(#wpadminbar *):focus-visible{border-width:1px !important;border-style:solid !important;border-color:#951b2a !important;box-shadow:0 0 0 3px rgba(149,27,42,.18);outline:2px solid transparent;outline-offset:2px}

/* =====================================================================
   Images that explicitly ask to fill their frame.
   Elementor ships `.elementor img{height:auto}` at specificity (0,1,1),
   which outranks Tailwind's `h-full` utility (0,1,0). Every image using
   the `w-full h-full object-cover` pattern - page heroes, listing card
   thumbnails, decorative background layers - was therefore rendering at
   its natural aspect ratio and overflowing its frame. That stayed
   invisible while the photos happened to be landscape (the overflow was
   a few percent and clipped); a portrait photo in the same frame
   overflows by 3x and only the top strip shows.
   All 61 such images on the site sit in a parent with a definite height
   (absolute inset-0, h-14, h-48, h-60, aspect-*, h-[Npx]), so honouring
   the declared height is exactly what the markup intends.
   ===================================================================== */
html .elementor img[class~="w-full"][class~="h-full"]{height:100%}
/* The landing-page card thumbnail has the same problem via a different
   route: `.hvl-card-img img{height:100%}` (0,1,1) ties with Elementor’s
   `.elementor img{height:auto}` (0,1,1) and loses on source order, so the
   thumbnail escaped its 16:9 frame. */
html .elementor .hvl-card-img img{height:100%}