/* Homepage product demonstrations. All artwork is local and decorative;
   only the active, visible scene animates. No editor or print styles are shared. */
#home .visual-how {
  display:block;
  background:var(--surface-page);
  border-block:1px solid var(--border-subtle);
  overflow:clip;
  padding-block:clamp(3rem,6vw,6rem);
}
.visual-how .how-heading {display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-6);margin-bottom:var(--space-7)}
#home .visual-how #how-title {font:var(--weight-regular) var(--type-display)/var(--leading-display) var(--font-ui);letter-spacing:var(--tracking-display);margin:0;text-wrap:balance}
.visual-how .how-heading-meta>p {color:var(--text-secondary);font-size:var(--type-body);line-height:var(--leading-body);margin:0 0 .25rem;max-width:23rem}
.visual-how .how-heading-meta {display:flex;flex-direction:column;align-items:flex-start;gap:8px}
.visual-how .how-heading .eyebrow {margin:0 0 var(--space-4)}
.visual-how .how-cards {display:flex;align-items:stretch;gap:0;isolation:isolate}
.visual-how .how-card {
  flex:1 1 0;min-width:0;padding:var(--space-5);
  background:#1d1e1b;border:1px solid var(--border-subtle);border-radius:var(--radius-panel);
  transform:scale(.96);transition:flex-grow 520ms cubic-bezier(.22,1,.36,1),transform 520ms cubic-bezier(.22,1,.36,1),background 300ms,border-color 300ms;
}
.visual-how .how-card.is-active {flex-grow:1.8;transform:scale(1);z-index:1;background:#262823;border-color:#ffffff38;box-shadow:0 20px 50px #0003}
#home .visual-how .how-card>h3 {font-family:var(--font-ui);font-weight:400;font-size:clamp(1.5rem,2.8vw,2.75rem);line-height:1.12;letter-spacing:-.035em;margin:0 0 var(--space-5)}
.visual-how .how-card-toggle {display:flex;align-items:center;gap:.75rem;width:100%;text-align:left;border:0;background:transparent;color:var(--text-primary);padding:0;min-height:48px;font:inherit;letter-spacing:inherit;cursor:pointer}
.visual-how .how-step {align-self:flex-start;padding-top:.2rem;color:var(--text-muted);font-size:var(--type-small);letter-spacing:0;line-height:1.5}
.visual-how .how-card-arrow {display:grid;place-items:center;width:38px;height:38px;flex:none;margin-left:auto;border-radius:50%;border:1px solid var(--border-subtle);font-size:21px;transition:background 180ms,transform 180ms}
.visual-how .how-card-toggle:hover .how-card-arrow {background:#ffffff12;transform:rotate(45deg)}
.visual-how .is-active .how-card-arrow {color:var(--text-on-light);background:var(--text-primary)}
.visual-how .how-demo {
  position:relative;display:grid;place-items:center;height:clamp(19rem,29vw,28rem);overflow:hidden;
  border-radius:var(--radius-control);container-type:size;
  color:var(--text-primary);background-color:var(--surface-page);
  background-image:radial-gradient(#ffffff1c .8px,transparent .8px);background-size:16px 16px;
  border:1px solid var(--border-subtle);
}
.visual-how :is(.how-demo-pill,.how-layout-chooser,.how-cover-swatches) {
  background:var(--surface-panel);border:1px solid var(--border-subtle);
  border-radius:var(--radius-pill);box-shadow:0 4px 16px #0005;
}
.visual-how .how-demo img {display:block;width:100%;height:100%;object-fit:cover;user-select:none;-webkit-user-drag:none}
.visual-how .how-card-copy {margin-top:var(--space-5)}
.visual-how .how-card-copy h4 {font:var(--weight-medium) 1.125rem/1.35 var(--font-ui);letter-spacing:-.02em;color:var(--text-primary);margin:0 0 var(--space-2)}
.visual-how .how-card-copy p {font-size:var(--type-control);line-height:var(--leading-body);color:var(--text-secondary);margin:0;max-width:38rem}
.visual-how .how-footer {display:flex;align-items:center;justify-content:space-between;gap:var(--space-5);margin-top:var(--space-6);padding:0;border:0;background:transparent}
.visual-how .how-footer>p {margin:0;font-size:var(--type-control);color:var(--text-secondary)}
.visual-how .how-footer-actions {display:flex;align-items:center;gap:var(--space-5)}
.visual-how .how-motion-toggle {display:flex;align-items:center;gap:8px;background:transparent;border:0;padding:8px 0;min-height:44px;font:400 var(--type-small)/1.4 var(--font-ui);color:var(--text-secondary);cursor:pointer}
.visual-how .how-motion-toggle:hover {color:var(--text-primary)}
.visual-how .how-motion-toggle svg {width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.5}
.visual-how .how-play-icon,.visual-how .how-motion-toggle[aria-pressed=true] .how-pause-icon {display:none}
.visual-how .how-motion-toggle[aria-pressed=true] .how-play-icon {display:block}
/* Scene 1 — a camera roll opens into a considered selection. */
.visual-how .how-photo-collection {width:min(78cqw,80cqh);display:grid;grid-template-columns:repeat(3,1fr);gap:2cqw;transform:translateY(-9%)}
.visual-how .how-photo-tile {position:relative;aspect-ratio:.78;border:3px solid #fff;border-radius:6px;box-shadow:0 3px 9px #3332;transform-origin:center}
.visual-how .how-photo-tile img {border-radius:3px}
.visual-how .how-photo-tile>span {position:absolute;right:5px;bottom:5px;display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:#eef0e5;color:#314132;font-size:12px;box-shadow:0 1px 3px #0003}
.visual-how .how-demo-pill {position:absolute;bottom:8%;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:8px;padding:10px 14px;white-space:nowrap;font-size:clamp(10px,3.2cqw,14px);line-height:1.4}
.visual-how .how-pill-check {display:grid;place-items:center;width:18px;height:18px;background:var(--surface-selected);border-radius:50%}
.visual-how .is-active .how-photo-tile {animation:how-gather var(--how-scene-duration,7s) cubic-bezier(.22,1,.36,1) infinite;animation-delay:calc(var(--i)*.07s)}
@keyframes how-gather {
  0%,10%,100% {transform:translate(0,0) rotate(0)}
  26%,42% {transform:translate(var(--stack-x),var(--stack-y)) rotate(var(--tilt))}
  64%,90% {transform:translate(0,0) rotate(0)}
}
/* Scene 2 — a real-looking spread rearranges without changing the photos. */
.visual-how .how-spread {position:relative;display:flex;width:min(84cqw,105cqh);aspect-ratio:1.5;background:#faf8ef;box-shadow:0 3px 3px #57504622,0 16px 22px #57504626;transform:translateY(-8%) rotate(-3deg);border-radius:2px}
.visual-how .how-spread::after {content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,transparent 46%,#a39c8e08 48%,#7a716335 49.7%,#fff7 50.3%,transparent 54%);border:1px solid #6e63501a;border-radius:2px}
.visual-how .how-demo-page {position:relative;width:50%;height:100%;overflow:hidden}
.visual-how .how-demo-page-left img {position:absolute;left:11%;top:10%;width:79%;height:80%;object-position:45% center}
.visual-how .how-demo-page-right img {position:absolute;left:10%;width:79%;height:37%}
.visual-how .how-arrange-top {top:10%}
.visual-how .how-arrange-bottom {top:53%}
.visual-how .how-layout-chooser {position:absolute;display:flex;gap:9px;align-items:center;bottom:7%;left:50%;transform:translateX(-50%);padding:9px 12px}
.visual-how .how-layout-mini {display:grid;width:36px;height:27px;gap:2px;padding:3px;border:1px solid var(--border-subtle);border-radius:3px;background:var(--surface-raised)}
.visual-how .how-layout-mini i {background:#a6b09c;display:block}
.visual-how .how-layout-mini-one {grid-template-columns:1fr 1fr}
.visual-how .how-layout-mini-two {grid-template-columns:1fr 1fr;border-color:var(--text-secondary)}
.visual-how .how-layout-mini-two i:first-child {grid-row:span 2}
.visual-how .how-demo-cursor {position:absolute;width:21px;bottom:11%;left:56%;filter:drop-shadow(0 2px 2px #0002)}
.visual-how .how-demo-cursor svg {display:block;stroke:#fff;stroke-width:1.5;fill:#2d342a}
.visual-how .is-active .how-demo-page-left img {animation:how-layout-left var(--how-scene-duration,8s) cubic-bezier(.22,1,.36,1) infinite}
.visual-how .is-active .how-arrange-top {animation:how-layout-top var(--how-scene-duration,8s) cubic-bezier(.22,1,.36,1) infinite}
.visual-how .is-active .how-arrange-bottom {animation:how-layout-bottom var(--how-scene-duration,8s) cubic-bezier(.22,1,.36,1) infinite}
.visual-how .is-active .how-demo-cursor {animation:how-layout-cursor var(--how-scene-duration,8s) ease-in-out infinite}
@keyframes how-layout-left {0%,15%,88%,100%{transform:scale(1)}35%,65%{transform:scale(.75,.75)}}
@keyframes how-layout-top {0%,15%,88%,100%{left:10%;top:10%;width:79%;height:37%}35%,65%{left:9%;top:20%;width:38%;height:63%}}
@keyframes how-layout-bottom {0%,15%,88%,100%{left:10%;top:53%;width:79%;height:37%}35%,65%{left:53%;top:20%;width:38%;height:63%}}
@keyframes how-layout-cursor {0%,10%,90%,100%{transform:translate(0,0)}20%,65%{transform:translate(-45px,0)}75%{transform:translate(0,0)}}
/* Scene 3 — the same cover in three complementary colours. */
.visual-how .how-demo-cover {position:relative;width:min(55cqw,50cqh);aspect-ratio:3/4;background:#70826a;color:#17251d;border-radius:3px;box-shadow:1px 2px 0 #cbc9bd,3px 6px 8px #3b392f20,12px 20px 24px #3b392f35;transform:translateY(-8%) rotate(4deg);container-type:inline-size}
.visual-how .how-demo-cover::after {content:"";position:absolute;inset:0;pointer-events:none;border-radius:inherit;background:linear-gradient(90deg,#fff2,#0001 2%,#fff2 3%,transparent 5%,transparent 97%,#0001),url('assets/grain.png');background-size:auto,150px;opacity:.65;box-shadow:inset 0 1px 0 #fff3}
.visual-how .how-cover-title {position:absolute;top:9%;left:10%;right:10%;font-family:var(--font-literary);font-style:italic;font-weight:500;font-size:14cqw;line-height:1;text-align:center;letter-spacing:-.04em}
.visual-how .how-demo-cover img {position:absolute;left:23%;top:31%;width:54%;height:43%}
.visual-how .how-cover-caption {position:absolute;left:8%;right:8%;bottom:10%;text-align:center;font-size:3.5cqw;line-height:1.3}
.visual-how .how-cover-swatches {position:absolute;bottom:7%;display:flex;align-items:center;gap:9px;padding:10px 14px}
.visual-how .how-cover-swatches i {display:block;width:20px;height:20px;border-radius:50%;background:#70826a;border:1px solid var(--border-strong)}
.visual-how .how-cover-swatches i:nth-child(2) {background:#c59a9b}
.visual-how .how-cover-swatches i:nth-child(3) {background:#b5a48e}
.visual-how .how-cover-swatches span {font:italic 19px/1 var(--font-literary);padding-left:8px;border-left:1px solid var(--border-subtle)}
.visual-how .is-active .how-demo-cover {animation:how-cover-colour var(--how-scene-duration,9s) ease-in-out infinite}
@keyframes how-cover-colour {0%,15%,100%{background-color:#70826a}34%,48%{background-color:#c59a9b}67%,81%{background-color:#b5a48e}}
/* Pausing does not remove animations, so a user's pause keeps the current frame. */
.visual-how .how-card .how-demo * {animation-play-state:paused}
.visual-how .how-card.is-running .how-demo * {animation-play-state:running}
@media (width > 760px) {
  .visual-how {--how-scene-duration:3s}
}
@media (max-width:1050px) {
  .visual-how .how-card {padding:var(--space-4)}
  .visual-how .how-card.is-active {flex-grow:1.4}
  #home .visual-how .how-card>h3 {font-size:1.65rem}
  .visual-how .how-step {display:none}
  .visual-how .how-card-arrow {width:30px;height:30px;font-size:18px}
  .visual-how .how-card-copy h4 {font-size:var(--type-body)}
}
@media (max-width:760px) {
  .visual-how .how-heading {align-items:flex-start;flex-direction:column;gap:var(--space-4);margin-bottom:var(--space-5)}
  .visual-how .how-cards {display:grid;gap:var(--space-4)}
  .visual-how .how-card,.visual-how .how-card.is-active {transform:none;padding:var(--space-5);box-shadow:none}
  #home .visual-how .how-card>h3 {font-size:1.75rem;margin-bottom:var(--space-4)}
  .visual-how .how-step {display:block}
  .visual-how .how-demo {height:auto;aspect-ratio:1.2}
  .visual-how .how-card-copy {margin-top:var(--space-4)}
  .visual-how .how-footer {align-items:flex-start;flex-direction:column}
  .visual-how .how-footer-actions {width:100%;flex-wrap:wrap;justify-content:space-between;gap:var(--space-3)}
  .visual-how .how-footer-actions>.button {margin:0}
}
@media (prefers-reduced-motion:reduce) {
  .visual-how .how-card {transition:none}
  .visual-how .how-demo * {animation:none!important}
  .visual-how .how-motion-toggle {display:none}
}
