/* Shared reading hierarchy; loaded after the page-specific compositions. */
.site-header .desktop-nav a, .site-header .header-contact, .mobile-nav a { font-size: 1rem; letter-spacing: 0; }
.site-footer { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 1rem 2rem; font-size: .875rem; line-height: 1.6; letter-spacing: 0; }
.site-footer a, .button, .text-button, .media-dialog__bar button, .lightbox-close, .lightbox-fit { font-size: 1rem; letter-spacing: 0; }
.tag-row span, .load-error, .project-loading, .project-not-found > span { font-size: 1rem; line-height: 1.6; letter-spacing: 0; }
.media-dialog__bar strong { font-size: 1.125rem; }
.site-intro__skip, .site-intro__waiting { font-size: .875rem; letter-spacing: 0; }
.intro-caption span { letter-spacing: .08em; padding-left: .08em; }
.page-home .hero-name { font-size: clamp(3.5rem,7.5vw,8rem); line-height: 1.1; }
.page-home .hero-statement p { font: 500 clamp(1.125rem,1.8vw,1.5rem)/1.5 var(--sans); margin: 0; letter-spacing: 0; color: #fff; }
.page-home .hero-meta { font: 400 1rem/1.6 var(--sans); color: #e0edf6; letter-spacing: 0; }
.page-home .hero-actions { gap: 1rem; }
.page-home .about-header h2, .page-home .selected-heading h2 { font: 650 clamp(2rem,4vw,4rem)/1.2 var(--sans); letter-spacing: -.025em; }
.page-home .selected-heading::after { display: none; }
.page-home .selected-heading { margin-bottom: 2rem; }
.about-heading { display: block; }
.about-resume, .about-variants button, .about-pause, .about-tabs strong, .page-home .work-index button, .page-home .reel-controls [data-reel-pause] { font-size: 1rem; letter-spacing: 0; }
.about-stage-bar { justify-content: flex-start; font-size: .875rem; letter-spacing: 0; min-height: 40px; color: #e0efff; }
.about-tab-caption { grid-template-columns: 1fr; padding-inline: .75rem; }
.about-project-link h3, .reel-title { font-size: clamp(1.25rem,2vw,1.75rem); line-height: 1.5; }
.about-caption { gap: .75rem 1.5rem; }
.about-transport { grid-template-columns: 1fr auto; }
.featured-card__preview-label { font-size: .875rem; letter-spacing: 0; }
.page-home .work-index { gap: 1.5rem; }
.contact-scene__title { top: 22%; font: 650 clamp(3.5rem,10vw,10rem)/1.15 var(--sans); letter-spacing: -.04em; }
.contact-scene__email { top: 58%; }
.contact-scene__email strong { font-size: clamp(1.75rem,4.5vw,4.5rem); line-height: 1.3; }
.contact-scene__socials a { font-size: 1rem; }
.archive-hero { min-height: 0; padding-block: clamp(3rem,6vw,5rem); gap: 1.5rem; align-items: end; }
.archive-hero h1 { font: 650 clamp(2.75rem,6vw,5.5rem)/1.15 var(--sans); letter-spacing: -.035em; }
.archive-hero__side { align-self: end; padding-bottom: .3rem; }
.archive-hero__side > span { display: flex; align-items: baseline; gap: .5rem; }
.archive-hero__side strong { font-size: 1.25rem; }
.archive-hero__side span, .archive-search > span, .archive-result-meta span { font-size: 1rem; letter-spacing: 0; }
.archive-toolbar { gap: 2rem; }
.archive-search { flex: 1; min-width: 0; }
.archive-search input { font-size: 1rem; }
.category-filter { flex-wrap: wrap; gap: .5rem; }
.category-filter button { font-size: 1rem; letter-spacing: 0; padding: .65rem 1rem; }
.category-filter button span { font-size: .875rem; }
.archive-card__category { font-size: .875rem; letter-spacing: 0; padding: .4rem .65rem; }
.archive-card__body { padding: 1.25rem 0 1.5rem; }
.archive-card__body h2 { font: 600 clamp(1.25rem,1.8vw,1.6rem)/1.5 var(--sans); letter-spacing: -.015em; }
.archive-card__body p { font: 400 1rem/1.7 var(--sans); color: #3e5c74; margin-top: .65rem; max-width: 44em; }
.page-project .project-hero__top { font-size: 1rem; letter-spacing: 0; }
.page-project .project-hero__title > p { font-size: 1rem; line-height: 1.6; letter-spacing: 0; color: #3e5c74; }
.page-project .project-hero__summary > p { font-size: 1.0625rem; line-height: 1.7; color: #304e68; }
.page-project .project-hero__summary .project-action { font-size: 1rem; line-height: 1.6; }
.page-project .project-hero__media > span { font-size: .875rem; line-height: 1.6; letter-spacing: 0; color: #3e5c74; }
.page-project .project-notes { grid-template-columns: 1fr; gap: 1.25rem; padding-block: 3rem; }
.page-project .project-notes h2, .page-project .project-section-heading h2 { font: 600 1.5rem/1.5 var(--sans); color: var(--ink); }
.page-project .project-notes__body { grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: 3rem; }
.page-project .project-notes__intro, .page-project .project-feature-list p { font: 400 1rem/1.75 var(--sans); color: #304e68; }
.page-project .project-feature-list { padding-left: 1.1rem; list-style: disc; }
.page-project .project-feature-list li { display: list-item; padding: 0 0 .75rem .3rem; }
.page-project .project-feature-list li::marker { color: #0061c6; }
.page-project .project-carousel__slide figcaption strong, .page-project .project-carousel__slide figcaption span { font: 400 1rem/1.6 var(--sans); color: #304e68; }
.page-project .project-carousel__controls button { font-size: 1rem; }
.page-project .project-carousel__controls span, .page-project .project-carousel__controls strong, .project-gallery__main > div { font-size: .875rem; }
.page-project .related-card h3 { font-size: 1.125rem; line-height: 1.5; margin-top: .75rem; }
.document-reader__header { flex-wrap: wrap; gap: .75rem 1rem; }
.document-reader__heading h2 { font-size: 1.125rem; white-space: normal; overflow-wrap: anywhere; }
.document-reader__header a, .document-reader button, .document-reader__controls, .document-reader__controls button, .document-reader__controls select { font-size: 1rem; }
.document-reader__controls { flex-wrap: wrap; padding-block: .5rem; gap: .5rem; }
.document-reader__pagination { flex-wrap: wrap; }
.document-reader__controls select { max-width: 9rem; }
.document-reader__page figcaption, .document-reader__page:not(.is-loaded):not(.has-error)::before { font-size: .875rem; line-height: 1.5; color: #3e5c74; }
@media screen {
    .resume-hero { min-height: 0; padding-block: 3rem; align-items: center; }
    .resume-hero__back { grid-column: 1/-1; width: fit-content; font-size: 1rem; }
    .resume-hero__profile p, .resume-hero__profile span { font-size: 1rem; }
    .resume-sidebar h2 { font-size: 1.125rem; letter-spacing: 0; margin-bottom: 1rem; }
    .resume-sidebar p, .resume-contact-list, .resume-sidebar .resume-sidebar__lead { font-size: 1rem !important; line-height: 1.75; }
    .resume-contact-list dt { font-size: .875rem; }
    .resume-contact-list dd { overflow-wrap: anywhere; }
    .resume-side-link, .resume-entry__body > a { font-size: 1rem; }
    .resume-section__heading { display: block; }
    .resume-section__heading h2 { font-size: 1.5rem; line-height: 1.5; }
    .resume-skill-grid p, .resume-entry__body li, .resume-game-list > div { font-size: 1rem; line-height: 1.75; }
    .resume-entry__meta { font-size: .875rem; line-height: 1.6; }
    .resume-entry__body h4 { font-size: 1rem; line-height: 1.6; }
    .resume-entry { grid-template-columns: 1fr; gap: .65rem; }
    .resume-entry__meta { flex-direction: row; flex-wrap: wrap; gap: .5rem 1.25rem; }
}
@media (max-width: 999px) {
    .page-home .work-reel .featured-card h4 { font-size: 1.25rem; }
    .page-home .work-reel .featured-card__description { display: block; font: 400 1rem/1.7 var(--sans); color: #c3dcea; margin-top: .5rem; }
}
@media (max-width: 820px) {
    .page-home .hero-name { font-size: clamp(3.25rem,13vw,5rem); }
    .page-home .hero-meta { font-size: .875rem; }
    .page-home .hero-actions { flex-wrap: wrap; }
    .page-home .about-header h2, .page-home .selected-heading h2 { font-size: 2rem; }
    .page-home .selected-heading .work-index { margin-top: 1rem; gap: 1.5rem; }
    .about-caption { min-height: 0; padding-block: .75rem; }
    .contact-scene__title { font-size: clamp(3.5rem,14vw,6rem); top: 26%; }
    .contact-scene__email { top: 56%; }
    .contact-scene__email strong { font-size: clamp(1.6rem,7vw,3.25rem); }
    .archive-hero { display: block; padding-block: 2.5rem; }
    .archive-hero__side { margin-top: 1rem; }
    .archive-toolbar { align-items: end; gap: 1rem; }
    .page-project .project-notes__body { grid-template-columns: 1fr; gap: 1.5rem; }
    .page-project .project-hero__title h1 { font-size: clamp(2rem,7vw,3rem); line-height: 1.25; }
    .page-project .related-card h3 { margin-top: 0; font-size: 1rem; }
}
@media (max-width: 540px) {
    .site-footer { justify-content: flex-start; }
    .site-footer > span { flex-basis: 100%; }
    .archive-result-meta { flex-shrink: 0; }
    .archive-result-meta strong { font-size: 1.5rem; }
    .document-reader__heading { flex-basis: calc(100% - 5rem); }
    .document-reader__header a { order: 2; }
    .document-reader__controls { padding-inline: .75rem; }
    .document-reader__pagination { flex-basis: 100%; justify-content: space-between; }
    .resume-contact-list { grid-template-columns: 1fr; }
}
@media print { .resume-section__heading { display: block; } }
.skip-link, .page-home .hero-actions .button, .page-home .hero-actions .text-button { font-size: 1rem; }
.page-project .project-play > span:last-child { font-size: 1rem; }
.page-project .project-hero__top > span:last-child { display: block; min-width: 0; height: auto; margin: 0 0 0 auto; padding: 0; font: 500 1rem/1.6 var(--sans); color: #3e5c74; background: none; clip-path: none; letter-spacing: 0; }
.page-project .project-notes h2 { padding: 0; background: none; clip-path: none; }
@media (max-width: 820px) {
    .archive-hero__side { position: static; width: auto; padding: 0; text-align: left; justify-self: start; }
    .archive-hero__side > span { margin-top: 0; }
}

/* Contact is a deliberately retained display heading. */
.contact-scene__title { font: 500 clamp(6rem, min(25vw, 36svh), 26rem)/.9 var(--p3-display); letter-spacing: -.06em; }
.page-project .project-hero.project-hero--title-long .project-hero__title h1 { font-size: clamp(1.8rem,2.8vw,2.65rem); line-height: 1.35; letter-spacing: -.025em; overflow-wrap: normal; text-wrap: pretty; }
.project-title-part { display: block; }
@media (max-width: 820px) {
    .contact-scene__title { font-size: clamp(4.5rem,23vw,10rem); }
    .page-project .project-hero.project-hero--title-long .project-hero__title h1 { font-size: clamp(1.6rem,6.3vw,2.5rem); }
}
