/* Catalogue redraws keep their layouts local; existing defaults use none of these selectors. */
.cat-option { display:none; }
.spread:has(>.cat-option):is(.opt-polaroid,.opt-fluid-grid,.opt-wheel,.opt-accordion,.opt-rolling-stack,.opt-scroll-stack,.opt-stack-reveal,.opt-focus-voices,.opt-quote-stack,.opt-plan-selector) > :not(.cat-option) { display:none; }
.spread.opt-polaroid>.cat-polaroid,.spread.opt-fluid-grid>.cat-fluid-grid,.spread.opt-wheel>.cat-wheel,.spread.opt-accordion>.cat-accordion,.spread.opt-rolling-stack>.cat-rolling-stack,.spread.opt-scroll-stack>.cat-scroll-stack { display:block; width:100%; }
.spread:is(.opt-wheel,.opt-accordion) { padding:clamp(24px,4vw,64px); }
.cat-note { font:400 12px/1.5 var(--font-mono); margin:24px auto 0; max-width:780px; }
.cat-note a { color:inherit; text-underline-offset:3px; }
.cat-option button,[data-spread="S105"] button,[data-spread="S106"] button { color:var(--r-card-ink); background:var(--r-card); border:1px solid var(--r-rule); border-radius:16px; padding:12px 16px; font:400 14px/1.4 var(--font-mono); cursor:pointer; }
.cat-option button:focus-visible,[data-spread="S105"] button:focus-visible,[data-spread="S106"] button:focus-visible,.cat-polaroids figure:focus-visible { outline:3px solid var(--r-ink); outline-offset:5px; }
.cat-photo { margin:0; min-width:0; background:var(--r-card); color:var(--r-card-ink); }
.cat-photo img { width:100%; aspect-ratio:3/4; object-fit:cover; display:block; }
.cat-photo figcaption { padding:12px; font:400 13px/1.5 var(--font-mono); }
.cat-controls { justify-content:center; gap:12px; flex-wrap:wrap; margin-top:24px; }
.cat-controls:not([hidden]) { display:flex; }
.cat-controls[hidden],[data-cat-expand][hidden],[data-cat-reset][hidden] { display:none!important; }
.cat-head { font:500 clamp(24px,3vw,48px)/1.15 var(--font-serif); text-align:center; margin:32px auto 24px; max-width:28ch; }
.cat-polaroids { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:20px; align-items:center; max-width:1060px; margin:auto; padding:24px; }
.cat-polaroids .cat-photo { padding:14px; transform:translate(var(--drag-x,0px),var(--drag-y,0px)) rotate(-6deg); box-shadow:0 8px 24px color-mix(in srgb,var(--r-ink) 15%,transparent); touch-action:pan-y; }
.cat-polaroids .cat-photo:nth-child(2) { transform:translate(var(--drag-x,0px),var(--drag-y,0px)) rotate(7deg); }
.cat-polaroids .cat-photo:nth-child(3) { transform:translate(var(--drag-x,0px),var(--drag-y,0px)) rotate(-2deg); }
.cat-polaroids .cat-photo img { aspect-ratio:1; }
.cat-polaroids .cat-photo:nth-child(2) img { aspect-ratio:3/4; }
.cat-polaroid>[data-cat-reset] { display:block; margin:16px auto; }
.cat-fluid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px; max-width:720px; margin:auto; }
.cat-fluid .cat-fluid-cell { padding:0; overflow:hidden; border:0; text-align:left; border-radius:16px; }
.cat-fluid .cat-fluid-cell:last-child,.cat-fluid.cat-fluid-live .is-wide { grid-column:span 2; }
.cat-fluid.cat-fluid-live .cat-fluid-cell:last-child:not(.is-wide) { grid-column:auto; }
.cat-fluid .cat-photo img { aspect-ratio:4/3; }
.cat-fluid .cat-fluid-cell:last-child img,.cat-fluid.cat-fluid-live .is-wide img { aspect-ratio:8/3; }
.cat-fluid.cat-fluid-live .cat-fluid-cell:last-child:not(.is-wide) img { aspect-ratio:4/3; }
.cat-selector { width:100%; max-width:1020px; margin:auto; }
.cat-pair { display:grid; grid-template-columns:1fr 1fr; gap:32px; margin-bottom:24px; align-items:center; }
.cat-pair-copy p { font:400 clamp(16px,1.5vw,22px)/1.5 var(--font-sans); }
.cat-pair-copy button { width:100%; text-align:left; }
.cat-wheel .cat-pair .cat-photo { grid-column:1; grid-row:1; }
.cat-wheel .cat-pair .cat-pair-copy { grid-column:2; grid-row:1; }
.cat-selector.cat-select-live { position:relative; display:grid; grid-template-columns:1fr 1fr; gap:24px 48px; align-items:center; }
.cat-select-live .cat-pair { display:contents; }
.cat-select-live .cat-pair .cat-photo { display:none; grid-column:2; grid-row:1 / span 5; }
.cat-select-live .cat-pair .cat-pair-copy { grid-column:1; }
.cat-select-live .cat-pair.is-selected .cat-photo { display:block; }
.cat-select-live .cat-pair:not(.is-selected) p { display:none; }
.cat-select-live .cat-controls { grid-column:1 / span 2; }
.cat-wheel.cat-select-live .cat-pair .cat-photo { grid-column:1; }
.cat-wheel.cat-select-live .cat-pair .cat-pair-copy { grid-column:2; padding-left:20px; transform:rotate(var(--wheel-angle,0deg)); transform-origin:left center; }
.cat-wheel.cat-select-live .cat-pair-copy p { display:none; }
.cat-select-live button[aria-expanded="true"] { border:2px solid var(--r-ink); }
.cat-story { display:grid; grid-template-columns:1fr 1fr; gap:32px; padding:32px; background:var(--r-card); color:var(--r-card-ink); margin-bottom:28px; border-radius:16px; position:relative; }
.cat-story-copy { display:grid; align-content:center; gap:18px; }
.cat-story h3 { margin:0; font:500 clamp(24px,2.7vw,46px)/1.1 var(--font-serif); }
.cat-story p { margin:0; font:400 clamp(16px,1.3vw,22px)/1.5 var(--font-sans); }
.cat-kicker { font:400 12px/1.4 var(--font-mono); }
.cat-rolling,.cat-scroll { max-width:1100px; margin:auto; }
.cat-rolling.cat-rolling-live:not(.cat-all) { padding-top:80px; }
.cat-rolling-live:not(.cat-all) .cat-story { display:none; }
.cat-rolling-live:not(.cat-all) .cat-story.is-selected { display:grid; box-shadow:0 -24px 0 -8px var(--r-card),0 -48px 0 -16px var(--r-card),0 -72px 0 -24px var(--r-card); }
.cat-scroll-live .cat-story { position:sticky; top:calc(32px + var(--story-index)*32px); min-height:480px; margin-bottom:65vh; }
.cat-scroll-live .cat-story:last-child { margin-bottom:0; }
.cat-scroll .cat-kicker { position:absolute; top:-22px; left:0; background:var(--r-card); color:var(--r-card-ink); padding:10px 20px; border-radius:16px 16px 0 0; }
.cat-coverflow { width:100%; max-width:1100px; margin:auto; display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:16px; }
.cat-coverflow .cat-controls { grid-column:1 / -1; }
.cat-coverflow.cat-deck-live:not(.cat-all) { position:relative; display:block; min-height:460px; overflow:hidden; }
.cat-deck-live:not(.cat-all) .cat-photo { position:absolute; width:240px; top:20px; left:calc(50% - 120px); transform:translateX(calc(var(--deck-offset)*110px)) translateY(calc(var(--deck-depth)*20px)) scale(calc(1 - var(--deck-depth)*.15)); z-index:var(--deck-z); transition:transform 320ms ease; border:2px solid var(--r-rule); border-radius:16px; overflow:hidden; }
.cat-deck-live:not(.cat-all) .cat-controls { position:absolute; bottom:0; width:100%; }
.cat-gallery { width:100%; max-width:1000px; margin:auto; text-align:center; }
.cat-gallery-pictures { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:20px; }
.cat-gallery-pictures img { aspect-ratio:1; border-radius:16px; }
.cat-gallery.cat-gallery-live:not(.cat-expanded) .cat-gallery-pictures { max-width:500px; height:280px; margin:auto; display:flex; align-items:center; justify-content:center; }
.cat-gallery-live:not(.cat-expanded) .cat-photo { flex:0 0 180px; background:none; }
.cat-gallery-live:not(.cat-expanded) .cat-photo:nth-child(1) { transform:rotate(-12deg) translateX(45px); }
.cat-gallery-live:not(.cat-expanded) .cat-photo:nth-child(2) { z-index:1; }
.cat-gallery-live:not(.cat-expanded) .cat-photo:nth-child(3) { transform:rotate(12deg) translateX(-45px); }
.cat-gallery-live:not(.cat-expanded) .cat-photo:nth-child(n+4) { display:none; }
@media(max-width:760px){ .cat-polaroids,.cat-fluid,.cat-pair,.cat-story,.cat-coverflow,.cat-gallery-pictures { grid-template-columns:1fr; } .cat-polaroids { max-width:380px; gap:40px; } .cat-wheel .cat-pair .cat-photo,.cat-wheel .cat-pair .cat-pair-copy { grid-column:auto; grid-row:auto; } .cat-fluid .cat-fluid-cell:last-child { grid-column:auto; } .cat-fluid .cat-fluid-cell:last-child img { aspect-ratio:4/3; } .cat-story { padding:20px; } }
@media(prefers-reduced-motion:reduce){ .cat-photo,.cat-story { transition:none!important; transform:none!important; } }

.cat-deck-live:not(.cat-all) .cat-photo:not(.is-selected) figcaption { visibility:hidden; }
.cat-render * { transition:none!important; }

.cat-fluid .cat-photo { display:block; }
.cat-fluid .cat-caption { display:block; padding:12px; font:400 13px/1.5 var(--font-mono); }
/* Source fan pivots at a common lower edge like a hand of prints, not at each centre. */
.cat-coverflow.cat-deck-live.opt-fan:not(.cat-all) .cat-photo { width:200px; left:calc(50% - 100px); top:40px; transform-origin:bottom center; transform:rotate(calc(var(--deck-offset)*1deg)); }
.cat-coverflow.cat-deck-live.opt-fan.cat-fanned:not(.cat-all) .cat-photo { transform:rotate(calc(var(--deck-offset)*20deg)); }

/* Front cards depart upward; source rear planes stay visible underneath. Opaque copy preserves contrast. */
.spread.opt-stack-reveal>.cat-stack-reveal { display:block; width:100%; }
.spread.opt-stack-reveal { overflow:visible; }
.cat-reveal-stage { max-width:1100px; margin:auto; }
.cat-reveal-card { position:relative; min-height:500px; margin-bottom:28px; border-radius:16px; overflow:hidden; background:var(--r-card); color:var(--r-card-ink); }
.cat-reveal-card>img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.cat-reveal-number { position:absolute; top:20px; left:20px; padding:8px 16px; background:var(--r-card); color:var(--r-card-ink); font:500 clamp(32px,4vw,64px)/1 var(--font-sans); border-radius:16px; }
.cat-reveal-copy { position:absolute; bottom:24px; left:24px; padding:24px; max-width:min(600px,calc(100% - 48px)); background:var(--r-card); color:var(--r-card-ink); border-radius:16px; }
.cat-reveal-copy h3 { margin:0 0 12px; font:500 clamp(24px,2.5vw,44px)/1.12 var(--font-serif); }
.cat-reveal-copy p { margin:0; font:400 clamp(16px,1.4vw,22px)/1.5 var(--font-sans); }
.cat-reveal-live .cat-reveal-stage { height:480vh; }
.cat-reveal-live .cat-reveal-plane { position:sticky; top:32px; height:calc(min(72vh,560px) + 54px); perspective:1200px; overflow:hidden; }
.cat-reveal-live .cat-reveal-card { position:absolute; inset:0 0 auto; min-height:0; height:min(72vh,560px); z-index:calc(4 - var(--reveal-index)); transform-origin:bottom center; transform:translateY(calc(var(--reveal-index)*18px - var(--reveal-depart,0px))) scale(calc(1 - var(--reveal-index)*.035)) rotateX(var(--reveal-tilt,0deg)); }
.cat-render .cat-reveal-stage { height:auto; }
@media(max-width:760px) { .cat-reveal-card { min-height:480px; } .cat-reveal-copy { padding:18px; left:16px; bottom:16px; max-width:calc(100% - 32px); } }

.spread.opt-focus-voices>.cat-focus-voices,.spread.opt-quote-stack>.cat-quote-stack { display:block; width:100%; }
.cat-voices { max-width:1060px; margin:auto; font:500 clamp(24px,3.2vw,48px)/1.5 var(--font-sans); }
.cat-voice { display:inline; color:var(--r-ink); }
.cat-voice img { width:1.3em; height:1.3em; object-fit:cover; border-radius:50%; display:inline-block; vertical-align:middle; margin-right:.25em; }
.cat-voice-attrib { font:400 12px/1.5 var(--font-mono); display:inline; white-space:normal; }
.cat-voice:focus-visible { outline:3px solid var(--r-ink); outline-offset:4px; }
.cat-voices-live:not(.cat-all) .cat-voice:nth-child(n+5) { display:none; }
.cat-voices:has(.cat-voice:hover) .cat-voice:not(:hover) img { filter:grayscale(1); }
.cat-voice:hover img,.cat-voice:focus img { transform:scale(1.1); }
.cat-quote-plane { max-width:760px; margin:auto; }
.cat-quote-card { background:var(--r-card); color:var(--r-card-ink); border:1px solid var(--r-rule); border-radius:16px; margin:0 0 24px; padding:32px; }
.cat-quote-card figcaption { display:flex; gap:16px; align-items:center; font:500 18px/1.3 var(--font-sans); }
.cat-quote-card img { width:64px; height:64px; object-fit:cover; border-radius:50%; }
.cat-quote-card small { display:block; font:400 12px/1.5 var(--font-mono); margin-top:6px; }
.cat-quote-card blockquote { margin:28px 0 0; font:italic 500 clamp(24px,2.2vw,36px)/1.35 var(--font-serif); }
.cat-quote-live:not(.cat-all) .cat-quote-plane { position:relative; height:440px; max-width:520px; padding-top:30px; }
.cat-quote-live:not(.cat-all) .cat-quote-card { position:absolute; top:30px; left:0; width:100%; min-height:360px; z-index:calc(4 - var(--quote-depth)); transform:translateY(calc(var(--quote-depth)*8px)) scale(calc(1 - var(--quote-depth)*.03)); transition:transform 320ms ease; }
.cat-quote-live:not(.cat-all) .cat-quote-card:not(.is-selected) figcaption,.cat-quote-live:not(.cat-all) .cat-quote-card:not(.is-selected) blockquote { visibility:hidden; }
.cat-quote-status,[data-cat-quote-status] { align-self:center; font:400 13px/1.4 var(--font-mono); }
@media(max-width:760px){ .cat-quote-card { padding:24px; } }
@media(prefers-reduced-motion:reduce){ .cat-voice img,.cat-quote-card { transform:none!important; transition:none!important; } }

/* Highlight the quotation as well as the portrait while retaining full text contrast. */
.cat-voice:hover q,.cat-voice:focus-visible q { color:var(--r-card-ink); background:var(--r-card); text-decoration:underline; text-decoration-thickness:2px; text-underline-offset:5px; box-decoration-break:clone; -webkit-box-decoration-break:clone; }
.cat-quote-live:not(.cat-all) .cat-quote-plane { overflow:hidden; }
.cat-quote-card.is-leaving { animation:cat-quote-toss 620ms ease-in-out forwards; }
/* Adapted native phases: brief wobble, upward/right departure, then reinsert behind the pile. */
@keyframes cat-quote-toss { 0% { transform:rotate(0); } 12% { transform:rotate(-2deg); } 24% { transform:rotate(2deg); } 36% { transform:rotate(-1deg); } 55% { transform:translate(80px,-40px) rotate(12deg); opacity:1; } 100% { transform:translate(450px,-160px) rotate(20deg); opacity:0; } }
.spread.opt-plan-selector>.cat-plan-selector { display:block; width:100%; }
.cat-plans { max-width:600px; margin:auto; }
.cat-plans h2 { font:500 clamp(24px,3vw,44px)/1.15 var(--font-sans); }
.cat-plan { background:var(--r-card); color:var(--r-card-ink); border:1px solid var(--r-rule); border-radius:16px; padding:20px; margin:16px 0; }
.cat-plan>[data-cat-plan] { display:flex; width:100%; padding:0; gap:16px; justify-content:space-between; border:0; border-radius:0; text-align:left; background:transparent; font:500 18px/1.4 var(--font-sans); }
.cat-plan small { display:block; font:400 12px/1.5 var(--font-mono); }
.cat-plan [data-cat-price] { max-width:44%; font:400 14px/1.5 var(--font-mono); text-align:right; }
.cat-plan-detail { font:400 15px/1.5 var(--font-sans); padding-top:16px; }
.cat-plan-detail ul { padding-left:22px; }
.cat-plans-live:not(.cat-all) .cat-plan:not(.is-selected) .cat-plan-detail { display:none; }
.cat-plans-live .cat-plan.is-selected { border:2px solid var(--r-ink); }
.cat-period button[aria-pressed="true"] { outline:2px solid var(--r-ink); outline-offset:2px; }
@media(prefers-reduced-motion:reduce){ .cat-quote-card.is-leaving { animation:none!important; } }
