/* Motion is applied to the funnel's body as well as its audience objects. */
.funnel-dimensional{inset:0 0 20px;perspective:1000px}
.funnel-dimensional .funnel-sculpture{transform:none;animation:funnel-sway 9s ease-in-out infinite alternate;filter:drop-shadow(0 20px 18px #000) drop-shadow(0 0 24px #d94f2024)}
.funnel-tier{transform-box:fill-box;transform-origin:center;animation:funnel-breathe 5s ease-in-out infinite alternate}
.funnel-tier.tier-two{animation-delay:-1.6s}.funnel-tier.tier-three{animation-delay:-3.2s}
.funnel-orbit{animation:funnel-orbit 5s linear infinite}
.funnel-purchase{transform-box:fill-box;transform-origin:center;animation:purchase-pulse 2.4s ease-in-out infinite}
.funnel-stage-label{position:absolute;inset:15% 0 13% auto;display:flex;flex-direction:column;justify-content:space-between;color:#b09481;font-size:11px;letter-spacing:.09em}
.funnel-stage-label span{writing-mode:vertical-rl}
.funnel-dimensional .funnel-metric{padding:12px 15px;background:linear-gradient(90deg,#080604ed,#08060470,transparent);border-left:1px solid #8b3b22;backdrop-filter:blur(6px)}
.funnel-dimensional .metric-reach{top:18%;left:1%}.funnel-dimensional .metric-leads{top:49%;right:1%}.funnel-dimensional .metric-sales{bottom:4%;left:6%}.funnel-dimensional .metric-sales:after{display:none}
.funnel-dimensional .conversion-toast{right:2%;bottom:0;max-width:205px;padding:12px;font-size:12px}
.funnel-dimensional .conversion-toast div>span{display:none}
@keyframes funnel-sway{from{transform:perspective(1000px) rotateY(-9deg) rotateZ(-3deg) translateY(-5px)}to{transform:perspective(1000px) rotateY(9deg) rotateZ(3deg) translateY(8px)}}
@keyframes funnel-breathe{from{translate:0 -6px;scale:1 .97}to{translate:0 7px;scale:1.035 1.04}}
@keyframes funnel-orbit{to{stroke-dashoffset:-1100}}
@keyframes purchase-pulse{50%{scale:1.08;filter:drop-shadow(0 0 12px #ffac66)}}
/* Photography: an editorial viewfinder, changing frames and a real contact sheet. */
#fotografia{min-height:860px}.visual-photo{width:53%;height:690px;right:3%}
.photo-experience{position:absolute;inset:0;padding:22px 20px;perspective:1200px}
.photo-topline{display:flex;justify-content:space-between;font-size:12px;letter-spacing:.1em;color:#ba9c8b;margin-bottom:20px}.photo-count{font-variant-numeric:tabular-nums}
.photo-viewfinder{position:relative;height:440px;isolation:isolate;overflow:hidden;background:#0a0807;box-shadow:0 20px 50px #000}
.photo-frame{position:absolute;inset:0;margin:0;opacity:0;transition:opacity .8s ease,transform 1.1s cubic-bezier(.2,.75,.2,1);transform:translateX(6%) scale(1.07);pointer-events:none}
.photo-frame.is-active{opacity:1;transform:translateX(0) scale(1);z-index:1}
.photo-frame>img{display:block;width:100%;height:100%;object-fit:cover!important;object-position:58% center;animation:photo-drift 12s ease-in-out infinite alternate}
.photo-frame[data-photo-frame="1"]>img{object-position:50% 28%}
.photo-frame:after{content:'';position:absolute;inset:0;background:linear-gradient(0deg,#000b,transparent 50%)}
.photo-frame figcaption{position:absolute;z-index:2;bottom:28px;left:28px;right:20px;display:flex;flex-direction:column;gap:8px;text-shadow:0 2px 12px #000}
.photo-frame figcaption>span{font-size:12px;letter-spacing:.14em;color:#ffd1ac}.photo-frame figcaption>b{font-size:30px;font-weight:500;letter-spacing:-.04em}
.photo-focus{position:absolute;z-index:3;inset:7%;pointer-events:none;animation:photo-focus 6.5s ease-in-out infinite}
.photo-focus i{position:absolute;width:20px;height:20px;border-color:#fff9;border-style:solid}.photo-focus i:nth-child(1){left:0;top:0;border-width:1px 0 0 1px}.photo-focus i:nth-child(2){right:0;top:0;border-width:1px 1px 0 0}.photo-focus i:nth-child(3){bottom:0;left:0;border-width:0 0 1px 1px}.photo-focus i:nth-child(4){bottom:0;right:0;border-width:0 1px 1px 0}
.photo-shutter{position:absolute;inset:0;z-index:4;background:#15100d;opacity:0;pointer-events:none}
.photo-experience.is-changing .photo-shutter{animation:photo-shutter .7s ease both}
.photo-navigation{display:flex;gap:15px;align-items:center;margin-top:18px}
.photo-contact-sheet{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;flex:1;min-width:0}
.photo-contact-sheet button{appearance:none;border:0;border-bottom:2px solid #36302c;padding:0 0 10px;color:#9f9893;background:transparent;text-align:left;font:inherit;cursor:pointer}
.photo-contact-sheet button img{height:72px;width:100%;object-fit:cover;opacity:.5;transition:opacity .4s,transform .4s}
.photo-contact-sheet button span{display:block;font-size:12px;line-height:1.4;padding-top:8px}
.photo-contact-sheet button[aria-pressed=true]{color:#fff;border-color:#fa532e}.photo-contact-sheet button[aria-pressed=true] img{opacity:1}
.photo-autoplay{width:44px;height:44px;border:1px solid #5a382a;background:#120a06;color:#ffc8a2;font:inherit;cursor:pointer;flex-shrink:0}
.photo-invitation{font-size:12px;color:#a7978e;line-height:1.6}.photo-invitation span{color:#ddd5cf}
.photo-experience button:focus-visible{outline:2px solid #ff9668;outline-offset:4px}
.photo-experience.is-still *{animation-play-state:paused!important}
.catalog-art .photo-experience{padding:40px}.catalog-art .photo-viewfinder{height:445px}.catalog-art .photo-contact-sheet img{height:62px}.catalog-art .photo-frame:first-child{opacity:1;transform:none}
@keyframes photo-drift{from{transform:scale(1.01)}to{transform:scale(1.075)}}
@keyframes photo-focus{0%,20%,100%{opacity:.45;transform:scale(1)}55%{opacity:.8;transform:scale(.93)}}
@keyframes photo-shutter{0%,100%{opacity:0}32%{opacity:.55}}
@media(prefers-reduced-motion:reduce){.funnel-dimensional *,.photo-experience *{animation:none!important;transition:none!important}}
.lighting-contact{display:flex;align-items:center;justify-content:space-between;gap:22px;padding:17px 0 13px;margin-top:15px;border-bottom:1px solid #a8522e;color:#ffb083;font-size:12px;line-height:1.6;max-width:470px}.lighting-contact>span{font-size:28px}
.wedding-bride-link{display:flex;align-items:center;gap:20px;font-size:13px;color:#cab297;margin-top:22px;min-height:44px}.visual-wedding{height:740px;width:58%;right:0}.wedding-film{position:absolute;inset:0;overflow:hidden;mask-image:linear-gradient(90deg,transparent,#000 12%,#000 94%,transparent),linear-gradient(0deg,transparent,#000 8%,#000 90%,transparent);mask-composite:intersect;background:#080603}
.wedding-film>img{width:100%;height:100%;object-fit:cover!important;object-position:68% center;animation:wedding-drift 18s ease-in-out infinite alternate}.wedding-warmth{position:absolute;inset:0;background:linear-gradient(0deg,#000a,transparent 50%),linear-gradient(90deg,#0004,transparent)}
.wedding-frame{position:absolute;inset:6% 9%;border-block:1px solid #eac7a22f;animation:wedding-focus 12s ease-in-out infinite alternate}
.wedding-film-title{position:absolute;left:10%;bottom:16%;text-shadow:0 2px 30px #000;display:flex;flex-direction:column;gap:12px}.wedding-film-title>span{font-size:13px;letter-spacing:.17em;color:#f4cfaa}.wedding-film-title>b{font-family:Georgia,serif;font-style:italic;font-size:clamp(36px,4.5vw,72px);font-weight:400;letter-spacing:-.04em;color:#fff3dc}
.wedding-signature{position:absolute;left:10%;right:10%;bottom:8%;display:flex;justify-content:space-between;font-size:10px;color:#b9a18b;gap:20px;letter-spacing:.08em}
@keyframes wedding-drift{from{transform:scale(1.025) translateX(-1%)}to{transform:scale(1.1) translateX(1%)}}
@keyframes wedding-focus{to{inset:8% 11%;opacity:.5}}
.visual-event,.visual-music{width:55%;height:720px;right:2%}
.chapter-experience{position:absolute;inset:0;padding:20px;--chapter-p:0}
.chapter-top{display:flex;justify-content:space-between;color:#bca28f;font-size:11px;letter-spacing:.09em;margin-bottom:19px;gap:20px}.chapter-counter{font-variant-numeric:tabular-nums;flex-shrink:0}
.chapter-stage{position:relative;isolation:isolate;height:440px;overflow:hidden;background:#0d0a08;transition:background .8s}
.chapter-shot{position:absolute;inset:0;opacity:0;transform:scale(1.12) translateX(4%);transition:opacity .9s ease,transform 1.6s cubic-bezier(.2,.7,.2,1)}
.chapter-shot.is-active{opacity:1;transform:scale(1) translateX(0)}
.chapter-shot img{width:100%;height:100%;object-fit:cover!important;object-position:center;animation:chapter-camera 15s ease-in-out infinite alternate}
.chapter-shot:after{content:'';position:absolute;inset:0;background:linear-gradient(0deg,#000d,transparent 57%)}
.chapter-title{position:absolute;z-index:3;left:28px;bottom:28px;right:24px;display:flex;flex-direction:column;gap:10px;text-shadow:0 2px 20px #000}.chapter-title>span{font-size:11px;letter-spacing:.12em;color:#ffc59d}.chapter-title>b{font-size:32px;letter-spacing:-.04em;font-weight:500;line-height:1.2}
.chapter-sweep{position:absolute;z-index:2;inset:-50%;pointer-events:none;background:linear-gradient(105deg,transparent 44%,#ffe0b00a 50%,transparent 56%);animation:chapter-sweep 8s ease-in-out infinite}
.chapter-tabs{display:flex;gap:20px;margin-top:22px}.chapter-tabs button{flex:1;position:relative;padding:15px 0 13px;border:0;border-top:1px solid #493125;background:none;color:#a99383;font:inherit;text-align:left;cursor:pointer;min-width:0;display:flex;flex-direction:column;gap:9px}.chapter-tabs button>span{font-size:12px;color:#aa5938}.chapter-tabs button>b{font-size:15px;font-weight:400}.chapter-tabs button>i{position:absolute;top:-1px;left:0;right:0;height:2px;transform:scaleX(0);transform-origin:left;background:#ffa071}.chapter-tabs button[aria-pressed=true]{color:#fff}.chapter-tabs button[aria-pressed=true]>i{transform:scaleX(var(--chapter-p))}
.chapter-tabs button:focus-visible,.chapter-play:focus-visible{outline:2px solid #ff9966;outline-offset:4px}.chapter-bottom{display:flex;justify-content:space-between;align-items:center;gap:16px}.chapter-bottom>p{font-size:12px;color:#ad9d92;line-height:1.6}.chapter-play{min-width:44px;height:44px;flex-shrink:0;border:1px solid #433027;background:#100b08;color:#d9b799;font:inherit;cursor:pointer}
.event-recording{position:absolute;top:23px;left:27px;z-index:3;display:flex;align-items:center;gap:9px;color:#eee0d0;font-size:11px;letter-spacing:.1em;text-shadow:0 2px 8px #000}.event-recording i{width:6px;height:6px;border-radius:50%;background:#f93f23;animation:recording 2s infinite}
.event-guides{position:absolute;inset:13% 7%;z-index:2;pointer-events:none}.event-guides i{position:absolute;top:0;bottom:0;border:1px solid #f6cc9430;transition:width 1s,left 1s}.event-guides i:first-child{left:0;width:100%}.event-guides i:last-child{left:32%;width:36%;opacity:0;transition:opacity 1s}
.event-director[data-chapter="2"] .event-guides i:last-child{opacity:1}.event-director[data-chapter="2"] .chapter-shot.is-active img{object-position:75% center;transform:scale(1.17)}.event-director .chapter-shot[data-chapter-shot="1"] img{object-position:50% 33%}
.music-session .chapter-stage{height:345px}.music-session .chapter-shot[data-chapter-shot="2"] img{object-position:center 40%}.music-session .chapter-title>b{font-size:28px}
.session-tracks{position:relative;background:#090806;border-block:1px solid #282019;padding:12px 16px;overflow:hidden;margin-top:2px}.session-tracks>div{display:flex;align-items:center;gap:18px;margin:9px 0}.session-tracks>div>span{font-size:10px;color:#b29885;width:60px;flex-shrink:0}.session-tracks>div>div{flex:1;display:flex;align-items:center;height:26px;gap:3px}.session-tracks i{flex:1;height:var(--bar);background:linear-gradient(#f6b78a,#a94525);animation:session-wave 1.5s var(--beat) ease-in-out infinite alternate;opacity:.75}.session-tracks>div:nth-child(2) i{background:linear-gradient(#dbb986,#857258)}.session-playhead{position:absolute;left:22%;top:0;bottom:0;border-left:1px solid #fff9;box-shadow:0 0 15px #fff4;animation:session-head 7s linear infinite}
.chapter-experience.is-still *{animation-play-state:paused!important}
.catalog-art .chapter-experience{padding:35px}.catalog-art .chapter-stage{height:390px}.catalog-art .music-session .chapter-stage{height:320px}.catalog-art .chapter-shot:first-child{opacity:1;transform:none}.catalog-art .chapter-tabs,.catalog-art .chapter-bottom{display:none}.catalog-art .wedding-film{inset:0 5%}
@keyframes chapter-camera{from{scale:1}to{scale:1.05}}
@keyframes chapter-sweep{from{translate:-35% 0}to{translate:35% 0}}
@keyframes session-wave{to{scale:1 .35}}
@keyframes session-head{from{left:22%}to{left:100%}}
@media(max-width:1100px) and (min-width:701px){.visual-event,.visual-music{height:650px}.chapter-stage{height:370px}.chapter-title>b{font-size:27px}.chapter-tabs{gap:14px}.chapter-tabs button>b{font-size:13px}.music-session .chapter-stage{height:295px}}
@media(prefers-reduced-motion:reduce){.wedding-film *,.chapter-experience *{animation:none!important;transition:none!important}}
