/*
 * Photoclub de Vouvry — visual foundation
 * No framework, no remote font, no runtime dependency.
 */
:root {
    --ink: #17201f;
    --ink-soft: #273230;
    --paper: #f5f1e9;
    --paper-pure: #fbfaf7;
    --sand: #e8e0d3;
    --sage: #a7b0a1;
    --amber: #df9b5d;
    --amber-dark: #ad6937;
    --white: #fff;
    --muted: #66706d;
    --line: rgba(23, 32, 31, 0.18);
    --line-light: rgba(255, 255, 255, 0.22);
    --display: "Iowan Old Style", "Baskerville", "Times New Roman", serif;
    --sans: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    --shell: min(90rem, calc(100vw - 7rem));
    --section: clamp(5rem, 9vw, 9rem);
    --header-height: 6.5rem;
    --ease: cubic-bezier(0.2, 0.75, 0.25, 1);
}

*, *::before, *::after { box-sizing: border-box; }

html {
    color-scheme: light;
    scroll-behavior: smooth;
    -webkit-text-size-adjust: 100%;
}

html:has(body.page-admin) {
    scroll-behavior: auto;
}

body {
    margin: 0;
    background: var(--paper-pure);
    color: var(--ink);
    font-family: var(--sans);
    font-size: 1rem;
    line-height: 1.65;
    text-rendering: optimizeLegibility;
}

body.menu-open { overflow: hidden; }

img {
    display: block;
    max-width: 100%;
    height: auto;
}

a { color: inherit; text-decoration: none; }

button, input, textarea, select { font: inherit; }

button, a { -webkit-tap-highlight-color: transparent; }

:focus-visible {
    outline: 3px solid var(--amber);
    outline-offset: 4px;
}

::selection { background: var(--amber); color: var(--ink); }

.shell { width: var(--shell); margin-inline: auto; }

.section { padding-block: var(--section); }
.section--ink { background: var(--ink); color: var(--paper); }
.section--sand { background: var(--sand); }

.skip-link {
    position: fixed;
    z-index: 1000;
    top: 1rem;
    left: 1rem;
    transform: translateY(-200%);
    padding: 0.7rem 1rem;
    background: var(--paper-pure);
    color: var(--ink);
    border-radius: 2px;
}
.skip-link:focus { transform: translateY(0); }
.visually-hidden { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; border: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0 0 0 0) !important; white-space: nowrap !important; }

.eyebrow {
    margin: 0 0 1.25rem;
    color: var(--amber-dark);
    font-size: 0.69rem;
    font-weight: 700;
    letter-spacing: 0.2em;
    line-height: 1.3;
    text-transform: uppercase;
}
.eyebrow--light { color: var(--amber); }

h1, h2, h3, p { margin-top: 0; }
h1, h2, h3 {
    font-family: var(--display);
    font-weight: 400;
    line-height: 0.98;
}
h1 em, h2 em { color: var(--amber); font-weight: 400; }

.lead {
    font-family: var(--display);
    font-size: clamp(1.35rem, 2vw, 1.8rem);
    line-height: 1.45;
}

.button {
    display: inline-flex;
    min-height: 3.4rem;
    align-items: center;
    justify-content: space-between;
    gap: 2.5rem;
    padding: 0.8rem 1.15rem 0.8rem 1.4rem;
    border: 1px solid currentColor;
    border-radius: 0;
    background: transparent;
    color: inherit;
    cursor: pointer;
    font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    line-height: 1.2;
    text-transform: uppercase;
    transition: background 220ms var(--ease), color 220ms var(--ease), border-color 220ms var(--ease);
}
.button span { font-size: 1.05rem; transition: transform 220ms var(--ease); }
.button:hover span { transform: translate(0.2rem, -0.12rem); }
.button--light { border-color: rgba(255,255,255,.65); color: var(--white); }
.button--light:hover { background: var(--white); color: var(--ink); }
.button--dark { border-color: var(--ink); background: var(--ink); color: var(--white); }
.button--dark:hover { background: var(--amber); border-color: var(--amber); color: var(--ink); }
.button--full { width: 100%; }
.button--muted { color: var(--muted); cursor: not-allowed; opacity: .65; }

.text-link {
    display: inline-flex;
    align-items: center;
    gap: 2rem;
    padding-bottom: 0.35rem;
    border-bottom: 1px solid currentColor;
    font-size: 0.73rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    line-height: 1.2;
    text-transform: uppercase;
}
.text-link span { transition: transform 220ms var(--ease); }
.text-link:hover span { transform: translateX(0.35rem); }
.text-link--light { color: var(--white); }

/* Header */
.site-header {
    position: relative;
    z-index: 50;
    width: 100%;
    height: var(--header-height);
    background: var(--paper-pure);
    color: var(--ink);
}
.site-header--overlay { position: absolute; inset: 0 0 auto; background: transparent; color: var(--white); }
.site-header--minimal { border-bottom: 1px solid var(--line); }

.header-inner {
    display: flex;
    width: var(--shell);
    height: 100%;
    align-items: center;
    justify-content: space-between;
    margin-inline: auto;
}

.brand { display: inline-flex; align-items: center; gap: 0.85rem; }
.brand-mark {
    display: grid;
    width: 2.65rem;
    height: 2.65rem;
    place-items: center;
    border: 1px solid currentColor;
    border-radius: 50%;
}
.brand-mark span { font-size: 0.58rem; font-weight: 800; letter-spacing: 0.05em; }
.brand-name { display: flex; flex-direction: column; line-height: 1.1; }
.brand-name strong { font-family: var(--display); font-size: 1.05rem; font-weight: 400; }
.brand-name small { margin-top: .25rem; font-size: .52rem; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; }

.main-nav { display: flex; align-items: center; gap: 2.4rem; }
.main-nav ul { display: flex; gap: clamp(1rem, 2vw, 2rem); padding: 0; margin: 0; list-style: none; }
.main-nav li a {
    position: relative;
    display: block;
    padding: 0.6rem 0;
    font-size: .68rem;
    font-weight: 700;
    letter-spacing: .065em;
    text-transform: uppercase;
}
.main-nav li a::after {
    position: absolute;
    right: 0;
    bottom: .3rem;
    left: 0;
    height: 1px;
    background: currentColor;
    content: "";
    transform: scaleX(0);
    transform-origin: right;
    transition: transform 220ms var(--ease);
}
.main-nav li a:hover::after, .main-nav li a[aria-current="page"]::after { transform: scaleX(1); transform-origin: left; }
.authenticated-nav-actions { display: flex; align-items: center; gap: 1.25rem; }
.member-link {
    display: inline-flex;
    align-items: center;
    gap: 1.25rem;
    padding: .7rem 0 .7rem 1.3rem;
    border-left: 1px solid currentColor;
    font-size: .67rem;
    font-weight: 700;
    letter-spacing: .065em;
    text-transform: uppercase;
}
.administration-link { font-size: .67rem; font-weight: 700; letter-spacing: .065em; text-transform: uppercase; }
.menu-toggle { display: none; }

/* Home hero */
.home-hero { position: relative; min-height: min(57rem, 100svh); color: var(--white); overflow: hidden; }
.home-hero-media, .home-hero-media img { position: absolute; inset: 0; width: 100%; height: 100%; }
.home-hero-media img { object-fit: cover; object-position: center 55%; }
.home-hero-media--custom img { object-position: center; }
.home-hero-shade { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(8,14,14,.72) 0%, rgba(8,14,14,.35) 45%, rgba(8,14,14,.05) 78%), linear-gradient(0deg, rgba(8,14,14,.48), transparent 45%); }
.home-hero-content { position: relative; z-index: 2; display: flex; min-height: min(57rem, 100svh); flex-direction: column; align-items: flex-start; justify-content: flex-end; padding-bottom: clamp(5rem, 10vh, 8rem); }
.home-hero h1 { max-width: 69rem; margin-bottom: 2rem; font-size: clamp(4.1rem, 9.2vw, 9.4rem); letter-spacing: -.055em; }
.home-hero h1 em { color: var(--white); font-style: italic; }
.hero-intro { max-width: 38rem; margin-bottom: 2.2rem; color: rgba(255,255,255,.84); font-family: var(--display); font-size: clamp(1.1rem, 1.6vw, 1.45rem); line-height: 1.45; }
.hero-actions { display: flex; align-items: center; gap: 2.5rem; }
.hero-index { position: absolute; z-index: 2; right: 3.5rem; bottom: 3rem; display: flex; gap: 1rem; color: rgba(255,255,255,.65); font-size: .58rem; font-weight: 700; letter-spacing: .18em; writing-mode: vertical-rl; }

/* Reusable headings */
.section-heading { display: flex; align-items: flex-end; justify-content: space-between; gap: 3rem; margin-bottom: clamp(3rem, 6vw, 5.5rem); }
.section-heading h2 { margin: 0; font-size: clamp(3rem, 5.4vw, 5.6rem); letter-spacing: -.04em; }
.section-heading--light { color: var(--paper); }

.intro-section { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, .75fr); gap: clamp(4rem, 13vw, 13rem); }
.intro-section h2 { margin: 0; font-size: clamp(3.5rem, 6.3vw, 6.5rem); letter-spacing: -.045em; }
.intro-copy { padding-top: 3.5rem; }
.intro-copy > p:not(.lead) { max-width: 34rem; color: var(--muted); }
.intro-copy .text-link { margin-top: 1.7rem; }

/* Editorial gallery */
.photo-editorial-grid { display: grid; grid-template-columns: repeat(12, 1fr); gap: clamp(1.2rem, 2.2vw, 2.4rem); align-items: start; }
.photo-tile { margin: 0; }
.photo-tile img { width: 100%; height: auto; object-fit: contain; transition: transform 700ms var(--ease); }
.photo-tile picture, .photo-tile > a { display: block; overflow: hidden; }
.photo-tile:hover img { transform: scale(1.018); }
.photo-tile--slot-wide { grid-column: 1 / span 8; }
.photo-tile--slot-side { grid-column: 9 / -1; margin-top: 8rem; }
.photo-tile--slot-lower { grid-column: 2 / span 5; margin-top: clamp(3rem, 6vw, 6rem); }
.photo-tile--slot-wide.photo-tile--portrait { width: 82%; grid-column: 2 / span 5; justify-self: center; }
.photo-tile--slot-wide.photo-tile--square { grid-column: 1 / span 6; }
.photo-tile--solo.photo-tile--portrait { grid-column: 2 / span 5; margin-top: 0; }
.photo-tile--solo.photo-tile--square { grid-column: 2 / span 6; margin-top: 0; }
.photo-tile figcaption { display: flex; justify-content: space-between; gap: 1rem; padding-top: .9rem; border-top: 1px solid var(--line-light); margin-top: .9rem; }
.photo-tile figcaption span { font-family: var(--display); font-size: 1.15rem; }
.photo-tile figcaption small { color: rgba(255,255,255,.55); font-size: .6rem; letter-spacing: .08em; text-transform: uppercase; }
.gallery-note { grid-column: 8 / -1; align-self: center; display: grid; grid-template-columns: auto 1fr; gap: 2rem; padding: 2rem 0 0; }
.note-number { color: var(--amber); font-size: .65rem; letter-spacing: .16em; }
.gallery-note p { max-width: 20rem; color: rgba(255,255,255,.7); font-family: var(--display); font-size: 1.45rem; line-height: 1.45; }
.circle-link { grid-column: 2; display: grid; width: 4.25rem; height: 4.25rem; place-items: center; border: 1px solid var(--line-light); border-radius: 50%; transition: background 220ms var(--ease), color 220ms var(--ease); }
.circle-link:hover { background: var(--amber); color: var(--ink); }
.featured-empty { grid-column: 1 / span 8; max-width: 52rem; padding: clamp(3rem, 7vw, 7rem) 0; border-top: 1px solid var(--line-light); }
.featured-empty h3 { margin-bottom: 2.5rem; color: var(--paper); font-size: clamp(2.5rem, 5vw, 5rem); }

/* Events */
.event-list { border-top: 1px solid var(--line); }
.event-row { display: grid; grid-template-columns: 8rem minmax(18rem, 1.4fr) minmax(12rem, .8fr) 2rem; gap: 2rem; align-items: center; min-height: 9.5rem; border-bottom: 1px solid var(--line); }
.event-row time { display: flex; align-items: baseline; gap: .55rem; }
.event-row time strong { font-family: var(--display); font-size: 3.5rem; font-weight: 400; line-height: 1; }
.event-row time span, .event-type, .location { color: var(--amber-dark); font-size: .62rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.event-row h3 { margin: .45rem 0 0; font-size: clamp(1.45rem, 2.1vw, 2rem); line-height: 1.1; }
.event-row > p { margin: 0; color: var(--muted); font-size: .82rem; }
.event-arrow { justify-self: end; font-size: 1.2rem; transition: transform 220ms var(--ease); }
.event-row:hover .event-arrow { transform: translate(.25rem, -.25rem); }

/* Articles */
.article-grid { display: grid; grid-template-columns: 1.45fr .75fr .75fr; gap: 2.2rem; }
.article-card { margin: 0; }
.article-image { display: flex; align-items: flex-start; justify-content: center; margin-bottom: 1.4rem; }
.article-image img { width: 100%; height: auto; object-fit: contain; transition: transform 600ms var(--ease); }
.article-card--cover-portrait .article-image { width: min(78%, 24rem); margin-inline: auto; }
.article-card--feature.article-card--cover-portrait .article-image { width: min(72%, 34rem); }
.article-card--cover-square .article-image { width: min(92%, 34rem); margin-inline: auto; }
.article-card:hover img { transform: scale(1.025); }
.article-meta { margin-bottom: .65rem; color: var(--amber-dark); font-size: .62rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.article-card h3 { margin-bottom: .8rem; font-size: clamp(1.5rem, 2.2vw, 2.15rem); line-height: 1.12; }
.article-card p:last-child { color: var(--muted); font-size: .88rem; }

.join-banner { text-align: center; }
.join-inner { display: flex; flex-direction: column; align-items: center; }
.join-inner h2 { margin-bottom: 2.6rem; font-size: clamp(3.3rem, 7vw, 7rem); letter-spacing: -.05em; }

/* Interior page lead */
.page-intro { display: grid; grid-template-columns: 1fr minmax(18rem, .38fr); min-height: 34rem; align-content: end; gap: 3rem; padding-block: 5rem 6rem; border-bottom: 1px solid var(--line); }
.page-intro > .eyebrow { grid-column: 1 / -1; margin: 0; }
.page-intro h1 { margin: 0; font-size: clamp(4.2rem, 9vw, 9rem); letter-spacing: -.055em; }
.page-intro-copy { align-self: end; max-width: 29rem; padding-bottom: 1rem; }
.page-intro-copy p { margin: 0; font-family: var(--display); font-size: clamp(1.35rem, 2vw, 1.75rem); line-height: 1.45; }
.page-intro--program .page-intro-copy { display: grid; gap: 2rem; }
.demo-label { justify-self: start; padding: .5rem .7rem; background: var(--sand); font-size: .6rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }

/* Club */
.club-story { display: grid; grid-template-columns: minmax(18rem, .8fr) 1fr; gap: clamp(4rem, 10vw, 10rem); align-items: center; }
.story-photo { margin: 0; }
.story-photo img { display: block; width: 100%; height: auto; object-fit: contain; }
.story-copy h2 { max-width: 40rem; margin-bottom: 2.2rem; font-size: clamp(3.1rem, 5vw, 5.2rem); letter-spacing: -.04em; }
.story-copy > p:not(.lead) { max-width: 37rem; color: var(--muted); }
.story-copy blockquote { max-width: 35rem; padding: 2rem 0 0 2rem; border-left: 1px solid var(--amber); margin: 3rem 0 0; font-family: var(--display); font-size: 1.4rem; font-style: italic; line-height: 1.45; }
.values .eyebrow { margin-bottom: 4rem; }
.value-grid { display: grid; grid-template-columns: repeat(3, 1fr); border-top: 1px solid var(--line-light); }
.value-grid article { min-height: 21rem; padding: 2rem 2.5rem 2rem 0; border-right: 1px solid var(--line-light); }
.value-grid article + article { padding-left: 2.5rem; }
.value-grid article:last-child { border-right: 0; }
.value-grid span { color: var(--amber); font-size: .62rem; letter-spacing: .14em; }
.value-grid h3 { margin: 5rem 0 1rem; font-size: 2.8rem; }
.value-grid p { max-width: 20rem; color: rgba(255,255,255,.62); }
.club-practical { display: grid; grid-template-columns: 1fr .8fr; gap: 8rem; }
.club-practical h2 { font-size: clamp(3.2rem, 5.5vw, 5.6rem); letter-spacing: -.045em; }
.practical-list > div { display: grid; grid-template-columns: 8rem 1fr; gap: 1rem; padding: 1.5rem 0; border-top: 1px solid var(--line); }
.practical-list span { color: var(--amber-dark); font-size: .65rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.practical-list p { margin: 0; color: var(--muted); }
.practical-list .button { margin-top: 2rem; }
.club-documents { background: var(--sand); }
.club-documents-inner { display: grid; grid-template-columns: 1fr .8fr; gap: 8rem; align-items: end; }
.club-documents h2 { margin: 0; font-size: clamp(2.8rem, 5vw, 5rem); letter-spacing: -.045em; }
.club-document-link { padding-top: 1.5rem; border-top: 1px solid var(--line); }
.club-document-meta { margin: 0 0 1.2rem; color: var(--muted); font-size: .7rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }

/* Programme */
.program-section { padding-block: clamp(4.5rem, 7vw, 7rem); }
.program-section + .program-section { padding-top: 0; }
.program-month { display: flex; align-items: baseline; justify-content: space-between; gap: 2rem; padding-bottom: 1.25rem; border-bottom: 1px solid var(--line); }
.program-month h2 { margin: 0; font-size: clamp(2.25rem, 3.6vw, 3.75rem); letter-spacing: .055em; text-transform: uppercase; }
.program-month p { margin: 0; color: var(--muted); font-size: .68rem; font-weight: 700; letter-spacing: .11em; text-transform: uppercase; }
.program-item { display: grid; grid-template-columns: minmax(8.5rem, .18fr) minmax(0, 1fr); gap: clamp(2.5rem, 6vw, 6rem); align-items: start; padding: clamp(2.8rem, 4.5vw, 4.5rem) 0; border-bottom: 1px solid var(--line); }
.program-item time { display: flex; gap: 1rem; align-items: flex-start; }
.program-item time > strong { font-family: var(--display); font-size: clamp(4.75rem, 7vw, 7rem); font-weight: 400; letter-spacing: -.06em; line-height: .78; }
.program-date-context { display: flex; flex-direction: column; gap: .3rem; padding-top: .15rem; }
.program-date-context span { white-space: nowrap; color: var(--muted); font-size: .68rem; font-weight: 700; letter-spacing: .08em; line-height: 1.35; text-transform: uppercase; }
.program-date-context span:first-child { color: var(--amber-dark); }
.program-item-content { max-width: 68rem; }
.program-item-meta { display: flex; flex-wrap: wrap; gap: .55rem 1.5rem; align-items: center; margin-bottom: 1.15rem; }
.program-item h3 { max-width: 64rem; margin: 0 0 1.35rem; font-size: clamp(2.75rem, 5vw, 5.25rem); letter-spacing: -.035em; line-height: .98; }
.program-item-description { max-width: 58rem; margin-bottom: 0; color: var(--muted); font-size: clamp(.92rem, 1.15vw, 1.05rem); line-height: 1.75; }
.program-note { padding: 2.2rem 0; }
.program-note p { max-width: 55rem; margin: 0; font-size: .78rem; }

/* Public albums and photographs */
.album-index { display: grid; gap: clamp(6rem, 11vw, 12rem); }
.album-entry { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(18rem, .55fr); gap: clamp(3rem, 8vw, 8rem); align-items: center; }
.album-entry:nth-child(even) { grid-template-columns: minmax(18rem, .55fr) minmax(0, 1.35fr); }
.album-entry:nth-child(even) .album-entry-image { grid-column: 2; }
.album-entry:nth-child(even) .album-entry-copy { grid-column: 1; grid-row: 1; }
.album-entry-image { display: block; overflow: hidden; }
.album-entry-image img { width: 100%; transition: transform 700ms var(--ease); }
.album-entry-image:hover img { transform: scale(1.012); }
.album-entry--portrait .album-entry-image { width: min(72%, 42rem); justify-self: center; }
.album-entry-copy h2 { margin-bottom: 1.6rem; font-size: clamp(3rem, 5.5vw, 6rem); letter-spacing: -.04em; }
.album-entry-copy > p:not(.eyebrow) { max-width: 33rem; margin-bottom: 2rem; color: var(--muted); }
.album-placeholder { display: grid; min-height: 28rem; place-items: center; background: var(--sand); font-family: var(--display); font-size: 4rem; }
.gallery-empty { min-height: 35rem; }
.gallery-empty h2 { max-width: 55rem; margin-bottom: 2rem; font-size: clamp(3.4rem, 7vw, 7rem); letter-spacing: -.045em; }
.gallery-empty > p:last-child { max-width: 38rem; color: var(--muted); }
.gallery-intro { padding-block: clamp(5rem, 9vw, 9rem); border-bottom: 1px solid var(--line); }
.gallery-intro > .text-link { margin-bottom: clamp(5rem, 10vw, 10rem); }
.gallery-intro h1 { max-width: 78rem; margin-bottom: 2.5rem; font-size: clamp(4.5rem, 10vw, 10rem); letter-spacing: -.055em; }
.gallery-intro-description { max-width: 52rem; color: var(--muted); font-family: var(--display); font-size: clamp(1.25rem, 2vw, 1.75rem); line-height: 1.55; }
.photo-gallery { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(4rem, 9vw, 10rem) clamp(2rem, 5vw, 5rem); align-items: start; padding-block: clamp(5rem, 9vw, 9rem); }
.photo-gallery-item { min-width: 0; margin: 0; }
.photo-gallery-item--portrait { width: 82%; justify-self: center; }
.photo-gallery-item a { display: block; cursor: zoom-in; }
.photo-gallery-item img { width: 100%; background: var(--sand); }
.photo-gallery-item figcaption { display: flex; justify-content: space-between; gap: 1rem; padding-top: .8rem; border-top: 1px solid var(--line); margin-top: .8rem; }
.photo-gallery-item figcaption span { font-family: var(--display); font-size: 1.1rem; }
.photo-gallery-item figcaption small { color: var(--muted); font-size: .6rem; letter-spacing: .08em; text-transform: uppercase; }
body.lightbox-open { overflow: hidden; }
.gallery-lightbox { width: 100vw; max-width: none; height: 100dvh; max-height: none; padding: 0; border: 0; margin: 0; background: #0b100f; color: var(--paper); }
.gallery-lightbox::backdrop { background: rgba(3, 7, 7, .96); }
.lightbox-frame { position: relative; display: grid; width: 100%; height: 100%; grid-template-columns: 5rem minmax(0, 1fr) 5rem; grid-template-rows: minmax(0, 1fr); align-items: center; padding: 4.5rem 2rem 2rem; }
.lightbox-close { position: absolute; z-index: 2; top: 1.2rem; right: 1.5rem; padding: .5rem 0; border: 0; background: transparent; color: var(--paper); cursor: pointer; font-size: .66rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.lightbox-close span { margin-left: .6rem; font-size: 1.4rem; font-weight: 300; }
.lightbox-arrow { display: grid; width: 3.5rem; height: 3.5rem; place-items: center; justify-self: center; border: 1px solid var(--line-light); border-radius: 50%; background: transparent; color: var(--paper); cursor: pointer; }
.lightbox-arrow:disabled { opacity: .25; cursor: default; }
.lightbox-figure { display: grid; min-width: 0; height: 100%; grid-template-rows: minmax(0, 1fr) auto; justify-items: center; margin: 0; }
.lightbox-figure img { max-width: 100%; max-height: calc(100dvh - 10rem); align-self: center; object-fit: contain; }
.lightbox-figure figcaption { display: flex; width: min(100%, 68rem); flex-wrap: wrap; gap: .35rem 1.4rem; align-items: baseline; padding-top: 1rem; }
.lightbox-figure figcaption strong { font-family: var(--display); font-size: 1.15rem; font-weight: 400; }
.lightbox-figure figcaption p { flex: 1 1 22rem; margin: 0; color: rgba(255,255,255,.68); font-size: .72rem; }
.lightbox-figure figcaption small { color: rgba(255,255,255,.55); font-size: .6rem; letter-spacing: .08em; text-transform: uppercase; }
.lightbox-counter { position: absolute; bottom: 1.3rem; left: 1.5rem; margin: 0; color: rgba(255,255,255,.52); font-size: .62rem; letter-spacing: .12em; }

/* Journal */
.blog-lead { display: grid; grid-template-columns: 1.4fr .6fr; gap: clamp(3rem, 6vw, 6rem); align-items: center; }
.blog-lead--portrait { grid-template-columns: minmax(15rem, .55fr) 1fr; }
.blog-lead--square { grid-template-columns: minmax(20rem, .85fr) 1fr; }
.blog-lead-image { display: flex; align-items: center; justify-content: center; }
.blog-lead-image img { width: 100%; height: auto; min-height: 0; object-fit: contain; transition: transform 700ms var(--ease); }
.blog-lead--portrait .blog-lead-image { width: min(100%, 32rem); justify-self: center; }
.blog-lead--square .blog-lead-image { width: min(100%, 42rem); justify-self: center; }
.blog-lead:hover img { transform: scale(1.018); }
.blog-lead-copy h2 { margin-bottom: 1.5rem; font-size: clamp(3rem, 5vw, 5rem); letter-spacing: -.04em; }
.blog-lead-copy > p:not(.article-meta) { color: var(--muted); }
.blog-lead-copy .text-link { margin-top: 1rem; }
.blog-list > .shell { display: grid; gap: 0; }
.blog-row { display: grid; grid-template-columns: 3rem minmax(12rem, .38fr) 1fr; gap: clamp(1.5rem, 4vw, 4rem); align-items: center; padding: 3rem 0; border-top: 1px solid var(--line); }
.blog-row:last-child { border-bottom: 1px solid var(--line); }
.blog-row-number { color: var(--amber-dark); font-size: .65rem; }
.blog-row-image { display: flex; align-items: center; justify-content: center; }
.blog-row-image img { width: 100%; height: auto; object-fit: contain; transition: transform 500ms var(--ease); }
.blog-row--portrait .blog-row-image { width: min(72%, 20rem); justify-self: center; }
.blog-row--square .blog-row-image { width: min(88%, 24rem); justify-self: center; }
.blog-row:hover img { transform: scale(1.03); }
.blog-row h2 { margin-bottom: 1rem; font-size: clamp(2rem, 3.6vw, 3.7rem); }
.blog-row > div:last-child > p:last-child { max-width: 40rem; margin: 0; color: var(--muted); }

/* Contact */
.contact-layout { display: grid; grid-template-columns: 1fr 1fr; align-items: stretch; padding-top: 2rem; }
.contact-panel { padding: clamp(3rem, 7vw, 7rem); background: var(--ink); color: var(--paper); }
.contact-panel h2 { margin-bottom: 2rem; font-size: clamp(3rem, 5.5vw, 5.5rem); letter-spacing: -.045em; }
.contact-panel > p:not(.eyebrow) { max-width: 30rem; color: rgba(255,255,255,.65); }
.contact-panel dl { margin: 4rem 0 0; }
.contact-panel dl div { display: grid; grid-template-columns: 7rem 1fr; padding: 1.25rem 0; border-top: 1px solid var(--line-light); }
.contact-panel dt { color: var(--amber); font-size: .63rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.contact-panel dd { margin: 0; }
.contact-form-placeholder { padding: clamp(3rem, 7vw, 7rem); background: var(--sand); }
.form-step { color: var(--amber-dark); font-size: .62rem; letter-spacing: .12em; }
.contact-form-placeholder h2 { margin: 3rem 0 1.5rem; font-size: clamp(2.6rem, 4vw, 4rem); }
.contact-form-placeholder .lead { max-width: 30rem; color: var(--muted); font-size: 1.25rem; }
.contact-form { position: relative; display: grid; margin-top: 2rem; }
.contact-form label { margin: 1.15rem 0 .45rem; font-size: .65rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.contact-form input, .contact-form textarea { width: 100%; padding: .85rem 0; border: 0; border-bottom: 1px solid var(--ink); border-radius: 0; background: transparent; color: var(--ink); outline: none; }
.contact-form input { min-height: 3.7rem; }
.contact-form textarea { min-height: 9rem; resize: vertical; }
.contact-form input:focus, .contact-form textarea:focus { border-bottom-color: var(--amber-dark); box-shadow: 0 1px 0 var(--amber-dark); }
.contact-form .button { justify-self: start; margin-top: 2rem; }
.contact-honeypot { position: absolute !important; left: -10000px !important; width: 1px !important; height: 1px !important; overflow: hidden !important; }

/* Login */
.login-section { display: grid; grid-template-columns: 1.15fr .85fr; min-height: calc(100svh - var(--header-height)); }
.login-visual { overflow: hidden; }
.login-visual img { width: 100%; height: 100%; object-fit: cover; object-position: 60% center; }
.login-panel { display: grid; place-items: center; padding: 4rem; background: var(--sand); }
.login-inner { width: min(100%, 28rem); }
.login-inner h1 { margin-bottom: 1.5rem; font-size: clamp(3.5rem, 6vw, 6rem); letter-spacing: -.05em; }
.login-intro { margin-bottom: 2.5rem; color: var(--muted); }
.login-form { display: grid; }
.login-form label, .install-form label { margin: 1.15rem 0 .45rem; font-size: .65rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.login-form input, .install-form input { width: 100%; min-height: 3.7rem; padding: .85rem 0; border: 0; border-bottom: 1px solid var(--ink); border-radius: 0; background: transparent; color: var(--ink); outline: none; }
.login-form input:focus, .install-form input:focus { border-bottom-color: var(--amber-dark); box-shadow: 0 1px 0 var(--amber-dark); }
.login-form .button { margin-top: 2.2rem; }
.login-help { margin: 1.2rem 0 0; color: var(--muted); font-size: .68rem; }
.preproduction-gate .login-panel { min-width: 0; }
.preproduction-gate .login-inner h1 { font-size: clamp(2.9rem, 5.4vw, 5.4rem); }
.preproduction-gate .notice { margin-bottom: 1.5rem; }
.notice { padding: 1rem 1.1rem; margin: 1.5rem 0; border-left: 3px solid var(--amber); background: rgba(255,255,255,.45); font-size: .82rem; }
.notice--error { border-color: #9c403b; color: #642b28; }

/* Installer */
.installer { padding-block: clamp(4rem, 8vw, 8rem); }
.installer-intro { display: grid; grid-template-columns: 1fr minmax(18rem, .4fr); gap: 2rem; align-items: end; margin-bottom: 5rem; }
.installer-intro .eyebrow { grid-column: 1 / -1; }
.installer-intro h1 { margin: 0; font-size: clamp(4rem, 8vw, 8rem); letter-spacing: -.055em; }
.installer-intro > p:last-child { margin: 0 0 .7rem; font-family: var(--display); font-size: 1.35rem; }
.installer-errors { max-width: 55rem; margin-bottom: 3rem; }
.installer-errors ul { margin-bottom: 0; }
.installer-grid { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(2rem, 5vw, 5rem); }
.check-panel, .install-form { padding: clamp(2rem, 4vw, 4rem); background: var(--sand); }
.install-form { background: var(--paper); border: 1px solid var(--line); }
.step-heading { display: flex; align-items: flex-start; gap: 1.5rem; margin-bottom: 3rem; }
.step-heading > span { display: grid; width: 2.7rem; height: 2.7rem; flex: 0 0 auto; place-items: center; border: 1px solid var(--line); border-radius: 50%; color: var(--amber-dark); font-size: .64rem; }
.step-heading .eyebrow { margin-bottom: .4rem; }
.step-heading h2 { margin: 0; font-size: 2.5rem; }
.check-list { padding: 0; margin: 0; list-style: none; }
.check-list li { display: flex; gap: 1rem; align-items: center; padding: 1.2rem 0; border-top: 1px solid var(--line); }
.check-icon { display: grid; width: 1.7rem; height: 1.7rem; flex: 0 0 auto; place-items: center; border-radius: 50%; background: var(--ink); color: var(--white); font-size: .7rem; }
.check-list .is-error .check-icon { background: #9c403b; }
.check-list .is-warning .check-icon { background: var(--amber-dark); }
.check-list strong, .check-list small { display: block; }
.check-list strong { font-size: .78rem; }
.check-list small { color: var(--muted); font-size: .63rem; overflow-wrap: anywhere; }
.install-form label { display: flex; justify-content: space-between; gap: 1rem; }
.install-form label small { color: var(--muted); font-weight: 400; letter-spacing: 0; text-transform: none; }
.install-note { padding: 1rem; margin: 2rem 0; border: 1px solid var(--line); color: var(--muted); font-size: .72rem; }
.installer-success { min-height: 70svh; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; }
.success-mark { display: grid; width: 5rem; height: 5rem; place-items: center; margin-bottom: 2rem; border-radius: 50%; background: var(--ink); color: var(--amber); font-size: 2rem; }
.installer-success h1 { margin-bottom: 2rem; font-size: clamp(4rem, 8vw, 8rem); }
.installer-success > p:not(.eyebrow) { max-width: 40rem; color: var(--muted); }
.migration-result { font-size: .75rem; }
.installer-success .button { margin-top: 1.5rem; }

/* Error */
.error-page { position: relative; display: flex; min-height: 70svh; align-items: center; overflow: hidden; }
.error-page > div { position: relative; z-index: 2; }
.error-page h1 { margin-bottom: 2rem; font-size: clamp(4rem, 8vw, 8rem); letter-spacing: -.05em; }
.error-page p:not(.eyebrow) { color: var(--muted); }
.error-page .button { margin-top: 1.5rem; }
.error-number { position: absolute; right: 0; color: var(--sand); font-family: var(--display); font-size: clamp(13rem, 36vw, 38rem); line-height: 1; letter-spacing: -.09em; }

/* Footer */
.site-footer { padding-top: clamp(5rem, 8vw, 8rem); background: #101615; color: var(--paper); }
.footer-main { display: grid; grid-template-columns: 1.8fr .7fr .7fr; gap: 4rem; padding-bottom: 6rem; }
.footer-statement { margin: 0; font-family: var(--display); font-size: clamp(2.6rem, 4.8vw, 4.8rem); line-height: 1; letter-spacing: -.04em; }
.footer-heading { margin-bottom: 1.4rem; color: var(--amber); font-size: .62rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.footer-column { display: flex; flex-direction: column; align-items: flex-start; gap: .6rem; padding-top: .4rem; }
.footer-column a, .footer-muted { color: rgba(255,255,255,.68); font-size: .78rem; }
.footer-column a:hover { color: var(--white); }
.footer-muted { margin-top: .5rem; color: rgba(255,255,255,.35); }
.footer-bottom { display: flex; justify-content: space-between; gap: 2rem; padding: 1.4rem 0; border-top: 1px solid var(--line-light); color: rgba(255,255,255,.42); font-size: .58rem; letter-spacing: .08em; text-transform: uppercase; }
.footer-bottom p { margin: 0; }

/* Motion enhancement */
.js .reveal { opacity: 0; transform: translateY(1.5rem); transition: opacity 700ms var(--ease), transform 700ms var(--ease); }
.js .reveal.is-visible { opacity: 1; transform: none; }

/* Semester planning */
.planning-period-list, .planning-idea-list { display: grid; gap: 1.25rem; }
.planning-period-card { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; gap: 2rem; align-items: center; }
.planning-period-card h2, .planning-structure h2 { margin: .35rem 0 .75rem; font-size: clamp(1.8rem, 3vw, 3rem); }
.planning-structure { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.5rem; margin-bottom: 4rem; }
.planning-slots { padding-block: 2rem 5rem; }
.planning-slot-card { display: grid; grid-template-columns: 8rem minmax(12rem, 1fr) auto minmax(15rem, auto); gap: 1.5rem; align-items: center; padding: 1.5rem 0; border-top: 1px solid var(--line); }
.planning-slot-card > time { font-family: var(--display); font-size: 1.5rem; }
.planning-slot-main h3 { margin: 0 0 .35rem; font-size: 1.5rem; }
.planning-slot-main p { margin: 0; color: var(--muted); font-size: .72rem; }
.planning-slot-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .5rem .8rem; }
.planning-slot-actions form { display: flex; gap: .4rem; align-items: center; margin: 0; }
.planning-slot-actions button, .planning-slot-actions a:not(.button) { border: 0; border-bottom: 1px solid currentColor; background: transparent; color: var(--muted); cursor: pointer; font-size: .62rem; font-weight: 700; text-transform: uppercase; }
.planning-slot-actions input[type="date"] { min-width: 9rem; }
.planning-form { max-width: 54rem; }
.planning-form > .button { margin-top: 2rem; }

@media (max-width: 1100px) {
    :root { --shell: min(100% - 3.5rem, 80rem); }
    .main-nav { gap: 1.2rem; }
    .main-nav ul { gap: 1rem; }
    .brand-name { display: none; }
    .article-grid { grid-template-columns: 1.2fr .8fr; }
    .article-card:last-child { grid-column: 2; }
    .article-card--feature { grid-row: span 2; }
    .footer-main { grid-template-columns: 1.5fr .7fr .7fr; }
}

@media (max-width: 820px) {
    .planning-slot-card { grid-template-columns: 7rem minmax(0, 1fr) auto; }
    .planning-slot-actions { grid-column: 2 / -1; justify-content: flex-start; }
    :root { --shell: calc(100% - 2.5rem); --header-height: 5.5rem; --section: 5rem; }
    .site-header--overlay { position: absolute; }
    .brand-name { display: flex; }
    .menu-toggle {
        position: relative;
        z-index: 102;
        display: inline-flex;
        align-items: center;
        gap: .8rem;
        padding: .5rem 0;
        border: 0;
        background: transparent;
        color: inherit;
        cursor: pointer;
        font-size: .62rem;
        font-weight: 700;
        letter-spacing: .1em;
        text-transform: uppercase;
    }
    .menu-toggle-icon { display: grid; gap: .35rem; }
    .menu-toggle-icon i { display: block; width: 1.5rem; height: 1px; background: currentColor; transition: transform 220ms var(--ease); }
    .menu-toggle[aria-expanded="true"] .menu-toggle-icon i:first-child { transform: translateY(.175rem) rotate(45deg); }
    .menu-toggle[aria-expanded="true"] .menu-toggle-icon i:last-child { transform: translateY(-.175rem) rotate(-45deg); }
    .js .main-nav {
        position: fixed;
        z-index: 100;
        inset: 0;
        display: flex;
        visibility: hidden;
        flex-direction: column;
        align-items: flex-start;
        justify-content: center;
        gap: 2.5rem;
        padding: 7rem max(2rem, calc((100vw - var(--shell)) / 2));
        background: var(--ink);
        color: var(--white);
        opacity: 0;
        transition: opacity 250ms var(--ease), visibility 250ms;
    }
    .js .main-nav.is-open { visibility: visible; opacity: 1; }
    .main-nav ul { flex-direction: column; gap: .2rem; }
    .main-nav li a { padding: .2rem 0; font-family: var(--display); font-size: clamp(2.4rem, 9vw, 4.2rem); font-weight: 400; letter-spacing: -.03em; text-transform: none; }
    .main-nav li a::after { display: none; }
    .authenticated-nav-actions { align-items: flex-start; flex-direction: column; gap: 1rem; }
    .member-link { padding-left: 0; border: 0; color: var(--amber); }
    .home-hero { min-height: 50rem; }
    .home-hero-content { min-height: 50rem; }
    .home-hero h1 { font-size: clamp(3.8rem, 15vw, 7rem); }
    .hero-index { display: none; }
    .intro-section, .club-story, .club-practical, .club-documents-inner, .blog-lead, .contact-layout, .installer-grid, .installer-intro { grid-template-columns: 1fr; }
    .intro-section { gap: 2rem; }
    .intro-copy { padding-top: 0; }
    .photo-tile--slot-wide { grid-column: 1 / -1; }
    .photo-tile--slot-side { grid-column: 7 / -1; margin-top: 2rem; }
    .photo-tile--slot-lower { grid-column: 1 / span 6; margin-top: 6rem; }
    .photo-tile--slot-wide.photo-tile--portrait { width: 100%; grid-column: 2 / span 5; }
    .photo-tile--slot-wide.photo-tile--square { grid-column: 1 / span 6; }
    .gallery-note { grid-column: 7 / -1; }
    .event-row { grid-template-columns: 6rem 1fr 1.5rem; gap: 1.2rem; padding: 1.5rem 0; }
    .event-row > p { grid-column: 2; }
    .event-arrow { grid-column: 3; grid-row: 1 / span 2; }
    .article-grid { grid-template-columns: 1fr 1fr; }
    .article-card--feature { grid-column: 1 / -1; grid-row: auto; }
    .article-card:last-child { grid-column: auto; }
    .page-intro { grid-template-columns: 1fr; min-height: 29rem; }
    .page-intro h1 { font-size: clamp(4rem, 15vw, 7rem); }
    .story-photo { max-width: 70%; }
    .club-story { gap: 4rem; }
    .value-grid { grid-template-columns: 1fr; }
    .value-grid article, .value-grid article + article { min-height: auto; padding: 2rem 0 3rem; border-right: 0; border-bottom: 1px solid var(--line-light); }
    .value-grid h3 { margin-top: 2rem; }
    .club-practical { gap: 2rem; }
    .album-entry, .album-entry:nth-child(even) { grid-template-columns: 1fr; gap: 2.5rem; }
    .album-entry:nth-child(even) .album-entry-image, .album-entry:nth-child(even) .album-entry-copy { grid-column: 1; grid-row: auto; }
    .album-entry--portrait .album-entry-image { width: min(72%, 34rem); }
    .lightbox-frame { grid-template-columns: 4rem minmax(0, 1fr) 4rem; padding-inline: 1rem; }
    .gallery-piece--landscape { grid-column: 1 / -1; }
    .gallery-piece--portrait { grid-column: 7 / -1; margin-top: 2rem; }
    .gallery-piece--square { grid-column: 1 / span 6; }
    .gallery-piece--wide { grid-column: 6 / -1; margin-top: 3rem; }
    .gallery-piece--crop { grid-column: 1 / span 5; }
    .gallery-piece--crop-high { grid-column: 4 / -1; margin-top: 3rem; }
    .blog-lead { gap: 3rem; }
    .blog-lead-image img { min-height: 0; }
    .contact-layout { width: 100%; padding: 0; }
    .installer-intro { gap: 1rem; }
    .login-section { grid-template-columns: .75fr 1fr; }
    .login-panel { padding: 3rem 2rem; }
    .footer-main { grid-template-columns: 1.5fr 1fr; }
    .footer-brand { grid-column: 1 / -1; margin-bottom: 2rem; }
}

@media (max-width: 560px) {
    .planning-period-card, .planning-structure, .planning-slot-card { grid-template-columns: 1fr; }
    .planning-period-card { gap: 1rem; }
    .planning-slot-actions { grid-column: 1; }
    :root { --shell: calc(100% - 2rem); --section: 4.5rem; }
    .brand-name { display: none; }
    .home-hero { min-height: 46rem; }
    .home-hero-content { min-height: 46rem; padding-bottom: 4rem; }
    .home-hero-media img { object-position: 65% center; }
    .home-hero-media--custom img { object-position: center; }
    .home-hero-shade { background: linear-gradient(0deg, rgba(8,14,14,.75), rgba(8,14,14,.05) 90%); }
    .home-hero h1 { font-size: clamp(3.35rem, 17vw, 5.7rem); }
    .hero-intro { font-size: 1rem; }
    .hero-actions { align-items: flex-start; flex-direction: column; gap: 1.5rem; }
    .section-heading { align-items: flex-start; flex-direction: column; gap: 1.5rem; }
    .intro-section h2, .join-inner h2 { font-size: 3.4rem; }
    .photo-editorial-grid { display: block; }
    .photo-tile { margin: 0 0 3.5rem; }
    .photo-tile--landscape { width: 100%; margin-left: 0; }
    .photo-tile--portrait, .photo-tile--slot-wide.photo-tile--portrait { width: 78%; margin-left: auto; }
    .photo-tile--square { width: 88%; }
    .gallery-note { display: grid; margin-bottom: 1rem; }
    .event-row { grid-template-columns: 4.7rem 1fr; }
    .event-row time strong { font-size: 2.7rem; }
    .event-row > p { grid-column: 2; }
    .event-arrow { display: none; }
    .article-grid { grid-template-columns: 1fr; gap: 3rem; }
    .article-card--feature, .article-card:last-child { grid-column: auto; }
    .page-intro { min-height: 25rem; padding-block: 3rem 4rem; }
    .page-intro h1 { font-size: 3.9rem; }
    .story-photo { max-width: 88%; }
    .story-copy h2, .club-practical h2 { font-size: 3.25rem; }
    .practical-list > div { grid-template-columns: 1fr; }
    .program-section { padding-block: 3.75rem; }
    .program-month { align-items: flex-end; gap: .75rem; }
    .program-month h2 { font-size: clamp(2rem, 9vw, 2.45rem); }
    .program-month p { padding-bottom: .2rem; white-space: nowrap; text-align: right; }
    .program-item { grid-template-columns: 1fr; gap: 1.5rem; padding: 2.6rem 0 3rem; }
    .program-item time { gap: .85rem; }
    .program-item time > strong { font-size: 4.75rem; }
    .program-item h3 { font-size: clamp(2.45rem, 12vw, 3.6rem); }
    .album-index { gap: 6rem; }
    .album-entry--portrait .album-entry-image { width: 82%; }
    .album-entry-copy h2 { font-size: 3.4rem; }
    .gallery-intro > .text-link { margin-bottom: 4.5rem; }
    .gallery-intro h1 { font-size: clamp(3.8rem, 17vw, 6rem); }
    .photo-gallery { grid-template-columns: 1fr; gap: 4.5rem; }
    .photo-gallery-item--portrait { width: 86%; }
    .lightbox-frame { grid-template-columns: 1fr; padding: 3.5rem .75rem 4rem; }
    .lightbox-arrow { position: absolute; z-index: 2; bottom: .75rem; }
    .lightbox-arrow--previous { left: calc(50% - 4.5rem); }
    .lightbox-arrow--next { right: calc(50% - 4.5rem); }
    .lightbox-figure img { max-height: calc(100dvh - 11rem); }
    .lightbox-figure figcaption { max-height: 6rem; overflow-y: auto; }
    .lightbox-counter { bottom: 1.75rem; }
    .masonry-grid { display: block; }
    .gallery-piece, .gallery-piece--portrait, .gallery-piece--wide, .gallery-piece--crop-high { margin: 0 0 3.5rem; }
    .gallery-piece--portrait, .gallery-piece--crop { width: 78%; margin-left: auto; }
    .gallery-piece--square { width: 90%; }
    .blog-row { grid-template-columns: 2rem 1fr; }
    .blog-row-image { grid-column: 2; }
    .blog-row > div:last-child { grid-column: 2; }
    .contact-panel, .contact-form-placeholder { padding: 3rem 1.5rem; }
    .login-section { display: block; min-height: auto; }
    .login-visual { height: 17rem; }
    .login-panel { min-height: 42rem; }
    .installer-intro h1, .installer-success h1 { font-size: 3.8rem; }
    .check-panel, .install-form { padding: 2rem 1.2rem; }
    .footer-main { grid-template-columns: 1fr 1fr; gap: 2rem; }
    .footer-statement { font-size: 2.8rem; }
    .footer-bottom { flex-direction: column; gap: .4rem; }
}

@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
    .js .reveal { opacity: 1; transform: none; }
}

/* Accounts and administration — follows the existing editorial system */
.form-fieldset { padding: 0; margin: 2.5rem 0 2rem; border: 0; border-top: 1px solid var(--line); }
.form-fieldset legend { padding: 2rem 0 .5rem; font-family: var(--display); font-size: 2rem; }
.form-columns { display: grid; grid-template-columns: 1fr 1fr; gap: 1.25rem; }
.field-help { margin: .45rem 0 0; color: var(--muted); font-size: .68rem; }
.settings-card label, .member-search label { display: block; margin: 1.15rem 0 .45rem; font-size: .65rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.settings-card label small { color: var(--muted); font-weight: 400; letter-spacing: 0; text-transform: none; }
.settings-card input, .settings-card select, .member-search input, .copy-field input {
    width: 100%; min-height: 3.5rem; padding: .8rem .1rem; border: 0; border-bottom: 1px solid var(--ink); border-radius: 0; background: transparent; color: var(--ink); outline: none;
}
.settings-card input:focus, .settings-card select:focus, .member-search input:focus { border-bottom-color: var(--amber-dark); box-shadow: 0 1px 0 var(--amber-dark); }
.settings-card input:disabled { color: var(--muted); opacity: .75; }
.settings-card .button { margin-top: 2rem; }
.settings-card h2 { margin-bottom: 2rem; font-size: clamp(2.4rem, 4vw, 4rem); }
.settings-card .checkbox-row { display: flex; gap: .8rem; align-items: flex-start; text-transform: none; }
.settings-card .checkbox-row input { width: auto; min-height: 0; margin-top: .2rem; }
.social-consent-card { grid-column: 1 / -1; }
.consent-state { padding: 1rem; border-left: 3px solid var(--amber-dark); background: var(--sand); }
.account-page { padding-block: clamp(4rem, 8vw, 8rem); }
.account-heading { display: flex; align-items: flex-end; justify-content: space-between; gap: 3rem; padding-bottom: 4rem; border-bottom: 1px solid var(--line); }
.account-heading h1 { margin: 0; font-size: clamp(4rem, 8vw, 8rem); letter-spacing: -.05em; }
.account-actions { display: flex; align-items: center; gap: 1.5rem; }
.logout-form { margin: 0; }
.text-button { padding: .65rem 0; border: 0; border-bottom: 1px solid currentColor; background: transparent; color: var(--ink); cursor: pointer; font-size: .68rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.profile-summary { display: grid; grid-template-columns: repeat(4, 1fr); padding: 0; margin: 4rem 0; border-top: 1px solid var(--line); }
.profile-summary div { padding: 1.5rem 1.5rem 1.5rem 0; border-bottom: 1px solid var(--line); }
.profile-summary dt { color: var(--muted); font-size: .62rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.profile-summary dd { margin: .7rem 0 0; overflow-wrap: anywhere; font-family: var(--display); font-size: 1.4rem; }
.profile-summary--stacked { grid-template-columns: 1fr; margin: 0; }
.future-modules, .settings-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 2rem; margin-top: 4rem; }
.future-modules article, .settings-card { padding: clamp(2rem, 4vw, 4rem); border: 1px solid var(--line); background: var(--paper); }
.future-modules h2 { font-size: clamp(2.5rem, 4vw, 4rem); }
.future-modules p:not(.eyebrow) { color: var(--muted); }

.page-admin .site-footer { display: none; }
.admin-shell { display: grid; grid-template-columns: 16rem minmax(0, 1fr); min-height: calc(100svh - var(--header-height)); background: var(--paper-pure); }
.admin-nav { display: flex; flex-direction: column; padding: 2rem; background: var(--ink); color: var(--paper); }
.admin-nav-brand { display: flex; gap: .8rem; align-items: center; margin-bottom: 3rem; font-family: var(--display); font-size: 1.15rem; }
.admin-nav-brand span { display: grid; width: 2.5rem; height: 2.5rem; place-items: center; border: 1px solid var(--line-light); border-radius: 50%; font-family: var(--sans); font-size: .55rem; font-weight: 800; }
.admin-nav nav { display: grid; }
.admin-nav nav a, .admin-nav nav > span { display: flex; align-items: center; justify-content: space-between; gap: .6rem; padding: .85rem 0; border-bottom: 1px solid var(--line-light); font-size: .72rem; }
.admin-nav nav a[aria-current="page"] { color: var(--amber); }
.admin-nav nav > span { color: rgba(255,255,255,.38); }
.admin-nav nav small { font-size: .5rem; text-transform: uppercase; }
.admin-nav-footer { display: grid; gap: .8rem; align-items: start; margin-top: auto; padding-top: 3rem; font-size: .72rem; }
.admin-nav .text-button { color: var(--paper); }
.admin-content { min-width: 0; padding: clamp(2.5rem, 6vw, 6rem); }
.admin-heading { display: flex; align-items: end; justify-content: space-between; gap: 3rem; margin-bottom: 4rem; }
.admin-heading h1 { margin: 0; font-size: clamp(4rem, 7vw, 7.5rem); letter-spacing: -.05em; }
.admin-heading > p { max-width: 20rem; color: var(--muted); }
.admin-heading--compact { padding-bottom: 2rem; border-bottom: 1px solid var(--line); }
.admin-heading--compact h1 { font-size: clamp(3.5rem, 6vw, 6rem); }
.admin-cards { display: grid; grid-template-columns: repeat(4, 1fr); border-top: 1px solid var(--line); border-left: 1px solid var(--line); }
.admin-card { position: relative; min-height: 22rem; padding: 2rem; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.admin-card > span { color: var(--muted); font-size: .6rem; }
.admin-card .eyebrow { margin-top: 4rem; }
.admin-card strong { display: block; font-family: var(--display); font-size: 5rem; font-weight: 400; line-height: 1; }
.admin-card small { color: var(--muted); }
.admin-card em { position: absolute; right: 2rem; bottom: 2rem; font-size: .65rem; font-style: normal; font-weight: 700; text-transform: uppercase; }
.admin-card--active { transition: background 220ms var(--ease), color 220ms var(--ease); }
.admin-card--active:hover { background: var(--ink); color: var(--paper); }
.admin-two-columns { display: grid; grid-template-columns: minmax(0, 1.65fr) minmax(18rem, .7fr); gap: 3rem; align-items: start; }
.member-search { margin-bottom: 2rem; }
.member-search > div, .copy-field { display: flex; gap: 1rem; }
.member-list { border-top: 1px solid var(--line); }
.member-row { display: grid; grid-template-columns: 2.5rem minmax(10rem, 1fr) auto auto 1rem; gap: 1rem; align-items: center; padding: 1.2rem 0; border-bottom: 1px solid var(--line); }
.member-row strong, .member-row small { display: block; }
.member-row small { color: var(--muted); font-size: .66rem; overflow-wrap: anywhere; }
.member-avatar { display: grid; width: 2.4rem; height: 2.4rem; place-items: center; border-radius: 50%; background: var(--sand); font-size: .65rem; font-weight: 800; }
.role-badge, .status-dot { white-space: nowrap; font-size: .62rem; font-weight: 700; text-transform: uppercase; }
.status-dot { color: var(--muted); }
.status-dot::before { display: inline-block; width: .45rem; height: .45rem; margin-right: .45rem; border-radius: 50%; background: #9c403b; content: ""; }
.status-dot.is-active::before { background: #558266; }
.invite-card { position: sticky; top: 2rem; }
.invite-card > p:not(.eyebrow) { color: var(--muted); font-size: .78rem; }
.invitation-result { padding: 1.5rem; margin: 0 0 2rem; border: 1px solid var(--amber-dark); background: rgba(223,155,93,.1); }
.invitation-result p { margin-bottom: .5rem; }
.copy-field input { overflow: hidden; background: rgba(255,255,255,.5); font-family: monospace; font-size: .7rem; }
.empty-state { padding: 2rem 0; color: var(--muted); }

.activation-page { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(3rem, 8vw, 8rem); align-items: center; min-height: 72svh; padding-block: 5rem; }
.activation-intro h1, .activation-message h1 { margin-bottom: 2rem; font-size: clamp(4rem, 8vw, 8rem); letter-spacing: -.05em; }
.activation-intro > p:last-child, .activation-message > p:not(.eyebrow) { color: var(--muted); }
.activation-form { max-width: 34rem; width: 100%; justify-self: end; }
.activation-message { grid-column: 1 / -1; max-width: 50rem; margin-inline: auto; text-align: center; }

@media (max-width: 1050px) {
    .admin-cards { grid-template-columns: 1fr 1fr; }
    .admin-two-columns { grid-template-columns: 1fr; }
    .invite-card { position: static; }
}

@media (max-width: 820px) {
    .admin-shell { grid-template-columns: minmax(0, 1fr); }
    .admin-nav { display: block; padding: 1.2rem; }
    .admin-nav-brand { margin-bottom: 1rem; }
    .admin-nav nav { display: flex; min-width: 0; gap: 1.5rem; overflow-x: auto; }
    .admin-nav nav a, .admin-nav nav > span { flex: 0 0 auto; border: 0; }
    .admin-nav-footer { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .75rem 1.5rem; padding-top: 1rem; margin-top: 1rem; border-top: 1px solid var(--line-light); }
    .account-heading, .admin-heading { align-items: flex-start; flex-direction: column; }
    .profile-summary { grid-template-columns: 1fr 1fr; }
    .activation-page { grid-template-columns: 1fr; }
    .activation-form { justify-self: stretch; max-width: none; }
}

@media (max-width: 560px) {
    .form-columns, .future-modules, .settings-grid, .admin-cards { grid-template-columns: 1fr; }
    .account-actions { align-items: flex-start; flex-direction: column; }
    .profile-summary { grid-template-columns: 1fr; }
    .admin-content { padding: 2rem 1rem 4rem; }
    .member-row { grid-template-columns: 2.5rem 1fr 1rem; }
    .member-row .role-badge, .member-row .status-dot { grid-column: 2; }
    .copy-field, .member-search > div { flex-direction: column; }
}

/* Dynamic annual programme */
.year-navigation { display: flex; gap: 2rem; padding-block: 1.25rem; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.year-navigation a, .admin-year-navigation a { position: relative; padding: .35rem 0; color: var(--muted); font-size: .73rem; font-weight: 700; letter-spacing: .1em; }
.year-navigation a[aria-current="page"], .admin-year-navigation a[aria-current="page"] { color: var(--ink); }
.year-navigation a[aria-current="page"]::after, .admin-year-navigation a[aria-current="page"]::after { position: absolute; right: 0; bottom: 0; left: 0; height: 1px; background: var(--amber-dark); content: ""; }
.program-item { transition: opacity 220ms var(--ease); }
.program-item.is-past { opacity: .56; }
.program-item.is-past:hover, .program-item.is-past:focus-within { opacity: .82; }
.calendar-link { display: inline-block; padding-bottom: .2rem; margin-top: 1.25rem; border-bottom: 1px solid var(--line); color: var(--muted); font-size: .63rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.calendar-link:hover { color: var(--ink); border-color: var(--ink); }
.program-empty { max-width: 70rem; min-height: 30rem; }
.program-empty h2 { max-width: 50rem; margin-bottom: 2rem; font-size: clamp(3rem, 6vw, 6rem); }
.program-empty > p:last-child, .event-empty { color: var(--muted); }
.event-empty { padding: 3rem 0; border-bottom: 1px solid var(--line); font-family: var(--display); font-size: 1.5rem; }
.event-empty p { margin: 0; }

/* Programme administration */
.program-admin-toolbar { display: flex; align-items: end; justify-content: space-between; gap: 2rem; margin-bottom: 2rem; }
.admin-year-navigation { display: flex; flex-wrap: wrap; gap: 1.5rem; }
.program-admin-toolbar form { display: flex; align-items: center; gap: .8rem; }
.program-admin-toolbar label { font-size: .62rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.program-admin-toolbar select { min-height: 2.8rem; padding: .4rem 2rem .4rem .6rem; border: 0; border-bottom: 1px solid var(--line); background: transparent; }
.admin-event-list { border-top: 1px solid var(--line); }
.admin-event-row { display: grid; grid-template-columns: 6.5rem minmax(14rem, 1fr) auto minmax(12rem, auto); gap: 1.5rem; align-items: center; padding: 1.75rem 0; border-bottom: 1px solid var(--line); }
.admin-event-row > time { display: flex; gap: .65rem; align-items: center; }
.admin-event-row > time strong { font-family: var(--display); font-size: 3rem; font-weight: 400; line-height: 1; }
.admin-event-row > time span { color: var(--muted); font-size: .62rem; line-height: 1.5; text-transform: uppercase; }
.admin-event-main h2 { margin: .3rem 0 .55rem; font-size: clamp(1.6rem, 2.5vw, 2.5rem); line-height: 1.05; }
.admin-event-main p { margin: 0; color: var(--muted); font-size: .72rem; }
.publication-status { display: inline-flex; align-items: center; white-space: nowrap; color: var(--muted); font-size: .61rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.publication-status::before { width: .45rem; height: .45rem; margin-right: .5rem; border-radius: 50%; background: var(--amber-dark); content: ""; }
.publication-status.is-published { color: #466b55; }
.publication-status.is-published::before { background: #558266; }
.event-row-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .35rem .8rem; }
.event-row-actions form { display: inline; margin: 0; }
.event-row-actions a, .event-row-actions button { padding: .2rem 0; border: 0; border-bottom: 1px solid transparent; background: transparent; color: var(--muted); cursor: pointer; font-size: .61rem; font-weight: 700; text-transform: uppercase; }
.event-row-actions a:hover, .event-row-actions button:hover { border-color: currentColor; color: var(--ink); }
.event-editor-layout { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(16rem, .5fr); gap: 3rem; align-items: start; }
.event-editor.settings-card { padding: clamp(2rem, 5vw, 5rem); }
.settings-card textarea { width: 100%; padding: .9rem .1rem; border: 0; border-bottom: 1px solid var(--ink); border-radius: 0; background: transparent; color: var(--ink); outline: none; resize: vertical; }
.settings-card textarea:focus { border-bottom-color: var(--amber-dark); box-shadow: 0 1px 0 var(--amber-dark); }
.event-field--title input { min-height: 4.5rem; font-family: var(--display); font-size: clamp(1.8rem, 4vw, 3.2rem); }
.field-error { margin: .45rem 0 0; color: #8b3430; font-size: .68rem; }
.event-editor-actions { display: flex; flex-wrap: wrap; gap: 1rem; margin-top: 2.5rem; }
.event-editor-actions .button { margin-top: 0; }
.event-editor-aside { position: sticky; top: 2rem; padding: 2rem; border-top: 1px solid var(--line); }
.event-editor-aside h2 { font-size: 2.5rem; }
.event-editor-aside > p:not(.eyebrow) { color: var(--muted); font-size: .78rem; }
.event-secondary-actions { display: grid; gap: 1rem; padding-top: 2rem; margin-top: 2rem; border-top: 1px solid var(--line); }
.event-secondary-actions form { margin: 0; }
.text-button--danger { color: #8b3430; }
.button--danger { border-color: #8b3430; background: #8b3430; color: var(--white); }
.button--danger:hover { border-color: var(--ink); background: var(--ink); }
.destructive-confirmation { max-width: 54rem; padding-block: clamp(3rem, 8vw, 8rem); }
.destructive-confirmation h1 { margin-bottom: 2rem; font-size: clamp(4rem, 8vw, 8rem); letter-spacing: -.05em; }
.destructive-confirmation > p:not(.eyebrow) { max-width: 40rem; color: var(--muted); }
.destructive-confirmation > div { display: flex; flex-wrap: wrap; gap: 1rem; margin-top: 3rem; }
.destructive-confirmation form { margin: 0; }
.deletion-photo-preview { width: auto; max-height: 25rem; margin-bottom: 2rem; }

/* Gallery administration */
.admin-album-list { border-top: 1px solid var(--line); }
.admin-album-row { display: grid; grid-template-columns: 10rem minmax(14rem, 1fr) auto minmax(8rem, auto); gap: 2rem; align-items: center; padding: 1.5rem 0; border-bottom: 1px solid var(--line); }
.admin-album-cover { display: flex; height: 7rem; align-items: center; justify-content: center; overflow: hidden; background: var(--sand); }
.admin-album-cover img { width: 100%; height: 100%; object-fit: contain; }
.admin-album-cover span { font-family: var(--display); font-size: 1.5rem; }
.admin-album-row h2 { margin: .25rem 0 .4rem; font-size: clamp(1.7rem, 3vw, 2.7rem); }
.admin-album-row small { color: var(--muted); font-size: .66rem; }
.album-create-form { max-width: 62rem; }
.gallery-admin-intro { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(18rem, .65fr); gap: 3rem; align-items: start; }
.gallery-settings { margin: 0; }
.gallery-publication-panel { position: sticky; top: 2rem; padding: 2.5rem; border-top: 1px solid var(--line); }
.gallery-publication-panel h2 { margin-bottom: 1.5rem; font-size: clamp(2.2rem, 4vw, 3.8rem); }
.gallery-publication-panel > p:not(.eyebrow) { color: var(--muted); }
.gallery-publication-panel .button { margin: 1rem 0 2rem; }
.gallery-upload-section { display: grid; grid-template-columns: minmax(16rem, .6fr) minmax(0, 1.4fr); gap: 3rem; padding-block: clamp(5rem, 8vw, 8rem); border-bottom: 1px solid var(--line); }
.gallery-upload-section h2 { margin-bottom: 1.5rem; font-size: clamp(3rem, 5vw, 5rem); }
.gallery-upload-section > div > p:last-child { max-width: 28rem; color: var(--muted); }
.gallery-upload-form > label:not(.photo-dropzone) { display: block; margin: 0 0 .45rem; font-size: .65rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.gallery-upload-form select { width: 100%; min-height: 3.2rem; padding: .5rem 0; border: 0; border-bottom: 1px solid var(--ink); background: transparent; }
.photo-dropzone { display: grid; min-height: 15rem; place-items: center; align-content: center; gap: .6rem; padding: 2rem; border: 1px dashed var(--muted); margin: 2rem 0 1.5rem; cursor: pointer; text-align: center; transition: border-color 180ms var(--ease), background 180ms var(--ease); }
.photo-dropzone strong { font-family: var(--display); font-size: clamp(1.7rem, 3vw, 2.8rem); font-weight: 400; }
.photo-dropzone span { color: var(--muted); font-size: .72rem; }
.photo-dropzone.is-dragging { border-color: var(--amber-dark); background: rgba(223,155,93,.1); }
.upload-queue { display: grid; gap: .45rem; padding: 0; margin: 1.5rem 0 0; list-style: none; }
.upload-queue li { display: grid; grid-template-columns: 2.5rem minmax(0, 1fr) auto; gap: 1rem; align-items: center; padding: .65rem 0; border-bottom: 1px solid var(--line); font-size: .7rem; }
.upload-queue li img { width: 2.5rem; height: 2.5rem; object-fit: cover; }
.upload-queue li span:nth-child(2) { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.upload-queue li.is-error span:last-child { color: #8b3430; }
.admin-photo-section { padding-block: clamp(5rem, 8vw, 8rem); }
.admin-photo-list { border-top: 1px solid var(--line); }
.admin-photo-item { display: grid; grid-template-columns: minmax(14rem, 22rem) minmax(0, 1fr); align-items: start; gap: 3rem; padding: 2rem 0; border-bottom: 1px solid var(--line); }
.admin-photo-preview { position: relative; display: block; align-self: start; overflow: hidden; background: var(--ink); }
.admin-photo-preview img { width: 100%; height: auto; }
.admin-photo-preview > span { position: absolute; top: .75rem; left: .75rem; display: grid; width: 2rem; height: 2rem; place-items: center; border-radius: 50%; background: var(--paper-pure); font-size: .62rem; font-weight: 800; }
.admin-photo-preview em { position: absolute; z-index: 1; right: .75rem; bottom: .75rem; padding: .35rem .55rem; background: var(--amber); color: var(--ink); font-size: .55rem; font-style: normal; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.admin-photo-preview em:nth-of-type(2) { bottom: 2.65rem; }
.admin-photo-controls { min-width: 0; }
.photo-order-actions, .photo-secondary-actions { display: flex; flex-wrap: wrap; gap: .6rem 1.2rem; }
.photo-order-actions form, .photo-secondary-actions form { margin: 0; }
.photo-order-actions button, .photo-secondary-actions button { padding: .25rem 0; border: 0; border-bottom: 1px solid currentColor; background: transparent; color: var(--muted); cursor: pointer; font-size: .62rem; font-weight: 700; text-transform: uppercase; }
.photo-order-actions button:disabled { cursor: default; opacity: .35; }
.admin-photo-controls details { margin: 2rem 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.admin-photo-controls summary { padding: 1rem 0; cursor: pointer; font-family: var(--display); font-size: 1.4rem; }
.photo-metadata-form.settings-card { padding: 1rem 0 2rem; border: 0; background: transparent; }
.photo-metadata-form .checkbox-row { display: flex; gap: .7rem; align-items: center; text-transform: none; }
.photo-metadata-form .checkbox-row input { width: auto; min-height: 0; }
.photo-secondary-actions { justify-content: space-between; }
.gallery-danger-zone { padding: 3rem 0; border-top: 1px solid #8b3430; }
.gallery-danger-zone form { margin: 0; }

/* Member contributions and photo moderation */
.photo-status-summary { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; padding: 0; margin: 3rem 0 0; background: var(--line); border: 1px solid var(--line); }
.photo-status-summary div { padding: 1.3rem 1.5rem; background: var(--paper); }
.photo-status-summary dt { color: var(--muted); font-size: .65rem; font-weight: 700; letter-spacing: .09em; text-transform: uppercase; }
.photo-status-summary dd { margin: .45rem 0 0; font-family: var(--display); font-size: 2.5rem; line-height: 1; }
.member-photo-upload { display: grid; grid-template-columns: minmax(16rem, .65fr) minmax(0, 1.35fr); gap: clamp(3rem, 8vw, 8rem); align-items: start; padding-block: clamp(5rem, 9vw, 9rem); border-bottom: 1px solid var(--line); }
.member-photo-upload > div h2 { margin-bottom: 2rem; font-size: clamp(3rem, 5vw, 5.5rem); letter-spacing: -.04em; }
.member-photo-upload > div > p:not(.eyebrow) { max-width: 29rem; color: var(--muted); }
.member-photo-upload > * { min-width: 0; }
.member-photo-upload .settings-card { margin: 0; }
.member-photo-history { padding-top: clamp(5rem, 8vw, 8rem); }
.contribution-list, .moderation-list { border-top: 1px solid var(--line); }
.contribution-item { display: grid; grid-template-columns: 10rem minmax(12rem, 1fr) auto auto; gap: 2rem; align-items: center; padding: 1.5rem 0; border-bottom: 1px solid var(--line); }
.contribution-thumb, .moderation-thumb { display: flex; height: 7rem; align-items: center; justify-content: center; overflow: hidden; background: var(--sand); }
.contribution-thumb img, .moderation-thumb img { width: 100%; height: 100%; object-fit: contain; }
.contribution-copy h3 { margin: .25rem 0 .6rem; font-size: clamp(1.8rem, 3vw, 3rem); }
.contribution-copy > p:not(.eyebrow) { margin: .2rem 0; color: var(--muted); font-size: .72rem; }
.contribution-copy .rejection-copy { color: #7b342f !important; }
.photo-review-status { display: inline-flex; align-items: center; gap: .45rem; white-space: nowrap; font-size: .62rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; }
.photo-review-status::before { width: .45rem; height: .45rem; border-radius: 50%; background: var(--muted); content: ""; }
.photo-review-status.is-published::before { background: #558266; }
.photo-review-status.is-rejected::before { background: #9c403b; }
.photo-review-status.is-pending::before { background: var(--amber-dark); }
.member-photo-empty { min-height: 12rem; }
.member-photo-detail-layout { display: grid; grid-template-columns: minmax(0, 1.45fr) minmax(18rem, .55fr); gap: clamp(3rem, 8vw, 8rem); align-items: start; padding-top: 4rem; }
.member-photo-large { display: flex; min-height: 24rem; align-items: center; justify-content: center; margin: 0; background: var(--ink); }
.member-photo-large img { width: auto; max-width: 100%; height: auto; max-height: 75svh; }
.member-photo-facts { padding-top: 1rem; }
.member-photo-facts dl, .review-photo-facts dl { margin: 2rem 0; border-top: 1px solid var(--line); }
.member-photo-facts dl div, .review-photo-facts dl div { display: grid; grid-template-columns: 1fr 1.3fr; gap: 1rem; padding: .9rem 0; border-bottom: 1px solid var(--line); }
.member-photo-facts dt, .review-photo-facts dt { color: var(--muted); font-size: .62rem; font-weight: 700; text-transform: uppercase; }
.member-photo-facts dd, .review-photo-facts dd { margin: 0; font-size: .75rem; }
.member-photo-facts > p:not(.eyebrow), .review-photo-facts > p:not(.eyebrow) { color: var(--muted); }
.member-photo-context-form.settings-card { padding: 2rem 0 0; margin: 2rem 0 0; border: 0; border-top: 1px solid var(--line); background: transparent; }
.member-photo-social-form.settings-card { padding: 2rem 0; margin: 2rem 0 0; border: 0; border-block: 1px solid var(--line); background: transparent; }
.member-photo-social-form.settings-card h2 { margin: .35rem 0 1.5rem; font-size: clamp(2rem, 3vw, 2.8rem); }
.member-photo-social-form.settings-card .button { margin-top: 1.5rem; }
.member-photo-context-form.settings-card h2 { margin: .35rem 0 1.5rem; font-size: clamp(2rem, 3vw, 2.8rem); }
.member-photo-context-form.settings-card .notice { margin: 0 0 1.5rem; }
.member-photo-context-form.settings-card .button { margin-top: 1.5rem; }
.member-photo-delete-form { padding-top: 1.5rem; margin-top: 1.5rem; border-top: 1px solid var(--line); }
.rejection-panel { padding: 1.5rem; margin: 2rem 0; border-left: 3px solid #9c403b; background: rgba(156,64,59,.07); }
.rejection-panel p:last-child { margin: 0; }
.moderation-filters { display: flex; gap: 2rem; padding: 1rem 0; border-bottom: 1px solid var(--line); margin-bottom: 2rem; overflow-x: auto; }
.moderation-filters a { position: relative; flex: 0 0 auto; padding: .4rem 0; color: var(--muted); font-size: .68rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.moderation-filters a[aria-current="page"] { color: var(--ink); }
.moderation-filters a[aria-current="page"]::after { position: absolute; right: 0; bottom: 0; left: 0; height: 1px; background: var(--amber-dark); content: ""; }
.moderation-item { display: grid; grid-template-columns: 12rem minmax(14rem, 1fr) auto auto; gap: 2rem; align-items: center; padding: 1.5rem 0; border-bottom: 1px solid var(--line); }
.moderation-thumb { height: 8.5rem; }
.moderation-item h2 { margin: .25rem 0 .7rem; font-size: clamp(2rem, 3.5vw, 3.6rem); }
.moderation-item > div > p:last-child { margin: 0; color: var(--muted); font-size: .72rem; }
.review-photo-stage { display: flex; min-height: 30rem; align-items: center; justify-content: center; padding: clamp(1rem, 3vw, 3rem); margin: 0 0 clamp(4rem, 8vw, 8rem); background: var(--ink); }
.review-photo-stage img { width: auto; max-width: 100%; height: auto; max-height: 75svh; }
.review-photo-layout { display: grid; grid-template-columns: minmax(16rem, .55fr) minmax(0, 1.45fr); gap: clamp(3rem, 7vw, 7rem); align-items: start; }
.review-photo-facts { position: sticky; top: 2rem; }
.review-photo-facts h2 { font-size: clamp(2.5rem, 4vw, 4.5rem); }
.review-actions { display: grid; gap: 2rem; }
.review-actions .settings-card { margin: 0; }
.review-rejection { border-color: rgba(156,64,59,.45); }

/* Blog publishing and long-form articles */
.article-card--without-image { padding-top: 1.4rem; border-top: 1px solid var(--line); }
.journal-empty { grid-column: 1 / -1; max-width: 48rem; padding: 3rem 0; border-top: 1px solid var(--line); }
.journal-empty h3, .blog-empty h2 { margin-bottom: 1.5rem; font-size: clamp(2.8rem, 5vw, 5rem); }
.blog-lead--without-image { grid-template-columns: minmax(0, .72fr); padding-top: 3rem; border-top: 1px solid var(--line); }
.blog-row--without-image { grid-template-columns: 3rem 1fr; }
.blog-row .text-link { margin-top: 1.25rem; }
.blog-empty { min-height: 32rem; }
.blog-empty > p:last-child { max-width: 38rem; color: var(--muted); }
.article-header { max-width: 76rem; padding-block: clamp(5rem, 10vw, 10rem) clamp(3rem, 6vw, 6rem); }
.article-back-link { margin-bottom: clamp(4rem, 8vw, 8rem); }
.article-header h1 { max-width: 72rem; margin-bottom: 2.5rem; font-size: clamp(4rem, 8.3vw, 8.5rem); letter-spacing: -.055em; }
.article-deck { max-width: 60rem; margin: 0; color: var(--muted); font-family: var(--display); font-size: clamp(1.35rem, 2.2vw, 2rem); line-height: 1.45; }
.article-cover { margin-bottom: clamp(4rem, 8vw, 8rem); }
.article-cover--portrait.shell { width: min(42rem, calc(100vw - 3rem)); }
.article-cover--square.shell { width: min(62rem, calc(100vw - 3rem)); }
.article-cover img { width: 100%; height: auto; object-fit: contain; }
.article-cover figcaption, .article-body-image figcaption { padding-top: .8rem; color: var(--muted); font-size: .7rem; }
.article-prose.shell { width: min(60rem, calc(100vw - 3rem)); }
.article-prose { padding-bottom: clamp(5rem, 9vw, 9rem); color: var(--ink-soft); font-family: var(--display); font-size: clamp(1.12rem, 1.5vw, 1.3rem); line-height: 1.78; }
.article-prose p, .article-prose ul, .article-prose ol, .article-prose blockquote { margin-bottom: 1.7em; }
.article-prose h2 { margin: 2.2em 0 .75em; font-size: clamp(2.6rem, 5vw, 4.3rem); line-height: 1.05; }
.article-prose h3 { margin: 2em 0 .7em; font-size: clamp(1.9rem, 3vw, 2.7rem); line-height: 1.1; }
.article-prose h4, .article-prose h5, .article-prose h6 { margin-top: 1.8em; color: var(--ink); font-family: var(--display); font-weight: 400; }
.article-prose h4 { margin-bottom: .65em; font-size: clamp(1.55rem, 2.4vw, 2.05rem); line-height: 1.18; }
.article-prose h5 { margin-bottom: .6em; font-size: clamp(1.3rem, 2vw, 1.65rem); line-height: 1.25; }
.article-prose h6 { margin-bottom: .55em; color: var(--amber-dark); font-size: clamp(1.05rem, 1.5vw, 1.2rem); letter-spacing: .06em; line-height: 1.3; text-transform: uppercase; }
.article-prose ul, .article-prose ol { padding-left: 1.4em; }
.article-prose li { margin-bottom: .45em; }
.article-prose blockquote { padding: .5rem 0 .5rem 2rem; border-left: 3px solid var(--amber); color: var(--muted); font-size: 1.18em; font-style: italic; }
.article-prose blockquote p { margin: 0; }
.article-prose a { border-bottom: 1px solid var(--amber-dark); color: var(--amber-dark); }
.article-body-image { width: min(70rem, calc(100vw - 3rem)); margin: clamp(3rem, 7vw, 6rem) 50%; transform: translateX(-50%); }
.article-body-image img { width: 100%; height: auto; }
.article-footer { max-width: 76rem; padding-block: 3rem clamp(6rem, 10vw, 10rem); border-top: 1px solid var(--line); }

.admin-blog-summary { display: flex; align-items: center; justify-content: space-between; gap: 2rem; padding: 1.5rem 0; border-bottom: 1px solid var(--line); }
.admin-blog-summary > span { display: grid; gap: .2rem; }
.admin-blog-summary small { color: var(--amber-dark); font-size: .62rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.admin-blog-summary strong { font-family: var(--display); font-size: 1.5rem; font-weight: 400; }
.admin-blog-summary > span:last-child { color: var(--muted); font-size: .72rem; text-align: right; }
.blog-admin-toolbar .moderation-filters { margin-bottom: 0; }
.moderation-filters small { margin-left: .35rem; font-size: .55rem; }
.admin-post-list { border-top: 1px solid var(--line); }
.admin-post-row { display: grid; grid-template-columns: 10rem minmax(14rem, 1fr) auto minmax(10rem, auto); gap: 2rem; align-items: center; padding: 1.5rem 0; border-bottom: 1px solid var(--line); }
.admin-post-cover { display: grid; height: 7rem; place-items: center; overflow: hidden; background: var(--sand); }
.admin-post-cover img { width: 100%; height: 100%; object-fit: contain; }
.admin-post-cover span { font-family: var(--display); font-size: 2rem; }
.admin-post-main h2 { margin: .25rem 0 .55rem; font-size: clamp(1.8rem, 3vw, 3rem); }
.admin-post-main > p:last-child { display: -webkit-box; margin: 0; overflow: hidden; color: var(--muted); font-size: .72rem; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.blog-editor-layout { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(17rem, .45fr); gap: 3rem; align-items: start; }
.blog-editor.settings-card { min-width: 0; padding: clamp(2rem, 5vw, 5rem); }
.markdown-field { margin-top: 2rem; }
.markdown-toolbar { display: flex; flex-wrap: wrap; gap: .35rem; padding: .65rem; border: 1px solid var(--line); border-bottom: 0; background: var(--sand); }
.markdown-toolbar button { min-height: 2.4rem; padding: .4rem .7rem; border: 1px solid transparent; background: var(--paper-pure); color: var(--ink); cursor: pointer; font-size: .65rem; }
.markdown-toolbar button:hover, .markdown-toolbar button:focus-visible { border-color: var(--amber-dark); }
.blog-editor #post-content { min-height: 34rem; padding: 1.2rem; border: 1px solid var(--line); background: var(--paper-pure); font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: .83rem; line-height: 1.7; }
.history-editor #history-content { min-height: 42rem; padding: 1.2rem; border: 1px solid var(--line); background: var(--paper-pure); font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: .83rem; line-height: 1.7; }
.blog-cover-fields { padding: 2rem 0 0; border: 0; border-top: 1px solid var(--line); margin: 3rem 0 0; }
.blog-cover-fields legend { padding: 2rem 0 0; font-family: var(--display); font-size: 2rem; }
.blog-cover-fields legend small { color: var(--muted); font-family: var(--sans); font-size: .65rem; }
.blog-cover-preview { display: flex; max-height: 24rem; align-items: center; justify-content: center; margin: 1.5rem 0; background: var(--ink); }
.blog-cover-preview img { width: auto; max-width: 100%; height: auto; max-height: 24rem; }
.blog-editor .checkbox-row { display: flex; gap: .7rem; align-items: center; text-transform: none; }
.blog-editor .checkbox-row input { width: auto; min-height: 0; }
.blog-editor-aside { position: sticky; top: 2rem; padding: 2rem; border-top: 1px solid var(--line); }
.blog-editor-aside h2 { margin-bottom: 1.5rem; font-size: 2.5rem; }
.blog-editor-aside > p:not(.eyebrow) { color: var(--muted); font-size: .78rem; }
.blog-editor-aside .profile-summary { margin-top: 2rem; }
.blog-editor-aside .profile-summary dd { font-size: 1rem; overflow-wrap: anywhere; }
.blog-server-preview { grid-column: 1; min-width: 0; border-top: 1px solid var(--line); }
.blog-server-preview summary { padding: 1rem 0; cursor: pointer; font-size: .7rem; font-weight: 700; text-transform: uppercase; }
.blog-delete-action { margin-top: 2rem; }
.blog-images-admin { padding-top: clamp(5rem, 8vw, 8rem); }
.blog-image-upload-layout { display: grid; grid-template-columns: minmax(15rem, .6fr) minmax(0, 1.4fr); gap: 3rem; align-items: start; padding-bottom: 4rem; }
.blog-image-upload-layout h3 { font-size: clamp(2.2rem, 4vw, 4rem); }
.blog-image-upload-layout > div p { max-width: 28rem; color: var(--muted); }
.blog-image-admin-list { border-top: 1px solid var(--line); }
.blog-image-admin-item { display: grid; grid-template-columns: minmax(14rem, 24rem) minmax(0, 1fr); gap: 3rem; padding: 2rem 0; border-bottom: 1px solid var(--line); }
.blog-image-admin-item > figure { display: flex; align-self: start; min-height: 10rem; max-height: 28rem; align-items: center; justify-content: center; margin: 0; background: var(--ink); }
.blog-image-admin-item > figure img { width: auto; max-width: 100%; height: auto; max-height: 28rem; }
.blog-image-reference { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; gap: .8rem; align-items: end; }
.blog-image-reference label { grid-column: 1 / -1; font-size: .62rem; font-weight: 700; text-transform: uppercase; }
.blog-image-reference input { min-width: 0; padding: .65rem; border: 1px solid var(--line); background: var(--sand); }
.blog-image-metadata.settings-card { padding: 1rem 0 1.5rem; border: 0; background: transparent; }
.blog-image-admin-item > div > form:last-child { margin: 0; }

/* Public site settings */
.member-session-idea-actions { display: flex; flex-wrap: wrap; gap: 1.25rem 2rem; align-items: center; margin-top: 2rem; }
.member-session-idea-actions > a { flex: 0 0 auto; }
.session-idea-member-page { padding-bottom: clamp(5rem, 9vw, 9rem); }
.session-idea-member-form-layout { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(16rem, .65fr); gap: clamp(3rem, 7vw, 7rem); align-items: start; }
.session-idea-member-form-layout .settings-card { display: grid; gap: .65rem; }
.session-idea-member-form-layout .settings-card .button { justify-self: start; margin-top: 1.5rem; }
.session-idea-member-form-layout aside { position: sticky; top: 2rem; padding-top: 1.5rem; border-top: 1px solid var(--line); }
.session-idea-member-form-layout aside h2 { margin: .4rem 0 1.5rem; font-size: clamp(2.7rem, 5vw, 5rem); }
.session-idea-member-form-layout aside > p:last-child { color: var(--muted); }
.member-idea-list { border-top: 1px solid var(--line); }
.member-idea-row { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(14rem, .6fr); gap: clamp(2rem, 6vw, 6rem); padding: 2rem 0; border-bottom: 1px solid var(--line); }
.member-idea-row h2 { margin: .35rem 0 .8rem; font-size: clamp(2.2rem, 4vw, 4rem); }
.member-idea-row > div:first-child > p:last-child { max-width: 52rem; margin: 0; color: var(--muted); }
.member-idea-meta { display: flex; align-items: flex-start; flex-direction: column; gap: .8rem; }
.member-idea-meta time, .member-idea-meta small { color: var(--muted); font-size: .68rem; }
.idea-status { display: inline-flex; min-height: 2rem; align-items: center; padding: .35rem .7rem; border: 1px solid var(--line); background: var(--sand); font-size: .62rem; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; }
.idea-status--selected, .idea-status--completed { border-color: rgba(43, 105, 69, .35); background: rgba(43, 105, 69, .1); color: #245f3c; }
.idea-status--considering, .idea-status--planned { border-color: rgba(172, 113, 25, .4); background: rgba(210, 151, 57, .12); color: #7a5015; }
.idea-status--rejected, .idea-status--archived { color: var(--muted); }
.idea-filters { display: flex; gap: 1rem; align-items: end; padding: 1.2rem 0 2.5rem; border-top: 1px solid var(--line); }
.idea-filters > div { min-width: 13rem; }
.idea-filters label { display: block; margin-bottom: .4rem; font-size: .62rem; font-weight: 700; text-transform: uppercase; }
.session-idea-list { border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.session-idea-list-head, .session-idea-row { display: grid; grid-template-columns: minmax(5.5rem, .65fr) minmax(11rem, 2fr) minmax(17rem, 2.8fr) auto; gap: clamp(.75rem, 1.5vw, 1.5rem); align-items: center; }
.session-idea-list-head { padding: .65rem 0; color: var(--muted); font-size: .56rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.session-idea-list-head > div, .session-idea-row-meta { display: grid; grid-template-columns: .9fr 1fr 1.25fr .9fr; gap: clamp(.6rem, 1.2vw, 1.2rem); align-items: center; }
.session-idea-row { padding: .9rem 0; border-top: 1px solid var(--line); }
.session-idea-row.is-completed { background: rgba(43, 105, 69, .045); }
.session-idea-row > .idea-status { justify-self: start; }
.session-idea-row-main { min-width: 0; }
.session-idea-row-main h2 { margin: 0 0 .3rem; font-size: clamp(1.35rem, 1.8vw, 1.8rem); line-height: 1.05; }
.session-idea-row-main p { display: -webkit-box; margin: 0; overflow: hidden; color: var(--muted); font-size: .7rem; line-height: 1.4; -webkit-box-orient: vertical; -webkit-line-clamp: 1; }
.session-idea-row-meta { min-width: 0; margin: 0; }
.session-idea-row-meta dt { display: none; }
.session-idea-row-meta dd { margin: 0; overflow-wrap: anywhere; font-size: .68rem; line-height: 1.35; }
.session-idea-row-meta div:nth-child(2) dd, .session-idea-row-meta time { white-space: nowrap; }
.session-idea-row > .text-link { justify-self: end; gap: .75rem; white-space: nowrap; }
.idea-heading-meta { display: flex; flex-wrap: wrap; gap: .5rem 1.5rem; margin-top: 1rem; color: var(--muted); font-size: .68rem; }
.idea-heading-meta strong { margin-right: .35rem; color: var(--ink); font-size: .6rem; letter-spacing: .08em; text-transform: uppercase; }
.idea-pilotage { padding-bottom: clamp(4rem, 7vw, 7rem); }
.idea-section-heading h2 { margin: .35rem 0 0; font-size: clamp(2.5rem, 4vw, 4rem); }
.idea-detail-summary { display: grid; grid-template-columns: minmax(0, .8fr) minmax(24rem, 1.2fr); gap: clamp(2rem, 4vw, 4rem); padding: 2rem 0 2.5rem; }
.idea-detail-summary > div > p:last-child { max-width: 58rem; font-family: var(--display); font-size: clamp(1.35rem, 2.2vw, 2rem); line-height: 1.35; }
.idea-detail-facts { grid-template-columns: repeat(2, minmax(0, 1fr)); margin: 0; }
.idea-detail-facts dd { font-size: 1.05rem; }
.idea-markdown-preview { padding: clamp(3rem, 6vw, 6rem) 0 clamp(5rem, 9vw, 9rem); border-top: 1px solid var(--line); }
.idea-markdown-preview .article-prose { width: min(52rem, 100%); padding-bottom: 0; margin-inline: auto; }
.idea-management-grid { display: grid; grid-template-columns: minmax(0, 1.45fr) minmax(20rem, .55fr); gap: 2rem; align-items: start; padding-top: 2rem; border-top: 1px solid var(--line); }
.idea-editor.settings-card { min-width: 0; }
.idea-editor > summary, .idea-action-details > summary { display: flex; align-items: center; justify-content: space-between; gap: 1rem; cursor: pointer; font-size: .68rem; font-weight: 700; letter-spacing: .08em; list-style: none; text-transform: uppercase; }
.idea-editor > summary::-webkit-details-marker, .idea-action-details > summary::-webkit-details-marker { display: none; }
.idea-editor > summary span, .idea-action-details > summary span { transition: transform .2s ease; }
.idea-editor[open] > summary span, .idea-action-details[open] > summary span { transform: rotate(90deg); }
.idea-editor[open] > summary, .idea-action-details[open] > summary { padding-bottom: 1rem; border-bottom: 1px solid var(--line); }
.idea-editor > form, .idea-action-details > form { padding-top: 1.5rem; }
.idea-editor h2, .idea-actions-column h2 { margin: .4rem 0 1.5rem; font-size: clamp(2rem, 3.5vw, 3.5rem); }
.idea-editor > form > .button { margin-top: 1.5rem; }
.idea-editor #idea-markdown { min-height: 38rem; padding: 1rem; border: 1px solid var(--line); background: var(--paper-pure); font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: .78rem; line-height: 1.65; }
.idea-actions-column { display: grid; gap: 1.5rem; }
.idea-actions-column .settings-card { margin: 0; padding: 1.6rem; }
.idea-actions-column .button { width: 100%; margin-top: 1rem; }
.idea-rating { display: grid; gap: .35rem; }
.idea-rating label { display: flex; align-items: center; gap: .7rem; padding: .35rem 0; cursor: pointer; }
.idea-rating input { width: auto; min-height: auto; }
.idea-rating span { color: var(--amber-dark); letter-spacing: .12em; }
.idea-rating small { margin-left: auto; color: var(--muted); }
.idea-vote-list ul { padding: 0; margin: 0; list-style: none; }
.idea-vote-list li { display: flex; align-items: center; justify-content: space-between; gap: .8rem; padding: .75rem 0; border-bottom: 1px solid var(--line); }
.idea-vote-list li > span { display: grid; gap: .2rem; }
.idea-vote-list li small { color: var(--amber-dark); letter-spacing: .08em; }
.idea-vote-list li form { display: flex; gap: .45rem; align-items: center; }
.idea-vote-list li select { min-width: 4.5rem; }
.idea-plan-actions { display: grid; gap: .6rem; }
.idea-delete-card { border-color: rgba(156,64,59,.25); }

.site-settings-page { max-width: 92rem; }
.site-settings-jump { position: sticky; z-index: 4; top: 0; display: flex; gap: 2rem; padding: 1rem 0; margin: 0 0 2rem; overflow-x: auto; border-bottom: 1px solid var(--line); background: var(--paper-pure); }
.site-settings-jump a { flex: 0 0 auto; color: var(--muted); font-size: .62rem; font-weight: 700; letter-spacing: .09em; text-transform: uppercase; }
.site-settings-jump a:hover, .site-settings-jump a:focus-visible { color: var(--amber-dark); }
.site-settings-form { display: grid; gap: 2rem; }
.site-settings-section.settings-card { display: grid; grid-template-columns: minmax(15rem, .65fr) minmax(0, 1.35fr); gap: clamp(2rem, 6vw, 6rem); scroll-margin-top: 5rem; }
.site-settings-section-heading h2 { margin: .5rem 0 1.5rem; font-size: clamp(2.7rem, 4.5vw, 4.8rem); }
.site-settings-section-heading > p:last-child { max-width: 27rem; color: var(--muted); font-size: .76rem; }
.site-settings-fields { min-width: 0; }
.site-settings-fields > .form-columns { margin-top: .4rem; }
.settings-subsection-heading { padding-top: 2.5rem; margin-top: 2.5rem; border-top: 1px solid var(--line); }
.settings-subsection-heading:first-child { padding-top: 0; margin-top: 0; border-top: 0; }
.settings-subsection-heading h3 { margin: .35rem 0 1rem; font-family: var(--display); font-size: clamp(1.8rem, 3vw, 2.7rem); font-weight: 400; }
.settings-media-editor { display: grid; grid-template-columns: minmax(12rem, .8fr) minmax(13rem, 1.2fr); gap: 2rem; align-items: start; padding-bottom: 1.5rem; margin-bottom: 1.5rem; border-bottom: 1px solid var(--line); }
.settings-media-editor.settings-media-editor--hero { grid-template-columns: minmax(0, 1.2fr) minmax(13rem, .8fr); }
.settings-media-preview { position: relative; display: grid; min-height: 12rem; place-items: center; margin: 0; overflow: hidden; background: var(--ink); }
.settings-media-preview img { display: block; width: 100%; height: auto; max-height: 22rem; object-fit: contain; }
.settings-media-preview--hero { min-width: 0; min-height: 0; aspect-ratio: 16 / 8; }
.settings-media-preview--hero img { width: 100%; height: 100%; max-height: none; object-fit: cover; }
.settings-media-preview.settings-media-preview--story { min-height: 0; background: transparent; }
.settings-media-preview--story img { width: 100%; max-width: 100%; height: auto; max-height: none; margin-inline: auto; object-fit: contain; }
.settings-media-preview figcaption { position: absolute; inset: auto .7rem .7rem; display: flex; align-items: center; justify-content: space-between; gap: .75rem; padding: .6rem .7rem; background: rgba(18,29,25,.86); color: var(--white); }
.settings-media-preview figcaption span { font-size: .59rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.settings-media-preview figcaption small { color: rgba(255,255,255,.7); font-size: .57rem; }
.settings-media-controls { min-width: 0; }
.settings-media-controls input[type="file"] { padding-block: .7rem; font-size: .72rem; }
.settings-media-controls .field-hint, .site-settings-fields > .field-hint { margin: .55rem 0 0; color: var(--muted); font-size: .65rem; line-height: 1.55; }
.settings-media-controls .settings-restore { min-height: 2.8rem; margin-top: 1rem; padding: .6rem .85rem; color: var(--muted); font-size: .62rem; }
.settings-media-controls .settings-restore:hover { border-color: var(--amber-dark); color: var(--amber-dark); }
.site-settings-actions { display: flex; align-items: center; justify-content: space-between; gap: 2rem; padding: 1rem 0 3rem; }
.site-settings-actions p { max-width: 35rem; margin: 0; color: var(--muted); font-size: .7rem; }
.site-settings-actions .button { flex: 0 0 auto; }

@media (max-width: 1100px) {
    .session-idea-list-head { display: none; }
    .session-idea-row { grid-template-columns: minmax(0, 1fr) auto; gap: .9rem 1.5rem; padding: 1.25rem 0; align-items: start; }
    .session-idea-row-main, .session-idea-row-meta { grid-column: 1 / -1; }
    .session-idea-row-main p { -webkit-line-clamp: 2; }
    .session-idea-row-meta { padding-top: .8rem; border-top: 1px solid var(--line); }
    .session-idea-row-meta dt { display: block; margin-bottom: .3rem; color: var(--muted); font-size: .55rem; font-weight: 700; letter-spacing: .07em; text-transform: uppercase; }
    .session-idea-row > .text-link { grid-column: 2; grid-row: 1; }
    .site-settings-section.settings-card { gap: 3rem; }
    .settings-media-editor.settings-media-editor--hero { grid-template-columns: minmax(0, 1fr); }
    .settings-media-editor--hero .settings-media-preview--hero { width: min(100%, 32rem); }
    .admin-event-row { grid-template-columns: 6rem minmax(12rem, 1fr) auto; }
    .event-row-actions { grid-column: 2 / -1; justify-content: flex-start; }
    .admin-album-row { grid-template-columns: 8rem minmax(12rem, 1fr) auto; }
    .admin-album-row .event-row-actions { grid-column: 2 / -1; }
    .contribution-item { grid-template-columns: 8rem minmax(12rem, 1fr) auto; }
    .contribution-item > .text-link { grid-column: 2 / -1; justify-self: start; }
    .moderation-item { grid-template-columns: 9rem minmax(12rem, 1fr) auto; }
    .moderation-item > .text-link { grid-column: 2 / -1; justify-self: start; }
    .admin-post-row { grid-template-columns: 8rem minmax(12rem, 1fr) auto; }
    .admin-post-row .event-row-actions { grid-column: 2 / -1; justify-content: flex-start; }
}

@media (max-width: 820px) {
    .member-session-idea-actions { align-items: flex-start; flex-direction: column; }
    .session-idea-member-form-layout, .idea-detail-summary, .idea-management-grid { grid-template-columns: 1fr; }
    .session-idea-member-form-layout aside { position: static; }
    .program-admin-toolbar { align-items: flex-start; flex-direction: column; }
    .event-editor-layout { grid-template-columns: 1fr; }
    .event-editor-aside { position: static; }
    .admin-event-row { grid-template-columns: 5.5rem 1fr; }
    .admin-event-row > .publication-status, .event-row-actions { grid-column: 2; }
    .gallery-admin-intro, .gallery-upload-section { grid-template-columns: 1fr; }
    .gallery-publication-panel { position: static; }
    .admin-photo-item { grid-template-columns: minmax(12rem, .7fr) minmax(0, 1.3fr); gap: 2rem; }
    .member-photo-upload, .member-photo-detail-layout, .review-photo-layout { grid-template-columns: 1fr; }
    .review-photo-facts { position: static; }
    .review-photo-stage, .member-photo-large { min-height: 18rem; }
    .blog-editor-layout, .blog-image-upload-layout { grid-template-columns: 1fr; }
    .blog-editor-aside { position: static; }
    .blog-image-admin-item { grid-template-columns: minmax(12rem, .7fr) minmax(0, 1.3fr); gap: 2rem; }
    .site-settings-section.settings-card { grid-template-columns: 1fr; }
    .settings-media-editor { grid-template-columns: minmax(12rem, .8fr) minmax(13rem, 1.2fr); }
}

@media (max-width: 560px) {
    .idea-filters { align-items: stretch; flex-direction: column; }
    .idea-filters > div, .idea-filters .button { width: 100%; }
    .member-idea-row { grid-template-columns: 1fr; gap: 1.5rem; }
    .session-idea-row { grid-template-columns: 1fr; }
    .session-idea-row-main, .session-idea-row-meta, .session-idea-row > .text-link { grid-column: 1; grid-row: auto; }
    .session-idea-row-meta { grid-template-columns: 1fr 1fr; }
    .session-idea-row > .text-link { justify-self: start; margin-top: .35rem; }
    .idea-detail-facts { grid-template-columns: 1fr; }
    .idea-editor.settings-card, .idea-actions-column .settings-card { padding: 1.5rem 1rem; }
    .year-navigation { gap: 1.25rem; overflow-x: auto; }
    .program-item.is-past { opacity: .68; }
    .program-admin-toolbar form { align-items: flex-start; flex-wrap: wrap; }
    .event-editor.settings-card { padding: 1.5rem 1rem; }
    .event-date-fields, .event-time-fields { grid-template-columns: 1fr; gap: 0; }
    .event-editor-actions { align-items: stretch; flex-direction: column; }
    .event-editor-actions .button { width: 100%; }
    .admin-event-row { grid-template-columns: 4rem 1fr; gap: 1rem; }
    .admin-event-row > time { align-items: flex-start; flex-direction: column; gap: .2rem; }
    .admin-event-row > time strong { font-size: 2.5rem; }
    .event-row-actions { gap: .7rem 1rem; }
    .admin-album-row { grid-template-columns: 6rem 1fr; gap: 1rem; }
    .admin-album-cover { height: 5rem; }
    .admin-album-row > .publication-status, .admin-album-row .event-row-actions { grid-column: 2; }
    .admin-photo-item { grid-template-columns: 1fr; }
    .gallery-settings.settings-card { padding: 1.5rem 1rem; }
    .photo-status-summary { grid-template-columns: 1fr; }
    .member-photos-page .account-heading h1 { font-size: clamp(3.1rem, 15vw, 4rem); }
    .contribution-item, .moderation-item { grid-template-columns: 6rem 1fr; gap: 1rem; align-items: start; }
    .contribution-thumb, .moderation-thumb { height: 5rem; }
    .contribution-item .photo-review-status, .contribution-item > .text-link, .moderation-item .photo-review-status, .moderation-item > .text-link { grid-column: 2; justify-self: start; }
    .member-photo-upload .settings-card, .review-actions .settings-card { padding: 1.5rem 1rem; }
    .member-photo-upload { gap: 3rem; }
    .member-photo-upload .photo-dropzone { overflow-wrap: anywhere; }
    .review-photo-stage { min-height: 14rem; padding: .75rem; }
    .admin-blog-summary { align-items: flex-start; flex-direction: column; }
    .admin-blog-summary > span:last-child { text-align: left; }
    .admin-post-row { grid-template-columns: 5.5rem 1fr; gap: 1rem; align-items: start; }
    .admin-post-cover { height: 4.5rem; }
    .admin-post-row > .publication-status, .admin-post-row .event-row-actions { grid-column: 2; }
    .blog-editor.settings-card { padding: 1.5rem 1rem; }
    .markdown-toolbar { gap: .25rem; padding: .45rem; }
    .markdown-toolbar button { flex: 1 1 auto; }
    .blog-image-admin-item { grid-template-columns: 1fr; }
    .blog-image-reference { grid-template-columns: 1fr; }
    .blog-image-reference label { grid-column: 1; }
    .article-header { padding-top: 4rem; }
    .article-header h1 { font-size: clamp(3.5rem, 15vw, 5rem); }
    .article-body-image { width: calc(100vw - 2rem); }
    .blog-row--without-image { grid-template-columns: 2rem 1fr; }
    .site-settings-section.settings-card { padding: 1.5rem 1rem; }
    .settings-media-editor { grid-template-columns: 1fr; gap: 1.2rem; }
    .settings-media-preview { min-height: 10rem; }
    .site-settings-jump { gap: 1.3rem; }
    .site-settings-actions { align-items: stretch; flex-direction: column; }
    .site-settings-actions .button { width: 100%; }
}

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}
