
  :root{
    --paper: #EBE8E0;
    --paper-alt: #E2DED4;
    --ink: #29210F;
    --ink-soft: #685E45;
    --hedge: #4E6024;
    --hedge-dark: #364319;
    --brick: #A64830;
    --flint: #938C85;
    --mustard: #C9AA45;
    --cream: #F6F4EE;
    --line: rgba(41,33,15,0.14);
    --radius: 3px;
    --display: 'Fraunces', serif;
    --body: 'Public Sans', -apple-system, sans-serif;
    --mono: 'IBM Plex Mono', monospace;
  }

  *{ box-sizing:border-box; }
  html{ scroll-behavior:smooth; }
  @media (prefers-reduced-motion: reduce){
    html{ scroll-behavior:auto; }
    *{ animation-duration:0.001ms !important; animation-iteration-count:1 !important; transition-duration:0.001ms !important; }
  }

  body{
    margin:0;
    background:var(--paper);
    color:var(--ink);
    font-family:var(--body);
    font-size:16px;
    line-height:1.6;
    -webkit-font-smoothing:antialiased;
  }

  a{ color:inherit; }
  img,svg{ display:block; max-width:100%; }

  ::selection{ background:var(--mustard); color:var(--ink); }

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

  .wrap{
    max-width:1100px;
    margin:0 auto;
    padding:0 28px;
  }

  .eyebrow{
    font-family:var(--mono);
    font-size:12px;
    letter-spacing:0.14em;
    text-transform:uppercase;
    color:var(--ink-soft);
  }

  h1,h2,h3{
    font-family:var(--display);
    font-weight:600;
    margin:0;
    color:var(--ink);
  }

  p{ margin:0 0 1em 0; color:var(--ink-soft); }

  /* ============ NAV ============ */
  header.site-nav{
    position:sticky;
    top:0;
    z-index:50;
    background:var(--hedge);
    border-bottom:3px solid var(--hedge-dark);
  }
  .nav-inner{
    display:flex;
    align-items:center;
    justify-content:space-between;
    padding:14px 28px;
    max-width:1100px;
    margin:0 auto;
  }
  .nav-brand{
    font-family:var(--display);
    font-weight:600;
    color:var(--cream);
    font-size:19px;
    letter-spacing:0.02em;
    text-decoration:none;
    display:flex;
    align-items:baseline;
    gap:8px;
  }
  .nav-brand .dot{ color:var(--mustard); font-family:var(--mono); font-size:14px; }
  nav.nav-links{
    display:flex;
    gap:26px;
    list-style:none;
    margin:0; padding:0;
  }
  nav.nav-links a{
    color:var(--cream);
    text-decoration:none;
    font-size:14px;
    font-weight:500;
    letter-spacing:0.01em;
    padding:6px 2px;
    border-bottom:2px solid transparent;
    transition:border-color .15s ease, opacity .15s ease;
  }
  nav.nav-links a:hover{ border-bottom-color:var(--mustard); }
  nav.nav-links a.current{ border-bottom-color:var(--mustard); opacity:0.85; }

  .nav-toggle{
    display:none;
    background:none;
    border:1px solid var(--cream);
    color:var(--cream);
    padding:8px 12px;
    font-family:var(--mono);
    font-size:12px;
    border-radius:var(--radius);
    cursor:pointer;
  }

  @media (max-width:760px){
    nav.nav-links{
      position:absolute;
      top:100%; left:0; right:0;
      background:var(--hedge);
      flex-direction:column;
      gap:0;
      max-height:0;
      overflow:hidden;
      transition:max-height .25s ease;
      border-bottom:3px solid var(--hedge-dark);
    }
    nav.nav-links.open{ max-height:400px; }
    nav.nav-links a{
      padding:14px 28px;
      border-bottom:1px solid rgba(255,255,255,0.12);
      width:100%;
    }
    .nav-toggle{ display:block; }
  }

  /* ============ HERO — VILLAGE SIGN ============ */
  .hero{
    padding:80px 28px 60px;
    text-align:center;
    background:
      radial-gradient(ellipse at 50% 0%, rgba(63,82,51,0.06), transparent 60%),
      var(--paper);
  }

  .signpost{
    display:inline-block;
    position:relative;
    margin-bottom:8px;
  }

  .village-sign{
    background:var(--hedge);
    border:5px solid var(--cream);
    box-shadow: 0 2px 0 var(--hedge-dark), 0 14px 26px rgba(43,42,37,0.28);
    padding:44px 56px 38px;
    position:relative;
  }
  .village-sign::before{
    content:"";
    position:absolute;
    inset:8px;
    border:1px solid rgba(247,244,236,0.35);
    pointer-events:none;
  }
  .village-sign .place-name{
    font-family:var(--display);
    font-weight:700;
    font-size:clamp(38px, 6vw, 64px);
    color:var(--cream);
    letter-spacing:0.01em;
    line-height:1;
    margin:0;
  }
  .village-sign .place-sub{
    margin-top:14px;
    font-family:var(--mono);
    font-size:13px;
    letter-spacing:0.16em;
    text-transform:uppercase;
    color:var(--mustard);
  }
  .signpost-post{
    width:10px;
    height:34px;
    background:linear-gradient(var(--flint), var(--ink-soft));
    margin:0 auto;
  }
  .signpost-base{
    width:70px;
    height:8px;
    background:var(--ink-soft);
    margin:0 auto;
    border-radius:2px;
    opacity:0.35;
  }

  .hero-tagline{
    max-width:520px;
    margin:30px auto 0;
    font-size:17px;
    color:var(--ink-soft);
  }

  .stat-row{
    display:flex;
    flex-wrap:wrap;
    justify-content:center;
    gap:14px;
    margin-top:40px;
  }
  .stat-plaque{
    background:var(--cream);
    border:1px solid var(--line);
    border-top:3px solid var(--brick);
    padding:14px 22px;
    min-width:130px;
  }
  .stat-plaque .num{
    font-family:var(--display);
    font-weight:600;
    font-size:26px;
    color:var(--ink);
  }
  .stat-plaque .label{
    font-family:var(--mono);
    font-size:11px;
    letter-spacing:0.08em;
    text-transform:uppercase;
    color:var(--ink-soft);
    margin-top:2px;
  }

  /* ============ SECTION SCAFFOLDING ============ */
  section{ padding:76px 0; }
  section + section{ border-top:1px solid var(--line); }
  .section-head{
    display:flex;
    align-items:baseline;
    gap:16px;
    margin-bottom:36px;
    flex-wrap:wrap;
  }
  .section-head h2{ font-size:clamp(26px, 3.4vw, 34px); }
  .section-head .eyebrow{ order:-1; flex-basis:100%; margin-bottom:6px; }
  .rule{
    flex:1;
    height:1px;
    background:var(--line);
    min-width:40px;
  }

  /* ============ ABOUT ============ */
  .about-grid{
    display:grid;
    grid-template-columns:1.1fr 0.9fr;
    gap:56px;
    align-items:center;
  }
  @media (max-width:820px){ .about-grid{ grid-template-columns:1fr; } }
  .about-grid p{ font-size:16px; }
  .hedge-art{
    height:220px;
    position:relative;
    overflow:hidden;
    border:1px solid var(--line);
    background:linear-gradient(180deg, #DCE3D2 0%, var(--cream) 70%);
  }
  .hedge-art svg{ position:absolute; bottom:0; left:0; width:100%; }

  /* ============ NOTICES ============ */
  .notice-grid{
    display:grid;
    grid-template-columns:repeat(auto-fit, minmax(260px,1fr));
    gap:20px;
  }
  .notice-card{
    background:var(--cream);
    border:1px solid var(--line);
    padding:22px 22px 20px;
    position:relative;
  }
  .notice-card::before{
    content:"";
    position:absolute;
    top:-6px; left:24px;
    width:14px; height:14px;
    border-radius:50%;
    background:var(--brick);
    box-shadow:0 1px 2px rgba(0,0,0,0.3);
  }
  .notice-tag{
    display:inline-block;
    font-family:var(--mono);
    font-size:10.5px;
    letter-spacing:0.1em;
    text-transform:uppercase;
    padding:3px 8px;
    background:var(--mustard);
    color:var(--ink);
    margin-bottom:12px;
  }
  .notice-tag.urgent{ background:var(--brick); color:var(--cream); }
  .notice-card h3{ font-size:18px; margin-bottom:8px; }
  .notice-date{
    font-family:var(--mono);
    font-size:11.5px;
    color:var(--ink-soft);
    margin-top:14px;
    display:block;
  }

  /* ============ FUND ============ */
  .fund-wrap{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:48px;
  }
  @media (max-width:820px){ .fund-wrap{ grid-template-columns:1fr; } }
  .fund-box{
    background:var(--cream);
    border:1px solid var(--line);
    padding:28px;
  }
  .fund-box h3{ font-size:16px; margin-bottom:18px; font-family:var(--body); font-weight:600; text-transform:uppercase; letter-spacing:0.04em; font-size:13px; color:var(--ink-soft); }
  .fund-figure{ font-family:var(--display); font-size:40px; font-weight:600; margin-bottom:6px; }
  .bar-track{
    height:14px;
    background:var(--paper-alt);
    border:1px solid var(--line);
    margin:18px 0 10px;
    overflow:hidden;
  }
  .bar-fill{
    height:100%;
    background:var(--hedge);
    width:0%;
    transition:width 1.1s ease;
  }
  .fund-meta{ display:flex; justify-content:space-between; font-family:var(--mono); font-size:12px; color:var(--ink-soft); }
  .fund-list{ list-style:none; margin:0; padding:0; }
  .fund-list li{
    display:flex; justify-content:space-between;
    padding:10px 0; border-bottom:1px solid var(--line);
    font-size:14.5px;
  }
  .fund-list li:last-child{ border-bottom:none; }
  .fund-list .amt{ font-family:var(--mono); color:var(--ink); }

  /* ============ RULES ============ */
  .rules-grid{
    display:grid;
    grid-template-columns:repeat(auto-fit, minmax(220px,1fr));
    gap:2px;
    background:var(--line);
    border:1px solid var(--line);
  }
  .rule-card{
    background:var(--paper);
    padding:26px 22px;
  }
  .rule-card .glyph{
    width:34px; height:34px;
    margin-bottom:14px;
  }
  .rule-card h3{ font-size:16px; margin-bottom:8px; font-family:var(--body); font-weight:700; }
  .rule-card p{ font-size:14px; margin:0; }

  /* ============ DOCUMENTS ============ */
  .doc-list{ list-style:none; margin:0; padding:0; border-top:1px solid var(--line); }
  .doc-list li{
    display:flex;
    align-items:center;
    justify-content:space-between;
    padding:18px 4px;
    border-bottom:1px solid var(--line);
  }
  .doc-name{ display:flex; align-items:center; gap:14px; }
  .doc-icon{
    font-family:var(--mono);
    font-size:11px;
    background:var(--hedge);
    color:var(--cream);
    padding:4px 7px;
    letter-spacing:0.05em;
  }
  .doc-list a.dl{
    font-family:var(--mono);
    font-size:12px;
    text-decoration:none;
    color:var(--brick);
    border-bottom:1px solid var(--brick);
    padding-bottom:1px;
  }

  /* ============ COMMITTEE ============ */
  .committee-grid{
    display:grid;
    grid-template-columns:repeat(auto-fit, minmax(230px,1fr));
    gap:26px;
  }
  .person-card{ border-top:3px solid var(--hedge); padding-top:16px; }
  .person-card .role{
    font-family:var(--mono);
    font-size:11px;
    letter-spacing:0.08em;
    text-transform:uppercase;
    color:var(--brick);
    margin-bottom:6px;
  }
  .person-card h3{ font-size:19px; margin-bottom:4px; }
  .person-card .contact{ font-size:13.5px; color:var(--ink-soft); }

  .contact-cta{
    margin-top:56px;
    background:var(--hedge);
    color:var(--cream);
    padding:40px;
    display:flex;
    justify-content:space-between;
    align-items:center;
    flex-wrap:wrap;
    gap:20px;
  }
  .contact-cta h3{ color:var(--cream); font-size:22px; }
  .contact-cta p{ color:rgba(247,244,236,0.8); margin:6px 0 0; }
  .btn{
    display:inline-block;
    background:var(--mustard);
    color:var(--ink);
    text-decoration:none;
    font-weight:600;
    font-size:14px;
    padding:13px 26px;
    border:none;
    cursor:pointer;
    font-family:var(--body);
    transition:transform .15s ease;
  }
  .btn:hover{ transform:translateY(-2px); }

  /* ============ FOOTER ============ */
  footer{
    background:var(--ink);
    color:rgba(247,244,236,0.65);
    padding:44px 0 30px;
    font-size:13px;
  }
  footer .wrap{
    display:flex;
    justify-content:space-between;
    flex-wrap:wrap;
    gap:20px;
  }
  footer .fbrand{ font-family:var(--display); color:var(--cream); font-size:18px; margin-bottom:8px; }
  footer a{ color:rgba(247,244,236,0.65); text-decoration:none; }
  footer .legal{ margin-top:18px; font-family:var(--mono); font-size:11px; color:rgba(247,244,236,0.4); }

  .placeholder-note{
    font-family:var(--mono);
    font-size:11.5px;
    color:var(--brick);
    background:rgba(166,67,44,0.08);
    border:1px dashed rgba(166,67,44,0.4);
    padding:10px 14px;
    margin-bottom:30px;
    max-width:1100px;
  }

  /* ============ CONSTITUTION / DETAILS ============ */
  .const-highlights{
    list-style:none;
    margin:0 0 28px;
    padding:0;
    display:grid;
    grid-template-columns:repeat(auto-fit, minmax(220px,1fr));
    gap:2px;
    background:var(--line);
    border:1px solid var(--line);
  }
  .const-highlights li{
    background:var(--paper);
    padding:18px 20px;
    font-size:14px;
    color:var(--ink-soft);
  }
  .const-highlights li b{ color:var(--ink); display:block; font-family:var(--display); font-size:15px; margin-bottom:4px; }

  details.const-full{
    border:1px solid var(--line);
    background:var(--cream);
    padding:0;
  }
  details.const-full summary{
    cursor:pointer;
    padding:16px 20px;
    font-family:var(--mono);
    font-size:12px;
    letter-spacing:0.08em;
    text-transform:uppercase;
    color:var(--brick);
    list-style:none;
  }
  details.const-full summary::-webkit-details-marker{ display:none; }
  details.const-full summary::before{ content:"+ "; }
  details.const-full[open] summary::before{ content:"− "; }
  .const-text{
    padding:0 24px 28px;
    font-size:14px;
    color:var(--ink-soft);
    max-height:520px;
    overflow-y:auto;
    border-top:1px solid var(--line);
  }
  .const-text p{ margin:0 0 1em; }

  /* ============ NW / TWO COL INFO ============ */
  .info-two-col{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:48px;
  }
  @media (max-width:820px){ .info-two-col{ grid-template-columns:1fr; } }
  .tip-list{ list-style:none; margin:0; padding:0; }
  .tip-list li{
    padding:12px 0;
    border-bottom:1px solid var(--line);
    font-size:14.5px;
    color:var(--ink-soft);
  }
  .tip-list li:last-child{ border-bottom:none; }
  .link-list{ list-style:none; margin:0; padding:0; }
  .link-list li{ padding:8px 0; font-size:13.5px; }
  .link-list a{ color:var(--brick); text-decoration:none; border-bottom:1px solid rgba(166,67,44,0.35); }

  .empty-state{
    border:1px dashed var(--flint);
    padding:34px 28px;
    text-align:center;
    color:var(--ink-soft);
    font-size:14.5px;
  }
  .empty-state .eyebrow{ display:block; margin-bottom:8px; }

  .doc-note{
    font-family:var(--mono);
    font-size:11.5px;
    color:var(--ink-soft);
  }

  .hero-photo-wrap{
    margin:36px auto 0;
    max-width:900px;
  }
  /* ============ PHOTO SLIDER ============ */
  .photo-slider{
    position:relative;
    max-width:900px;
    margin:0 auto;
    aspect-ratio:671/280;
    overflow:hidden;
    border:1px solid var(--line);
    box-shadow:0 10px 24px rgba(43,42,37,0.18);
  }
  .photo-slider img{
    position:absolute;
    inset:0;
    width:100%;
    height:100%;
    object-fit:cover;
    opacity:0;
    animation:slideFade 20s infinite;
  }
  .photo-slider img:nth-child(1){ animation-delay:0s; }
  .photo-slider img:nth-child(2){ animation-delay:4s; }
  .photo-slider img:nth-child(3){ animation-delay:8s; }
  .photo-slider img:nth-child(4){ animation-delay:12s; }
  .photo-slider img:nth-child(5){ animation-delay:16s; }
  @keyframes slideFade{
    0%{ opacity:0; }
    3%{ opacity:1; }
    20%{ opacity:1; }
    23%{ opacity:0; }
    100%{ opacity:0; }
  }
  .photo-slider-caption{
    position:absolute;
    left:0; bottom:0; right:0;
    padding:10px 16px;
    background:linear-gradient(0deg, rgba(43,42,37,0.55), transparent);
    color:var(--cream);
    font-family:var(--mono);
    font-size:11px;
    letter-spacing:0.06em;
    text-transform:uppercase;
    pointer-events:none;
  }
  @media (prefers-reduced-motion: reduce){
    .photo-slider img{ animation:none; opacity:0; }
    .photo-slider img:first-child{ opacity:1; }
  }

  /* ============ HOUSE FINDER ============ */
  .finder{
    border:1px solid var(--line);
    background:var(--cream);
  }
  .finder-search{
    padding:20px 22px;
    border-bottom:1px solid var(--line);
    display:flex;
    gap:12px;
    align-items:center;
  }
  .finder-search input{
    flex:1;
    font-family:var(--body);
    font-size:16px;
    padding:11px 14px;
    border:1px solid var(--flint);
    background:var(--paper);
    color:var(--ink);
    border-radius:2px;
  }
  .finder-search input:focus{ outline:2px solid var(--brick); outline-offset:1px; }
  .finder-count{
    font-family:var(--mono);
    font-size:12px;
    color:var(--ink-soft);
    white-space:nowrap;
  }
  .finder-body{
    display:grid;
    grid-template-columns:230px 1fr;
  }
  @media (max-width:760px){
    .finder-body{ grid-template-columns:1fr; }
    .finder-list{ max-height:220px; border-right:none !important; border-bottom:1px solid var(--line); }
  }
  .finder-list{
    max-height:560px;
    overflow-y:auto;
    border-right:1px solid var(--line);
  }
  .finder-list button{
    display:block;
    width:100%;
    text-align:left;
    background:none;
    border:0;
    border-bottom:1px solid var(--line);
    padding:9px 16px;
    font-family:var(--body);
    font-size:13.5px;
    color:var(--ink-soft);
    cursor:pointer;
  }
  .finder-list button:hover{ background:var(--paper-alt); color:var(--ink); }
  .finder-list button.active{ background:var(--hedge); color:var(--cream); font-weight:600; }
  .finder-list button.hidden{ display:none; }
  .finder-list .no-results{
    padding:16px;
    font-family:var(--mono);
    font-size:12px;
    color:var(--ink-soft);
  }
  .finder-map-wrap{
    position:relative;
    overflow:auto;
    max-height:560px;
    background:var(--paper-alt);
  }
  .finder-map-inner{
    position:relative;
    width:1300px;
    max-width:none;
    aspect-ratio:995/881;
  }
  .finder-map-photo{
    position:absolute;
    top:0; left:0;
    width:100%;
    height:100%;
    display:block;
  }
  .finder-map-wash{
    position:absolute;
    top:0; left:0;
    width:100%;
    height:100%;
    background:var(--paper-alt);
    opacity:0.82;
  }
  .finder-map-inner svg{
    position:absolute;
    top:0; left:0;
    width:100%;
    height:100%;
    display:block;
  }
  .finder-hint{
    font-family:var(--mono);
    font-size:11px;
    color:var(--ink-soft);
    padding:8px 16px;
    border-top:1px solid var(--line);
    background:var(--paper-alt);
  }
  @media (max-width:760px){
    .finder-map-inner{ width:100%; }
    .finder-map-wrap{ max-height:420px; }
  }
  .house-group{ cursor:pointer; }
  .house-group .house-leader{ opacity:0.5; }
  .house-group .house-marker{ transition:fill .15s ease, stroke .15s ease; }
  .house-group .house-label{ transition:opacity .15s ease, font-weight .15s ease; }
  .house-group:hover .house-marker{ fill:var(--mustard); }
  .house-group.match .house-label{ font-weight:700; fill:var(--ink); }
  .house-group.match .house-marker{ fill:var(--mustard); stroke:var(--brick); }
  .house-group.dim{ opacity:0.15; }
  .house-group.active .house-marker{
    fill:var(--brick);
    stroke:var(--ink);
    animation:pinPulse 1.2s ease infinite;
  }
  .house-group.active .house-label{ font-weight:700; fill:var(--brick); }
  @keyframes pinPulse{
    0%{ opacity:1; }
    50%{ opacity:0.55; }
    100%{ opacity:1; }
  }
  .finder-foot{
    padding:12px 22px;
    font-family:var(--mono);
    font-size:11px;
    color:var(--ink-soft);
    border-top:1px solid var(--line);
  }
