/* WilderLink brand skin for Listeo's own templates.
 *
 * Applies to the pages that must keep Listeo's working widgets — browse (map
 * search), single listings (booking calendar), category archives and the
 * dashboard. The goal is that they read as the same site as the landing pages
 * built from guide/index.html, without replacing any Listeo markup.
 *
 * Loaded after listeo-style, so plain selectors win; !important is used only
 * where the parent theme sets the same property inline or with #id specificity.
 */

/* ---------------------------------------------------------------- *
 * Tokens (mirror guide/styles.css)
 * ---------------------------------------------------------------- */
:root{
  --wl-night-0:#0C1917;
  --wl-night-1:#14251F;
  --wl-pine:#1C332A;
  --wl-conifer:#2F5A41;
  --wl-moss:#3F7052;
  --wl-sage:#9AB49B;
  --wl-birch:#F6F4EC;
  --wl-mist:#ECEFE4;
  --wl-ink:#1E2A24;
  --wl-ink-soft:#4C5B52;
  --wl-amber:#E9A13B;
  --wl-amber-deep:#B97817;
  --wl-amber-glow:rgba(233,161,59,.55);
  --wl-line:#DCDFCF;
  --wl-radius:14px;
}

/* WooCommerce pages (cart/checkout/order-received) were measured at a 10px
   root font-size in a live browser — no stylesheet on the page sets it (every
   enqueued file was checked) and there's no inline style on <html>, so
   something in WooCommerce's block scripts sets it at runtime. Rather than
   keep chasing the exact source, force it back to the real 16px root every
   other page already uses — every rem value in this file assumes that base. */
html{font-size:16px !important}

/* ---------------------------------------------------------------- *
 * Typography
 *
 * Listeo's base is 15px/27px in #707070; the mockup is 16.5px/1.6 in dark ink,
 * which is why Listeo pages read smaller and greyer than the landing pages.
 * These rules bring the shared scale in line.
 *
 * Minimum size: nothing in this file drops below .78rem (~13px). Mono labels
 * carry wide letter-spacing and uppercase, both of which cost legibility, so
 * they sit at that floor rather than the .62–.7rem they started at. The same
 * floor is applied in wilderlink-home.css — keep them in step.
 * ---------------------------------------------------------------- */
body{
  font-family:'Karla',system-ui,-apple-system,sans-serif;
  font-size:16.5px;
  line-height:1.6;
  color:var(--wl-ink);
  background:var(--wl-birch);
}
body p{
  font-size:16.5px;
  line-height:1.65;
  color:var(--wl-ink);
}
h1,h2,h3,h4,h5,h6{
  font-family:'Bricolage Grotesque','Karla',system-ui,sans-serif;
  letter-spacing:-.01em;
  line-height:1.15;
  color:var(--wl-ink);
}
h1{font-size:2.3rem;font-weight:800}
h2{font-size:1.85rem;font-weight:800}
h3{font-size:1.35rem;font-weight:700}
h4{font-size:1.12rem;font-weight:700}
h5{font-size:1rem;font-weight:700}

a{color:var(--wl-conifer)}
a:hover{color:var(--wl-amber-deep)}

/* Secondary text that Listeo renders at 13–14px */
.listing-location-nl,
.listing-details-nl,
.listing-desc,
.dashboard-list-box p,
.comment-content p,
.sidebar-textbox p{
  font-size:.95rem;
  line-height:1.6;
  color:var(--wl-ink-soft);
}

/* Form controls — Listeo sets 15px/#808080 with a fixed 51px line-height */
input[type="text"],input[type="email"],input[type="password"],
input[type="number"],input[type="tel"],input[type="date"],
input[type="search"],select,textarea{
  font-size:16px;
  color:var(--wl-ink);
}
input::placeholder,textarea::placeholder{color:#8A968D}
label,legend{color:var(--wl-ink-soft)}

/* Buttons take the page size. `button` and `input[type=submit]` are form
   controls, which do NOT inherit typography — dropping the declaration would
   fall back to the browser default (~13px, system font) — so they are opted in
   explicitly rather than left unset. */
.button,button.button,input[type="submit"],a.button{
  font-size:inherit;
  font-family:inherit;
}

/* Navigation + footer links */
#navigation ul li a{font-size:.97rem}
#footer,#footer a{font-size:.95rem}

/* ---------------------------------------------------------------- *
 * Header
 * ---------------------------------------------------------------- */
#header-container,
#header,
.headers-wrapper{
  background:var(--wl-night-0);
  border-bottom:1px solid rgba(246,244,236,.08);
}
#header .container,
#header-container .container{background:transparent}

#logo img{max-height:34px;width:auto}

#navigation.style-1 ul li a,
#navigation ul li a,
.header-widget a,
#header a{
  color:rgba(246,244,236,.85);
  font-family:'Karla',system-ui,sans-serif;
  font-weight:500;
}
#navigation.style-1 ul li a:hover,
#navigation ul li a:hover,
#header a:hover{color:#fff}
#navigation.style-1 ul li a.current,
#navigation ul li.current-menu-item > a{color:var(--wl-amber)}

/* The sticky header Listeo clones on scroll is white by default
   (style.css ~342, `#header.cloned` — specificity (1,1,0), which beats the
   `#header` rule above). Left alone, the light nav links disappear the moment
   the page scrolls. */
#header.cloned,
#header-container.fixed #header.cloned{
  background-color:var(--wl-night-0);
  box-shadow:0 10px 30px -20px rgba(12,25,23,.8);
}

/* Sub-menus keep a light surface for legibility. Listeo forces
   `#navigation.style-1 ul li li a { background:#fff !important }` at (1,1,4),
   so the link colour has to be restated at matching specificity or the header's
   light text stays and renders white-on-white. */
#navigation ul ul{
  background:#fff;
  border-radius:12px;
  border:1px solid var(--wl-line);
  box-shadow:0 20px 40px -26px rgba(12,25,23,.5);
  overflow:hidden;
}
#navigation ul ul li a,
#navigation.style-1 ul ul li a,
#navigation.style-1 ul li li a{color:var(--wl-ink)}
#navigation ul ul li a:hover,
#navigation.style-1 ul ul li a:hover,
#navigation.style-1 ul li li a:hover{color:var(--wl-conifer);background:var(--wl-mist)}

/* "List your gear" style CTA in the header widget area */
.header-widget .button,
#header .button{
  background:var(--wl-amber);
  color:#231603;
  border-radius:999px;
  font-weight:700;
  box-shadow:0 6px 18px -6px var(--wl-amber-glow);
}
.header-widget .button:hover,
#header .button:hover{background:#F0AC49;color:#231603}

/* "Sign In" pill (logged-out header-widget), styled to match the "List your
   gear" amber CTA next to it. Needs `#header` (ID, specificity 1,1,0) to beat
   Listeo's own `.user_not_logged_in .header-widget .sign-in` rule (0,3,0),
   same fix pattern as the submenu/account dropdown above. */
#header .sign-in,
.header-widget .sign-in{
  background:var(--wl-amber);
  color:#231603;
  border-radius:999px;
  font-weight:700;
  box-shadow:0 6px 18px -6px var(--wl-amber-glow);
}
#header .sign-in:hover,
.header-widget .sign-in:hover{background:#fff;color:#231603}

.user-menu .user-name:after{color:rgba(246,244,236,.7)}
.user-menu .usrname{color:rgba(246,244,236,.9)}
.user-menu .user-name img.avatar{border-radius:50%}

/* My Account dropdown.
   Listeo renders it as a white panel with #696969 links, but the header rule
   above is written as `#header a` — an ID, so specificity (1,0,1) — which beats
   Listeo's `.user-menu ul li a` (0,1,3) and painted the links near-white on
   white. Restate them here at (1,1,3) so the panel is legible, matching the
   light treatment already used for `#navigation ul ul`. */
#header .user-menu ul,
.user-menu ul{
  background:#fff;
  border:1px solid var(--wl-line);
  border-radius:12px;
  box-shadow:0 22px 44px -26px rgba(12,25,23,.5);
  overflow:hidden;
  padding:6px 0;
}
#header .user-menu ul li a,
.user-menu ul li a{
  color:var(--wl-ink);
  font-family:'Karla',system-ui,sans-serif;
  font-weight:500;
  display:block;
  padding:9px 16px;
}
#header .user-menu ul li a:hover,
.user-menu ul li a:hover{
  color:var(--wl-conifer);
  background:var(--wl-mist);
}
#header .user-menu ul li a i,
.user-menu ul li a i{color:var(--wl-sage)}
#header .user-menu ul li a:hover i,
.user-menu ul li a:hover i{color:var(--wl-amber-deep)}
.user-menu ul li .nav-tag{
  font-family:'IBM Plex Mono',monospace;
  font-size:.78rem;
  border-radius:999px;
  background:var(--wl-conifer);
  color:#fff;
}
.mobile-navigation-wrapper,
.mobile-nav-header{background:var(--wl-night-0)}
.mobile-navigation-list a{color:rgba(246,244,236,.85)}

/* ---------------------------------------------------------------- *
 * Buttons (site-wide)
 * ---------------------------------------------------------------- */
.button,
button.button,
input[type="submit"],
a.button,
.pagination a.button,
.wp-element-button{
  border-radius:999px;
  font-family:'Karla',system-ui,sans-serif;
  font-weight:700;
  background-color:var(--wl-amber);
  color:#231603;
  box-shadow:0 6px 18px -6px var(--wl-amber-glow);
  transition:transform .15s ease,background .15s ease,box-shadow .15s ease;
}
.button:hover,
button.button:hover,
input[type="submit"]:hover,
a.button:hover{
  background-color:#F0AC49;
  color:#231603;
  transform:translateY(-1px);
}
.button.border,
a.button.border{
  background:transparent;
  border:1.5px solid var(--wl-conifer);
  color:var(--wl-conifer);
  box-shadow:none;
}
.button.border:hover,
a.button.border:hover{background:var(--wl-conifer);color:#fff}

/* ---------------------------------------------------------------- *
 * Split-map browse layout
 * ---------------------------------------------------------------- */
.fs-inner-container.content{background:var(--wl-birch)}
.fs-content{background:transparent}

/* Search panel above the results */
.fs-content section.search{
  background:linear-gradient(180deg,#0A1520 0%,#0E1E1E 60%,var(--wl-night-1) 100%);
  padding:30px 34px 26px;
  border-radius:0 0 var(--wl-radius) var(--wl-radius);
  margin:0 0 6px;
}
.fs-content section.search .main-search-input,
.fs-content section.search .main-search-inner{background:transparent}

.main-search-input{
  background:rgba(255,255,255,.06);
  border:1px solid rgba(246,244,236,.16);
  border-radius:var(--wl-radius);
  box-shadow:none;
  padding:8px;
}
.main-search-input-item,
.main-search-input-item input,
.main-search-input-item select{
  background:transparent;
  border-radius:10px;
  color:var(--wl-birch);
  font-family:'Karla',system-ui,sans-serif;
}
.main-search-input-item input::placeholder{color:rgba(246,244,236,.55)}
.main-search-input-item{border-color:rgba(246,244,236,.14)}
.main-search-input-item.location a i{color:var(--wl-amber)}

.main-search-input button.button,
.main-search-input input[type="submit"]{
  background:var(--wl-amber);
  color:#231603;
  border-radius:999px;
  font-weight:700;
}

/* Show/hide map toggle */
.show-map-button{
  background:var(--wl-conifer);
  color:#fff;
  border-radius:999px;
  font-family:'IBM Plex Mono',monospace;
  font-size:.85rem;
  letter-spacing:.08em;
  text-transform:uppercase;
  padding:9px 18px;
  border:none;
}
.show-map-button:hover{background:var(--wl-moss);color:#fff}

/* Filter / sort toolbar */
.panel-dropdown a,
.sort-by .sort-by-select .chosen-single,
.sort-by-select select,
.fs-switcher .layout-switcher a{
  background:#fff;
  border:1px solid var(--wl-line);
  border-radius:999px;
  color:var(--wl-ink-soft);
  font-family:'IBM Plex Mono',monospace;
  font-size:.85rem;
  letter-spacing:.04em;
}
.panel-dropdown a:hover,
.fs-switcher .layout-switcher a:hover{border-color:var(--wl-moss);color:var(--wl-ink)}
.panel-dropdown.active a{
  background:var(--wl-conifer);
  border-color:var(--wl-conifer);
  color:#fff;
}
.panel-dropdown-content{
  border-radius:var(--wl-radius);
  border:1px solid var(--wl-line);
  box-shadow:0 24px 50px -30px rgba(30,42,36,.45);
}
.panel-buttons .panel-apply,
.panel-buttons button.panel-apply{
  background:var(--wl-amber);
  color:#231603;
  border-radius:999px;
}
.panel-buttons .panel-cancel{color:var(--wl-ink-soft)}

/* Checkbox + range filter accents */
input[type="checkbox"],
input[type="radio"]{accent-color:var(--wl-conifer)}
.irs-bar,.irs-from,.irs-to,.irs-single{background:var(--wl-conifer)!important}
.irs-handle>i:first-child{background:var(--wl-amber)!important}

/* ---------------------------------------------------------------- *
 * Listing cards (the -nl card set)
 * ---------------------------------------------------------------- */
.listing-card-nl,
.listing-card-container-nl{
  border-radius:var(--wl-radius);
  border:1px solid var(--wl-line);
  background:#fff;
  overflow:hidden;
  transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease;
}
.listing-card-container-nl:hover,
.listing-card-nl:hover{
  transform:translateY(-4px);
  box-shadow:0 18px 40px -24px rgba(30,42,36,.35);
  border-color:var(--wl-moss);
}
.listing-image-container-nl,
.slider-image-nl{background:linear-gradient(170deg,#16292A,#122220)}

.listing-title-nl,
.listing-title-nl a{
  font-family:'Bricolage Grotesque','Karla',sans-serif;
  font-weight:700;
  color:var(--wl-ink);
  letter-spacing:-.01em;
}
.listing-title-nl a:hover{color:var(--wl-conifer)}
/* Card title sits between h4 and body size */
.listing-title-nl,
.listing-title-nl a{font-size:1.08rem;line-height:1.35}
/* .listing-location-nl / .listing-details-nl sizing lives in the Typography block */

.listing-category-tag-nl,
.title-badge-nl{
  background:var(--wl-amber);
  color:#231603;
  border-radius:999px;
  font-family:'IBM Plex Mono',monospace;
  font-size:.78rem;
  letter-spacing:.1em;
  text-transform:uppercase;
  font-weight:600;
}
.feature-tag-nl{
  background:var(--wl-mist);
  border:1px solid var(--wl-line);
  color:var(--wl-ink-soft);
  border-radius:999px;
  font-family:'IBM Plex Mono',monospace;
  font-size:.8rem;
  /* Listeo's own rule caps this pill at max-height:28px with flex-wrap:wrap
     and no overflow:hidden — a long custom-field value (e.g. a free-text
     capacity spec, or a checkbox label like "Recommended with a satellite
     kit rental: Yes") wraps to a second line that spills out below the
     clipped pill, unstyled, overlapping whatever comes after it. Cap the
     pill's width instead and ellipsize the text so it always stays on one
     visible line. */
  max-height:none;
  max-width:200px;
  flex-wrap:nowrap;
}
.feature-tag-nl > div[class^="single-property-detail-label-"],
.feature-tag-nl > span{
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  min-width:0;
}
/* Cards can carry far more custom fields than fit cleanly on a card — cap
   the visible row at 3 chips so it never crowds the price/rating sidebar. */
.listing-features-nl{row-gap:8px;margin-top:10px}
.listing-features-nl .feature-tag-nl:nth-child(n+4){display:none}
/* Listeo's sidebar column has no gap between the rating pill and the price,
   so dropping the "no reviews" pill (above) can leave the price sitting
   flush under the badges — give the stack breathing room either way. */
.details-sidebar-upper-nl{gap:8px}
.verified-icon-nl{color:var(--wl-moss)}
.favorite-icon-nl{color:var(--wl-amber-deep)}

.listing-rating-nl,
.rating-text-nl{
  font-family:'IBM Plex Mono',monospace;
  color:var(--wl-amber-deep);
  font-size:.8rem;
}
.no-rating{color:var(--wl-ink-soft)}
/* No rating yet reads as noise on a card grid — drop the pill entirely
   rather than print a "No reviews yet" placeholder. */
.listing-rating-nl:has(.no-rating){display:none}

/* Price + the weekly rate the child theme injects */
.listing-price-nl,
.price-nl,
.listing-item-content .listing-price{
  font-family:'IBM Plex Mono',monospace;
  color:var(--wl-amber-deep);
  font-weight:600;
}
.wl-card-weekly{
  display:block;
  font-family:'IBM Plex Mono',monospace;
  color:var(--wl-ink-soft);
  letter-spacing:.04em;
}

/* WilderLink meta rows Listeo prints in card details */
[class^="main-detail-_wl_"],
[class*=" main-detail-_wl_"]{
  font-family:'IBM Plex Mono',monospace;
  font-size:.82rem;
  color:var(--wl-ink-soft);
  letter-spacing:.03em;
}

/* ---------------------------------------------------------------- *
 * Map
 * ---------------------------------------------------------------- */
#map,.split-map{background:var(--wl-night-1)}
.marker-container{filter:drop-shadow(0 6px 14px rgba(12,25,23,.45))}
.marker-card .marker-arrow,
.marker-container .marker-card{border-radius:10px}
/* Listeo's default (non "no-icon") marker face is a plain white circle —
   brand it green at rest and amber on the hover/clicked flip, instead of
   leaving pins white against the map. */
.face.front{background-color:var(--wl-conifer);border-color:var(--wl-conifer);color:#fff}
.face.back{background-color:var(--wl-amber-deep);border-color:var(--wl-amber-deep);color:#fff}
.marker-arrow{border-top-color:var(--wl-conifer)}
.infoBox .listing-img-container{border-radius:10px 10px 0 0;overflow:hidden}
.infoBox{border-radius:12px;overflow:hidden;box-shadow:0 20px 44px -26px rgba(12,25,23,.6)}
.map-box h4 a{font-family:'Bricolage Grotesque',sans-serif;color:var(--wl-ink)}
.cluster div{
  background:var(--wl-conifer)!important;
  border-radius:999px!important;
  font-family:'IBM Plex Mono',monospace!important;
  color:#fff!important;
  box-shadow:0 0 0 6px rgba(47,90,65,.25);
}

/* ---------------------------------------------------------------- *
 * Single listing page
 * ---------------------------------------------------------------- */
/* Page titlebars.
   On most pages `#titlebar` wraps `.container`, so a dark background fills the
   viewport width. The SINGLE LISTING is different: its `#titlebar` sits *inside*
   `.container` (`.container.rental > .row > .listeo-grid-gallery-title`), so a
   background there renders as a floating dark band with white gutters. Listeo
   provides `.single-listing-page-titlebar` as the full-width layer instead, and
   the listing title area is kept light so the tabs and content below it stay
   legible. */
#titlebar{
  background:linear-gradient(180deg,#0A1520 0%,#0E1E1E 55%,var(--wl-night-1) 100%);
  color:var(--wl-birch);
}
/* `body #titlebar.gradient` is needed too: Listeo sets padding on that exact
   selector at (1,1,1) — the same specificity trap as elsewhere on this theme —
   so a plain `#titlebar{padding-top:10px}` here would lose on pages where the
   element carries the `.gradient` class (checkout, /profile/, etc). Tying the
   specificity and relying on this file loading after style.css is what wins. */
body #titlebar,
body #titlebar.gradient{padding-top:10px}
#titlebar h1,#titlebar h2,#titlebar span,#titlebar a{color:var(--wl-birch)}
#titlebar .listing-titlebar-title h1{font-weight:800;letter-spacing:-.015em}

/* Single listing — light title area */
.single-listing-page-titlebar{
  background:linear-gradient(180deg,var(--wl-mist) 0%,rgba(246,244,236,0) 100%);
  height:260px;
}
#titlebar.listing-titlebar{
  background:none;
  color:var(--wl-ink);
  padding:20px;
}
#titlebar.listing-titlebar h1,
#titlebar.listing-titlebar h2,
#titlebar.listing-titlebar .listing-titlebar-title h1{color:var(--wl-ink)}
#titlebar.listing-titlebar span,
#titlebar.listing-titlebar .listing-address a,
#titlebar.listing-titlebar .listing-titlebar-title span{color:var(--wl-ink-soft)}
/* Tag row — category / region / price as clean pills */
#titlebar.listing-titlebar .listing-titlebar-tags{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  margin-bottom:16px;
}
#titlebar.listing-titlebar .listing-titlebar-tags .listing-tag{
  display:inline-flex;
  align-items:center;
  gap:7px;
  background:#fff;
  border:1px solid var(--wl-line);
  border-radius:999px;
  padding:8px 16px;
  margin:0;
  font-size:.92rem;
  font-weight:600;
  line-height:1.2;
  color:var(--wl-ink-soft);
}
#titlebar.listing-titlebar .listing-tag a{
  color:var(--wl-amber-deep);
  font-weight:700;
}
#titlebar.listing-titlebar .listing-tag a:hover{color:var(--wl-conifer)}

/* The price pill keeps Listeo's layout: the icon is absolutely positioned at
   left:6px, and the span reserves room for it with padding-left. Switching this
   one to flex (as the tags above) pulled that padding away and the icon landed
   on top of the price. Keep the reserved space; restyle the chip and dot. */
#titlebar.listing-titlebar span.listing-pricing-tag{
  display:inline-block;
  position:relative;
  padding:0 18px 0 40px;
  margin:0;
  height:38px;
  line-height:38px;
  border-radius:999px;
  background:rgba(47,90,65,.09);
  border:1px solid rgba(47,90,65,.25);
  color:var(--wl-conifer);
  font-family:'IBM Plex Mono',monospace;
  font-weight:600;
}
#titlebar.listing-titlebar span.listing-pricing-tag i{
  position:absolute;
  top:50%;
  left:8px;
  transform:translateY(-50%);
  width:24px;
  height:24px;
  line-height:24px;
  font-size:11px;
  text-align:center;
  border-radius:50%;
  background:var(--wl-conifer);
  color:#fff;
}

/* Bookmark row — sits in the titlebar, not in a sidebar, so it must not pick up
   the boxed-widget card styling below. */
#titlebar.listing-titlebar .listing-share,
.listeo-grid-gallery-title .listing-share{
  background:none;
  border:none;
  box-shadow:none;
  padding:0;
  margin:18px 0 0;
  display:flex;
  align-items:center;
  gap:14px;
  flex-wrap:wrap;
}
.listing-share .like-button,
.listing-share .like-button-notlogged{
  display:inline-flex;
  align-items:center;
  gap:9px;
  background:#fff;
  border:1px solid var(--wl-line);
  border-radius:999px;
  padding:11px 20px;
  color:var(--wl-ink);
  font-weight:700;
  /* No font-size: <button> would otherwise fall back to the browser default
     (~13px) because form controls don't inherit, so the family and size are
     taken from the page instead. */
  font-family:inherit;
  font-size:inherit;
  cursor:pointer;
  box-shadow:none;
}
.listing-share .like-button:hover,
.listing-share .like-button-notlogged:hover{
  border-color:var(--wl-moss);
  color:var(--wl-conifer);
}
.listing-share .bookmark-btn-title{font-weight:700}
#bookmarks-counter{
  font-size:.9rem;
  color:var(--wl-ink-soft);
  white-space:normal;
}

#titlebar.listing-titlebar h1{
  font-size:clamp(1.9rem,3vw,2.5rem);
}
#titlebar.listing-titlebar .listing-address{
  display:inline-flex;
  align-items:center;
  gap:7px;
  font-size:1rem;
}
#titlebar.listing-titlebar .listing-address i{color:var(--wl-sage)}

/* Tabs */
.listing-nav li a{
  font-weight:700;
  padding-bottom:12px;
}
.listing-nav li a.active,
.listing-nav li a.current{
  color:var(--wl-amber-deep);
  border-bottom:2px solid var(--wl-amber);
  bottom:-2px;
}

/* Gallery tab hidden for now */
.listing-nav a[href="#listing-gallery"]{display:none}

.listing-nav-container,
.listing-nav{border-bottom:1px solid var(--wl-line)}
.listing-nav{margin:0}
#listing-overview.listing-section{margin-top:20px}
.listing-nav li a.current,
.listing-nav li a:hover{
  border-color:var(--wl-amber);
  color:var(--wl-ink);
}

/* Details grid (Listeo renders each custom field as
   <li><i check/><div label/><span value/></li>). Its defaults are a faded
   grey label above a mono value, both small; give it a proper spec-row look. */
ul.listing-details{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:0;
  list-style:none;
  background:var(--wl-mist);
  border:1px solid var(--wl-line);
  border-radius:var(--wl-radius);
  padding:8px 10px;
  margin:0 0 30px;
}
/* Listeo positions the check icon absolutely and reserves room for it with
   `padding-left:45px` on the <li> (style.css ~35168). Switching this to flex
   dropped that padding and the icon landed on top of the label — the same trap
   as the price pill. Keep the block layout and the reserved gutter. */
ul.listing-details li{
  display:block;
  position:relative;
  width:auto;
  float:none;
  padding:18px 18px 18px 62px;
  margin:0;
  border-right:1px solid var(--wl-line);
  border-bottom:1px solid var(--wl-line);
}
/* Open up the right-hand column and the final row */
ul.listing-details li:nth-child(3n){border-right:none}
ul.listing-details li:nth-last-child(-n+3){border-bottom:none}
ul.listing-details li i{
  position:absolute;
  top:18px;
  left:16px;
  width:34px;
  height:34px;
  line-height:34px;
  text-align:center;
  font-size:.85rem;
  color:var(--wl-conifer);
  background:rgba(47,90,65,.1);
  border-radius:50%;
}

@media (max-width:900px){
  ul.listing-details{grid-template-columns:1fr 1fr}
  ul.listing-details li:nth-child(3n){border-right:1px solid var(--wl-line)}
  ul.listing-details li:nth-child(2n){border-right:none}
}
@media (max-width:600px){
  ul.listing-details{grid-template-columns:1fr}
  ul.listing-details li{border-right:none}
}
ul.listing-details li div[class^="single-property-detail-label"],
ul.listing-details li div[class*=" single-property-detail-label"]{
  display:block;
  font-family:'IBM Plex Mono',monospace;
  font-size:.8rem;
  letter-spacing:.06em;
  text-transform:uppercase;
  color:var(--wl-ink-soft);
  margin-bottom:5px;
  line-height:1.3;
}
ul.listing-details li span{
  display:block;
  font-family:'Karla',system-ui,sans-serif;
  font-size:1.05rem;
  font-weight:700;
  line-height:1.35;
  color:var(--wl-ink);
  letter-spacing:0;
}

/* Section headings (Features, Pricing, Gallery, Resources).
   Listeo Core hardcodes `margin-top-70` on these in its template partials
   (e.g. templates/single-partials/single-listing-features.php:26), and the
   utility is `margin-top:70px !important` — so it overrides the 45px the
   heading itself asks for and leaves a large gap. Pull it back to the section
   rhythm; !important is required to beat the utility, and the extra class makes
   this more specific so it wins. */
.listing-desc-headline.margin-top-70{margin-top:44px !important}
.listing-desc-headline{
  font-weight:800;
  letter-spacing:-.01em;
  color:var(--wl-ink);
}

/* Verified badge — Listeo ships a bright #19b453 green */
.verified-badge{
  background-color:var(--wl-conifer);
  border-radius:999px;
  font-family:'Karla',system-ui,sans-serif;
  font-weight:700;
  letter-spacing:0;
}
.verified-icon{color:var(--wl-moss)}
.verified-icon-nl{color:var(--wl-moss)}

/* ================================================================ *
 * Single listing — sidebar booking card
 *
 * The sidebar is a widget area. wilderlink_listing_rate_card() prints the rate
 * block before the widgets and wilderlink_listing_verified_card() prints the
 * verified card after them, so the visual order is:
 *   rate block → Listeo booking widget → owner widget → verified card
 * The first two are joined into one card here; Listeo's own `.verified-badge`
 * pill is hidden because the card replaces it.
 * ================================================================ */
.listeo-single-listing-sidebar > .verified-badge{display:none}

.wl-rate-card{
  background:#fff;
  border:1px solid var(--wl-line);
  border-bottom:none;
  border-radius:var(--wl-radius) var(--wl-radius) 0 0;
  padding:26px 26px 20px;
}
.wl-rate-label{
  display:block;
  font-family:'Karla',system-ui,sans-serif;
  color:var(--wl-ink-soft);
  margin-bottom:2px;
}
.wl-rate-amount{
  font-family:'Bricolage Grotesque','Karla',sans-serif;
  font-size:2.5rem;
  font-weight:800;
  line-height:1.05;
  color:var(--wl-conifer);
  margin:0 0 4px;
  letter-spacing:-.02em;
}
.wl-rate-amount small{
  font-family:'Karla',system-ui,sans-serif;
  font-size:1.05rem;
  font-weight:500;
  color:var(--wl-ink-soft);
}
/* Mono runs visually smaller than Karla at the same size, so this sits a step
   above the body scale rather than below it. */
.wl-rate-ladder-line{
  font-family:'IBM Plex Mono',monospace;
  font-weight:500;
  line-height:1.5;
  color:var(--wl-ink);
  margin:0 0 20px;
}
.wl-rate-deposit{
  font-family:'Bricolage Grotesque','Karla',sans-serif;
  font-size:1.5rem;
  font-weight:800;
  color:var(--wl-ink);
  margin:0;
  letter-spacing:-.01em;
}
.wl-rate-deposit--none{color:var(--wl-moss)}
.wl-rate-head > .wl-rate-label + .wl-rate-amount + .wl-rate-ladder-line + .wl-rate-label,
.wl-rate-head .wl-rate-label ~ .wl-rate-label{margin-top:18px}

.wl-rate-facts{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:16px;
  margin-top:22px;
  padding-top:20px;
  border-top:1px solid var(--wl-line);
}
.wl-fact{display:flex;gap:10px;align-items:flex-start}
.wl-fact-icon{
  flex:none;
  width:34px;height:34px;
  border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  background:var(--wl-mist);
  color:var(--wl-conifer);
}
.wl-fact-text{display:block;min-width:0}
.wl-fact-text b{
  display:block;
  font-weight:700;
  color:var(--wl-ink);
  line-height:1.3;
}
.wl-fact-text i{
  display:block;
  font-style:normal;
  color:var(--wl-ink-soft);
  margin-top:1px;
}

/* Listeo's booking output becomes the lower half of that card. It renders two
   different ways: signed-in visitors get the full `.booking-widget` wrapper
   (calendar + form), while signed-out visitors get only the bare
   `#booking-widget-anchor` row holding a "Login to Book" button. Both have to
   close the card, so each is styled as the continuation when it is a direct
   child of the sidebar — and `#booking-widget-anchor` is reset when it appears
   *inside* the widget, where card styling would nest a second box. */
/* With Booking Plus active the signed-in widget is NOT Listeo Core's
   `.booking-widget` — LBP renders its own `.lbp-bpw` block (price header, week
   strip, Check Availability). Selectors that only targeted `.booking-widget`
   silently missed it, which left two separate cards, a duplicated price and an
   unbranded button. */
.listeo-single-listing-sidebar > .lbp-bpw,
.listeo-single-listing-sidebar > .listing-widget.booking-widget,
.listeo-single-listing-sidebar > .booking-widget,
.listeo-single-listing-sidebar > #booking-widget-anchor{
  background:#fff;
  border:1px solid var(--wl-line);
  border-top:none;
  border-radius:0 0 var(--wl-radius) var(--wl-radius);
  padding:20px 26px 26px;
  margin:0 0 26px;
  box-shadow:0 24px 50px -38px rgba(30,42,36,.45);
}
.listeo-single-listing-sidebar .booking-widget > h4:first-child,
.listeo-single-listing-sidebar .booking-widget > .widget-title{display:none}
/* Nested inside the widget — plain row, the wrapper already draws the card. */
.listeo-single-listing-sidebar .booking-widget #booking-widget-anchor{
  background:none;
  border:none;
  box-shadow:none;
  padding:0;
  margin:0;
  border-radius:0;
}
.listeo-single-listing-sidebar .booking-widget .button,
.listeo-single-listing-sidebar #booking-widget-anchor .button{
  width:100%;
  text-align:center;
  background:var(--wl-conifer);
  color:#fff;
  border-radius:12px;
  padding:15px 20px;
  box-shadow:none;
}
.listeo-single-listing-sidebar #booking-widget-anchor .button:hover,
.listeo-single-listing-sidebar .booking-widget .button:hover,
.listeo-single-listing-sidebar #booking-widget-anchor .button:hover{
  background:var(--wl-moss);
  color:#fff;
}
/* Both booking widgets repeat the price at the top; the rate block above
   already states it (and in the listing's own unit), so hide the duplicate. */
.listeo-single-listing-sidebar .lbp-bpw__header,
.listeo-single-listing-sidebar .booking-widget .listing-price,
.listeo-single-listing-sidebar .booking-widget > .price,
.listeo-single-listing-sidebar .booking-widget .booking-widget-price{display:none}

/* ---- Booking Plus widget ---- */
.listeo-single-listing-sidebar .lbp-bpw-btn,
.listeo-single-listing-sidebar .lbp-bpw-btn.lbp-book-now-btn{
  width:100%;
  display:block;
  text-align:center;
  background:var(--wl-conifer);
  color:#fff;
  border:none;
  border-radius:12px;
  padding:15px 20px;
  font-family:'Karla',system-ui,sans-serif;
  font-weight:700;
  box-shadow:none;
}
.listeo-single-listing-sidebar .lbp-bpw-btn:hover{background:var(--wl-moss);color:#fff}

.listeo-single-listing-sidebar .lbp-bpw-week{
  display:flex;
  gap:8px;
  flex-wrap:nowrap;
  margin-bottom:16px;
}
.listeo-single-listing-sidebar .lbp-bpw-week__day{
  flex:1 1 0;
  min-width:0;
  text-align:center;
  padding:10px 2px;
  border:1px solid var(--wl-line);
  border-radius:10px;
  background:#fff;
  color:var(--wl-ink);
  text-decoration:none;
  transition:border-color .15s ease,background .15s ease;
}
.listeo-single-listing-sidebar .lbp-bpw-week__day:hover{
  border-color:var(--wl-moss);
  background:var(--wl-mist);
}
.listeo-single-listing-sidebar .lbp-bpw-week__dow{
  display:block;
  font-family:'IBM Plex Mono',monospace;
  letter-spacing:.06em;
  text-transform:uppercase;
  color:var(--wl-ink-soft);
}
.listeo-single-listing-sidebar .lbp-bpw-week__num{
  display:block;
  font-weight:700;
  color:var(--wl-ink);
}
.listeo-single-listing-sidebar .lbp-bpw-week__dot{
  display:block;
  width:6px;height:6px;
  margin:5px auto 0;
  border-radius:50%;
  background:var(--wl-moss);
}
.listeo-single-listing-sidebar .lbp-bpw-tag{
  display:inline-block;
  background:rgba(47,90,65,.1);
  border:1px solid rgba(47,90,65,.24);
  color:var(--wl-conifer);
  border-radius:999px;
  padding:6px 14px;
  margin-bottom:16px;
  font-weight:600;
}
.listeo-single-listing-sidebar .lbp-bpw__note{
  text-align:center;
  color:var(--wl-ink-soft);
  margin:12px 0 0;
}

/* Verified card */
.wl-verified-card{
  display:flex;
  gap:14px;
  align-items:flex-start;
  background:rgba(47,90,65,.07);
  border:1px solid rgba(47,90,65,.22);
  border-radius:var(--wl-radius);
  padding:20px 22px;
  margin-bottom:26px;
}
.wl-verified-icon{flex:none;color:var(--wl-conifer);margin-top:1px}
.wl-verified-card b{
  display:block;
  font-family:'Bricolage Grotesque','Karla',sans-serif;
  color:var(--wl-ink);
  margin-bottom:4px;
}
.wl-verified-card p{
  margin:0;
  line-height:1.5;
  color:var(--wl-ink-soft);
}

.boxed-widget,
.booking-widget,
.listing-share,
.sidebar-textbox{
  border-radius:var(--wl-radius);
  border:1px solid var(--wl-line);
  background:#fff;
  box-shadow:0 24px 50px -34px rgba(30,42,36,.4);
}
.boxed-widget h3{
  font-family:'Bricolage Grotesque',sans-serif;
  color:var(--wl-ink);
}
.booking-widget .panel-dropdown a{border-radius:10px}

/* Star ratings / review blocks */
.star-rating .rating-score,
.numerical-rating{
  background:var(--wl-conifer);
  border-radius:8px;
  font-family:'IBM Plex Mono',monospace;
}
.comment .avatar{border-radius:50%}

/* ---------------------------------------------------------------- *
 * Account page (/profile/, /login/, password reset)
 *
 * Listeo renders login + register as a narrow tabbed card inside a
 * right-sidebar grid. The sidebar is empty on these pages, so the card is
 * recentred and restyled to match the mockup's .form-panel.
 * `.wl-account-page` is added by wilderlink_account_body_class().
 * ---------------------------------------------------------------- */
.wl-account-page #titlebar.gradient,
.wl-account-page #titlebar{
  background:linear-gradient(180deg,#0A1520 0%,#0E1E1E 55%,var(--wl-night-1) 100%);
}
.wl-account-page #titlebar h1{
  font-weight:800;
  letter-spacing:-.015em;
  color:var(--wl-birch);
}
.wl-account-page #breadcrumbs ul li,
.wl-account-page #breadcrumbs ul li a{
  color:rgba(154,180,155,.9);
  font-family:'IBM Plex Mono',monospace;
  font-size:.84rem;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.wl-account-page #breadcrumbs ul li a:hover{color:#fff}

/* Drop the empty sidebar column and centre the card.
   Listeo renders it as <div class="sidebar right …"> inside .container.right-sidebar. */
.wl-account-page .sidebar.right,
.wl-account-page .container.right-sidebar .sidebar,
.wl-account-page .container.right-sidebar > .row > aside{display:none}
.wl-account-page article[class*="col-"]{
  width:100%;
  max-width:none;
  flex:0 0 100%;
  padding-right:15px;
}
.wl-account-page .sign-in-form{
  float:none;
  margin:0 auto 60px;
  width:100%;
  max-width:520px;
  left:auto;
}

/* The card itself */
.wl-account-page .sign-in-form.style-1 .tabs-container,
.wl-account-page .sign-in-form .tabs-container.alt{
  background:#fff;
  border:1px solid var(--wl-line);
  border-radius:var(--wl-radius);
  box-shadow:0 26px 60px -38px rgba(30,42,36,.45);
  padding:30px 30px 26px;
}

/* Tabs */
.wl-account-page .tabs-nav{
  display:flex;
  gap:10px;
  border:none;
  margin-bottom:16px;
  padding:0;
  list-style:none;
}
.wl-account-page .tabs-nav li{
  flex:1;
  border:none;
  margin:0;
  background:transparent;
}
.wl-account-page .tabs-nav li a{
  display:block;
  text-align:center;
  padding:12px 10px;
  border:1.5px solid var(--wl-line);
  border-radius:999px;
  background:#fff;
  color:var(--wl-ink-soft);
  font-family:'Karla',system-ui,sans-serif;
  font-weight:700;
  transition:border-color .15s ease,color .15s ease,background .15s ease;
}
.wl-account-page .tabs-nav li a:hover{border-color:var(--wl-moss);color:var(--wl-ink)}
.wl-account-page .tabs-nav li.active a{
  background:var(--wl-conifer);
  border-color:var(--wl-conifer);
  color:#fff;
}

/* Guest / Owner role picker */
.wl-account-page .account-type{
  display:flex;
  gap:12px;
  margin:0 0 20px;
  flex-wrap:wrap;
}
.wl-account-page .account-type > div{flex:1 1 150px}
.wl-account-page .account-type input[type="radio"]{
  position:absolute;
  opacity:0;
  pointer-events:none;
}
.wl-account-page .account-type label{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  width:100%;
  margin:0;
  padding:13px 14px;
  border:1.5px solid var(--wl-line);
  border-radius:12px;
  background:#fff;
  color:var(--wl-ink-soft);
  font-weight:700;
  cursor:pointer;
  transition:border-color .15s ease,color .15s ease,background .15s ease;
}
.wl-account-page .account-type label:hover{border-color:var(--wl-moss);color:var(--wl-ink)}
.wl-account-page .account-type input[type="radio"]:checked + label{
  border-color:var(--wl-amber);
  background:rgba(233,161,59,.1);
  color:var(--wl-amber-deep);
}
.wl-account-page .account-type input[type="radio"]:focus-visible + label{
  outline:3px solid var(--wl-amber);
  outline-offset:2px;
}

/* Inputs — Listeo wraps each in <label><i icon><input></label> */
.wl-account-page .form-row{margin-bottom:14px}
.wl-account-page .sign-in-form label{position:relative;display:block;margin:0}
.wl-account-page .sign-in-form label > i{
  position:absolute;
  left:14px;
  top:50%;
  transform:translateY(-50%);
  color:var(--wl-sage);
  font-size:1rem;
  pointer-events:none;
  z-index:2;
}
.wl-account-page .sign-in-form input.input-text,
.wl-account-page .sign-in-form input[type="text"],
.wl-account-page .sign-in-form input[type="email"],
.wl-account-page .sign-in-form input[type="password"],
.wl-account-page .sign-in-form input[type="tel"]{
  width:100%;
  padding:13px 14px 13px 42px;
  border:1px solid var(--wl-line);
  border-radius:10px;
  background:#fff;
  font-family:inherit;
  font-size:inherit;
  color:var(--wl-ink);
  margin:0;
}
.wl-account-page .sign-in-form input:focus{
  border-color:var(--wl-amber);
  box-shadow:0 0 0 3px rgba(233,161,59,.18);
  outline:none;
}

/* Submit — Listeo marks these .button.border; the account CTA should be solid */
.wl-account-page .sign-in-form input[type="submit"],
.wl-account-page .sign-in-form input[type="submit"].button.border,
.wl-account-page .sign-in-form button[type="submit"]{
  width:100%;
  margin-top:6px;
  padding:14px 24px;
  border:none;
  border-radius:999px;
  background:var(--wl-amber);
  color:#231603;
  font-family:inherit;
  font-weight:700;
  font-size:inherit;
  box-shadow:0 6px 18px -6px var(--wl-amber-glow);
  cursor:pointer;
}
.wl-account-page .sign-in-form input[type="submit"]:hover,
.wl-account-page .sign-in-form button[type="submit"]:hover{
  background:#F0AC49;
  color:#231603;
  transform:translateY(-1px);
}

.wl-account-page .lost_password{
  display:block;
  margin-top:10px;
  font-size:.95rem;
}
.wl-account-page .lost_password a{color:var(--wl-ink-soft)}
.wl-account-page .lost_password a:hover{color:var(--wl-amber-deep)}
.wl-account-page .checkboxes label{
  font-size:1rem;
  color:var(--wl-ink-soft);
  font-weight:400;
}
.wl-account-page .notification{
  border-radius:12px;
  font-size:1rem;
}
.wl-account-page .notification.error{
  background:rgba(180,68,42,.08);
  border:1px solid rgba(180,68,42,.35);
  color:#8E3520;
}
.wl-account-page .notification.success{
  background:rgba(47,90,65,.08);
  border:1px solid rgba(47,90,65,.35);
  color:var(--wl-conifer);
}

/* Logged-in account screens (my-account, change password) */
.wl-account-page .my-account-container,
.wl-account-page .dashboard-list-box{
  border-radius:var(--wl-radius);
  border:1px solid var(--wl-line);
  background:#fff;
}
.wl-account-page .dashboard-list-box .headline{
  background:var(--wl-mist);
  border-bottom:1px solid var(--wl-line);
  font-family:'Bricolage Grotesque',sans-serif;
  color:var(--wl-ink);
}

@media (max-width:600px){
  .wl-account-page .account-type > div{flex-basis:100%}
  .wl-account-page .sign-in-form.style-1 .tabs-container,
  .wl-account-page .sign-in-form .tabs-container.alt{padding:22px 20px}
}

/* ---------------------------------------------------------------- *
 * Checkout — "Pay for order"
 *
 * Listeo's own template (themes/listeo/woocommerce/checkout/form-pay.php,
 * NOT WooCommerce core's) renders the live Stripe payment form, so it is left
 * completely alone — everything here is CSS plus the additive hooks in
 * inc/wilderlink-checkout.php. Real classes/markup were pulled from a live
 * order before writing this; the notable ones:
 *   #order_review.listeo-pay-form > table.shop_table  — item + totals table,
 *     the only structural container around the order — styled AS the summary
 *     card rather than wrapped in one.
 *   .listeo-order-breakdown-label / -amount            — Listeo hardcodes
 *     `style="color:#666"` etc. INLINE on these, which beats any plain
 *     stylesheet rule; overriding needs `!important`.
 *   #payment > .wc_payment_methods                     — gateway list.
 *   #place_order                                       — submit button,
 *     already amber from the site-wide `.button` rule.
 * ---------------------------------------------------------------- */

/* Titlebar: same dark-hero treatment as the other account-style screens.
   `body.woocommerce-order-pay #titlebar.gradient` (2 classes) is required to
   beat Listeo's own `#titlebar.gradient` (1 class) — the same specificity trap
   documented in the Header section above. */
body.woocommerce-order-pay #titlebar.gradient,
body.woocommerce-order-pay #titlebar{
  background:linear-gradient(180deg,#0A1520 0%,#0E1E1E 55%,var(--wl-night-1) 100%);
}
body.woocommerce-order-pay #titlebar h1{
  display:flex;
  align-items:center;
  gap:14px;
  color:var(--wl-birch);
  font-weight:800;
}
body.woocommerce-order-pay #titlebar h1::before{
  content:"";
  flex:none;
  width:44px;height:44px;
  border-radius:50%;
  background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20' fill='none'%3E%3Crect x='2.5' y='5' width='15' height='11' rx='2' stroke='%232F5A41' stroke-width='1.6'/%3E%3Cpath d='M2.5 8.5h15' stroke='%232F5A41' stroke-width='1.6'/%3E%3C/svg%3E") center/20px no-repeat;
}
body.woocommerce-order-pay #breadcrumbs ul li,
body.woocommerce-order-pay #breadcrumbs ul li a{
  color:rgba(154,180,155,.9);
}
body.woocommerce-order-pay #breadcrumbs ul li a:hover{color:#fff}

/* Page background + centred column */
body.woocommerce-order-pay .woocommerce{
  max-width:760px;
  margin:0 auto;
  padding:0 20px 80px;
}

/* Section heading injected above the order table */
.wl-pay-section-head{
  display:flex;
  align-items:center;
  gap:10px;
  margin-bottom:16px;
}
.wl-pay-section-icon{
  flex:none;
  width:34px;height:34px;
  border-radius:10px;
  display:flex;align-items:center;justify-content:center;
  background:rgba(233,161,59,.14);
  color:var(--wl-amber-deep);
}
.wl-pay-section-head h2{font-size:2rem;font-weight:800;margin:0}

/* The order table IS the summary card */
#order_review.listeo-pay-form{display:block}
#order_review.listeo-pay-form table.shop_table{
  width:100%;
  border-collapse:separate;
  border-spacing:0;
  background:#fff;
  border:1px solid var(--wl-line);
  border-radius:var(--wl-radius);
  box-shadow:0 24px 50px -38px rgba(30,42,36,.35);
  overflow:hidden;
  margin-bottom:28px;
}
/* Column headers add nothing a receipt-style card needs. */
#order_review.listeo-pay-form table.shop_table thead{
  position:absolute;
  width:1px;height:1px;
  overflow:hidden;
  clip:rect(0,0,0,0);
  white-space:nowrap;
}
#order_review.listeo-pay-form table.shop_table tbody td{
  border:none;
  padding:22px 24px;
  vertical-align:top;
}
#order_review.listeo-pay-form table.shop_table tr.order_item{border-bottom:1px solid var(--wl-line)}
#order_review.listeo-pay-form td.product-quantity,
#order_review.listeo-pay-form td.product-subtotal{
  text-align:right;
  font-family:'IBM Plex Mono',monospace;
  color:var(--wl-ink-soft);
  white-space:nowrap;
}
#order_review.listeo-pay-form td.product-subtotal{
  color:var(--wl-ink);
  font-weight:700;
}

/* Thumbnail + title, injected via woocommerce_order_item_meta_start */
.wl-order-item-media{display:flex;gap:16px;align-items:flex-start;margin-top:12px}
.wl-order-item-thumb{
  flex:none;
  width:72px;height:72px;
  border-radius:10px;
  overflow:hidden;
  background:var(--wl-mist);
  border:1px solid var(--wl-line);
}
.wl-order-item-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.wl-order-item-text{display:flex;flex-direction:column;gap:6px;min-width:0}
.wl-order-item-place,
.wl-order-item-ref{
  display:inline-flex;
  align-items:center;
  gap:6px;
  color:var(--wl-ink-soft);
}
.wl-order-item-place{font-size:.9rem}
.wl-order-item-ref{font-size:1rem}
.wl-order-item-ref b{
  font-family:'IBM Plex Mono',monospace;
  color:var(--wl-conifer);
  background:rgba(47,90,65,.09);
  border-radius:999px;
  padding:2px 10px;
  font-weight:600;
}

/* Item name + booking meta list */
td.product-name > a,
td.product-name{
  font-weight:700;
  color:var(--wl-ink);
  font-size:1.05rem;
}
.inner-booking-list{
  margin-top:10px;
  padding-top:10px;
  border-top:1px dashed var(--wl-line);
  font-size:1rem;
  color:var(--wl-ink);
}
.inner-booking-list:first-of-type{border-top:none;padding-top:0}
.inner-booking-list h5{
  display:inline-flex;
  align-items:center;
  gap:6px;
  font-family:'IBM Plex Mono',monospace;
  font-size:1rem;
  letter-spacing:.06em;
  text-transform:uppercase;
  color:var(--wl-ink-soft);
  font-weight:600;
  margin:0 0 3px;
}
.inner-booking-list h5::before{
  content:"";
  width:12px;height:12px;
  background:var(--wl-sage) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12' fill='none'%3E%3Crect x='1.5' y='2.5' width='9' height='8' rx='1' stroke='white' stroke-width='1.1'/%3E%3Cpath d='M1.5 5h9' stroke='white' stroke-width='1.1'/%3E%3C/svg%3E") center/8px no-repeat;
  border-radius:3px;
  flex:none;
}
.inner-booking-list .booking-list{list-style:none;margin:0;padding:0}
.inner-booking-list .booking-list li{padding:0}

/* Listeo hardcodes `style="font-size:13px"` on the parent <ul> and colours on
   the <li> — !important is required to win, and the size is restated on the
   label/amount spans directly rather than left to inherit from the <li>, so a
   future rule on either parent can't quietly shrink these again. */
.listeo-order-breakdown-line{
  color:var(--wl-ink-soft) !important;
  font-size:.92rem !important;
}
.listeo-order-breakdown-label,
.listeo-order-breakdown-label small,
.listeo-order-breakdown-amount{
  font-size:1.2rem !important;
}
.listeo-order-breakdown-label small{color:var(--wl-ink-soft) !important}
.listeo-order-breakdown-amount{
  color:var(--wl-ink) !important;
  font-family:'IBM Plex Mono',monospace;
}

/* Totals footer */
#order_review.listeo-pay-form table.shop_table tfoot{background:var(--wl-mist)}
#order_review.listeo-pay-form table.shop_table tfoot tr th,
#order_review.listeo-pay-form table.shop_table tfoot tr td{
  border:none;
  border-top:1px solid var(--wl-line);
  padding:14px 24px;
  font-weight:600;
  color:var(--wl-ink);
  text-align:right;
}
#order_review.listeo-pay-form table.shop_table tfoot tr th{text-align:left;font-weight:600}
#order_review.listeo-pay-form table.shop_table tfoot tr:last-child th,
#order_review.listeo-pay-form table.shop_table tfoot tr:last-child td{
  font-size:1.35rem;
  font-weight:800;
  color:var(--wl-conifer);
  padding-top:16px;
  padding-bottom:18px;
}
#order_review.listeo-pay-form table.shop_table tfoot tr:last-child{border-top:2px solid var(--wl-line)}

/* Payment methods card */
body.woocommerce-order-pay #payment{
  background:#fff;
  border:1px solid var(--wl-line);
  border-radius:var(--wl-radius);
  padding:24px;
  box-shadow:0 24px 50px -38px rgba(30,42,36,.35);
}
body.woocommerce-order-pay .wc_payment_methods.payment_methods.methods{
  list-style:none;
  margin:0 0 4px;
  padding:0;
}
body.woocommerce-order-pay .wc_payment_methods .wc_payment_method{
  border:1.5px solid var(--wl-line);
  border-radius:12px;
  padding:14px 16px;
  margin-bottom:10px;
  transition:border-color .15s ease,background .15s ease;
}
body.woocommerce-order-pay .wc_payment_methods .wc_payment_method:has(input:checked){
  border-color:var(--wl-amber);
  background:rgba(233,161,59,.06);
}
body.woocommerce-order-pay .wc_payment_methods .wc_payment_method label{
  display:flex;
  align-items:center;
  gap:10px;
  font-weight:700;
  color:var(--wl-ink);
  cursor:pointer;
}
/* Listeo's own theme CSS (style.css) sets
   `#payment ul.payment_methods li img{position:absolute;right:18px;...}`. That
   selector carries an ID, which outranks any class-based selector regardless
   of how many classes it has, so it wins over the rule above no matter what.
   With no positioned ancestor to anchor to, the card-brand icons were pulled
   out of the card entirely and pinned to the right edge of the viewport.
   `#payment` is a real ID here too, so matching it (rather than relying on
   `!important`) is what reliably wins. */
#payment ul.payment_methods li img{
  position:static;
  display:inline-block;
  max-width:none;
  max-height:none;
  height:22px;
  width:auto;
  margin:0 0 0 auto;
}
body.woocommerce-order-pay .wc_payment_methods .payment_box{
  margin-top:14px;
  padding-top:14px;
  border-top:1px dashed var(--wl-line);
}
#payment div.payment_box p:last-child{margin-top:5px}

/* Secure-checkout trust panel, injected before the submit button */
.wl-secure-trust{
  display:flex;
  align-items:flex-start;
  gap:14px;
  flex-wrap:wrap;
  background:var(--wl-mist);
  border-radius:12px;
  padding:18px 20px;
  margin:20px 0 16px;
}
.wl-secure-trust-icon{flex:none;color:var(--wl-conifer)}
.wl-secure-trust-text{flex:1 1 220px;min-width:0}
.wl-secure-trust-text b{display:block;color:var(--wl-ink);font-size:.98rem;margin-bottom:3px}
.wl-secure-trust-text p{margin:0;color:var(--wl-ink-soft);font-size:1rem;line-height:1.5}
.wl-secure-trust-badges{
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
  flex:none;
}
.wl-badge{
  display:inline-flex;
  align-items:center;
  gap:6px;
  font-family:'IBM Plex Mono',monospace;
  font-size:.78rem;
  letter-spacing:.05em;
  color:var(--wl-ink-soft);
  background:#fff;
  border:1px solid var(--wl-line);
  border-radius:999px;
  padding:5px 10px;
}
.wl-badge-cards{gap:8px}
.wl-badge-cards span{color:var(--wl-ink-soft);font-weight:600}

.wl-pay-reassurance{
  display:flex;
  align-items:flex-start;
  gap:7px;
  font-size:1rem;
  color:var(--wl-ink-soft);
  margin:0 0 18px;
  line-height:1.5;
}
.wl-pay-reassurance svg{flex:none;margin-top:2px;color:var(--wl-sage)}

/* Submit button + terms */
body.woocommerce-order-pay .form-row #place_order{
  width:100%;
  padding:16px 20px;
  font-size:1.05rem;
}
body.woocommerce-order-pay .woocommerce-terms-and-conditions-wrapper,
body.woocommerce-order-pay .woocommerce-privacy-policy-text{
  font-size:.84rem;
  color:var(--wl-ink-soft);
  margin-bottom:14px;
}
body.woocommerce-order-pay .woocommerce-privacy-policy-text a{color:var(--wl-conifer)}

@media (max-width:600px){
  #order_review.listeo-pay-form table.shop_table tbody td{padding:18px}
  .wl-order-item-media{flex-direction:column}
  .wl-secure-trust{flex-direction:column}
}

/* ---------------------------------------------------------------- *
 * Order received / "Thank you"
 *
 * themes/listeo-child/woocommerce/checkout/thankyou.php is a FULL override
 * (safe here — unlike form-pay.php this page has no live payment SDK mounted,
 * it's pure confirmation display) so every class below is our own; no
 * specificity fights with Listeo or WooCommerce core CSS to work around.
 * ---------------------------------------------------------------- */
body.woocommerce-order-received #titlebar.gradient,
body.woocommerce-order-received #titlebar{
  background:linear-gradient(180deg,#0A1520 0%,#0E1E1E 55%,var(--wl-night-1) 100%);
}
body.woocommerce-order-received #titlebar h1{
  display:flex;
  align-items:center;
  gap:14px;
  color:var(--wl-birch);
  font-weight:800;
}
body.woocommerce-order-received #titlebar h1::before{
  content:"";
  flex:none;
  width:44px;height:44px;
  border-radius:50%;
  background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20' fill='none'%3E%3Cpath d='M4 10.5 8 14.5 16 5.5' stroke='%232F5A41' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/20px no-repeat;
}
body.woocommerce-order-received #breadcrumbs ul li,
body.woocommerce-order-received #breadcrumbs ul li a{color:rgba(154,180,155,.9)}
body.woocommerce-order-received #breadcrumbs ul li a:hover{color:#fff}
body.woocommerce-order-received .woocommerce{
  max-width:760px;
  margin:0 auto;
  padding:0 20px 80px;
}

.wl-thankyou{display:flex;flex-direction:column;gap:24px}

/* Hero: congratulations + "what's next", in the mist-green success tint
   rather than the reference's purple gradient, matching the brand palette. */
.wl-thankyou-hero{
  display:grid;
  grid-template-columns:auto 1fr;
  grid-template-rows:auto auto;
  gap:6px 20px;
  background:linear-gradient(135deg,rgba(47,90,65,.09),rgba(154,180,155,.14));
  border:1px solid rgba(47,90,65,.2);
  border-radius:var(--wl-radius);
  padding:28px 30px;
}
.wl-thankyou-check{
  grid-row:1 / 3;
  width:64px;height:64px;
  border-radius:50%;
  background:var(--wl-conifer);
  display:flex;align-items:center;justify-content:center;
  flex:none;
}
.wl-thankyou-hero-text h2{
  font-size:1.9rem;
  font-weight:800;
  color:var(--wl-conifer);
  margin:0 0 4px;
}
.wl-thankyou-hero-text p{margin:0 0 4px;color:var(--wl-ink);font-weight:600}
.wl-thankyou-hero-sub{color:var(--wl-ink-soft) !important;font-weight:400 !important;font-size:.95rem}
.wl-thankyou-hero-next{
  grid-column:1 / 3;
  display:flex;
  gap:12px;
  align-items:flex-start;
  margin-top:14px;
  padding-top:18px;
  border-top:1px solid rgba(47,90,65,.18);
}
.wl-thankyou-hero-next-icon{
  flex:none;
  width:34px;height:34px;
  border-radius:50%;
  background:#fff;
  color:var(--wl-conifer);
  display:flex;align-items:center;justify-content:center;
}
.wl-thankyou-hero-next b{display:block;color:var(--wl-ink);margin-bottom:2px}
.wl-thankyou-hero-next p{margin:0;color:var(--wl-ink-soft);font-size:.92rem}

/* Shared card shell, reusing the section-head style from the payment page */
.wl-thankyou-card{
  background:#fff;
  border:1px solid var(--wl-line);
  border-radius:var(--wl-radius);
  padding:26px;
  box-shadow:0 24px 50px -38px rgba(30,42,36,.35);
}
.wl-thankyou-card .wl-pay-section-head{margin-bottom:20px}

/* Order summary fact grid */
.wl-thankyou-facts{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:18px 24px;
}
.wl-thankyou-facts .wl-fact-icon{
  width:32px;height:32px;
  border-radius:8px;
  background:var(--wl-mist);
  color:var(--wl-conifer);
  font-family:'IBM Plex Mono',monospace;
  font-weight:700;
  font-size:.9rem;
}
.wl-thankyou-facts .wl-fact-text i{
  font-style:normal;
  font-size:.98rem;
  color:var(--wl-ink);
}
.wl-thankyou-facts .wl-fact-text b{
  font-size:.78rem;
  text-transform:uppercase;
  letter-spacing:.06em;
  font-family:'IBM Plex Mono',monospace;
  color:var(--wl-ink-soft);
  font-weight:600;
}
.wl-fact-total .wl-fact-icon{background:rgba(233,161,59,.15);color:var(--wl-amber-deep)}
.wl-fact-total-amount{
  color:var(--wl-conifer) !important;
  font-family:'IBM Plex Mono',monospace;
  font-weight:700;
  font-size:1.15rem !important;
}

/* Rental item row */
.wl-thankyou-item{
  display:flex;
  gap:16px;
  align-items:flex-start;
  flex-wrap:wrap;
}
.wl-thankyou-item .wl-order-item-thumb{width:90px;height:90px}
.wl-thankyou-item-text{flex:1 1 220px;min-width:0}
.wl-thankyou-item-text h3{font-size:1.08rem;font-weight:700;color:var(--wl-ink);margin:0 0 8px}
.wl-thankyou-item-text .wl-order-item-place{display:flex;margin-bottom:5px;font-size:.9rem}
.wl-thankyou-item-total{
  flex:none;
  text-align:right;
  margin-left:auto;
}
.wl-fact-text-label{
  display:block;
  font-family:'IBM Plex Mono',monospace;
  font-size:.72rem;
  letter-spacing:.06em;
  text-transform:uppercase;
  color:var(--wl-ink-soft);
  margin-bottom:3px;
}
.wl-thankyou-item-total b{font-size:1.1rem;color:var(--wl-ink)}

.wl-thankyou-billing{margin:0;color:var(--wl-ink);line-height:1.7}
.wl-thankyou-billing b{font-size:1.02rem}

/* Need-help band */
.wl-thankyou-help{
  display:flex;
  align-items:center;
  gap:18px;
  flex-wrap:wrap;
  background:var(--wl-mist);
  border-radius:var(--wl-radius);
  padding:22px 26px;
}
.wl-thankyou-help-icon{flex:none;color:var(--wl-conifer)}
.wl-thankyou-help-text{flex:1 1 220px;min-width:0}
.wl-thankyou-help-text b{display:block;font-size:1.05rem;color:var(--wl-ink);margin-bottom:3px}
.wl-thankyou-help-text p{margin:0;color:var(--wl-ink-soft);font-size:.92rem}
.wl-thankyou-help-actions{display:flex;gap:10px;flex:none;flex-wrap:wrap}
.wl-thankyou-help-actions .button{
  display:inline-flex;
  align-items:center;
  gap:7px;
  white-space:nowrap;
}

/* Trust strip */
.wl-thankyou-trust{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:20px;
  padding-top:6px;
}
.wl-thankyou-trust-item{display:flex;gap:10px;align-items:flex-start}
.wl-thankyou-trust-item span{flex:none;color:var(--wl-sage)}
.wl-thankyou-trust-item b{display:block;font-size:.92rem;color:var(--wl-ink);margin-bottom:2px}
.wl-thankyou-trust-item p{margin:0;font-size:.82rem;color:var(--wl-ink-soft)}

/* Failed-order fallback, still styled to match */
.wl-order-failed{
  background:rgba(180,68,42,.07);
  border:1px solid rgba(180,68,42,.3);
  border-radius:var(--wl-radius);
  padding:22px 26px;
  color:#8E3520;
}
.wl-order-failed-actions{display:flex;gap:10px;margin-top:14px}

/* WooCommerce appends its own "Order details" table after whatever the
   thankyou template outputs (unrelated to any hook we call — it's automatic).
   Fully redundant with the Order summary / Your rental cards above, which
   already cover order number, date, total, payment method, item, dates and
   location — hidden rather than restyled to keep the page as clean as the
   reference design, which has no separate receipt table either. */
.woocommerce-order-details{display:none}

@media (max-width:600px){
  .wl-thankyou-hero{grid-template-columns:1fr;text-align:left}
  .wl-thankyou-check{grid-row:auto}
  .wl-thankyou-hero-next{grid-column:1}
  .wl-thankyou-facts{grid-template-columns:1fr}
  .wl-thankyou-trust{grid-template-columns:1fr}
  .wl-thankyou-item-total{margin-left:0;text-align:left}
  .wl-thankyou-help{flex-direction:column;align-items:flex-start}
}

/* ---------------------------------------------------------------- *
 * Pagination
 * ---------------------------------------------------------------- */
.pagination ul li a,
.pagination ul li span{
  border-radius:999px;
  font-family:'IBM Plex Mono',monospace;
  color:var(--wl-ink-soft);
  border:1px solid var(--wl-line);
  background:#fff;
}
.pagination ul li a.current-page,
.pagination ul li span.current{
  background:var(--wl-conifer);
  border-color:var(--wl-conifer);
  color:#fff;
}
.pagination ul li a:hover{border-color:var(--wl-moss);color:var(--wl-ink)}

/* ---------------------------------------------------------------- *
 * Footer
 *
 * Listeo's footer.php is widget-driven: a row of widget columns, then a
 * separate copyright row. tools/setup-footer.php puts the brand + nav markup in
 * the first column; these rules collapse the two rows into the single dark band
 * the mockup footer uses, so every page ends the same way.
 * ---------------------------------------------------------------- */
#footer,
.footer{
  background:var(--wl-night-0);
  color:rgba(246,244,236,.65);
  padding:44px 0 34px;
  font-size:.92rem;
}
#footer > .container{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:20px 30px;
  flex-wrap:wrap;
}
#footer > .container > .row{
  margin:0;
  flex:1 1 auto;
  min-width:0;
}
#footer > .container > .row:last-child{flex:0 0 auto}
#footer [class*="col-"]{padding-left:0;padding-right:0}

#footer h4,#footer h3{
  color:var(--wl-birch);
  font-family:'Bricolage Grotesque',sans-serif;
}
#footer .footer-widget{margin-bottom:0}
#footer a{color:rgba(246,244,236,.72);text-decoration:none}
#footer a:hover{color:#fff}

/* Brand + nav, mirroring the landing template's footer */
.wl-footer-inner{
  display:flex;
  align-items:center;
  gap:16px 34px;
  flex-wrap:wrap;
}
.wl-footer-brand{
  display:flex;
  align-items:center;
  gap:10px;
  font-family:'Bricolage Grotesque',sans-serif;
  font-weight:800;
  font-size:1.1rem;
  letter-spacing:-.02em;
  color:var(--wl-birch)!important;
}
.wl-footer-brand svg{display:block;flex:none}
.wl-footer-nav{display:flex;gap:22px;flex-wrap:wrap}

/* Copyright row — the mockup's mono line */
#footer .footer-new-bottom-inner{
  display:flex;
  align-items:center;
  gap:16px;
  border:none;
  padding:0;
  margin:0;
}
/* Listeo core's plain .footer-new-bottom-inner{background:#f6f6f6;padding:20px 30px}
   (style.css ~482) outranks nothing above on `background` — the rule here never
   redeclared it, so that light-grey box was showing through against the dark
   #footer band. #footer.dark beats it on specificity; kill it explicitly. */
#footer.dark .footer-new-bottom-inner{background:none}
#footer .footer-new-bottom-left{
  font-family:'IBM Plex Mono',monospace;
  font-size:.85rem;
  color:rgba(246,244,236,.55);
  width:100%;
}
/* No social icons are wired up on the dashboard-injected footer (see
   footer-empty.php) or most pages here, so this column just reserves empty
   flex space next to the copyright line — drop it. */
.footer-new-bottom-right{display:none}
#footer .new-footer-social-icons{display:flex;gap:14px;list-style:none;margin:0;padding:0}

/* template-dashboard.php prints its own bare copyright line above the real
   #footer that footer-empty.php now injects there (see that file) — hide the
   redundant one so the dashboard doesn't show two copyright lines. */
#dashboard .copyrights{display:none}

/* The split-map browse page prints its own copyright inside the results column */
.fs-content .copyrights{
  color:var(--wl-ink-soft);
  font-family:'IBM Plex Mono',monospace;
  font-size:.82rem;
  border-top:1px solid var(--wl-line);
  padding-top:18px;
}

@media (max-width:768px){
  #footer > .container{
    flex-direction:column;
    align-items:flex-start;
    text-align:left;
  }
  #footer > .container > .row{width:100%}
}

/* ---------------------------------------------------------------- *
 * Dashboard
 *
 * Listeo's dashboard uses a LIGHT header + light content area
 * (body.light-dashboard) while the rest of the site uses a dark header. Two
 * consequences to handle:
 *   1. The header must be darkened here too, or the light logo and the light
 *      nav colours set above render invisible on white.
 *   2. The dashboard's #titlebar is an ordinary heading block on a white page,
 *      not the dark hero the public pages use, so the dark-titlebar rules
 *      further up have to be undone for it.
 * ---------------------------------------------------------------- */
body.light-dashboard #header-container.dashboard,
body.light-dashboard #header-container.dashboard #header,
#header-container.dashboard,
#header-container.dashboard #header{
  background:var(--wl-night-0);
  border-bottom:1px solid rgba(246,244,236,.08);
}
/* The logo cell is a separate block from the header bar: Listeo paints it
   #f6f6f6 on light dashboards (style.css ~14843) and, at ~14859, hides the
   .dashboard-logo variant so the *light* wordmark renders on that cream
   square — which made "Wilder" invisible. Darken the cell so the whole top
   bar is one continuous band and the light logo reads. */
body.light-dashboard.page-template-template-dashboard .dashboard #logo,
body.dark-dashboard.page-template-template-dashboard .dashboard #logo,
#header-container.dashboard #logo{
  background:var(--wl-night-0);
}
#header-container.dashboard #logo img{max-height:32px;width:auto}
/* Deliberately no display rule here — Listeo swaps between #logo a and
   #logo a.dashboard-logo depending on the light/dark scheme, and overriding it
   would show both wordmarks at once. */

/* Dashboard titlebar is light — undo the dark hero treatment.
   Scoped to the body class, NOT `.dashboard-content`: Listeo's dashboard
   template emits that div with two `class` attributes —
   `<div class="dashboard-content" id="post-26" class="post-26 page ...">` —
   and a browser only honours the LAST one on an element, so
   `dashboard-content` never actually lands in the DOM. Every
   `.dashboard-content …` selector here was silently dead; #titlebar was still
   inheriting Listeo's own `padding: 70px 0`.

   `:not(.wl-account-page)` matters: the SIGNED-OUT dashboard carries BOTH
   `page-template-template-dashboard` and `wl-account-page` (it renders the
   login/register card), and without this guard the two rule sets fought —
   `.wl-account-page #titlebar.gradient` (2 classes) out-specified this block's
   background and kept the dark hero, while this block's h1 rule (extra
   element in the selector) still won on colour and forced dark ink text —
   dark text on a dark background. Excluding `.wl-account-page` here leaves
   that state to the dark-hero/light-text rules below, which are the correct
   look for a login screen; this light-titlebar treatment is for the signed-in
   dashboard only. */
body.page-template-template-dashboard:not(.wl-account-page) #titlebar{
  background:none;
  padding:10px 0 0;
  margin-bottom:8px;
}
body.page-template-template-dashboard:not(.wl-account-page) #titlebar h1,
body.page-template-template-dashboard:not(.wl-account-page) #titlebar h2,
body.page-template-template-dashboard:not(.wl-account-page) #titlebar h3{
  color:var(--wl-ink);
  font-weight:800;
}
body.page-template-template-dashboard:not(.wl-account-page) #titlebar span,
body.page-template-template-dashboard:not(.wl-account-page) #titlebar a,
body.page-template-template-dashboard:not(.wl-account-page) #breadcrumbs ul li,
body.page-template-template-dashboard:not(.wl-account-page) #breadcrumbs ul li a{
  color:var(--wl-ink-soft);
  text-transform:none;
  letter-spacing:0;
  font-family:'Karla',system-ui,sans-serif;
}
body.page-template-template-dashboard:not(.wl-account-page) #breadcrumbs ul li a:hover{color:var(--wl-amber-deep)}

/* The main site nav is redundant inside the dashboard — the sidebar already
   covers navigation, and the header keeps My Account + Add Listing.
   The mobile hamburger is deliberately left in place: on small screens it is
   the only way back out to Browse / How it works from the dashboard. */
body.page-template-template-dashboard #header-container.dashboard #navigation{
  display:none;
}

/* Sidebar */
.dashboard-nav,
.dashboard-nav-inner,
#dashboard .dashboard-nav{background:var(--wl-night-1)}
.dashboard-nav ul li a,
body.light-dashboard.page-template-template-dashboard .dashboard-nav ul li a,
body.dark-dashboard.page-template-template-dashboard .dashboard-nav ul li a{
  color:#fff;
  font-family:'Karla',system-ui,sans-serif;
}
.dashboard-nav ul li a i{color:var(--wl-sage)}

/* Listeo's light scheme paints the whole <li> white for hover, .active and
   .current_page_item (style.css ~14904-14906) and drops the label to #666
   (~14913-14915). On this dark sidebar that reads as a blank white block — and
   because an open parent like "My Listings" wraps its expanded sub-menu, the
   white bled behind the whole flyout.
   Fix: the <li> never carries a background; all state lives on the <a>. */
body.light-dashboard.page-template-template-dashboard .dashboard-nav ul li,
body.light-dashboard.page-template-template-dashboard .dashboard-nav ul li:hover,
body.light-dashboard.page-template-template-dashboard .dashboard-nav ul li.active,
body.light-dashboard.page-template-template-dashboard .dashboard-nav ul li.current_page_item,
body.dark-dashboard.page-template-template-dashboard .dashboard-nav ul li:hover,
.dashboard-nav ul li:hover{
  background:transparent;
  box-shadow:none;
  border:none;
}

/* Hover pill on the link only */
body.light-dashboard.page-template-template-dashboard .dashboard-nav ul li > a:hover,
.dashboard-nav ul li > a:hover{
  background:rgba(255,255,255,.08);
  border-radius:999px;
  color:#fff;
}
body.light-dashboard.page-template-template-dashboard .dashboard-nav ul li:hover > a,
body.light-dashboard .dashboard-nav ul li:hover a,
body.light-dashboard.page-template-template-dashboard .dashboard-nav ul li.current_page_item > a,
.dashboard-nav ul li a:hover{
  color:#fff;
}
.dashboard-nav ul li > a:hover i,
.dashboard-nav ul li a:hover i{color:var(--wl-amber)}

/* Any sub-menu list is transparent — no panel behind the flyout.
   Listeo pulls the list up with margin-top:-5px (style.css ~14942), which left
   the first child touching the parent's pill; give it room to breathe instead. */
.dashboard-nav ul li ul,
body.light-dashboard.page-template-template-dashboard .dashboard-nav ul li ul,
body.light-dashboard.page-template-template-dashboard .dashboard-nav ul li.active ul{
  background:transparent;
  box-shadow:none;
  margin-top:10px;
  margin-bottom:6px;
}
.dashboard-nav ul li ul li{margin:2px 0}

/* Sub-menu rows (Bookings ▸ …, My Listings ▸ …) stay plain indented text —
   the pill above is for top-level items only. */
body.light-dashboard.page-template-template-dashboard .dashboard-nav ul li ul li:hover,
body.dark-dashboard.page-template-template-dashboard .dashboard-nav ul li ul li:hover,
.dashboard-nav ul li ul li:hover{
  background:transparent;
  box-shadow:none;
}
.dashboard-nav ul li ul li a{color:rgba(246,244,236,.86)}
.dashboard-nav ul li ul li:hover a{color:#fff}
.dashboard-nav ul li.active > a,
.dashboard-nav ul li.current-menu-item > a,
.dashboard-nav ul li.current_page_item > a,
body.light-dashboard.page-template-template-dashboard .dashboard-nav ul li.active > a,
body.light-dashboard.page-template-template-dashboard .dashboard-nav ul li.current_page_item > a{
  background:var(--wl-conifer);
  color:#fff;
  border-radius:999px;
}
.dashboard-nav ul li.active > a i,
.dashboard-nav ul li.current_page_item > a i{color:var(--wl-amber)}
.dashboard-nav .dashboard-nav-headline,
.dashboard-nav ul li.dashboard-nav-headline{
  color:var(--wl-sage);
  font-family:'IBM Plex Mono',monospace;
  font-size:.78rem;
  letter-spacing:.14em;
  text-transform:uppercase;
}

/* Stat tiles — Listeo ships red/blue/yellow/pink; use the brand palette */
.dashboard-stat.stat-card-v2{
  border-radius:var(--wl-radius);
  border:1px solid var(--wl-line);
  box-shadow:none;
}
.dashboard-stat.stat-card-v2 .dashboard-stat-content h4,
.dashboard-stat.stat-card-v2 h4{
  font-family:'IBM Plex Mono',monospace;
  font-size:1.7rem;
  font-weight:600;
}
.dashboard-stat.stat-card-v2.color-1{background:rgba(47,90,65,.09);border-color:rgba(47,90,65,.28)}
.dashboard-stat.stat-card-v2.color-1 h4,
.dashboard-stat.stat-card-v2.color-1 i,
.dashboard-stat.stat-card-v2.color-1 svg{color:var(--wl-conifer);fill:var(--wl-conifer)}
.dashboard-stat.stat-card-v2.color-2{background:rgba(154,180,155,.16);border-color:rgba(154,180,155,.42)}
.dashboard-stat.stat-card-v2.color-2 h4,
.dashboard-stat.stat-card-v2.color-2 i,
.dashboard-stat.stat-card-v2.color-2 svg{color:var(--wl-moss);fill:var(--wl-moss)}
.dashboard-stat.stat-card-v2.color-3{background:rgba(233,161,59,.13);border-color:rgba(233,161,59,.38)}
.dashboard-stat.stat-card-v2.color-3 h4,
.dashboard-stat.stat-card-v2.color-3 i,
.dashboard-stat.stat-card-v2.color-3 svg{color:var(--wl-amber-deep);fill:var(--wl-amber-deep)}
.dashboard-stat.stat-card-v2.color-4{background:rgba(28,51,42,.08);border-color:rgba(28,51,42,.24)}
.dashboard-stat.stat-card-v2.color-4 h4,
.dashboard-stat.stat-card-v2.color-4 i,
.dashboard-stat.stat-card-v2.color-4 svg{color:var(--wl-pine);fill:var(--wl-pine)}
.dashboard-stat.stat-card-v2 .dashboard-stat-content h5,
.dashboard-stat.stat-card-v2 .stat-label{color:var(--wl-ink)}

/* Activity / list panels */
.dashboard-list-box .button.gray,
.dashboard-list-box a.button.gray{
  background:var(--wl-mist);
  color:var(--wl-ink-soft);
  border:1px solid var(--wl-line);
  box-shadow:none;
}
.dashboard-list-box .button.gray:hover{background:#fff;color:var(--wl-ink)}

/* Forms */
input[type="text"],input[type="email"],input[type="password"],
input[type="number"],input[type="tel"],input[type="date"],
select,textarea{
  border-radius:10px;
  border:1px solid var(--wl-line);
  font-family:'Karla',system-ui,sans-serif;
  color:var(--wl-ink);
}
input:focus,select:focus,textarea:focus{
  border-color:var(--wl-amber);
  box-shadow:0 0 0 3px rgba(233,161,59,.18);
  outline:none;
}

/* ---------------------------------------------------------------- *
 * Residual Listeo red (#f91942)
 *
 * `pp_main_color` is set to the brand amber, which recolours everything the
 * customizer generates (~148 substitutions, including --primary-color). But
 * style.css hardcodes #f91942 in ~68 rules the customizer never emits, so these
 * are the user-visible ones, overridden at matching specificity.
 * ---------------------------------------------------------------- */

/* Dashboard sidebar icons — Listeo targets these with 4 classes deep */
body.light-dashboard.page-template-template-dashboard .dashboard-nav ul li a i,
body.dark-dashboard.page-template-template-dashboard .dashboard-nav ul li a i{
  color:var(--wl-sage);
}
body.light-dashboard.page-template-template-dashboard .dashboard-nav ul li.active > a i,
body.light-dashboard.page-template-template-dashboard .dashboard-nav ul li a:hover i{
  color:var(--wl-amber);
}

/* Map markers and clusters */
body.no-map-marker-icon .face.front,
.marker-cluster-large div,
.marker-cluster div{background-color:var(--wl-conifer)}
.marker-cluster div:before{border-color:var(--wl-amber)}
.leaflet-control-zoom-in:hover,
.leaflet-control-zoom-out:hover{
  background-color:var(--wl-conifer);
  -webkit-text-stroke-color:var(--wl-conifer);
}

/* Bookable services — this is the power/gear add-on picker on kit listings */
.bookable-services .single-service:hover .single-service-price,
.bookable-services input[type="checkbox"]:checked + label{color:#231603}
.bookable-services input[type="checkbox"]:checked + label{background-color:var(--wl-amber)}
.services-counter{background-color:var(--wl-amber);color:#231603}
.single-service .qtyDec:hover,
.single-service .qtyInc:hover{
  background-color:var(--wl-conifer);
  -webkit-text-stroke-color:var(--wl-conifer);
}

/* Search + booking widget accents */
.search .panel-dropdown.active a:not(.dropdown-menu a){background:var(--wl-conifer)}
.search-input-icon:hover i{color:var(--wl-amber-deep)}
.code-button:hover,
.button.listeo-booking-widget-apply_new_coupon:before{background-color:var(--wl-conifer)}
.booking-estimated-discount-cost span{color:var(--wl-moss)}

/* Icon boxes used on content pages */
body .icon-box-2 svg path,
body .listeo-svg-icon-box-grid svg path{fill:var(--wl-conifer)}

@media (prefers-reduced-motion:reduce){
  .button,.listing-card-container-nl,.listing-card-nl{transition:none}
  .button:hover,.listing-card-container-nl:hover{transform:none}
}

/* ---------------------------------------------------------------- *
 * Sign In / Register popup (#sign-in-dialog)
 *
 * Rendered by listeo_login_form() (listeo-core/includes/class-listeo-core-users.php)
 * on wp_body_open and opened via Magnific Popup from every "Login to Book" /
 * "sign in" link. It shares the exact login-form.php markup/classes already
 * styled above for the standalone /login/ page (.wl-account-page) — the same
 * selectors are mirrored here, scoped to the popup instead of the page.
 * ---------------------------------------------------------------- */
#sign-in-dialog{
  padding:34px 34px 30px;
  border-radius:var(--wl-radius);
  box-shadow:0 30px 70px -30px rgba(12,25,23,.55);
  font-family:'Karla',system-ui,sans-serif;
}

/* Header: Listeo renders this as a full-bleed grey band via negative margins
   (style.css .small-dialog-header, width:calc(100% + 80px); left:-40px, tied to
   the dialog's own 40px padding) — reset to a plain in-flow header instead and
   add a small brand mark, echoing the tent+signal nav logo. */
#sign-in-dialog .small-dialog-header{
  position:static;
  width:auto;
  left:auto;
  top:auto;
  background:transparent;
  padding:0 0 18px;
  margin:0 0 22px;
  border-radius:0;
  border-bottom:1px solid var(--wl-line);
  display:flex;
  align-items:center;
  gap:12px;
}
#sign-in-dialog .small-dialog-header::before{
  content:"";
  flex:none;
  width:38px;height:38px;
  border-radius:50%;
  background:var(--wl-conifer) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 18 18' fill='none'%3E%3Cpath d='M2 15 L9 3 L16 15 Z' stroke='%23F6F4EC' stroke-width='1.6' stroke-linejoin='round'/%3E%3Cpath d='M9 15 L9 10' stroke='%23E9A13B' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E") center/18px no-repeat;
}
#sign-in-dialog .small-dialog-header h3{
  font-family:'Bricolage Grotesque',sans-serif;
  font-weight:800;
  font-size:1.4rem;
  letter-spacing:-.01em;
  color:var(--wl-ink);
}

/* Close button — Listeo paints a plain grey circle; recolour to the brand ink/conifer pair */
#sign-in-dialog .mfp-close{
  background-color:var(--wl-mist);
  color:var(--wl-ink-soft);
  top:22px;
  right:22px;
}
#sign-in-dialog .mfp-close:hover{
  background-color:var(--wl-conifer);
  color:#fff;
}

/* Tabs (Log In / Register) */
#sign-in-dialog .tabs-nav{
  display:flex;
  gap:10px;
  border:none;
  margin:0 0 20px;
  padding:0;
  list-style:none;
}
#sign-in-dialog .tabs-nav li{flex:1;border:none;margin:0;background:transparent}
#sign-in-dialog .tabs-nav li a{
  display:block;
  text-align:center;
  padding:11px 10px;
  border:1.5px solid var(--wl-line);
  border-radius:999px;
  background:#fff;
  color:var(--wl-ink-soft);
  font-family:'Karla',system-ui,sans-serif;
  font-weight:700;
  font-size:.95rem;
  transition:border-color .15s ease,color .15s ease,background .15s ease;
}
#sign-in-dialog .tabs-nav li a:hover{border-color:var(--wl-moss);color:var(--wl-ink)}
#sign-in-dialog .tabs-nav li.active a{
  background:var(--wl-conifer);
  border-color:var(--wl-conifer);
  color:#fff;
}

/* Guest / Owner role picker (register tab) */
#sign-in-dialog .account-type{display:flex;gap:12px;margin:0 0 20px;flex-wrap:wrap}
#sign-in-dialog .account-type > div{flex:1 1 140px}
#sign-in-dialog .account-type input[type="radio"]{position:absolute;opacity:0;pointer-events:none}
#sign-in-dialog .account-type label{
  display:flex;align-items:center;justify-content:center;gap:8px;
  width:100%;margin:0;padding:12px 14px;
  border:1.5px solid var(--wl-line);border-radius:12px;background:#fff;
  color:var(--wl-ink-soft);font-weight:700;cursor:pointer;
  transition:border-color .15s ease,color .15s ease,background .15s ease;
}
#sign-in-dialog .account-type label:hover{border-color:var(--wl-moss);color:var(--wl-ink)}
#sign-in-dialog .account-type input[type="radio"]:checked + label{
  border-color:var(--wl-amber);
  background:rgba(233,161,59,.1);
  color:var(--wl-amber-deep);
}
#sign-in-dialog .account-type input[type="radio"]:focus-visible + label{
  outline:3px solid var(--wl-amber);
  outline-offset:2px;
}

/* Inputs — Listeo wraps each in <label><i icon><input></label> */
#sign-in-dialog .form-row{margin-bottom:14px}
#sign-in-dialog label{position:relative;display:block;margin:0}
#sign-in-dialog label > i{
  position:absolute;left:14px;top:50%;transform:translateY(-50%);
  color:var(--wl-sage);font-size:1rem;pointer-events:none;z-index:2;
}
#sign-in-dialog input.input-text,
#sign-in-dialog input[type="text"],
#sign-in-dialog input[type="email"],
#sign-in-dialog input[type="password"],
#sign-in-dialog input[type="tel"]{
  width:100%;
  padding:13px 14px 13px 42px;
  border:1px solid var(--wl-line);
  border-radius:10px;
  background:#fff;
  font-family:inherit;
  font-size:inherit;
  color:var(--wl-ink);
  margin:0;
}
#sign-in-dialog input:focus{
  border-color:var(--wl-amber);
  box-shadow:0 0 0 3px rgba(233,161,59,.18);
  outline:none;
}

/* Submit — Listeo marks these .button.border (outline style); the popup CTA should be solid */
#sign-in-dialog input[type="submit"],
#sign-in-dialog input[type="submit"].button.border,
#sign-in-dialog a.button{
  width:100%;
  margin-top:6px;
  padding:14px 24px;
  border:none;
  border-radius:999px;
  background:var(--wl-amber);
  color:#231603;
  font-family:inherit;
  font-weight:700;
  font-size:inherit;
  box-shadow:0 6px 18px -6px var(--wl-amber-glow);
  cursor:pointer;
  text-align:center;
}
#sign-in-dialog input[type="submit"]:hover,
#sign-in-dialog a.button:hover{
  background:#F0AC49;
  color:#231603;
  transform:translateY(-1px);
}

#sign-in-dialog .lost_password{display:inline-block;margin-top:8px;font-size:.9rem}
#sign-in-dialog .lost_password a{color:var(--wl-ink-soft)}
#sign-in-dialog .lost_password a:hover{color:var(--wl-amber-deep)}

#sign-in-dialog .checkboxes{display:flex;align-items:center;gap:8px}
#sign-in-dialog .checkboxes label{font-size:.92rem;color:var(--wl-ink-soft);font-weight:400}

#sign-in-dialog .notification{border-radius:12px;font-size:.92rem;padding:14px 16px}
#sign-in-dialog .notification.error{
  background:rgba(180,68,42,.08);
  border:1px solid rgba(180,68,42,.35);
  color:#8E3520;
}
#sign-in-dialog .notification.success{
  background:rgba(47,90,65,.08);
  border:1px solid rgba(47,90,65,.35);
  color:var(--wl-conifer);
}

/* Password strength note */
#sign-in-dialog .password-strength-requirements{
  font-size:.82rem;
  color:var(--wl-ink-soft);
  background:var(--wl-mist);
  border-radius:10px;
  padding:10px 12px;
  margin:-6px 0 14px;
  line-height:1.6;
}
#sign-in-dialog .password-strength-requirements strong{color:var(--wl-ink)}

/* OTP verification code boxes */
#sign-in-dialog .otp_registration h4{
  font-family:'Bricolage Grotesque',sans-serif;
  font-weight:700;
  color:var(--wl-ink);
  margin:0 0 8px;
}
#sign-in-dialog #listeo_otp-inputs{display:flex;gap:10px;margin:12px 0 16px}
#sign-in-dialog .field__token{
  width:50px;height:56px;
  text-align:center;
  font-size:1.3rem;
  font-family:'IBM Plex Mono',monospace;
  border:1.5px solid var(--wl-line);
  border-radius:10px;
  color:var(--wl-ink);
}
#sign-in-dialog .field__token:focus{
  border-color:var(--wl-amber);
  box-shadow:0 0 0 3px rgba(233,161,59,.18);
  outline:none;
}
#sign-in-dialog .otp-countdown{color:var(--wl-amber-deep);font-weight:600}

/* Social login separator */
#sign-in-dialog .social-login-separator{
  position:relative;
  text-align:center;
  margin:22px 0 16px;
  color:var(--wl-ink-soft);
  font-family:'IBM Plex Mono',monospace;
  font-size:.72rem;
  letter-spacing:.1em;
  text-transform:uppercase;
}
#sign-in-dialog .social-login-separator::before{
  content:"";
  position:absolute;
  left:0;right:0;top:50%;
  border-top:1px solid var(--wl-line);
  z-index:0;
}
#sign-in-dialog .social-login-separator span{
  position:relative;
  z-index:1;
  background:#fff;
  padding:0 12px;
}

@media (max-width:480px){
  #sign-in-dialog{padding:26px 20px 24px}
  #sign-in-dialog #listeo_otp-inputs{gap:8px}
  #sign-in-dialog .field__token{width:44px;height:50px;font-size:1.1rem}
}
