:root { --ink:#25231f; --paper:#f4f0e7; --card:#fffdf7; --line:#d7d0c3; --accent:#c65337; --teal:#176b69; }
* { box-sizing:border-box; }
body { margin:0; background:var(--paper); color:var(--ink); font-family:Inter, ui-sans-serif, system-ui, sans-serif; }
button, a { font:inherit; }
main { min-height:100vh; padding:42px clamp(16px,4vw,64px) 56px; background-image:radial-gradient(circle at 80% 0%,rgba(198,83,55,.11),transparent 30%),linear-gradient(rgba(37,35,31,.025) 1px,transparent 1px); background-size:auto,100% 28px; }
.masthead { max-width:1400px; margin:0 auto 26px; display:flex; align-items:flex-end; justify-content:space-between; gap:24px; }
.masthead-side { display:flex; align-items:flex-end; flex-direction:column; gap:12px; }
.site-nav { display:flex; gap:14px; font-size:.78rem; font-weight:800; letter-spacing:.04em; }
.site-nav a { color:#5f594f; text-decoration:none; }
.site-nav a:hover { color:var(--accent); }
.eyebrow { margin:0 0 7px; color:var(--accent); font-size:.75rem; font-weight:800; letter-spacing:.18em; text-transform:uppercase; }
h1 { margin:0; font-family:Georgia,serif; font-size:clamp(2.1rem,4.5vw,4rem); line-height:.95; letter-spacing:-.045em; }
.subhead { margin:12px 0 0; color:#6b655b; font-size:.95rem; }
.range { flex:none; padding:10px 14px; border:1px solid var(--line); background:rgba(255,253,247,.65); color:#5f594f; font-size:.75rem; font-weight:750; letter-spacing:.08em; }
.range span { color:var(--accent); padding:0 4px; }
.calendar-shell { max-width:1400px; margin:auto; overflow:hidden; border:1px solid #bcb3a5; border-radius:14px; background:var(--card); box-shadow:0 18px 55px rgba(49,42,31,.11); }
.calendar-toolbar { min-height:86px; display:grid; grid-template-columns:1fr auto 1fr; align-items:center; padding:14px 18px; border-bottom:1px solid var(--line); background:#ede7dc; }
.month-title { text-align:center; }
.month-title h2 { margin:0; font-family:Georgia,serif; font-size:1.9rem; font-weight:500; }
.month-title h2 strong { color:var(--accent); font-weight:500; }
.month-title p { margin:4px 0 0; color:#777064; font-size:.72rem; letter-spacing:.08em; text-transform:uppercase; }
.nav-button { width:max-content; padding:9px 13px; border:1px solid #bdb4a7; border-radius:7px; background:var(--card); color:var(--ink); cursor:pointer; font-weight:700; }
.nav-button:last-child { justify-self:end; }
.nav-button:hover:not(:disabled) { border-color:var(--accent); color:var(--accent); transform:translateY(-1px); }
.nav-button:disabled { opacity:.28; cursor:not-allowed; }
.weekday-row { display:grid; grid-template-columns:repeat(7,1fr); background:var(--ink); color:#fffaf0; }
.weekday-row div { padding:9px 10px; text-align:center; font-size:.72rem; font-weight:750; letter-spacing:.1em; text-transform:uppercase; }
.month-grid { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); }
.day-cell { min-height:145px; padding:8px; border-right:1px solid var(--line); border-bottom:1px solid var(--line); background:rgba(255,253,247,.72); overflow:hidden; }
.day-cell:nth-child(7n) { border-right:0; }
.day-cell.empty { background:#eee9df; }
.day-number { width:28px; height:28px; display:grid; place-items:center; border-radius:50%; font-family:Georgia,serif; font-size:1rem; }
.has-events .day-number { background:var(--accent); color:white; }
.event-stack { display:flex; flex-direction:column; gap:4px; margin-top:5px; }
.event-chip { width:100%; padding:5px 7px; overflow:hidden; border:0; border-left:3px solid var(--teal); border-radius:3px; background:#e5f0eb; color:#214441; cursor:pointer; text-align:left; text-overflow:ellipsis; white-space:nowrap; font-size:.72rem; font-weight:650; }
.event-chip span { display:block; color:#617b76; font-size:.61rem; font-weight:800; letter-spacing:.02em; }
.event-chip:hover { background:#cfe4dc; transform:translateX(1px); }
.calendar-note { max-width:1400px; margin:14px auto 0; color:#6e675c; font-size:.78rem; }
.info-grid { max-width:1400px; display:grid; grid-template-columns:1.2fr 1fr 1fr; gap:14px; margin:42px auto 0; scroll-margin-top:20px; }
.info-card { padding:27px; border:1px solid #cfc6b8; border-radius:12px; background:rgba(255,253,247,.76); box-shadow:0 10px 30px rgba(49,42,31,.05); }
.info-card h2 { margin:0 0 14px; font-family:Georgia,serif; font-size:1.55rem; line-height:1.08; letter-spacing:-.025em; }
.about-image { display:block; width:100%; max-height:178px; margin:0 0 18px; border:1px solid #d2bca6; border-radius:7px; object-fit:cover; object-position:center 52%; }
.info-card p { color:#5f594f; font-size:.91rem; line-height:1.6; }
.info-card p + p { margin-top:12px; }
.section-kicker { margin:0 0 8px !important; color:var(--accent) !important; font-size:.7rem !important; font-weight:850; letter-spacing:.13em; line-height:1.3 !important; text-transform:uppercase; }
.accent-card { border-color:#b6ceca; background:#e5f0eb; }
.accent-card h2 { color:#214441; }
.fine-print { margin-bottom:0; color:#7b7468 !important; font-size:.76rem !important; line-height:1.5 !important; }
.action-link, .contact-email { display:inline-block; margin:4px 0 2px; color:var(--teal); font-weight:850; text-decoration:none; }
.action-link { padding:10px 12px; border:1px solid #8fb1aa; border-radius:6px; background:#fffdf7; }
.action-link:hover, .contact-email:hover { color:var(--accent); }
.contact-form { width:min(100%, 620px); display:grid; gap:15px; margin:22px 0 12px; }
.contact-form label { display:grid; gap:7px; }
.field-label { color:#315d58; font-size:.7rem; font-weight:850; letter-spacing:.11em; line-height:1.2; text-transform:uppercase; }
.contact-form input, .contact-form textarea, .contact-form select { width:100%; min-height:44px; padding:10px 12px; border:1px solid #9bbab4; border-radius:7px; background:#fffdf7; color:var(--ink); font-family:Inter, ui-sans-serif, system-ui, sans-serif; font-size:.94rem; font-weight:500; line-height:1.35; }
.contact-form textarea { min-height:128px; resize:vertical; }
.contact-form select { appearance:auto; }
.contact-form input:focus, .contact-form textarea:focus, .contact-form select:focus { outline:2px solid rgba(198,83,55,.4); outline-offset:1px; border-color:var(--accent); }
.trap { position:absolute; left:-9999px; width:1px !important; height:1px; opacity:0; pointer-events:none; }
.form-submit { justify-self:start; margin-top:2px; cursor:pointer; }
.form-submit:disabled { opacity:.65; cursor:wait; }
.form-message { margin:0 !important; padding:9px 11px; border-radius:5px; font-size:.82rem !important; }
.form-message.success { background:#d7ebe2; color:#214441 !important; }
.form-message.error { background:#f8ddd6; color:#8b3527 !important; }
.modal-backdrop { position:fixed; inset:0; z-index:20; display:grid; place-items:center; padding:18px; background:rgba(31,28,24,.58); backdrop-filter:blur(4px); }
.modal-backdrop[hidden] { display:none !important; }
.event-modal { position:relative; width:min(540px,100%); padding:34px; border-radius:14px; background:var(--card); box-shadow:0 24px 80px rgba(0,0,0,.28); animation:rise .18s ease-out; }
@keyframes rise { from { opacity:0; transform:translateY(8px) scale(.985); } }
.close { position:absolute; top:13px; right:15px; width:34px; height:34px; border:0; border-radius:50%; background:#eee8dc; cursor:pointer; font-size:1.6rem; line-height:1; }
.event-date { margin:0 40px 8px 0; color:var(--accent); font-size:.75rem; font-weight:800; letter-spacing:.1em; text-transform:uppercase; }
.event-modal h2 { margin:0; font-family:Georgia,serif; font-size:2rem; line-height:1.1; }
dl { margin:26px 0; border-top:1px solid var(--line); }
dl div { display:grid; grid-template-columns:80px 1fr; gap:10px; padding:12px 0; border-bottom:1px solid var(--line); }
dt { color:#80786d; font-size:.72rem; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
dd { margin:0; line-height:1.45; }
.notice { padding:12px 14px; border-left:3px solid #d39b38; background:#fbf1da; color:#5b4a2b; font-size:.83rem; line-height:1.5; }
.source-link { display:inline-block; margin-top:8px; color:var(--teal); font-weight:800; text-decoration:none; }
.source-link:hover { text-decoration:underline; }

@media (max-width:800px) {
  main { padding:24px 10px 40px; }
  .masthead { align-items:flex-start; flex-direction:column; }
  .masthead-side { align-items:flex-start; gap:10px; }
  .subhead { max-width:310px; }
  .range { display:none; }
  .calendar-toolbar { min-height:74px; padding:10px 8px; }
  .nav-button span { display:none; }
  .month-title h2 { font-size:1.4rem; }
  .weekday-row div { padding:7px 2px; font-size:.62rem; }
  .day-cell { min-height:105px; padding:4px 3px; }
  .day-number { width:23px; height:23px; font-size:.82rem; }
  .event-chip { padding:4px; border-left-width:2px; font-size:.58rem; }
  .event-chip span { font-size:.52rem; }
  .event-modal { padding:28px 22px; }
  .info-grid { grid-template-columns:1fr; margin-top:30px; }
  .info-card { padding:22px; }
}
