/* Three printed scenes: a city, a dance floor, a page still to write. */
.story-copy{max-width:760px}
.story-beat{scroll-margin-top:35px}
.story-beat>p,.festival-beat-copy>p,.astro-intro>div>p,.astro-perspective>div>p{text-wrap:pretty}
.city-route{position:absolute;inset:0 0 auto;width:100%;height:28%;color:var(--story-accent);stroke:currentColor;stroke-width:1.5;overflow:visible}
.city-route circle{fill:var(--paper)}
.city-route-line{stroke-dasharray:1;stroke-dashoffset:0}
.city-destination{transform-origin:568px 34px}
.tea-moment{display:flex;align-items:center;gap:20px;margin-bottom:26px}
.story-beat .tea-moment .amsterdam-lead{margin:0;flex:1;font-size:clamp(27px,3.15vw,49px);line-height:1.16;letter-spacing:-.04em}
.tea-drawing{width:105px;flex-shrink:0;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;color:var(--story-accent)}
.tea-steam{stroke-width:1.3}
.astropolis{--astro-paper:#e8ebf7;--astro-dark:#17234c;--astro-accent:#dce7ab;--line:#17234c45;background:#c4cce8;color:var(--astro-dark);padding-bottom:90px}
.astropolis .project-meta{border-color:var(--line)}
.astro-heading{margin:66px 0 50px;padding-bottom:35px;border-bottom:1px solid var(--line)}
.astropolis .astro-heading h3{font-size:clamp(95px,17.3vw,280px);font-weight:700;letter-spacing:-.075em;line-height:.78;margin:0}
.astropolis .astro-heading h3>span{display:block;margin-left:23vw}
.astro-star{font-size:23vw;color:var(--astro-paper);right:6vw;top:-1vw;transform:rotate(var(--astro-turn,0deg))}
.astro-edition{position:absolute;bottom:42px;left:0;font-size:12px;line-height:1.7;max-width:22ch}
.astro-intro{display:grid;grid-template-columns:1fr 1fr;gap:8vw;margin-bottom:95px}
.astro-intro .astro-manifesto{font:500 clamp(34px,4.2vw,65px)/1.1 Arial,sans-serif;letter-spacing:-.045em;margin:0}
.astro-intro>div>p{font-size:18px;line-height:1.7;max-width:51ch;margin:0 0 23px}
.astro-intro .role{font:700 14px/1.6 'Courier New',monospace;letter-spacing:.01em;border-bottom:1px solid var(--line);padding-bottom:22px;margin-bottom:24px}
.astro-case-heading{border-top:2px solid currentColor;padding-top:25px;margin-bottom:58px}
.astro-case-heading>.micro{font-size:13px}
.astro-case-heading h4{font-size:clamp(43px,6.1vw,94px);font-weight:500;line-height:1.05;letter-spacing:-.055em;margin:35px 0 25px;max-width:22ch}
.astro-case-heading>p{font-size:19px;line-height:1.6;max-width:52ch;margin:0}
/* Real festival photographs, paired with the narrative. */
.festival-story,.festival-beats{display:block}
.festival-photo{margin:0;min-width:0}
.festival-photo-reveal{overflow:hidden;background:#17234c;isolation:isolate}
.festival-photo img{display:block;width:100%;height:auto;aspect-ratio:3/2;object-fit:cover}
.festival-photo figcaption{display:flex;justify-content:space-between;gap:20px;border-bottom:1px solid var(--line);padding:14px 0 18px;font:12px/1.6 'Courier New',monospace;letter-spacing:0}
.festival-photo figcaption>span:last-child{text-align:right;white-space:nowrap;font-size:10px;align-self:start}
.festival-opening{margin:0 0 58px}
.festival-opening img{aspect-ratio:2.15;object-position:50% 64%}
.festival-beat>.festival-photo{position:sticky;top:112px;align-self:start}
.festival-closing{width:76%;margin:15px 0 0 auto}
.festival-closing img{aspect-ratio:1.85;object-position:50% 57%}
.festival-photo-credit{font:12px/1.6 'Courier New',monospace;text-align:right;margin:15px 0 50px}
.festival-beat{display:grid;grid-template-columns:1.05fr 1fr;gap:7vw;align-items:start;padding:8px 0 65px;margin-bottom:45px;border-bottom:1px solid var(--line)}
.festival-beat:last-child{margin-bottom:0}
.festival-beat-copy>.micro{display:block;font-size:13px;font-weight:700;margin-bottom:30px}
.festival-beat h5{font-size:clamp(33px,3.8vw,58px);font-weight:500;line-height:1.08;letter-spacing:-.04em;margin:0 0 30px}
.festival-beat-copy>p{font-size:18px;line-height:1.75;margin:0 0 24px;max-width:51ch}
.festival-margin-note{border-left:2px solid currentColor;padding:3px 0 3px 20px;margin-top:35px}
.festival-margin-note>span{font:11px/1.6 'Courier New',monospace;display:block;margin-bottom:10px}
.festival-margin-note>strong{font-size:20px;font-weight:400;line-height:1.4;letter-spacing:-.025em}
.astro-perspective{display:grid;grid-template-columns:1.05fr 1fr;column-gap:7vw;margin:70px 0 65px;border-top:2px solid currentColor;padding-top:27px}
.astro-perspective>.micro{grid-column:1/-1;font-size:13px;margin-bottom:35px}
.astro-perspective>p{font-size:clamp(40px,5vw,76px);line-height:1.04;letter-spacing:-.05em;margin:0}
.astro-perspective>div>p{font-size:18px;line-height:1.75;max-width:51ch;margin:0 0 23px}
.astropolis .project-learning{grid-template-columns:1.05fr 1fr;gap:7vw}
.astropolis .project-learning>p{font-size:clamp(26px,2.8vw,43px);max-width:28ch}
/* The final invitation stays readable while only the pencil follows the scroll. */
.contact{--pencil-ink:#88422f;background:#f1efe7}
.contact-invitation{position:relative;margin:85px 0 50px}
.contact-preface{font:15px/1.6 'Courier New',monospace;display:block;margin-bottom:35px}
.contact .contact-invitation h2{font:500 clamp(49px,8.3vw,134px)/1.03 Arial,sans-serif;letter-spacing:-.065em;margin:0;max-width:17ch;text-wrap:balance}
.contact .contact-invitation h2 em{font-family:Georgia,serif;font-size:1em;font-weight:400;color:var(--pencil-ink)}
.pencil-scene{margin:6px 0 0;width:100%;overflow:hidden}
.pencil-scene svg{display:block;width:100%;height:auto;overflow:visible}
.pencil-guide{stroke:#88422f25;stroke-width:1;stroke-dasharray:2 8}
.pencil-stroke{stroke:var(--pencil-ink);stroke-width:3;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:0}
.writing-pencil{stroke:#302923;stroke-width:1.2;stroke-linejoin:round}
.pencil-body{fill:#d49b75}.pencil-wood{fill:#e6c8a1}.pencil-point{fill:#302923}
.pencil-edge{stroke:#30292370}.pencil-ferrule{fill:#b1aca0}.pencil-eraser{fill:#e4a0ad}
.contact-prompt{font-size:18px;line-height:1.6;margin:12px 0 0;max-width:45ch}
.contact-row{padding:30px 0}.contact-row .text-link{min-height:44px;display:flex;align-items:center}
@media(prefers-reduced-motion:no-preference){
 .story.motion-ready .city-route-line{stroke-dashoffset:calc(1 - var(--postcard-progress,1))}
 .story.motion-ready .city-destination{opacity:var(--postcard-progress,1);transform:scale(var(--postcard-progress,1))}
 .tea-drawing .tea-steam{transform:translateY(var(--steam-y,0px));opacity:var(--steam-opacity,1)}
 .festival-beat-copy.is-revealed h5{animation:chapter-heading .7s var(--ease-out) both}
 @keyframes chapter-heading{from{transform:translateY(16px);opacity:.65}to{transform:none;opacity:1}}
}
@media(min-width:751px) and (max-width:1050px){.festival-beat{gap:5vw;grid-template-columns:1fr 1fr}.festival-beat-copy>p,.astro-intro>div>p,.astro-perspective>div>p{font-size:17px}.astro-edition{font-size:10px}.tea-drawing{width:80px}}
@media(max-width:750px){
 .tea-moment{gap:10px}.tea-drawing{width:68px}.story-beat .tea-moment .amsterdam-lead{font-size:clamp(25px,5.4vw,37px)}
 .astro-heading{margin:55px 0 35px;padding-bottom:65px}
 .astropolis .astro-heading h3{font-size:23vw;line-height:.8}.astropolis .astro-heading h3>span{margin-left:21vw}.astro-star{font-size:32vw;right:1vw;top:-6vw}
 .astro-edition{font-size:10px;bottom:0;max-width:none;line-height:1.5}.astro-edition br{display:none}
 .astro-intro{grid-template-columns:1fr;gap:30px;margin-bottom:50px}.astro-intro .astro-manifesto{font-size:42px}.astro-intro>div>p{font-size:17px;line-height:1.7}.astro-intro .role{font-size:13px}
 .astro-case-heading{padding-top:22px;margin-bottom:32px}.astro-case-heading h4{font-size:clamp(35px,8.8vw,58px);margin:26px 0 22px}.astro-case-heading>p{font-size:17px}.astro-case-heading>p>br{display:none}.astro-case-heading>.micro{font-size:11px}
 .festival-beat{display:block;padding:0 0 35px;margin-bottom:36px}.festival-beat-copy>.micro{font-size:12px;margin-bottom:25px}.festival-beat h5{font-size:37px;margin-bottom:25px}.festival-beat-copy>p{font-size:17px;line-height:1.75}.festival-margin-note{margin-top:27px}.festival-margin-note>strong{font-size:19px}
 .astro-perspective{display:block;margin:45px 0}.astro-perspective>.micro{display:block;font-size:12px;margin-bottom:26px}.astro-perspective>p{font-size:45px;margin-bottom:30px}.astro-perspective>div>p{font-size:17px}.astropolis .project-learning{grid-template-columns:1fr;gap:25px}.astropolis .project-learning>p{font-size:29px}
 .contact-invitation{margin:50px 0 38px}.contact-preface{font-size:13px;margin-bottom:26px}.contact .contact-invitation h2{font-size:clamp(43px,10.5vw,73px);line-height:1.08;letter-spacing:-.055em}.pencil-scene{width:108%;margin-left:-4%;margin-top:20px}.pencil-stroke{stroke-width:4}.contact-prompt{font-size:16px;margin-top:20px;max-width:27ch}.contact-row{padding:23px 0}
}
@media(max-width:360px){.festival-beat h5{font-size:33px}.tea-drawing{width:50px}}
@media(prefers-reduced-motion:reduce){.city-route-line,.pencil-stroke{stroke-dashoffset:0!important}.city-destination{opacity:1!important;transform:none!important}.tea-steam{transform:none!important}.tea-steam{opacity:1!important}}
@media print{.festival-beat{display:block}.festival-beat>.festival-photo{position:static}.festival-photo{break-inside:avoid}.festival-beat{break-inside:avoid}.pencil-stroke{stroke-dashoffset:0!important}.astropolis{background:white;color:black}.contact-invitation{margin:25px 0}.astro-heading h3{font-size:60px!important}.astro-star{display:none}.astro-edition{position:static}.astro-heading h3>span{margin-left:0!important}}

.astro-enter{margin-top:32px;display:inline-flex;align-items:center;gap:24px;min-height:44px;border-bottom:1px solid currentColor;font-size:12px}.astro-enter span{font:28px/1 Arial,sans-serif}.festival-story{scroll-margin-top:110px}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

@media(prefers-reduced-motion:no-preference){
 .festival-photo.photo-ready .festival-photo-reveal{opacity:0;transform:translateY(18px);transition:opacity .85s ease,transform 1s cubic-bezier(.22,1,.36,1)}
 .festival-photo.photo-ready img{transform:scale(1.018);transition:transform 1.3s cubic-bezier(.22,1,.36,1)}
 .festival-photo.photo-visible .festival-photo-reveal{opacity:1;transform:none}
 .festival-photo.photo-visible img{transform:none}
}
@media(max-width:1050px){.festival-photo figcaption{display:block}.festival-photo figcaption>span{display:block}.festival-photo figcaption>span:last-child{text-align:left;margin-top:5px}}
@media(max-width:750px){.festival-opening{margin-bottom:36px}.festival-opening img{aspect-ratio:3/2}.festival-beat>.festival-photo{position:static;margin:0 0 33px}.festival-photo figcaption{font-size:11px;padding:12px 0 15px}.festival-closing{width:100%;margin-top:5px}.festival-closing img{aspect-ratio:3/2}.festival-photo-credit{font-size:11px;text-align:left;margin-bottom:35px}}
@media print{.festival-photo.photo-ready .festival-photo-reveal{opacity:1!important;transform:none!important}.festival-photo img{transform:none!important}}

/* Voltface: the ticket opens a readable account of the first freelance role. */
.booking-ticket{margin-bottom:80px}
.booking-ticket-label{display:block;font-size:13px;letter-spacing:.045em;margin-bottom:32px}
.booking-ticket .ticket-info .role{font-size:clamp(23px,2.8vw,40px);letter-spacing:-.04em;line-height:1.2}
.booking-ticket .ticket-bottom{border-top:1px solid var(--line);padding-top:24px;gap:24px;line-height:1.6}
.booking-intro,.booking-roster,.booking-chapter{display:grid;grid-template-columns:1fr 1.2fr;gap:8vw;align-items:start}
.booking-intro{margin:70px 0 65px}
.booking-intro h4,.booking-roster h4,.booking-chapter h4{font-size:clamp(34px,4.1vw,64px);font-weight:500;line-height:1.07;letter-spacing:-.045em;margin:24px 0}
.booking-intro .micro,.booking-roster .micro,.booking-chapter .micro,.booking-afterword>.micro{font-size:13px;line-height:1.6;display:block}
.booking-intro>div>p,.booking-chapter-copy>p,.booking-afterword>div>p{font-size:18px;line-height:1.75;max-width:54ch;margin:0 0 24px;text-wrap:pretty}
.booking-roster{padding:35px 0 45px;border-block:1px solid var(--ink);margin-bottom:70px}
.booking-roster>div>p{font-size:17px;line-height:1.7;max-width:40ch;margin:24px 0 0}
.booking-roster ul{list-style:none;margin:0;padding:0}
.booking-roster li{display:flex;align-items:baseline;gap:30px;padding:18px 0;border-bottom:1px solid var(--line)}
.booking-roster li:first-child{padding-top:0}.booking-roster li:last-child{border-bottom:0;padding-bottom:0}
.booking-roster li>span{font:12px/1.5 'Courier New',monospace}
.booking-roster strong{font-size:clamp(38px,4.8vw,74px);font-weight:500;line-height:1.05;letter-spacing:-.055em}
.booking-chapter{padding:0 0 55px;margin:0 0 45px;border-bottom:1px solid var(--line)}
.booking-chapter-heading{position:sticky;top:115px}
.booking-chapter h4{margin-bottom:35px}
.booking-pullquote{font-size:clamp(23px,2.4vw,35px);line-height:1.3;letter-spacing:-.03em;margin:0;max-width:25ch;border-left:2px solid currentColor;padding-left:22px}
.booking-afterword{display:grid;grid-template-columns:1fr 1.2fr;gap:30px 8vw;padding:20px 0 40px}
.booking-afterword>.micro{grid-column:1/-1}
.booking-afterword-title{font-size:clamp(31px,3.5vw,53px);line-height:1.12;letter-spacing:-.04em;margin:0}
.booking-afterword .text-link{display:inline-flex;align-items:center;gap:22px;min-height:44px;margin-top:5px}
.booking-afterword .text-link>span{font-size:28px}
.booking-learning-copy>p:first-child{font-size:clamp(26px,2.7vw,42px);line-height:1.3;letter-spacing:-.035em;margin:0 0 24px}
.booking-learning-copy>p:last-child{font-size:18px;line-height:1.7;margin:0;max-width:48ch}
@media(max-width:750px){
 .booking-ticket{margin-bottom:45px}.booking-ticket-label{font-size:11px;line-height:1.7;margin-bottom:25px;max-width:24ch}.booking-ticket .ticket-info{gap:10px}.booking-ticket .ticket-info .role{font-size:25px;margin-bottom:12px}.booking-ticket .ticket-bottom{font-size:10px;gap:10px}
 .booking-intro,.booking-roster,.booking-chapter,.booking-afterword{grid-template-columns:1fr;gap:26px}
 .booking-intro{margin:45px 0}.booking-intro h4,.booking-roster h4,.booking-chapter h4{font-size:37px;margin:22px 0 0}
 .booking-intro .micro,.booking-roster .micro,.booking-chapter .micro,.booking-afterword>.micro{font-size:12px}
 .booking-intro>div>p,.booking-chapter-copy>p,.booking-afterword>div>p{font-size:17px;line-height:1.75;margin-bottom:22px}
 .booking-roster{padding:28px 0 32px;margin-bottom:42px;gap:32px}.booking-roster>div>p{font-size:17px}.booking-roster strong{font-size:46px}.booking-roster li{padding:15px 0}
 .booking-chapter{padding-bottom:35px;margin-bottom:35px}.booking-chapter-heading{position:static}.booking-pullquote{font-size:24px;margin-top:26px;padding-left:17px}
 .booking-afterword{padding:10px 0 30px;gap:24px}.booking-afterword-title{font-size:34px}.booking-afterword>.micro{grid-column:auto}.booking-afterword .text-link{font-size:12px}
 .booking-learning-copy>p:first-child{font-size:29px}.booking-learning-copy>p:last-child{font-size:17px}
}
@media print{.booking-chapter-heading{position:static}.booking-ticket{transform:none}.booking-chapter{break-inside:avoid}.booking-intro,.booking-roster,.booking-chapter,.booking-afterword{display:block}}
