.elementor-kit-7{--e-global-color-primary:#00123C;--e-global-color-secondary:#F6B249;--e-global-color-text:#5B5A66;--e-global-color-accent:#F6B249;--e-global-color-464b9b3:#0B1F52;--e-global-color-dc5daef:#E8EBF2;--e-global-color-9487257:#FAF7F2;--e-global-color-e6ebbe0:#F1EBE1;--e-global-color-d1f73a5:#D4D1CC;--e-global-color-7469d84:#FDF3E1;--e-global-color-1604b66:#FFFFFF;--e-global-color-e5d5f63:#D9962E;--e-global-typography-primary-font-family:"Plus Jakarta Sans";--e-global-typography-primary-font-weight:500;--e-global-typography-secondary-font-family:"Plus Jakarta Sans";--e-global-typography-secondary-font-weight:600;--e-global-typography-text-font-family:"Plus Jakarta Sans";--e-global-typography-text-font-weight:400;--e-global-typography-accent-font-family:"Plus Jakarta Sans";--e-global-typography-accent-font-weight:600;--e-global-typography-ll_script-font-family:"Sacramento";--e-global-typography-ll_script-font-size:40px;--e-global-typography-ll_script-font-weight:400;--e-global-typography-ll_script-line-height:1.2em;--e-global-typography-ll_eyebrow-font-family:"Plus Jakarta Sans";--e-global-typography-ll_eyebrow-font-size:11px;--e-global-typography-ll_eyebrow-font-weight:600;--e-global-typography-ll_eyebrow-text-transform:uppercase;--e-global-typography-ll_eyebrow-line-height:1.2em;--e-global-typography-ll_eyebrow-letter-spacing:0.2em;--e-global-typography-ll_accent-font-family:"Instrument Serif";--e-global-typography-ll_accent-font-weight:400;--e-global-typography-ll_accent-font-style:italic;color:#5B5A66;font-family:"Plus Jakarta Sans", Sans-serif;font-size:16px;font-weight:400;text-transform:none;line-height:1.7em;letter-spacing:0em;}.elementor-kit-7 button,.elementor-kit-7 input[type="button"],.elementor-kit-7 input[type="submit"],.elementor-kit-7 .elementor-button{background-color:#F6B249;font-family:"Plus Jakarta Sans", Sans-serif;font-size:15px;font-weight:600;text-transform:none;line-height:1em;letter-spacing:0.01em;color:#00123C;border-radius:999px 999px 999px 999px;padding:16px 30px 16px 30px;}.elementor-kit-7 button:hover,.elementor-kit-7 button:focus,.elementor-kit-7 input[type="button"]:hover,.elementor-kit-7 input[type="button"]:focus,.elementor-kit-7 input[type="submit"]:hover,.elementor-kit-7 input[type="submit"]:focus,.elementor-kit-7 .elementor-button:hover,.elementor-kit-7 .elementor-button:focus{background-color:#D9962E;color:#00123C;}.elementor-kit-7 e-page-transition{background-color:#FFBC7D;}.elementor-kit-7 p{margin-block-end:5px;}.elementor-kit-7 a{color:#00123C;}.elementor-kit-7 a:hover{color:#0B1F52;}.elementor-kit-7 h1{color:#00123C;font-family:"Plus Jakarta Sans", Sans-serif;font-size:64px;font-weight:500;text-transform:none;line-height:1.02em;letter-spacing:-0.02em;}.elementor-kit-7 h2{color:#00123C;font-family:"Plus Jakarta Sans", Sans-serif;font-size:48px;font-weight:500;text-transform:none;line-height:1.06em;letter-spacing:-0.02em;}.elementor-kit-7 h3{color:#00123C;font-family:"Plus Jakarta Sans", Sans-serif;font-size:22px;font-weight:600;text-transform:none;line-height:1.25em;letter-spacing:0em;}.elementor-kit-7 h4{color:#00123C;font-family:"Plus Jakarta Sans", Sans-serif;font-size:19px;font-weight:600;text-transform:none;line-height:1.3em;letter-spacing:0em;}.elementor-kit-7 h5{color:#5B5A66;font-family:"Plus Jakarta Sans", Sans-serif;font-size:11px;font-weight:600;text-transform:uppercase;line-height:1.2em;letter-spacing:0.18em;}.elementor-kit-7 h6{color:#5B5A66;font-family:"Plus Jakarta Sans", Sans-serif;font-size:12px;font-weight:600;text-transform:uppercase;line-height:1.2em;letter-spacing:0.16em;}.elementor-kit-7 img{border-radius:20px 20px 20px 20px;}.elementor-kit-7 input:not([type="button"]):not([type="submit"]),.elementor-kit-7 textarea,.elementor-kit-7 .elementor-field-textual{color:#00123C;background-color:#F1EBE1;border-radius:10px 10px 10px 10px;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1200px;}.e-con{--container-max-width:1200px;--container-default-padding-top:0px;--container-default-padding-right:24px;--container-default-padding-bottom:0px;--container-default-padding-left:24px;}.elementor-widget:not(:last-child){--kit-widget-spacing:20px;}.elementor-element{--widgets-spacing:20px 20px;--widgets-spacing-row:20px;--widgets-spacing-column:20px;}{}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-section.elementor-section-boxed > .elementor-container{max-width:1024px;}.e-con{--container-max-width:1024px;}}@media(max-width:767px){.elementor-kit-7{--e-global-typography-ll_script-font-size:32px;font-size:16px;}.elementor-kit-7 h1{font-size:40px;}.elementor-kit-7 h2{font-size:32px;}.elementor-kit-7 h3{font-size:19px;}.elementor-kit-7 h4{font-size:17px;}.elementor-kit-7 h5{font-size:11px;}.elementor-kit-7 h6{font-size:12px;}.elementor-kit-7 button,.elementor-kit-7 input[type="button"],.elementor-kit-7 input[type="submit"],.elementor-kit-7 .elementor-button{font-size:15px;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:767px;}.e-con{--container-max-width:767px;}}
/* Start custom CSS *//* Laser Loft site CSS (kit). Hooks: .cursive .ll-eyebrow .ll-facts .ll-proof .ll-steps .ll-price .ll-sticky */
.cursive { font-family: 'Instrument Serif', serif; font-style: italic; font-weight: 400; letter-spacing: 0; text-transform: none; color: #D9962E; }
.elementor-widget-text-editor a { text-decoration: underline; text-underline-offset: 3px; }
.ll-navy .cursive, .ll-hero .cursive { color: #F6B249; }
.ll-figure .cursive { font-size: .9em; }
h1, h2, h3, h4 { text-wrap: balance; }
p { text-wrap: pretty; }
.ll-navy { --acc: #FFFFFF; }
.elementor-widget .elementor-icon svg:not(.e-font-icon-svg), .elementor-widget .elementor-icon-list-icon svg:not(.e-font-icon-svg), .elementor-widget .elementor-button-icon svg:not(.e-font-icon-svg) { fill: none !important; }  /* uploaded icons are strokes; Elementor and safe-svg both force a fill */
.elementor-widget svg .acc { fill: var(--acc, #D9962E) !important; }
.elementor-button .elementor-icon svg .acc, .ll-chip svg .acc { fill: currentColor; }
.ll-facts > .e-con-inner > .e-con, .ll-facts > .e-con { border-right: 1px solid rgba(255,255,255,.12); }
.ll-facts > .e-con-inner > .e-con:last-child, .ll-facts > .e-con:last-child { border-right: 0; }
.ll-proof > .e-con-inner > .e-con + .e-con, .ll-proof > .e-con + .e-con { border-left: 1px solid #D4D1CC; }
.ll-steps > .e-con-inner > .e-con + .e-con, .ll-steps > .e-con + .e-con { border-left: 1px solid rgba(255,255,255,.14) !important; }  /* a step's own bottom border would otherwise zero this */
@media (max-width: 767px) { .ll-facts .e-con, .ll-proof .e-con, .ll-steps .e-con { border: 0 !important; } }
.ll-price table { width: 100%; border-collapse: collapse; font-size: 15px; }
.ll-price th { font-size: 11px; letter-spacing: .16em; text-transform: uppercase; color: #5B5A66; font-weight: 600; text-align: left; padding: 10px 14px; border-bottom: 1px solid #D4D1CC; }
.ll-price td { padding: 14px; border-bottom: 1px solid #D4D1CC; vertical-align: top; }
.ll-price td:first-child { font-weight: 600; color: #00123C; }

.ll-price .num { font-family: 'Plus Jakarta Sans', sans-serif; font-weight: 600; color: #00123C; white-space: nowrap; }
.ll-price { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.ll-sticky { padding-bottom: env(safe-area-inset-bottom); }
.ll-longword { overflow-wrap: anywhere; }

/* home: about clinic carousel (holds the 4/5 crop of the static photo it replaced) */
.ll-rooms .swiper-slide-image { width: 100%; height: 570px; object-fit: cover; }
@media (max-width: 1024px) { .ll-rooms .swiper-slide-image { height: 460px; } }
@media (max-width: 767px) { .ll-rooms .swiper-slide-image { height: 420px; } }

/* sitewide: faq + book band call buttons */
/* FAQ answer boxes: the grey border is off natively (Nested Accordion > Content > Border = None, wp-faq-border.php). */
.ll-call .elementor-button { white-space: nowrap; transition: background-color .18s ease, color .18s ease, border-color .18s ease, transform .18s ease; }
.ll-call .elementor-button:hover { transform: translateY(-1px); }
.ll-call .elementor-button-icon svg { width: 16px; height: 16px; }
@media (max-width: 767px) { .ll-call .elementor-button { width: 100%; justify-content: center; } }

/* book band: call us popup */
/* The clinic icons are the uploaded phone SVG (stroke="currentColor", fill="none"), so Elementor's icon colour
   control — which only writes `fill` — cannot reach them. One line sets the gold-dark the prototype's .clist uses. */
#elementor-popup-modal-384 .elementor-icon-list-icon svg { color: var(--e-global-color-e5d5f63); }

/* about: team cards + bio popups */
/* Elementor's Text Editor resets list margins, and there is no control for a <ul> inside the widget. */
.ll-bio ul { margin: 0 0 14px; padding-left: 20px; }
.ll-bio ul li { margin-bottom: 4px; }

/* book consultation: clinic chooser popups (405-412) */
/* Same as the Call us popup: the uploaded pin SVG strokes take currentColor and Elementor's icon colour
   control only writes `fill`, so one line carries the gold-dark the prototype's .clist uses. */
.ll-consult-list .elementor-icon-list-icon svg { color: var(--e-global-color-e5d5f63); }

/* sitewide: links inside navy sections (2026-09-21) */
/* The kit's link colour is Primary (navy), so a prose link inside a .ll-navy section is navy on navy
   and effectively invisible — Tannis saw it on HydraFacial's "Your appointment in three simple steps".
   Elementor has no per-widget link colour control on the Text Editor, so one rule does it, matching the
   prototype's `.section.navy p a` (white text, gold underline) in site/styles/page.css. */
.ll-navy .elementor-widget-text-editor a,
.ll-navy .elementor-widget-icon-list .elementor-icon-list-text a {
  color: var(--e-global-color-1604b66);
  text-decoration: underline;
  text-decoration-color: var(--e-global-color-secondary);
  text-decoration-thickness: 1.5px;
  text-underline-offset: 3px;
}
.ll-navy .elementor-widget-text-editor a:hover,
.ll-navy .elementor-widget-icon-list .elementor-icon-list-text a:hover {
  color: var(--e-global-color-secondary);
}

/* cost sections: the row of links under the price table (2026-09-21) */
/* The prototype's `.pnotelinks` row of `.discover` links. Elementor has no control for a link row
   inside a Text Editor, and the sprite arrow the prototype uses does not exist on WordPress, so the
   arrow is a masked shape like the homepage treatments index above. */
.ll-costlinks { display: flex; flex-wrap: wrap; gap: 12px 32px; margin-top: 26px; padding-top: 20px; border-top: 1px solid var(--e-global-color-d1f73a5); }
.ll-costlinks a { display: inline-flex; align-items: center; gap: 10px; padding-bottom: 6px; border-bottom: 1.5px solid currentColor; font-size: 11px; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; text-decoration: none; color: var(--e-global-color-primary); }
.ll-costlinks a::after { content: ""; flex: 0 0 16px; width: 16px; height: 16px; background-color: currentColor; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 12h16M13 5l7 7-7 7'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 12h16M13 5l7 7-7 7'/%3E%3C/svg%3E") center / contain no-repeat; transition: transform .2s ease; }
.ll-costlinks a:hover::after { transform: translateX(4px); }

/* specials: the Loop Grid that replaced the static offer cards (2026-09-21) */
/* Elementor Pro 4.2's Loop Grid has a Rows Gap control but no Columns Gap one; --grid-column-gap falls back
   to 30px in widget-loop-grid.css, and the static card row this replaced sat at the kit's 18px. */
.ll-offers { --grid-column-gap: 18px; }

/* home + treatments hub: treatment index rows (.ll-trow) */
/* Replaces the Icon List index (.ll-tindex, removed 2026-09-22). Every size and the hairlines are widget
   controls on the row container; only the hover states need CSS, because Elementor has no hover controls
   for a child widget of a linked container. wp-tindex.php builds the rows. */
.ll-trow .ll-trow-thumb { opacity: 0; transform: scale(.7); transition: opacity .3s ease, transform .3s ease; }
.ll-trow .ll-trow-arrow { transition: transform .2s ease; }
.ll-trow:hover .ll-trow-thumb { opacity: 1; transform: none; }
.ll-trow:hover .ll-trow-arrow { transform: translateX(4px); }
.ll-trow:hover h3 { text-decoration: underline; text-decoration-color: #F6B249; text-decoration-thickness: 2px; text-underline-offset: 4px; }

/* home: marquee bands (2026-09-22) */
/* Elementor Pro 4.2.3 has no Marquee widget (150 widget types, no marquee module, no experiment flag), so
   each band is one HTML widget inside a full-width `.ll-marquee` container — wp-marquee.php builds them.
   Background and zero padding are container controls; these are the prototype's own rules from
   site/styles/home-a.css, with the CSS variables resolved to the kit's values. */
.ll-marquee .marquee { overflow: hidden; border-top: 1px solid #D4D1CC; border-bottom: 1px solid #D4D1CC; padding: 18px 0; white-space: nowrap; }
.ll-marquee .marquee.on-navy { border-color: rgba(255,255,255,.14); }
.ll-marquee .track { display: inline-flex; gap: 48px; animation: ll-marquee 48s linear infinite; }
.ll-marquee .track span { font-family: 'Plus Jakarta Sans', sans-serif; font-weight: 500; font-size: 22px; letter-spacing: .06em; text-transform: uppercase; color: #00123C; display: inline-flex; align-items: center; gap: 48px; }
.ll-marquee .marquee.on-navy .track span { color: #FFFFFF; }
.ll-marquee .track span::after { content: ""; width: 8px; height: 8px; border-radius: 50%; background: #F6B249; display: inline-block; }
@keyframes ll-marquee { to { transform: translateX(-50%); } }
@media (prefers-reduced-motion: reduce) { .ll-marquee .track { animation: none; } }

/* clinic pages: inside the space (Image Carousel has no height/object-fit control) */
.ll-space .swiper-slide-image { width: 100%; height: 340px; object-fit: cover; }
@media (max-width: 1024px) { .ll-space .swiper-slide-image { height: 300px; } }
@media (max-width: 767px) { .ll-space .swiper-slide-image { height: 280px; } }

/* 2026-09-23: Cherry "Pay over time" button on phones, tucked into its corner */
/* The Cherry snippet (378) floats it bottom-right. Cherry writes `right` inline (offset + 16px) and its bottom is
   offset + 32px, and the kit's Theme Style button padding (16/30) lands on Cherry's <button>. On phones: 12px from
   the edges and Cherry's own compact padding. Its class names are hashed CSS-module names, so match the stable prefix. */
@media (max-width: 767px) {
  [class*="floatingEstimator-floatingContainer"] { right: 12px !important; bottom: calc(12px + env(safe-area-inset-bottom)) !important; }
  [class*="floatingEstimator-floatingButton"] { padding: 6px 14px 6px 6px !important; }
}

/* 2026-09-23: home about clinic carousel at half its phone height (Image Carousel has no height control) */
@media (max-width: 767px) { .ll-rooms .swiper-slide-image { height: 210px; } }

/* 2026-09-23: bio popups, "Read more" on long bios (native <details class="ll-more"> in the bio Text Editor, no JS).
   Summary = the About card's "Read bio" link look (navy, 600, 13px, underlined); marker hidden; open = "Read less",
   moved under the revealed text. The real label is display:none when open, so screen readers get "Read less, expanded". */
.ll-more > summary { list-style: none; cursor: pointer; display: inline-block; font-size: 13px; font-weight: 600; color: var(--e-global-color-primary); text-decoration: underline; text-underline-offset: 3px; }
.ll-more > summary::-webkit-details-marker { display: none; }
.ll-more > summary:hover { color: var(--e-global-color-e5d5f63); }
.ll-more[open] { display: flex; flex-direction: column; }
.ll-more[open] > summary { order: 1; align-self: flex-start; }
.ll-more[open] > summary > span { display: none; }
.ll-more[open] > summary::after { content: "Read less"; }

/* 2026-09-23: Clinics mega-panel hours as a small table (Text Editor 6dec26b1 holds <table class="ll-hours">). */
.ll-hours { border-collapse: collapse; width: 100%; font-size: 13px; line-height: 1.35; color: var(--e-global-color-primary); }
.ll-hours th, .ll-hours td { padding: 5px 10px 5px 0; text-align: left; vertical-align: top; border: 0; border-bottom: 1px solid #E4DFD6; background: none; }
.ll-hours thead th { font-size: 11px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: #6B6F7B; }
.ll-hours tbody th { font-weight: 600; }
.ll-hours tr:last-child th, .ll-hours tr:last-child td { border-bottom: 0; }
.ll-hours small { display: block; font-size: 11px; color: #6B6F7B; }/* End custom CSS */