/* Allure's second editorial pass: a quieter palette with a more expressive rhythm. */
.reading-progress{position:fixed;inset:0 auto auto 0;width:100%;height:2px;z-index:40;background:var(--accent);transform:scaleX(var(--reading-progress,0));transform-origin:left;pointer-events:none}
.title-line{display:block;overflow:hidden;padding-bottom:.12em;margin-bottom:-.12em}
.title-line>span{display:block}
.hero-discover{display:flex;align-items:center;gap:16px;text-transform:uppercase;letter-spacing:.13em}
.scroll-line{display:inline-block;width:40px;height:1px;background:var(--line);position:relative;overflow:hidden}
.scroll-line:after{content:'';position:absolute;inset:0;background:var(--paper);transform-origin:left;animation:discover-line 2.5s ease-in-out infinite}
@keyframes discover-line{0%{transform:translateX(-110%)}60%,100%{transform:translateX(110%)}}
@keyframes title-enter{from{transform:translateY(112%)}to{transform:translateY(0)}}
@keyframes portrait-enter{from{clip-path:inset(0 0 100% 0)}to{clip-path:inset(0)}}
@keyframes soft-enter{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}
.motion-enter .hero h1 .title-line>span{animation:title-enter 1.25s cubic-bezier(.16,1,.3,1) both}
.motion-enter .hero h1 .title-line:nth-child(2)>span{animation-delay:.17s}
.motion-enter .hero .kicker{animation:soft-enter .9s .12s both}
.motion-enter .hero-actions{animation:soft-enter 1s .38s both}
.motion-enter .hero-image{animation:portrait-enter 1.6s cubic-bezier(.2,.7,.2,1) both}
.motion-enter .hero-location,.motion-enter .hero-discover{animation:soft-enter 1.1s .6s both}
.motion-ready .rise:not(.in-view){transform:none}
.reveal-item{transition:transform 1.1s cubic-bezier(.16,1,.3,1)}
.motion-ready .reveal-item:not(.reveal-in){transform:translateY(52px)}
.motion-ready .story-photo.reveal-item:not(.reveal-in),.motion-ready .about-image.reveal-item:not(.reveal-in),.motion-ready .film-figure.reveal-item:not(.reveal-in){transform:translateY(70px)}
.reveal-item.reveal-in{transform:translateY(0)}
.button{position:relative;transition:background .3s,color .3s,border-color .3s,transform .3s,box-shadow .3s}
.button:hover{transform:translateY(-3px);box-shadow:0 6px 25px rgba(0,0,0,.16)}
.button:active{transform:translateY(0)}
.text-link{position:relative;border-bottom-color:transparent}
.text-link:after{content:'';position:absolute;inset:auto 0 0;height:1px;background:currentColor;transform-origin:left;transition:transform .45s cubic-bezier(.2,.7,.2,1)}
.text-link:hover:after{transform:scaleX(.65)}
.desktop-nav>a:not(.button){position:relative;border:0}
.desktop-nav>a:not(.button):after{content:'';position:absolute;bottom:3px;left:0;width:100%;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .3s}
.desktop-nav>a:hover:after,.desktop-nav>a[aria-current=page]:after{transform:scaleX(1)}
.trust-strip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));padding-block:30px;gap:25px;border-top:1px solid var(--line)}
.trust-strip>div{display:flex;gap:13px;align-items:center;justify-content:center;min-width:0}
.trust-strip>div+div{border-left:1px solid var(--line);padding-left:25px}
.trust-value{font-family:var(--serif);font-size:1.8rem;line-height:1.1;letter-spacing:-.025em}
.trust-label{font-size:.75rem;line-height:1.45;color:var(--muted);max-width:13ch}
.review-stream{padding-block:65px 28px;overflow:hidden}
.review-intro{display:flex;align-items:flex-end;justify-content:space-between;gap:30px;margin-bottom:40px}
.review-intro .kicker{margin-bottom:14px}
.review-intro h2{margin:0;font-size:clamp(2.4rem,4.1vw,3.8rem)}
.review-intro-actions{display:flex;align-items:flex-end;flex-direction:column;gap:18px;flex-shrink:0}
.stream-controls{display:flex;gap:8px;align-items:center}
.stream-controls[hidden],.film-controls[hidden]{display:none}
.stream-controls button{border:1px solid #bcb8b0;background:transparent;min-height:44px;color:var(--ink);transition:background .25s}
.stream-controls button:hover{background:#e6e1d8}
.stream-step{width:44px;font-size:1.55rem;border-radius:50%;line-height:1}
.stream-toggle{display:flex;align-items:center;justify-content:center;gap:8px;padding:9px 14px;font-size:.75rem;border-radius:30px;min-width:138px}
.control-symbol{font-size:.85rem;display:inline-block;width:12px;line-height:1;text-align:center}
.review-rail{width:100%;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:thin;scrollbar-color:#a5a097 transparent;padding:0 var(--gutter) 20px;scroll-padding-inline:var(--gutter);-webkit-overflow-scrolling:touch}
.review-rail:focus-visible{outline:2px solid var(--ink);outline-offset:-4px}
.review-track{display:flex;width:max-content;gap:24px}
.review-group{display:flex;gap:24px}
.client-card{flex:0 0 clamp(300px,28vw,420px);width:clamp(300px,28vw,420px);padding:28px 28px 26px;border:1px solid #d2cdc5;display:flex;flex-direction:column;background:rgba(255,255,255,.34);min-height:332px}
.quote-mark{font-family:var(--serif);font-size:3.5rem;height:34px;line-height:1;color:#6c6257}
.client-card blockquote{font-family:var(--serif);font-size:1.2rem;line-height:1.46;margin:12px 0 24px;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden;max-width:100%}
.client-card-foot{margin-top:auto}
.client-name{font-size:.82rem;font-weight:bold;line-height:1.4;margin:0 0 4px}
.client-origin{font-size:.72rem;color:#615e58;line-height:1.5;margin:0 0 6px}
.client-card .text-link{font-size:.75rem;min-height:44px;padding-block:12px 8px}
.reviews-section .text-link:hover{color:#625748}
.review-under{display:flex;justify-content:space-between;align-items:center;gap:20px;font-size:.72rem;color:#615e58;padding-top:13px}
.review-under>a{padding:10px 0;text-decoration:underline;text-underline-offset:4px}
.film-section{padding-block:105px}
.film-layout{display:grid;grid-template-columns:1fr .86fr;gap:12%;align-items:center;max-width:1120px;margin:auto}
.film-copy,.film-figure{min-width:0}
.film-copy h2{font-size:clamp(2.8rem,4.8vw,4.5rem);margin-bottom:30px}
.film-copy blockquote{font-family:var(--serif);font-size:clamp(1.55rem,2.4vw,2.2rem);line-height:1.36;letter-spacing:-.02em;margin:0 0 18px}
.film-copy .signature{margin-bottom:35px}
.film-intro{color:var(--muted);font-size:1rem;margin-bottom:24px}
.film-figure{margin:0;position:relative}
.film-window{position:relative;overflow:hidden;background:var(--panel);aspect-ratio:9/14}
.allure-film{display:block;height:100%;width:100%;object-fit:cover;object-position:center;max-width:100%}
.film-controls{position:absolute;inset:auto 0 0;padding:70px 20px 20px;display:flex;align-items:center;justify-content:space-between;gap:10px;background:linear-gradient(transparent,rgba(0,0,0,.75));pointer-events:none}
.film-label{font-size:.7rem;line-height:1.4;letter-spacing:.03em;max-width:12ch}
.film-toggle{display:flex;align-items:center;gap:9px;min-height:44px;border:1px solid rgba(255,255,255,.65);border-radius:30px;background:rgba(16,17,19,.65);padding:11px 15px;font-size:.75rem;pointer-events:auto;backdrop-filter:blur(8px)}
.film-toggle:hover{background:var(--ink)}
.film-figure figcaption{display:flex;justify-content:space-between;flex-wrap:wrap;gap:6px 20px;font-size:.7rem;color:var(--muted);padding-top:16px}
.film-figure figcaption a{text-decoration:underline;text-underline-offset:4px;min-height:24px}
.film-fallback{position:absolute;bottom:15px;left:20px;right:20px;background:var(--ink);padding:10px}
.film-section+#treatments{padding-top:45px}
#treatments{border-top:1px solid var(--line)}
.story-photo img{transition:transform 1.2s cubic-bezier(.2,.7,.2,1),filter .6s}
.story-photo:hover img{transform:scale(1.065)}
.story-photo:hover .lash-square{transform:rotate(-90deg) scale(1.08)}
.gallery-item img{transition:transform 1.2s cubic-bezier(.2,.7,.2,1)}
.gallery-item:hover img{transform:scale(1.06)}
.treatment[open] .service-detail{animation:soft-enter .45s ease-out}
.full-review{scroll-margin-top:35px}
.full-review:target{background:var(--panel);padding-inline:20px;outline:1px solid var(--line)}
@media(min-width:701px){.hero{min-height:min(760px,calc(100svh - 100px))}.hero-content{padding-block:80px 100px}.hero-image img{object-position:50% 28%}.hero-content{width:70%}}
@media(max-width:1000px){.hero-discover{display:flex}.trust-strip>div{flex-direction:column;gap:7px;align-items:flex-start}.trust-label{max-width:none}.trust-value{font-size:1.65rem}.review-intro{gap:20px}.film-layout{gap:7%}.film-controls{padding-inline:14px}.film-toggle{padding-inline:11px}.film-label{font-size:.65rem}}
@media(max-width:700px){.hero{padding-top:258px}.hero-image{height:315px}.hero-content{padding-bottom:70px}.hero .kicker{margin-bottom:16px}.hero h1{margin-bottom:24px}.hero-actions{gap:13px;justify-content:center}.hero-actions .text-link{display:inline-block;font-size:.82rem;padding-block:7px}.hero-discover{display:none}.hero-location{bottom:23px}.trust-strip{padding-block:24px;gap:12px}.trust-strip>div{align-items:center;text-align:center;gap:6px}.trust-strip>div+div{padding-left:12px}.trust-value{font-size:1.25rem}.trust-label{font-size:.65rem;max-width:14ch}.review-stream{padding-top:42px;padding-bottom:20px}.review-intro{display:block;margin-bottom:25px}.review-intro h2{font-size:2.45rem}.review-intro .kicker{font-size:.69rem;letter-spacing:.13em;margin-bottom:12px}.review-intro-actions{margin-top:18px;gap:18px;flex-direction:row;align-items:center;justify-content:space-between;flex-wrap:wrap}.review-intro-actions>.text-link{font-size:.75rem;min-height:44px}.stream-controls{gap:6px}.stream-toggle{min-width:122px;padding:9px 11px;font-size:.7rem}.stream-step{width:44px}.review-track,.review-group{gap:16px}.client-card{width:min(310px,calc(100vw - 68px));flex-basis:min(310px,calc(100vw - 68px));padding:24px;min-height:343px}.client-card blockquote{font-size:1.19rem;-webkit-line-clamp:6}.review-rail{padding-bottom:17px}.review-under{font-size:.66rem;padding-top:8px;gap:8px}.film-section{padding-block:65px}.film-layout{display:flex;flex-direction:column;gap:36px}.film-copy h2{font-size:2.8rem;margin-bottom:25px}.film-copy blockquote{font-size:1.65rem}.film-copy .signature{margin-bottom:26px}.film-intro{font-size:1rem}.film-figure{width:100%;max-width:460px}.film-window{aspect-ratio:4/5}.film-controls{padding:70px 20px 20px}.film-label{font-size:.75rem;max-width:none}.film-figure figcaption{font-size:.7rem}.film-section+#treatments{padding-top:48px}.motion-ready .reveal-item:not(.reveal-in){transform:translateY(35px)}.motion-ready .story-photo.reveal-item:not(.reveal-in),.motion-ready .about-image.reveal-item:not(.reveal-in),.motion-ready .film-figure.reveal-item:not(.reveal-in){transform:translateY(45px)}}
@media(max-width:370px){.trust-value{font-size:1.1rem}.trust-label{font-size:.6rem}.review-intro-actions{gap:12px}.review-intro h2{font-size:2.1rem}.client-card{padding:21px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reading-progress{display:none}.motion-ready .reveal-item,.motion-ready .reveal-item:not(.reveal-in),.motion-enter .hero h1 .title-line>span,.motion-enter .hero-image{transform:none!important;clip-path:none!important;animation:none!important}.hero-image img{transform:none!important;will-change:auto}.scroll-line:after{animation:none;transform:none}.button:hover{transform:none}.story-photo img,.gallery-item img{transition:none}}
.review-group{flex-shrink:0}.review-rail{scroll-behavior:auto}
/* Complete excerpts stay readable; each card links to its full source review. */
.client-card blockquote{display:block;overflow:visible;-webkit-line-clamp:unset}
/* Let the moving work lead on a phone, then retain Hannah's welcome underneath. */
@media(max-width:700px){.film-layout{gap:0}.film-copy{display:contents}.film-copy>.kicker{order:0;align-self:flex-start;margin-bottom:15px}.film-copy>h2{order:1;align-self:flex-start;width:100%;margin-bottom:30px}.film-figure{order:2;margin-bottom:35px}.film-copy>blockquote{order:3}.film-copy>.signature{order:4;align-self:flex-start}.film-copy>.film-intro{order:5}.film-copy>.text-link{order:6;align-self:flex-start}.gallery-item:first-child{display:none}.gallery-item:last-child{display:block}}
/* GSAP owns only the cinematic layer; the static layout and core controls stand alone. */
.ambient-canvas{position:absolute;inset:0;width:100%;height:100%;z-index:-2;pointer-events:none;opacity:.92}
.gsap-ready .hero-image,.gsap-ready .hero-content,.gsap-ready .hero-image img,.gsap-ready .rise,.gsap-ready .story-photo,.gsap-ready .film-figure,.gsap-ready .gallery-item{transition:none}
.gsap-ready .hero-image img{will-change:transform}
.gsap-ready .title-line{padding-bottom:.16em;margin-bottom:-.16em}
.gsap-ready .scroll-line:after{animation-duration:3.2s}
@media(max-width:700px){.ambient-canvas{opacity:.65}.gsap-ready .hero-image img{will-change:auto}}
@media(prefers-reduced-motion:reduce){.ambient-canvas{display:none}.gsap-ready .hero-image,.gsap-ready .hero-image img,.gsap-ready .hero-content,.gsap-ready .title-line>span,.gsap-ready .rise,.gsap-ready .story-photo,.gsap-ready .film-figure,.gsap-ready .about-image img,.gsap-ready .gallery-item{transform:none!important;clip-path:none!important;will-change:auto}}
/* The ambient surface fades before the portrait's solid edge, keeping one continuous backdrop. */
.hero{--portrait-edge:37%}.ambient-canvas{mask-image:linear-gradient(90deg,#000 0%,transparent var(--portrait-edge));-webkit-mask-image:linear-gradient(90deg,#000 0%,transparent var(--portrait-edge))}
@media(min-width:701px) and (max-width:1000px){.hero{--portrait-edge:31%}}
@media(max-width:700px){.ambient-canvas{mask-image:linear-gradient(0deg,#000,transparent 70%);-webkit-mask-image:linear-gradient(0deg,#000,transparent 70%)}}
/* A rotated landscape crop needs enough bleed to fill both arch proportions. */
.story-photo .lash-square{transform:rotate(-90deg) scale(1.09)}
.story-photo:hover .lash-square{transform:rotate(-90deg) scale(1.13)}
@media(prefers-reduced-motion:reduce){.story-photo .lash-square,.story-photo:hover .lash-square{transform:rotate(-90deg) scale(1.09)!important}}
