/* ============================================================
   Boston Live Printing — "Ivy Heritage Crest"
   Collegiate old-world authority x biotech clean.
   Cream + deep crimson + navy. Fraunces display, Inter body.
   No frameworks. transform/opacity animation only.
   ============================================================ */

:root{
  --paper:#f3ecdd; --paper-2:#ece2cf; --vellum:#e7dcc4;
  --ink:#1c1a17; --ink-soft:#3a352d;
  --crimson:#8a1228; --crimson-deep:#6c0d1f;
  --navy:#16243f; --navy-deep:#101b30;
  --gold:#a4843c; --gold-soft:#c2a662;
  --line:#cdbf9f; --line-soft:#ddd0b3;
  --muted:#5d564a;
  --paper-ink:#f3ecdd;
  --maxw:1180px;
  --r:3px;                 /* tight, engraved corners — old-world, not bubbly */
  --shadow:0 1px 0 #fff8, 0 18px 40px -28px rgba(28,26,23,.5);
  --ease:cubic-bezier(.22,.61,.36,1);
  --font-display:"Fraunces", Georgia, "Times New Roman", serif;
  --font-body:"Inter", system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
}

*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
@media (prefers-reduced-motion: reduce){ html{scroll-behavior:auto} }

body{
  margin:0; background:var(--paper); color:var(--ink);
  font-family:var(--font-body); font-size:17px; line-height:1.62;
  font-weight:400; letter-spacing:.005em;
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
  overflow-x:hidden;
}

/* subtle laid-paper grain via layered gradients, fixed so it reads like stock */
body::before{
  content:""; position:fixed; inset:0; z-index:-2; pointer-events:none;
  background:
    radial-gradient(120% 90% at 12% 0%, rgba(255,255,255,.55), transparent 55%),
    radial-gradient(120% 120% at 100% 100%, rgba(138,18,40,.05), transparent 60%),
    repeating-linear-gradient(0deg, rgba(28,26,23,.014) 0 1px, transparent 1px 3px);
}

img{max-width:100%;height:auto;display:block}
a{color:var(--crimson);text-decoration:none}
h1,h2,h3,h4{font-family:var(--font-display);font-weight:600;line-height:1.06;color:var(--ink);letter-spacing:-.005em}
em{font-style:italic;font-optical-sizing:auto}
b,strong{font-weight:600}
.container{width:100%;max-width:var(--maxw);margin-inline:auto;padding-inline:clamp(1.1rem,4vw,2.2rem)}
.container.narrow{max-width:880px}
.center{text-align:center}
.mt-2{margin-top:1.5rem}.mt-3{margin-top:3rem}
.muted{color:var(--muted)}

/* ---------- skip link ---------- */
.skip-link{position:fixed;top:-60px;left:14px;z-index:200;background:var(--navy);color:var(--paper-ink);
  padding:.7rem 1.1rem;border-radius:var(--r);font-weight:600;font-size:.9rem;transition:top .18s}
.skip-link:focus{top:14px;outline:2px solid var(--gold-soft);outline-offset:2px}

/* visible focus everywhere */
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,.faq-q:focus-visible{
  outline:2.5px solid var(--gold); outline-offset:2px; border-radius:2px;
}

/* ---------- scroll progress ---------- */
.scroll-progress{position:fixed;top:0;left:0;height:3px;width:100%;transform:scaleX(0);transform-origin:0 50%;
  background:linear-gradient(90deg,var(--crimson),var(--gold));z-index:120;will-change:transform}

/* ---------- varsity stripe rules ---------- */
.varsity-rule{height:5px;width:100%;
  background:
    linear-gradient(90deg,var(--crimson) 0 33.3%, var(--paper) 33.3% 36%, var(--navy) 36% 100%);
  position:relative}
.varsity-rule::after{content:"";position:absolute;inset:0;
  background:repeating-linear-gradient(90deg, transparent 0 7px, rgba(255,255,255,.18) 7px 8px)}
.varsity-rule.alt{background:linear-gradient(90deg,var(--navy) 0 64%, var(--paper) 64% 66.7%, var(--crimson) 66.7% 100%)}

/* ============================================================
   BUTTONS
   ============================================================ */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;
  font-family:var(--font-body);font-weight:600;font-size:.94rem;letter-spacing:.02em;
  padding:.78rem 1.4rem;border-radius:var(--r);border:1.5px solid transparent;cursor:pointer;
  transition:transform .18s var(--ease), background .18s, color .18s, border-color .18s, box-shadow .18s;
  text-align:center;line-height:1.1}
.btn-lg{padding:.95rem 1.8rem;font-size:1rem}
.btn-accent{background:var(--crimson);color:#fbeee0;border-color:var(--crimson)}
.btn-accent:hover{background:var(--crimson-deep);transform:translateY(-2px);box-shadow:0 12px 26px -14px rgba(108,13,31,.7)}
.btn-paper{background:var(--paper-ink);color:var(--navy-deep);border-color:var(--paper-ink)}
.btn-paper:hover{background:#fff;transform:translateY(-2px)}
.btn-line{background:transparent;color:var(--navy);border-color:var(--navy)}
.btn-line:hover{background:var(--navy);color:var(--paper-ink);transform:translateY(-2px)}
.btn-line-light{background:transparent;color:var(--paper-ink);border-color:rgba(243,236,221,.5)}
.btn-line-light:hover{background:var(--paper-ink);color:var(--navy-deep);border-color:var(--paper-ink);transform:translateY(-2px)}
@media (prefers-reduced-motion: reduce){ .btn:hover{transform:none} }

/* ============================================================
   HEADER
   ============================================================ */
.site-header{position:sticky;top:0;z-index:100;background:rgba(243,236,221,.92);
  backdrop-filter:saturate(140%) blur(8px);-webkit-backdrop-filter:saturate(140%) blur(8px);
  border-bottom:1px solid var(--line);transition:box-shadow .25s, background .25s}
.site-header.is-stuck{box-shadow:0 10px 30px -22px rgba(28,26,23,.6);background:rgba(243,236,221,.97)}
.header-inner{display:flex;align-items:center;gap:1.2rem;min-height:74px}
.brand{display:flex;align-items:center;gap:.7rem;flex-shrink:0}
.brand-crest{display:block;filter:drop-shadow(0 2px 4px rgba(16,27,48,.25))}
.brand-word{display:flex;flex-direction:column;line-height:1.05}
.brand-word b{font-family:var(--font-display);font-weight:600;font-size:1.12rem;color:var(--navy-deep);letter-spacing:-.01em}
.brand-word span{font-size:.62rem;letter-spacing:.22em;text-transform:uppercase;color:var(--gold);font-weight:600;margin-top:1px}
.site-nav{margin-left:auto;display:flex;align-items:center;gap:1.5rem}
.nav-list{display:flex;gap:1.45rem;list-style:none;margin:0;padding:0}
.nav-list a{color:var(--ink-soft);font-size:.93rem;font-weight:500;letter-spacing:.01em;padding:.35rem 0;position:relative}
.nav-list a::after{content:"";position:absolute;left:0;right:100%;bottom:-2px;height:1.5px;background:var(--crimson);transition:right .25s var(--ease)}
.nav-list a:hover{color:var(--crimson)}
.nav-list a:hover::after{right:0}
.header-phone{display:none;align-items:center;gap:.35rem;color:var(--navy);font-weight:600;font-size:.92rem;white-space:nowrap}
.header-phone .hp-i{color:var(--crimson)}
.header-phone:hover{color:var(--crimson)}
.nav-toggle{display:none}

/* ============================================================
   HERO  (split: serif headline + ledger | framed photo + wax seal)
   ============================================================ */
.hero{position:relative;background:
    radial-gradient(130% 120% at 82% -10%, rgba(138,18,40,.4), transparent 55%),
    linear-gradient(180deg,var(--navy) 0%, var(--navy-deep) 100%);
  color:var(--paper-ink);overflow:hidden;border-bottom:1px solid var(--navy-deep)}
.hero::before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.5;
  background:
    radial-gradient(60% 50% at 88% 18%, rgba(196,166,98,.16), transparent 60%),
    repeating-linear-gradient(0deg, rgba(255,255,255,.018) 0 1px, transparent 1px 3px)}
/* thin gold engraved frame inset */
.hero::after{content:"";position:absolute;inset:14px;border:1px solid rgba(196,166,98,.28);pointer-events:none;border-radius:2px}
.hero-stripe{position:absolute;top:0;bottom:0;left:0;width:8px;
  background:linear-gradient(180deg,var(--crimson) 0 50%, var(--gold) 50% 100%);z-index:3}
.hero-inner{position:relative;z-index:2;display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(2rem,5vw,4.5rem);
  align-items:center;padding-block:clamp(3.4rem,7vw,6rem)}
.hero-eyebrow{display:inline-flex;align-items:center;gap:.5rem;font-size:.72rem;letter-spacing:.24em;text-transform:uppercase;
  color:var(--gold-soft);font-weight:600;border:1px solid rgba(196,166,98,.4);padding:.42rem .85rem;border-radius:var(--r)}
.hero-eyebrow .he-mark{color:var(--crimson);font-size:.85rem;line-height:1}
.hero h1{font-size:clamp(2.9rem,6.4vw,5.1rem);font-weight:500;letter-spacing:-.018em;margin:1.3rem 0 0;color:var(--paper-ink)}
.hero h1 em{color:var(--gold-soft);font-weight:500;font-style:italic}
.hero-sub{margin:1.3rem 0 0;font-size:1.12rem;line-height:1.6;color:#e4dcca;max-width:33ch}
.hero-actions{display:flex;flex-wrap:wrap;gap:.85rem;margin-top:2rem}

/* stat ledger — hairline-ruled rows, the signature */
.ledger{margin:2.4rem 0 0;padding:0;border-top:1px solid rgba(196,166,98,.34)}
.ledger-row{display:flex;align-items:baseline;gap:.6rem;padding:.72rem 0;border-bottom:1px solid rgba(196,166,98,.2);margin:0}
.lr-label{font-size:.78rem;letter-spacing:.13em;text-transform:uppercase;color:#cfc4ab;font-weight:500;white-space:nowrap}
.lr-dots{flex:1;border-bottom:1px dotted rgba(196,166,98,.45);transform:translateY(-3px)}
.lr-figure{font-family:var(--font-display);white-space:nowrap;display:flex;align-items:baseline;gap:.3rem}
.lr-figure b{font-size:1.65rem;font-weight:600;color:var(--paper-ink)}
.lr-unit{font-size:.8rem;letter-spacing:.08em;text-transform:uppercase;color:var(--gold-soft)}

/* framed hero photo */
.hero-media{position:relative}
.hero-frame{position:relative;margin:0;border:1px solid rgba(196,166,98,.5);padding:9px;background:rgba(16,27,48,.4);
  box-shadow:0 40px 70px -40px rgba(0,0,0,.7)}
.hero-frame img{width:100%;aspect-ratio:4/5;object-fit:cover;display:block;filter:saturate(1.02)}
.hero-corner{position:absolute;width:16px;height:16px;border:2px solid var(--gold-soft);z-index:3}
.hero-corner.tl{top:-1px;left:-1px;border-right:0;border-bottom:0}
.hero-corner.tr{top:-1px;right:-1px;border-left:0;border-bottom:0}
.hero-corner.bl{bottom:-1px;left:-1px;border-right:0;border-top:0}
.hero-corner.br{bottom:-1px;right:-1px;border-left:0;border-top:0}
.hero-plate{position:absolute;left:9px;right:9px;bottom:9px;background:linear-gradient(0deg,rgba(16,27,48,.94),rgba(16,27,48,.55) 70%,transparent);
  color:var(--paper-ink);font-size:.82rem;letter-spacing:.04em;padding:1.6rem .9rem .8rem;display:flex;align-items:center;gap:.5rem;font-weight:500}
.live-dot{width:8px;height:8px;border-radius:50%;background:var(--crimson);box-shadow:0 0 0 0 rgba(138,18,40,.6);animation:pulse 2s var(--ease) infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(220,60,90,.55)}70%{box-shadow:0 0 0 9px rgba(220,60,90,0)}100%{box-shadow:0 0 0 0 rgba(220,60,90,0)}}

/* wax seal badge, overlapping the frame */
.hero-seal{position:absolute;left:-46px;bottom:-40px;width:142px;height:142px;z-index:5;
  filter:drop-shadow(0 14px 22px rgba(0,0,0,.55))}
.hero-seal svg{width:100%;height:100%}
.seal-rotor{transform-origin:110px 110px;animation:spin 50s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* ============================================================
   REGISTRY MARQUEE (engraved ticker)
   ============================================================ */
.registry{background:var(--ink);color:var(--paper-ink);overflow:hidden;border-block:1px solid var(--navy-deep)}
.registry-track{display:flex;align-items:center;gap:1.4rem;white-space:nowrap;padding:.78rem 0;width:max-content;
  animation:marquee 42s linear infinite;will-change:transform}
.registry-item{font-family:var(--font-display);font-style:italic;font-size:1rem;letter-spacing:.01em;color:#e7dcc4}
.registry-star{color:var(--crimson);font-size:.75rem}
@keyframes marquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}
.registry:hover .registry-track{animation-play-state:paused}

/* ============================================================
   SECTIONS
   ============================================================ */
.section{padding-block:clamp(3.4rem,7vw,6rem);position:relative}
.section-paper{background:var(--paper)}
.section-vellum{background:linear-gradient(180deg,var(--vellum),var(--paper-2));border-block:1px solid var(--line)}
.section-navy{background:radial-gradient(120% 120% at 8% 0%, rgba(138,18,40,.22), transparent 55%), linear-gradient(180deg,var(--navy),var(--navy-deep));color:var(--paper-ink);border-block:1px solid var(--navy-deep)}
.section-head{max-width:680px;margin-bottom:2.6rem}
.section-head.center{margin-inline:auto;text-align:center}
.eyebrow{display:inline-flex;align-items:center;gap:.55rem;font-size:.72rem;letter-spacing:.24em;text-transform:uppercase;
  color:var(--crimson);font-weight:600;margin:0 0 .9rem}
.eyebrow.light{color:var(--gold-soft)}
.eyebrow.gold{color:var(--gold-soft)}
.eyebrow.flank::before,.eyebrow.flank::after{content:"";width:26px;height:1px;background:currentColor;opacity:.55}
.section-head.center .eyebrow{justify-content:center}
.section-title{font-size:clamp(2rem,4.3vw,3.15rem);font-weight:500;letter-spacing:-.012em;margin:0;color:var(--ink)}
.section-title em{font-style:italic;color:var(--crimson)}
.section-title.light{color:var(--paper-ink)}
.section-title.light em{color:var(--gold-soft)}
.section-lede{margin:1.1rem 0 0;font-size:1.08rem;color:var(--muted);max-width:54ch;line-height:1.6}
.section-navy .section-lede,.split-lede{color:#d8cfbd}
.center-lede{margin-inline:auto;text-align:center}

/* ---------- reveal animation ---------- */
.reveal-pending{opacity:0;transform:translateY(22px)}
.is-inview{opacity:1;transform:none;transition:opacity .7s var(--ease), transform .7s var(--ease)}
@media (prefers-reduced-motion: reduce){
  .reveal-pending{opacity:1!important;transform:none!important}
  .seal-rotor{animation:none}
  .registry-track{animation:none}
  .live-dot{animation:none}
}

/* ============================================================
   CHARTER (how it works) — ruled ledger columns w/ roman numerals
   ============================================================ */
.charter{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:0;
  border:1px solid var(--line);border-radius:var(--r);overflow:hidden;background:var(--paper)}
.charter-col{padding:2rem 1.5rem;border-right:1px solid var(--line);position:relative;background:linear-gradient(180deg,#fff6e9,transparent 40%)}
.charter-col:last-child{border-right:0}
.ch-num{display:flex;align-items:center;justify-content:center;width:46px;height:46px;border:1.5px solid var(--crimson);
  border-radius:50%;margin-bottom:1.1rem}
.ch-num b{font-family:var(--font-display);font-size:1.05rem;font-weight:600;color:var(--crimson)}
.charter-col h3{font-size:1.16rem;margin:0 0 .5rem;color:var(--navy-deep)}
.charter-col p{margin:0;font-size:.94rem;color:var(--muted);line-height:1.55}

/* ============================================================
   CARD GRID  (services + occasions)
   ============================================================ */
.card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(248px,1fr));gap:1.2rem}
.svc-card{position:relative;background:var(--paper);border:1px solid var(--line);border-radius:var(--r);
  padding:1.9rem 1.6rem 1.5rem;display:flex;flex-direction:column;overflow:hidden;
  transition:transform .25s var(--ease), box-shadow .25s, border-color .25s;color:inherit}
.svc-card .svc-rule{position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--crimson),var(--gold));transform:scaleX(0);transform-origin:0;transition:transform .3s var(--ease)}
.svc-card:hover{transform:translateY(-4px);box-shadow:var(--shadow);border-color:var(--gold-soft)}
.svc-card:hover .svc-rule{transform:scaleX(1)}
.svc-no{position:absolute;top:1.1rem;right:1.2rem;font-family:var(--font-display);font-style:italic;font-size:.95rem;color:var(--gold);opacity:.7}
.svc-icon{width:50px;height:50px;display:flex;align-items:center;justify-content:center;color:var(--crimson);
  border:1px solid var(--line);border-radius:50%;margin-bottom:1.05rem;background:#fff6e9}
.svc-icon svg{width:24px;height:24px}
.svc-card h3{font-size:1.28rem;margin:0 0 .5rem;color:var(--navy-deep);letter-spacing:-.01em}
.svc-card p{margin:0 0 1.2rem;color:var(--muted);font-size:.95rem;flex:1;line-height:1.55}
.go{font-weight:600;font-size:.86rem;letter-spacing:.04em;color:var(--crimson);text-transform:uppercase;display:inline-flex;gap:.4rem;align-items:center}
.svc-card:hover .go span{transform:translateX(4px)}
.go span{transition:transform .25s var(--ease);display:inline-block}

/* occasion cards (photo) */
.occ-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}
.occasion-card{position:relative;border-radius:var(--r);overflow:hidden;border:1px solid var(--line);color:var(--paper-ink);
  display:block;aspect-ratio:4/3;transition:transform .3s var(--ease), box-shadow .3s}
.occasion-card img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .55s var(--ease)}
.occasion-card .ov{position:absolute;inset:0;background:linear-gradient(0deg,rgba(16,27,48,.92) 8%,rgba(16,27,48,.28) 55%,rgba(16,27,48,.1));z-index:1}
.occ-tab{position:absolute;top:0;left:1.1rem;z-index:3;font-family:var(--font-display);font-style:italic;font-size:.9rem;
  color:var(--navy-deep);background:var(--gold-soft);padding:.18rem .55rem;border-radius:0 0 var(--r) var(--r);font-weight:600}
.occasion-body{position:absolute;left:0;right:0;bottom:0;z-index:2;padding:1.4rem 1.3rem 1.2rem;display:flex;flex-direction:column;gap:.18rem}
.occasion-title{font-family:var(--font-display);font-size:1.28rem;font-weight:600;letter-spacing:-.01em;line-height:1.12}
.occasion-line{font-size:.9rem;color:#e0d8c7}
.occasion-go{margin-top:.5rem;font-size:.8rem;letter-spacing:.05em;text-transform:uppercase;font-weight:600;color:var(--gold-soft)}
.occasion-card:hover{transform:translateY(-4px);box-shadow:var(--shadow)}
.occasion-card:hover img{transform:scale(1.06)}
@media (prefers-reduced-motion: reduce){ .occasion-card:hover img{transform:none} .svc-card:hover,.occasion-card:hover{transform:none} }

/* ============================================================
   SPLIT (why live)
   ============================================================ */
.split{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,5vw,4rem);align-items:center}
.split-media{position:relative;margin:0;border:1px solid rgba(196,166,98,.4);padding:8px;background:rgba(16,27,48,.35)}
.split-media img{width:100%;aspect-ratio:5/4;object-fit:cover;display:block}
.sm-corner{position:absolute;width:18px;height:18px;border:2px solid var(--gold-soft);z-index:2}
.sm-corner.tl{top:-1px;left:-1px;border-right:0;border-bottom:0}
.sm-corner.br{bottom:-1px;right:-1px;border-left:0;border-top:0}
.split-copy h2{margin-top:0}
.split-lede{margin:1.1rem 0 0;font-size:1.06rem;line-height:1.6}
.creed{list-style:none;margin:1.7rem 0 0;padding:0;display:flex;flex-direction:column;gap:0}
.creed li{display:flex;gap:1rem;align-items:flex-start;padding:.85rem 0;border-top:1px solid rgba(196,166,98,.22);color:#e7dfce;font-size:1rem}
.creed li:last-child{border-bottom:1px solid rgba(196,166,98,.22)}
.creed .ix{font-family:var(--font-display);font-style:italic;color:var(--gold-soft);font-size:1.05rem;min-width:1.6rem;flex-shrink:0;text-align:right}

/* ============================================================
   THE STANDING RECORD  (established & proven ledger)
   ============================================================ */
.section-record{background:
    linear-gradient(180deg,var(--navy-deep),#0c1424);color:var(--paper-ink);
  border-block:1px solid #0a1120;position:relative;overflow:hidden}
.section-record::before{content:"";position:absolute;inset:18px;border:1px solid rgba(196,166,98,.22);pointer-events:none}
.record-head{text-align:center;margin-bottom:2.4rem}
.record-head .eyebrow{justify-content:center}
.record-ledger{max-width:760px;margin:0 auto;padding:0;border-top:1px solid rgba(196,166,98,.34)}
.rl-row{display:flex;align-items:baseline;gap:1rem;padding:1.15rem .4rem;border-bottom:1px solid rgba(196,166,98,.22);margin:0}
.rl-row dt{display:flex;align-items:baseline;gap:.7rem;font-size:1.02rem;color:#e3dac8;font-weight:400;letter-spacing:.01em}
.rl-no{font-family:var(--font-display);font-style:italic;color:var(--gold-soft);font-size:1rem}
.rl-fill{flex:1;border-bottom:1px dotted rgba(196,166,98,.4);transform:translateY(-4px);min-width:18px}
.rl-row dd{margin:0;font-family:var(--font-display);white-space:nowrap;display:flex;align-items:baseline;gap:.35rem}
.rl-row dd b{font-size:2.05rem;font-weight:600;color:var(--paper-ink);font-variant-numeric:tabular-nums}
.rl-suf{font-size:.82rem;letter-spacing:.08em;text-transform:uppercase;color:var(--gold-soft)}

/* ============================================================
   PLATE GRID (gallery / on the floor) — framed museum plates
   ============================================================ */
.plate-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem}
.plate{position:relative;margin:0;border:1px solid var(--line);background:#fff;padding:7px;overflow:hidden;border-radius:var(--r);
  box-shadow:0 1px 0 #fff}
.plate img{width:100%;aspect-ratio:1/1;object-fit:cover;display:block;filter:saturate(1.02)}
.plate.wide{grid-column:span 2}
.plate.wide img{aspect-ratio:16/10}
.plate figcaption{font-family:var(--font-display);font-style:italic;font-size:.9rem;color:var(--ink-soft);
  padding:.7rem .3rem .3rem;display:flex;gap:.5rem;align-items:baseline}
.pl-no{font-style:italic;color:var(--gold);font-size:.85rem;flex-shrink:0}
.gallery-full{grid-template-columns:repeat(4,1fr)}
.gallery-full .plate.tall{grid-row:span 2}
.gallery-full .plate.tall img{aspect-ratio:auto;height:100%}

/* venue list — engraved roster */
.venue-list{list-style:none;margin:0 auto;padding:0;max-width:780px;display:grid;grid-template-columns:1fr 1fr;gap:0}
.venue-list li{font-family:var(--font-display);font-size:1.08rem;color:var(--navy-deep);padding:.85rem .4rem;
  border-bottom:1px solid var(--line);display:flex;align-items:center;gap:.7rem}
.venue-list li::before{content:"\10070";color:var(--crimson);font-size:.6rem}
.venue-list.small li{font-size:.98rem;padding:.6rem .4rem}

/* ============================================================
   FAQ (engraved accordion)
   ============================================================ */
.faq-list{max-width:820px;margin:0 auto;border-top:1px solid var(--line)}
.faq-item{border-bottom:1px solid var(--line)}
.faq-h{margin:0}
.faq-q{width:100%;display:flex;align-items:center;gap:.8rem;background:none;border:0;cursor:pointer;
  padding:1.25rem .3rem;text-align:left;font-family:var(--font-display);font-size:1.16rem;font-weight:500;color:var(--navy-deep);line-height:1.25}
.faq-n{font-style:italic;color:var(--gold);font-size:1rem;flex-shrink:0}
.faq-qt{flex:1}
.faq-icon{position:relative;width:18px;height:18px;flex-shrink:0}
.faq-icon::before,.faq-icon::after{content:"";position:absolute;background:var(--crimson);transition:transform .28s var(--ease)}
.faq-icon::before{top:50%;left:0;right:0;height:1.5px;transform:translateY(-50%)}
.faq-icon::after{left:50%;top:0;bottom:0;width:1.5px;transform:translateX(-50%)}
.faq-item.is-open .faq-icon::after{transform:translateX(-50%) scaleY(0)}
.faq-q:hover{color:var(--crimson)}
.faq-a{overflow:hidden;max-height:0;transition:max-height .34s var(--ease)}
.faq-item.is-open .faq-a{max-height:340px}
.faq-a-inner{padding:0 .3rem 1.3rem;padding-left:2.1rem}
.faq-a-inner p{margin:0;color:var(--muted);font-size:1rem;line-height:1.6}
@media (prefers-reduced-motion: reduce){ .faq-a{transition:none} }

/* ============================================================
   QUOTE SECTION + LEAD FORM
   ============================================================ */
.quote-section{position:relative;background:radial-gradient(120% 120% at 92% 4%, rgba(138,18,40,.26), transparent 52%), linear-gradient(180deg,var(--navy),var(--navy-deep));
  color:var(--paper-ink);padding-block:clamp(3.4rem,7vw,6rem);overflow:hidden;border-top:1px solid var(--navy-deep)}
.quote-stripe{position:absolute;top:0;bottom:0;left:0;width:8px;background:linear-gradient(180deg,var(--crimson) 0 50%,var(--gold) 50% 100%)}
.quote-grid{display:grid;grid-template-columns:1fr 1.05fr;gap:clamp(2rem,5vw,4rem);align-items:start;position:relative;z-index:2}
.quote-lede{margin:1.1rem 0 1.6rem;font-size:1.06rem;color:#d8cfbd;line-height:1.6;max-width:46ch}
.quote-points{list-style:none;margin:0 0 1.7rem;padding:0;display:flex;flex-direction:column}
.quote-points li{display:flex;gap:1rem;align-items:flex-start;padding:.8rem 0;border-top:1px solid rgba(196,166,98,.22);color:#e7dfce;font-size:.98rem}
.quote-points li:last-child{border-bottom:1px solid rgba(196,166,98,.22)}
.quote-points .ix{font-family:var(--font-display);font-style:italic;color:var(--gold-soft);min-width:1.5rem;text-align:right;flex-shrink:0}
.quote-direct{font-size:.96rem;color:#cfc4ab;line-height:1.7}
.quote-tel{color:var(--paper-ink);font-family:var(--font-display);font-size:1.3rem;font-weight:600}
.quote-direct a[href^="mailto"]{color:var(--gold-soft)}

.quote-card{background:var(--paper);color:var(--ink);border-radius:var(--r);border:1px solid var(--line);
  box-shadow:0 40px 80px -40px rgba(0,0,0,.6);overflow:hidden}
.quote-card-head{display:flex;align-items:center;gap:.7rem;padding:1.1rem 1.5rem;border-bottom:1px solid var(--line);
  background:linear-gradient(180deg,#fff6e9,var(--paper))}
.qc-seal{display:flex}.qc-seal .cta-crest{width:34px;height:36px}
.qc-title{font-family:var(--font-display);font-weight:600;font-size:1.1rem;color:var(--navy-deep)}
.qc-city{margin-left:auto;font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--crimson);font-weight:600;
  border:1px solid var(--line);padding:.28rem .6rem;border-radius:var(--r)}
.lead-form{padding:1.5rem}
.hp-field{position:absolute!important;left:-9999px!important;width:1px;height:1px;opacity:0}
.field-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.field{margin-bottom:1rem;display:flex;flex-direction:column}
.field label{font-size:.74rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);font-weight:600;margin-bottom:.4rem}
.field input,.field select,.field textarea{font-family:var(--font-body);font-size:.97rem;color:var(--ink);
  background:#fffdf7;border:1px solid var(--line);border-radius:var(--r);padding:.7rem .8rem;width:100%;transition:border-color .18s, box-shadow .18s}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--crimson);box-shadow:0 0 0 3px rgba(138,18,40,.12)}
.field textarea{resize:vertical;min-height:96px}
.details-toggle{background:none;border:0;border-top:1px dashed var(--line);width:100%;text-align:left;padding:.7rem 0;margin-bottom:.6rem;
  color:var(--crimson);font-weight:600;font-size:.86rem;letter-spacing:.03em;cursor:pointer;display:flex;justify-content:space-between;align-items:center}
.details-toggle:hover{color:var(--crimson-deep)}
.details-toggle[aria-expanded="true"] span{transform:rotate(45deg);display:inline-block;transition:transform .2s}
.form-submit{width:100%;margin-top:.4rem}
.form-note{font-size:.82rem;color:var(--muted);text-align:center;margin:.9rem 0 0}
.lead-form.is-success .form-submit{background:var(--navy);border-color:var(--navy);cursor:default}

/* ============================================================
   TITLE BAND (interior hero)
   ============================================================ */
.title-band{position:relative;background:
    radial-gradient(120% 130% at 88% -20%, rgba(138,18,40,.32), transparent 55%),
    linear-gradient(180deg,var(--navy),var(--navy-deep));
  color:var(--paper-ink);padding-block:clamp(2.6rem,5.5vw,4rem);overflow:hidden;border-bottom:1px solid var(--navy-deep)}
.title-band::after{content:"";position:absolute;inset:12px;border:1px solid rgba(196,166,98,.24);pointer-events:none}
.title-band.center{text-align:center}
.band-laurel{position:absolute;top:18px;right:26px;color:var(--gold-soft);opacity:.4;font-size:1.4rem}
.breadcrumb{margin:0 0 1.1rem;position:relative;z-index:2}
.breadcrumb ol{list-style:none;display:flex;flex-wrap:wrap;gap:.5rem;margin:0;padding:0;font-size:.82rem;letter-spacing:.04em}
.breadcrumb li{display:flex;align-items:center;gap:.5rem;color:#cfc4ab}
.breadcrumb li:not(:last-child)::after{content:"\10070";color:var(--gold);font-size:.5rem;opacity:.7}
.breadcrumb a{color:var(--gold-soft)}
.breadcrumb a:hover{color:var(--paper-ink)}
.breadcrumb li[aria-current]{color:#cfc4ab}
.title-band .eyebrow{color:var(--gold-soft);position:relative;z-index:2}
.title-band.center .eyebrow{justify-content:center}
.page-title{position:relative;z-index:2;font-size:clamp(2.2rem,5vw,3.6rem);font-weight:500;letter-spacing:-.015em;margin:0;color:var(--paper-ink)}
.page-title em{font-style:italic;color:var(--gold-soft)}
.page-lede{position:relative;z-index:2;margin:1.1rem 0 0;font-size:1.12rem;color:#dcd3c1;max-width:60ch;line-height:1.6}
.title-band.center .page-lede{margin-inline:auto}
.band-actions{position:relative;z-index:2;margin-top:1.8rem;display:flex;gap:.8rem;justify-content:center;flex-wrap:wrap}

/* ============================================================
   ARTICLE (prose)
   ============================================================ */
.article{max-width:760px;padding-top:clamp(2.6rem,5vw,3.8rem);padding-bottom:clamp(2.6rem,5vw,3.8rem)}
.article p{margin:0 0 1.2rem;font-size:1.08rem;line-height:1.72;color:var(--ink-soft)}
.article .lead-para{font-family:var(--font-display);font-size:1.36rem;line-height:1.5;font-weight:400;color:var(--ink);margin-bottom:1.6rem}
.article .lead-para::first-letter{float:left;font-family:var(--font-display);font-size:3.6rem;line-height:.82;font-weight:600;
  color:var(--crimson);padding:.18rem .5rem 0 0}
.article h2{font-size:clamp(1.5rem,3vw,2rem);font-weight:600;margin:2.4rem 0 1rem;color:var(--navy-deep);letter-spacing:-.01em;
  padding-top:1.4rem;border-top:1px solid var(--line);position:relative}
.article h2::before{content:"";position:absolute;top:-1px;left:0;width:46px;height:2px;background:var(--crimson)}
.article h3{font-size:1.28rem;margin:1.8rem 0 .7rem;color:var(--navy-deep)}
.article ul,.article ol{margin:0 0 1.4rem;padding-left:0;list-style:none}
.article ul li{position:relative;padding:.5rem 0 .5rem 1.7rem;border-bottom:1px solid var(--line-soft);font-size:1.04rem;line-height:1.6;color:var(--ink-soft)}
.article ul li::before{content:"\10070";position:absolute;left:0;top:.85rem;color:var(--crimson);font-size:.66rem}
.article ul li strong{color:var(--ink)}
.article ol{counter-reset:li;padding-left:0}
.article ol li{counter-increment:li;position:relative;padding:.5rem 0 .5rem 2.2rem;border-bottom:1px solid var(--line-soft);font-size:1.04rem;color:var(--ink-soft)}
.article ol li::before{content:counter(li,lower-roman) ".";position:absolute;left:0;top:.5rem;font-family:var(--font-display);font-style:italic;color:var(--gold);font-weight:600}
.article a{color:var(--crimson);text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:3px;transition:text-decoration-color .2s}
.article a:hover{text-decoration-color:var(--crimson)}

.callout{background:linear-gradient(180deg,#fff6e9,var(--paper-2));border:1px solid var(--line);border-left:4px solid var(--crimson);
  border-radius:var(--r);padding:1.2rem 1.4rem;margin:1.8rem 0}
.callout p{margin:0;font-family:var(--font-display);font-style:italic;font-size:1.08rem;color:var(--navy-deep);line-height:1.5}

.ptable{width:100%;border-collapse:collapse;margin:1.4rem 0 1.8rem;font-size:1rem;border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.ptable th,.ptable td{text-align:left;padding:.85rem 1rem;border-bottom:1px solid var(--line);vertical-align:top}
.ptable thead th{background:var(--navy);color:var(--paper-ink);font-family:var(--font-body);font-size:.74rem;letter-spacing:.12em;text-transform:uppercase;font-weight:600}
.ptable tbody tr:nth-child(even){background:#fff6e9}
.ptable td strong{color:var(--crimson)}
.ptable tr:last-child td{border-bottom:0}

.sibling-links{margin-top:2.6rem;padding-top:1.6rem;border-top:1px solid var(--line)}
.sibling-head{font-size:.74rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-weight:600;margin:0 0 .9rem}
.chip-row{list-style:none;display:flex;flex-wrap:wrap;gap:.6rem;margin:0;padding:0}
.chip{display:inline-flex;align-items:center;font-size:.88rem;font-weight:500;color:var(--navy-deep);
  background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:.5rem .9rem;transition:all .2s}
a.chip:hover{border-color:var(--crimson);color:var(--crimson);background:#fff6e9}

/* ============================================================
   LEDGER CARDS (events index, locations/answers index)
   ============================================================ */
.ledger-cards{display:grid;grid-template-columns:1fr;gap:0;border-top:1px solid var(--line)}
.ledger-card{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:1.4rem;padding:1.5rem .6rem;
  border-bottom:1px solid var(--line);color:inherit;transition:background .22s, padding-left .22s var(--ease)}
.ledger-card:hover{background:linear-gradient(90deg,#fff6e9,transparent);padding-left:1.3rem}
.lc-no{font-family:var(--font-display);font-style:italic;font-size:1.5rem;color:var(--gold);width:2.4rem;flex-shrink:0}
.lc-body h3{font-size:1.34rem;margin:0 0 .25rem;color:var(--navy-deep);letter-spacing:-.01em}
.lc-body p{margin:0;color:var(--muted);font-size:.98rem;line-height:1.5}
.ledger-card .go{flex-shrink:0;white-space:nowrap}
@media (prefers-reduced-motion: reduce){ .ledger-card:hover{padding-left:.6rem} }

/* ============================================================
   CTA BANNER
   ============================================================ */
.cta-banner-wrap{padding-block:clamp(2.6rem,5vw,4rem)}
.cta-banner{position:relative;background:radial-gradient(120% 140% at 12% 0%, rgba(138,18,40,.3), transparent 55%), linear-gradient(180deg,var(--navy),var(--navy-deep));
  color:var(--paper-ink);border-radius:var(--r);padding:clamp(2.4rem,5vw,3.6rem) clamp(1.4rem,4vw,3rem);text-align:center;overflow:hidden;
  border:1px solid var(--navy-deep)}
.cta-banner::after{content:"";position:absolute;inset:12px;border:1px solid rgba(196,166,98,.26);pointer-events:none;border-radius:2px}
.cta-stripe{position:absolute;top:0;left:0;right:0;height:5px;background:linear-gradient(90deg,var(--crimson) 0 33%,var(--gold) 33% 66%,var(--navy-deep) 66%)}
.cta-crest{position:relative;z-index:2;margin:0 auto .9rem;display:block}
.cta-title{position:relative;z-index:2;font-size:clamp(1.8rem,4vw,2.7rem);font-weight:500;margin:0;color:var(--paper-ink)}
.cta-title em{font-style:italic;color:var(--gold-soft)}
.cta-sub{position:relative;z-index:2;margin:.9rem auto 0;color:#d8cfbd;font-size:1.05rem;max-width:50ch}
.cta-actions{position:relative;z-index:2;margin-top:1.8rem;display:flex;gap:1rem;justify-content:center;align-items:center;flex-wrap:wrap}
.cta-tel{color:var(--gold-soft);font-family:var(--font-display);font-style:italic;font-size:1.05rem}
.cta-tel:hover{color:var(--paper-ink)}

/* engrave rule (404) */
.engrave-rule{display:flex;align-items:center;justify-content:center;gap:1rem;max-width:420px;margin:0 auto 1.6rem}
.engrave-rule::before,.engrave-rule::after{content:"";height:1px;flex:1;background:var(--line)}
.engrave-rule span{color:var(--crimson);font-size:.8rem}
.err-links a{color:var(--crimson)}

/* ============================================================
   FOOTER
   ============================================================ */
.site-footer{background:linear-gradient(180deg,#0e1830,#0a1120);color:#cdc4b2;font-size:.92rem}
.footer-grid{display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr 1fr;gap:2rem;padding-block:3.4rem 2.4rem}
.footer-brand .brand-crest{margin-bottom:1rem}
.footer-name{font-family:var(--font-display);font-size:1.5rem;font-weight:600;line-height:1.05;color:var(--paper-ink);margin:0 0 .8rem}
.footer-blurb{color:#a9a08e;line-height:1.6;margin:0 0 1.2rem;max-width:36ch;font-size:.9rem}
.footer-contact{font-style:normal;line-height:1.85;color:#a9a08e;font-size:.9rem}
.footer-contact a{color:var(--gold-soft)}
.footer-contact a:hover{color:var(--paper-ink)}
.footer-head{font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--gold-soft);font-weight:600;margin:0 0 1rem}
.footer-col ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.55rem}
.footer-col a{color:#bdb4a2;font-size:.9rem}
.footer-col a:hover{color:var(--paper-ink)}
.family-row{border-top:1px solid rgba(196,166,98,.18);padding-block:1.6rem}
.family-row ul{list-style:none;margin:.6rem 0 0;padding:0;display:flex;flex-wrap:wrap;gap:.5rem 1.4rem}
.family-row a{color:#9a9180;font-size:.85rem}
.family-row a:hover{color:var(--gold-soft)}
.footer-bottom{display:flex;justify-content:space-between;flex-wrap:wrap;gap:.5rem;padding-block:1.4rem;
  border-top:1px solid rgba(196,166,98,.18);color:#857c6b;font-size:.82rem}
.footer-reg{font-style:italic;font-family:var(--font-display)}

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width:1080px){
  .footer-grid{grid-template-columns:1fr 1fr 1fr}
  .footer-brand{grid-column:1 / -1}
}
@media (max-width:920px){
  .hero-inner{grid-template-columns:1fr;gap:2.6rem}
  .hero-media{max-width:440px}
  .charter{grid-template-columns:1fr 1fr}
  .charter-col:nth-child(2){border-right:0}
  .charter-col:nth-child(1),.charter-col:nth-child(2){border-bottom:1px solid var(--line)}
  .split{grid-template-columns:1fr;gap:2rem}
  .quote-grid{grid-template-columns:1fr;gap:2.4rem}
  .plate-grid,.gallery-full{grid-template-columns:1fr 1fr}
  .plate.wide{grid-column:span 2}
  .gallery-full .plate.tall{grid-row:auto}
  .gallery-full .plate.tall img{aspect-ratio:1/1}
}
@media (max-width:760px){
  body{font-size:16px}
  /* mobile nav */
  .nav-toggle{display:inline-flex;align-items:center;gap:.5rem;margin-left:auto;background:none;border:1px solid var(--line);
    border-radius:var(--r);padding:.5rem .8rem;cursor:pointer;color:var(--navy-deep);font-weight:600;font-size:.82rem;
    letter-spacing:.08em;text-transform:uppercase;font-family:var(--font-body)}
  .burger{display:flex;flex-direction:column;gap:3px;width:18px}
  .burger i{height:1.5px;background:var(--navy-deep);transition:transform .25s, opacity .25s}
  .site-nav{position:fixed;inset:0 0 0 auto;width:min(82vw,340px);background:var(--paper);flex-direction:column;align-items:stretch;
    gap:0;padding:5.5rem 1.8rem 2rem;transform:translateX(100%);transition:transform .32s var(--ease);
    box-shadow:-24px 0 60px -30px rgba(0,0,0,.5);z-index:90;border-left:1px solid var(--line)}
  .site-nav.is-open{transform:translateX(0)}
  .nav-list{flex-direction:column;gap:0}
  .nav-list li{border-bottom:1px solid var(--line)}
  .nav-list a{display:block;padding:1rem 0;font-size:1.1rem;font-family:var(--font-display)}
  .nav-list a::after{display:none}
  .nav-cta{margin-top:1.4rem;width:100%}
  .site-nav.is-open ~ .nav-toggle .burger i:nth-child(1){transform:translateY(4.5px) rotate(45deg)}
  .header-inner{min-height:64px}

  .hero::after,.title-band::after,.cta-banner::after,.hero::before{inset:8px}
  .hero-seal{width:108px;height:108px;left:auto;right:-14px;bottom:-30px}
  .ledger-row{flex-wrap:wrap;gap:.2rem .6rem}
  .lr-dots{order:3;flex-basis:100%;display:none}
  .charter{grid-template-columns:1fr}
  .charter-col{border-right:0!important;border-bottom:1px solid var(--line)}
  .charter-col:last-child{border-bottom:0}
  .venue-list{grid-template-columns:1fr}
  .plate-grid,.gallery-full{grid-template-columns:1fr 1fr;gap:.7rem}
  .field-row{grid-template-columns:1fr;gap:0}
  .ledger-card{grid-template-columns:auto 1fr;gap:.9rem 1rem}
  .ledger-card .go{grid-column:2;justify-self:start}
  .lc-no{font-size:1.2rem;width:1.8rem}
  .rl-row{flex-wrap:wrap;gap:.3rem .8rem;padding:.95rem .2rem}
  .rl-row dt{flex-basis:100%}
  .rl-fill{display:none}
  .rl-row dd{margin-left:1.8rem}
  .footer-grid{grid-template-columns:1fr 1fr}
  .article .lead-para{font-size:1.22rem}
  .footer-bottom{flex-direction:column}
}
@media (max-width:420px){
  .plate-grid,.gallery-full{grid-template-columns:1fr}
  .plate.wide{grid-column:auto}
  .footer-grid{grid-template-columns:1fr}
  .hero-actions .btn{width:100%}
}

/* overflow fix 2026-06-28: clip off-canvas fixed nav at root */
html{overflow-x:clip}
