.elementor-kit-4{--e-global-color-primary:#1B53A8;--e-global-color-secondary:#0C2B57;--e-global-color-text:#1A2433;--e-global-color-accent:#1C7A39;--e-global-color-cblued:#0F3F86;--e-global-color-cgreen:#2E9447;--e-global-color-cgreendp:#237A39;--e-global-color-cgreenlt:#5FCF7D;--e-global-color-cink2:#3C485A;--e-global-color-cmuted:#6A7689;--e-global-color-cline:#DDE5F0;--e-global-color-cline2:#C8D4E4;--e-global-color-cbgcool:#F2F6FC;--e-global-color-cbgcool2:#E9F0F9;--e-global-color-cstar:#FFCB45;--e-global-typography-primary-font-family:"Newsreader";--e-global-typography-primary-font-weight:800;--e-global-typography-primary-line-height:1.05em;--e-global-typography-secondary-font-family:"Hanken Grotesk";--e-global-typography-secondary-font-weight:600;--e-global-typography-text-font-family:"Hanken Grotesk";--e-global-typography-text-font-size:16px;--e-global-typography-text-font-weight:400;--e-global-typography-text-line-height:1.55em;--e-global-typography-accent-font-family:"Hanken Grotesk";--e-global-typography-accent-font-weight:700;color:var( --e-global-color-text );font-family:"Hanken Grotesk", Sans-serif;font-size:16px;font-weight:400;line-height:1.55em;}.elementor-kit-4 button,.elementor-kit-4 input[type="button"],.elementor-kit-4 input[type="submit"],.elementor-kit-4 .elementor-button{background-color:var( --e-global-color-accent );font-family:"Hanken Grotesk", Sans-serif;font-size:16px;font-weight:700;color:#FFFFFF;border-radius:999px 999px 999px 999px;padding:14px 26px 14px 26px;}.elementor-kit-4 e-page-transition{background-color:#FFBC7D;}.elementor-kit-4 h1{color:var( --e-global-color-text );font-family:"Newsreader", Sans-serif;font-size:68px;font-weight:900;line-height:0.98em;letter-spacing:-0.03em;}.elementor-kit-4 h2{color:var( --e-global-color-text );font-family:"Newsreader", Sans-serif;font-size:46px;font-weight:800;line-height:1.05em;letter-spacing:-0.025em;}.elementor-kit-4 h3{color:var( --e-global-color-text );font-family:"Newsreader", Sans-serif;font-size:21px;font-weight:800;line-height:1.15em;letter-spacing:-0.02em;}.elementor-kit-4 h4{color:var( --e-global-color-text );font-family:"Newsreader", Sans-serif;font-size:18px;font-weight:800;line-height:1.2em;}.elementor-kit-4 h5{font-family:"Newsreader", Sans-serif;font-size:16px;font-weight:800;}.elementor-kit-4 h6{font-family:"Hanken Grotesk", Sans-serif;font-size:13px;font-weight:700;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1240px;}.e-con{--container-max-width:1240px;--container-default-padding-top:0px;--container-default-padding-right:0px;--container-default-padding-bottom:0px;--container-default-padding-left:0px;}.elementor-widget:not(:last-child){--kit-widget-spacing:0px;}.elementor-element{--widgets-spacing:0px 0px;--widgets-spacing-row:0px;--widgets-spacing-column:0px;}{}h1.entry-title{display:var(--page-title-display);}.site-header .site-branding{flex-direction:column;align-items:stretch;}.site-header{padding-inline-end:0px;padding-inline-start:0px;}.site-footer .site-branding{flex-direction:column;align-items:stretch;}@media(max-width:1024px){.elementor-kit-4 h1{font-size:48px;}.elementor-kit-4 h2{font-size:38px;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1024px;}.e-con{--container-max-width:1024px;}}@media(max-width:767px){.elementor-kit-4 h1{font-size:38px;}.elementor-kit-4 h2{font-size:30px;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:767px;}.e-con{--container-max-width:767px;}}:root { --e-gv-3c68cf5:#1b53a8; --blue:#1b53a8; --blue-deep:#0f3f86; --blue-night:#0c2b57; --blue-bright:#2f74d6; --green:#2e9447; --green-deep:#237a39; --green-cta:#1c7a39; --green-light:#5fcf7d; --ink:#1a2433; --ink-2:#3c485a; --muted:#5b6779; --gray:#6f7378; --bg:#ffffff; --bg-cool:#f2f6fc; --bg-cool-2:#e9f0f9; --cream:#f7faff; --line:#dde5f0; --line-2:#c8d4e4; --star:#ffcb45; --star-2:#ffb22e; --on-dark:#c5d3e6; --on-dark-dim:#a9bcd6; --on-dark-faint:#8ca0be; --on-dark-bright:#dce6f5; --display:Hanken Grotesk; --heading:Newsreader; }
/* Start custom CSS *//* stroke-only SVG icons: Elementor rewrites fill to currentColor */
.e-svg-base svg{fill:none}

/* The e-svg widget renders an inline <svg> inside its box, so it sits on the
   text baseline and hangs a few px below the optical centre of adjacent text
   (visible in the header utility bar). Take it out of the line box. */
.e-svg-base{display:flex;align-items:center;justify-content:center;line-height:0}
.e-svg-base svg{display:block}

/* desktop submenu panel */
@media (min-width:1025px){
  .elementor-widget-nav-menu ul.elementor-nav-menu--dropdown{
    box-shadow:0 24px 60px -16px rgba(12,43,87,.30);
  }
}

/* FAQ accordion: hairline rows, no boxed border */
.elementor-accordion .elementor-accordion-item{border:0;border-bottom:1px solid #dde5f0}
.elementor-accordion .elementor-accordion-item:first-child{border-top:1px solid #dde5f0}
.elementor-tab-title{cursor:pointer}

/* ---- mobile nav drawer ---- */
@media (max-width:1024px){
  #ppp-nav .elementor-widget-nav-menu{position:static}

  #ppp-nav nav.elementor-nav-menu--dropdown{
    position:absolute;left:0;right:0;top:100%;width:auto;
    max-height:76vh;overflow-y:auto;
    background:#fff;border-radius:0;
    /* the nav menu widget's "distance" control adds margin-top:10px, which the
       drawer inherits and shows as a gap under the sticky header. The header
       already draws its own bottom border, so no border-top here either. */
    margin-top:0;
    border-top:0;
    box-shadow:0 24px 60px -16px rgba(12,43,87,.30);
    padding:4px clamp(18px,4vw,44px) 20px;
  }

  /* nested submenu is inline inside the drawer, not a floating panel */
  #ppp-nav nav.elementor-nav-menu--dropdown ul.sub-menu{
    box-shadow:none;border:0;border-radius:0;background:transparent;padding:0;
  }
  #ppp-nav nav.elementor-nav-menu--dropdown ul{background:transparent;border:0}

  #ppp-nav nav.elementor-nav-menu--dropdown .elementor-item{
    font-family:var(--display),sans-serif;font-size:16px;font-weight:600;
    color:var(--ink);padding:13px 0;
    border-bottom:1px solid var(--bg-cool-2);
  }
  #ppp-nav nav.elementor-nav-menu--dropdown .elementor-sub-item{
    font-family:var(--display),sans-serif;font-size:15px;font-weight:500;
    color:var(--ink-2);padding:11px 0 11px 16px;
    border-bottom:1px solid var(--bg-cool-2);
  }
  #ppp-nav nav.elementor-nav-menu--dropdown .elementor-item:hover,
  #ppp-nav nav.elementor-nav-menu--dropdown .elementor-item.elementor-item-active,
  #ppp-nav nav.elementor-nav-menu--dropdown .elementor-sub-item:hover{
    color:var(--blue);background:transparent;
  }
  #ppp-nav nav.elementor-nav-menu--dropdown li:last-child > .elementor-item,
  #ppp-nav nav.elementor-nav-menu--dropdown ul.sub-menu li:last-child > .elementor-sub-item{
    border-bottom:0;
  }

  #ppp-nav .elementor-menu-toggle{width:44px;height:44px;justify-content:center}
}

/* desktop nav underline: inset by the item's 13px side padding so the
   pointers on neighbouring items (active + hover) never join into one line */
@media (min-width:1025px){
  #ppp-nav .e--pointer-underline .elementor-item:after{left:13px;width:calc(100% - 26px)}
}

/* link hover (not buttons). The kit's link-hover colour used to be set in Site
   Settings, which turned every button's label blue on hover, including white
   labels on the dark CTA band. Buttons now keep their own hover colours. */
.elementor-kit-4 a:not(.e-button-base):hover{color:#1B53A8}

/* keyboard focus: always visible, drawn in the element's own text colour so it
   contrasts on both light and dark sections */
.elementor-kit-4 a:focus-visible,
.elementor-kit-4 button:focus-visible,
.elementor-kit-4 input:focus-visible,
.elementor-kit-4 select:focus-visible,
.elementor-kit-4 textarea:focus-visible,
.elementor-kit-4 [tabindex]:not([tabindex="-1"]):focus-visible{
  outline:2px solid currentColor;outline-offset:3px;
}
.elementor-kit-4 input:focus-visible,
.elementor-kit-4 select:focus-visible,
.elementor-kit-4 textarea:focus-visible{outline-color:#1B53A8}

/* skip-link target: focused by script, no ring needed on the whole page */
main#content:focus{outline:none}
/* required-field asterisk: dark red (7.3:1 on white) so it is not a low-contrast
   colour-only cue. The form intro also says which fields are required. */
.elementor-mark-required .elementor-field-label:after{color:#A4262C}

/* Highlighted phrases in headings. Elementor strips inline styles from text, so the
   colour comes from context: brand green on light sections, light green on dark ones. */
.e-heading-base span { color: var(--green); }
.section-dark .e-heading-base span,
#ppp-hero .e-heading-base span,
#ppp-cta .e-heading-base span { color: var(--green-light); }
#ppp-hero .e-paragraph-base strong { color: var(--blue-deep); }

/* Footer: below desktop the brand block (logo, blurb, licence, rating, Yelp) takes the full
   width so the logo keeps its size and the rating stays on one line. */
@media (max-width:1024px){
  #ppp-footer-grid > :first-child{ grid-column:1 / -1; }
}

/* Form dropdowns: Elementor's caret scales with the field text and grew too big on
   phones, overlapping longer choices. Fixed small caret, muted, with room reserved. */
.elementor-form .elementor-field-type-select .select-caret-down-wrapper{
  inset-inline-end:14px;font-size:8px;line-height:1;color:#5b6779;
}
.elementor-form .elementor-field-type-select .select-caret-down-wrapper svg{
  width:8px;height:8px;fill:currentColor;
}
.elementor-form .elementor-field-type-select select.elementor-field-textual{
  padding-inline-end:30px;text-overflow:ellipsis;
}

/* Recent work tiles: the location pill keeps its natural width on one line; the caption
   beside it wraps instead (on phones "Mammoth Lakes" was folding onto two lines). */
#ppp-work .e-paragraph-base + .e-paragraph-base{white-space:nowrap;flex-shrink:0;}
#ppp-work .e-paragraph-base:first-child{min-width:0;}/* End custom CSS */