/* v29 homepage motion: hero exit, chapter lines, reveal timing. Loaded last on the homepage.
   Chapter boundaries stay horizontal; diagonals are used only inside components and transitions. */
.page-home { --cut-ease: cubic-bezier(.16,1,.3,1); }

/* Hero: scroll exit reads from --hero-exit (0–1), written by home.js. */
.page-home .editorial-hero { --hero-exit: 0; position: relative; overflow: clip; }
.page-home .hero-loop { scale: calc(1 + var(--hero-exit) * .08); filter: brightness(calc(1 - var(--hero-exit) * .45)); }
.page-home .hero-name-wrap { position: relative; translate: 0 calc(var(--hero-exit) * -70px); }
.page-home :is(.hero-statement,.hero-meta,.hero-actions) { translate: 0 calc(var(--hero-exit) * -36px); }
.hero-slash { position: absolute; left: .08em; bottom: -.14em; width: min(58%, 260px); height: clamp(5px, .5vw, 8px); background: linear-gradient(90deg, var(--p3-cyan) 0 82%, transparent 82% 86%, #fff 86%); transform: skewX(-28deg); transform-origin: left; pointer-events: none; }
.hero-in .hero-slash { animation: hero-slash-in 640ms 440ms var(--cut-ease) both; }
html:not(.intro-managed).hero-in .hero-name span { display: inline-block; animation: hero-name-rise 680ms var(--cut-ease) both; }
html:not(.intro-managed).hero-in .hero-name span:nth-child(2) { animation-delay: 80ms; }
.hero-cue { position: absolute; left: 50%; bottom: 22px; width: 1px; height: 46px; background: #ffffff40; overflow: hidden; pointer-events: none; opacity: calc(1 - var(--hero-exit) * 4); }
.hero-cue i { position: absolute; inset: 0; background: var(--p3-cyan); transform: translateY(-100%); animation: hero-cue 1.6s 1.2s cubic-bezier(.65,0,.35,1) 4 both; }
.page-home .hero-actions :is(.button,.text-button) { background-image: linear-gradient(110deg, var(--p3-cyan) 0 46%, transparent 46.5%); background-size: 260% 100%; background-position: 100% 0; background-repeat: no-repeat; transition: background-position 380ms var(--cut-ease), color 200ms, border-color 200ms, transform 280ms var(--cut-ease); }
.page-home .hero-actions .button:hover, .page-home .hero-actions .text-button:hover { background-position: 0 0; color: #052b63; border-color: var(--p3-cyan); transform: none; }
.page-home .hero-actions .button--ink:hover { background-color: #fff; }
.page-home .hero-actions .button--paper:hover { background-color: #08274730; }
.page-home .hero-actions .button > span { transition: translate 280ms var(--cut-ease); }
.page-home .hero-actions .button--ink:hover > span { translate: 0 3px; }

/* Chapter lines: a straight cyan rule on each chapter's top edge, drawn by scroll (--edge-p, 0–1). */
.page-home :is(.about-section,.selected-section,.contact-finale) { position: relative; }
.section-edge { --edge-p: 0; position: absolute; z-index: 4; top: 0; left: 0; right: 0; height: 2px; background: var(--p3-cyan); transform: scaleX(var(--edge-p)); transform-origin: left; pointer-events: none; }
.section-edge--mirror { transform-origin: right; }

/* Chapter titles: split into characters by home.js, raised once on entry. */
.split-title { position: relative; }
.page-home .split-title > .split-char { display: inline-block; margin: 0; font: inherit; letter-spacing: inherit; color: inherit; }
.split-title.is-split:not(.is-in) .split-char { opacity: 0; }
.split-title.is-in .split-char { animation: split-rise 620ms var(--cut-ease) both; animation-delay: calc(var(--i) * 55ms); }
.split-title::after { content: ''; position: absolute; left: .05em; bottom: -.18em; width: 1.6em; height: 5px; background: var(--p3-cyan); transform: skewX(-28deg) scaleX(0); transform-origin: left; }
.split-title.is-in::after, .split-title:not(.is-split)::after { transform: skewX(-28deg) scaleX(1); }
.split-title.is-in::after { transition: transform 560ms 260ms var(--cut-ease); }

/* About: timed tab meter; view changes use the shared edge wipe (js/shared.js edgeWipe). */
.about-tab-meter { position: absolute; left: 0; right: 0; bottom: -1px; height: 2px; background: var(--p3-cyan); transform: scaleX(0); transform-origin: left; pointer-events: none; z-index: 1; }
.about-tabs button[aria-pressed="true"] .about-tab-meter { background: #0a4fc4; }
.about-tabs button { transition: translate 320ms var(--cut-ease); }
.about-tabs button:hover { translate: 0 -3px; }
.about-tabs button:hover .about-tab-image img { transform: scale(1.04); }

/* Featured reel: hover states for folded slices and the tour meter; the opened cover uses the edge wipe. */
.work-reel .featured-card:not(.reel-active):hover .featured-card__image { filter: saturate(.75) brightness(.85); }
.page-home .work-reel .featured-card .featured-card__media { position: relative; overflow: hidden; transition: box-shadow 300ms; }
.page-home .work-reel .featured-card:not(.reel-active):hover .featured-card__media { box-shadow: inset 0 3px 0 var(--p3-cyan); }
.page-home .work-reel .featured-card.reel-active .featured-card__media { box-shadow: inset 0 -3px 0 var(--p3-cyan); }
.reel-meter { grid-column: 1 / -1; display: block; height: 1px; margin-bottom: .4rem; background: #7dabbe33; overflow: hidden; }
.reel-meter i { display: block; height: 100%; background: var(--p3-cyan); transform: scaleX(0); transform-origin: left; }
.page-home .reel-detail { row-gap: .6rem; }

/* Contact: diagonal underline sweep on the secondary links. */
.contact-scene__socials a { background-image: linear-gradient(110deg, currentColor 0 50%, transparent 50.5%); background-size: 230% 1px; background-position: 100% 100%; background-repeat: no-repeat; transition: background-position 360ms var(--cut-ease); }
.contact-scene__socials a:hover, .contact-scene__socials a:focus-visible { background-position: 0 100%; text-decoration: none; }

@keyframes hero-slash-in { from { transform: skewX(-28deg) scaleX(0); } to { transform: skewX(-28deg) scaleX(1); } }
@keyframes hero-name-rise { from { clip-path: inset(100% 0 0); transform: translateY(40px); } to { clip-path: inset(0); transform: none; } }
@keyframes hero-cue { 0% { transform: translateY(-100%); } 55% { transform: translateY(0); } 100% { transform: translateY(100%); } }
@keyframes split-rise { from { opacity: 0; clip-path: inset(0 0 100%); transform: translateY(.45em) skewX(-8deg); } to { opacity: 1; clip-path: inset(-10% -10% -20%); transform: none; } }

@media (max-width: 999px) {
    .reel-meter { display: none; }
}
@media (max-width: 820px) {
    .hero-cue { display: none; }
}
@media (prefers-reduced-motion: reduce) {
    .page-home .editorial-hero { --hero-exit: 0 !important; }
    .hero-slash, .hero-cue i, .page-home .hero-name span, .split-title .split-char { animation: none !important; }
    .hero-cue i { transform: none; }
    .split-title .split-char { opacity: 1 !important; }
    .split-title::after { transform: skewX(-28deg) scaleX(1); transition: none !important; }
    .section-edge, .reel-meter { display: none; }
    .about-tabs button, .page-home .hero-actions :is(.button,.text-button), .contact-scene__socials a { transition: none; }
    .about-tabs button:hover { translate: none; }
}
@media print {
    .section-edge, .hero-cue { display: none; }
}
