/* Signal / Structure — motion is tied to the meaning of each composition. */
.type-line{display:block;overflow:clip;padding-bottom:.13em;margin-bottom:-.13em}
.type-line>span{display:block;transform-origin:0 100%}
.motion-enabled .hero-heading .type-line>span{animation:line-arrive 1.1s var(--ease) both}
.motion-enabled .hero-heading .type-line:nth-child(2)>span{animation-delay:.12s}
@keyframes line-arrive{from{transform:translateY(108%) rotate(2deg)}to{transform:translateY(0) rotate(0)}}
.motion-enabled .section-heading h2 .type-line>span,.motion-enabled .about h2 .type-line>span,.motion-enabled .contact h2 .type-line>span{transform:translateY(calc((1 - var(--title-reveal,1))*90%));transition:transform .12s linear}
.motion-enabled .section-heading h2 .type-line:nth-child(2)>span,.motion-enabled .about h2 .type-line:nth-child(2)>span{transform:translateY(calc((1 - var(--title-reveal,1))*115%))}
.hero-art{border-radius:var(--hero-radius,3px);transform:translateZ(0)}
.motion-enabled .art-image{transform:translateY(var(--hero-shift)) scale(var(--hero-scale,1.03))}
.art-topline:after{content:'';width:70px;height:1px;background:#e7d6c8;position:absolute;top:28px;left:0;transform:scaleX(var(--hero-line,1));transform-origin:left}
.project-index a{transition:color .3s,translate .35s var(--ease)}
.project-index a:hover{translate:0 -3px}
.story-copy .story-beat>p:not(.eyebrow):not(.beat-label):not(.contribution-note){font-size:14px;color:var(--muted);margin-top:20px;line-height:1.8}
.story-copy .story-beat .project-lead{font-size:18px!important;color:var(--ink)!important;line-height:1.65!important}
.story-copy .story-beat>h3{margin-bottom:28px}
.story-copy .story-beat>h4{font-size:clamp(28px,2.5vw,39px);letter-spacing:-.04em;line-height:1.15;margin-bottom:22px}
.story-copy .story-beat .contribution-note{font-size:10px;color:var(--muted);margin-top:24px}
.beat-label{font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--copper);margin-bottom:22px}
.story-beat+.story-beat{border-top:1px solid var(--line);padding-top:35px;margin-top:45px}
.story-copy .project-facts{margin-top:28px}
.story-copy .project-facts>div{border:0;padding:0}
.story-transport{display:none;justify-content:space-between;align-items:center;position:relative;margin:0 25px;padding:12px 0 14px;font-size:9px;border-bottom:1px solid #b3bdac;color:#4b5744}
.narrative-scroll .story-transport{display:flex}
.follow-scroll{padding:6px 0;background:none;font-size:10px;text-decoration:underline;text-underline-offset:4px}
.story-meter{position:absolute;bottom:-1px;left:0;right:0;height:2px;background:#697b5b;transform:scaleX(var(--story-progress,0));transform-origin:left}
.retrieval-visual{isolation:isolate;background:linear-gradient(130deg,#e4e9dc,#d1d9c8);border:1px solid #cbd4c2}
.retrieval-stack{margin-top:18px;height:278px}
.knowledge-orbit{position:absolute;inset:-5px 0 0;border:1px solid #8c9a7d40;border-radius:50%;transform:rotate(-18deg);pointer-events:none}
.knowledge-orbit:after{content:'';position:absolute;inset:25px -22px;border:1px solid #8c9a7d40;border-radius:50%;transform:rotate(34deg)}
.knowledge-orbit span{position:absolute;font-size:7px;letter-spacing:.1em;color:#526348;background:#dce3d4;padding:4px 6px;z-index:1}
.knowledge-orbit span:nth-child(1){top:15%;left:0}.knowledge-orbit span:nth-child(2){right:0;top:45%}.knowledge-orbit span:nth-child(3){bottom:-8px;left:32%}
.archive-sheet{transition:transform 1s var(--ease),box-shadow 1s var(--ease),opacity .6s;will-change:auto}
.sheet-back{transform:translateX(-50%) rotate(-16deg) translate(-35px,-2px)}
.sheet-middle{transform:translateX(-50%) rotate(11deg) translate(28px,15px)}
.sheet-front,.retrieval-visual:hover .sheet-front{transform:translateX(-50%) rotate(-5deg) translate(0,44px)}
.retrieval-visual[data-step="1"] .sheet-back{transform:translateX(-50%) rotate(0) translate(-18px,-8px)}
.retrieval-visual[data-step="1"] .sheet-middle{transform:translateX(-50%) rotate(0) translate(-9px,8px)}
.retrieval-visual[data-step="1"] .sheet-front{transform:translateX(-50%) rotate(0) translate(0,26px)}
.retrieval-visual[data-step="2"] .sheet-back{transform:translateX(-50%) rotate(-8deg) translate(-48px,8px);opacity:.5}
.retrieval-visual[data-step="2"] .sheet-middle{transform:translateX(-50%) rotate(8deg) translate(40px,14px);opacity:.6}
.retrieval-visual[data-step="2"] .sheet-front{transform:translateX(-50%) rotate(0) translate(0,42px) scale(.94);box-shadow:0 20px 35px #34412b28}
.retrieval-visual[data-step="3"] .sheet-back{transform:translateX(-50%) rotate(-3deg) translate(-10px,-8px)}
.retrieval-visual[data-step="3"] .sheet-middle{transform:translateX(-50%) rotate(3deg) translate(8px,8px)}
.retrieval-visual[data-step="3"] .sheet-front{transform:translateX(-50%) rotate(0) translate(0,22px)}
.retrieval-query{position:absolute;z-index:5;top:-8px;left:50%;width:96%;max-width:370px;transform:translate(-50%,-12px);opacity:0;background:#303c2a;color:#f7f6ef;padding:15px 17px;box-shadow:0 8px 24px #26311e22;font-size:11px;display:flex;justify-content:space-between;transition:transform .8s var(--ease),opacity .5s}
.retrieval-visual[data-step="2"] .retrieval-query{transform:translate(-50%,0);opacity:1}
.source-receipt{position:absolute;z-index:6;bottom:3px;right:5%;padding:13px 17px;background:#f8f8ee;border:1px solid #6e805f;color:#35472d;box-shadow:0 8px 20px #34412b15;font-size:10px;opacity:0;transform:translateY(18px) rotate(3deg);transition:transform .8s var(--ease),opacity .5s}
.source-receipt>span{margin-right:12px}.retrieval-visual[data-step="3"] .source-receipt{opacity:1;transform:translateY(0) rotate(-2deg)}
.source-thread:before{transform:scaleX(calc(.15 + var(--story-progress,0)*.85));transform-origin:left;transition:transform .5s}
.retrieval-visual[data-step="3"] .source-thread:before{transform:scaleX(1)}
.retrieval-demo{margin-top:28px}.step-panel{animation:none;min-height:145px}
.step-panel:not([hidden])>p:not(.micro){animation:detail-in .5s var(--ease)}
.pipeline-track{display:flex;align-items:center;gap:14px;font-size:10px;margin:5px 25px 8px;color:#646257}
.pipeline-track i{height:1px;flex:1;background:#a9a598;position:relative}
.pipeline-track i:after{content:'';position:absolute;inset:0;background:#905331;transform:scaleX(0);transform-origin:left;transition:transform .7s var(--ease)}
.pipeline-track button{background:none;padding:10px 0;font-size:10px;transition:color .5s;min-height:40px}.pipeline-track button[aria-pressed="true"]{color:#653a21;font-weight:600}
[data-story-phase="1"] .pipeline-track i:first-of-type:after,[data-story-phase="2"] .pipeline-track i:after{transform:scaleX(1)}

.publishing-visual{background:linear-gradient(145deg,#e4ded1,#d3ccbc);border:1px solid #c9c2b2}
.crop-stage{height:350px;perspective:1200px;margin-top:12px;isolation:isolate}
.crop-window{position:relative;z-index:2;transform:translate(0,0) rotate(-3deg);transition:width .95s var(--ease),aspect-ratio .95s var(--ease),transform 1s var(--ease),box-shadow 1s var(--ease)}
.crop-window img{transition:transform 1.2s var(--ease)}
[data-story-phase="1"] .crop-window{transform:translate(12px,0) rotate(3deg)}
[data-story-phase="1"] .crop-window img{transform:scale(1.06)}
[data-story-phase="2"] .crop-window{transform:translate(-13px,-12px) rotate(0);box-shadow:0 25px 45px #36332630}
.source-frame{position:absolute;left:4%;top:15%;width:61%;background:#eee9dd;padding:8px;transform:rotate(-9deg) translate(-7px,10px);opacity:0;transition:transform 1s var(--ease),opacity .7s;z-index:1}
.source-frame span{display:block;font-size:7px;padding:8px 0 2px;letter-spacing:.06em}.source-frame img{width:100%;aspect-ratio:4/3;object-fit:cover}
[data-story-phase="1"] .source-frame{transform:rotate(-11deg) translate(-9px,-6px);opacity:.8}
.review-label{position:absolute;z-index:3;bottom:10%;right:0;width:195px;padding:16px 18px;background:#f7f4eb;border:1px solid #b9ae99;box-shadow:0 8px 24px #36332615;transform:translateY(24px) rotate(4deg);opacity:0;transition:transform .85s var(--ease),opacity .6s}
.review-label>span{display:block;text-transform:uppercase;font-size:8px;letter-spacing:.07em;color:#77543c}.review-label strong{font-weight:400;font-family:Instrument,serif;font-size:23px;display:block;margin:10px 0 8px}.review-label small{font-size:8px}
[data-story-phase="2"] .review-label{transform:translateY(0) rotate(-2deg);opacity:1}
.publishing-visual .story-transport{border-color:#b7ae99;color:#62543f}.publishing-visual .story-meter{background:var(--copper)}
.crop-explanation{min-height:72px}.publishing-visual .visual-footnote{margin-top:0}
.motion-enabled .music-art>img{transform:translateY(var(--sleeve-y,0px)) rotate(var(--sleeve-angle,-9deg));transition:none}
.motion-enabled .record-disc{transform:translateX(var(--record-x,0px)) rotate(var(--record-angle,18deg));transition:filter .5s}
.music-art:hover .record-disc{right:-9%;filter:brightness(1.15)}
.experience{position:relative;clip-path:inset(0 var(--experience-inset,0px) round var(--experience-radius,0px))}
.workshop{position:relative}.motion-enabled .workshop>img{clip-path:inset(0 var(--photo-inset,0%) 0);transform:translateY(var(--photo-y,0px))}
.workshop figcaption{position:relative}
.motion-enabled .contact-arrow{transform:rotate(var(--contact-turn,0deg))}
.contact-arrow:hover span{transform:translate(5px,-5px)}
@media(min-width:901px) and (min-height:700px){
 .narrative-scroll .project-visual{position:sticky;top:98px}
 .narrative-scroll .story-beat{min-height:370px;padding-bottom:70px;display:flex;flex-direction:column;justify-content:center}
 .narrative-scroll .story-beat:first-child{justify-content:flex-start;min-height:450px}
 .narrative-scroll .story-beat+.story-beat{margin-top:0;padding-top:55px}
 .narrative-scroll .story-beat:last-child{min-height:570px;padding-bottom:15px}
 .narrative-scroll .project-publishing .story-beat{min-height:460px}
 .narrative-scroll .project-publishing .story-beat:last-child{min-height:570px}
 .narrative-scroll .project{gap:7%;grid-template-columns:1.12fr 1fr}
 .narrative-scroll .project-publishing{grid-template-columns:1fr 1.12fr}
 .project-visual{border-radius:3px}
}
@media(min-width:901px) and (min-height:700px) and (max-height:850px){
 .narrative-scroll .retrieval-stack{height:196px;margin-top:8px;margin-inline:38px}
 .narrative-scroll .archive-sheet{height:177px;max-width:285px;padding:16px 22px}
 .narrative-scroll .sheet-front p{font-size:20px;margin-top:18px}.narrative-scroll .sheet-front p em{font-size:26px}
 .narrative-scroll .source-thread{margin-top:14px}.narrative-scroll .sheet-front small{margin-top:10px;font-size:7px}
 .narrative-scroll .retrieval-demo{margin-top:31px}.narrative-scroll .step-panel{min-height:123px;padding-top:16px}
 .narrative-scroll .visual-caption{padding-block:17px;font-size:9px}
 .narrative-scroll .visual-footnote{padding-block:12px;font-size:8px}
 .narrative-scroll .crop-stage{height:270px}.narrative-scroll .publishing-visual{--crop-height:235px}
 .narrative-scroll .crop-controls{margin-top:12px}.narrative-scroll .crop-explanation{min-height:64px;padding-top:18px}
 .narrative-scroll .review-label{bottom:8%;width:175px;padding:13px}
}
@media(max-width:900px),(max-height:699px){
 .project-visual{position:relative;top:0}.story-beat+.story-beat{padding-top:28px;margin-top:32px}
 .story-copy .story-beat>h4{font-size:29px}.story-copy .story-beat>p:not(.eyebrow):not(.beat-label):not(.contribution-note){font-size:14px}
 .knowledge-orbit{inset:5px 12px 0}.story-copy .story-beat>h3{margin-bottom:22px}
 .crop-window{transform:none}.retrieval-query{font-size:10px}
}
@media(min-width:801px) and (max-width:900px){.project{grid-template-columns:1fr;gap:40px}.project-publishing .project-visual{grid-row:1}.project-copy{max-width:640px}.project-visual{max-width:640px;margin:auto;width:100%}}
@media(max-width:560px){
 .retrieval-stack{height:246px;margin-top:15px}.retrieval-demo{margin-top:32px}
 .visual-caption{font-size:8px;gap:18px;line-height:1.5}.visual-caption span:first-child{max-width:24ch}
 .archive-sheet{width:76%}.sheet-back{transform:translateX(-50%) rotate(-12deg) translate(-20px,-2px)}.sheet-middle{transform:translateX(-50%) rotate(8deg) translate(20px,15px)}
 .source-receipt{right:0;font-size:9px;padding:11px}.retrieval-query{top:-4px;font-size:9px;padding:12px}
 .pipeline-track{margin-inline:18px;gap:11px;font-size:9px}.crop-stage{height:270px;margin-top:10px}
 .review-label{width:157px;bottom:9%;padding:12px}.review-label strong{font-size:21px}.review-label small{font-size:7px}
 .story-copy .story-beat>h4{font-size:30px}.story-copy .story-beat .project-lead{font-size:17px!important}
 .experience{clip-path:none}.motion-enabled .music-art>img{transition:none}
}
@media(prefers-reduced-motion:reduce){
 .type-line>span{transform:none!important}.experience,.workshop>img{clip-path:none!important;transform:none!important}
}
html.motion-paused .type-line>span{transform:none!important}html.motion-paused .experience,html.motion-paused .workshop>img{clip-path:none!important;transform:none!important}
/* Anchor spacing is additive with the document's scroll padding. */
.project,.music-feature{scroll-margin-top:12px}
.source-frame{width:48%;max-width:230px;top:10%;pointer-events:none}
.review-label,.retrieval-query,.source-receipt,.archive-sheet{pointer-events:none}

.project-visual{position:relative;top:0}
.narrative-scroll .project-visual{position:sticky;top:98px}
@media(max-width:900px){.pipeline-track button{min-height:44px}.retrieval-visual .demo-tabs button{min-height:52px}}
