.cv-page figure { margin: 0; }
.cv-page img { display: block; width: 100%; height: auto; }
.cv-page a { color: inherit; }
.cv-page a:focus-visible { outline: 2px solid var(--ink); outline-offset: 5px; }
.cv-page .site-header [aria-current="page"] { text-decoration: underline; text-underline-offset: 6px; }
.skip-link { position: fixed; top: -100px; left: 1rem; z-index: 10; padding: 1rem; background: var(--paper); }
.skip-link:focus { top: 1rem; }
.cv-hero { padding: 10vh 5vw 6vw; }
.cv-hero h1 { font-size: clamp(4rem, 10vw, 10rem); line-height: .9; letter-spacing: -.075em; font-weight: 600; margin: 2rem 0 3rem; }
.cv-index { display: flex; gap: 1.5rem; flex-wrap: wrap; margin-top: 3rem; font: .75rem 'DM Mono', monospace; text-transform: uppercase; }
.cv-index a { text-decoration: none; border-bottom: 1px solid var(--line); padding: .5rem 0; }
.cv-cover { margin: 0 5vw !important; max-width: 1200px; }
.cv-split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.8fr); gap: 7vw; margin: 7vw 5vw 0; padding-top: 2.5rem; border-top: 1px solid var(--line); }
.cv-page h2 { font-size: clamp(2rem, 3.5vw, 3.7rem); font-weight: 500; line-height: 1.05; letter-spacing: -.06em; margin: 0 0 2.5rem; overflow-wrap: anywhere; }
.cv-prose { max-width: 780px; font-size: clamp(1rem, 1.3vw, 1.15rem); line-height: 1.75; }
.cv-prose p { margin: 0 0 1.5rem; }
.cv-prose ul { padding-left: 1.2rem; margin: 0 0 2rem; }
.cv-prose li { margin-bottom: 1rem; }
.cv-side figure { max-width: 420px; margin-top: 3rem; }
.cv-inline-image { margin-top: 3rem !important; }
.cv-artist .cv-inline-image { max-width: 520px; }
.cv-photo-chiara { aspect-ratio: 2 / 3; overflow: hidden; }
.cv-page .cv-photo-chiara img { height: 100%; object-fit: cover; object-position: 75% center; }
.cv-production { padding: 0 0 3rem; margin-bottom: 3rem; border-bottom: 1px solid var(--line); }
.cv-production:last-child { border: 0; margin: 0; padding-bottom: 0; }
.cv-production h3 { font-size: clamp(1.65rem, 2.7vw, 2.8rem); line-height: 1.15; letter-spacing: -.045em; font-weight: 500; margin: 0 0 1rem; }
.cv-date { font: .75rem/1.8 'DM Mono', monospace; text-transform: uppercase; margin: 0 0 1.5rem; }
.cv-links { display: flex; gap: 2rem; flex-wrap: wrap; }
.cv-dates { list-style: none; padding: 0 !important; }
.cv-dates li { border-bottom: 1px solid var(--line); padding: 0 0 1.5rem; margin-bottom: 1.5rem; }
.cv-dates-image { max-width: 420px; margin: 3rem 0 0 auto !important; }
.cv-artists { margin: 8vw 5vw 0; padding-top: 2.5rem; border-top: 1px solid var(--line); }
.cv-portraits { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 2.5vw; align-items: end; }
.cv-portraits a { display: block; text-decoration: none; }
.cv-portrait-caption { display: flex; justify-content: space-between; gap: .5rem; padding-top: 1rem; font: .75rem/1.6 'DM Mono', monospace; text-transform: uppercase; }
.cv-personal { font: .78rem/1.8 'DM Mono', monospace; }
.cv-personal > a { display: block; width: fit-content; overflow-wrap: anywhere; text-underline-offset: 3px; margin-bottom: .5rem; }
.cv-personal h3 { margin-top: 2.5rem; font: 500 .75rem 'DM Mono', monospace; text-transform: uppercase; }
.cv-personal ul { list-style: none; padding: 0; }
.cv-contact { margin: 8vw 5vw 6vw; border-top: 1px solid var(--line); padding-top: 2.5rem; }
.cv-contact > p { font-size: clamp(1rem, 2vw, 1.5rem); line-height: 1.8; margin-bottom: 4rem; overflow-wrap: anywhere; }
.cv-contact > p a { text-underline-offset: 5px; }
.cv-closing-images { display: grid; grid-template-columns: 1fr 1.3fr; gap: 9vw; align-items: start; max-width: 1000px; margin: 0 auto; }
.cv-closing-images figure:last-child { margin-top: 8vw; }
.cv-page footer a { text-decoration: none; }
@media (max-width: 700px) {
 .cv-hero { padding: 8vh 6vw 3rem; }
 .cv-hero h1 { font-size: clamp(3.5rem, 16vw, 5rem); }
 .cv-cover { margin: 0 6vw !important; }
 .cv-split { grid-template-columns: minmax(0, 1fr); gap: 2rem; margin: 4rem 6vw 0; padding-top: 2rem; }
 .cv-page h2 { margin-bottom: 1.5rem; font-size: 2.25rem; }
 .cv-side figure { max-width: 300px; margin-top: 1.5rem; }
 .cv-prose { font-size: 1rem; }
 .cv-artists, .cv-contact { margin: 4rem 6vw 0; }
 .cv-portraits { grid-template-columns: minmax(0, 1fr); gap: 2.5rem; max-width: 420px; margin: auto; }
 .cv-portraits img { width: auto; max-width: 100%; max-height: 65vh; margin: auto; }
 .cv-portrait-caption { font-size: .75rem; }
 .cv-personal { font-size: .76rem; }
 .cv-contact { margin-bottom: 4rem; }
 .cv-closing-images { gap: 1rem; }
 .cv-index { gap: 1.2rem; margin-top: 2rem; }
}
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

.cv-photo-francesca { aspect-ratio: 1 / 1; overflow: hidden; }
.cv-page .cv-photo-francesca img { height: 100%; object-fit: cover; object-position: 20% center; }

/* Compact photographs beside biographies and within project entries. */
.cv-artist .cv-side .cv-inline-image { width: min(100%, 280px); margin-top: 1.5rem !important; }
.cv-photo-ornella { aspect-ratio: 3 / 4; overflow: hidden; }
.cv-page .cv-photo-ornella img { height: 100%; object-fit: cover; object-position: center bottom; }
.cv-page #appuntamenti .cv-dates-image { width: min(100%, 220px); margin: 1.5rem 0 0 !important; }
.cv-production-with-photo { display: grid; grid-template-columns: minmax(100px, .55fr) minmax(0, 1.8fr); gap: 1.5rem; align-items: start; }
.cv-project-photo { max-width: 180px; }
.cv-project-photo img { width: 100%; height: auto; }
.cv-project-banner { position: relative; isolation: isolate; overflow: hidden; min-height: 160px; display: flex; align-items: end; padding: 1.25rem; margin-bottom: 1.5rem; background: #161c17; color: white; }
.cv-project-banner img { position: absolute; inset: 0; z-index: -2; height: 100%; object-fit: cover; object-position: center 65%; }
.cv-project-banner::after { content: ''; position: absolute; inset: 0; z-index: -1; background: linear-gradient(0deg,rgba(0,0,0,.8),rgba(0,0,0,.05)); }
.cv-production .cv-project-banner h3 { margin: 0; }
@media(max-width:700px) {
 .cv-artist .cv-side .cv-inline-image { width: min(68%, 240px); }
 .cv-page #appuntamenti .cv-dates-image { width: min(55%, 180px); }
 .cv-production-with-photo { grid-template-columns: minmax(0,1fr); gap: 1rem; }
 .cv-project-photo { width: 40%; max-width: 160px; }
 .cv-project-banner { min-height: 130px; }
}

/* Equal portrait formats and wider photographic compositions for the CV. */
.cv-artist .cv-side .cv-inline-image { width: min(100%,320px); max-width: 320px; aspect-ratio: 3 / 4; overflow: hidden; }
.cv-page .cv-artist .cv-inline-image img { width: 100%; height: 100%; object-fit: cover; }
.cv-page #produzioni { grid-template-columns: minmax(0,1fr); gap: 1rem; }
.cv-page #produzioni > h2 { margin-bottom: 1rem; }
.cv-productions { min-width: 0; }
.cv-production-with-photo { grid-template-columns: minmax(0,1fr) minmax(0,1.6fr); gap: 4vw; }
.cv-project-photo { width: 100%; max-width: none; overflow: hidden; }
.cv-project-photo img { width: 100%; height: auto; }
.cv-production-copy { min-width: 0; }
.cv-project-banner { min-height: 0; aspect-ratio: 3.5 / 1; padding: 2rem 3vw; }
.cv-project-banner img { object-position: center 70%; }
.cv-production:not(.cv-production-with-photo) > .cv-prose { max-width: 900px; }
.cv-page #appuntamenti .cv-dates-image { width: 100%; max-width: 360px; aspect-ratio: 4 / 3; overflow: hidden; }
.cv-page #appuntamenti .cv-dates-image img { height: 100%; object-fit: cover; object-position: center 60%; }
@media(max-width:700px) {
 .cv-artist .cv-side .cv-inline-image { width: min(100%,300px); max-width: 300px; }
 .cv-production-with-photo { grid-template-columns: minmax(0,1fr); gap: 1.5rem; }
 .cv-project-photo { width: 100%; max-width: none; }
 .cv-project-photo img { height: auto; }
 .cv-project-banner { aspect-ratio: 2 / 1; padding: 1.5rem; }
 .cv-page #appuntamenti .cv-dates-image { width: 100%; max-width: none; }
}

.cv-production-with-photo:last-child .cv-project-photo { aspect-ratio: 4 / 3; }
.cv-page .cv-production-with-photo:last-child .cv-project-photo img { height: 100%; object-fit: cover; object-position: center 45%; }

/* Consistent photographic title strips for all three productions. */
.cv-production .cv-project-banner { aspect-ratio: 3.2 / 1; min-height: 240px; }
.cv-architecture-banner img { object-position: center 55%; }
.cv-versi-banner img { object-position: center 55%; }
@media(max-width:700px) {
 .cv-production .cv-project-banner { aspect-ratio: 1.7 / 1; min-height: 200px; }
 .cv-production .cv-project-banner h3 { font-size: clamp(1.65rem,7vw,2.8rem); }
}

.cv-hero .cv-opening-photo { width: 100%; margin: 0 0 2rem; }
.cv-opening-photo img { width: 100%; height: auto; }

/* Collective name over the green area of the full-width opening photo. */
.cv-page .cv-hero.cv-photo-hero { position: relative; isolation: isolate; aspect-ratio: 3 / 2; padding: 3vw 5vw; box-sizing: border-box; color: #fff; overflow: hidden; background: #10241c; }
.cv-photo-hero .cv-opening-photo { position: absolute; inset: 0; z-index: -2; width: 100%; height: 100%; margin: 0 !important; }
.cv-photo-hero .cv-opening-photo img { width: 100%; height: 100%; object-fit: cover; }
.cv-photo-hero::after { content: ''; position: absolute; inset: 0; z-index: -1; pointer-events: none; background: linear-gradient(180deg,rgba(0,0,0,.25),transparent 35%); }
.cv-photo-hero .eyebrow { color: #fff; margin: 0; }
.cv-page .cv-photo-hero h1 { font-size: clamp(2rem,7vw,7rem); line-height: 1; margin: 1.2vw 0 0; letter-spacing: -.055em; }
.cv-opening-nav { padding: 1.5rem 5vw 0; display: flex; flex-wrap: wrap; gap: 1rem 3rem; align-items: center; justify-content: space-between; }
.cv-opening-nav .members, .cv-opening-nav .cv-index { margin: 0; }
@media(max-width:700px) {
 .cv-page .cv-hero.cv-photo-hero { padding: 1rem 6vw; }
 .cv-photo-hero .eyebrow { font-size: .875rem; }
 .cv-page .cv-photo-hero h1 { font-size: clamp(1.8rem,7.5vw,3.2rem); margin-top: .5rem; }
 .cv-opening-nav { padding: 1.25rem 6vw 0; }
}


.cv-page #obiettivi .cv-objectives-side-photo { width: 100%; max-width: none; margin-top: 1.5rem; }
.cv-objectives-side-photo img { width: 100%; height: auto; }

/* Shared tighter spacing between copy and photographs across the CV. */
.cv-split { column-gap: clamp(1rem, 3vw, 3rem); }
.cv-side figure, .cv-artist .cv-side .cv-inline-image { margin-top: 1.25rem !important; }
.cv-production .cv-project-banner { margin-bottom: 1.25rem; }
/* Rotate Objectives clockwise so the grey ground becomes the upper title area. */
.cv-page #obiettivi .cv-side { position: relative; align-self: start; }
.cv-page #obiettivi .cv-side h2 { position: absolute; top: 1.25rem; left: 1.25rem; right: 1.25rem; z-index: 1; margin: 0; color: var(--ink); }
.cv-page #obiettivi .cv-objectives-side-photo { position: relative; width: 100%; aspect-ratio: 1709 / 2399; overflow: hidden; margin: 0 !important; }
.cv-page #obiettivi .cv-objectives-side-photo img { position: absolute; top: 50%; left: 50%; width: 140.37449%; max-width: none; height: 71.238016%; object-fit: fill; transform: translate(-50%,-50%) rotate(90deg); }
@media(max-width:700px) {
 .cv-split { gap: 1.25rem; }
 .cv-page #obiettivi .cv-objectives-side-photo { max-width: 400px; }
 .cv-page #obiettivi .cv-side h2 { font-size: 2rem; }
}

/* Objectives title above the vertical photograph. Keep the approved column gap. */
.cv-page #obiettivi .cv-side h2 { position: static; margin: 0 0 1.25rem; }

/* Past and upcoming dates side by side, with compact consistent typography. */
.cv-schedule { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: clamp(1rem,3vw,3rem); margin: 7vw 5vw 0; padding-top: 2.5rem; border-top: 1px solid var(--line); }
.cv-page .cv-schedule h2 { font-size: clamp(1.75rem,2.5vw,2.4rem); margin-bottom: 1.5rem; }
.cv-schedule .cv-dates { margin: 0; list-style: none; padding: 0; }
.cv-schedule .cv-dates li { font-size: 1rem; line-height: 1.55; padding-bottom: 1rem; margin-bottom: 1rem; }
.cv-schedule-date, .cv-schedule-place, .cv-schedule strong { display: block; }
.cv-schedule-date { font: .875rem/1.6 'DM Mono',monospace; margin-bottom: .35rem; }
.cv-schedule strong { font-weight: 500; }
.cv-schedule-place { margin-top: .2rem; }
@media(max-width:700px) { .cv-schedule { grid-template-columns: minmax(0,1fr); margin: 4rem 6vw 0; padding-top: 2rem; gap: 2rem; } }
