:root {
  --ink: #17313b;
  --muted: #577078;
  --paper: #fbfaf6;
  --white: #fff;
  --sea: #1b6876;
  --sea-dark: #104b57;
  --sun: #d38257;
  --sand: #eee5d8;
  --line: #d9dfda;
  --max: 1180px;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; color: var(--ink); background: var(--paper); font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; font-size: 17px; line-height: 1.7; }
img { display: block; max-width: 100%; }
a { color: var(--sea); text-underline-offset: 3px; }
h1, h2, h3 { margin: 0 0 1rem; font-family: Georgia, "Times New Roman", serif; font-weight: 500; line-height: 1.08; letter-spacing: -.025em; }
h1 { font-size: clamp(3.4rem, 8vw, 6.8rem); }
h2 { font-size: clamp(2.25rem, 5vw, 4.2rem); }
h3 { font-size: 1.6rem; }
p { margin: 0 0 1.25rem; }

.skip-link { position: fixed; left: 1rem; top: -5rem; z-index: 100; padding: .7rem 1rem; color: #fff; background: var(--ink); }
.skip-link:focus { top: 1rem; }

.site-header { max-width: var(--max); margin: auto; padding: 1.5rem 2rem; display: flex; align-items: center; justify-content: space-between; gap: 2rem; }
.brand { display: flex; align-items: center; gap: .8rem; color: var(--ink); text-decoration: none; line-height: 1.15; }
.brand-mark { width: 2.8rem; height: 2.8rem; border-radius: 50%; display: grid; place-items: center; color: #fff; background: var(--sea); font-family: Georgia, serif; font-size: .85rem; letter-spacing: .08em; }
.brand strong, .brand small { display: block; }
.brand strong { font-family: Georgia, serif; font-size: 1.15rem; font-weight: 500; }
.brand small { margin-top: .18rem; color: var(--muted); font-size: .72rem; letter-spacing: .04em; }
nav { display: flex; align-items: center; gap: 1.5rem; }
nav a { color: var(--ink); font-size: .88rem; font-weight: 650; text-decoration: none; }
nav a:hover, nav a.active { color: var(--sea); }
.nav-button { padding: .6rem 1rem; border: 1px solid var(--sea); border-radius: 999px; }

.hero { max-width: 1360px; min-height: 700px; margin: 1rem auto 0; display: grid; grid-template-columns: minmax(0, .95fr) minmax(420px, 1.05fr); align-items: stretch; background: var(--sand); }
.hero-copy { max-width: 610px; padding: clamp(3rem, 8vw, 7rem); padding-right: clamp(2rem, 6vw, 5rem); align-self: center; }
.eyebrow { margin-bottom: 1rem; color: var(--sun); font-size: .75rem; font-weight: 800; letter-spacing: .16em; line-height: 1.4; text-transform: uppercase; }
.lead { font-family: Georgia, serif; font-size: 1.25rem; line-height: 1.55; }
.hero-image { min-height: 600px; margin: 0; overflow: hidden; }
.hero-image img { width: 100%; height: 100%; object-fit: cover; object-position: 55% center; }
.hero-actions, .button-row { display: flex; align-items: center; flex-wrap: wrap; gap: 1.2rem; margin-top: 2rem; }
.button { display: inline-block; padding: .85rem 1.25rem; border: 1px solid var(--sea); border-radius: 2px; color: #fff; background: var(--sea); font-size: .88rem; font-weight: 750; text-decoration: none; }
.button:hover { background: var(--sea-dark); }
.button.secondary { color: var(--sea); background: transparent; }
.text-link { font-size: .9rem; font-weight: 700; text-decoration: none; }

.section { max-width: var(--max); margin: auto; padding: clamp(5rem, 10vw, 9rem) 2rem; }
.two-column { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(320px, .85fr); gap: clamp(3rem, 8vw, 7rem); align-items: start; }
.donation-card { padding: 2.4rem; color: #fff; background: var(--ink); }
.donation-card a { color: #fff; }
.card-label { color: #9fc6c9; font-size: .72rem; font-weight: 800; letter-spacing: .15em; text-transform: uppercase; }
dl { margin: 2rem 0; }
dl div { padding: .9rem 0; border-top: 1px solid rgb(255 255 255 / .15); }
dt { color: #b9c8cb; font-size: .75rem; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; }
dd { margin: .15rem 0 0; font-size: .95rem; }
.card-note { margin-bottom: 0; font-size: .88rem; color: #d9e2e3; }

.image-break { position: relative; max-width: 1360px; min-height: 640px; margin: auto; display: grid; grid-template-columns: 1.2fr .8fr; background: var(--sea-dark); overflow: hidden; }
.image-break img { width: 100%; height: 100%; min-height: 640px; object-fit: cover; }
.image-break blockquote { max-width: 440px; margin: auto; padding: 3rem; color: #fff; font-family: Georgia, serif; font-size: clamp(2rem, 4vw, 3.4rem); line-height: 1.18; }
.story-grid { display: grid; grid-template-columns: .85fr 1.15fr; gap: clamp(3rem, 10vw, 8rem); }

.phd-section { display: grid; grid-template-columns: 1.05fr .95fr; gap: clamp(3rem, 8vw, 7rem); align-items: center; }
.phd-section figure { margin: 0; }
.phd-section img { aspect-ratio: 4 / 3; width: 100%; object-fit: cover; }

.thanks { max-width: 1360px; margin: auto; padding: clamp(5rem, 11vw, 9rem) max(2rem, calc((100% - 1040px) / 2)); text-align: center; background: var(--sand); }
.thanks h2 { max-width: 950px; margin-inline: auto; }
.closing-image { max-width: 920px; margin: 0 auto clamp(5rem, 10vw, 8rem); padding: 0 2rem; }
.closing-image img { width: 100%; aspect-ratio: 5 / 3; object-fit: cover; }

.page-hero { max-width: var(--max); margin: 3rem auto 0; padding: clamp(3rem, 8vw, 7rem) 2rem; border-top: 1px solid var(--line); }
.page-hero p:not(.eyebrow) { max-width: 760px; font-family: Georgia, serif; font-size: 1.35rem; }
.content-shell { max-width: var(--max); margin: auto; padding: 0 2rem clamp(5rem, 10vw, 9rem); display: grid; grid-template-columns: minmax(0, 1fr) 330px; gap: clamp(3rem, 8vw, 7rem); }
.prose { max-width: 760px; }
.prose h2 { margin-top: 4rem; font-size: clamp(2rem, 4vw, 3rem); }
.prose h3 { margin-top: 2rem; }
.detail-card { position: sticky; top: 2rem; padding: 2rem; background: var(--sand); }
.detail-card dl div { border-color: rgb(23 49 59 / .14); }
.detail-card dt { color: var(--muted); }
.download { display: flex; align-items: center; justify-content: space-between; gap: 1.5rem; margin: 2rem 0; padding: 1.3rem 1.5rem; color: var(--ink); background: var(--white); border: 1px solid var(--line); text-decoration: none; }
.download span:last-child { color: var(--sea); font-weight: 800; }
.people { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; margin: 2rem 0; }
.person { padding: 1.3rem; background: var(--white); border: 1px solid var(--line); }
.person strong, .person span { display: block; }
.person span { color: var(--muted); font-size: .85rem; }
.publication-list { list-style: none; margin: 1.5rem 0; padding: 0; }
.publication-list li { padding: 1.5rem 0; border-top: 1px solid var(--line); }
.publication-list a, .publication-list strong { display: block; color: var(--ink); font-family: Georgia, serif; font-size: 1.22rem; line-height: 1.35; }
.publication-list span { display: block; margin-top: .35rem; color: var(--muted); font-size: .9rem; }

/* Shared editable sections use the same typography and spacing as the public pages. */
.editable-content { max-width: var(--max); margin: 0 auto clamp(5rem, 10vw, 9rem); padding: 0 2rem; }
.content-block { position: relative; padding: clamp(3rem, 7vw, 6rem) 0; border-top: 1px solid var(--line); }
.content-block .block-inner { max-width: 920px; margin: auto; }
.text-layout.has-image { display: grid; grid-template-columns: minmax(0, 1fr) minmax(240px, .85fr); gap: clamp(2rem, 6vw, 5rem); align-items: start; }
.text-layout.image-left .block-image { order: -1; }.text-layout.image-right .block-image { order: 2; }
.block-image { margin: 0; }.block-image img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.rich-text > :last-child { margin-bottom: 0; }
.gallery-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; }
.gallery-grid.count-1 { grid-template-columns: minmax(0, 620px); }.gallery-grid.count-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.gallery-item { margin: 0; }.gallery-item img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }.gallery-item figcaption { padding-top: .45rem; color: var(--muted); font-size: .85rem; }
.empty-gallery { grid-column: 1 / -1; padding: 1rem; background: var(--sand); }

footer { max-width: var(--max); margin: auto; padding: 4rem 2rem; display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 3rem; font-size: .9rem; }
footer p { color: var(--muted); }
footer a { display: block; margin-bottom: .45rem; }
.footer-label { margin-bottom: .7rem; color: var(--ink); font-weight: 800; font-size: .72rem; letter-spacing: .14em; text-transform: uppercase; }

@media (max-width: 880px) {
  .site-header { align-items: flex-start; }
  nav { justify-content: flex-end; flex-wrap: wrap; gap: .6rem 1rem; }
  .hero { grid-template-columns: 1fr; }
  .hero-copy { max-width: none; }
  .hero-image { min-height: 500px; }
  .two-column, .story-grid, .phd-section, .content-shell { grid-template-columns: 1fr; }
  .text-layout.has-image { grid-template-columns: 1fr; }.text-layout.image-left .block-image, .text-layout.image-right .block-image { order: initial; }
  .image-break { grid-template-columns: 1fr; }
  .image-break img { min-height: 480px; }
  .detail-card { position: static; }
}

@media (max-width: 640px) {
  body { font-size: 16px; }
  .site-header { padding: 1.2rem; display: block; }
  .brand { margin-bottom: 1.1rem; }
  nav { justify-content: flex-start; }
  nav a { font-size: .78rem; }
  .hero { margin-top: .3rem; }
  .hero-copy { padding: 3.2rem 1.4rem; }
  .hero-image { min-height: 400px; }
  .section, .page-hero { padding-left: 1.4rem; padding-right: 1.4rem; }
  .content-shell { padding-left: 1.4rem; padding-right: 1.4rem; }
  .editable-content { padding-left: 1.4rem; padding-right: 1.4rem; }.gallery-grid, .gallery-grid.count-2 { grid-template-columns: 1fr; }
  .donation-card { padding: 1.5rem; }
  .image-break img { min-height: 350px; }
  .image-break blockquote { padding: 2.5rem 1.4rem; }
  .people, footer { grid-template-columns: 1fr; }
  footer { padding: 3rem 1.4rem; gap: 1.5rem; }
}

@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

.login-page { min-height: 100vh; display: grid; place-items: center; padding: 2rem; background: var(--sand); }
.login-card { width: min(100%, 440px); padding: clamp(2rem, 7vw, 4rem); background: var(--white); box-shadow: 0 1rem 3rem rgb(23 49 59 / .12); }
.login-card .brand { margin-bottom: 3rem; }
.login-card h1 { font-size: clamp(2.3rem, 8vw, 3.5rem); }
.login-card label { display: block; margin: 1.2rem 0 .35rem; font-size: .85rem; font-weight: 700; }
.login-card input { width: 100%; padding: .8rem; border: 1px solid var(--line); font: inherit; }
.login-card button { margin-top: 1.6rem; cursor: pointer; }
.form-error { padding: .8rem 1rem; color: #8b2520; background: #fbe9e7; }
.form-notice { padding: .8rem 1rem; color: var(--sea-dark); background: #e8f2f2; }

/* Authenticated editing layer: it deliberately affects only signed-in editors. */
body.admin-visible { padding-right: 210px; }
.admin-panel { position: fixed; z-index: 80; right: 0; top: 0; bottom: 0; width: 210px; padding: 1.4rem; display: flex; flex-direction: column; gap: .35rem; color: #fff; background: var(--ink); box-shadow: -5px 0 25px rgb(0 0 0 / .14); }
.admin-heading { display: flex; flex-direction: column; margin-bottom: .6rem; padding-bottom: 1rem; border-bottom: 1px solid rgb(255 255 255 / .16); }
.admin-heading span { font-family: Georgia, serif; font-size: 1.4rem; }.admin-heading small { opacity: .6; }
.admin-panel button { width: 100%; padding: .7rem; border: 0; color: inherit; background: transparent; text-align: left; font-size: .78rem; }.admin-panel .admin-primary { margin-bottom: .35rem; color: var(--ink); background: var(--sand); }.admin-panel form:last-child { margin-top: auto; }
.admin-mobile-toggle { display: none; }.block-controls { position: absolute; z-index: 5; top: .8rem; right: .8rem; display: flex; gap: .2rem; padding: .25rem; color: #fff; background: var(--ink); box-shadow: 0 4px 14px rgb(0 0 0 / .15); }.block-controls button { padding: .35rem .55rem; border: 0; color: #fff; background: transparent; font-size: .68rem; }.block-controls button:hover { background: rgb(255 255 255 / .12); }
.admin-dialog { width: min(calc(100% - 2rem), 720px); max-height: 88vh; overflow-y: auto; padding: 0; border: 0; color: var(--ink); box-shadow: 0 20px 60px rgb(0 0 0 / .32); }.admin-dialog-small { width: min(calc(100% - 2rem), 470px); }.admin-dialog::backdrop { background: rgb(15 25 20 / .68); }.admin-dialog > header { display: flex; justify-content: space-between; align-items: start; padding: 1.4rem 1.6rem; border-bottom: 1px solid var(--line); }.admin-dialog > header h2 { margin: 0; font-size: 2rem; font-family: Georgia, serif; }.dialog-close { border: 0; background: none; font-size: 1.5rem; line-height: 1; }.admin-dialog .admin-form, .admin-dialog > #new-user-row { padding: 0 1.6rem 1.6rem; }.admin-dialog > .button-secondary { margin: 1rem 1.6rem 0; }.admin-form { display: grid; gap: 1rem; margin-top: 2rem; }.admin-form label { display: grid; gap: .35rem; font-size: .74rem; text-transform: uppercase; }.admin-form input,.admin-form textarea,.admin-form select { width: 100%; padding: .72rem; border: 1px solid var(--line); }.button-primary,.button-secondary,.button-danger { display: inline-flex; justify-content: center; padding: .72rem 1rem; border: 0; }.button-primary { color: #fff; background: var(--sea); }.button-secondary { background: var(--sand); }.button-danger { color: #8b2520; background: #f8e7e4; }.admin-dialog .admin-form footer { display: flex; justify-content: flex-end; gap: .6rem; margin-top: 1rem; }.form-grid { display:grid;grid-template-columns:1fr 1fr;gap:1rem; }.checkbox-row { display:flex!important; grid-template-columns:auto 1fr; align-items:center; gap:.6rem!important; }.checkbox-row input { width:auto; }.block-choices { display:grid;gap:.7rem;padding:1.5rem; }.block-choices button { display:flex; flex-direction:column; padding:1rem;border:1px solid var(--line);background:#fff;text-align:left; }.block-choices span { margin-top:.25rem; color:var(--muted); font-size:.78rem; }.form-error{color:#a2382d;min-height:1.2em}.users-list{margin-top:1rem;border-top:1px solid var(--line)}.user-summary{width:100%;display:grid;grid-template-columns:1fr auto 1.5rem;gap:1rem;padding:1rem 1.6rem;border:0;border-bottom:1px solid var(--line);background:#fff;text-align:left}.user-summary span{color:var(--muted);font-size:.73rem}.user-summary b{justify-self:end}.user-expanded{padding:1rem 1.6rem;background:var(--sand);border-bottom:1px solid var(--line)}.user-actions{display:flex;gap:.5rem}.user-actions form{margin:0}.gallery-admin-item{display:grid;grid-template-columns:72px 1fr auto;gap:.8rem;align-items:center;padding:.5rem 0;border-bottom:1px solid var(--line)}.gallery-admin-item img{width:72px;height:54px;object-fit:cover}.gallery-admin-item>div{display:grid;grid-template-columns:1fr 1fr auto;gap:.4rem}.gallery-admin-item input{min-width:0;padding:.45rem;border:1px solid var(--line)}
@media (max-width: 820px) { body.admin-visible { padding-right: 0; }.admin-mobile-toggle { display: block; position: fixed; z-index: 82; right: 1rem; bottom: 1rem; padding: .75rem 1rem; border: 0; color: #fff; background: var(--ink); box-shadow: 0 4px 15px rgb(0 0 0 / .25); }.admin-panel { transform: translateX(100%); transition: transform .2s; }.admin-panel.open { transform: none; }.form-grid { grid-template-columns: 1fr; } }
@media (max-width: 560px) { .admin-dialog { width: calc(100% - 1rem); max-height: calc(100dvh - 1rem); }.admin-dialog > header { padding: 1.15rem 1.2rem; position: sticky; top: 0; z-index: 1; background: var(--white); }.admin-dialog .admin-form, .admin-dialog > #new-user-row { padding: 0 1.2rem 1.2rem; }.admin-dialog > .button-secondary { margin: 1rem 1.2rem 0; }.user-summary, .user-expanded { padding-left: 1.2rem; padding-right: 1.2rem; }.user-actions { flex-direction: column; align-items: stretch; }.user-actions form, .user-actions button { width: 100%; }.admin-dialog .admin-form footer { flex-direction: column-reverse; }.admin-dialog .admin-form footer button { width: 100%; }.gallery-admin-item { grid-template-columns: 1fr; }.gallery-admin-item img { width:100%; height:auto; max-width:240px; }.gallery-admin-item>div { grid-template-columns:1fr; } }
