/* directory css */
.drts-display-element {
	clear: both;
	border: 1px solid lightgrey;
	height: 200px;
	align-content: center;
	text-align: center;
	cursor: pointer;
}

.directory-category-title.drts-display-element:hover {
	background-color: #f9f8f4;
}

div.drts-form-field-radio-option-description{
	white-space:pre-line;
}
.page-id-97838 #top-banner, .page-id-99342 #top-banner, .drts-entity #top-banner{
	display:none;
}
.wc-block-components-text-input.is-active input, .wc-blocks-components-select .wc-blocks-components-select__select {
    padding: 20px 0 15px 7px !important;
}
.drts-display-element:not(.directory-category-title) {
    clear: both;
    border: unset!important;
    height: -webkit-fill-available!important;
    align-content: flex-start;
    text-align: start!important;
    cursor: pointer;
}
.drts .fa-brands, .drts .fab, .drts-fab, .drts .fa-solid, .drts .fas:not(.drts-icon), .drts-fas {
    font-size: 22px!important;
}
a.drts-entity-permalink {
    height: fit-content;
    display: flex;
    flex-direction: column;
}
.drts button {
    font-size: 15px !important;
    height: auto!important;
}
.drts .drts-bs-form-control
 {
    background-clip: padding-box;
    background-color: #fff;
    border: 1px solid #ced4da;
    border-radius: .25rem;
    color: #495057;
    display: block;
    font-size: 1rem;
    font-weight: 400;
    height: fit-content!important;
    line-height: 1.5;
    padding: .375rem .75rem;
    transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out;
    width: 100%;
}
span.store-hours-status {
    display: inline-block;
    margin-right: 10px;
}
.store-info img {
    background-color: unset !important;
}
button.store-info-button {
    padding: 13px;
    background: #c5c4c4;
    width: fit-content;
    display: inline;
    margin-right: 10px;
}
button.store-info-button:hover {
    padding: 13px;
    background: #a89f9f;
    width: fit-content;
    display: inline;
    margin-right: 10px;
}
.drts-entity-permalink span, .directory-listing-title span, .directory-listing-title {
	display: block!important;
    font-size: 1.5rem;
    font-weight: 500;
    line-height: 1.3;
    text-align: center;
    margin-bottom: 0;
    color:black;
}

i.drts-icon.fas{
    width: 80px;
    height: 80px;
	align-self: center;
}

i.drts-icon {
	font-size: 46px !important;
	border: unset !important;
	box-shadow: unset !important;
	color: #fff !important;
	margin-bottom: 20px !important;
}

.blankslate-page--header-dropdown {
	display: none;
	border: 1px solid darkgrey;
	padding: 15px;
	position: absolute;
	background: white;
	z-index: 1000000;
	height: fit-content;
	line-height: 32px;
	border-top: unset;
}

.blankslate-page--header {
	order: 1;
	background-color: #f9f8f4;
	border: none;
    position: relative;
}


.blankslate-page--category-dropdown button {
	color: #AB4342;
	background: #fff;
}

.blankslate-page--container {
	display: flex;
	justify-content: space-between;
	align-items: center;
    padding:15px;
	margin-bottom: 30px!important;
}

.blankslate-page--category-dropdown button {
	background: #fff;
	border: 1px solid #ccc;
	border-radius: 5px;
	width: 100%;
	height: auto;
	padding: 10px 15px;
	gap: 10px;
	display: flex;
	justify-content: flex-start;
	position: relative;
}

.blankslate-landing--header {
	display: flex;
	justify-content: flex-start;
	position: relative;
}



.blankslate-landing--header {
	display: flex;
	justify-content: flex-start;
	position: relative;
}


.blankslate-page--header-dropdown ul {
	-moz-column-count: 3;
	column-count: 3;
	-moz-column-gap: 20px;
	column-gap: 20px;
	text-align: left;
}

.blankslate-page ul {
	list-style: none !important;
	margin: 0;
}

.blankslate-page--header-dropdown li {
	float: none;
	width: auto;
}

.button-requestpro {
    background-color: #cd3035;
    background: linear-gradient(90deg,#cd3035 0, #cd3035 calc(100% - 46px), #fff calc(100% - 46px), #cd3035 calc(100% - 44px), #cd3035 100%);
    color: #fff;
    margin-bottom: 15px;
}
.button-requestpro {
    border: 1px solid #cd3035;
    font-size: 16px;
    font-weight: 500;
    letter-spacing: .1em;
    line-height: 1;
    height: 44px;
    padding-inline: 15px 46px;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    position: relative;
    text-transform: uppercase;
    width: 100%;
}

.blankslate-page--container {
    max-width: 100% !important;
}
.blankslate-page {
    margin-bottom: 0px!important;
    padding: 0px!important;
}

#post-97842 .page-header{
    display:none;
}
.blankslate-directory .button-requestpro:hover, .blankslate-page--contact-form a:hover, .blankslate-page--overlay-heading__button a:hover {
	background: linear-gradient(90deg, var(--primary-color1) 0, var(--primary-color1) calc(100% - 46px), var(--secondary-color1) calc(100% - 46px), var(--secondary-color1) calc(100% - 44px), var(--secondary-color1) 100%);
	color: white;
}

.drts-listing {
    border: 1px solid #e8dbdb;
    padding: 15px 15px 0px 15px !important;
    flex: 1;
}

.blankslate--directory-category .business-list .business-item {
    border: unset!important;
	margin: 5px 0px!important;
    
}
.blankslate--directory-category .business-list .business-item h6{
	margin:5px 0px!important;
}
.text-holder{
	font-size:14px;
}

.blankslate--directory-category .business-list .business-item .image-holder {
    background-repeat: no-repeat;
    background-size: cover;
}

.blankslate--directory-category .business-list {
    margin-top: 3rem;
    gap: 20px;
    display: flex;
   
}
.form-row {
    display: block!important;
}
button.woocommerce-Button.button {
	margin-top:15px;
}
#ndic-main .entry-content ximg {
    height: auto!important;
    border: 1px solid #ccc;
    background-color: #fff;
    padding: 0 !important;
    width: 100%!important;
    max-width: 100px !important;
    
}
.drts img.drts-icon, i.drts-icon {
    border-radius: 50%;
    height: 40px;
    width: 40px;
    padding: 0px !important;
    float: left;
}
.drts .drts-bs-navbar-nav {
   
    flex: none;
}
.single-directory_dir_ltg div#drts-content {
    max-width: 800px;
    margin: auto;
}
#ndic-main .entry-content .fitvidsignore.slick-slide figure img{
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    z-index: 100;
    object-fit: cover!important;
}
.drts-slider-photos .slick-list {
   max-height: 300px !important;
}
.drts-slider-photos .slick-slide figure {
    min-height: 300px;
}
@media (max-width:768px){
	.drts-listing{
		width:100%!important;
		
	}
}

.single-directory_dir_ltg div#drts-content {
    max-width: 100%!important;
    margin: auto;
}
.woocommerce-account .woocommerce-MyAccount-navigation {
    width: 20%;
}
.woocommerce-account .woocommerce-MyAccount-content {
    width: 80%;
}
  
  
  
  h1.page-title {
    font-size: 22px;
    font-weight: 700;
    margin: 0 0 8px 0;
    text-align: center;
  }
  .page-intro {
    color: #666;
    font-size: 14px;
    margin: 0 0 32px 0;
    text-align: center;
  }

  .mockup {
    background: #ffffff;
    padding: 28px 28px 32px 28px;
    border: 1px solid #e0e0e0;
    border-radius: 4px;
    margin-bottom: 28px;
  }

  .mockup-label {
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.8px;
    color: #999;
    margin: 0 0 4px 0;
  }
  .mockup-name {
    font-size: 14px;
    font-weight: 700;
    color: #1a1a1a;
    margin: 0 0 24px 0;
    padding-bottom: 14px;
    border-bottom: 1px solid #eee;
  }

  /* ============================================
     SIDEBAR CONTENT — matched to live site
     - serif italic body copy
     - light gray rectangular search/email inputs
     ============================================ */

  .sidebar-block { margin-bottom: 22px; }
  .sidebar-block:last-child { margin-bottom: 0; }

  /* Directory intro copy — italic serif like the live site */
  .directory-copy {
    font-family: Georgia, 'Times New Roman', serif!important;
    font-style: italic!important;
    font-size: 16px!important;
    line-height: 1.55!important;
    color: #1a1a1a!important;
    text-align: center!important;
    margin: 0 0 18px 0!important;
  }

  /* Search box — matches live light-gray field */
  .search-block {
    display: flex;
    align-items: center;
    background: #e8e8e8;
    padding: 10px 14px;
  }
  .search-block input {
    flex: 1;
    border: none;
    background: transparent;
    font-family: inherit;
    font-size: 14px;
    outline: none;
    color: #1a1a1a;
  }
  .search-block input::placeholder { color: #6a6a6a; }
  .search-block .search-icon {
    width: 16px; height: 16px;
    background: #1a1a1a;
    -webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z'/></svg>") center / contain no-repeat;
            mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z'/></svg>") center / contain no-repeat;
    flex-shrink: 0;
  }

  /* Newsletter — matches live look */
  .newsletter h2 {
    font-size: 18px;
    font-weight: 700;
    margin: 0 0 12px 0;
    color: #1a1a1a;
    text-align: center;
    letter-spacing: 0.5px;
  }
  .newsletter .email-row {
    display: flex;
    align-items: center;
    background: #e8e8e8;
    padding: 10px 14px;
  }
  .newsletter input[type="email"] {
    flex: 1;
    border: none;
    background: transparent;
    font-family: inherit;
    font-size: 14px;
    color: #1a1a1a;
    outline: none;
  }
  .newsletter input[type="email"]::placeholder { color: #6a6a6a; }
  .newsletter .submit-arrow {
    width: 0; height: 0;
    border-style: solid;
    border-width: 7px 0 7px 11px;
    border-color: transparent transparent transparent #1a1a1a;
    cursor: pointer;
    flex-shrink: 0;
    margin-left: 8px;
  }
  .newsletter .helper {
    font-size: 13px;
    color: #1a1a1a;
    margin: 10px 0 0 0;
    line-height: 1.4;
  }
  .newsletter .helper a { color: #1a1a1a; text-decoration: underline; }

  /* Divider rows */
  .divider {
    border-top: 1px dotted #999;
    margin: 18px 0;
  }

  /* ============================================
     REGISTER BUTTON — SHARED BASE
     ============================================ */
  .reg-btn-wrap {
    display: flex;
    justify-content: center;
    margin-bottom: 4px;
  }
  .reg-btn {
    border: none;
    padding: 12px 26px;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 0.6px;
    cursor: pointer;
    line-height: 1.3;
    text-align: center;
    font-family: 'Lato', Arial, Helvetica, sans-serif;
    text-transform: uppercase;
    text-decoration: none;
    display: inline-block;
    border-radius: 6px;
  }
  .reg-btn span { display: block; }

  

/* ============================================
    SAMPLE 3 — Outline red → solid red, white text
    ============================================ */
.btn-3 {
    background: #ffffff;
    color: #bc3429!important;
    border: 2px solid #bc3429;
    padding: 10px 24px;
    transition: background 0.2s ease, color 0.2s ease;
}
.btn-3:hover {
    background: #bc3429;
    color: #ffffff!important;
}

.drts-search-form-field:first-child input[type=text],.drts-search-form-field .drts-form-type-textfield input[type=text]{
    
    font-size:16px!important;
}
.drts .drts-search-form-submit {
    cursor: pointer;
    height: 38px !important;
}
.tt-menu i.drts-icon-sm, .tt-menu img.drts-icon-sm {
    display: none !important;
}
.drts-search-search .drts-row{
    width:100%!important;
    display:block!important;
}
/* Task 2: the keyword field carries an 18px bottom margin and the empty
   submit column adds 1px — together they made the space below the search box
   40px instead of Siteline's 20. Form ends flush at the input, like Siteline. */
.sidebar .drts-search-form .drts-search-form-field-keyword{
    margin-bottom: 0 !important;
}
.sidebar .drts-search-form .drts-search-form-field.drts-col-md-2{
    display: none;
}
/* Task 2: magnifier = same artwork, size and position as Siteline's
   .searchsubmit (14px wide, right 12px, top 13px / 18px at >=1200px) */
.drts-search-form-field .drts-form-field-main>label {
    width: 14px !important;
    height: 14px !important;
    min-width: 0 !important;
    padding: 0 !important;
    font-size: 0 !important;
    background: url(/wp-content/themes/ndic/library/images/search.svg) center / contain no-repeat !important;
    position: absolute;
    /* drts positions the label with top + translateY(-7px); these top values
       put the glyph at Siteline's .searchsubmit position (top 13px below
       1200px, 18px above — measured glyph-edge to glyph-edge) */
    top: 20px !important;
    right: 12px !important;
    left: unset!important;
}
@media (min-width: 1200px) {
  .drts-search-form-field .drts-form-field-main>label {
    top: 24.85px !important;
  }
}
/* Task 2: input matches Siteline's search widget exactly
   (48px tall, radius 7, #333 type color, padding 10/18) */
.drts-search-form-field:first-child input[type=text]{
    box-shadow: unset;
    background-color: #ebebeb !important;
    border: unset !important;
    height: 48px !important;
    border-radius: 7px!important;
    color: #333 !important;
    padding: 10px 18px !important;
}
/* J16-2 (June 16): kill the residual box-shadow "rule" that showed around the
   gray search box on landing/subcategory (absent on listing). Force flat on
   every state/clone so all directory pages match listing & Siteline. */
#sidebar1 .drts-search-form input,
#sidebar1 .drts-search-form input:focus,
#sidebar1 .drts-search-form .tt-input,
#sidebar1 .drts-search-form .tt-hint {
    box-shadow: none !important;
    -webkit-box-shadow: none !important;
}
/* drts bootstrap paints placeholders gray; Siteline's are #333 like the text */
.drts-search-form-field:first-child input[type=text]::placeholder{
    color: #333;
}

.drts-search-form-field .drts-form-field-main>label.fas-search:before{
    display:none!important;
    content:''!important;
}
.drts-search-form-submit,.drts-search-form-field .drts-bs-btn-group{
    display:none!important;
}
.drts-search-form-field{
    margin-bottom:0px!important;
}


/* category page */
/* ── MOCKUP NOTE ── */
.mockup-note {
  background: #fffbea;
  border-bottom: 1px solid #e8c840;
  padding: 7px 0;
  text-align: center;
  font-size: 12px;
  color: #665500;
  font-family: "Lato", sans-serif;
}

/* Recent Comments body matches Siteline (16px at all widths) — was 18px at
   desktop, which read larger than Siteline's box (R2-4) */
.ndic-comment-list{
    font-size: 16px;
}
@media (min-width: 1200px) {
	.ndic-comment-list{
        font-size: 16px;
    }
}



/* ── RIGHT COLUMN TYPOGRAPHY (Phase 2): match Siteline's widget styles ──
   On the landing page a wrapper bumps inherited font-size to 18px, which
   inflates the widget h2s to 24px (Siteline: 21px) and body text to 18px
   (Siteline: 16px). Pin the sidebar widgets to Siteline's computed values. */
#sidebar1 .widget {
  font-size: 16px;
}
#sidebar1 .widget h2 {
  font-size: 21px;
  font-weight: 700;
  line-height: 1.4;
  letter-spacing: 0.25px;
  text-transform: uppercase;
  color: #000;
  margin-top: 0;
  margin-bottom: 0.375em; /* = Siteline's 7.875px at 21px */
}
#sidebar1 .widget p {
  letter-spacing: 0.4px; /* Siteline .widget p */
}

/* Space above the red "Local business?" box = space below it (17px) */
#sidebar1 .directory-copy {
  margin-bottom: 17px !important;
}

/* R2-7: the intro text's visible top aligns with the top of the MAIN CONTENT
   in the left column (not the date line): the HOME box's top border on the
   landing page, the "Food" headline on subcategory pages, the bordered image
   on listing pages — all of which begin at the row content top. The sidebar
   and main column share the same .row, so the natural offset is 0; the only
   adjustment is -4.4px to compensate the intro's own line-height leading so
   the glyph tops (not the line-box top) sit on the content-top line.
   Scoped with :has(.directory-copy) so it only ever matches the DIRECTORY
   sidebar — Siteline's #sidebar1 has no .directory-copy and is never touched.
   Desktop only; on mobile the column stacks. */
@media (min-width: 768px) {
  /* Landing + listing: the content top is a border LINE (HOME box border /
     bordered listing image). Align the intro's visible text to that line by
     compensating its leading (-4.4px). Measured with the real Georgia-metric
     font installed: intro glyph top lands 0.7px below the border = aligned. */
  #sidebar1:has(.directory-copy) .sidebar-inner {
    margin-top: -4.4px;
  }
  /* Subcategory pages: the headline ("Food"/"Coffee") is a large CENTERED
     title whose glyphs sit ~11px below its line-box top, so the vertical
     dotted line (the sidebar's border, drawn from the row content top at
     490.3) used to float ~11px above both the title glyphs (501) and the
     intro text (502). Drop the whole sidebar box — and therefore the line's
     top — by 10.7px so it starts at the title/intro glyph level, then pull
     the inner content back up the same amount so the intro, red box and
     Recent-Comments box keep their exact positions (intro glyph stays level
     with the headline glyph; line still ends at the Recent-Comments box).
     Net visible change: only the line's top moves down to meet the text. */
  #ndic-content:has(.subcat-title) #sidebar1:has(.directory-copy) {
    margin-top: 10.7px;
  }
  #ndic-content:has(.subcat-title) #sidebar1:has(.directory-copy) .sidebar-inner {
    margin-top: -4.2px;
  }
  /* Add-listing page (id 99321), Step 4.2: the sidebar drops 19px (so the vertical
     line's first dot starts at the text ink); pull its content back -5px so the
     right-column text ink lands level with the intro ink (y≈489). */
  body.page-id-99321 #sidebar1:has(.directory-copy) .sidebar-inner {
    margin-top: -4.4px;
  }
  /* Step 4.2 (client 7/7 annotation): make the gap BELOW the date line equal the
     34px ABOVE it — push the form content + sidebar down; the sidebar stretches,
     so its bottom (line end at the closing text) stays pinned. */
  body.page-id-99321 .drts.drts-main { margin-top: 13px; }
  body.page-id-99321 #sidebar1:has(.directory-copy) { margin-top: 19px; }
}

/* Submit-only signup: hide the Directories Pro 2.0 "Already registered?
   Login or Sign Up" prompt on the add-listing form. This is a submit-only
   application (admin sends a payment link + publishes) — no visitor login.
   The gate is suppressed server-side in library/directory.php; this hides the
   residual info-box 2.0 still renders on the form. Add-listing page only. */
body.page-id-99321 .drts-form-headers .drts-bs-alert-info {
  display: none !important;
}

/* The vertical dotted line should end at the bottom of the Recent Comments
   box — the last widget's 20px margin-bottom made it overhang. */
#sidebar1 .widget:last-child {
  margin-bottom: 0;
}
/* J16-9 (June 16): the .row is flex, so the sidebar stretches to match a
   taller main column — making the dotted line (the sidebar's border) overshoot
   the Recent Comments box on listing pages (Etty's, Cats Inc). Stop the
   DIRECTORY sidebar from stretching so its height = its content and the line
   always ends exactly at the Recent Comments box. Scoped via :has(.directory-
   copy) so Siteline's #sidebar1 is untouched. */
@media (min-width: 768px) {
  #sidebar1:has(.directory-copy) {
    align-self: flex-start;
  }
}
/* Step 3.1: the add-listing FORM is much taller than the sidebar, so flex-start
   leaves the vertical dotted line ending far above the footer. On that page only,
   let the sidebar stretch so the line runs down near the footer like the other
   directory pages. */
@media (min-width: 768px) {
  body.page-id-99321 #sidebar1:has(.directory-copy) {
    align-self: stretch;
  }
}

/* ── HEADER LOGO: same metrics as Siteline's logo ──
   The SVG is sized like Siteline's .logo img (250px cap below 768px =
   70.762px tall, 312px cap above = 88.31px tall); the global .logo a
   padding rules (16/20/25/31-28 per breakpoint) then produce the exact
   same black-bar height as Siteline at every viewport width. */
/* Directory tagline dimmed to Siteline's perceived tone (R2-1): Siteline's
   tagline is a thin font that anti-aliases to ~rgb(141,141,141); white at this
   opacity over the #221F1F bar lands at the same shade. */
.directory-logo-svg .dir-tagline {
  opacity: 0.5;
}
.logo .directory-logo-svg {
  height: 70.767px; /* = Siteline img: 250px cap x (265.8/939) aspect */
  width: auto;
  max-width: 100%;
  vertical-align: middle; /* same as Siteline's .logo img — kills the baseline gap */
  overflow: visible; /* desktop wordmark shifts past the viewBox; don't clip it */
}
/* J16-1 (June 16) + R5-1 (June 17): on DESKTOP/TABLET only, re-lay the logo so
   the wordmark + tagline are OPTICALLY CENTERED in the bar (circle to their
   left). R5-1 removed the earlier 0.66in right shift (client: it pushed the
   lockup too far right) — the wordmark/tagline centre now sits on the bar
   centre (719.5 @1440) instead of +63px, i.e. each element's translateX is
   63.5px less than the June-16 values. The SVG markup keeps the ORIGINAL
   transforms, so MOBILE (<768) is unchanged and the logo still fits the narrow
   bar. transform-box/origin make these CSS transforms match the SVG attribute
   coordinate space. */
@media (min-width: 768px) {
  .directory-logo-svg .dir-wordmark,
  .directory-logo-svg .dir-tagline,
  .directory-logo-svg #svg-siteline-link {
    transform-box: view-box;
    transform-origin: 0 0;
  }
  .directory-logo-svg .dir-tagline {
    transform: translate(-51.336px, -15.4744px) scale(0.325802);
  }
  .directory-logo-svg .dir-wordmark {
    transform: translate(-58.8044px, -19.1044px) scale(0.33376);
  }
  .directory-logo-svg #svg-siteline-link {
    transform: translate(-51.1445px, -14.6328px) scale(0.302576);
  }
}
@media (min-width: 768px) {
  .logo .directory-logo-svg {
    height: 88.31px;
  }
}

/* ── STRUCTURE: match Siteline Proper grid exactly ──
   Landing/subcategory pages render a second #inner-content.container nested
   inside the page template's own container, insetting the date line and both
   columns by 15px per side (vertical dotted divider lands at a different x
   than on Siteline). Neutralize the inner container so the row/columns compute
   from the same base width as Siteline. This selector only ever matches on
   directory pages (Siteline never nests #inner-content). */
#inner-content #inner-content {
  width: 100%;
  max-width: none;
  padding-left: 0;
  padding-right: 0;
}

/* ── PAGE WRAP ── */
/* No horizontal padding: #ndic-main's own padding (15/30, same as Siteline)
   already places the accordion boxes at exactly Siteline's photo width. */
.page-wrap {

  margin: 0 auto;
  padding: 0 0 60px;
}

/* Recent Comments box -> footer gap, halved per design notes.
   Landing/subcategory (page 104416): the gap was 35px (WPBakery raw-html
   margin) + 30px (footer margin) = 65 after the line fix; 12 + 30 = 42px,
   half the original 85. Listing pages: was 50 (20 widget margin + 30 footer);
   widget margin removal + 25px footer margin = 25, half the original. */
.page-id-104416 .wpb_raw_code.wpb_raw_html {
  margin-bottom: 12px;
}
.single-directory_dir_ltg #footer {
  margin-top: 25px;
}

/* ── DATELINE ── */
.date-wrapper {
  position: relative;
  text-align: center;
  text-transform: uppercase;
  font-size: 13px;
  margin-bottom: 20px;
  padding: 0;
  margin-top: 0px;
}
.date-wrapper::before {
  content: "";
  position: absolute;
  top: 50%;
  margin-top: -1px;
  display: block;
  width: 100%;
  border-top: 1px dotted #000;
}
.date-wrapper span {
  position: relative;
  display: inline-block;
  background: #fff;
  padding: 0 10px;
  letter-spacing: 1.25px;
  margin-top: 2px;
  margin-bottom: 3px;
}
/* js_composer.min.css (loaded on directory pages only, not on Siteline)
   zeroes the span margin via `.wpb_text_column :last-child` — restore it so
   the wrapper is 29px tall like Siteline's and the dotted line (drawn at the
   wrapper's vertical center) sits at the identical y. */
.date-wrapper p span:last-child {
  margin-bottom: 3px;
}

#post-104416 .page-header{
    display: none;
}
#post-104416  button:focus{
    background:inherit!important;
    color:inherit!important;
    outline:unset!important;
}

/* ── MOBILE: stack sidebar below accordion ── */
@media (max-width: 767px) {
  .page-wrap {
    padding-left: 0;
    padding-right: 0;
  }
  .date-wrapper {
    /* container already provides the 15px inset on mobile (matches Siteline) */
    padding: 0;
  }
  .main-content {
    flex-direction: column;
  }
  #ndic-main {
    flex: 0 0 100%;
    max-width: 100%;
    width: 100%;
    /* keep Bootstrap's 15px right padding — same as Siteline at mobile */
  }
  .sidebar {
    flex: 0 0 100%;
    max-width: 100%;
    width: 100%;
    border-left: none;
    border-top: 4px double #e5e5e5;
    padding-left: 15px;
    padding-right: 15px;
    padding-top: 24px;
    margin-top: 24px;
  }
}

/* ── ACCORDION / CATEGORY BLOCKS ── */
/* Each category is a self-contained bordered box.
   Borders do NOT collapse — each box is fully outlined at all times,
   including when expanded. Margin-bottom creates the gap between boxes. */
.acc-item {
  border: 1px solid #ccc;
  margin-bottom: 8px;
  position: relative;
}

.acc-trigger {
  width: 100%;
  background: #fff;
  border: none;
  cursor: pointer;
  padding: 28px 20px;
  text-align: center;
  display: block;
  /* padding-bottom animates in sync with the panel collapse — without it the
     box visibly grew for a beat when closing (design notes: "just close") */
  transition: background 0.2s, padding-bottom 0.32s ease;
}
.acc-trigger:hover { background: #fafafa; }
.acc-trigger.open  { background: #fff;padding-bottom:0px; }

.acc-label {
  font-family: "Lato", "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 42px;
  font-weight: 800;
  color: #000;
  letter-spacing: 0.01em;
  text-transform: uppercase;
  display: block;
  line-height: 1.1;
}

/* ── SUBCATEGORY PANEL ── */
/* Sits inside the same bordered box — no extra border, just padding */
.acc-panel {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.32s ease;
  background: #fff;
}
.acc-panel.open {
  max-height: 1200px;
}

/* Subcategory list — centered, inside the box */
.sub-list {
  padding: 0 20px 28px;
  text-align: center;
}
/* Larger and bolder, with less space between items (design notes, Att. 11) */
.sub-list a {
  display: block;
  font-family: "Lato", "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 20px;
  font-weight: 700;
  line-height: 1.3;
  color: #000;
  text-decoration: none;
  padding: 2px 0;
  letter-spacing: 0.01em;
  transition: color 0.2s;
}
.sub-list a:hover { color: #686868; }
/* No-listings message: plain weight, nothing bold */
.sub-list .sub-list-empty {
  font-weight: 400;
  font-size: 16px;
}
/* J16-4 (June 16): "click here" linked but NOT underlined; greys on hover.
   (The email is unlinked in the template — plain text now.) */
.sub-list .sub-list-empty a {
  display: inline;
  font-size: 16px;
  font-weight: 400;
  padding: 0;
  text-decoration: none;
  color: #000;
}
.sub-list .sub-list-empty a:hover { color: #888; }







.business-item {
    text-decoration: none;
}

.business-item img,
.business-item-placeholder {
    display: block;
    width: 100%;
    height: 180px;
    object-fit: cover;
}

.business-item-placeholder {
    background: #f3f3f3;
    border: 1px solid #ddd;
    color: #777;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 14px;
    text-transform: uppercase;
    letter-spacing: .05em;
    text-align: center;
    padding: 10px;
}

.business-excerpt {
    line-height: 1.3;
    font-size: 12px;
    margin-top: 10px;
}

.drts img {
    
    object-fit: cover;
    aspect-ratio: 1.4;
}

/* grid */
.directory-grid {
    --grid-line-color: #312e2e;
    --grid-bg: #fff;
    --dot-on: 1px;
    --dot-off: 3px;

    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0;
    position: relative;
    background: var(--grid-bg);
}

/* full-height vertical dotted dividers for 3-col layout */
.directory-grid::before,
.directory-grid::after {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    width: 1px;
    pointer-events: none;
    background-image: repeating-linear-gradient(
        to bottom,
        var(--grid-line-color) 0 var(--dot-on),
        transparent var(--dot-on) var(--dot-off)
    );
    background-repeat: repeat-y;
    z-index: 5;
}

.directory-grid::before {
    left: 33.333333%;
    transform: translateX(-0.5px);
}

.directory-grid::after {
    left: 66.666666%;
    transform: translateX(-0.5px);
}

.directory-grid-item {
    position: relative;
    min-width: 0;
    background: transparent;
}

.directory-grid-item-inner {
    padding: 28px 22px 30px;
    text-align: center;
    height: 100%;
    background: var(--grid-bg);
}


/* horizontal dotted dividers between rows only */
.directory-grid-item:nth-child(n+4)::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 1px;
    pointer-events: none;
    background-image: repeating-linear-gradient(
        to right,
        var(--grid-line-color) 0 var(--dot-on),
        transparent var(--dot-on) var(--dot-off)
    );
    background-repeat: repeat-x;
    z-index: 6;
}

/* images square */
.business-item {
    display: block;
    text-decoration: none;
}

.business-item:hover,
.business-item:focus {
    text-decoration: none;
}
/* June 16 follow-up: business-name links (grid on subcategory pages) grey on
   hover — same grey as the other link hovers. */
.business-item:hover h4,
.business-item:focus h4 {
    color: #686868 !important;
}

.business-item img,
.business-item-placeholder {
    display: block;
    width: 100%;
    aspect-ratio: 1 / 1;
    object-fit: cover;
    margin: 0 auto;
}

.business-item img.img-thumbnail,
.business-item-placeholder.img-thumbnail {
    display: block;
    width: 100%;
    aspect-ratio: 1 / 1;
    object-fit: cover;
    padding: 0;
    border: 1px solid #cfcfcf;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
}

/* FA-3: force square subcategory thumbnails. The aspect-ratio:1/1 above was
   being defeated (height resolved to the image's natural 180px) — likely a
   global img height rule from a plugin stylesheet. Win it with !important and
   clear any min/max-height. Applies to every subcategory grid page. */
.directory-grid .business-item img.img-thumbnail,
.directory-grid .business-item-placeholder.img-thumbnail {
    width: 100% !important;
    height: auto !important;
    aspect-ratio: 1 / 1 !important;
    min-height: 0 !important;
    max-height: none !important;
    object-fit: cover !important;
}

.business-item-placeholder {
    background: #efefef;
    display: flex;
    align-items: center;
    justify-content: center;
}

.business-item-placeholder .placeholder {
    width: 100%;
    height: 100%;
    background: #efefef;
}

.business-excerpt {
    line-height: 1.3;
    font-size: 12px;
    text-align: center;
    margin: 0 auto;
    max-width: 100%;
}

/* filler cells stay visually empty but preserve the board */
.directory-grid-item-empty .business-item,
.directory-grid-item-empty .business-excerpt {
    display: none;
}

/* ── LISTING PAGE (Phase 5, design notes) ── */
/* J16-5 (June 16): business description centered (reverses the June-14
   flush-left, per client). Title/contact/testimonials already centered. */
.directory-listing-detail .listing-description,
.directory-listing-detail .listing-description p,
.directory-listing-detail .listing-description * {
    text-align: center;
}
/* The short blurb must never show on listing pages — some listings (e.g.
   Handlebar) have it pasted into their post content as a "page_subtitle" */
.directory-listing-detail .page_subtitle,
.directory-listing-detail #title_simple {
    display: none;
}
/* Dotted divider above the address: same 1px dotted style as the rest of the
   site (was 1px dashed top+bottom, reading heavier), with tighter spacing */
.listing-address-divider {
    width: 100px;
    border-top: 1px dotted #000;
}
.directory-listing-detail section.mb-4 {
    margin-bottom: 12px !important; /* less space above the divider */
}
.directory-listing-detail .listing-contact {
    margin-top: 12px !important;    /* less space below the divider */
}
/* Email, website and social links: plain black, not the site's red */
.directory-listing-detail .listing-contact a {
    color: #000;
}
/* J16-6 (June 16): all listing links (business-name, email, website, socials)
   grey on hover. Text links change colour; the icon links fade so they read
   grey too. */
.directory-listing-detail .listing-contact a:hover {
    color: #686868 !important;
}
/* business-name link WRAPS the <h1> (<a><h1>…</h1></a>); the heading inherits
   the link's inline black. Grey it on hover — both via the wrapping link and
   the heading's own :hover (the heading is the visible hover target). */
.directory-listing-detail a:hover > .single-title,
.directory-listing-detail a:hover .single-title,
.directory-listing-detail .single-title:hover {
    color: #686868 !important;
}
.directory-listing-detail .listing-contact a:hover .listing-social-icon {
    opacity: 0.55;
}
/* Social icons: Facebook square (no radius), both icons the same 16px size */
img.listing-social-icon {
    height: 16px !important;
    max-height: 16px !important;
    width: 16px !important; /* both PNGs are square; equal boxes guaranteed */
    padding: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: none !important;
    display: inline-block;
    vertical-align: -3px;
}
/* Testimonials: text column wider (side padding halved 48 -> 24), headline in
   the style of Siteline's Recent Comments box, less gray below the last quote */
/* J16-8 (June 16): on listings with NO testimonials (Handlebar, NDIC,
   Marisella) the space between the last contact line and the horizontal
   divider below should EXACTLY match the gap a listing WITH testimonials has
   between its last contact line and the top of the grey testimonials area
   (measured 24px). The site-wide footer rule sits 16px below the article, so
   8px of article padding-bottom gives 8+16 = 24px to the dotted line. Zero
   the contact's collapsing bottom margin so the gap is exact. */
.directory-listing-detail:not(:has(.listing-testimonials)) .listing-contact {
    margin-bottom: 0 !important;
}
.directory-listing-detail:not(:has(.listing-testimonials)) {
    padding-bottom: 8px;
}

/* J16-7 (June 16) + R5-3 (June 17): the three VISUAL (ink) gaps around the
   "OUR CLIENTS SAY…" headline must be equal — space above the headline = space
   below it = the gap between the last testimonial and the grey box's bottom
   edge. The bottom gap is the fixed reference (26px of ink). Headline line-
   height adds ~8px of empty space above its caps and the first quote adds ~15px
   below the headline, so to land all three at 26px ink: padding-top = 18 (top
   gap 26) and the title margin-bottom = 11 (below-headline gap 26). */
.listing-testimonials {
    padding: 18px 24px 12px !important;
}
.listing-testimonials .testimonials-title {
    font-size: 21px !important;
    font-weight: 700;
    line-height: 1.4;
    letter-spacing: 0.25px;
    text-transform: uppercase;
    color: #000;
    margin: 0 0 11px;
}
/* Testimonial quote body text matches the Recent Comments body text in the
   sidebar exactly: Lato 16px / 400 / normal / 24px / 0.4px / #000 (the only
   gaps were size 18->16 and letter-spacing 0.5->0.4; the rest already matched) */
.listing-testimonials blockquote {
    font-family: "Lato", "Helvetica Neue", Helvetica, Arial, sans-serif;
    font-size: 16px;
    font-weight: 400;
    font-style: normal;
    line-height: 24px;
    letter-spacing: 0.4px;
    color: #000;
    text-transform: none;
}

/* ── SUBCATEGORY PAGE (Phase 4, design notes) ── */
/* Headline 4pt (5.33px) larger than the previous 36px, with clearance below
   so descenders ("g", "p") never overlap the grid */
.subcat-title {
    font-size: 41.33px !important;
    line-height: 1.25;
    margin-top: 0;
    margin-bottom: 18px;
}
/* Business name one point larger (18 -> 19.33px) */
.directory-grid .directory-grid-item h4 {
    font-size: 19.33px !important;
}
/* Blurb two points larger (12 -> 14.67px), and tied closer to the name */
.directory-grid-item .business-excerpt {
    font-size: 14.67px;
    line-height: 1.35;
}
.directory-grid-item .business-item .my-2:last-child,
.directory-grid-item .business-item > .my-2 {
    margin-bottom: 2px !important;
}

/* When a row holds a single listing, the divider to its right stays but the
   far divider does not (Att. 13): the second consecutive filler cell masks
   the column line running along its left edge. Desktop 3-col layout only. */
@media (min-width: 992px) {
    .directory-grid-item-empty + .directory-grid-item-empty {
        position: relative;
    }
    .directory-grid-item-empty + .directory-grid-item-empty::after {
        content: "";
        position: absolute;
        top: 1px;      /* spare the horizontal row divider above */
        bottom: 0;
        left: -2px;    /* covers the 1px line centered on the column edge */
        width: 4px;
        background: var(--grid-bg, #fff);
        z-index: 6;
    }
}



/* tablet: 2 columns */
@media (max-width: 991.98px) {
    .directory-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .directory-grid::before {
        left: 50%;
    }

    .directory-grid::after {
        display: none;
    }

    .directory-grid-item:nth-child(n+4)::before {
        display: none;
    }

    .directory-grid-item:nth-child(n+3)::before {
        content: "";
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        height: 1px;
        pointer-events: none;
        background-image: repeating-linear-gradient(
            to right,
            var(--grid-line-color) 0 var(--dot-on),
            transparent var(--dot-on) var(--dot-off)
        );
        background-repeat: repeat-x;
        z-index: 6;
    }
}

/* mobile: 1 column */
@media (max-width: 767.98px) {
    .directory-grid {
        grid-template-columns: 1fr;
    }

    .directory-grid::before,
    .directory-grid::after {
        display: none;
    }

    .directory-grid-item:nth-child(n+3)::before {
        display: none;
    }

    .directory-grid-item:nth-child(n+2)::before {
        content: "";
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        height: 1px;
        pointer-events: none;
        background-image: repeating-linear-gradient(
            to right,
            var(--grid-line-color) 0 0,
            transparent 0 0
        );
        background-repeat: repeat-x;
        z-index: 6;
    }
}

/* Default inner spacing */
.directory-grid-item .directory-grid-item-inner {
    padding-top: 28px;
    padding-bottom: 30px;
}

/* =========================
   3 columns (lg and up)
   first row: items 1-3
   last row: last 3 items
   ========================= */
@media (min-width: 992px) {
    .directory-grid-item:nth-child(-n+3) .directory-grid-item-inner {
        padding-top: 0;
    }

    .directory-grid-item:nth-last-child(-n+3) .directory-grid-item-inner {
        padding-bottom: 0;
    }
}

/* =========================
   2 columns (md to lg-1)
   first row: items 1-2
   last row: last 2 items
   ========================= */
@media (min-width: 768px) and (max-width: 991.98px) {
    .directory-grid-item:nth-child(-n+2) .directory-grid-item-inner {
        padding-top: 0;
    }

    .directory-grid-item:nth-last-child(-n+2) .directory-grid-item-inner {
        padding-bottom: 0;
    }
}

/* =========================
   1 column (below md)
   first row: item 1
   last row: last item
   ========================= */
@media (max-width: 767.98px) {
    .directory-grid-item:first-child .directory-grid-item-inner {
        padding-top: 0;
    }

    .directory-grid-item:last-child .directory-grid-item-inner {
        padding-bottom: 0;
    }
}

@media (max-width: 991.98px) and (min-width: 768px) {
    .directory-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .directory-grid::before {
        left: 50%;
    }

    .directory-grid::after {
        display: none;
    }

    /* clear any desktop row-line logic */
    .directory-grid-item::before {
        display: none;
    }

    /* every item in rows after the first gets a top dotted line */
    .directory-grid-item:nth-child(n+3)::before {
        content: "";
        display: block;
        position: absolute;
        top: 0;
        left: 0;
        right: 0;
        height: 1px;
        pointer-events: none;
        background-image: repeating-linear-gradient(
            to right,
            var(--grid-line-color) 0 var(--dot-on),
            transparent var(--dot-on) var(--dot-off)
        );
        background-repeat: repeat-x;
        z-index: 6;
    }
}

/* end grid */
/* slideshow */
.listing-gallery {
    position: relative;
}

.listing-gallery-stage {
    position: relative;
    overflow: hidden;
    background: #f3f3f3;
}

.listing-gallery-item {
    display: none;
    /* !important: a generic figure rule adds 16px margin-bottom, which made the
       stage's grey background show as a bar under every gallery image */
    margin: 0 !important;
}

.listing-gallery-item.is-active {
    display: block;
}

.listing-gallery-image {
    display: block;
    width: 100%;
    height: auto;
    cursor: pointer;
}

.listing-gallery-arrow {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    z-index: 5;
    border: 0;
    background: transparent;
    color: #fff;
    padding: 0;
    width: 56px;
    height: 56px;
    line-height: 1;
    cursor: pointer;
    text-shadow: 0 2px 10px rgba(0,0,0,.35);
}
.listing-gallery-arrow:focus,.listing-gallery-arrow:hover,button.listing-lightbox-close:focus,button.listing-lightbox-close:hover{
    background: unset!important;
    outline: unset;
}
button.listing-lightbox-close{
    font-size: 56px !important;
    padding: 0px;
}

.listing-gallery-arrow span {
    display: block;
    font-size: 72px;
    font-weight: 700;
    line-height: 56px;
}

.listing-gallery-arrow-prev {
    left: 12px;
}

.listing-gallery-arrow-next {
    right: 12px;
}

.listing-gallery-thumbs {
    display: flex;
    gap: 10px;
    margin-top: 12px;
    flex-wrap: wrap;
}

.listing-gallery-thumb {
    border: 2px solid transparent;
    padding: 0;
    background: transparent;
    cursor: pointer;
}

.listing-gallery-thumb.is-active {
    border-color: #000;
    overflow: hidden;
    border-radius: 0px;
    border-width: 1px;
}

.listing-gallery-thumb img {
    display: block;
    width: 88px;
    height: 88px;
    object-fit: cover;
}

.listing-lightbox[hidden] {
    display: none !important;
}

.listing-lightbox {
    position: fixed;
    inset: 0;
    z-index: 99999;
}

.listing-lightbox-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(0,0,0,.85);
}

.listing-lightbox-dialog {
    position: absolute;
    z-index: 2;
    width: min(90vw, 1200px);
    margin: 4vh auto;
    height: 80vh;
    display: flex;
    align-items: center;
    justify-content: center;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
}

.listing-lightbox-stage {
    position: relative;
    width: fit-content;
    height: 100%;
}

.listing-lightbox-image {
    display: block;
    max-width: 100%;
    max-height: 100%;
    margin: 0 auto;
    object-fit: contain;
}

button.listing-lightbox-close {
    position: absolute;
    top: 14px;
    right: 18px;
    z-index: 10;
    border: 0;
    background: transparent;
    color: #fff;
    font-size: 48px!important;
    line-height: 0;
    cursor: pointer;
}
/* end slideshow */
select#media-attachment-filters {
    width: 100%;
    max-width: 100%;
}
.fas::before,
.fa-solid::before {
    content: var(--fa);
}
.drts-search-form-field .fas:before {
    content: " " !important;
    width: 14px;
    height:14px;
    display:block;
}

/* ============================================================
   STEP 2 — Add-listing form redesign (directory form4.png).
   Add-listing page only (id 99321). Right sidebar untouched.
   ============================================================ */

/* Form body = 2-column flex grid.
   Step 4 (note 1, Safari): pair spacing via justify-content, NOT percentage column-gap —
   % flex gaps resolve inconsistently in WebKit and can wrap the 48.5% pairs onto
   separate rows (the "huge space between fields in Safari" report). */
body.page-id-99321 .drts-display-name-form-default {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    justify-content: space-between;
    /* Safari (client PDF 7/4): WebKit can resolve this wrap-container's height against
       the stretched page row, and the default align-content:stretch then DISTRIBUTES the
       extra height as huge even gaps between every field row. Pack lines at the top. */
    align-content: flex-start;
}
/* invisible full-width row break (keeps Business email alone on its row) */
body.page-id-99321 .ndic-form-break { width: 100%; height: 0; margin: 0 !important; padding: 0; }
body.page-id-99321 .drts-display-name-form-default > * {
    width: 100%;
    margin: 0 0 18px 0;
    box-sizing: border-box;
}
/* Step 3.2: tight, even inter-field spacing to match directory form4.png.
   The Directories default puts 45px on each .drts-display-element (+24px on the inner
   field wrapper); tighten to an even 12px so the rhythm reads like the mockup. Section
   dividers keep their own (larger) spacing. */
body.page-id-99321 .drts-display-name-form-default > .drts-display-element,
body.page-id-99321 .drts-display-name-form-default > .ndic-testimonial-row {
    margin-bottom: 12px !important;
}
body.page-id-99321 .drts-display-name-form-default .drts-entity-form-field {
    margin-bottom: 0 !important;
}
/* single-line inputs/selects carry a 14px bottom margin that textareas don't (so input
   fields read looser than textarea rows); zero it so every gap is the 12px container.
   The name widget also has an extra 24px wrapper margin below First/Last — zero that too. */
body.page-id-99321 .drts-display-name-form-default .drts-bs-form-control {
    margin-bottom: 0 !important;
}
body.page-id-99321 [class*="drts-display-element-entity_form_name"] .drts-form-group {
    margin-bottom: 0 !important;
}
/* Paired half-width fields (flex-wrap lays them 2-per-row) */
body.page-id-99321 .drts-display-element-entity_form_email-1,
body.page-id-99321 .drts-display-element-entity_form_email-2,
body.page-id-99321 .drts-display-element-entity_form_phone-1,
body.page-id-99321 .drts-display-element-entity_form_phone-3,
body.page-id-99321 .drts-display-element-entity_form_url-1,
body.page-id-99321 .drts-display-element-entity_form_string-2,
body.page-id-99321 .drts-display-element-entity_form_string-3 {
    width: 48.5%;
}

/* Section headings + short centered dotted dividers between sections
   (100px centered, matching .listing-address-divider on the listing pages) */
/* Step 4 (note 4): tighter, SYMMETRIC divider spacing — last field bottom -> line =
   12(field)+4 = 16px, line -> heading = 16px, heading -> first field = 16px */
body.page-id-99321 .ndic-form-section {
    width: 100%;
    margin: 0 0 16px;
    padding-top: 0;
}
body.page-id-99321 .ndic-form-section::before {
    content: "";
    display: block;
    width: 100px;
    border-top: 1px dotted #000;
    /* bottom is 11px (not 16) because the heading's glyphs start ~5px below its
       line-box top — this makes the VISIBLE gap below the rule equal the 17px above */
    margin: 4px auto 11px;
}
body.page-id-99321 .ndic-form-section-first {
    margin-top: 0;
}
body.page-id-99321 .ndic-form-section-first::before { display: none; }
body.page-id-99321 .ndic-form-section-title {
    font-size: 22px;
    font-weight: 700;
    margin: 0;
    color: #221F1F;
}

/* Boxed inputs (labels are in-box placeholders) */
body.page-id-99321 .drts-display-name-form-default input[type="text"],
body.page-id-99321 .drts-display-name-form-default input[type="email"],
body.page-id-99321 .drts-display-name-form-default input[type="tel"],
body.page-id-99321 .drts-display-name-form-default input[type="url"],
body.page-id-99321 .drts-display-name-form-default textarea,
body.page-id-99321 .drts-display-name-form-default select {
    width: 100%;
    border: 1px solid #595959;
    border-radius: 0;
    padding: 13px 14px;
    font-size: 16px;
    font-family: inherit;   /* post_content is a wp-editor textarea (monospace by default) — match the rest */
    line-height: 1.3;
    background-color: #fff;
    box-shadow: none;
    box-sizing: border-box;
}
/* opacity .8 matches the plugin's own placeholder strength on the standard inputs, so
   the wp-editor textarea (Full description) reads identically to every other field */
body.page-id-99321 .drts-display-name-form-default ::placeholder { color: #6b6b6b; opacity: 0.8; }
/* the WP editor wraps the Full-description textarea in its own 1px #ccc border —
   remove it so the field is single-bordered like every other box */
body.page-id-99321 .drts-display-name-form-default .wp-editor-container { border: none; }
/* Step 4 (note 9b): no drag-to-resize corner lines on any form textarea */
body.page-id-99321 .drts-display-name-form-default textarea { min-height: 120px; resize: none; }
/* Step 4 (note 5): the tagline box = 2x the Business-name box height
   (!important: an autosize script sets an inline height on this textarea) */
body.page-id-99321 [class*="drts-display-element-entity_form_text-1"] textarea {
    height: 88px !important; min-height: 0;
}
/* Step 4 (screenshot 3): address block -> Business phone gap = the standard 12px.
   The address widget nests TWO .drts-form-group wrappers each carrying 24px, and the
   last sub-row already contributes 12px — zero the wrappers + the container. */
body.page-id-99321 .drts-display-name-form-default > [class*="drts-display-element-entity_form_location_address"] {
    margin-bottom: 0 !important; /* out-ranks the generic > .drts-display-element 12px */
}
/* zero ONLY the widget's wrapper groups — the four sub-field rows are .drts-form-groups
   too and must keep their 12px (street/city -> state/zip) */
body.page-id-99321 [class*="drts-display-element-entity_form_location_address"] .drts-form-group:not(.drts-form-type-textfield) {
    margin-bottom: 0 !important;
}
body.page-id-99321 [class*="entity_form_location_address"] .drts-form-type-location-address > .drts-form-type-textfield {
    margin: 0 0 12px !important;
}
/* the category select keeps its own 14px bottom margin (it's not a .drts-bs-form-control) */
body.page-id-99321 .drts-display-name-form-default select {
    margin-bottom: 0 !important;
}
/* the empty .drts-form-headers block above the form carries 32px that pushes the intro
   below the top of the vertical dotted line (note 2) */
body.page-id-99321 .drts-form-headers { margin-bottom: 0 !important; }
/* the WPBakery column wrapping the form adds 35px after the closing text, making the
   vertical dotted line overshoot the last line (note 12) */
body.page-id-99321 .wpb_text_column.wpb_content_element { margin-bottom: 0; }

/* Safari (client PDF 7/4, "huge space between fields"): the form sits inside the
   theme's flex .row + a WPBakery wrapper chain; WebKit resolves percentage/stretched
   heights down that chain (Chrome collapses them to content height), inflating the
   form container and each field element. Force content-based heights on every link
   from the column wrappers to the field elements so no percentage can resolve
   against a stretched ancestor. */
body.page-id-99321 .wpb_column,
body.page-id-99321 .vc_column-inner,
body.page-id-99321 .wpb_wrapper,
body.page-id-99321 .wpb_text_column,
body.page-id-99321 .drts.drts-main,
body.page-id-99321 .drts-form,
body.page-id-99321 .drts-display-name-form-default,
body.page-id-99321 .drts-display-name-form-default > .drts-display-element {
    height: auto !important;
}

/* Step 3: fields now carry native labels (shown in the admin editor); on the public
   form hide the label column + force the input column full width so it keeps the
   in-box placeholder look the client approved. */
body.page-id-99321 .drts-display-name-form-default .drts-bs-col-form-label,
body.page-id-99321 .drts-display-name-form-default .drts-entity-form-field > label { display: none !important; }
body.page-id-99321 .drts-display-name-form-default .drts-bs-col-sm-9 { flex: 0 0 100% !important; max-width: 100% !important; }

/* Step 3.1: Facebook / Instagram show placeholder text only on the public form (no logo).
   The admin editor keeps its FB/IG logos via the admin_print_styles hook in library/directory.php. */

/* First/Last name render 2-col inside the name widget */
body.page-id-99321 .drts-display-element-entity_form_name .drts-col-6 { flex: 0 0 48.5%; max-width: 48.5%; }

/* Address: hide sub-labels + map/autocomplete; 4 placeholder boxes in 2 columns */
body.page-id-99321 [class*="entity_form_location_address"] .drts-bs-col-form-label { display: none !important; }
body.page-id-99321 [class*="entity_form_location_address"] .drts-form-type-location-address {
    display: flex; flex-wrap: wrap; justify-content: space-between; align-content: flex-start; /* no % gap; pack lines (Safari) */
}
body.page-id-99321 [class*="entity_form_location_address"] .drts-form-type-location-address > :not(.drts-form-type-textfield) { display: none !important; }
body.page-id-99321 [class*="entity_form_location_address"] .drts-form-type-location-address > .drts-form-type-textfield {
    flex: 0 0 48.5%; max-width: 48.5%; margin: 0 0 12px;
}
body.page-id-99321 [class*="entity_form_location_address"] .drts-form-type-textfield > [class*="drts-bs-col"] {
    flex: 0 0 100%; max-width: 100%; padding-left: 0; padding-right: 0;
}

/* Field help/description text */
body.page-id-99321 .drts-display-name-form-default [class*="form-field-description"],
body.page-id-99321 .drts-display-name-form-default [class*="form-description"] { font-size: 15px; color: #333; margin: 4px 0 0; }
/* Step 4.1: descriptive text sits tighter (~8px) under its heading — image sections */
body.page-id-99321 [class*="drts-display-element-entity_form_wp_image"] [class*="drts-form-description"] {
    margin-top: -8px !important;
}

/* Testimonial: name field beside the quote box (px margin, not % gap — Safari) */
body.page-id-99321 .ndic-testimonial-row { display: flex; align-items: stretch; }
body.page-id-99321 .ndic-testimonial-text { flex: 1 1 auto; min-height: 130px; margin-right: 20px; }
body.page-id-99321 .ndic-testimonial-name { flex: 0 0 230px; align-self: flex-start; }

/* Submit button = Siteline blog-comment button */
body.page-id-99321 .drts-form button[name="_drts_form_submit[add]"],
body.page-id-99321 .drts-form button[name^="_drts_form_submit"] {
    text-transform: uppercase !important;
    color: #fff !important;
    background: #a1a1a1 !important;
    border: none !important;
    border-radius: 8px !important;
    font-weight: 400 !important;
    font-size: 14px !important;
    line-height: 1.2857 !important;
    padding: 16px 24px !important;
}
body.page-id-99321 .drts-form button[name^="_drts_form_submit"]:hover { background: #000 !important; color: #fff !important; }

/* Step 3.3: intro (above form) + closing (below submit) paragraphs = body text;
   email is a subtle link that greys on hover. Plus a short centered rule after the images. */
/* Step 4 (note 2): no "Add Listing" headline on the form page */
body.page-id-99321 h1.page-title { display: none; }
/* Step 5: no "Thank You" headline on the thank-you page either (dev id 106571 — remap on live) */
body.page-id-107470 h1.page-title { display: none; }

body.page-id-99321 .ndic-form-intro {
    font-size: 17px;
    line-height: 1.5;
    color: #221F1F;
    margin: 0 0 14px;
}
/* Step 4 (note 11): closing = same size/style as the intro text (overrides the earlier
   22px-bold instruction) */
body.page-id-99321 .ndic-form-closing {
    font-size: 17px;
    line-height: 1.5;
    color: #221F1F;
    margin: 16px 0 0; /* = the spacing above the Submit button (screenshot 4) */
}
/* Step 4 (note 9): the testimonials line reads like the thumbnail-image description
   text, not a bold section heading */
body.page-id-99321 .ndic-form-section-plain .ndic-form-section-title {
    font-size: 15px;
    font-weight: 400;
    color: #333;
}
body.page-id-99321 .ndic-form-intro a,
body.page-id-99321 .ndic-form-closing a { color: inherit; text-decoration: none; }
body.page-id-99321 .ndic-form-intro a:hover,
body.page-id-99321 .ndic-form-closing a:hover { color: #888; }
body.page-id-99321 .ndic-form-rule { width: 100px; border-top: 1px dotted #000; margin: 4px auto 16px; }

/* Mobile/narrow: stack all 2-column pairs to single column */
@media (max-width: 900px) {
    body.page-id-99321 .drts-display-name-form-default > *,
    body.page-id-99321 .drts-display-element-entity_form_email-1,
    body.page-id-99321 .drts-display-element-entity_form_phone-1,
    body.page-id-99321 .drts-display-element-entity_form_phone-3,
    body.page-id-99321 .drts-display-element-entity_form_url-1,
    body.page-id-99321 .drts-display-element-entity_form_string-2,
    body.page-id-99321 .drts-display-element-entity_form_string-3 { width: 100%; }
    body.page-id-99321 [class*="entity_form_location_address"] .drts-form-type-location-address > .drts-form-type-textfield,
    body.page-id-99321 .drts-display-element-entity_form_name .drts-col-6 { flex: 0 0 100%; max-width: 100%; }
    body.page-id-99321 .ndic-testimonial-row { flex-direction: column; }
    body.page-id-99321 .ndic-testimonial-text { margin-right: 0; }
    body.page-id-99321 .ndic-testimonial-name { flex: 0 0 auto; align-self: stretch; margin-top: 10px; }
}

/* ============================================================
   Step 7 — Mobile Updates (Mobile Updates.docx), directory only.
   Scoped via #sidebar1:has(.directory-copy) / directory page ids so
   Siteline Proper's mobile layout (incl. its 4px double sidebar line)
   is untouched.
   ============================================================ */
@media (max-width: 767px) {
    /* M1/M3: the stacked sidebar's "double line" becomes a single dotted line
       (style.css gives .sidebar a 4px double top border on mobile — Siteline keeps it) */
    #sidebar1.sidebar:has(.directory-copy) {
        border-top: 1px dotted #000;
        padding-top: 28px;
    }
    /* M1: landing page — trim the oversized gap between the last category box and
       the line so above ≈ below (was 92px vs 28px). Subcategory pages share
       page-id 104416 (rewrite + query vars), so key on the accordion, which
       only the landing renders. */
    body.page-id-104416:has(.acc-item) #sidebar1.sidebar:has(.directory-copy) {
        margin-top: -40px;
    }
    /* M2: subcategory grid — short dotted divider between stacked listings.
       Reference rhythm = the 8px between an image's bottom border and the
       business name. The card's own padding (28px top / 30px bottom) makes
       the space around the divider, so cards touching a divider get 8px on
       that side. Filler items (no <a>) don't count — the last real card
       keeps its 30px bottom padding for the sidebar-line gap below. */
    .directory-grid-item + .directory-grid-item::before {
        content: "";
        display: block;
        width: 100px;
        border-top: 1px dotted #000;
        margin: 0 auto;
    }
    .directory-grid-item { margin-bottom: 0; }
    .directory-grid-item:has(+ .directory-grid-item a) .directory-grid-item-inner {
        padding-bottom: 8px;
    }
    .directory-grid-item + .directory-grid-item:has(a) .directory-grid-item-inner {
        padding-top: 8px;
    }
    /* M2: last listing — same 8px from its description to the full-width
       sidebar line. Pinned on the last REAL card itself (the theme zeroes
       :last-child's bottom padding, but with fillers present the last real
       card isn't :last-child and keeps 30px — so the padding is set
       explicitly and the sidebar sits flush). */
    .directory-grid-item:has(a):not(:has(~ .directory-grid-item a)) .directory-grid-item-inner {
        padding-bottom: 8px;
    }
    body.page-id-104416:has(.directory-grid) #sidebar1.sidebar:has(.directory-copy) {
        margin-top: 0;
    }
    /* M2: the grid pads out desktop rows with empty filler items — on mobile they
       render as orphan dividers + dead space after the last listing; hide them
       (real items always contain the listing <a>) */
    .directory-grid-item:not(:has(a)) { display: none; }
    /* M2: listing detail — only the sidebar's line should show before the
       intro/register, 8px below the testimonials (same rhythm as the subcat
       dividers). The empty article-footer (48px incl. its rule), the article's
       24px bottom margin and the sidebar's default 24px top margin made a
       ~96px gap. Directory listings only; Siteline posts keep all of it. */
    body.single-directory_dir_ltg .article-footer { display: none; }
    body.single-directory_dir_ltg #ndic-main article { margin-bottom: 0; }
    body.single-directory_dir_ltg #sidebar1.sidebar:has(.directory-copy) {
        margin-top: 8px;
    }
    /* M3: signup + thank-you pages only — hide the sidebar intro + "LOCAL BUSINESS?
       REGISTER HERE" right after someone has just submitted (mobile only; desktop and
       all other directory pages keep them). Dev thank-you id 106571 (live: 107470). */
    body.page-id-99321 #custom_html-2,
    body.page-id-107470 #custom_html-2 {
        display: none;
    }
}

/* ============================================================
   Step 8 — payment form (page 104428, same id on live).
   In-field placeholders only: hide the First/Last sub-labels under
   the name inputs (the main Name/Email/Company labels are hidden via
   each field's GF hidden-label setting).
   ============================================================ */
body.page-id-104428 .gform_wrapper .ginput_complex label,
body.page-id-104428 .gform_wrapper .ginput_complex legend {
    display: none;
}

/* ============================================================
   Step 9 — mobile header: the full-bleed wordmark ran under the
   hamburger (40px overlap at phone widths). Scale the whole SVG
   artwork down — a transform doesn't affect layout, so the black
   bar keeps its exact Siteline-matched height while the lockup
   gains clearance on both sides. Hamburger untouched per Nick.
   ============================================================ */
@media (max-width: 767px) {
    .directory-logo-svg {
        transform: scale(0.82);
        transform-origin: 60px 50%;
    }
}

/* Step 9b — mobile tagline parity with Siteline: the Directory's tagline
   rendered ~6px tall at phone widths vs Siteline's ~9px (the SVG shrinks
   linearly with viewport width, then the Step-9 0.82 header scale compounded
   it). Scale the tagline group 1.5x about its own center — the full transform
   replaces the baked attribute (same technique as the desktop logo rules),
   recomputed to keep the tagline centered exactly where it is. Wordmark,
   circle, hamburger clearance and bar height are untouched. */
@media (max-width: 767px) {
    .directory-logo-svg .dir-tagline {
        /* x recenters the tagline under THE DIRECTORY wordmark (not the
           full lockup incl. the circle), matching the desktop relationship */
        transform: translate(-121.50px, -49.880px) scale(0.439833);
    }
}

/* Step 9c — payment page (form + its post-payment confirmation view, page
   104428 on both sites): hide the "LOCAL BUSINESS? REGISTER HERE" intro
   widget at ALL widths — confusing mid-payment. Other directory pages keep it. */
body.page-id-104428 #custom_html-2 {
    display: none;
}

/* ============================================================
   Step 10 — directory search results (the drts listings view, which
   only renders on the Listings page): match Siteline's search-results
   styling. The result rows already use the theme's article markup via
   the drts summary template override; what differed was the plugin's
   view chrome and the heading.
   ============================================================ */
/* hide the plugin's result-count / filter / sort / layout-switch bar
   (!important: the plugin's own d-sm-grid utility class is !important) */
#ndic-main .drts-view-nav {
    display: none !important;
}
/* heading styled like Siteline's "Search results for:" archive title
   (24px / 800 / left; was inheriting 22px centered) */
#ndic-main:has(.drts-view-entities) h1.page-title {
    font-size: 24px;
    font-weight: 800;
    text-align: left;
}

/* Step 10b — search-result rows: exact Siteline typography. On the listings
   page the rows inherit the generic page h1/ul styles instead of Siteline's
   scoped .heading/.rubric rules (measured: 40px/500 title vs Siteline's
   24px/800; 32px rubric indent vs 0). .directory-post-block exists only in
   the drts summary override, so this touches nothing else. */
#ndic-main .directory-post-block h1.heading {
    font-size: 24px;
    font-weight: 800;
    line-height: 30px;
}
#ndic-main .directory-post-block .rubric ul {
    padding-left: 0;
}
#ndic-main .directory-post-block p {
    margin-bottom: 16px;
}

/* Step 10c — search results (the only page with the drts entities view):
   like the add-listing exception above, let the sidebar stretch so the
   vertical dotted line runs the full height of the results, matching
   Siteline's search page. Listing pages keep the flex-start behavior
   (line ends at Recent Comments, J16-9). */
@media (min-width: 768px) {
    .row:has(.drts-view-entities) #sidebar1:has(.directory-copy) {
        align-self: stretch;
    }
}

/* Step 11 — search polish: heading→first-result gap matches Siteline's
   16px. The 32px came from the Listings page's EMPTY page-builder row
   (its bottom margin renders as dead space above the injected results);
   hide it here and give the heading Siteline's 16px below. */
#ndic-main .drts-view-entities-header {
    /* empty once the nav inside it is hidden, but its 24px bottom margin
       still collapses upward as dead space above the results */
    display: none !important;
}
#ndic-main:has(.drts-view-entities) h1.page-title {
    padding-bottom: 0;
    margin-bottom: 16px;
}
#sidebar1 input.drts-search-keyword-text::placeholder {
    /* newsletter placeholder measures #333 at opacity 1; the plugin forces
       0.8 opacity on its own placeholder, hence the !importants */
    color: #333 !important;
    opacity: 1 !important;
}
