/* V4.12 — full-size client quotes over the existing experience photographs.
   No image pixels or gallery behaviour are changed by this presentation layer. */
.experience-photo-flow .review-banner {
  position:relative;
  isolation:isolate;
  display:grid;
  grid-template-columns:minmax(0,1fr);
  padding:0;
  margin:0;
  background:#080808;
  overflow:hidden;
  border-block:1px solid rgba(255,255,255,.15);
  content-visibility:visible;
}
.experience-photo-flow .review-banner .review-banner-media {
  position:absolute;
  inset:0;
  margin:0;
  padding:0;
  clip-path:none;
  min-height:0;
  opacity:1;
  transform:none;
  pointer-events:none;
}
.experience-photo-flow .review-banner .review-banner-image {
  position:absolute;
  inset:0;
  display:block;
  width:100%;
  height:100%;
  max-height:none;
  object-fit:cover;
  object-position:var(--review-focal,50% 25%);
  filter:brightness(.84);
  transform:none;
}
.experience-photo-flow .review-banner-shade {
  position:absolute;
  inset:0;
  pointer-events:none;
  background:linear-gradient(0deg,rgba(0,0,0,.85),rgba(0,0,0,.44) 45%,rgba(0,0,0,.04) 100%),
             linear-gradient(90deg,rgba(0,0,0,.58),rgba(0,0,0,.25) 55%,transparent 88%);
}
.experience-photo-flow .review-banner-right .review-banner-shade {
  background:linear-gradient(0deg,rgba(0,0,0,.85),rgba(0,0,0,.42) 45%,rgba(0,0,0,.04) 100%),
             linear-gradient(270deg,rgba(0,0,0,.66),rgba(0,0,0,.32) 50%,transparent 88%);
}
.experience-photo-flow .review-banner-content {
  position:relative;
  z-index:1;
  display:flex;
  align-items:flex-end;
  width:min(calc(100% - (var(--gutter) * 2)),var(--shell));
  max-width:var(--shell);
  min-height:clamp(680px,56vw,900px);
  padding-block:clamp(60px,6vw,100px) clamp(60px,5vw,90px);
  margin-inline:auto;
}
.experience-photo-flow .review-banner-copy {width:min(830px,72%);min-width:0;text-shadow:0 2px 24px rgba(0,0,0,.3)}
.experience-photo-flow .review-banner-right .review-banner-copy {margin-left:auto;width:min(800px,69%)}
.experience-photo-flow .review-banner-label {
  color:#e4dbe0;
  margin:0 0 18px;
  font:700 .64rem/1.6 "Space Grotesk",sans-serif;
  letter-spacing:.17em;
}
.experience-photo-flow .review-banner-label span {margin-inline:10px;color:var(--pink-soft)}
.experience-photo-flow .review-banner-stars {margin:0 0 22px;color:var(--pink-soft);letter-spacing:.2em;font:700 .9rem/1 "Space Grotesk",sans-serif}
.experience-photo-flow .review-banner-heading {
  position:relative;
  margin:0;
  padding:0;
  max-width:23ch;
  color:#fff;
  font:900 clamp(3.4rem,5.25vw,6.1rem)/.99 "Inter Tight","Inter Display",Arial,sans-serif;
  letter-spacing:-.045em;
  text-transform:uppercase;
  overflow-wrap:normal;
}
.experience-photo-flow .review-banner-heading p {margin:0;color:inherit;font:inherit;letter-spacing:inherit;line-height:inherit}
.experience-photo-flow .review-banner-heading::before {content:'“';position:absolute;top:-.09em;left:-.40em;color:var(--pink-soft);font-size:.9em}
.experience-photo-flow .review-banner-heading span {color:var(--pink-soft)}
.experience-photo-flow .review-banner-credit {display:flex;align-items:baseline;flex-wrap:wrap;gap:8px 18px;margin:28px 0 0;color:white;text-shadow:0 2px 8px #000}
.experience-photo-flow .review-banner-credit strong {font:800 .94rem/1.5 "Inter Tight","Inter Display",Arial,sans-serif;letter-spacing:.055em;text-transform:uppercase}
.experience-photo-flow .review-banner-credit>span {font:500 .72rem/1.5 "Space Grotesk",sans-serif;color:#d6cdd2}
.experience-photo-flow .review-banner-full {margin-top:17px;max-width:650px;text-shadow:none}
.experience-photo-flow .review-banner-full summary {display:inline-flex;align-items:center;gap:24px;padding:6px 0;color:#eee7eb;cursor:pointer;font:600 .73rem/1.65 "Space Grotesk",sans-serif;border-bottom:1px solid rgba(255,255,255,.55);list-style:none}
.experience-photo-flow .review-banner-full summary::-webkit-details-marker{display:none}
.experience-photo-flow .review-banner-full summary>span {color:var(--pink-soft);font-size:1.1rem;line-height:1;transition:transform .2s ease}
.experience-photo-flow .review-banner-full[open] summary>span {transform:rotate(45deg)}
.experience-photo-flow .review-banner-full-body {margin-top:16px;background:rgba(8,8,8,.94);border-left:2px solid var(--pink);padding:20px 24px;color:#f5eef2}
.experience-photo-flow .review-banner-full-body p {color:inherit;font-size:.94rem;line-height:1.7;margin:0 0 16px}
.experience-photo-flow .review-banner-full-body a {font-size:.72rem;font-weight:700;color:var(--pink-soft);text-underline-offset:5px}
.experience-photo-flow .review-banner-open {position:absolute;right:var(--gutter);top:24px;z-index:2;display:inline-flex;align-items:center;gap:14px;min-height:44px;padding:10px 14px;border:1px solid rgba(255,255,255,.45);background:rgba(8,8,8,.65);color:white;text-decoration:none;font:600 .65rem/1.4 "Space Grotesk",sans-serif;letter-spacing:.04em;cursor:zoom-in}
.experience-photo-flow .review-banner-open:hover {background:#090909;border-color:var(--pink-soft)}
/* A square stage photograph stays intact at the left instead of being cut into a panorama. */
@media(min-width:901px){
 .experience-photo-flow .review-banner-stage-magician .review-banner-media {right:30%}
 .experience-photo-flow .review-banner-stage-magician .review-banner-image {width:auto;max-width:100%;height:100%;object-fit:contain;object-position:left center;mask-image:linear-gradient(90deg,#000 0%,#000 63%,transparent 100%)}
 .experience-photo-flow .review-banner-stage-magician .review-banner-copy {width:min(800px,64%)}
 .experience-photo-flow .review-banner-stage-magician .review-banner-shade {background:linear-gradient(0deg,rgba(8,8,8,.78),transparent 65%),linear-gradient(90deg,rgba(8,8,8,.04) 16%,rgba(8,8,8,.35) 34%,rgba(8,8,8,.7) 52%,#080808 72%)}
}
@media(max-width:1080px){
 .experience-photo-flow .review-banner-content {min-height:700px}
 .experience-photo-flow .review-banner-heading {font-size:clamp(3.35rem,6vw,4.8rem);max-width:22ch}
 .experience-photo-flow .review-banner-copy,
 .experience-photo-flow .review-banner-right .review-banner-copy {width:80%}
}
@media(max-width:760px){
 .experience-photo-flow .review-banner-content {min-height:720px;align-items:flex-end;padding-block:260px 44px;width:calc(100% - 48px)}
 .experience-photo-flow .review-banner-copy,
 .experience-photo-flow .review-banner-right .review-banner-copy {width:100%;margin:0}
 .experience-photo-flow .review-banner .review-banner-image {object-position:var(--review-mobile-focal,50% 20%)}
 .experience-photo-flow .review-banner .review-banner-shade {background:linear-gradient(0deg,rgba(8,8,8,.95),rgba(8,8,8,.85) 30%,rgba(8,8,8,.6) 59%,rgba(8,8,8,.08) 100%)}
 .experience-photo-flow .review-banner-heading {font-size:clamp(2.45rem,9.35vw,4rem);line-height:1.01;letter-spacing:-.045em;max-width:none}
 .experience-photo-flow .review-banner-heading::before {left:-.27em;top:-.44em;font-size:.85em}
 .experience-photo-flow .review-banner-stars {margin-bottom:32px}
 .experience-photo-flow .review-banner-label {font-size:.57rem;letter-spacing:.10em}
 .experience-photo-flow .review-banner-label span {margin-inline:5px}
 .experience-photo-flow .review-banner-credit {margin-top:24px;gap:6px 14px}
 .experience-photo-flow .review-banner-open {top:18px;right:18px}
 .experience-photo-flow .review-banner-full-body {padding:18px}
}
@media(prefers-reduced-motion:reduce){.review-banner-full summary>span{transition:none}}
