/* Selected Coconat identity, shared with the approved footer. */
.calling-journey .calling-sequence .calling-light-stage .calling-brand{font-family:'Coconat Footer',Coconat,serif;font-weight:500;font-synthesis:none;font-size:11vw;letter-spacing:-.08em;text-transform:uppercase;-webkit-text-stroke:0}
.signature-footer{padding-left:0;padding-right:0}
.footer-wordmark-approved span{transform:translateX(var(--ink-center,0px)) translateY(25%)}
/* The portal base stays fitted to the viewport throughout the reveal. */
.message-portal{position:relative;height:260svh;background:var(--ink,#111);isolation:isolate}
.message-portal-stage{position:sticky;top:0;height:100svh;overflow:hidden;display:grid;place-items:center;background:var(--ink,#111)}
.message-portal-frame{position:relative;width:100%;aspect-ratio:2/1}
.message-portal-art{display:block;position:absolute;width:100%;max-width:100%;height:auto;bottom:0;left:0;opacity:var(--portal-art-opacity,1)}
.message-portal-copy{position:absolute;top:17%;left:50%;margin:0;transform:translateX(-50%) translateY(var(--portal-copy-y,18px)) scale(var(--portal-copy-scale,1));width:18%;min-width:0;text-align:center;font-family:'Coconat Footer',Coconat,serif;font-size:clamp(12px,2.7vw,52px);font-weight:500;line-height:1.2;letter-spacing:-.035em;color:var(--ivory,#faf2f0);opacity:var(--portal-copy-opacity,1);filter:blur(var(--portal-copy-blur,0px))}
.message-portal-copy span{display:block}
@media(max-width:700px){.message-portal{height:230svh}.message-portal-copy{font-size:clamp(12px,2.7vw,19px)}}
@media(prefers-reduced-motion:reduce){.message-portal{height:90svh}.message-portal-stage{position:relative;height:90svh}.message-portal-art{opacity:1}.message-portal-copy{transform:translateX(-50%);opacity:1;filter:none}}

/* Bottom-anchored fan opening: mirrored wings hinge at the central base. */
.message-portal{height:300svh}
.message-portal-stage{display:block}
.message-portal-frame{position:absolute;bottom:0;left:0;width:100%;aspect-ratio:2/1}
.portal-wing{position:absolute;inset:0;transform-origin:50% 100%;will-change:transform}
.portal-wing-left{clip-path:inset(0 50% 0 0);transform:rotate(calc(-1 * var(--portal-angle,0deg)))}
.portal-wing-right{clip-path:inset(0 0 0 50%);transform:rotate(var(--portal-angle,0deg))}
.message-portal-copy{top:auto;bottom:clamp(60px,15vw,280px);width:88%;font-size:clamp(42px,8vw,140px);line-height:1.05;letter-spacing:-.055em;filter:none;transform:translateX(-50%);clip-path:none}
@media(max-width:700px){.message-portal{height:260svh}.message-portal-copy{font-size:clamp(42px,10vw,70px);bottom:30vw}}
@media(prefers-reduced-motion:reduce){.message-portal{height:90svh}.portal-wing{transform:none;will-change:auto}.message-portal-copy{clip-path:none;opacity:1;bottom:calc(50vw + 40px);transform:translateX(-50%)}}

/* Arrive at center, draw a base, then open the fan. */
.message-portal{height:340svh}.message-portal-frame{width:min(94vw,150svh);left:50%;bottom:42%;transform:translateX(-50%) translateY(var(--portal-arrival-y,48vh))}
.portal-base{position:absolute;left:50%;top:100%;width:100%;transform:translateX(-50%);opacity:var(--portal-art-opacity,1)}.portal-base i{display:block;height:1px;background:linear-gradient(90deg,transparent,#dba98b 18%,#dba98b 82%,transparent);margin:8px auto 0;transform:scaleX(var(--portal-base-draw,0));transform-origin:center;box-shadow:0 0 5px #c7785566}.portal-base i:nth-child(1){width:100%}.portal-base i:nth-child(2){width:82%}.portal-base i:nth-child(3){width:64%}
.message-portal-copy{font-family:Coconat,serif;font-weight:400;bottom:12%;top:auto;width:90%;font-size:clamp(36px,6.5vw,100px);line-height:1.12;letter-spacing:-.035em;z-index:2}
@media(max-width:700px){.message-portal{height:300svh}.message-portal-frame{width:94vw;bottom:45%}.message-portal-copy{font-size:clamp(32px,8vw,52px);bottom:10%}}
@media(prefers-reduced-motion:reduce){.message-portal{height:90svh}.message-portal-frame{transform:translateX(-50%)}.portal-base i{transform:none}.portal-wing-left{transform:rotate(-75deg)}.portal-wing-right{transform:rotate(75deg)}.message-portal-copy{opacity:1;bottom:12%}}

/* One complete drawing: artwork, base lengths, gaps and strokes scale together. */
.portal-drawing{position:absolute;inset:0;transform-origin:50% 65%;transform:scale(var(--portal-expansion,1));opacity:var(--portal-art-opacity,1);will-change:transform}
.portal-drawing .message-portal-art,.portal-drawing .portal-base{opacity:1}
@media(prefers-reduced-motion:reduce){.portal-drawing{transform:scale(2.5);will-change:auto}}
