/* Shared plum-and-green presentation for The George. */
  :root {
    /* Background sampled from the supplied brand artwork. */
    --paper-texture: none;
    --paper-surface: #CFC6A8; /* Former cream overlay baked into one stable color. */
    --paper: #B0A474;       /* official muted green */
    --linen: #F1EBDF;
    --linen-deep: #E8DFCE;
    /* Ink taken from the drawing */
    --ink: #3F292C;
    --ink-soft: #432D30;
    --rule: rgba(63, 41, 44, .22);
    --rule-strong: rgba(63, 41, 44, .45);
    --ink-hover: #2E1D20;

    --display: "Cormorant Garamond", "Cormorant", Georgia, "Times New Roman", serif;
    --text: "EB Garamond", Garamond, Georgia, "Times New Roman", serif;
    --wrap: 1200px;
    --gutter: clamp(20px, 5vw, 64px);
  }

  *, *::before, *::after { box-sizing: border-box; }
  /* Keep the viewport, as well as body content, inside the horizontal boundary. */
  html { background:var(--paper-surface); -webkit-text-size-adjust: 100%; overflow-x: hidden; overscroll-behavior-x: none; }
  @media (prefers-reduced-motion: no-preference) { html { scroll-behavior: smooth; } }
  html.modal-open { overflow: hidden; }
  body {
    position: relative; isolation: isolate;
    margin: 0;
    font-family: var(--text);
    font-size: 19px;
    line-height: 1.6;
    color: var(--ink);
    background-color: var(--paper-surface);
    background-image: var(--paper-texture);
    background-repeat: repeat;
    background-size: 640px 640px;
    overflow-x: clip;
    -webkit-font-smoothing: antialiased;
  }
  body.occasion-page, body.vendor-site { background-color:var(--linen); }
  img { max-width: 100%; display: block; }
  h1, h2, h3, p, ul, ol, figure { margin: 0; }
  ul, ol { padding: 0; list-style: none; }
  a { color: inherit; }
  button { font: inherit; color: inherit; cursor: pointer; }

  :focus-visible { outline: 2px solid var(--ink); outline-offset: 3px; }

  .sr-only {
    position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
    overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
  }
  .skip {
    position: absolute; left: 12px; top: -60px; z-index: 50;
    background: var(--ink); color: var(--linen); padding: 10px 16px; text-decoration: none;
  }
  .skip:focus { top: 12px; }

  .wrap { width: 100%; max-width: var(--wrap); margin: 0 auto; padding: 0 var(--gutter); }

  .eyebrow {
    font-size: 14px; font-weight: 500;
    letter-spacing: .22em; text-transform: uppercase;
    color: var(--ink);
  }
  /* Eyebrow followed by a hairline that runs to the edge of the column */
  .label { display: flex; align-items: center; gap: 18px; }
  .label::after { content: ""; flex: 1; height: 1px; background: var(--rule); }

  /* Buttons */
  .btn {
    display: inline-flex; align-items: center; justify-content: center; gap: .6em;
    min-height: 52px; padding: 12px 30px;
    border: 1px solid var(--ink); border-radius: 999px;
    font-family: var(--text); font-size: 15px; font-weight: 500;
    letter-spacing: .18em; text-transform: uppercase; text-decoration: none;
    transition: background-color .2s ease, color .2s ease, border-color .2s ease, box-shadow .2s ease;
  }
  .btn-ink, .btn-line { background: var(--linen); border-color: var(--rule-strong); color: var(--ink); }
  .btn[data-open-inquiry] {
    background:transparent; border-color:var(--ink);
    box-shadow:inset 0 0 0 0 var(--button-fill,var(--ink)), inset 0 0 0 0 var(--button-text,var(--linen));
  }
  /* Hover states only where a pointer can hover, so a tap never leaves a button looking pressed. */
  @media (hover: hover) {
    .btn-ink:hover, .btn-line:hover { background:var(--button-fill,var(--ink)); color:var(--button-text,var(--linen)); border-color:var(--linen); box-shadow:inset 0 0 0 4px var(--button-fill,var(--ink)), inset 0 0 0 5px var(--button-text,var(--linen)); }
  }
  .btn:focus-visible, .btn:active { background:var(--button-fill,var(--ink)); color:var(--button-text,var(--linen)); border-color:var(--linen); box-shadow:inset 0 0 0 4px var(--button-fill,var(--ink)), inset 0 0 0 5px var(--button-text,var(--linen)); }
  .btn-sm { min-height: 44px; padding: 8px 20px; font-size: 13px; }
  .btn .short { display: none; }

  .text-link {
    font-size: 15px; font-weight: 500; letter-spacing: .18em; text-transform: uppercase;
    text-decoration: none; padding: 6px 2px;
    color:var(--ink-soft);
    transition:color .2s ease;
  }

  /* Hero: the drawing leads, on a ground matched to its own paper */
  .hero {
    background: transparent;
    padding: clamp(8px, 2vw, 24px) 0 clamp(72px, 9vw, 120px);
    text-align: center;
  }
  .mark, .occasion-brand, .vendor-home {
    container-type: inline-size;
    width: min(80%, clamp(240px, calc((100svh - 250px) * 1.128), 688px));
    margin: 0 auto;
  }
  .mark { font-weight:400; }
  /* The official transparent lockup includes its Event Hall descriptor. */
  .logo-window { display:block; aspect-ratio:889 / 779; }
  .logo-window img { width:100%; height:auto; }

  .hero-meta {
    margin-top: clamp(26px, 3.4vw, 40px);
    display: flex; flex-direction: column; align-items: center; gap: 16px;
  }
  .hero-meta .rule { width: 56px; height: 1px; background: var(--rule-strong); }
  .place { font-size: 14px; letter-spacing: .22em; text-transform: uppercase; color: var(--ink-soft); }
  .place span { white-space: nowrap; }
  .hero-line {
    max-width:100%; white-space:nowrap;
    font-family: var(--display); font-style: italic; font-size: clamp(17px, 5vw, 27px); line-height: 1.3;
  }
  .hero-cta {
    margin-top: clamp(26px, 3.4vw, 36px);
    display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 18px 30px;
  }

  @media (prefers-reduced-motion: no-preference) {
    .mark { animation: fade 1.1s ease both; }
    .hero-meta, .hero-cta { animation: fade 1s .35s ease both; }
  }
  @keyframes fade { from { opacity: 0; } }

  .section { padding: clamp(72px, 9vw, 128px) 0; }

  /* Homepage color blocks follow the same three-color brand palette. */
  .home-page .hall {
    --ink: var(--linen);
    --ink-soft: rgba(241, 235, 223, .82);
    --rule: rgba(241, 235, 223, .22);
    --rule-strong: rgba(241, 235, 223, .45);
    background: #3F292C;
    color: var(--ink);
  }
  .home-page .about, .home-page .faq { background: var(--linen); }
  .home-page .about { border-top: 0; }

  .home-page .hall, .home-page .about, .home-page .faq, .footer { position:relative; isolation:isolate; }
  /* Defined, softly fading depth only where the homepage changes color. */
  .home-page .hall, .home-page .about, .home-page .footer { box-shadow:inset 0 18px 28px -18px rgba(28,16,20,.38), inset 0 1px 0 rgba(28,16,20,.12); }

  /* The Hall */
  .hall-grid {
    margin-top: clamp(36px, 5vw, 64px);
    display: block;
  }
  .hall-text { max-width:760px; margin:0 auto; text-align:center; }
  .section h2 {
    font-family: var(--display); font-weight: 500;
    font-size: clamp(38px, 4.6vw, 58px); line-height: 1.04; letter-spacing: -.005em;
  }
  .section h2 em { font-weight: 400; }
  .hall-text h2 em { display: block; }
  .hall-text .lede { margin-top: 22px; font-size: 20px; }
  .hall-facts {
    display:grid; grid-template-columns:repeat(3,minmax(0,1fr));
    margin:44px 0 0; padding:24px 0 28px;
    border-top:1px solid var(--rule); border-bottom:1px solid var(--rule);
    text-align:center;
  }
  .hall-facts > div { display:flex; flex-direction:column-reverse; gap:6px; padding:0 16px; }
  .hall-facts > div + div { border-left:1px solid var(--rule); }
  .hall-facts dt { font-size:17px; line-height:1.3; }
  .hall-facts dd { margin:0; font-family:var(--display); font-size:clamp(38px,4vw,54px); line-height:1; }
  .hall-details { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:32px 64px; margin-top:40px; }
  .hall-detail h3 { font-family:var(--display); font-size:30px; line-height:1.15; font-weight:500; }
  .hall-detail p { margin-top:12px; color:var(--ink-soft); max-width:47ch; }
  .hall-action { margin-top:26px; text-align:center; }
  @media(max-width:600px) {
    .hall-facts { margin-top:32px; }
    .hall-facts > div { padding:0 8px; }
    .hall-facts dt { font-size:15px; }
    .hall-facts dd { font-size:36px; }
    .hall-details { grid-template-columns:1fr; gap:28px; margin-top:32px; }
  }

  /* Footer */
  .footer { background: transparent; padding: 0 0 36px; text-align: center; }
  .footer-inner { border-top: 1px solid var(--rule-strong); padding-top: clamp(56px, 7vw, 88px); }
  .foot-name {
    font-family: var(--display); font-weight: 500;
    font-size: 22px; letter-spacing: .3em; margin-right: -.3em; text-transform: uppercase;
  }
  .foot-tag { margin-top: 4px; font-style: italic; font-size: 19px; letter-spacing: .1em; }
  .footer address { margin-top: 24px; font-style: normal; font-size: 18px; line-height: 1.7; }
  .footer address a { text-underline-offset: 4px; }
  .fineprint {
    margin-top: 44px; padding-top: 20px; border-top: 1px solid var(--rule);
    display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px 24px;
    font-size: 14px; color: var(--ink-soft);
  }

  .inquiry-cta { padding-top:clamp(72px,9vw,128px); text-align:center; }
  .inquiry-cta .btn { --button-fill:var(--linen); --button-text:#3F292C; }
  .inquiry-cta .btn:focus-visible { outline-color:var(--linen); }
  .inquiry-cta h2 { margin:0 auto; max-width:650px; }
  .inquiry-cta .btn { margin-top:32px; }
  /* Native disclosure controls keep the FAQ usable with touch and keyboard. */
  .faq { border-top:1px solid var(--rule); }
  .faq-layout { margin-top:clamp(36px,5vw,64px); display:grid; grid-template-columns:1fr 1.65fr; gap:clamp(32px,6vw,88px); align-items:start; }
  .faq-heading h2 { margin-top:0; }
  .faq-heading h2 em { display:block; }
  .faq-list { border-top:1px solid var(--rule); }
  .faq-item { border-bottom:1px solid var(--rule); }
  .faq-item summary { display:flex; align-items:center; justify-content:space-between; gap:24px; padding:22px 0; list-style:none; cursor:pointer; font-size:23px; line-height:1.3; }
  .faq-item summary::-webkit-details-marker { display:none; }
  .faq-icon { position:relative; flex:0 0 16px; width:16px; height:16px; }
  .faq-icon::before,.faq-icon::after { content:""; position:absolute; background:var(--ink); }
  .faq-icon::before { left:0; top:7px; width:16px; height:1px; }
  .faq-icon::after { top:0; left:7px; width:1px; height:16px; }
  .faq-item[open] .faq-icon::after { display:none; }
  .faq-answer { padding:0 32px 24px 0; color:var(--ink-soft); font-size:18px; line-height:1.65; }
  .faq-inquire { display:inline; padding:0; border:0; background:none; color:var(--ink); text-decoration:underline; text-underline-offset:3px; }
  @media(hover:hover) { .faq-item summary:hover { color:var(--ink-hover); } }
  @media(max-width:760px) {
    .faq-layout { grid-template-columns:1fr; }
    .faq-heading h2 em { display:inline; }
    .faq-item summary { font-size:22px; gap:20px; }
    .faq-answer { padding-right:0; }
  }


  /* Full site footer: contact, navigation, event pages and social links. */
  .footer {
    text-align:left; background-color:var(--ink); color:var(--linen);
    background-image:none;
  }
  .footer .footer-inner { border-top:0; }
  .footer .footer-col a,.footer .footer-col button { color:var(--linen); }
  .footer .fineprint { color:rgba(241,235,223,.75); border-top-color:rgba(241,235,223,.22); }
  .footer .foot-tag { color:rgba(241,235,223,.8); }
  .footer :focus-visible { outline-color:var(--linen); }
  .footer-grid { display:grid; grid-template-columns:1.6fr .8fr 1fr 1.2fr; gap:32px; }
  .footer-grid > * { min-width:0; }
  .foot-name { text-decoration:none; display:inline-block; font-size:25px; }
  .footer address { font-size:17px; }
  .footer address a { overflow-wrap:anywhere; }
  .footer-map { display:inline-block; margin-top:14px; font-size:17px; text-underline-offset:4px; }
  .footer-col h2 { margin:0 0 20px; font:500 13px/1.5 var(--text); letter-spacing:.18em; text-transform:uppercase; }
  .footer-col a,.footer-col button { display:inline-block; padding:8px 0; min-height:44px; font:400 17px/1.6 var(--text); color:var(--ink); text-align:left; border:0; background:none; text-decoration:none; overflow-wrap:anywhere; }

  @media(max-width:1000px) {
    .footer-grid { grid-template-columns:1fr; gap:24px; }
    .footer-brand,.footer-col:last-child { grid-column:1 / -1; }
    .footer-col h2 { margin-bottom:12px; }
    .footer .fineprint { justify-content:flex-start; text-align:left; }
  }
  @media(min-width:561px) and (max-width:1000px) {
    .footer-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
    .footer-grid .footer-col { grid-column:auto; }
  }


  .footer .fineprint { align-items:flex-end; }
  .footer-pheasant { display:block; flex:0 0 100px; width:100px; margin-left:auto; opacity:.5; }
  .footer-pheasant img { width:100%; height:auto; }
  @media(max-width:560px) { .footer .fineprint p { flex-basis:100%; } }

  .about { border-top:1px solid var(--rule); }
  .about-grid { margin-top:clamp(36px,5vw,64px); display:grid; grid-template-columns:1.2fr 1fr; align-items:center; gap:clamp(40px,7vw,100px); }
  .about-copy h2 { margin:0 0 30px; }
  .about-copy > p:not(.eyebrow) { max-width:48ch; margin-top:18px; }
  .about-portfolio { display:inline-block; margin-top:26px; text-underline-offset:5px; }
  .about-portrait { max-width:400px; justify-self:end; }
  .about-portrait img { width:100%; height:auto; }
  .about-portrait figcaption { margin-top:14px; font-size:17px; font-style:italic; color:var(--ink-soft); }
  @media(max-width:760px) {
    .about-grid { grid-template-columns:1fr; }
    .about-portrait { width:100%; max-width:400px; justify-self:center; }
  }



/* Shared header. Links remain in the document when scripting is unavailable. */
.masthead { position:relative; z-index:20; }
.masthead-inner { display:flex; align-items:center; justify-content:space-between; gap:20px; padding-block:20px; }
.nav-list { display:flex; align-items:center; gap:clamp(18px,2.4vw,34px); }
.nav-list > li > a,.occasion-toggle { display:flex; align-items:center; gap:10px; padding:8px 0; min-height:44px; border:0; background:none; font:400 14px/1.6 var(--text); letter-spacing:.2em; text-transform:uppercase; text-decoration:none; white-space:nowrap; }
.nav-list > li > a,.occasion-toggle .menu-label { background:linear-gradient(var(--ink),var(--ink)) 50% 100% / 0 1px no-repeat; }
.occasion-nav { position:relative; }
.nav-chevron { width:6px; height:6px; border-right:1px solid currentColor; border-bottom:1px solid currentColor; transform:translateY(-2px) rotate(45deg); flex-shrink:0; }
[aria-expanded=true] > .nav-chevron { transform:translateY(2px) rotate(225deg); }
.occasion-links { position:absolute; top:100%; left:-22px; min-width:244px; padding:12px 22px; border:1px solid var(--rule); border-radius:28px; background:var(--linen); box-shadow:0 4px 20px rgba(63,41,44,.08); }
.occasion-links[hidden] { display:none; }
.nav-list .occasion-links a { display:block; min-height:44px; padding:10px 0; font-size:18px; color:var(--ink-soft); text-decoration:none; white-space:nowrap; }
.nav-toggle { display:none; align-items:center; justify-content:center; width:44px; height:44px; padding:9px; border:0; background:none; }
.menu-lines { position:relative; display:block; width:26px; height:16px; }
.menu-lines::before,.menu-lines::after { content:''; position:absolute; left:0; height:1.5px; background:currentColor; border-radius:2px; }
.menu-lines::before { width:26px; top:3px; }
.menu-lines::after { width:18px; top:12px; }
.nav-toggle[aria-expanded=true] .menu-lines::before { top:7px; transform:rotate(45deg); }
.nav-toggle[aria-expanded=true] .menu-lines::after { width:26px; top:7px; transform:rotate(-45deg); }
.footer a,.footer button,.footer .footer-col a,.footer .footer-col button { color:rgba(241,235,223,.65); text-decoration:none; }
.footer a:focus-visible,.footer button:focus-visible { color:var(--linen); }
.text-link,.about-portfolio,.faq-inquire { color:var(--ink-soft); text-decoration:none; }
.nav-list .occasion-links a:focus-visible,.text-link:focus-visible,.about-portfolio:focus-visible,.faq-inquire:focus-visible { color:var(--ink); }
@media(hover:hover) {
 .nav-list > li > a:hover,.occasion-toggle:hover .menu-label { background-size:100% 1px; }
 .nav-list .occasion-links a:hover,.text-link:hover,.about-portfolio:hover,.faq-inquire:hover { color:var(--ink); }
 .footer a:hover,.footer button:hover { color:var(--linen); }
}
@media(prefers-reduced-motion:no-preference) {
 .nav-list > li > a,.occasion-toggle .menu-label { transition:background-size .3s ease; }
 .nav-list .occasion-links a,.footer a,.footer button,.text-link,.about-portfolio,.faq-inquire { transition:color .2s ease; }
}
@media(max-width:1100px) {
 .js .nav-toggle { display:flex; }
 .js .nav-list { display:none; position:absolute; left:var(--gutter); right:var(--gutter); top:calc(100% - 8px); flex-direction:column; align-items:stretch; gap:0; max-height:calc(100dvh - 100px); overflow:auto; padding:8px 20px; border-radius:28px; background:var(--linen); border:1px solid var(--rule); box-shadow:0 4px 20px rgba(63,41,44,.08); }
 .js .nav-list.is-open { display:flex; }
 .nav-list > li > a,.occasion-toggle { padding:14px 0; width:100%; justify-content:space-between; }
 .occasion-links { position:static; min-width:0; margin:8px 0 16px; padding:12px 22px; }
 html:not(.js) .masthead-inner { flex-wrap:wrap; }
 html:not(.js) .nav-list { flex-wrap:wrap; }
}
@media(max-width:560px) {
 body { font-size:18px; }
 .masthead-inner { padding-block:14px; }
 .masthead .btn-sm { padding:8px 16px; letter-spacing:.14em; }
 .place { letter-spacing:.16em; }
 .hero-cta .btn { width:100%; }
 .hero-line { white-space:normal; text-wrap:balance; }
}
@media(prefers-reduced-motion:reduce) { *,*::before,*::after { animation:none!important; transition:none!important; scroll-behavior:auto!important; } }
/* Legacy section links still reach the corresponding content. */
.anchor-alias { display:block; height:0; }

@media(max-width:400px) { .hall-facts dt { min-height:2.6em; } }

/* Section content slides into place; the hero retains its load fade. */
@media(prefers-reduced-motion:no-preference) {
  .scroll-reveal { transform:translateX(-32px); transition:transform .7s ease; }
  .scroll-reveal.is-visible { transform:none; }
}
@media print { .scroll-reveal { opacity:1!important; transform:none!important; } }
