@font-face {font-family:"Junicode Two";src:url("../fonts/JunicodeTwoBeta-Condensed.ttf") format("truetype");font-weight:400;font-style:normal;font-display:optional;}
@font-face {font-family:"Junicode Two";src:url("../fonts/JunicodeTwoBeta-Italic.ttf") format("truetype");font-weight:400;font-style:italic;font-display:optional;}
:root {--orange:#f04e23;--paper:#eeeeed;--white:#fffaf7;--border:1px solid var(--orange);}
* {box-sizing:border-box;}
html {scrollbar-gutter:stable;}
body {margin:0;padding:16px 20px 26px;background:var(--paper);color:var(--orange);font-family:"Junicode Two","Times New Roman",serif;font-weight:400;}
a {color:inherit;}
.site-nav {display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border:var(--border);height:48px;position:relative;z-index:2;}
.site-nav>a,.nav-tba summary {display:flex;align-items:center;justify-content:center;height:100%;font:400 29px/1 "Junicode Two","Times New Roman",serif;text-decoration:none;}
.site-nav>a,.nav-tba {border-right:var(--border);}
.site-nav>:last-child {border-right:0;}
.site-nav>a:hover,.site-nav>a.active,.nav-tba:hover summary,.nav-tba[open] summary {background:var(--orange);color:var(--white);}
.nav-tba {position:relative;min-width:0;}
.nav-tba summary {list-style:none;cursor:pointer;}
.nav-tba summary::-webkit-details-marker {display:none;}
.nav-tba .tba-note {display:block!important;visibility:hidden;position:absolute;top:calc(100% + 8px);left:50%;transform:translateX(-50%);padding:7px 18px;background:var(--paper);border:var(--border);font-size:22px;pointer-events:none;}
.nav-tba:hover .tba-note,.nav-tba:focus-within .tba-note,.nav-tba[open] .tba-note {visibility:visible;}
.site-nav a:focus-visible,.nav-tba summary:focus-visible {outline:2px solid var(--orange);outline-offset:-4px;}
.hero {position:relative;min-height:605px;display:flex;flex-direction:column;justify-content:center;border:var(--border);border-top:0;background:var(--paper);color:var(--orange);padding:90px 12.5%;}
.hero-copy {position:relative;}
.hero-kicker {margin:0 0 4px;font-size:clamp(30px,3vw,48px);line-height:1;}
.hero-title {margin:0;font-size:clamp(76px,7.7vw,126px);font-weight:400;line-height:.95;letter-spacing:-2px;}
.hero-meta {margin:42px 0 0;font-size:25px;line-height:1.45;}
.newsletter {display:grid;grid-template-columns:1fr 52%;gap:20px;align-items:center;padding:20px 0 15px;}
.newsletter p {margin:0;font-size:29px;}
.newsletter form {display:grid;grid-template-columns:minmax(0,1fr) 173px;gap:10px;}
.newsletter input:not([type=hidden]),.newsletter button {width:100%;min-width:0;height:58px;border:var(--border);border-radius:0;background:transparent;color:var(--orange);font:inherit;font-size:29px;padding:0 18px;}
.newsletter input::placeholder {color:var(--orange);opacity:1;}
.newsletter button {background:var(--orange);color:var(--white);cursor:pointer;}
.newsletter button:hover {background:transparent;color:var(--orange);}
.site-footer {position:relative;background:var(--orange);color:var(--white);min-height:760px;padding:38px 38px 200px;}
.footer-intro {max-width:1160px;font-size:clamp(32px,4.4vw,70px);line-height:1.08;}
.footer-info {display:grid;grid-template-columns:195px 240px minmax(0,1fr);gap:42px;margin-top:78px;font-size:29px;line-height:1.04;}
.footer-info p {margin:0 0 30px;}
.footer-logo {position:absolute;right:55px;bottom:45px;width:260px;}
.footer-logo img {display:block;width:100%;height:auto;}
@media(max-width:1000px) {
.newsletter {grid-template-columns:1fr;gap:12px;}
.footer-info {grid-template-columns:1fr 1fr;gap:25px;}
.collaborators {grid-column:1/-1;}
}
@media(max-width:600px) {
body {padding:8px;}
.site-nav {height:44px;}
.site-nav>a,.nav-tba summary {font-size:21px;}
.hero {min-height:520px;padding:65px 25px;}
.hero-title {font-size:clamp(58px,14vw,84px);letter-spacing:-1px;}
.hero-kicker {font-size:30px;}
.hero-meta {font-size:23px;margin-top:35px;}
.newsletter p {font-size:24px;}
.newsletter form {grid-template-columns:minmax(0,1fr) 110px;gap:8px;}
.newsletter input:not([type=hidden]),.newsletter button {font-size:22px;padding:0 10px;height:50px;}
.site-footer {min-height:0;padding:28px 22px 185px;}
.footer-intro {font-size:34px;}
.footer-info {margin-top:45px;font-size:23px;grid-template-columns:1fr 1fr;gap:20px;}
.footer-logo {width:210px;right:24px;bottom:28px;}
}

/* Keep the navigation and home box within the first viewport. */
.hero {
    min-height: 0;
    height: calc(100vh - 76px);
    height: calc(100svh - 76px);
    padding: clamp(18px, 5vh, 70px) 12.5%;
    overflow: auto;
}
.hero-kicker { font-size: clamp(24px, min(3vw, 6svh), 48px); }
.hero-title { font-size: clamp(44px, min(7.7vw, 15svh), 126px); }
.hero-meta {
    margin-top: clamp(16px, 5svh, 42px);
    font-size: clamp(19px, min(2.5vw, 4.5svh), 25px);
}
.site-footer a { text-decoration: none; }
.site-footer a:hover { text-decoration: underline; }
.site-footer a:focus-visible { outline: 2px solid currentColor; outline-offset: 3px; }
.footer-logo { width: 170px; }
@media (max-width: 600px) {
    .hero {
        height: calc(100vh - 60px);
        height: calc(100svh - 60px);
        padding: clamp(18px, 5svh, 55px) 25px;
    }
    .hero-title { font-size: clamp(40px, min(14vw, 14svh), 84px); letter-spacing: -1px; }
    .hero-kicker { font-size: clamp(23px, min(7vw, 6svh), 30px); }
    .hero-meta { font-size: clamp(18px, 4.5svh, 23px); }
    .footer-logo { width: 150px; }
}

/* Responsive footer: one screen when space permits; grows for readable content. */
.site-footer {
    min-height: calc(100vh - 42px);
    min-height: calc(100svh - 42px);
    padding: clamp(22px, 4svh, 42px) clamp(22px, 3vw, 48px);
    display: flex;
    flex-direction: column;
    gap: clamp(22px, 5svh, 60px);
}
.footer-intro {
    max-width: 100%;
    font-size: clamp(28px, min(4.4vw, 7svh), 70px);
    line-height: 1.08;
}
.footer-info {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 2.5fr);
    gap: clamp(18px, 3vw, 42px);
    margin-top: 0;
    font-size: clamp(20px, min(2.3vw, 3.6svh), 29px);
    line-height: 1.12;
}
.footer-info > div { min-width: 0; overflow-wrap: break-word; }
.footer-info p { margin: 0 0 clamp(16px, 3svh, 30px); }
.footer-info p:last-child { margin-bottom: 0; }
.collaborators { grid-column: auto; }
.footer-logo {
    position: static;
    align-self: flex-end;
    margin-top: auto;
    flex-shrink: 0;
    width: clamp(110px, min(13vw, 22svh), 170px);
}
@media (max-width: 700px) {
    .site-footer { min-height: calc(100svh - 16px); }
    .footer-info { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
    .collaborators { grid-column: 1 / -1; }
    .footer-intro { font-size: clamp(28px, min(6vw, 6svh), 38px); }
    .footer-logo { width: clamp(110px, 30vw, 150px); }
}
@media (max-width: 360px) {
    .footer-info { grid-template-columns: minmax(0, 1fr); }
}


/* Memories is shown in place of the hero, with one shared footer. */
[hidden] { display: none !important; }
.memories {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    height: calc(100vh - 76px);
    height: calc(100svh - 76px);
    min-height: 0;
    border: var(--border);
    border-top: 0;
}
.memory-list {
    min-height: 0;
    overflow-y: auto;
    padding: clamp(20px, 4svh, 48px) clamp(16px, 2vw, 30px);
    display: flex;
    flex-direction: column;
    gap: 24px;
}
.memory-table { width: 100%; border-collapse: collapse; font-size: 21px; line-height: 1.12; }
.memory-table th { text-align: left; font-style: italic; font-weight: 400; padding: 0 10px 18px 0; }
.memory-table td { vertical-align: top; padding: 3px 10px 3px 0; }
.memory-table .year { width: 48px; }
.memory-published { margin: auto 0 0; font-size: 21px; font-style: italic; }
.memory-photo {
    display: block;
    width: 100%;
    min-width: 0;
    min-height: 0;
    padding: 0;
    border: 0;
    border-left: var(--border);
    border-radius: 0;
    background: var(--orange) url("../images/meg miller.jpg") center/cover no-repeat;
    cursor: pointer;
}
.memory-photo:focus-visible { outline: 3px solid var(--white); outline-offset: -6px; }
@media (max-width: 850px) {
    .memories { height: auto; grid-template-columns: minmax(0, 1fr); }
    .memory-list { overflow: visible; }
    .memory-table { font-size: 21px; }
    .memory-table td { overflow-wrap: anywhere; }
    .memory-published { margin-top: 20px; }
    .memory-photo { height: 55svh; min-height: 280px; border-left: 0; border-top: var(--border); }
}

/* Program and RSVP placeholders share the home box dimensions. */
.placeholder-view {
    height: calc(100vh - 76px);
    height: calc(100svh - 76px);
    border: var(--border);
    border-top: 0;
    display: grid;
    place-items: center;
    padding: 20px;
    overflow: auto;
}
.placeholder-view h1 {
    margin: 0;
    font-family: "Junicode Two", "Times New Roman", serif;
    font-weight: 400;
    font-size: clamp(44px, min(7.7vw, 15svh), 126px);
    line-height: 1;
}
@media (max-width: 600px) {
    .placeholder-view { height: calc(100vh - 60px); height: calc(100svh - 60px); }
}

.memory-table a { text-decoration: none; }
.memory-table a:hover { text-decoration: underline; }
.memory-table a:focus-visible { outline: 2px solid currentColor; outline-offset: 2px; }

/* Personal flower stamps, underneath the home text. */
.hero { isolation: isolate; cursor: url("../favicon.png") 32 32, crosshair; }
.stamp-layer { position: absolute; inset: 0; overflow: hidden; pointer-events: none; z-index: -1; }
.flower-stamp {
    position: absolute;
    width: 64px;
    height: 64px;
    transform: translate(-50%, -50%) rotate(var(--rotation));
    user-select: none;
}
.hero-copy, .hero-meta { pointer-events: none; }
.clear-stamps {
    position: absolute;
    bottom: 18px;
    right: 20px;
    border: var(--border);
    border-radius: 0;
    padding: 6px 12px;
    background: var(--paper);
    color: var(--orange);
    font: 400 20px/1.2 "Junicode Two", "Times New Roman", serif;
    cursor: pointer;
}
.clear-stamps:hover { background: var(--orange); color: var(--white); }
.clear-stamps:focus-visible { outline: 2px solid var(--orange); outline-offset: 3px; }

.stamp-controls { position:absolute; bottom:18px; right:20px; display:flex; gap:8px; z-index:2; }
.stamp-controls button {
    position:static; border:var(--border); border-radius:0;
    padding:6px 12px; background:var(--paper); color:var(--orange);
    font:400 20px/1.2 "Junicode Two", "Times New Roman", serif; cursor:pointer;
}
.stamp-controls button:hover { background:var(--orange); color:var(--white); }
.stamp-controls button:focus-visible { outline:2px solid var(--orange); outline-offset:3px; }

/* Give speaker and talk columns more space on phones. */
@media (max-width: 600px) {
    .memory-table th:first-child,
    .memory-table td:first-child { display: none; }
}
