/* Local concept only; production and source application are unchanged. */
.memory-study{background:#0a100c}
.progress-art{position:absolute;inset:0;overflow:hidden;background:radial-gradient(ellipse at 90% 5%,#2b3c2b,transparent 64%)}
.progress-disc{position:absolute;width:108%;aspect-ratio:1;right:-23%;top:-13%;border:1px solid #aac98b35;border-radius:50%;overflow:hidden;background:radial-gradient(ellipse at 30% 25%,#344c32,#102219 72%);box-shadow:0 20px 60px #0005}
.progress-vector{position:absolute;inset:0;width:100%;height:100%;transform:scale(1.11) translate(-3%,10%);transform-origin:64% 56%;filter:drop-shadow(0 16px 12px #0006)}
.progress-film{position:absolute;inset:0;opacity:0}
.progress-film video{width:100%;height:100%;object-fit:cover;object-position:43% 46%;transform:scale(1.1);filter:brightness(.7) saturate(.65)}
.progress-film:after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,#09130b00 38%,#0b190e80)}
.progress-orbit{position:absolute;right:-27%;top:-16%;width:116%;aspect-ratio:1;border:1px solid #c9ed6c24;border-bottom-color:#cff54a66;border-radius:50%;transform:rotate(-25deg)}
.progress-label{position:absolute;right:20px;top:20px;font-size:10px;color:#dce7d1;display:flex;gap:7px;align-items:center;text-shadow:0 1px 8px #000}
.progress-label>span{width:5px;height:5px;background:#cff54a;border-radius:50%;box-shadow:0 0 12px #cff54a70}
.previous-lift{position:absolute;left:17px;top:36%;width:145px;display:flex;flex-direction:column;gap:7px;padding:14px 16px;border-radius:17px;border:1px solid #adc69530;background:linear-gradient(135deg,#223025ef,#0c180fef);box-shadow:0 12px 24px #0005;transform:rotate(-5deg)}
.previous-lift>span{font-size:10px;color:#b2c4a6}.previous-lift strong{font-family:Arial,sans-serif;font-size:32px;line-height:1.05;text-align:right;color:#f1f5e9}.previous-lift strong small{font-size:20px;color:#a2b394}.previous-lift>small{font-size:8px;color:#9fae98;white-space:nowrap}
.lift-gain{position:absolute;right:20px;top:56%;display:flex;align-items:center;gap:5px;color:#d0ee92;font-size:11px;opacity:1}.lift-gain svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.7}
.progress-trail{position:absolute;top:63%;left:22px;right:22px}.progress-trail svg{width:100%;height:35px;overflow:visible}.trail-base{fill:none;stroke:#94b57624;stroke-width:1.5}.trail-line{fill:none;stroke:#bad855;stroke-width:1.8;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:0}.trail-dots{fill:#b6cf76}.progress-trail>div{display:flex;justify-content:space-between;align-items:center;margin-top:5px;font-size:9px;color:#adb99f}.progress-trail small{font-size:7px;color:#71806d}
.memory-study .slide__text{bottom:22px}.memory-study .slide__title{font-size:29px}.memory-study .slide__body{font-size:13px;color:#b3bdae}
.weight-before{opacity:0}.weight-after{opacity:1}.progress-glint{position:absolute;inset:0;background:linear-gradient(115deg,transparent 32%,#e8ffc537 49%,transparent 64%);transform:translateX(-130%);mix-blend-mode:screen}
.memory-running .progress-film{animation:memoryFilm 8s linear infinite}
.memory-running .progress-vector{animation:memoryVector 8s linear infinite}
.memory-running .weight-before{animation:memoryBefore 8s linear infinite}
.memory-running .weight-after{animation:memoryAfter 8s linear infinite}
.memory-running .lift-gain{animation:memoryGain 8s linear infinite}
.memory-running .trail-line{animation:memoryLine 8s ease-in-out infinite}
.memory-running .progress-glint{animation:memoryGlint 8s ease-out infinite}
.memory-running .previous-lift{animation:memoryFloat 8s ease-in-out infinite}
@keyframes memoryFilm{0%,25%,100%{opacity:1;transform:scale(1)}34%,92%{opacity:0;transform:scale(1.12)}}
@keyframes memoryVector{0%,25%,100%{opacity:0;transform:scale(.94) translate(-3%,10%)}34%{opacity:1;transform:scale(1.24) translate(-3%,10%)}43%,88%{opacity:1;transform:scale(1.11) translate(-3%,10%)}95%{opacity:0;transform:scale(1.08) translate(-3%,10%)}}
@keyframes memoryBefore{0%,37%{opacity:1}43%,100%{opacity:0}}
@keyframes memoryAfter{0%,38%{opacity:0}44%,100%{opacity:1}}
@keyframes memoryGain{0%,40%,96%,100%{opacity:0;transform:translateY(8px)}48%,88%{opacity:1;transform:translateY(0)}}
@keyframes memoryLine{0%,32%,100%{stroke-dashoffset:1}55%,92%{stroke-dashoffset:0}}
@keyframes memoryGlint{0%,27%{transform:translateX(-130%);opacity:0}32%{opacity:.7}44%,100%{transform:translateX(130%);opacity:0}}
@keyframes memoryFloat{0%,100%{transform:rotate(-5deg) translateY(0)}45%,70%{transform:rotate(-3deg) translateY(-6px)}}
@media(min-width:900px){.memory-study .slide__title{font-size:40px}.memory-study .slide__body{font-size:16px}.previous-lift{width:175px;left:25px;padding:18px}.previous-lift strong{font-size:40px}.previous-lift>small{font-size:10px}.progress-label{font-size:12px}.lift-gain{font-size:14px}.progress-trail>div{font-size:11px}.progress-trail small{font-size:9px}}
@media(prefers-reduced-motion:reduce){.memory-study *{animation:none!important}.progress-film{display:none}.progress-vector{opacity:1}.weight-after{opacity:1}.weight-before{opacity:0}}
/* Keep the session trail clear of the headline at narrow widths. */
.progress-trail{top:59%}.lift-gain{top:53%}.previous-lift{top:33%}
.progress-vector{transform:scale(1.05) translate(-9%,10%)}
@keyframes memoryVector{0%,25%,100%{opacity:0;transform:scale(.94) translate(-9%,10%)}34%{opacity:1;transform:scale(1.17) translate(-9%,10%)}43%,88%{opacity:1;transform:scale(1.05) translate(-9%,10%)}95%{opacity:0;transform:scale(1.02) translate(-9%,10%)}}
.progress-trail{top:55.5%}.lift-gain{top:50.5%}


/* Second local proof: two exercise moments, then the original vector motif. */
.progress-film--preacher video{object-position:50% 39%;transform:scale(1.03)}
.previous-lift>span{font-size:8px;line-height:1.6}
.memory-running .progress-film--preacher{animation:preacherScene 10s linear infinite}
.memory-running .progress-film--chest{animation:chestScene 10s linear infinite}
.memory-running .progress-vector{animation:twoShotVector 10s linear infinite}
.memory-running .weight-before{animation:twoShotBefore 10s linear infinite}
.memory-running .weight-after{animation:twoShotAfter 10s linear infinite}
.memory-running .lift-gain{animation:twoShotGain 10s linear infinite}
.memory-running .trail-line{animation:twoShotLine 10s ease-in-out infinite}
.memory-running .progress-glint{animation:twoShotGlint 10s ease-out infinite}
.memory-running .previous-lift{animation:twoShotCard 10s ease-in-out infinite}
@keyframes preacherScene{0%,15%,100%{opacity:1;transform:scale(1)}19%,96%{opacity:0;transform:scale(1.04)}}
@keyframes chestScene{0%,14%,100%{opacity:0;transform:scale(1)}19%,32%{opacity:1;transform:scale(1.02)}39%,96%{opacity:0;transform:scale(1.1)}}
@keyframes twoShotVector{0%,32%,100%{opacity:0;transform:scale(.94) translate(-9%,10%)}40%{opacity:1;transform:scale(1.17) translate(-9%,10%)}48%,90%{opacity:1;transform:scale(1.05) translate(-9%,10%)}97%{opacity:0;transform:scale(1.02) translate(-9%,10%)}}
@keyframes twoShotBefore{0%,43%{opacity:1}49%,100%{opacity:0}}
@keyframes twoShotAfter{0%,44%{opacity:0}50%,100%{opacity:1}}
@keyframes twoShotGain{0%,46%,96%,100%{opacity:0;transform:translateY(8px)}54%,90%{opacity:1;transform:translateY(0)}}
@keyframes twoShotLine{0%,38%,100%{stroke-dashoffset:1}61%,92%{stroke-dashoffset:0}}
@keyframes twoShotGlint{0%,33%{transform:translateX(-130%);opacity:0}38%{opacity:.7}50%,100%{transform:translateX(130%);opacity:0}}
@keyframes twoShotCard{0%,18%,97%,100%{opacity:0;transform:rotate(-5deg) translateY(8px)}24%,90%{opacity:1;transform:rotate(-3deg) translateY(0)}}


/* Local dual-slide study. Female grade Point 1 remains immutable. */
.coverage-female{z-index:1}.coverage-female video{object-position:50% 30%;filter:none!important;transform:rotate(17deg) scale(1.2) translate(-16%,6%)!important;animation:none!important}
.coverage-female .female-darken{position:absolute;inset:0;background:#00000026;pointer-events:none}
.slide--coverage.is-visible.has-video .coverage-female{animation:coverageWoman 10s linear infinite}
.slide--coverage.is-visible.has-video .coverage-male{animation:coverageMan 10s linear infinite}
.slide--coverage.is-visible.has-video .orb--back .orb-body{animation:coverageMap 10s linear infinite}
.slide--coverage.is-visible.has-video .orb-light{animation:coverageGlint 10s ease-in-out infinite}
@keyframes coverageWoman{0%,11%,100%{opacity:1}13%,98%{opacity:0}}
@keyframes coverageMan{0%,11%,100%{opacity:0}13%,32%{opacity:1}39%,98%{opacity:0}}
@keyframes coverageMap{0%,32%,100%{opacity:0;transform:scale(1.08)}40%{opacity:1;transform:scale(1.65)}46%{opacity:1;transform:scale(1.57)}84%,93%{opacity:1;transform:scale(1.08)}99%{opacity:0;transform:scale(1.08)}}
@keyframes coverageGlint{0%,32%{transform:translateX(-120%);opacity:0}37%{opacity:.6}49%,100%{transform:translateX(120%);opacity:0}}
.progress-film--female video{object-position:50% 38%;filter:brightness(.82) saturate(.78);transform:scale(1.02)}
.memory-running .progress-film--female{animation:memoryWoman 10s linear infinite}
@keyframes preacherScene{0%,14%,100%{opacity:1;transform:scale(1)}16%,98%{opacity:0;transform:scale(1.04)}}
@keyframes memoryWoman{0%,14%,100%{opacity:0}16%,25%{opacity:1}27%,98%{opacity:0}}
@keyframes chestScene{0%,25%,100%{opacity:0;transform:scale(1)}27%,39%{opacity:1;transform:scale(1.02)}46%,98%{opacity:0;transform:scale(1.1)}}
@keyframes twoShotVector{0%,39%,100%{opacity:0;transform:scale(.94) translate(-9%,10%)}47%{opacity:1;transform:scale(1.17) translate(-9%,10%)}55%,92%{opacity:1;transform:scale(1.05) translate(-9%,10%)}99%{opacity:0;transform:scale(1.02) translate(-9%,10%)}}
@keyframes twoShotBefore{0%,49%{opacity:1}55%,100%{opacity:0}}
@keyframes twoShotAfter{0%,50%{opacity:0}56%,100%{opacity:1}}
@keyframes twoShotGain{0%,52%,98%,100%{opacity:0;transform:translateY(8px)}60%,92%{opacity:1;transform:translateY(0)}}
@keyframes twoShotLine{0%,44%,100%{stroke-dashoffset:1}67%,95%{stroke-dashoffset:0}}
@keyframes twoShotGlint{0%,40%{transform:translateX(-130%);opacity:0}45%{opacity:.7}57%,100%{transform:translateX(130%);opacity:0}}
@keyframes twoShotCard{0%,26%,99%,100%{opacity:0;transform:rotate(-5deg) translateY(8px)}32%,94%{opacity:1;transform:rotate(-3deg) translateY(0)}}
@media(prefers-reduced-motion:reduce){.coverage-female,.progress-film--female{display:none}}
/* Lower the standing athlete inside the cropped orb so her face stays visible. */
.coverage-female video{transform:rotate(17deg) scale(1.2) translate(-16%,25%)!important}
.coverage-female video{object-position:50% 0%;transform:rotate(17deg) scale(1.2) translate(-16%,15%)!important}


.photos-study{background:#0a100c;--journey-progress:0}
.photo-art{position:absolute;inset:0;overflow:hidden;background:radial-gradient(ellipse at 75% 8%,#30412c,transparent 67%)}
.photo-halo{position:absolute;width:118%;aspect-ratio:1;border-radius:50%;right:-23%;top:-18%;border:1px solid #a8c77b24;background:radial-gradient(ellipse at 65% 25%,#69894d16,transparent 65%)}
.photo-kicker{position:absolute;top:18px;right:20px;display:flex;align-items:center;gap:7px;font-size:10px;color:#c2cdb7;z-index:5}.photo-kicker svg{width:15px;height:15px;fill:none;stroke:#b7ce8d;stroke-width:1.3}
.photo-fan{position:absolute;left:0;right:0;top:13%;height:36%;perspective:650px}
.journey-card{position:absolute;top:0;width:37%;height:100%;border-radius:15px;overflow:hidden;background:#233026;border:1px solid #93b27642;box-shadow:0 17px 30px #0008;transition:transform 1s cubic-bezier(.2,.7,.2,1),filter 1s,border-color .7s;will-change:transform}
.journey-card img{width:100%;height:100%;object-fit:cover;filter:blur(1.5px) saturate(.4) brightness(.9);opacity:.82}.journey-card figcaption{position:absolute;bottom:0;right:0;left:0;text-align:center;padding:28px 6px 11px;background:linear-gradient(transparent,#080f0ce8);font-size:11px;color:#e3eadb}
.journey-card--front{left:32%;z-index:3;transform:rotate(-3deg) translateY(-4px);border-color:#bfd8898c}
.journey-card--side{left:55%;z-index:2;transform:rotate(15deg) translateY(12px);filter:brightness(.65)}
.journey-card--back{left:9%;z-index:1;transform:rotate(-17deg) translateY(19px);filter:brightness(.6)}
.frame-guides{position:absolute;inset:9px;border-radius:8px;background:linear-gradient(#d5edaa,#d5edaa) top left/10px 1px no-repeat,linear-gradient(#d5edaa,#d5edaa) top left/1px 10px no-repeat,linear-gradient(#d5edaa,#d5edaa) bottom right/10px 1px no-repeat,linear-gradient(#d5edaa,#d5edaa) bottom right/1px 10px no-repeat;opacity:.45}
.photos-study[data-stage="1"] .journey-card--side,.photos-study[data-stage="3"] .journey-card--side{transform:rotate(6deg) translateY(-5px);filter:brightness(1);border-color:#bfd8898c;z-index:4}
.photos-study[data-stage="1"] .journey-card--front,.photos-study[data-stage="3"] .journey-card--front{transform:rotate(-5deg) translateY(5px);filter:brightness(.8)}
.photos-study[data-stage="2"] .journey-card--back{transform:rotate(-8deg) translateY(-4px);filter:brightness(1);border-color:#bfd8898c;z-index:4}
.photos-study[data-stage="2"] .journey-card--front{transform:rotate(3deg) translateY(5px);filter:brightness(.8)}
.stage-caption{position:absolute;top:53%;left:20px;right:20px;display:flex;align-items:center;justify-content:space-between;font-size:8px;color:#84937c}.stage-date{font-size:11px;color:#c8df9c}
.moments{position:absolute;top:60%;right:21px;left:21px;display:flex;justify-content:space-between;direction:rtl}
.moments-line{position:absolute;top:20px;left:18px;right:18px;height:1px;background:#8fa17939}.moments-line i{display:block;height:100%;width:100%;background:#bfd95b;transform:scaleX(var(--journey-progress));transform-origin:right;transition:transform 1.1s ease;box-shadow:0 0 9px #bbdb5260}
.moment{position:relative;background:none;border:0;padding:0;display:flex;flex-direction:column;align-items:center;gap:8px;font:inherit;color:#7e8b74;cursor:pointer;font-size:8px;min-width:44px;min-height:57px}.moment-icon{display:grid;place-items:center;width:40px;height:40px;border-radius:50%;border:1px solid #5b6e4c;background:#101b13;transition:background .7s,border .7s,box-shadow .7s,transform .7s}.moment-icon svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.2}.moment[aria-pressed=true]{color:#d4ed99}.moment[aria-pressed=true] .moment-icon{background:#304126;border-color:#cce889;box-shadow:0 0 0 4px #bed96510,0 0 22px #bbdb5215;transform:scale(1.12)}.moment:focus-visible{outline:1px solid #cff54a;outline-offset:5px;border-radius:4px}
.photo-privacy{position:absolute;top:76%;right:22px;left:22px;display:flex;align-items:center;gap:6px;font-size:9px;color:#a7b599}.photo-privacy svg{width:13px;height:13px;fill:none;stroke:#aac17e;stroke-width:1.4}.photo-privacy small{margin-right:auto;font-size:7px;color:#67765e}
.photos-study .slide__text{bottom:21px}.photos-study .slide__title{font-size:29px}.photos-study .slide__body{font-size:12px;color:#b3bdae;line-height:1.7}
/* A single short teaser on entry; the timeline carries the continuing motion. */
.journey-intro{position:absolute;inset:0 0 auto;height:53%;overflow:hidden;opacity:0;pointer-events:none;mask-image:linear-gradient(#000 65%,transparent)}
.journey-intro video{width:100%;height:100%;object-fit:cover;object-position:50% 30%;filter:brightness(.6) saturate(.65)}
.photo-running .journey-intro{animation:photoGlimpse 1.4s both}
.photo-running .photo-fan{animation:photoArrival 1.8s cubic-bezier(.2,.7,.2,1) both}
@keyframes photoGlimpse{0%,48%{opacity:.8}100%{opacity:0}}
@keyframes photoArrival{0%,28%{opacity:0;transform:translateY(13px) scale(.92)}100%{opacity:1;transform:none}}
@media(min-width:900px){.photos-study .slide__title{font-size:40px}.photos-study .slide__body{font-size:15px}.photo-kicker{font-size:12px}.stage-caption{font-size:10px}.stage-date{font-size:13px}.moment{font-size:10px}.photo-privacy{font-size:11px}}
@media(prefers-reduced-motion:reduce){.photos-study *{animation:none!important;transition:none!important}.journey-intro{display:none}}
.photo-fan{top:12%;height:31%}.stage-caption{top:46%}.moments{top:51%}.photo-privacy{top:66%}
.photo-running:not(.photo-has-video) .journey-intro{animation:none;opacity:0}
/* Preserve the approved composition on narrow phones without overlapping text. */
@media(max-width:360px){
.photos-study .slide__title{font-size:22px;line-height:1.16}.photos-study .slide__body{font-size:10.5px;line-height:1.65}
.photos-study .photo-fan{top:12%;height:29%}.photos-study .stage-caption{top:44%;font-size:7px}.photos-study .stage-date{font-size:9px}
.photos-study .moments{top:49%;right:16px;left:16px}.photos-study .moment{font-size:7px;min-width:37px}.photos-study .moment-icon{width:34px;height:34px}.photos-study .moments-line{top:17px}.photos-study .photo-privacy{top:63%;font-size:8px}
.memory-study .slide__title{font-size:24px}.memory-study .slide__body{font-size:11px}.memory-study .progress-trail{top:52%}.memory-study .lift-gain{top:48%;font-size:9px}
.memory-study .previous-lift{width:125px;left:12px;padding:11px 12px}.memory-study .previous-lift strong{font-size:28px}
}
