/* Font fallbacks sized to match Jost and Cormorant Garamond (2026-09-25): while the web fonts download, the page shows
   these metric-matched stand-ins, so text no longer jumps when the real fonts arrive (was the main layout-shift cause). Undo: delete this block and the 'Jost Fallback' / 'Cormorant Fallback' names in the font lists (backups .bak-fontfallback). */
@font-face{font-family:'Jost Fallback';src:local('Arial'),local('Liberation Sans'),local('Helvetica Neue'),local('Helvetica');size-adjust:95.89%;ascent-override:111.58%;descent-override:39.11%;line-gap-override:0%}
@font-face{font-family:'Jost Fallback R';src:local('Roboto'),local('Roboto Regular');size-adjust:95.86%;ascent-override:111.62%;descent-override:39.12%;line-gap-override:0%}
@font-face{font-family:'Cormorant Fallback';src:local('Times New Roman'),local('Liberation Serif'),local('Times');size-adjust:95.10%;ascent-override:97.16%;descent-override:30.18%;line-gap-override:0%}
@font-face{font-family:'Cormorant Fallback N';src:local('Noto Serif'),local('NotoSerif-Regular');size-adjust:81.20%;ascent-override:113.80%;descent-override:35.35%;line-gap-override:0%}
@font-face{font-family:'Cormorant Fallback';font-style:italic;src:local('Times New Roman Italic'),local('TimesNewRomanPS-ItalicMT'),local('Liberation Serif Italic'),local('Times-Italic');size-adjust:87.20%;ascent-override:105.97%;descent-override:32.91%;line-gap-override:0%}
@font-face{font-family:'Cormorant Fallback N';font-style:italic;src:local('Noto Serif Italic'),local('NotoSerif-Italic');size-adjust:75.67%;ascent-override:122.10%;descent-override:37.93%;line-gap-override:0%}
/* Villoura shared site frame — ONE stylesheet for the top menu, mobile menu, footer and mobile bottom bar.
   Design A (chosen by Angela 2026-09-23). Colour variables resolved to fixed values so every page looks the same
   regardless of its own palette. Loaded by header-v2.php right after the page's own CSS (same position the
   old per-template copies had), so existing enhancement layers still apply on top exactly as before.
   Rule: change the frame's look HERE only. See claude/foundation-plan.md. */

/* base for frame elements only (pages keep their own base styles) */
header, header *, .mob-menu, .mob-menu *, footer, footer *, .stk, .stk * { box-sizing: border-box; }
header *, .mob-menu *, footer *, .stk * { margin: 0; padding: 0; }
header, .mob-menu, footer, .stk { font-family: 'Jost',Jost Fallback,Jost Fallback R, sans-serif; font-weight: 300; -webkit-font-smoothing: antialiased; }

/* ---- top menu ---- */
header{position:fixed;top:0;left:0;right:0;z-index:200;height:58px;display:flex;align-items:center;justify-content:space-between;padding:0 28px;background:rgba(245,237,223,0.97);backdrop-filter:blur(20px);border-bottom:1px solid rgba(30,26,20,0.10);}
.logo{font-family:'Cormorant Garamond',Cormorant Fallback,Cormorant Fallback N,serif;font-size:20px;font-weight:300;letter-spacing:.24em;text-transform:uppercase;color:#1E1A14;text-decoration:none;}
.logo em{font-style:normal;color:#C4984E;}
.nav-mid{display:flex;gap:28px;position:absolute;left:50%;transform:translateX(-50%);}
.nav-mid a{font-size:10px;font-weight:300;letter-spacing:.18em;text-transform:uppercase;color:#7A6E62;text-decoration:none;transition:color .2s;}
.nav-mid a:hover,.nav-mid a.active{color:#1E1A14;}
.nav-r{display:flex;align-items:center;gap:12px;}
.nav-tel{font-size:11.5px;color:#4A4036;text-decoration:none;}
.nav-tel:hover{color:#C4984E;}
.nav-cta{font-size:9.5px;letter-spacing:.2em;text-transform:uppercase;color:#FDFAF6;background:#1E1A14;text-decoration:none;padding:8px 18px;transition:background .2s;}
.nav-cta:hover{background:#A67C3E;}
.hbg{display:none;flex-direction:column;gap:5px;background:none;border:none;cursor:pointer;padding:4px;}
.hbg span{width:20px;height:1.5px;background:#1E1A14;display:block;}

/* ---- mobile menu ---- */
.mob-menu{display:none;position:fixed;inset:0;z-index:190;background:#F5EDDF;padding:90px 28px 40px;flex-direction:column;}
.mob-menu.open{display:flex;}
.mob-menu a{font-family:'Cormorant Garamond',Cormorant Fallback,Cormorant Fallback N,serif;font-size:32px;font-weight:200;color:#1E1A14;text-decoration:none;padding:14px 0;border-bottom:1px solid rgba(30,26,20,0.10);}
.mob-btns{margin-top:36px;display:flex;flex-direction:column;gap:12px;}
.mob-call{display:flex;align-items:center;justify-content:center;padding:14px;border:1px solid rgba(196,152,78,0.22);font-size:13px;color:#1E1A14;text-decoration:none;}
.mob-inquire{display:flex;align-items:center;justify-content:center;padding:14px;background:#1E1A14;color:#F5EDDF;font-size:10px;letter-spacing:.2em;text-transform:uppercase;text-decoration:none;}

/* ---- footer ---- */
footer{background:#2A2419;padding:52px 28px 28px;border-top:1px solid rgba(245,237,223,0.06);}
.ft-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:44px;padding-bottom:44px;border-bottom:1px solid rgba(245,237,223,0.07);margin-bottom:28px;}
.ft-logo{font-family:'Cormorant Garamond',Cormorant Fallback,Cormorant Fallback N,serif;font-size:20px;font-weight:200;letter-spacing:.26em;text-transform:uppercase;color:#F5EDDF;text-decoration:none;display:block;margin-bottom:12px;}
.ft-logo em{font-style:normal;color:#C4984E;}
.ft-tag{font-size:11px;color:rgba(245,237,223,0.3);line-height:1.85;margin-bottom:20px;max-width:210px;}
.ft-con{display:flex;flex-direction:column;gap:5px;}
.ft-con a{font-size:11.5px;color:#D4AE6A;text-decoration:none;}
.ft-con a:hover{color:#F5EDDF;}
.ft-col h5{font-size:8px;letter-spacing:.3em;text-transform:uppercase;color:rgba(245,237,223,0.28);margin-bottom:14px;}
.ft-col ul{list-style:none;display:flex;flex-direction:column;gap:9px;}
.ft-col ul a{font-size:11.5px;color:rgba(245,237,223,0.3);text-decoration:none;}
.ft-col ul a:hover{color:rgba(245,237,223,.72);}
.ft-bot{display:flex;justify-content:space-between;align-items:center;font-size:9.5px;color:rgba(245,237,223,0.17);}
.ft-leg{display:flex;gap:14px;}
.ft-leg a{color:rgba(245,237,223,0.17);text-decoration:none;}

/* ---- mobile bottom bar ---- */
.stk{position:fixed;bottom:0;left:0;right:0;z-index:150;background:#1E1A14;height:50px;display:flex;align-items:stretch;transform:translateY(100%);transition:transform .4s cubic-bezier(0.25,0.46,0.45,0.94);}
.stk.show{transform:translateY(0);}
.sth{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;text-decoration:none;font-size:10px;font-weight:300;letter-spacing:.14em;text-transform:uppercase;transition:background .2s;}
.sth:first-child{color:rgba(245,237,223,.65);border-right:1px solid rgba(245,237,223,.08);}
.sth:last-child{background:#A67C3E;color:#fff;}

/* ---- see-through header over a full-screen photo (homepage, thank-you page) — page sets $GLOBALS['vlr_header_over'] ---- */
header.vlr-over{transition:background-color .3s,border-color .3s;}
header.vlr-over:not(.vlr-solid){background:linear-gradient(180deg,rgba(26,24,20,.45),rgba(26,24,20,0));border-bottom-color:transparent;backdrop-filter:none;-webkit-backdrop-filter:none;}
header.vlr-over:not(.vlr-solid) .logo,header.vlr-over:not(.vlr-solid) .nav-mid a,header.vlr-over:not(.vlr-solid) .nav-tel{color:#fff;}
header.vlr-over:not(.vlr-solid) .nav-mid a:not(.active):not(:hover){color:rgba(255,255,255,.82);}
header.vlr-over:not(.vlr-solid) .hbg span{background:#fff;}

/* ---- Destinations dropdown (desktop hover) — moved from mu-plugin villoura-nav-dropdown 2026-09-23 ---- */
.nav-dd{position:relative;display:inline-block}
header .vlr-ddpanel{position:absolute;top:calc(100% + 16px);left:50%;transform:translate(-50%,-6px);background:#fff;box-shadow:0 24px 60px rgba(30,26,20,.18);border:1px solid #ece3d3;border-radius:4px;padding:24px 30px;display:flex;gap:46px;opacity:0;visibility:hidden;transition:opacity .18s ease .15s,transform .18s ease .15s,visibility 0s linear .33s;z-index:250}
header .vlr-ddpanel::before{content:'';position:absolute;left:0;right:0;top:-18px;height:18px}
.nav-dd:hover .vlr-ddpanel,.nav-dd:focus-within .vlr-ddpanel{opacity:1;visibility:visible;transform:translate(-50%,0);transition-delay:0s}
header .vlr-ddcol{display:flex;flex-direction:column;min-width:148px}
header .vlr-ddh{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:#C4984E;font-weight:600;margin-bottom:12px}
header .nav-mid .vlr-ddpanel a{display:block;padding:7px 0;color:#2b2318 !important;text-decoration:none;font-size:16px;letter-spacing:0;text-transform:none;font-family:'Cormorant Garamond',Cormorant Fallback,Cormorant Fallback N,Georgia,serif;font-weight:400;line-height:1.2;white-space:nowrap}
header .nav-mid .vlr-ddpanel a:hover{color:#C4984E !important}
header .nav-mid .vlr-ddpanel a.vlr-ddall{margin-top:12px;font-family:'Jost',Jost Fallback,Jost Fallback R,sans-serif;font-size:12px;color:#C4984E !important;font-weight:600;letter-spacing:.04em;text-transform:uppercase}
@media(max-width:900px){header .vlr-ddpanel{display:none}}

/* ---- phones ---- */
@media(max-width:767px){
  header{padding:0 16px;}
  .nav-mid,.nav-tel{display:none;}
  .hbg{display:flex;}
  footer{padding:44px 20px 24px;}
  .ft-grid{grid-template-columns:1fr;gap:28px;}
  .ft-bot{flex-direction:column;gap:8px;text-align:center;}
  .ft-leg{justify-content:center;}
}


/* ---- phones: moved from the villoura-mobile-nav patch 2026-09-23 (shared-frame pages no longer load it) ---- */
.vlr-chat-close{display:none;position:fixed;top:12px;left:12px;z-index:2147483647;background:#1e1a14;color:#f4efe6;border:0; border-radius:22px;padding:10px 16px;font-family:Georgia,'Times New Roman',serif;font-size:14px;letter-spacing:.02em; cursor:pointer;box-shadow:0 4px 16px rgba(0,0,0,.4)}
@media (max-width:900px){
  body{padding-top:62px!important}
  body:has(header.vlr-over){padding-top:0!important}
  /* hero-gap fix 2026-09-24: body already leaves room for the header on phones/tablets, so page heroes (About, Concierge, FAQs) no longer add a second gap. Undo: delete this line. */
  body:not(:has(header.vlr-over))>.hero{margin-top:0!important}
  .top-strip{position:static!important}
  input[type="date"]{min-height:34px;cursor:pointer}
  .ui-datepicker{min-width:290px!important;max-width:94vw!important;box-sizing:border-box!important}
  .ui-datepicker table{table-layout:fixed!important;width:100%!important;margin:0!important;border-collapse:collapse!important}
  .ui-datepicker th{padding:6px 0!important;text-align:center!important}
  .ui-datepicker td{padding:2px!important;text-align:center!important;vertical-align:middle!important}
  .ui-datepicker td a,.ui-datepicker td span{display:flex!important;align-items:center!important;justify-content:center!important; width:34px!important;height:34px!important;margin:0 auto!important;padding:0!important;line-height:1!important; border-radius:50%!important;box-sizing:border-box!important;float:none!important;text-align:center!important}
  #ui-datepicker-div{display:none}
}

/* brand-gold buttons (a script used to recolour these after the page loaded) - 2026-09-23 */
html body #mobMenu .mob-inquire, html body #vlrBarCcy, html body .hero-cta.vlr-cta-primary, html body .cta-strip .btn-ink, html body .cta-section .btn-ink, html body .cta-btn-row .btn-charcoal, html body #mpop .mpcl, html body #popb.mpbtn, html body .vlr-props-cta a, html body .load-more.vlr-loadmore, html body .newsletter-box .nb-btn, html body .sidebar-cta-box .scb-btn, html body .villa-cta .vc-btn, html body .apply-form .af-submit, html body .vt-apply-dock form button, html body .vd-grid a.vd-card { background-color:#C4984E!important; color:#fff!important; border-color:#C4984E!important; }

/* 2026-09-24 minimum text sizes: P/LI 14px, other text 12px. Replaces the "fixFonts" script in villoura-homepage-ux, which set these on every page load. Buttons and the menu are left to their own styles. */
@media (min-width:901px){
html body .article-inner .article-sidebar .sidebar-sticky .ss-section div.ss-title,
html body .article-sidebar .sidebar-sticky .ss-section .villa-cta span.vc-k,
html body .blog-layout #articlesGrid.articles-grid .article-card .ac-img-wrap span.ac-cat,
html body .blog-layout .blog-sidebar .sidebar-section .sidebar-cta-box span.scb-k,
html body .blog-layout .blog-sidebar .sidebar-section .tag-cloud a.tag,
html body .blog-section .blog-layout .blog-sidebar .sidebar-section div.ss-title,
html body .blog-sidebar .sidebar-section .pop-post div > span.pp-cat,
html body .faq-body .faq-layout #faqNav.faq-nav div.faq-nav-title,
html body .nav-mid .nav-dd > a,
html body .nav-mid > a,
html body .nav-r a.nav-tel,
html body .rating-bar .rating-inner .rating-stats .rating-stat span.rs-label,
html body .rating-bar .rating-inner .rating-stats .rating-stat span.rs-val,
html body .sidebar-sticky .ss-section .author-box div > div.author-title,
html body .sidebar-sticky .ss-section .related-card div > span.rc-cat,
html body .vlr-over .nav-mid .nav-dd > a,
html body .vlr-over .nav-mid > a,
html body .vlr-over .nav-r a.nav-tel{font-size:12px!important}
}
@media (min-width:901px){
html body .article-sidebar .sidebar-sticky .ss-section .villa-cta p.vc-sub,
html body .blog-layout .blog-sidebar .sidebar-section .newsletter-box p.nb-note,
html body .blog-layout .blog-sidebar .sidebar-section .newsletter-box p.nb-sub,
html body .blog-layout .blog-sidebar .sidebar-section .sidebar-cta-box p.scb-sub,
html body .sidebar-sticky .ss-section .author-box div > p.vlr-authbio{font-size:14px!important}
}
html body #apply.apply-section .apply-inner .apply-form .af label,
html body #apply.apply-section .apply-inner .apply-form .af.span2 label,
html body #apply.apply-section .apply-inner .apply-sidebar .sidebar-card div.sc-sub,
html body #apply.apply-section .apply-inner .apply-sidebar .sidebar-card span.sc-k,
html body #apply.apply-section .apply-inner div > span.sec-k,
html body #articlesGrid.articles-grid .article-card .ac-body .ac-meta span,
html body #articlesGrid.articles-grid .article-card .ac-body .ac-meta span.ac-read,
html body #articlesGrid.articles-grid .article-card .ac-body .vlr-byline span.vlr-by-dot,
html body #filterModal.modal-overlay .filter-modal .fm-section div.fm-section-title,
html body #los-angeles-guide.vlr-guide .vg-wrap .vg-faqhead span.vg-eyebrow,
html body #los-angeles-guide.vlr-guide .vg-wrap span.vg-eyebrow,
html body #propsGrid.props-grid .pcard .pcard-body .pcard-footer span.pcard-inq,
html body #propsGrid.props-grid .pcard .pcard-body .pcard-specs span,
html body #propsGrid.props-grid .pcard .pcard-body .pcard-tags span.pcard-tag,
html body #propsPanel.props-panel #propsGrid.props-grid .pcard .pcard-body div.pcard-area,
html body #propsPanel.props-panel #propsGrid.props-grid .pcard .pcard-img-wrap div.pcard-badge,
html body #vlr-page-main .vlr-lp .vlr-trust span.g,
html body #vlr-page-main .vlr-lp div.vlr-trust,
html body #vtFeat.featured .feat-content .feat-left span.feat-cat,
html body #vtFeat.featured .feat-content span.feat-link,
html body .article-hero .ah-content .ah-breadcrumb a,
html body .article-hero .ah-content .ah-breadcrumb span,
html body .article-hero .ah-content .ah-meta span,
html body .article-hero .ah-content span.ah-cat,
html body .article-wrap .article-inner .article-body .article-share span.share-label,
html body .blog-layout #articlesGrid.articles-grid .article-card .ac-img-wrap span.ac-cat,
html body .contact-strip .contact-options .contact-option div > span.co-label,
html body .cta-section .cta-btns a.btn-ghost,
html body .cta-section .cta-btns a.btn-ink,
html body .cta-strip .cta-btns a.btn-cream,
html body .cta-strip .cta-btns a.btn-ghost-l,
html body .cta-strip .cta-strip-btns a.btn-ink,
html body .faq-cta .cta-btns a.btn-cream,
html body .faq-cta .cta-btns a.btn-ghost-light,
html body .filter-bar div.fb-pill,
html body .filter-bar div.fb-pill.on,
html body .filter-bar span.fb-label,
html body .gform-body.gform_body .gform_fields.top_label.form_sublabel_below .gfield.gfield--type-captcha.gfield--input-type-captcha .gfield_label.gform-field-label span.gform-field-label__text,
html body .gform-body.gform_body .gform_fields.top_label.form_sublabel_below .gfield.gfield--type-date.gfield--input-type-date .gfield_label.gform-field-label span.gform-field-label__text,
html body .gform-body.gform_body .gform_fields.top_label.form_sublabel_below .gfield.gfield--type-email.gfield--input-type-email .gfield_label.gform-field-label span.gform-field-label__text,
html body .gform-body.gform_body .gform_fields.top_label.form_sublabel_below .gfield.gfield--type-number.gfield--input-type-number .gfield_label.gform-field-label span.gform-field-label__text,
html body .gform-body.gform_body .gform_fields.top_label.form_sublabel_below .gfield.gfield--type-phone.gfield--input-type-phone .gfield_label.gform-field-label span.gform-field-label__text,
html body .gform-body.gform_body .gform_fields.top_label.form_sublabel_below .gfield.gfield--type-text.gfield--input-type-text .gfield_label.gform-field-label span.gform-field-label__text,
html body .guide-section .guide-inner .guide-content span.sec-k,
html body .handle-section div > span.sec-k,
html body .hero .hero-content .hero-left span.hero-k,
html body .hero .hero-content span.hero-k,
html body .hero span.hero-k,
html body .hero-content .hero-left .hero-stats .hstat div.hstat-l,
html body .how-section div > span.sec-k,
html body .intro-right .quick-facts .qf-item div > span.qf-label,
html body .intro-section .intro-inner .intro-left span.sec-k,
html body .legal-info .legal-grid .legal-item label,
html body .main .map-panel div.map-attr,
html body .main .map-panel div.map-label,
html body .masthead span.mast-k,
html body .nearby-section .nearby-grid .nearby-card .nearby-text span.nearby-tag,
html body .nearby-section span.sec-k,
html body .page-hero span.ph-k,
html body .pcard .pcard-body .pcard-footer .pcard-price span,
html body .prop-wrap .prop-left .prop-specs .spec div.spec-lbl,
html body .prop-wrap .prop-right #inq-card.inq-card div.inq-per,
html body .props-grid .pcard .pcard-body .pcard-footer span.pcard-inq,
html body .props-grid .pcard .pcard-body .pcard-specs span,
html body .props-grid .vlr-pcard .vlr-pcard-meta .vlr-pcard-pr small,
html body .props-grid .vlr-pcard.vlr-wide-card .vlr-pcard-meta .vlr-pcard-pr small,
html body .props-section .props-grid .pcard .pcard-body div.pcard-area,
html body .props-section .props-grid .vlr-finalized a,
html body .props-section .props-grid .vlr-pcard .vlr-pcard-meta span.vlr-pcard-loc,
html body .props-section .props-grid .vlr-pcard .vlr-pcard-meta span.vlr-pcard-sp,
html body .props-section .props-grid .vlr-pcard.vlr-wide-card .vlr-pcard-meta span.vlr-pcard-loc,
html body .props-section .props-grid .vlr-pcard.vlr-wide-card .vlr-pcard-meta span.vlr-pcard-sp,
html body .props-section .props-header a.view-all-link,
html body .props-section .props-header div,
html body .props-section .props-header div > span.sec-k,
html body .props-section .vlr-props-cta a,
html body .props-section div > a.btn-ink,
html body .pw-wrap .pw-panels .pw-pan span > span.go,
html body .rating-bar .rating-inner .rating-big div.rating-label,
html body .rating-bar .rating-inner .rating-counts span.rc-label,
html body .related-section .related-grid .rel-card .rel-body span.rel-cat,
html body .related-section span,
html body .reviews-section #reviewsGrid.reviews-grid .review-card .rc-footer a.rc-prop,
html body .reviews-section #reviewsGrid.reviews-grid .review-card .rc-footer div.rc-meta,
html body .reviews-section #reviewsGrid.reviews-grid .review-card div.rc-stars,
html body .reviews-section #reviewsGrid.reviews-grid .review-card span.vlr-vbadge,
html body .reviews-section .reviews-header div > span.sec-k,
html body .section.section-alt .services-grid .service-card div.service-price,
html body .sidebar-card .sc-lines .sc-line div > span.sc-type,
html body .similar .sim-grid .sim-card .sim-info div.sim-detail,
html body .stats-bar .stat div.stat-l,
html body .stats-section .stats-grid .stat div.stat-l,
html body .stats-section div > span.sec-k,
html body .top-strip .strip-right #vlrCcyStrip em,
html body .top-strip .strip-right #vlrCcyStrip span,
html body .top-strip .strip-right .result-count strong#cnt,
html body .top-strip .strip-right div.result-count,
html body .ty-hero .ty-btns a.ty-btn.ty-btn-out,
html body .ty-hero .ty-btns a.ty-btn.ty-btn-solid,
html body .ty-hero div.ty-kicker,
html body .vb-in .vb-card .vb-row.vb-row-1 .vb-f label,
html body .vlr-destswitch .vlr-destswitch-inner span.vlr-destswitch-lab,
html body .vlr-trust .tw .crit div > h5,
html body .vlr-trust .tw .revs .vlr-rev b,
html body .vlr-trust .tw span.eyeb,
html body .vt-prose .cx-hero div > span.k,
html body .vt-prose .cx-wrap .cx-info div.fine,
html body .vt-prose .cx-wrap .cx-info div.lbl,
html body .vt-prose .vt-wide .gg-bleed.gg-hero .gg-hero-in span.k,
html body .vt-prose .vt-wide .gg-bleed.gg-quote p > cite,
html body .vt-prose .vt-wide .pw-bleed.pw-hero .pw-hero-in span.k,
html body .vt-prose .vt-wide .pw-bleed.pw-tick div.pw-tick-in,
html body .vt-wide .pw-bleed.pw-stats .pw-stats-in .pw-stat span,
html body .vx-sec.vx-rev .stats .st span,
html body .why-section .why-content span.sec-k,
html body .wrap .btns a.btn.ghost,
html body .wrap .btns a.btn.primary{font-size:12px!important}
html body #apply.apply-section .apply-inner .apply-form p.af-note,
html body #apply.apply-section .apply-inner div > p,
html body #inquire.cx-card #vlr-book .vb-in .vb-card p,
html body #inquire.cx-card #vlr-book .vb-in .vb-card p.vb-fine,
html body #inquire.cx-card #vlr-book .vb-in .vb-card p.vb-note,
html body #inquire.cx-card #vlr-book .vb-in .vb-copy p.vb-k,
html body #team.section p.sec-kicker,
html body #vlr-book .vb-in .vb-card p,
html body #vlr-book .vb-in .vb-card p.vb-fine,
html body #vlr-book .vb-in .vb-card p.vb-note,
html body #vlr-book .vb-in .vb-copy p.vb-k,
html body #vlr-page-main .vlr-lp #occasions.vlr-sec .vlr-wrap p.kick,
html body #vlr-page-main .vlr-lp #work.vlr-sec .vlr-wrap p.kick,
html body #vlr-page-main .vlr-lp .vlr-close .vlr-wrap p.kick,
html body #vlr-page-main .vlr-lp .vlr-hero .vlr-wrap p.eyebrow,
html body #vlr-page-main .vlr-lp .vlr-proof .vlr-wrap p.lab,
html body #vlr-page-main .vlr-lp .vlr-sec .vlr-wrap p.kick,
html body #vtFeat.featured .feat-content .feat-left p.feat-excerpt,
html body #vtFeat.featured .feat-content .feat-left p.feat-meta,
html body .blog-layout #articlesGrid.articles-grid .article-card .ac-body p.ac-excerpt,
html body .contact-strip .concierge-form-wrap p,
html body .contact-strip .concierge-form-wrap p.cf-intro,
html body .contact-strip p,
html body .contact-strip p.sec-kicker,
html body .cta-section p,
html body .cta-strip div > p,
html body .cta-strip p.cta-sub,
html body .elementor.elementor-13195 .elementor-element.e-flex.e-parent #list-form.elementor-element.e-flex.e-child .elementor-element.elementor-widget.elementor-widget-text-editor p.text-12.leading-\[18px\].text-white-7,
html body .faq-body .faq-layout .faq-content #booking.faq-category p.cat-sub,
html body .faq-body .faq-layout .faq-content #cancellation.faq-category p.cat-sub,
html body .faq-body .faq-layout .faq-content #checkin.faq-category p.cat-sub,
html body .faq-body .faq-layout .faq-content #concierge.faq-category p.cat-sub,
html body .faq-body .faq-layout .faq-content #payment.faq-category p.cat-sub,
html body .faq-body .faq-layout .faq-content #privacy.faq-category p.cat-sub,
html body .faq-body .faq-layout .faq-content #properties.faq-category p.cat-sub,
html body .faq-cta p,
html body .guide-content .guide-items .guide-item div > p.guide-item-body,
html body .handle-section .handle-grid .handle-card p.handle-body,
html body .hero .hero-content p.hero-kicker,
html body .hero .hero-content p.hero-sub,
html body .hero p.hero-sub,
html body .how-section .how-steps .step-card p.step-body,
html body .intro-section .intro-inner .intro-left p.body-text,
html body .legal-wrap .legal-section p.ls-body,
html body .main #propsPanel.props-panel .vlr-villa-index div > p,
html body .masthead p.mast-sub,
html body .owner-quote p.oq-author,
html body .page-hero p.ph-updated,
html body .prop-wrap .prop-left p.prop-area,
html body .prop-wrap .prop-left p.prop-tag,
html body .props-section .props-grid .vlr-finalized p,
html body .pull-quote p.pq-author,
html body .pull-quote p.pq-prop,
html body .related-section .related-grid .rel-card .rel-body p.rel-meta,
html body .section-warm .story-grid .story-text p.body-text,
html body .section-warm .story-grid .story-text p.sec-kicker,
html body .section.section-alt .values-list .value-item div > p.value-body,
html body .section.section-alt p.sec-kicker,
html body .section.section-warm .promise-grid .promise-card p.promise-body,
html body .section.section-warm .steps .step div > p.step-body,
html body .section.section-warm p.sec-kicker,
html body .vlr-trust .tw .crit div > p,
html body .vlr-trust .tw .revs .vlr-rev p,
html body .vlr-trust .tw p.lede,
html body .vlr-vrev p.vlr-sub,
html body .vt-prose .cx-wrap .cx-info p,
html body .vx-sec.vx-svc .vx-svcg .sv p,
html body .why-content .why-items .why-item div > p.why-item-body,
html body .why-section .why-content p.body-text,
html body .wrap p.kick{font-size:14px!important}
@media (max-width:900px){
html body #vlrBar #vlrBarCcy em,
html body #vlrBar #vlrBarCcy span,
html body #vlrBar a,
html body #vlrBar a.cta,
html body #vlrBar a.wa,
html body .prop-wrap .prop-left .prop-specs .spec.vlr-price-spec div.spec-lbl{font-size:12px!important}
}
html body p[style*="letter-spacing:.24em;text-transform:uppercase;font-size:12px"]{font-size:14px!important}
html body div[style*="font-family:Jost,Jost Fallback,Jost Fallback R,sans-serif;font-size:11px;letter-spacing:.16em"]{font-size:12px!important}

/* 2026-09-24 map pins on the villa search map (was injected by the gold-button script in villoura-homepage-ux) */
.leaflet-marker-icon.vlr-pin{width:14px!important;height:14px!important;border-radius:50%!important;background:#C4984E!important;border:2px solid #fff!important;box-shadow:0 1px 6px rgba(0,0,0,.35)!important;margin-left:-7px!important;margin-top:-7px!important}

/* ===== 2026-09-24: small sitewide CSS that used to be printed by separate patch plugins (now retired) ===== */
/* was villoura-b-form-tidy: Gravity Forms honeypot field never visible */
.gform_wrapper .gform_validation_container,.gfield.gform_validation_container,.gfield--type-honeypot,.gform_validation_container{display:none !important;position:absolute !important;left:-9000px !important;height:0 !important;overflow:hidden !important}
/* was villoura-b-mobile2: 16px date text on phones (stops iPhone zoom), hide empty image placeholders */
@media (max-width: 900px) { input[type="date"], input[placeholder*="mm/dd" i] { font-size: 16px !important; } }
img:not([src]):not([srcset]) { visibility: hidden; }
/* was villoura-polish-pass: legibility and contrast */
.H5{font-size:14px !important;font-weight:600 !important;letter-spacing:.02em !important;color:#1e1a14 !important}
.amenities .H5,.amenities h3,.amenities h4{font-size:15px !important;font-weight:600 !important;margin-bottom:.35em !important;color:#1e1a14 !important}
.amenities a,.amenities li,.amenities span{font-size:14px !important;line-height:1.55 !important}
.menu .note{font-size:12px !important;line-height:1.5 !important}
.menu .on{font-size:13px !important}
.grp{font-size:12px !important;letter-spacing:.04em !important}
.note{font-size:12px !important}
.site-footer a,footer a,.vlr-footer a,.foot a{color:#4a4238 !important;opacity:1 !important}
.site-footer a:hover,footer a:hover,.vlr-footer a:hover,.foot a:hover{color:#c4984e !important}
.entry-content a,.post-content a,article .content a{color:#c4984e !important;text-underline-offset:2px}
.entry-content a:visited,.post-content a:visited,article .content a:visited{color:#a67c3e !important}
/* was villoura-conversion-v2: visible gold focus ring; tiny-label floor */
a:focus-visible,button:focus-visible,[role="button"]:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,.pcard:focus-visible,[tabindex]:focus-visible{outline:2px solid #C4984E !important;outline-offset:2px !important;border-radius:3px}
a,button,[role="button"]{transition:color .15s ease,background-color .15s ease,box-shadow .15s ease,filter .15s ease}
.v-press-label,.v-press-slot,.v_press_label,.v_press_slot{font-size:12px !important;letter-spacing:.06em !important;line-height:1.4 !important}
.metric-label,.stat-label,.trust-label,.v-metric-label{font-size:12px !important;line-height:1.4 !important}
/* was villoura-visual-fixes: 16:9 villa card photos, villa hero gallery 3:2, soft shimmer while photos load */
.pcard-img-wrap,.property-card .pcard-img-wrap,.property-grid .pcard-img-wrap,.rhp-card .image-wrap,.rh_prop_card__thumb{position:relative !important;width:100% !important;aspect-ratio:16 / 9 !important;overflow:hidden !important;background:linear-gradient(135deg, #f5edde, #ede4d4)}
.pcard-img-wrap > img,.pcard-img-wrap > a > img,.rhp-card .image-wrap > img,.rh_prop_card__thumb > img{position:absolute !important;inset:0 !important;width:100% !important;height:100% !important;object-fit:cover !important;object-position:center !important;transition:transform 0.6s ease, opacity 0.36s ease}
.pcard-img-wrap:hover > img,.pcard-img-wrap:hover > a > img{transform:scale(1.04)}
.single-property .gallery,.single-property .rh-property-gallery,body.single-property .property-hero,.property-template-default .gallery,.property-template-default .property-hero{max-width:1200px !important;margin:32px auto !important;width:100% !important}
.single-property .gallery img,.single-property .gallery .gallery-item,.single-property .rh-property-gallery > div,.single-property .property-hero img,.property-template-default .property-hero img{aspect-ratio:3 / 2 !important;object-fit:cover !important;width:100% !important;height:auto !important;border-radius:2px}
/* Villoura speed fix 2026-10-11 #5: the shimmer on lazy photos is removed together with the vlr-img-fade script in footer-v2.php that switched it off (class villoura-vf-loaded). Without that script the shimmer would animate forever behind every lazy photo; a CSS-only page cannot tell when a photo has loaded. Photos keep their beige card/gallery background while loading. Old rules: original site-frame.css lines 376-379. */

/* ===== 2026-09-24: contact form "All fields are required." note + gold asterisks (was villoura-contact-polish) ===== */
.vlr-reqnote{font-size:12.5px;color:#8a6d3b;font-weight:600;letter-spacing:.02em;margin:0 0 14px}
.vlr-reqnote ~ .gform-body .gfield_required,.vlr-reqnote ~ .gform-body .gfield_required_text{color:#8a6d3b !important;font-weight:700 !important}

/* 2026-09-24 destinations (was villoura-dest-switcher / cta-band / dest-balance / dest-content scripts) */
.vlr-destswitch{position:relative;z-index:5;background:#fbf8f2;border-top:1px solid #ece3d3;border-bottom:1px solid #ece3d3}
.vlr-destswitch-inner{max-width:1180px;margin:0 auto;display:flex;gap:8px;align-items:center;overflow-x:auto;padding:11px 20px;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.vlr-destswitch-inner::-webkit-scrollbar{display:none}
.vlr-destswitch-lab{flex:0 0 auto;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:#8a6d3b;font-weight:700;margin-right:4px}
.vlr-destchip{flex:0 0 auto;display:inline-block;padding:6px 14px;border:1px solid #e2d6bf;border-radius:999px;font-size:13px;color:#3a3327;text-decoration:none;white-space:nowrap;transition:all .15s;background:#fff}
.vlr-destchip:hover{border-color:#c4984e;color:#8a6d3b}
.vlr-destchip.active{background:#c4984e;border-color:#c4984e;color:#fff;font-weight:600}
.vlr-destchip.all{border-style:dashed}
.vlr-ctaband{background:linear-gradient(135deg,#fbf6ec,#f3e7cf);color:#2b2318;padding:66px 24px;text-align:center;border-top:1px solid #e8dcc4}
.vlr-ctaband .vlr-ctaeyebrow{display:block;font-size:12px;letter-spacing:.22em;text-transform:uppercase;color:#C4984E;margin-bottom:14px;font-weight:600}
.vlr-ctaband h2{font-family:'Cormorant Garamond',Cormorant Fallback,Cormorant Fallback N,Georgia,serif;font-size:36px;line-height:1.15;margin:0 0 14px;color:#1e1a14;font-weight:600}
.vlr-ctaband p{max-width:600px;margin:0 auto 28px;font-size:16px;line-height:1.6;color:#4a4238}
.vlr-ctaband .vlr-ctabtn{display:inline-block;background:#C4984E;color:#fff;padding:16px 38px;border-radius:2px;font-weight:600;letter-spacing:.04em;text-decoration:none;transition:background .15s ease}
.vlr-ctaband .vlr-ctabtn:hover{background:#a67c3e}
.vlr-ctaband .vlr-ctaphone{display:block;margin-top:18px;color:#4a4238;font-size:14px}
.vlr-ctaband .vlr-ctaphone a{color:#C4984E;text-decoration:none;font-weight:600}
.vd-k{font-size:15px!important;letter-spacing:.22em!important;text-transform:uppercase!important;color:#8a6d3b!important;font-weight:700!important;display:flex!important;align-items:center!important;gap:14px!important;margin-bottom:6px!important}
.vd-k::after{content:'';flex:1;height:1px;background:linear-gradient(90deg,#C4984E,transparent)}
.vd-region .vd-card:only-child,.vd-region .vd-card:nth-child(3n+1):last-child:not(:first-child),.props-grid>:nth-child(3n+1):last-child:not(:first-child){grid-column:1/-1!important}
.vd-region .vd-card:only-child img,.vd-region .vd-card:only-child [class*="img"],.vd-region .vd-card:nth-child(3n+1):last-child:not(:first-child) img,.props-grid>:nth-child(3n+1):last-child:not(:first-child) img{max-height:340px;object-fit:cover}
body:has(.props-grid) section{scroll-margin-top:90px}
.vlr-hswap{position:relative;overflow:hidden}
.vlr-hswap .vlr-alt{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .35s ease}
.vlr-hswap:hover .vlr-alt{opacity:1}
@media(max-width:768px){.vd-region [class*="grid"],.props-grid,.vx-grid,.ft-grid{grid-template-columns:1fr!important}.vd-region .vd-card:only-child img,.vd-region .vd-card:nth-child(3n+1):last-child:not(:first-child) img,.props-grid>:nth-child(3n+1):last-child:not(:first-child) img{max-height:240px}}
@media(max-width:600px){.vlr-ctaband{padding:48px 20px}.vlr-ctaband h2{font-size:28px}}
/* destinations hub: region headings link to their pages (was villoura-render-polish) */
.vd-h a{color:inherit;text-decoration:none}.vd-h a:hover{color:#A85C2B}.vd-all{display:inline-block;margin:-6px 0 18px;font-family:Jost,Jost Fallback,Jost Fallback R,-apple-system,system-ui,sans-serif;font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:#A85C2B;text-decoration:none;border-bottom:1px solid #A85C2B;padding-bottom:3px}.vd-all:hover{color:#1E1A14;border-color:#1E1A14}
/* Journal list (was villoura-blog-polish; re-added 24 Sep after an overwrite) */
/* #62 balance + sticky sidebar */
.blog-layout{max-width:1340px !important;margin-left:auto !important;margin-right:auto !important}
.blog-sidebar{position:sticky !important;top:96px !important;align-self:start !important}
/* #119 consistent card hierarchy: clamp excerpts to 3 lines */
.ac-excerpt{display:-webkit-box !important;-webkit-line-clamp:3 !important;-webkit-box-orient:vertical !important;overflow:hidden !important}
.ac-title{overflow:hidden !important;display:-webkit-box !important;-webkit-line-clamp:2 !important;-webkit-box-orient:vertical !important}
/* #118 legible, accessible category filter */
.cat-bar{flex-wrap:wrap !important;gap:3px !important}
.cat-bar .cat-pill{font-size:13px !important;letter-spacing:.05em !important;color:#4a4437 !important;padding:7px 15px !important;border-radius:999px !important;background:transparent !important;border:1px solid transparent !important;transition:background .15s,color .15s}
.cat-bar .cat-pill:hover,.cat-bar .cat-pill:focus-visible{color:#8a6d3b !important;background:#f2ebdd !important}
.cat-bar .cat-pill.on{color:#fff !important;background:#8a6d3b !important;font-weight:600 !important}
@media(max-width:900px){.blog-sidebar{position:static !important}}
p:has(>a.vd-all){display:contents}
/* Journal (was villoura-blog-editorial + villoura-blog-images) */
.vlr-imgfail{display:flex!important;align-items:center;justify-content:center;
  background:linear-gradient(135deg,#1e1a14 0%,#3a2f1e 60%,#C4984E 160%)!important}
.vlr-imgfail::after{content:'V';font-family:Georgia,serif;font-size:44px;color:#C4984E;opacity:.85}
.vlr-imgfail img{display:none!important}
.vlr-byline{display:flex;align-items:center;gap:6px;margin-top:10px;font-size:12px;color:#8a8072;
  letter-spacing:.04em}
.vlr-byline .vlr-by-dot{width:18px;height:18px;border-radius:50%;background:#C4984E;color:#fff;
  display:inline-flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;font-family:Georgia,serif}
.vlr-loadmore{display:block;margin:34px auto 8px;padding:14px 34px;background:#1e1a14;color:#fff;
  border:0;border-radius:999px;font-size:13px;letter-spacing:.12em;text-transform:uppercase;cursor:pointer}
.vlr-loadmore:hover{background:#C4984E}
.vlr-hidden-card{display:none!important}
.vlr-copied{position:fixed;bottom:26px;left:50%;transform:translateX(-50%);background:#1e1a14;color:#fff;
  padding:10px 22px;border-radius:999px;font-size:13px;z-index:5000;opacity:0;transition:opacity .25s}
.vlr-copied.on{opacity:1}
.vlr-authbio{margin-top:8px;font-size:13.5px;line-height:1.6;color:#6f6759;max-width:560px}
.vlr-fig{margin:34px 0}
.vlr-fig img{width:100%;height:auto;max-height:440px;object-fit:cover;border-radius:10px;display:block}
.vlr-fig figcaption{margin-top:10px;font-size:13px;color:#8a8072;letter-spacing:.02em}
.vlr-fig figcaption a{color:#8a6d3b;text-decoration:underline}
/* date picker pop-up always above the page (was a page script) */
#ui-datepicker-div{position:absolute!important;z-index:99999!important}

/* 2026-09-26: room for the "I'm not a robot" box, which now loads when the form comes into view (villoura-third-party.php) */
.ginput_recaptcha{min-height:78px}

/* ---- 2026-10-06: villa search icon in the top menu (Angela). Markup in header-v2.php; the search page reads ?q=. Undo: delete this block + the <details class="nav-srch"> in header-v2.php. ---- */
.nav-srch{position:relative;display:flex;align-items:center;}
.nav-srch>summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:center;width:38px;height:38px;color:#1E1A14;border-radius:50%;transition:color .2s,background .2s;}
.nav-srch>summary::-webkit-details-marker{display:none;}
.nav-srch>summary:hover,.nav-srch[open]>summary{color:#A67C3E;background:rgba(196,152,78,.12);}
header.vlr-over:not(.vlr-solid) .nav-srch>summary{color:#fff;}
.nav-srch-f{position:absolute;right:0;top:calc(100% + 14px);width:420px;display:flex;gap:8px;padding:12px;background:#F5EDDF;border:1px solid rgba(30,26,20,.14);box-shadow:0 14px 34px rgba(30,26,20,.18);z-index:210;}
.nav-srch-f input{flex:1;min-width:0;height:46px;padding:0 14px;border:1px solid rgba(30,26,20,.28);background:#fff;font:400 16px/1.2 'Jost',Jost Fallback,Jost Fallback R,sans-serif;color:#1E1A14;border-radius:0;-webkit-appearance:none;appearance:none;}
.nav-srch-f input:focus{outline:2px solid #C4984E;outline-offset:0;}
.nav-srch-f button{height:46px;padding:0 20px;background:#C4984E;color:#1E1A14;border:0;font:500 12px/1 'Jost',Jost Fallback,Jost Fallback R,sans-serif;letter-spacing:.16em;text-transform:uppercase;cursor:pointer;}
.nav-srch-f button:hover{background:#A67C3E;color:#fff;}
@media(max-width:900px){.nav-srch-f{position:fixed;left:12px;right:12px;top:66px;width:auto;}}
@media(max-width:360px){.nav-r{gap:6px;}.nav-srch>summary{width:30px;}} /* 2026-10-06: smallest phones keep the header on one line with the search icon */

/* 2026-10-07 nav: the Destinations link sits inside the dropdown wrapper (.nav-dd), so it rendered as an inline box 4px lower than the other menu links. Make it a block like its siblings so all five line up (Angela: "fix the uneven wording"). */
.nav-mid .nav-dd{display:block}
.nav-mid .nav-dd>a{display:block}
