/* KTP Polish (2026-10-09): one late layer for spacing, type scale, overflow and caption clean-up. Loaded last (inc/polish.php).
   Remove this file + inc/polish.php to roll back. No content or URLs are touched. */
:root{--kp-sec:64px;--kp-hero-adj:72px;--kp-head:24px;--kp-gap:20px;--kp-w:1200px;--kp-fd:Fraunces,Georgia,serif;
  --ktp-font-display:Inter,system-ui,-apple-system,"Segoe UI",sans-serif;--ktp-font-body:Inter,system-ui,-apple-system,"Segoe UI",sans-serif}
@media (max-width:1023px){:root{--kp-sec:48px;--kp-hero-adj:56px}}
@media (max-width:767px){:root{--kp-sec:36px;--kp-hero-adj:40px;--kp-head:18px;--kp-gap:14px}}

/* 1. Captions: the generic "Illustrative image" badge is gone (alt text stays). Vehicle label (.hv-cap / .ai-tag on the car-rental hero) is NOT touched. */
.hv-fig__cap,.hv-hero__cap{display:none!important}

/* 3. Type */
html{-webkit-text-size-adjust:100%}
body{font-family:Inter,system-ui,-apple-system,"Segoe UI",sans-serif;font-size:17px;line-height:1.6;font-synthesis:none}
body :is(button,input,select,textarea,optgroup){font-family:inherit}
body :is(h1,h2,h3){font-family:var(--kp-fd)!important;font-optical-sizing:auto;letter-spacing:-.01em!important;overflow-wrap:break-word;text-wrap:balance}
body h1{font-size:clamp(32px,4.2vw,52px)!important;line-height:1.1!important;font-weight:700!important}
body h2{font-size:clamp(26px,3vw,38px)!important;line-height:1.15!important;font-weight:700!important}
body h3{font-size:clamp(19px,1.8vw,24px)!important;line-height:1.25!important;font-weight:600!important}
body :is(h4,h5,h6){font-family:Inter,system-ui,sans-serif!important;font-size:17px!important;line-height:1.35!important;font-weight:600!important}
body :is(p,li,dd,blockquote,summary){font-size:17px!important;line-height:1.6!important}
body :is(table,form,nav,footer,details,aside,[class*="card"],[class*="tier"],[class*="step"],[class*="faq"],[class*="tile"],[class*="box"],.hv-steps li) :is(p,li,dd,td,th,label,summary,blockquote){font-size:16px!important;line-height:1.5!important}
body :is(td,th,label,legend){font-size:16px;line-height:1.5}
body :is(input,select,textarea){font-size:16px!important}
html body :is(small,figcaption,[class*="meta"],[class*="muted"],[class*="note"],[class*="credit"],[class*="caption"],[class*="hint"],.ktp-meta,.bk-muted){font-size:14px!important;line-height:1.5!important}
@media (max-width:767px){body{font-size:16px}body :is(p,li,dd,blockquote,summary){font-size:16px!important}}

/* headings that are really labels / panel titles keep a small, Inter treatment */
html body :is(.ktp-fcol h3,.lg-group>h3,.hv-search__h){font-family:Inter,system-ui,sans-serif!important;font-size:13px!important;line-height:1.3!important;font-weight:700!important;text-wrap:wrap}
html body .hv-search__h{font-size:14px!important}
html body :is(aside,.qw,.ofr,.tt-proof,.pk-filters,.co-formwrap__i) :is(h2,.qw__h,.ofr__h,.tt-proof__h,.th-h2){font-size:clamp(19px,1.8vw,24px)!important;line-height:1.25!important;font-weight:600!important}
/* Fraunces is for H1-H3 only: everything else (prices, table names, summaries, legends...) is Inter, icon fonts excluded */
body :is(b,strong,em,summary,legend,th,td,a,span,p,div,button,li,label,dt,dd,small,input,select,textarea,figcaption):not([class*="eicon"],[class*="fa-"],[class^="fa"],.eicon):not(h1 *,h2 *,h3 *){font-family:Inter,system-ui,-apple-system,"Segoe UI",sans-serif!important}
/* uppercase labels: .12em */
body :is(.ktp-gh,.ktp-fcol h3,.ktp-fal,.ui-hero__eyebrow,.tt-eyebrow,.ktp-eyebrow,.vc__cat,.cp-card__opts,.hv-tile__m,.hv-tile__now,.pk-dur__d,.bk-label,.hv-search__h,.rt-card__t,.th-sel,legend,dt,th,[class*="eyebrow"],[class*="kicker"]){letter-spacing:.12em!important}

/* 2. Spacing: section scale */
body :is(.hv-sec,.th-sec,.vp-sec,.pk-sec,.pkv2,.ktp-sec:not(.ktp-sec--tight),.bk-fg,.bk-results,.lg-next,.gm-next){padding-top:var(--kp-sec)!important;padding-bottom:var(--kp-sec)!important;min-height:0}
body :is(.hv-hero,.ui-hero,.th-hero)+:is(.hv-sec,.th-sec,.vp-sec,.pk-sec,.pkv2,.ktp-sec:not(.ktp-sec--tight),.bk-fg,.bk-results,.lg-next,.gm-next){padding-top:var(--kp-hero-adj)!important}
body .hv-cta{min-height:0!important;padding-block:var(--kp-sec)}
/* design-ported pages: class-less <section>s carry inline clamp() padding (up to 112px). Heroes (inline min-height) are left alone. */
body main section:not([class]):not([style*="min-height"]){padding-top:var(--kp-sec)!important;padding-bottom:var(--kp-sec)!important}
body main section:not([class]):not([style*="min-height"])[style*="px 0px"]{padding-bottom:0!important}
body main section:not([class])[style*="min-height"]+section:not([class]){padding-top:var(--kp-hero-adj)!important}
body main section:not([class]):not([style*="px 0px"],[style*="background"],[style*="min-height"])+section:not([class]):not([style*="background"],[style*="min-height"]){padding-top:calc(var(--kp-sec)/2)!important}
body main section:not([class]):not([style*="px 0px"],[style*="background"],[style*="min-height"]):has(+section:not([class]):not([style*="background"],[style*="min-height"])){padding-bottom:calc(var(--kp-sec)/2)!important}
/* same background back to back: one padding between, not two */
body .hv-sec:not([class*="hv-sec--"])+.hv-sec:not([class*="hv-sec--"]),
body .hv-sec.hv-sec--sand+.hv-sec.hv-sec--sand,
body .hv-sec.hv-sec--pine+.hv-sec.hv-sec--pine,
body .hv-sec.hv-sec--red+.hv-sec.hv-sec--red,
body .th-sec:not([class*="th-sec--"])+.th-sec:not([class*="th-sec--"]),
body .th-sec.th-sec--sand+.th-sec.th-sec--sand,
body .th-sec.th-sec--pine+.th-sec.th-sec--pine,
body .vp-sec:not([class*="vp-sec--"])+.vp-sec:not([class*="vp-sec--"]),
body .vp-sec.vp-sec--sand+.vp-sec.vp-sec--sand,
body .vp-sec.vp-sec--pine+.vp-sec.vp-sec--pine,
body .pk-sec:not([class*="pk-sec--"])+.pk-sec:not([class*="pk-sec--"]),
body .pk-sec.pk-sec--sand+.pk-sec.pk-sec--sand,
body .pk-sec.pk-sec--pine+.pk-sec.pk-sec--pine{padding-top:calc(var(--kp-sec)/2)!important}
body .hv-sec:not([class*="hv-sec--"]):has(+.hv-sec:not([class*="hv-sec--"])),
body .hv-sec.hv-sec--sand:has(+.hv-sec.hv-sec--sand),
body .hv-sec.hv-sec--pine:has(+.hv-sec.hv-sec--pine),
body .hv-sec.hv-sec--red:has(+.hv-sec.hv-sec--red),
body .th-sec:not([class*="th-sec--"]):has(+.th-sec:not([class*="th-sec--"])),
body .th-sec.th-sec--sand:has(+.th-sec.th-sec--sand),
body .th-sec.th-sec--pine:has(+.th-sec.th-sec--pine),
body .vp-sec:not([class*="vp-sec--"]):has(+.vp-sec:not([class*="vp-sec--"])),
body .vp-sec.vp-sec--sand:has(+.vp-sec.vp-sec--sand),
body .vp-sec.vp-sec--pine:has(+.vp-sec.vp-sec--pine),
body .pk-sec:not([class*="pk-sec--"]):has(+.pk-sec:not([class*="pk-sec--"])),
body .pk-sec.pk-sec--sand:has(+.pk-sec.pk-sec--sand),
body .pk-sec.pk-sec--pine:has(+.pk-sec.pk-sec--pine){padding-bottom:calc(var(--kp-sec)/2)!important}
/* heading block -> content */
body :is(.bk-wrap,.ktp-wrap,.hv-wrap,.lg-wrap,.gm-wrap,.ig-wrap,.pkv2,.qw-wide,.hv-head)>h2{margin-top:0;margin-bottom:12px}
body :is(.bk-wrap,.ktp-wrap,.hv-wrap,.lg-wrap,.gm-wrap,.ig-wrap,.pkv2,.qw-wide,.hv-head)>h2:not(:has(+p)){margin-bottom:var(--kp-head)!important}
body :is(.bk-wrap,.ktp-wrap,.hv-wrap,.lg-wrap,.gm-wrap,.ig-wrap,.pkv2,.qw-wide,.hv-head)>h2+p{margin:0 0 var(--kp-head)}
body .hv-head{margin-bottom:var(--kp-head)}
/* card grid gaps */
body :is(.hv-grid,.th-cards,.vp-grid2,.vp-grid3,.cp-cards,.pk-grid,.pkv2-grid,.tt-grid,.lg-groups,.pkv2-two,.st-pk,.st-types,.st-needs,.vpk__list,.optx__tiers,.sv-steps,.vq__grid,.hv-steps){gap:var(--kp-gap)!important}
body .hv-how .hv-steps{gap:var(--kp-gap)!important}

/* content width */
body :is(.bk-wrap,.ktp-wrap,.hv-wrap,.lg-wrap,.gm-wrap,.ig-wrap){max-width:var(--kp-w)}
body :is(.bk-wrap,.ktp-wrap,.hv-wrap,.lg-wrap,.gm-wrap,.ig-wrap)>p,body :is(.ktp-prose,article) p{max-width:72ch}
body :is(.bk-wrap,.ktp-wrap,.hv-wrap,.lg-wrap,.gm-wrap,.ig-wrap)>p[style*="center"],body :is(.bk-wrap,.ktp-wrap,.hv-wrap,.lg-wrap,.gm-wrap,.ig-wrap)>.tc>p{margin-inline:auto}

/* overflow: every card grid/flex child may shrink, long words wrap */
body :is([class*="grid"],[class*="cards"],[class*="-two"],[class*="__row"],[class*="steps"],.hv-how,.hv-route,.hv-two,.th-links,.ktp-cols)>*{min-width:0}
body :is([class*="card"],[class*="step"],[class*="tile"],[class*="tier"],.hv-steps li) :is(h2,h3,h4,p,li,span,a,dd,dt){overflow-wrap:anywhere}
body :is(p,li,dd,td,th,a,figcaption){overflow-wrap:break-word}
:where(img,video,iframe,svg){max-width:100%}

/* floating dock: 56px buttons, 12px apart (set in inc/dock.php). Below 1344px the content column would run under it, so sections keep a 72px lane on the right (backgrounds stay full-bleed). */
@media (min-width:760px) and (max-width:1343px){body main section{padding-right:72px!important}}

/* Service cards (shared): wrapping grid, 4 / 2 / 1 per row, no horizontal scroll */
body .ktp-svc-grid{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:var(--kp-gap)!important;overflow:visible!important;margin:0!important;padding:4px 0 8px!important;scroll-snap-type:none!important}
body .ktp-svc-grid>.ktp-svc-card{flex:none!important;width:auto!important;min-width:0!important}
body .ktp-svc-card :is(b,span){overflow-wrap:anywhere}
body .ktp-svc-card picture{display:block;position:absolute;inset:0}
@media (min-width:600px) and (max-width:1023px){body .ktp-svc-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}}
@media (max-width:599px){body .ktp-svc-grid{grid-template-columns:minmax(0,1fr)!important}}
@media (max-width:599px){body .ktp-scroller>.ktp-services{display:grid!important;grid-template-columns:minmax(0,1fr)!important;gap:var(--kp-gap)}body .ktp-scroller>.ktp-services>li{flex:none!important;width:auto}}
body .ktp-service__art picture{display:block;position:absolute;inset:0}
body .ktp-service{min-width:0}

/* Admin bar: keep the sticky header and its anchors below the 32px / 46px bar (logged-in only; visitors unaffected) */
@media (min-width:783px){body.admin-bar #wpadminbar #wp-admin-bar-root-default{float:left;display:flex;flex-wrap:wrap;height:32px;overflow:hidden;max-width:calc(100% - 250px)}}
html:has(body.admin-bar){margin-top:32px!important}
@media (max-width:782px){html:has(body.admin-bar){margin-top:46px!important}}
body.admin-bar .elementor-location-header{z-index:50}
