:root { color-scheme: light; --ink:#191817; --cream:#f4f0e8; --orange:#e95b25; --paper:#fffdfa; --line:#cfc7b9; }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { margin:0; color:var(--ink); background:var(--cream); font:16px/1.5 Arial,Helvetica,sans-serif; }
button,input,textarea { font:inherit; }
button { cursor:pointer; }
a { color:inherit; }
img { max-width:100%; }
[hidden] { display:none!important; }
:focus-visible { outline:3px solid #a43c17; outline-offset:3px; }
.test-banner { padding:.55rem 1rem; display:flex; justify-content:center; gap:.5rem 1rem; flex-wrap:wrap; text-align:center; background:#ffe6c9; color:#40210e; font-size:.88rem; }
.test-banner strong { text-transform:uppercase; letter-spacing:.09em; font-size:.78rem; }
.masthead { min-height:92px; padding:1rem clamp(1.25rem,4.5vw,5.5rem); display:flex; align-items:center; justify-content:space-between; gap:1.5rem; border-bottom:1px solid #282724; }
.brand { display:inline-flex; align-items:center; gap:1rem; text-decoration:none; font-size:.88rem; font-weight:900; letter-spacing:.07em; line-height:1.1; }
.brand img { width:3.5rem; height:3.5rem; object-fit:contain; flex:none; }
.brand small { display:block; margin-top:.3rem; font-size:.78rem; letter-spacing:.2em; }
.masthead nav { display:flex; gap:2rem; font-size:.9rem; font-weight:700; }
.masthead nav a { text-decoration:none; }
.masthead nav a:hover { text-decoration:underline; }
.intro { display:grid; grid-template-columns:minmax(0,42%) minmax(0,58%); background:#191918; }
.intro-copy { min-width:0; padding:clamp(3.5rem,5.2vw,7rem) clamp(1.5rem,4.5vw,6rem) 3.4rem; display:flex; flex-direction:column; color:#f8f4eb; }
.eyebrow { margin:0; color:#ffc19e; font-size:.75rem; font-weight:800; letter-spacing:.16em; }
.eyebrow span { margin:0 .4rem; }
.intro .edition { margin:clamp(2.5rem,4vw,4.5rem) 0 1.3rem; color:#f58858; font:600 clamp(2.1rem,2.8vw,3.5rem)/1.08 Georgia,'Times New Roman',serif; letter-spacing:-.035em; }
.intro .edition-school { display:block; white-space:nowrap; font-size:clamp(.95rem,1.45vw,1.35rem); letter-spacing:-.04em; }
.intro .edition-reunion { display:block; margin-top:.25em; }
.hero-date { display:grid; gap:.35rem; margin:0 0 2.25rem; padding:1.15rem 1.3rem; border-left:6px solid #f36d37; background:#392a22; color:#fff5e8; }
.hero-date strong { font-size:clamp(1.35rem,1.65vw,1.9rem); line-height:1.25; }
.hero-date span { font-size:clamp(1.12rem,1.3vw,1.45rem); font-weight:700; line-height:1.3; }
.intro .classmate-callout { margin:0; font:500 clamp(1.9rem,2.3vw,2.7rem)/1.08 Georgia,'Times New Roman',serif; letter-spacing:-.035em; }
.intro .classmate-callout em { color:#f5d0bb; font-weight:400; }
.intro-lede { max-width:34rem; margin:1.7rem 0 0; color:#e2ddd3; font-size:1.12rem; line-height:1.58; }
.intro-actions { display:flex; flex-wrap:wrap; gap:1.5rem; margin-top:2.1rem; }
.intro-actions a { border-bottom:1px solid currentColor; padding-bottom:.3rem; text-decoration:none; color:#ff9162; font-size:.9rem; font-weight:800; }
.intro-actions a+a { color:#eee8de; }
.school-figure { max-width:36rem; margin:3rem 0 0; }
.school-figure img { display:block; width:100%; height:auto; border:1px solid #5d5a55; }
.school-figure figcaption { margin-top:.75rem; color:#c8bdb0; font-size:.7rem; font-weight:800; letter-spacing:.16em; }
.intro-facts { display:flex; justify-content:space-between; gap:1rem; margin-top:auto; padding-top:2.5rem; border-top:1px solid #55504a; }
.intro-facts div { display:grid; gap:.32rem; }
.intro-facts b { font-size:.9rem; white-space:nowrap; }
.intro-facts span { font-size:.78rem; color:#aba69f; }
.form-column { min-width:0; padding:clamp(1.5rem,4vw,4.8rem); background:var(--cream); scroll-margin-top:1rem; }
.form-card { max-width:860px; margin:auto; background:var(--paper); border:1px solid var(--line); box-shadow:13px 13px 0 #e9dfd0; }
.form-topline { display:flex; justify-content:space-between; gap:1rem; padding:1rem clamp(1.2rem,3vw,2.7rem); background:var(--orange); color:white; font-size:.73rem; font-weight:900; letter-spacing:.18em; }
.form-heading { padding:2rem clamp(1.2rem,3vw,2.7rem) 1.5rem; }
.form-heading h2 { margin:0 0 .4rem; font:500 clamp(2rem,3vw,3.1rem)/1.08 Georgia,'Times New Roman',serif; letter-spacing:-.04em; }
.form-heading p { margin:0; color:#514c45; }
.update-link { display:inline-block; margin-top:.8rem; border:0; padding:.2rem 0; background:transparent; color:#a43b15; font-size:.93rem; font-weight:750; text-align:left; text-decoration:underline; text-underline-offset:.2rem; }
.tabs { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.65rem; margin:0 clamp(1.2rem,3vw,2.7rem); }
.tabs button { display:flex; flex-direction:column; align-items:flex-start; justify-content:center; min-height:5.2rem; border:1px solid #aea597; border-radius:2px; padding:.85rem 1rem; background:#f3efe7; color:#423d35; text-align:left; font-size:.94rem; }
.tabs button small { margin-top:.35rem; font-size:.8rem; font-weight:400; line-height:1.3; }
.tabs button[aria-selected="true"] { color:#181817; background:#fff1e9; border:2px solid #db5721; box-shadow:inset 0 0 0 1px #db5721; }
.tabs button[aria-selected="true"] strong { color:#a43b15; }
.form-body { padding:1.4rem clamp(1.2rem,3vw,2.7rem) 2rem; }
.form-body fieldset { display:grid; gap:1.1rem; padding:0; margin:0; border:0; min-width:0; }
.form-intro { margin:0 0 .25rem; color:#4c4842; }
.step-label { margin:0; color:#bb4b22; font-size:.75rem; font-weight:900; letter-spacing:.14em; }
.form-body label { display:grid; gap:.38rem; min-width:0; color:#24231f; font-size:.9rem; font-weight:700; }
.form-body label b { color:#c34718; }
.form-body input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),.form-body textarea { width:100%; min-height:2.7rem; padding:.65rem .75rem; border:1px solid #c8c1b6; border-radius:2px; background:#fff; color:#181817; font-size:1rem; font-weight:400; }
.form-body textarea { resize:vertical; }
.form-body input::placeholder,.form-body textarea::placeholder { color:#79736b; opacity:1; }
.form-body label small { color:#615e58; font-size:.8rem; font-weight:400; }
.field-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; }
.field-grid.three { grid-template-columns:repeat(3,minmax(0,1fr)); }
.checks { display:grid; gap:.75rem; padding-top:.45rem; }
.checks label,.form-body .check-row { display:flex; align-items:flex-start; gap:.6rem; font-size:.88rem; line-height:1.45; font-weight:400; }
input[type="checkbox"] { accent-color:var(--orange); width:1.05rem; height:1.05rem; flex:none; margin:.12rem 0 0; }
.sms-opt-in { margin-top:-.25rem; padding:.75rem .85rem; background:#f6f0e6; border:1px solid #d8cabc; }
.primary-button { width:100%; min-height:3.25rem; display:flex; align-items:center; justify-content:space-between; padding:0 1.2rem; border:0; border-radius:2px; background:var(--orange); color:white; font-size:1rem; font-weight:800; text-align:left; }
.primary-button:hover { background:#bb4215; }
.form-footnote { margin:0; color:#615d56; font-size:.8rem; }
.field-heading { margin:.3rem 0 -.2rem; padding-top:1.3rem; border-top:1px solid #ded7cb; font-size:.95rem; }
.field-heading span { margin-left:.3rem; color:#666056; font-size:.8rem; font-weight:400; }
.photo-hint { margin:-.15rem 0 0; color:#59534a; font-size:.9rem; line-height:1.5; }
.photo-actions { display:flex; flex-wrap:wrap; gap:.65rem; }
.form-body .photo-button { position:relative; display:inline-flex; align-items:center; justify-content:center; min-height:2.7rem; padding:.55rem .95rem; border:1px solid #995333; background:#fff5ed; color:#603016; font-weight:750; cursor:pointer; }
.photo-button:hover { background:#ffe7d4; }
.photo-button:focus-within { outline:2px solid var(--orange); outline-offset:2px; }
.form-body .photo-button input { position:absolute; width:1px; height:1px; opacity:0; overflow:hidden; }
.form-body .mobile-photo-button { display:none; }
@media (hover:none) and (pointer:coarse) { .form-body .mobile-photo-button { display:inline-flex; } }
.photo-preview { display:flex; gap:1rem; align-items:flex-start; padding:.85rem; border:1px solid #d1c7b8; background:#fbf7f0; }
.photo-preview img { width:6rem; height:7.5rem; object-fit:contain; background:#eee6db; }
.photo-preview strong { display:block; margin-top:.3rem; }
.photo-preview p { margin:.3rem 0; color:#5e574f; font-size:.82rem; line-height:1.4; }
.photo-preview .text-button { padding:0; }
.lead-choice { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.65rem; }
.form-body .lead-choice label { display:flex; gap:.55rem; align-items:flex-start; border:1px solid #c7baaa; padding:.8rem; background:#fbf8f3; cursor:pointer; line-height:1.3; }
.form-body .lead-choice label:has(input:checked) { border-color:#cf5726; background:#fff1e8; }
.lead-choice input { margin:.2rem 0 0; accent-color:var(--orange); flex:none; }
.lead-choice label span { display:grid; gap:.25rem; }
.lead-choice label small { color:#625b51; font-size:.78rem; }
.saved-banner { margin:1.5rem clamp(1.2rem,3vw,2.7rem) 0; padding:1rem; background:#eaf3e7; color:#234b2c; }
.saved-banner p { margin:.25rem 0 0; }
.text-button { justify-self:center; border:0; background:transparent; color:#4d4840; text-decoration:underline; text-underline-offset:.25rem; font-size:.9rem; }
.complete-panel { padding:3rem clamp(1.2rem,3vw,2.7rem); color:#234b2c; }
.complete-panel>span { font-size:1.7rem; }
.complete-panel h3 { margin:.8rem 0 .4rem; color:#181817; font:500 2rem Georgia,'Times New Roman',serif; }
.complete-panel p { color:#504d47; }
.complete-panel .text-button { display:block; padding:.3rem 0; }
.form-error { padding:.8rem 1rem; margin:0; background:#fae8e2; color:#9c2e14; }
.honeypot { position:absolute!important; left:-10000px!important; width:1px!important; height:1px!important; overflow:hidden!important; }
.account-page { max-width:1100px; padding:clamp(1.25rem,4vw,4rem); margin:auto; min-height:70vh; }
.account-page .form-card { max-width:none; }
.account-page h1 { font:500 clamp(2rem,4vw,3rem)/1.1 Georgia,serif; margin:.2rem 0 1rem; }
.account-page h2 { margin:2rem 0 .65rem; font:500 1.7rem/1.2 Georgia,serif; }
.admin-form,.inner-form { display:grid; gap:1rem; max-width:40rem; }
.admin-form label { display:grid; gap:.35rem; font-weight:700; }
.admin-form input,.admin-form select,.inner-form input:not([type="checkbox"]):not([type="file"]),.inline-form select { width:100%; min-height:2.7rem; padding:.6rem; border:1px solid #c8c1b6; background:#fff; }
.admin-links { display:flex; flex-wrap:wrap; gap:1.2rem; margin:1rem 0; }
.table-scroll { overflow-x:auto; }
.table-scroll table { border-collapse:collapse; width:100%; min-width:650px; font-size:.88rem; }
.table-scroll th,.table-scroll td { text-align:left; vertical-align:top; border-bottom:1px solid #d9d1c6; padding:.6rem; }
.inline-form { display:inline-flex; flex-wrap:wrap; align-items:center; gap:.35rem; margin:.3rem .4rem .3rem 0; }
.inline-form label { display:inline-flex; align-items:center; gap:.35rem; }
.photo-preview-button { cursor:pointer; padding:.4rem .7rem; border:1px solid var(--orange); color:var(--orange); background:transparent; font:inherit; font-weight:700; }
.photo-review-dialog { width:min(94vw,720px); max-height:92vh; overflow:auto; }
.photo-review-dialog img { display:block; max-width:100%; max-height:60vh; width:auto; height:auto; margin:1rem auto; background:#eee7db; }
.photo-review-actions,.photo-review-footer { display:flex; flex-wrap:wrap; align-items:center; gap:.75rem; margin-top:1rem; }
.photo-review-actions button,.photo-review-footer button { cursor:pointer; min-height:2.7rem; padding:.5rem 1rem; }
.photo-review-footer { justify-content:space-between; }
.privacy-copy { max-width:55rem; }
.privacy-copy p { line-height:1.65; }
dialog { width:min(90vw,29rem); padding:1.8rem; border:1px solid #c7bcb0; border-top:.45rem solid var(--orange); background:var(--paper); box-shadow:0 20px 50px #0004; color:var(--ink); }
dialog::backdrop { background:rgb(0 0 0 / .5); }
dialog h2 { margin:0; font:500 1.7rem/1.13 Georgia,'Times New Roman',serif; }
dialog p { color:#37332d; line-height:1.5; }
.graduation-photo-match { display:grid; justify-items:center; gap:.45rem; margin:1rem 0; }
.graduation-photo-match img { width:150px; height:178px; object-fit:contain; background:#eee7db; border:1px solid #cfc7b9; }
.graduation-photo-match figcaption { color:#504a42; font-size:.85rem; overflow-wrap:anywhere; }
.prompt-actions { display:grid; gap:.65rem; margin-top:1.25rem; }
.prompt-actions button { min-height:2.8rem; padding:.55rem .8rem; border:1px solid #b7522e; background:var(--orange); color:white; font-weight:700; }
.prompt-actions button:nth-child(2) { background:#fff7f1; color:#693316; }
.prompt-actions button:last-child { border:0; background:transparent; color:#4d4840; text-decoration:underline; }
.reunion-band,.about-band { display:grid; grid-template-columns:17% minmax(0,1fr) 26%; gap:2.4rem; padding:clamp(3rem,6vw,6rem) clamp(1.5rem,5vw,6rem); }
.reunion-band { background:#e9612a; }
.about-band { background:#e8e1d5; }
.section-index { margin:.8rem 0 0; font-size:.75rem; font-weight:900; letter-spacing:.18em; }
.reunion-band h2,.about-band h2 { margin:0 0 1rem; font:500 clamp(2.2rem,4vw,4.4rem)/1.08 Georgia,'Times New Roman',serif; letter-spacing:-.04em; }
.reunion-band p,.about-band p { line-height:1.6; }
.reunion-band>div>p,.about-band>div>p { max-width:48rem; margin:0; font-size:1.06rem; }
.reunion-band .date-kicker { margin:0 0 1rem; font-size:.78rem; letter-spacing:.16em; font-weight:900; }
.reunion-band .registration-note { margin-top:1.1rem; font-size:.9rem; font-weight:700; }
.venue-card { align-self:center; display:grid; gap:.7rem; padding:1.5rem; border:1.5px solid #412117; background:rgba(255,255,255,.12); }
.venue-card small { font-size:.72rem; font-weight:900; letter-spacing:.16em; }
.venue-card strong { font:500 1.75rem Georgia,'Times New Roman',serif; }
.venue-card address { font-style:normal; }
.venue-card a { width:fit-content; border-bottom:1px solid currentColor; text-decoration:none; font-size:.9rem; font-weight:800; }
.map-card { align-self:center; display:grid; place-items:center; max-width:360px; margin:0; padding:.7rem; border:1px solid #c4bcaf; background:#fff; }
.map-card img { display:block; width:100%; height:auto; }
.map-card figcaption { margin-top:.4rem; font-size:.7rem; font-weight:850; letter-spacing:.16em; }
.site-footer { display:flex; justify-content:space-between; flex-wrap:wrap; gap:1rem; padding:2rem clamp(1.5rem,5vw,6rem); background:#171716; color:#ddd5c8; font-size:.78rem; font-weight:750; letter-spacing:.08em; }
.noscript { position:fixed; bottom:0; left:0; right:0; padding:1rem; background:#ffe6c9; color:#40210e; text-align:center; }
@media (max-width:1080px) {
  .intro { grid-template-columns:minmax(0,40%) minmax(0,60%); }
  .intro-copy { padding-inline:2rem; }
  .reunion-band,.about-band { grid-template-columns:20% minmax(0,1fr); }
  .venue-card,.map-card { grid-column:2; }
}
@media (max-width:850px) {
  .intro { display:block; }
  .intro-copy { padding:3.5rem 1.5rem 2.5rem; }
  .intro .edition { margin-top:2.5rem; font-size:clamp(2.25rem,6vw,3.25rem); }
  .intro .edition-school { font-size:clamp(1.05rem,3.5vw,1.35rem); }
  .intro .classmate-callout { font-size:clamp(2rem,4.8vw,2.6rem); }
  .intro-facts { margin-top:2.5rem; }
  .form-column { padding:2rem 1.5rem 3rem; }
  .form-card { box-shadow:8px 8px 0 #e9dfd0; }
  .reunion-band,.about-band { grid-template-columns:1fr; gap:1rem; }
  .venue-card,.map-card { grid-column:auto; }
}
@media (max-width:550px) {
  .masthead { min-height:78px; padding:.9rem 1rem; }
  .brand img { width:2.8rem; height:2.8rem; }
  .brand { font-size:.68rem; }
  .brand small { font-size:.65rem; letter-spacing:.12em; }
  .masthead nav { display:none; }
  .intro-copy { padding-inline:1.15rem; }
  .eyebrow { font-size:.66rem; }
  .intro .edition { font-size:clamp(2.1rem,8vw,2.75rem); }
  .intro .edition-school { font-size:clamp(.8rem,3.6vw,1.05rem); }
  .hero-date { padding:1rem 1.05rem; }
  .intro .classmate-callout { font-size:clamp(1.9rem,7vw,2.35rem); }
  .intro-lede { font-size:1rem; }
  .form-column { padding:1.1rem 1.1rem 2.2rem; }
  .form-topline { font-size:.64rem; letter-spacing:.1em; }
  .tabs { gap:.8rem; }
  .tabs button { padding:.65rem .7rem; font-size:.78rem; }
  .tabs button small { font-size:.69rem; }
  .lead-choice { grid-template-columns:1fr; }
  .field-grid,.field-grid.three { grid-template-columns:1fr; }
  .reunion-band,.about-band { padding:3rem 1.2rem; }
}
