/**
 * Trestle Bridge — Consolidated Widget & Shortcode Styles
 *
 * All CSS for Elementor widgets AND shortcode output lives here so
 * it can be registered via wp_enqueue_style / Elementor get_style_depends().
 * This eliminates inline <style> blocks and static-$printed guard issues.
 */

/* ================================================================
   Design Tokens  (CSS Custom Properties)
   Override these in your theme or Elementor Custom CSS to rebrand.
   ================================================================ */
:root{
    --tb-primary:#132d40;
    --tb-primary-dark:#021c40;
    --tb-secondary:#1c3d6e;
    --tb-accent:#e65616;
    --tb-cta:#ef0016;
    --tb-cta-hover:#ff1830;
    --tb-card-bg:#242424;
    --tb-card-title-font:"Roboto Slab",Georgia,serif;
    --tb-card-text:#fff;
    --tb-card-price:#f0dfbe;
    --tb-icon-accent:#ef2433;
    --tb-body-text:#1e293b;
    --tb-muted-text:#4f5c69;
    --tb-border:#dfe2e6;
    --tb-surface:#f4f5f7;
}

/* ================================================================
   Mortgage Calculator  (.trestle-mortgage-calculator / .tbmc-*)
   ================================================================ */
.trestle-mortgage-calculator{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;padding:20px;color:#1e293b}
.tbmc-form{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin-bottom:20px}
.tbmc-field label{display:block;font-size:12px;font-weight:700;text-transform:uppercase;margin-bottom:5px;color:#64748b}
.tbmc-field input,.tbmc-field select{width:100%;height:40px;border:1px solid #cbd5e1;border-radius:8px;padding:0 10px}
.tbmc-result{text-align:center;padding-top:15px;border-top:1px solid #e2e8f0}
.tbmc-result h3{font-size:14px;margin:0 0 5px;color:#64748b}
.tbmc-monthly-payment{font-size:32px;font-weight:800;color:#0f172a}
.tbmc-rate-source{font-size:.75em;opacity:.55;margin:.5em 0 0;line-height:1.3}
.tbmc-disclaimer{font-size:.8em;opacity:.65;margin:.75em 0 0;line-height:1.4}

/* ================================================================
   Gallery  (.trestle-listing-gallery / .tbg-*)
   ================================================================ */
.tbg-wrap{box-sizing:border-box}
.trestle-listing-gallery.tbg-layout-grid{display:grid;grid-template-columns:repeat(var(--tbg-columns,3),1fr);gap:10px}
.tbg-item{min-width:0}
.tbg-item img{width:100%;height:200px;object-fit:cover;border-radius:8px;cursor:pointer;transition:transform .2s}
.tbg-item img:hover{transform:scale(1.02)}
.tbg-cta{display:inline-flex;align-items:center;justify-content:center;gap:8px;text-decoration:none;font-weight:600;text-transform:uppercase;letter-spacing:.05em;transition:background .2s,color .2s,opacity .2s;cursor:pointer;box-sizing:border-box;padding:.8em 1.6em;font-size:1em}
.tbg-cta:hover{opacity:.85}
.tbg-cta i,.tbg-cta svg{font-size:1em;width:1em;height:1em;flex-shrink:0}
.tbg-cta--full{display:flex;width:100%}

/* ================================================================
   Property Browser  (.trestle-property-browser / .tbpb-*)
   ================================================================ */
.trestle-property-browser{margin:14px 0 30px}

/* -- Filters -- */
.tbpb-filters{
    --tbpb-filter-label-color:#4f5c69;
    --tbpb-filter-input-bg:#fff;
    --tbpb-filter-input-border:#c9cfd5;
    --tbpb-filter-input-color:#1f2a33;
    --tbpb-filter-placeholder-color:#8a96a3;
    --tbpb-filter-focus-border:#132d40;
    background:#f4f5f7;
    border:1px solid #dfe2e6;
    border-radius:14px;
    padding:16px;
    margin:0 0 22px
}
.tbpb-filters__grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}
.tbpb-field{display:flex;flex-direction:column;gap:6px}
.tbpb-field>span{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--tbpb-filter-label-color,#4f5c69)}
.tbpb-field input,.tbpb-field select{
    height:40px;
    border:1px solid var(--tbpb-filter-input-border,#c9cfd5);
    border-radius:10px;
    padding:0 12px;
    background:var(--tbpb-filter-input-bg,#fff);
    color:var(--tbpb-filter-input-color,#1f2a33);
    -webkit-text-fill-color:var(--tbpb-filter-input-color,#1f2a33);
    caret-color:var(--tbpb-filter-input-color,#1f2a33);
    font-size:14px;
    opacity:1;
    transition:border-color .15s ease,box-shadow .15s ease
}
.tbpb-field input::placeholder{
    color:var(--tbpb-filter-placeholder-color,#8a96a3);
    opacity:1
}
.tbpb-field input:focus,.tbpb-field select:focus{
    border-color:var(--tbpb-filter-focus-border,#132d40);
    box-shadow:0 0 0 2px rgba(19,45,64,.12);
    outline:none
}
form.tbpb-filters{margin:0}
.tbpb-filters__actions{display:flex;gap:10px;margin-top:14px;align-items:center;flex-wrap:wrap}
.tbpb-btn{display:inline-flex;align-items:center;justify-content:center;height:40px;padding:0 16px;border-radius:10px;font-weight:700;text-decoration:none;border:0;cursor:pointer}
.tbpb-btn--apply{background:var(--tbpb-btn-bg,var(--tb-primary));color:var(--tbpb-btn-color,#fff)}
.tbpb-btn--apply:hover{background:var(--tbpb-btn-bg-hover,var(--tb-cta-hover));color:var(--tbpb-btn-color-hover,#fff)}
.tbpb-btn--reset{background:#fff;color:#334756;border:1px solid #c9cfd5}

.tbpb-filters--module{margin:0 0 16px}
.tbpb-filters--compact .tbpb-filters__grid{grid-template-columns:repeat(4,minmax(0,1fr))}
.tbpb-filters--compact .tbpb-filters__actions{margin-top:10px}

/* -- Status tabs -- */
.tbpb-status-tabs{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 16px}
.tbpb-status-tab,.tbpb-status-tab:visited{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:999px;border:1px solid #d0d6dc;background:#fff;color:#31414e;text-decoration:none;font-weight:700;font-size:13px}
.tbpb-status-tab span{font-weight:600;color:#5b6c79}
.tbpb-status-tab:hover{border-color:#b9c5cf;background:#f4f8fb;color:var(--tb-primary)}
.tbpb-status-tab.is-active,.tbpb-status-tab.is-active:visited{background:var(--tb-primary);border-color:var(--tb-primary);color:#fff}
.tbpb-status-tab.is-active span{color:#d8e1e8}

/* -- Results header -- */
.tbpb-results-header{border:1px solid #dfe2e6;background:#fff;border-radius:14px;padding:14px 16px;margin:0 0 16px}
.tbpb-results-header__top{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px}
.tbpb-results-header__title{margin:0;font-size:24px;line-height:1.1;color:#1f2a33}
.tbpb-results-header__count{margin:6px 0 0;color:#4f5c69;font-size:14px}
.tbpb-sort-form{margin:0}
.tbpb-sort-form label{display:flex;flex-direction:column;gap:4px}
.tbpb-sort-form label>span{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#4f5c69}
.tbpb-sort-form select{height:38px;border:1px solid #c9cfd5;border-radius:10px;padding:0 10px;background:#fff;color:#1f2a33;min-width:210px;font-size:14px}
.tbpb-results-header__filters{margin-top:12px}

/* -- Active filters -- */
.tbpb-active-filters{margin:0}
.tbpb-active-filters__title{margin:0 0 8px;font-size:13px;line-height:1.2;letter-spacing:.06em;text-transform:uppercase;color:#4f5c69}
.tbpb-active-filters__chips{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.tbpb-filter-chip,.tbpb-filter-chip:visited{display:inline-flex;align-items:center;gap:6px;padding:7px 10px;border-radius:999px;background:#f4f8fb;border:1px solid #c8d6e3;color:#1f4e69;text-decoration:none;font-size:13px;font-weight:700}
.tbpb-filter-chip:hover{background:#e7f1f8;border-color:#afc3d4}
.tbpb-filter-clear,.tbpb-filter-clear:visited{display:inline-flex;align-items:center;padding:7px 10px;border-radius:999px;border:1px dashed #b7c3cd;color:#4f5c69;text-decoration:none;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em}
.tbpb-filter-clear:hover{border-color:#97a8b5;color:#2f3d49;background:#f7fafc}

/* -- Card grid -- */
.tbpb-grid{display:grid;grid-template-columns:repeat(var(--tbpb-columns,3),minmax(0,1fr));gap:24px;align-items:stretch}
.tbpb-card{background:var(--tb-card-bg);border-radius:14px;overflow:hidden;box-shadow:0 14px 28px rgba(0,0,0,.14);display:flex;flex-direction:column;height:100%;transition:transform .2s ease,box-shadow .2s ease;container-type:inline-size}
.tbpb-card:hover{transform:translateY(-4px);box-shadow:0 18px 36px rgba(0,0,0,.18)}
.tbpb-card__media{position:relative;display:block;aspect-ratio:4/3;background:#2f3d49;text-decoration:none}
.tbpb-card__image{width:100%;height:100%;object-fit:cover;display:block}
.tbpb-card__placeholder{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:linear-gradient(145deg,#6b7785,#8a97a6);color:#ecf0f3;font-weight:700;letter-spacing:.05em;text-transform:uppercase;font-size:12px}
.tbpb-card__badge{position:absolute;top:12px;left:12px;background:rgba(0,0,0,.58);backdrop-filter:blur(2px);color:#fff;border:1px solid rgba(255,255,255,.34);padding:6px 10px;border-radius:999px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em}
.tbpb-card__content{padding:clamp(14px,2vw,22px);display:flex;flex-direction:column;gap:14px;height:100%;min-width:0}
.tbpb-card__title{margin:0;font-family:var(--tb-card-title-font);font-size:clamp(31px,2.5vw,41px);line-height:1.08;font-weight:700;letter-spacing:.01em;min-height:0;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
.tbpb-card__title a,.tbpb-card__title a:visited,.tbpb-card__title a:hover{color:var(--tb-card-text);text-decoration:none}
.tbpb-card__price-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;margin:0;min-height:0}
.tbpb-card__price{margin:0;color:var(--tb-card-price);font-size:clamp(22px,2vw,26px);line-height:1;font-weight:800;letter-spacing:.01em;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tbpb-card__cta,.tbpb-card__cta:visited{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--tb-cta);color:#fff;padding:10px 16px;border-radius:12px;text-decoration:none;font-weight:800;font-size:clamp(12px,1.05vw,16px);letter-spacing:.03em;text-transform:uppercase;white-space:nowrap;opacity:1;border:0;line-height:1.1;max-width:100%}
.tbpb-card__cta:hover,.tbpb-card__cta:focus{background:var(--tb-cta-hover);color:#fff}
.tbpb-card__cta:focus-visible{outline:2px solid #fff;outline-offset:2px}
.tbpb-card__cta-arrow{font-size:18px;line-height:1}
.tbpb-card__meta{list-style:none;margin-top:auto;padding:0;display:flex;flex-wrap:wrap;gap:12px 14px;border-top:1px solid rgba(255,255,255,.1);padding-top:14px}
.tbpb-card__meta li{display:flex;align-items:center;gap:6px;color:var(--tb-card-text);font-size:14px;min-width:0}
.tbpb-card__meta li span{min-width:0}
.tbpb-icon{width:15px;height:15px;display:inline-flex;color:var(--tb-icon-accent);flex:0 0 15px}
.tbpb-icon svg{width:100%;height:100%;display:block;fill:currentColor}

/* -- Pagination -- */
.tbpb-pagination{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:24px}
.tbpb-pagination__item a,.tbpb-pagination__item span{display:inline-flex;align-items:center;justify-content:center;min-width:38px;height:38px;padding:0 12px;border-radius:9px;border:1px solid #c9cfd5;background:#fff;color:#1f2a33;text-decoration:none;font-size:14px;font-weight:700}
.tbpb-pagination__item .current{background:var(--tb-primary);color:#fff;border-color:var(--tb-primary)}

/* -- Empty state -- */
.tbpb-empty{padding:26px;border:1px dashed #ccd3d9;border-radius:12px;background:#f8fafb;color:#4f5c69;text-align:center}

/* ================================================================
   Similar Properties / Crosslinks / Breadcrumbs / Prev-Next
   ================================================================ */
.trestle-similar-properties{margin:22px 0 30px}
.tbsp-title{margin:0 0 14px;font-size:30px;line-height:1.1;color:#1f2a33}
.trestle-similar-properties .tbpb-grid{gap:18px}
.trestle-similar-properties .tbpb-card__title{font-size:34px}
.trestle-similar-properties .tbpb-card__price{font-size:24px}
.tbsp-empty,.tbsl-empty{padding:14px;border:1px dashed #ccd3d9;border-radius:10px;background:#f8fafb;color:#4f5c69}

.trestle-listing-crosslinks{margin:18px 0 26px}
.tbsl-title{margin:0 0 10px;font-size:24px;color:#1f2a33}
.tbsl-chips{display:flex;flex-wrap:wrap;gap:10px}
.tbsl-chip{display:inline-flex;align-items:center;padding:9px 14px;border-radius:999px;background:#edf3f7;border:1px solid #ccd9e2;color:#164154;text-decoration:none;font-weight:700;font-size:14px}
.tbsl-chip:hover{background:#dceaf3;color:#0f3341}

.trestle-listing-breadcrumbs{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:12px 0 20px;font-size:13px;color:#556675}
.trestle-listing-breadcrumbs a{color:#1a4b66;text-decoration:none}
.trestle-listing-breadcrumbs a:hover{text-decoration:underline}
.trestle-listing-breadcrumbs .sep{opacity:.58}
.trestle-listing-breadcrumbs .current{color:#2f3d4a;font-weight:700}

.trestle-listing-prev-next{margin:20px 0 28px}
.tbpn-title{margin:0 0 10px;font-size:23px;color:#1f2a33}
.tbpn-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.tbpn-link{display:block;padding:12px 14px;border-radius:12px;border:1px solid #d4dce1;background:#fff;color:#1d2f3c;text-decoration:none;min-height:88px}
.tbpn-link strong{display:block;margin-top:5px;font-size:16px;line-height:1.2}
.tbpn-label{display:block;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:#5e6f7d;font-weight:700}
.tbpn-link:hover{border-color:#b8c7d0;background:#f6fafc}
.tbpn-link--next{text-align:right}
.tbpn-link--empty{background:transparent;border:1px dashed #d5dde2}

/* ================================================================
   Archive Grid  (.trestle-archive-grid)
   ================================================================ */
.trestle-archive-grid{position:relative}
.trestle-archive-grid.is-loading{opacity:.6;pointer-events:none;transition:opacity .15s ease}
.trestle-archive-grid .tbpb-pagination--top{margin:0 0 16px}
.trestle-archive-grid .tbpb-filters{margin:0 0 18px}
.trestle-archive-grid .tbpb-filters--compact .tbpb-filters__grid{grid-template-columns:repeat(4,minmax(0,1fr))}

/* ================================================================
   AJAX Region Loading State
   ================================================================ */
[data-trestle-ajax]{position:relative;transition:opacity .15s ease}
[data-trestle-ajax].is-loading{opacity:.5;pointer-events:none}
[data-trestle-ajax].is-loading::after{content:"";position:absolute;inset:0;z-index:10;cursor:wait}

/* ================================================================
   Listing Hero  (.tblh-*)
   ================================================================ */
.tblh-card{overflow:hidden}
.tblh-grid{display:flex;flex-wrap:wrap;align-items:stretch}
.tblh-layout--gallery-right{flex-direction:row-reverse}
.tblh-layout--gallery-top{flex-direction:column}
.tblh-layout--gallery-top .tblh-gallery-col,
.tblh-layout--gallery-top .tblh-details-col{width:100%}
.tblh-gallery-col{flex-shrink:0}
.tblh-details-col{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center}
.tblh-hero-img{width:100%;height:100%;object-fit:cover;display:block}
.tblh-hero-img--empty{background:#e5e7eb;min-height:200px}
.tblh-thumbs{display:grid;grid-template-columns:repeat(var(--tblh-thumb-cols,5),1fr);margin-top:6px}
.tblh-thumb{width:100%;height:80px;object-fit:cover;cursor:pointer;display:block}
.tblh-title{margin:0 0 .5em}
.tblh-description{margin-bottom:1.2em;line-height:1.6}
.tblh-specs-title{margin:0 0 .75em;font-size:1.1em;text-transform:uppercase;letter-spacing:.06em;font-weight:600}
.tblh-specs-grid{display:grid;gap:16px 24px}
.tblh-spec{display:flex;align-items:center;gap:10px;min-width:0}
.tblh-spec-icon{flex-shrink:0;width:20px;height:20px;display:flex;align-items:center;justify-content:center;opacity:.7}
.tblh-spec-icon svg{width:18px;height:18px}
.tblh-spec-label{font-size:.85em;opacity:.65;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}
.tblh-spec-value{font-weight:700;white-space:nowrap}
.tblh-spec-empty{opacity:.3}
.tblh-specs-grid--stacked .tblh-spec{flex-direction:column;align-items:flex-start;gap:4px}
.tblh-specs-grid--stacked .tblh-spec-label{order:-1;display:flex;align-items:center;gap:6px}
.tblh-specs-grid--stacked .tblh-spec-icon{order:-2}
.tblh-specs-grid--stacked .tblh-spec-value{font-size:1.15em}
.tblh-mode--details_only>.tblh-details-col{width:100%}
.tblh-mode--gallery_only>.tblh-gallery-col{width:100%}
.tblh-price{margin:1.2em 0}
.tblh-price-label{display:block;text-transform:uppercase;font-size:.85em;letter-spacing:.05em}
.tblh-price-value{display:block;font-size:1.8em;font-weight:700;line-height:1.2}
.tblh-cta{display:inline-flex;align-items:center;justify-content:center;gap:8px;text-decoration:none;font-weight:600;text-transform:uppercase;letter-spacing:.05em;transition:background .2s,color .2s;cursor:pointer;box-sizing:border-box;padding:.8em 1.6em;font-size:1em}
.tblh-cta i,.tblh-cta svg{font-size:1em;width:1em;height:1em;flex-shrink:0}
.tblh-cta--full{display:flex;width:100%}

/* ================================================================
   Listing Details Section  (.tbls-*)
   ================================================================ */
.tbls{box-sizing:border-box}
.tbls-title{margin:0 0 .75em;font-size:1.2em;font-weight:700;letter-spacing:.02em}

/* Shared item base */
.tbls-item{box-sizing:border-box}
.tbls-label{margin:0;font-weight:400;opacity:.6;text-transform:uppercase;font-size:.8em;letter-spacing:.04em}
.tbls-value{margin:0;font-weight:700;font-size:1em;overflow-wrap:break-word;word-break:break-word}

/* Table layout — horizontal key-value rows */
.tbls-list--table{list-style:none;margin:0;padding:0}
.tbls-list--table .tbls-item{display:flex;align-items:baseline;gap:12px;padding:.65em 0;border-bottom:1px solid rgba(128,128,128,.15)}
.tbls-list--table .tbls-item:last-child{border-bottom:none}
.tbls-list--table .tbls-label{flex:0 0 40%;min-width:0}
.tbls-list--table .tbls-value{flex:1;min-width:0}

/* Grid layout — card-style cells */
.tbls-list--grid{display:grid;gap:12px;list-style:none;margin:0;padding:0}
.tbls-list--grid .tbls-item{display:flex;flex-direction:column;gap:4px;padding:.75em 1em;background:rgba(128,128,128,.06);border-radius:8px}
.tbls-list--grid .tbls-label{order:-1}
.tbls-list--grid .tbls-value{font-size:1.1em}

/* ================================================================
   Detail Tabs  (.tbldt-*)
   ================================================================ */
.tbldt-tabs{display:flex;flex-wrap:wrap;border-bottom:1px solid #e5e7eb;margin-bottom:0}
.tbldt-tab{background:none;border:none;border-bottom:3px solid transparent;cursor:pointer;padding:.75em 1.2em;font-weight:500;transition:color .2s,border-color .2s,background .2s}
.tbldt-tab:focus{outline:2px solid currentColor;outline-offset:-2px}
.tbldt-panel{animation:tbldt-fade .2s ease}
@keyframes tbldt-fade{from{opacity:0}to{opacity:1}}

/* ================================================================
   Agent Card  (.tbac-*)
   ================================================================ */
.tbac-card{overflow:hidden}
.tbac-header{display:flex;align-items:center;gap:12px;margin-bottom:1em}
.tbac-avatar{display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden}
.tbac-avatar svg{opacity:.5}
.tbac-title{margin:0 0 .15em;font-size:1em;text-transform:uppercase;letter-spacing:.04em}
.tbac-agent-name{font-weight:600;font-size:1.1em}
.tbac-meta{margin:0 0 1em;display:grid;gap:6px}
.tbac-meta-row{display:flex;gap:8px}
.tbac-meta-row dt{font-weight:500;min-width:110px}
.tbac-meta-row dt::after{content:":"}
.tbac-meta-row dd{margin:0}
.tbac-courtesy{font-size:.85em;margin:.5em 0 0;line-height:1.4}
.tbac-cta{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;font-weight:600;cursor:pointer;transition:background .2s,color .2s;margin-top:1em}

/* ================================================================
   Archive Hero  (.tbah-*)
   ================================================================ */
.tbah-hero{display:flex;flex-direction:column;gap:1.25em}
.tbah-title{margin:0;font-size:2em}
.tbah-subtitle{margin:0;opacity:.8;font-size:1.1em}

/* ================================================================
   Property Alert  (.tbpa-*)
   ================================================================ */
.tbpa-card{overflow:hidden}
.tbpa-title{margin:0 0 .25em}
.tbpa-desc{margin:0 0 1.25em;line-height:1.5}
.tbpa-form{display:flex;flex-direction:column;gap:.75em}
.tbpa-field{display:flex;flex-direction:column;gap:.25em}
.tbpa-field span{font-weight:500;font-size:.85em}
.tbpa-field input,.tbpa-field select{border:1px solid #ccc;font-size:1em}
.tbpa-row{display:grid;grid-template-columns:1fr 1fr;gap:.75em}
.tbpa-btn{border:none;font-weight:600;cursor:pointer;transition:background .2s,color .2s;margin-top:.5em}
.tbpa-status{font-size:.9em;min-height:1.4em}
.tbpa-status--ok{color:#16a34a}
.tbpa-status--err{color:#dc2626}

/* ================================================================
   Listing Description  (.tbld-*)
   ================================================================ */
.tbld{box-sizing:border-box}
.tbld-title{margin:0 0 .75em;font-size:1.2em;font-weight:700;letter-spacing:.02em}
.tbld-text{line-height:1.7;overflow-wrap:break-word;word-break:break-word}
.tbld-toggle{background:none;border:none;cursor:pointer;padding:0;margin:.5em 0 0;font-weight:600;text-transform:uppercase;font-size:.85em;letter-spacing:.04em;color:var(--tb-accent);transition:opacity .2s}
.tbld-toggle:hover{opacity:.7}

/* ================================================================
   Listing Status Badge  (.tblsb-*)
   ================================================================ */
.tblsb{display:inline-flex;align-items:center;gap:6px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;line-height:1;white-space:nowrap;box-sizing:border-box}
.tblsb-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}

/* Status color presets */
.tblsb--active{background:#dcfce7;color:#166534;border:1px solid #bbf7d0}
.tblsb--active .tblsb-dot{background:#16a34a}
.tblsb--pending{background:#fef9c3;color:#854d0e;border:1px solid #fef08a}
.tblsb--pending .tblsb-dot{background:#ca8a04}
.tblsb--sold{background:#fee2e2;color:#991b1b;border:1px solid #fecaca}
.tblsb--sold .tblsb-dot{background:#dc2626}
.tblsb--closed{background:#f3f4f6;color:#374151;border:1px solid #e5e7eb}
.tblsb--closed .tblsb-dot{background:#6b7280}
.tblsb--coming-soon{background:#e0e7ff;color:#3730a3;border:1px solid #c7d2fe}
.tblsb--coming-soon .tblsb-dot{background:#4f46e5}

/* ================================================================
   Feature Strip  (.tbfs-*)
   ================================================================ */
.tbfs-strip{box-sizing:border-box;overflow:hidden;background:var(--tb-primary-dark);color:#fff}
.tbfs-grid{display:flex;align-items:center;justify-content:center}
.tbfs-grid--horizontal{flex-wrap:wrap}
.tbfs-grid--cards{display:grid;grid-template-columns:repeat(var(--tbfs-cols,4),1fr)}
.tbfs-item{display:flex;align-items:center;gap:12px;position:relative}
.tbfs-grid--cards .tbfs-item{flex-direction:column;text-align:center;gap:8px}
.tbfs-grid--dividers .tbfs-item + .tbfs-item::before{content:'';position:absolute;left:calc(var(--gap,32px) / -2 - 1px);top:15%;height:70%;width:1px;background:rgba(255,255,255,.15)}
.tbfs-icon{display:flex;align-items:center;justify-content:center;flex-shrink:0;line-height:0;color:var(--tb-accent)}
.tbfs-icon svg{display:block}
.tbfs-text{display:flex;flex-direction:column;gap:2px}
.tbfs-grid--cards .tbfs-text{align-items:center}
.tbfs-value{font-size:1.4em;font-weight:800;line-height:1.2;color:inherit}
.tbfs-label{font-size:.75em;font-weight:500;text-transform:uppercase;letter-spacing:.06em;opacity:.6;color:inherit}

/* ================================================================
   CTA Banner  (.tbcta-*)
   ================================================================ */
.tbcta{position:relative;overflow:hidden;box-sizing:border-box}
.tbcta--dark{background:var(--tb-primary-dark);color:#fff}
.tbcta--accent{background:var(--tb-accent);color:#fff}
.tbcta--light{background:#f1f5f9;color:#1e293b}
.tbcta--image{background-size:cover;background-position:center;color:#fff}
.tbcta--image::after{content:'';position:absolute;inset:0;z-index:0}
.tbcta-inner{position:relative;z-index:1;display:flex;align-items:center;gap:24px}
.tbcta--centered .tbcta-inner{flex-direction:column;text-align:center}
.tbcta--left .tbcta-inner{flex-direction:column;text-align:left;align-items:flex-start}
.tbcta--split .tbcta-inner{justify-content:space-between}
.tbcta-content{display:flex;flex-direction:column;gap:8px}
.tbcta--centered .tbcta-content{align-items:center}
.tbcta--split .tbcta-content{flex:1}
.tbcta-icon{font-size:2em;line-height:1;opacity:.9}
.tbcta-icon i,.tbcta-icon svg{width:1em;height:1em}
.tbcta-heading{margin:0;font-size:1.5em;font-weight:800;line-height:1.2}
.tbcta-subtitle{margin:0;opacity:.8;line-height:1.5;font-size:1em}
.tbcta-btn{display:inline-flex;align-items:center;gap:8px;text-decoration:none;font-weight:700;text-transform:uppercase;letter-spacing:.04em;cursor:pointer;transition:background .25s,color .25s,transform .15s;white-space:nowrap}
.tbcta--dark .tbcta-btn{background:var(--tb-accent);color:#fff;padding:.85em 1.8em;border-radius:6px}
.tbcta--dark .tbcta-btn:hover{background:#cc4a12;transform:translateY(-1px)}
.tbcta--accent .tbcta-btn{background:#fff;color:var(--tb-accent);padding:.85em 1.8em;border-radius:6px}
.tbcta--accent .tbcta-btn:hover{background:#f8f8f8}
.tbcta--light .tbcta-btn{background:var(--tb-primary-dark);color:#fff;padding:.85em 1.8em;border-radius:6px}
.tbcta--light .tbcta-btn:hover{background:var(--tb-secondary)}
.tbcta--image .tbcta-btn{background:var(--tb-accent);color:#fff;padding:.85em 1.8em;border-radius:6px}
.tbcta--image .tbcta-btn:hover{background:#cc4a12;transform:translateY(-1px)}
.tbcta-btn i,.tbcta-btn svg{width:1em;height:1em;font-size:.85em;flex-shrink:0}
/* Accent bar positioning */
.tbcta-accent{position:absolute;z-index:2;background:var(--tb-accent)}
.tbcta--accent-top .tbcta-accent{top:0;left:0;right:0;height:4px}
.tbcta--accent-bottom .tbcta-accent{bottom:0;left:0;right:0;height:4px}
.tbcta--accent-left .tbcta-accent{top:0;bottom:0;left:0;width:4px;height:auto}

/* ================================================================
   Floor Plan Widget
   ================================================================ */
.tbfp-wrap{width:100%}
.tbfp-accordion{border:1px solid #e5e7eb;border-radius:8px;overflow:hidden}
.tbfp-accordion summary{list-style:none;cursor:pointer}
.tbfp-accordion summary::-webkit-details-marker{display:none}
.tbfp-trigger{display:inline-flex;align-items:center;gap:8px;border:none;cursor:pointer;font-weight:600;font-size:.95em;transition:background .2s,opacity .2s}
.tbfp-trigger:hover{opacity:.85}
.tbfp-trigger svg{flex-shrink:0}
.tbfp-viewer{position:relative;overflow:hidden}
.tbfp-viewer--interactive .tbfp-image-container{cursor:grab;overflow:hidden}
.tbfp-image{display:block;width:100%;height:auto;user-select:none;transition:transform .15s ease}
.tbfp-controls{position:absolute;top:10px;right:10px;z-index:5;display:flex;flex-direction:column;gap:4px}
.tbfp-zoom-btn{width:32px;height:32px;border:1px solid #d1d5db;border-radius:6px;background:#fff;font-size:18px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s}
.tbfp-zoom-btn:hover{background:#f3f4f6}
.tbfp-modal{position:fixed;inset:0;z-index:100000;display:flex;align-items:center;justify-content:center}
.tbfp-modal-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.7)}
.tbfp-modal-content{position:relative;z-index:1;max-width:90vw;max-height:90vh;background:#fff;border-radius:12px;overflow:auto;padding:16px}
.tbfp-modal-close{position:absolute;top:8px;right:8px;width:32px;height:32px;border:none;background:rgba(0,0,0,.5);color:#fff;border-radius:50%;font-size:20px;cursor:pointer;z-index:2;display:flex;align-items:center;justify-content:center}

/* ================================================================
   Virtual Tour Widget
   ================================================================ */
.tbvt-wrap{position:relative;width:100%;overflow:hidden;background:#000}
.tbvt-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;cursor:pointer;z-index:2;transition:opacity .2s}
.tbvt-overlay:hover{opacity:.9}
.tbvt-thumb{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.tbvt-play-icon{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;filter:drop-shadow(0 2px 8px rgba(0,0,0,.4))}
.tbvt-overlay-text{position:relative;z-index:1;font-weight:600;text-shadow:0 1px 4px rgba(0,0,0,.5)}
.tbvt-iframe{position:absolute;inset:0;width:100%;height:100%;border:none}

/* ================================================================
   Financial Breakdown Chart Widget
   ================================================================ */
.tbfb-wrap{display:flex;flex-wrap:wrap;gap:24px;align-items:flex-start}
.tbfb-chart-col{position:relative;flex-shrink:0}
.tbfb-canvas{display:block;width:100%!important;height:100%!important}
.tbfb-total{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none}
.tbfb-total-label{font-size:.75em;text-transform:uppercase;letter-spacing:.05em;color:#6b7280}
.tbfb-total-amount{font-size:1.5em;font-weight:800;line-height:1.2}
.tbfb-details-col{flex:1;min-width:200px;display:flex;flex-direction:column;gap:16px}
.tbfb-inputs{display:flex;flex-direction:column;gap:8px}
.tbfb-input-group{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:.9em}
.tbfb-input-group span{color:#6b7280;white-space:nowrap}
.tbfb-input-group input,.tbfb-input-group select{width:90px;padding:6px 10px;border:1px solid #d1d5db;border-radius:6px;font-size:inherit;text-align:right}
.tbfb-input-group select{width:110px;text-align:left}
.tbfb-legend{display:flex;flex-direction:column;gap:6px}
.tbfb-legend-item{display:flex;align-items:center;gap:8px;font-size:.9em}
.tbfb-dot{width:12px;height:12px;border-radius:50%;flex-shrink:0}
.tbfb-legend-label{flex:1;color:#374151}
.tbfb-legend-value{font-weight:600;color:#132d40}
.tbfb-empty{text-align:center;padding:40px 20px;color:#9ca3af}

/* ================================================================
   Schools & Location Widget
   ================================================================ */
.tbsl-wrap{overflow:hidden}
.tbsl-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
.tbsl-list{display:flex;flex-direction:column;gap:12px}
.tbsl-item{display:flex;align-items:flex-start;gap:10px}
.tbsl-icon{flex-shrink:0;display:flex;align-items:center;margin-top:2px}
.tbsl-text{display:flex;flex-direction:column;gap:2px}
.tbsl-label{font-size:.8em;text-transform:uppercase;letter-spacing:.04em}
.tbsl-value{font-weight:600}
.tbsl-map{width:100%;margin-top:16px;border-radius:8px;overflow:hidden;z-index:0}

/* ================================================================
   Sticky Listing CTA Widget
   ================================================================ */
.tbsc-bar{position:fixed;bottom:0;left:0;right:0;z-index:99999;transform:translateY(100%);transition:transform .35s cubic-bezier(.4,0,.2,1);border-top:1px solid rgba(0,0,0,.06)}
.tbsc-bar.tbsc-visible{transform:translateY(0)}
.tbsc-inner{max-width:1200px;margin:0 auto;display:flex;align-items:center;gap:16px}
.tbsc-thumb{object-fit:cover;flex-shrink:0}
.tbsc-info{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}
.tbsc-address{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tbsc-price{font-weight:700;font-size:1.05em}
.tbsc-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:none;font-weight:600;cursor:pointer;white-space:nowrap;transition:background .2s,transform .15s}
.tbsc-btn:hover{transform:translateY(-1px)}

/* Mobile: hide thumbnail, compact layout */
@media(max-width:640px){
    .tbsc-thumb{display:none}
    .tbsc-inner{gap:10px}
    .tbsc-address{font-size:.85em}
    .tbsc-price{font-size:.9em}
}

/* ================================================================
   Open House Banner Widget
   ================================================================ */
.tboh-banner{display:flex;align-items:center;flex-wrap:wrap;gap:16px}
.tboh-icon{flex-shrink:0;display:flex;align-items:center;opacity:.85}
.tboh-content{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}
.tboh-label{font-weight:800;font-size:1.1em;text-transform:uppercase;letter-spacing:.04em}
.tboh-datetime{font-size:.95em;opacity:.9}
.tboh-remarks{font-size:.85em;opacity:.7;font-style:italic}
.tboh-countdown{display:flex;gap:8px;flex-shrink:0}
.tboh-countdown-segment{display:flex;flex-direction:column;align-items:center;min-width:40px}
.tboh-digit{font-size:1.6em;font-weight:800;line-height:1.1;font-variant-numeric:tabular-nums}
.tboh-unit{font-size:.65em;text-transform:uppercase;letter-spacing:.06em;opacity:.7}
.tboh-calendar-btn{display:inline-flex;align-items:center;gap:6px;border:none;font-weight:600;cursor:pointer;padding:8px 16px;white-space:nowrap;transition:background .2s}
.tboh-calendar-btn:hover{opacity:.9}
.tboh-calendar-btn svg{flex-shrink:0}

@media(max-width:640px){
    .tboh-banner{flex-direction:column;align-items:flex-start}
    .tboh-countdown{align-self:center;margin:8px 0}
}

/* ================================================================
   Responsive
   ================================================================ */
/* ── Focus-visible accessibility ── */
.tbpb-btn:focus-visible,.tbpb-status-tab:focus-visible,.tbpb-filter-chip:focus-visible,.tbpb-filter-clear:focus-visible,.tbsl-chip:focus-visible,.tbpn-link:focus-visible,.tbg-cta:focus-visible,.tblh-cta:focus-visible,.tbac-cta:focus-visible,.tbcta-btn:focus-visible,.tbpa-btn:focus-visible,.tbld-toggle:focus-visible{outline:2px solid var(--tb-accent);outline-offset:2px}
.tbg-item img:focus-visible{outline:2px solid var(--tb-accent);outline-offset:2px}

@container (max-width:360px){.tbpb-card__price-row{grid-template-columns:1fr}.tbpb-card__cta{width:100%}}
@media (max-width:1320px){.tbpb-card__price-row{grid-template-columns:1fr}.tbpb-card__cta{width:100%}}
@media (max-width:1200px){.tbpb-filters__grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:1024px){
    .tbpb-filters--compact .tbpb-filters__grid{grid-template-columns:repeat(3,minmax(0,1fr))}
    .trestle-archive-grid .tbpb-filters--compact .tbpb-filters__grid{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media (max-width:980px){
    .tbpb-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
    .trestle-similar-properties .tbpb-card__title{font-size:30px}
}
@media (max-width:767px){
    .tblh-grid:not(.tblh-layout--gallery-top){flex-direction:column}
    .tblh-gallery-col,.tblh-details-col{width:100% !important}
    .tblh-hero-img{height:auto !important;max-height:50vh}
    .tblh-thumbs{--tblh-thumb-cols:4 !important}
    .tbfs-grid--horizontal{flex-wrap:wrap;justify-content:space-around}
    .tbfs-grid--dividers .tbfs-item + .tbfs-item::before{display:none}
    .tbcta--split .tbcta-inner{flex-direction:column;text-align:center}
    .tbcta--split .tbcta-content{align-items:center}
}
@media (max-width:760px){
    .tbpb-filters__grid{grid-template-columns:repeat(2,minmax(0,1fr))}
    .tbpb-filters--compact .tbpb-filters__grid{grid-template-columns:repeat(2,minmax(0,1fr))}
    .tbpb-grid{grid-template-columns:1fr}
    .tbpb-sort-form select{min-width:160px}
    .trestle-archive-grid .tbpb-filters--compact .tbpb-filters__grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:720px){
    .tbpn-grid{grid-template-columns:1fr}
    .tbpn-link--next{text-align:left}
}
@media (max-width:520px){
    .tblh-thumbs{--tblh-thumb-cols:3 !important}
    .tbpb-filters__grid{grid-template-columns:1fr}
    .tbpb-card__price-row{grid-template-columns:1fr;align-items:flex-start}
    .tbpb-card__cta{width:100%;justify-content:center}
    .trestle-archive-grid .tbpb-filters--compact .tbpb-filters__grid{grid-template-columns:1fr}
}
