/* A continuous transformation. The same nine tiles travel from feed to audit. */
.lm-site .workspace-heading{grid-template-columns:minmax(0,1fr) minmax(0,1.12fr);gap:24px 56px;padding:36px 8px 48px;border-bottom:1px solid var(--line);margin-bottom:28px}
.lm-site .workspace-heading h1{font-size:clamp(40px,4.8vw,64px);max-width:13ch;margin-bottom:22px}
.lm-site .workspace-heading .intro{margin-bottom:0;font-size:18px}
.lm-site .hero-entry{grid-column:1;grid-row:2;align-self:start;min-width:0}
.lm-site .hero-aside.hero-film{display:block;grid-column:2;grid-row:1 / span 2;align-self:center;max-width:500px;padding:0;margin:0;min-width:0;width:100%}
.lm-site .hero-film:focus-visible{outline:3px solid var(--brand);outline-offset:8px;border-radius:12px}
.morph-screen{container-type:inline-size;background:var(--field);color:var(--ink);border-radius:12px;overflow:hidden;box-shadow:0 12px 30px #1521390d}
.morph-brand{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:22px 24px 0;font:18px LMDisplay,Arial,sans-serif;color:var(--brand);letter-spacing:-.03em}
.morph-brand small{font:11px LMBody,Arial,sans-serif;color:var(--muted);letter-spacing:0}
.morph-stage{position:relative;aspect-ratio:1/1;isolation:isolate;perspective:1000px}
.morph-profile-sheet{position:absolute;inset:8% 10% 8%;border:1px solid var(--line);border-radius:10px;opacity:0;background:var(--field);z-index:-1}
.morph-profile{opacity:0;position:absolute;top:12%;left:15%;right:15%;display:flex;align-items:center;gap:10px}
.profile-avatar{display:grid;place-items:center;flex:none;width:40px;aspect-ratio:1;background:var(--brand);color:var(--canvas);border-radius:50%;font:24px LMDisplay,Arial,sans-serif}
.morph-profile strong{display:block;font-size:13px}.morph-profile span{display:block;font-size:10px;color:var(--muted);margin-top:2px}.morph-profile>svg{width:20px;flex:none;margin-left:auto;fill:none;stroke:var(--brand);stroke-width:1.6}
.morph-tile{position:absolute;left:50%;top:45%;width:21%;aspect-ratio:1;border-radius:5px;box-shadow:0 4px 8px #15213912;z-index:3}
.tile-photo{position:absolute;inset:0;border-radius:inherit;background-image:url('/hero-contact-sheet.jpg');background-size:300% 300%;background-repeat:no-repeat;background-color:var(--soft)}
.tile-1 .tile-photo{background-position:0 0}.tile-2 .tile-photo{background-position:50% 0}.tile-3 .tile-photo{background-position:100% 0}.tile-4 .tile-photo{background-position:0 50%}.tile-5 .tile-photo{background-position:50% 50%}.tile-6 .tile-photo{background-position:100% 50%}.tile-7 .tile-photo{background-position:0 100%}.tile-8 .tile-photo{background-position:50% 100%}.tile-9 .tile-photo{background-position:100% 100%}
.tile-mark{position:absolute;right:-6px;top:-6px;width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:var(--brand);opacity:0;box-shadow:0 3px 8px #15213920}.tile-mark svg{width:16px;fill:none;stroke:var(--canvas);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.morph-tile.tile-1{transform:translate(40%,-24%) scale(1.55) rotate(-4deg)}
.morph-tile:not(.tile-1){opacity:0}
.morph-report{position:absolute;inset:24% 7% 21%;padding:6%;background:var(--ink);color:var(--canvas);border-radius:5px;transform:rotate(-4deg);box-shadow:0 16px 24px #15213922;z-index:1}
.morph-report>span{display:block;font-size:1.6cqw;color:var(--lime);letter-spacing:.04em;font-weight:600}
.morph-report>strong{display:block;font:700 5.4cqw/1.05 LMDisplay,Arial,sans-serif;letter-spacing:-.03em;white-space:pre-line;max-width:9ch;margin-top:5%}
.report-line{height:3px;width:22px;background:var(--lime);margin-top:5%}.morph-report small{display:block;color:var(--lime);font-size:1.65cqw;margin-top:5%}
.report-chart{display:flex;align-items:end;gap:4px;position:absolute;left:7%;bottom:11%;width:29%;height:12%}.report-chart i{background:var(--canvas);height:40%;flex:1;transform-origin:bottom}.report-chart i:nth-child(2){height:75%}.report-chart i:nth-child(3){height:60%}.report-chart i:nth-child(4){height:100%;background:var(--lime)}
.morph-back-page{position:absolute;inset:24% 8% 21%;padding:6%;border-radius:5px;background:var(--field);color:var(--brand);box-shadow:0 8px 14px #15213916;z-index:0;transform-origin:center}
.morph-back-page>span{font:700 2.2cqw LMDisplay,Arial,sans-serif}.back-one{transform:translate(-4%,-13%) rotate(-10deg)}.back-two{background:var(--soft);transform:translate(5%,13%) rotate(5deg)}
.mini-bars{display:flex;align-items:end;gap:7px;height:50%;width:70%;margin-top:12%}.mini-bars i{background:var(--brand);height:35%;flex:1}.mini-bars i:nth-child(2){height:64%}.mini-bars i:nth-child(3){height:45%}.mini-bars i:nth-child(4){height:80%}.mini-bars i:nth-child(5){height:100%}
.mini-lines{display:grid;gap:12px;margin-top:14%}.mini-lines i{height:4px;width:60%;background:var(--ink);opacity:.6}.mini-lines i:nth-child(2){width:75%}.mini-lines i:nth-child(3){width:50%}
.morph-analysis{position:absolute;left:13%;right:13%;bottom:8%;opacity:0;z-index:4}.morph-analysis svg{width:100%;height:auto;overflow:visible;fill:none;stroke:var(--brand);stroke-width:3;stroke-linejoin:round;stroke-linecap:round}.morph-analysis .analysis-baseline{stroke:var(--line);stroke-width:1}.morph-analysis circle{fill:var(--lime);stroke:var(--ink);stroke-width:2}.morph-analysis span{font-size:11px;font-weight:600;color:var(--brand)}
.morph-insight{position:absolute;left:9%;top:10%;display:flex;align-items:center;gap:7px;padding:9px 12px;background:var(--field);border-radius:7px;font-size:11px;opacity:0;z-index:5;box-shadow:0 6px 14px #15213914}.insight-dot{width:7px;height:7px;background:var(--brand);border-radius:50%}
.morph-export{display:flex;align-items:center;gap:6px;position:absolute;z-index:5;background:var(--field);padding:10px 14px;border-radius:7px;font:600 12px LMBody,Arial,sans-serif;box-shadow:0 8px 16px #15213920}.morph-export svg{width:20px;height:20px;fill:none;stroke:var(--brand);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.export-pdf{left:4%;top:21%;transform:rotate(-8deg)}.export-ppt{right:2%;bottom:17%;transform:rotate(6deg);background:var(--lime)}
.morph-captions{position:relative;min-height:54px;margin:0 24px;font:700 clamp(18px,4.7cqw,27px)/1.1 LMDisplay,Arial,sans-serif;letter-spacing:-.03em}
.morph-captions strong{position:absolute;inset:0;font-weight:700;text-wrap:balance;opacity:0}.morph-captions strong:last-child{opacity:1}
.morph-foot{display:flex;align-items:center;gap:12px;padding:12px 24px 20px;color:var(--muted);font-size:10px}.morph-loop-line{height:2px;flex:1;overflow:hidden;background:var(--line)}.morph-loop-line::after{content:'';display:block;height:100%;background:var(--brand);transform-origin:left}
.lm-site .hero-film figcaption{font-size:10px;color:var(--muted);line-height:1.4;margin:12px 0 0;max-width:60ch}
/* One clock, shared by all parts; no slide containers or scene replacement. */
.film-ready:not(.film-reduced) .morph-profile-sheet{animation:morph-sheet 18s var(--film-ease) infinite both}
.film-ready:not(.film-reduced) .morph-profile{animation:morph-profile 18s var(--film-ease) infinite both}
.film-ready:not(.film-reduced) .morph-tile{animation-duration:18s;animation-timing-function:var(--film-ease);animation-iteration-count:infinite;animation-fill-mode:both}
.film-ready:not(.film-reduced) .morph-report{animation:morph-report 18s var(--film-ease) infinite both}
.film-ready:not(.film-reduced) .back-one{animation:morph-back-one 18s var(--film-ease) infinite both}.film-ready:not(.film-reduced) .back-two{animation:morph-back-two 18s var(--film-ease) infinite both}
.film-ready:not(.film-reduced) .tile-mark{animation:morph-check 18s var(--film-ease) infinite both}.film-ready:not(.film-reduced) :is(.tile-2,.tile-3,.tile-4,.tile-6,.tile-8,.tile-9) .tile-mark{animation:none;opacity:0}
.film-ready:not(.film-reduced) .morph-analysis{animation:morph-analysis 18s var(--film-ease) infinite both}.film-ready:not(.film-reduced) .analysis-line{animation:morph-line 18s linear infinite both}
.film-ready:not(.film-reduced) .morph-insight{animation:morph-insight 18s var(--film-ease) infinite both}
.film-ready:not(.film-reduced) .export-pdf{animation:morph-pdf 18s var(--film-ease) infinite both}.film-ready:not(.film-reduced) .export-ppt{animation:morph-ppt 18s var(--film-ease) infinite both}
.film-ready:not(.film-reduced) .report-chart i{animation:morph-bars 18s var(--film-ease) infinite both}
.film-ready:not(.film-reduced) .morph-captions strong:nth-child(1){animation:morph-caption-a 18s var(--film-ease) infinite both}.film-ready:not(.film-reduced) .morph-captions strong:nth-child(2){animation:morph-caption-b 18s var(--film-ease) infinite both}.film-ready:not(.film-reduced) .morph-captions strong:nth-child(3){animation:morph-caption-c 18s var(--film-ease) infinite both}
.film-ready:not(.film-reduced) .morph-loop-line::after{animation:morph-progress 18s linear infinite both}
.hero-film{--film-ease:cubic-bezier(.77,0,.175,1)}
.hero-film.film-ready *,.hero-film.film-ready *::after{animation-play-state:paused!important}
.hero-film.film-running *,.hero-film.film-running *::after{animation-play-state:running!important}
.hero-film:focus *,.hero-film:focus *::after{animation-play-state:paused!important}

@keyframes morph-profile{0%,13%,96%,100%{opacity:1;transform:translateY(0)}22%,86%{opacity:0;transform:translateY(-25px)}}
@keyframes morph-sheet{0%,12%,98%,100%{opacity:1;transform:scale(1) rotate(0)}23%,87%{opacity:0;transform:scale(.94) rotate(-5deg)}}
@keyframes morph-report{0%,40%,100%{opacity:0;transform:translateY(30px) rotate(5deg) scale(.94)}58%,84%{opacity:1;transform:translateY(0) rotate(-4deg) scale(1)}95%{opacity:0;transform:translateY(24px) rotate(0) scale(.94)}}
@keyframes morph-back-one{0%,42%,100%{opacity:0;transform:translate(0,12%) rotate(0)}61%,83%{opacity:1;transform:translate(-4%,-13%) rotate(-10deg)}94%{opacity:0;transform:translate(0,0) rotate(0)}}
@keyframes morph-back-two{0%,45%,100%{opacity:0;transform:translate(0,8%) rotate(0)}63%,83%{opacity:1;transform:translate(5%,13%) rotate(5deg)}94%{opacity:0;transform:translate(0,0) rotate(0)}}
@keyframes morph-check{0%,22%,51%,100%{opacity:0;transform:scale(.94)}27%,45%{opacity:1;transform:scale(1)}}
@keyframes morph-analysis{0%,24%,55%,100%{opacity:0;transform:translateY(10px)}31%,45%{opacity:1;transform:translateY(0)}}
@keyframes morph-line{0%,28%{clip-path:inset(0 100% 0 0)}43%,100%{clip-path:inset(0 0 0 0)}}
@keyframes morph-insight{0%,20%,50%,100%{opacity:0;transform:translateY(10px) rotate(-2deg)}27%,44%{opacity:1;transform:translateY(0) rotate(-2deg)}}
@keyframes morph-pdf{0%,57%,94%,100%{opacity:0;transform:translate(-20px,15px) rotate(-12deg)}66%,83%{opacity:1;transform:translate(0,0) rotate(-8deg)}}
@keyframes morph-ppt{0%,60%,94%,100%{opacity:0;transform:translate(20px,15px) rotate(12deg)}69%,83%{opacity:1;transform:translate(0,0) rotate(6deg)}}
@keyframes morph-bars{0%,48%,95%,100%{transform:scaleY(.15)}64%,85%{transform:scaleY(1)}}
@keyframes morph-caption-a{0%,12%,96%,100%{opacity:1;transform:translateY(0)}20%,88%{opacity:0;transform:translateY(-8px)}}
@keyframes morph-caption-b{0%,18%,50%,100%{opacity:0;transform:translateY(8px)}25%,43%{opacity:1;transform:translateY(0)}}
@keyframes morph-caption-c{0%,49%,95%,100%{opacity:0;transform:translateY(8px)}58%,85%{opacity:1;transform:translateY(0)}}
@keyframes morph-progress{0%{transform:scaleX(0)}100%{transform:scaleX(1)}}
.lm-site.is-authenticated .hero-entry{display:none}
.lm-site.is-authenticated .workspace-heading{grid-template-columns:minmax(0,1fr) minmax(0,1.12fr)}
.lm-site.is-authenticated .hero-aside.hero-film{display:block;grid-row:1}
@media(max-width:1000px) and (min-width:761px){.lm-site .workspace-heading{padding:30px 4px 40px;gap:28px}.lm-site .workspace-heading h1{font-size:44px}.morph-brand{padding:20px 18px 0}.morph-captions{margin:0 18px;font-size:23px}.morph-foot{padding:12px 18px 18px}.morph-profile strong{font-size:11px}.morph-profile span{font-size:9px}}
@media(max-width:760px){.lm-site .workspace-heading{padding:22px 2px 32px;gap:28px;grid-template-columns:1fr}.lm-site .workspace-heading h1{font-size:clamp(36px,7.8vw,54px);max-width:16ch;margin-bottom:16px}.lm-site .workspace-heading .intro{font-size:16px}.lm-site .hero-aside.hero-film{grid-column:1;grid-row:2;max-width:460px}.lm-site .hero-entry{grid-row:3}.morph-brand{padding:18px 16px 0;font-size:16px}.morph-brand small{font-size:9px}.morph-profile{gap:7px}.profile-avatar{width:30px;font-size:21px}.morph-profile strong{font-size:11px}.morph-profile span{font-size:8px}.morph-profile>svg{width:16px}.morph-insight{font-size:9px;padding:7px 9px}.morph-analysis span{font-size:9px}.morph-export{padding:7px 9px;font-size:10px;gap:4px}.morph-export svg{width:16px;height:16px}.morph-captions{margin:0 16px;min-height:52px;font-size:22px}.morph-foot{font-size:9px;padding:8px 16px 18px}.lm-site.is-authenticated .workspace-heading{grid-template-columns:1fr}.lm-site.is-authenticated .hero-aside.hero-film{display:block;grid-row:2}}
@media(prefers-reduced-motion:reduce){.hero-film *,.hero-film *::after{animation:none!important}.morph-profile,.morph-profile-sheet{opacity:0}.morph-tile.tile-1{transform:translate(40%,-24%) scale(1.55) rotate(-4deg)}}
.film-reduced .morph-profile,.film-reduced .morph-profile-sheet{opacity:0}
.film-ready:not(.film-reduced) .tile-1{animation-name:morph-tile-1}
@keyframes morph-tile-1{0%,12%,100%{opacity:1;transform:translate(-155%,-90%) scale(1) rotate(0)}26%,41%{opacity:1;transform:translate(-170%,-115%) scale(1.15) rotate(-12deg)}60%,83%{opacity:1;transform:translate(40%,-24%) scale(1.55) rotate(-4deg)}96%{opacity:1;transform:translate(-155%,-90%) scale(1) rotate(0)}}
.film-ready:not(.film-reduced) .tile-2{animation-name:morph-tile-2}
@keyframes morph-tile-2{0%,12%,100%{opacity:1;transform:translate(-50%,-90%) scale(1) rotate(0)}26%,41%{opacity:0.14;transform:translate(-230%,45%) scale(0.82) rotate(2deg)}60%,83%{opacity:0;transform:translate(0%,0%) scale(0.94) rotate(0deg)}96%{opacity:1;transform:translate(-50%,-90%) scale(1) rotate(0)}}
.film-ready:not(.film-reduced) .tile-3{animation-name:morph-tile-3}
@keyframes morph-tile-3{0%,12%,100%{opacity:1;transform:translate(55%,-90%) scale(1) rotate(0)}26%,41%{opacity:0.14;transform:translate(145%,35%) scale(0.82) rotate(11deg)}60%,83%{opacity:0;transform:translate(0%,0%) scale(0.94) rotate(0deg)}96%{opacity:1;transform:translate(55%,-90%) scale(1) rotate(0)}}
.film-ready:not(.film-reduced) .tile-4{animation-name:morph-tile-4}
@keyframes morph-tile-4{0%,12%,100%{opacity:1;transform:translate(-155%,15%) scale(1) rotate(0)}26%,41%{opacity:0.14;transform:translate(-240%,145%) scale(0.82) rotate(-9deg)}60%,83%{opacity:0;transform:translate(0%,0%) scale(0.94) rotate(0deg)}96%{opacity:1;transform:translate(-155%,15%) scale(1) rotate(0)}}
.film-ready:not(.film-reduced) .tile-5{animation-name:morph-tile-5}
@keyframes morph-tile-5{0%,12%,100%{opacity:1;transform:translate(-50%,15%) scale(1) rotate(0)}26%,41%{opacity:1;transform:translate(-45%,-105%) scale(1.15) rotate(5deg)}60%,83%{opacity:0;transform:translate(0%,0%) scale(0.94) rotate(0deg)}96%{opacity:1;transform:translate(-50%,15%) scale(1) rotate(0)}}
.film-ready:not(.film-reduced) .tile-6{animation-name:morph-tile-6}
@keyframes morph-tile-6{0%,12%,100%{opacity:1;transform:translate(55%,15%) scale(1) rotate(0)}26%,41%{opacity:0.14;transform:translate(150%,150%) scale(0.82) rotate(12deg)}60%,83%{opacity:0;transform:translate(0%,0%) scale(0.94) rotate(0deg)}96%{opacity:1;transform:translate(55%,15%) scale(1) rotate(0)}}
.film-ready:not(.film-reduced) .tile-7{animation-name:morph-tile-7}
@keyframes morph-tile-7{0%,12%,100%{opacity:1;transform:translate(-155%,120%) scale(1) rotate(0)}26%,41%{opacity:1;transform:translate(85%,-112%) scale(1.15) rotate(-7deg)}60%,83%{opacity:0;transform:translate(0%,0%) scale(0.94) rotate(0deg)}96%{opacity:1;transform:translate(-155%,120%) scale(1) rotate(0)}}
.film-ready:not(.film-reduced) .tile-8{animation-name:morph-tile-8}
@keyframes morph-tile-8{0%,12%,100%{opacity:1;transform:translate(-50%,120%) scale(1) rotate(0)}26%,41%{opacity:0.14;transform:translate(-170%,195%) scale(0.82) rotate(-4deg)}60%,83%{opacity:0;transform:translate(0%,0%) scale(0.94) rotate(0deg)}96%{opacity:1;transform:translate(-50%,120%) scale(1) rotate(0)}}
.film-ready:not(.film-reduced) .tile-9{animation-name:morph-tile-9}
@keyframes morph-tile-9{0%,12%,100%{opacity:1;transform:translate(55%,120%) scale(1) rotate(0)}26%,41%{opacity:0.14;transform:translate(110%,195%) scale(0.82) rotate(10deg)}60%,83%{opacity:0;transform:translate(0%,0%) scale(0.94) rotate(0deg)}96%{opacity:1;transform:translate(55%,120%) scale(1) rotate(0)}}
