/* Village Hall (/village-hall), rebuilt 2026-09-29.
   The page is the hall on a session morning. Bunting is strung across the opening and the
   "registration opening soon" notice is rubber-stamped beside the one button; this month's and
   next month's guests are posters pinned to a cork notice board; the ninety-minute programme
   is a ribbon drawn to scale (a red dot marks the part that is recorded); and the one action,
   the notify list, is an airmail envelope whose flap opens as you arrive. Everything is scoped
   to body.p-hall. Motion: js/pages/village-hall.js adds .vh-motion and .is-in; nothing is
   hidden without it, and prefers-reduced-motion stills it all. */

.p-hall main { overflow-x: clip; }
.p-hall main :is(h1, h2, h3) { color: var(--navy); }
.p-hall main a:not(.btn) { text-decoration: none; }
.p-hall main .btn { font-size: 17px; min-height: 52px; padding: 15px 26px; gap: 10px; white-space: normal; text-align: center; line-height: 1.2; }

/* ---------- opening: bunting and a stamped notice ---------- */
.p-hall main > .vh-hero { padding-top: clamp(64px, 7vw, 96px); }
.p-hall .vh-bunting { position: absolute; top: 0; left: 0; width: 100%; height: clamp(54px, 7vw, 92px); z-index: 1; overflow: visible; pointer-events: none; filter: drop-shadow(0 4px 3px rgba(60, 40, 10, .16)); }
.p-hall .vh-flag { transform-box: fill-box; transform-origin: 50% 0; }
@media (prefers-reduced-motion: no-preference) {
  .p-hall .vh-flag { animation: vh-flutter 5s ease-in-out infinite; animation-delay: calc(var(--i) * -.37s); }
}
@keyframes vh-flutter { 50% { transform: rotate(6deg) skewX(-3deg); } }

.p-hall .vh-hero h1 { font-size: clamp(46px, 6.4vw, 76px); line-height: .98; letter-spacing: -.035em; margin: 4px 0 0; }
.p-hall .vh-hero .lede { font-family: var(--f-display); font-weight: 500; font-size: clamp(22px, 2.2vw, 28px); line-height: 1.25; color: var(--navy); margin: 14px 0 0; max-width: 22em; }
.p-hall .vh-hero-about { font-size: clamp(17px, 1.35vw, 18.5px); line-height: 1.62; color: var(--text); margin: 14px 0 0; max-width: 36em; }
.p-hall .vh-hero .hero-facts { display: flex; flex-wrap: wrap; gap: 8px; margin: 20px 0 0; }
.p-hall .vh-hero .hero-facts .pill { display: inline-flex; align-items: center; gap: 7px; min-height: 36px; padding: 6px 14px; border-radius: 999px; background: rgba(255, 252, 245, .92); color: var(--navy); font: 600 15px/1.2 var(--f-display); box-shadow: 0 0 0 1px var(--line), 0 6px 12px -10px rgba(29, 44, 76, .5); }
.p-hall .vh-hero .hero-facts .pill--gold { background: var(--navy); color: var(--paper); box-shadow: 0 3px 0 var(--navy-deep); }
.p-hall .vh-hero .hero-facts .pill--gold::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--gold); box-shadow: 0 0 0 3px rgba(215, 164, 62, .3); }
.p-hall .vh-hero .hero-facts .pill:last-child { background: var(--gold-soft); box-shadow: 0 0 0 1.5px rgba(180, 134, 31, .45); }

.p-hall .vh-action { display: flex; flex-wrap: wrap; align-items: center; gap: 18px 22px; margin-top: 26px; }
.p-hall .vh-action .btn-row { margin: 0; }
.p-hall .vh-action .btn { font-size: 18px; min-height: 58px; padding: 17px 30px; box-shadow: 0 5px 0 var(--edge), 0 18px 30px -14px rgba(122, 91, 19, .55); }
.p-hall .hero-status { margin: 0; order: 2; }
/* the rubber stamp */
.p-hall .hero-status .pill {
  display: inline-block;
  padding: 9px 16px 8px;
  border-radius: 10px;
  background: rgba(255, 252, 245, .55);
  color: var(--brick-ink);
  border: 3px double var(--brick-ink);
  box-shadow: inset 0 0 0 1px rgba(143, 68, 36, .25);
  font: 700 15px/1.1 var(--f-display);
  letter-spacing: .1em;
  text-transform: uppercase;
  rotate: -5deg;
}
@media (prefers-reduced-motion: no-preference) {
  .p-hall .hero-status .pill { animation: vh-stamp .5s .7s cubic-bezier(.3, 1.5, .6, 1) both; }
}
@keyframes vh-stamp { from { opacity: 0; scale: 1.7; rotate: -12deg; } to { opacity: 1; scale: 1; rotate: -5deg; } }

.p-hall .vh-next-line { margin: 22px 0 0; padding: 12px 16px; max-width: 40em; border-radius: 14px; background: rgba(255, 252, 245, .78); box-shadow: 0 0 0 1px var(--line); font-size: 16px; line-height: 1.5; color: var(--text); }
.p-hall .vh-next-line a { font-weight: 800; color: var(--blue-ink); }
.p-hall .vh-next-line a:hover { color: var(--navy); }

/* ---------- the notice board ---------- */
.p-hall .vh-board-sec { padding: clamp(46px, 6vw, 84px) 0 clamp(30px, 4vw, 56px); }
.p-hall .vh-board {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr);
  gap: clamp(26px, 3vw, 40px);
  align-items: start;
  border-radius: var(--r-xl);
  padding: clamp(40px, 4vw, 58px) clamp(18px, 3.4vw, 50px) clamp(36px, 3.8vw, 54px);
  background-color: #ecd9ae;
  background-image: radial-gradient(rgba(122, 91, 19, .17) 1.2px, transparent 1.7px), radial-gradient(rgba(255, 255, 255, .4) 1px, transparent 1.5px);
  background-size: 14px 14px, 23px 23px;
  background-position: 0 0, 7px 9px;
  box-shadow: inset 0 0 0 12px #c99a45, inset 0 0 0 15px #a67a2c, inset 0 10px 26px 10px rgba(122, 91, 19, .24), var(--shadow);
}
.p-hall .vh-poster {
  --tilt: -.8deg;
  position: relative;
  margin: 0;
  background: var(--paper);
  border-radius: 6px;
  padding: clamp(30px, 3vw, 40px) clamp(22px, 2.6vw, 34px) clamp(24px, 2.6vw, 32px);
  box-shadow: 0 22px 30px -20px rgba(60, 40, 10, .6), 0 1px 2px rgba(60, 40, 10, .12);
  rotate: var(--tilt);
}
.p-hall .vh-poster--next { --tilt: 1.3deg; background: #f6f8fb; margin-top: 26px; }
.p-hall .vh-pin { --pin: var(--brick); position: absolute; top: -11px; left: 28px; width: 24px; height: 24px; border-radius: 50%; background: radial-gradient(circle at 35% 30%, #fff 0 12%, var(--pin) 32% 100%); box-shadow: 0 5px 6px -2px rgba(0, 0, 0, .35); z-index: 2; }
.p-hall .vh-pin--r { left: auto; right: 28px; --pin: var(--gold-deep); }
.p-hall .vh-pin--blue { --pin: var(--blue-ink); left: 50%; margin-left: -12px; }
.p-hall .vh-poster .eyebrow { margin-bottom: 6px; }
.p-hall .vh-poster h2 { font-size: clamp(28px, 3vw, 38px); line-height: 1.05; margin: 0; }
.p-hall .vh-guest-grid { grid-template-columns: minmax(0, 190px) minmax(0, 1fr); gap: 16px clamp(20px, 2.6vw, 32px); margin-top: 22px; }
/* the headshot as a taped-on photo print */
.p-hall .vh-guest-photo { position: relative; overflow: visible; aspect-ratio: auto; background: #fff; border-radius: 3px; padding: 9px 9px 30px; box-shadow: 0 14px 22px -14px rgba(60, 40, 10, .55), 0 0 0 1px rgba(60, 40, 10, .08); rotate: -2.5deg; }
.p-hall .vh-guest-photo img { aspect-ratio: 640 / 918; height: auto; border-radius: 2px; }
.p-hall .vh-guest-photo::before { content: ""; position: absolute; top: -12px; left: 50%; width: 84px; height: 24px; margin-left: -42px; background: rgba(228, 233, 242, .8); rotate: 3deg; box-shadow: 0 2px 4px rgba(29, 44, 76, .12); z-index: 1; }
.p-hall .vh-guest-bio p { font-size: 16.5px; line-height: 1.6; color: var(--text); }
.p-hall .vh-guest-topic { font-family: var(--f-display); font-size: clamp(19px, 1.7vw, 22px) !important; line-height: 1.3 !important; color: var(--navy) !important; background: var(--gold-soft); border-radius: 12px; padding: 12px 16px; margin-bottom: 14px !important; }
.p-hall .vh-guest-topic strong { font-weight: 600; color: var(--gold-dark); }
.p-hall .vh-guest-shape { border-top: 2px dashed #eadcb4; padding-top: 12px; font-weight: 700; }
.p-hall .vh-cal { position: absolute; top: 22px; right: 22px; width: 64px; text-align: center; border-radius: 14px; overflow: hidden; background: #fff; box-shadow: 0 0 0 2px var(--navy), 0 10px 16px -10px rgba(29, 44, 76, .5); font-family: var(--f-display); line-height: 1.1; rotate: 4deg; }
.p-hall .vh-cal-dow { display: block; background: var(--navy); color: var(--gold); font-weight: 600; font-size: 12px; letter-spacing: .12em; text-transform: uppercase; padding: 4px 0 3px; }
.p-hall .vh-cal-day { display: block; font-size: 29px; font-weight: 600; color: var(--navy); padding-top: 3px; }
.p-hall .vh-cal-mon { display: block; font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: .12em; color: var(--gold-dark); padding-bottom: 5px; }
.p-hall .vh-poster--next h2 { padding-right: 76px; }
.p-hall .vh-upcoming-org { font: 600 19px/1.3 var(--f-display); color: var(--blue-ink); margin: 6px 0 12px; }
.p-hall .vh-upcoming-when { font-size: 16.5px; line-height: 1.5; color: var(--navy); margin: 0 0 12px; padding: 10px 14px; border-radius: 12px; background: var(--blue-soft); }
.p-hall .vh-poster--next > p:not([class]) { font-size: 16.5px; line-height: 1.6; color: var(--text); margin: 0; }
.p-hall .vh-upcoming-status { margin: 16px 0 12px; }
.p-hall .vh-upcoming-status .pill { font: 700 13.5px/1.2 var(--f-display); letter-spacing: .08em; text-transform: uppercase; padding: 7px 12px; border-radius: 8px; background: transparent; color: var(--blue-ink); border: 2px dashed rgba(60, 83, 120, .5); }
.p-hall .vh-upcoming-cta { margin: 0; }
.p-hall .vh-upcoming-cta .btn { min-height: 48px; font-size: 15.5px; padding: 12px 18px; }
@media (prefers-reduced-motion: no-preference) {
  .p-hall .vh-poster { transition: rotate .45s var(--spring), translate .45s var(--spring), box-shadow .45s var(--ease); }
  .p-hall .vh-poster:hover { rotate: 0deg; translate: 0 -6px; box-shadow: 0 32px 42px -24px rgba(60, 40, 10, .65); }
  .p-hall .vh-poster:hover .vh-pin { animation: vh-wiggle .6s var(--ease); }
  .p-hall .vh-guest-photo { transition: rotate .5s var(--spring); }
  .p-hall .vh-poster:hover .vh-guest-photo { rotate: 1deg; }
  /* arriving: each poster is pinned up and settles on the board */
  .vh-motion .vh-board:not(.is-in) .vh-poster { opacity: 0; translate: 0 -30px; rotate: calc(var(--tilt) * -3); }
  .vh-motion .vh-board:not(.is-in) .vh-pin { opacity: 0; scale: 1.8; }
  .vh-motion .vh-board.is-in .vh-poster { animation: vh-settle .85s var(--spring) both; }
  .vh-motion .vh-board.is-in .vh-poster--next { animation-delay: .2s; }
  .vh-motion .vh-board.is-in .vh-pin { animation: vh-pin-in .45s .55s var(--spring) both; }
  .vh-motion .vh-board.is-in .vh-poster--next .vh-pin { animation-delay: .75s; }
  .vh-motion .vh-board.is-in .vh-pin--r { animation-delay: .65s; }
}
@keyframes vh-settle { from { opacity: 0; translate: 0 -30px; rotate: calc(var(--tilt) * -3); } 60% { opacity: 1; } to { opacity: 1; translate: 0 0; rotate: var(--tilt); } }
@keyframes vh-pin-in { from { opacity: 0; scale: 1.8; } to { opacity: 1; scale: 1; } }
@keyframes vh-wiggle { 30% { rotate: -16deg; } 60% { rotate: 12deg; } }

/* ---------- the programme ---------- */
.p-hall .vh-program-sec { padding: clamp(36px, 5vw, 70px) 0 clamp(50px, 6vw, 90px); }
.p-hall .vh-program { position: relative; max-width: 1000px; margin: 0 auto; background: var(--paper); border: 0; border-radius: 8px; padding: clamp(34px, 4vw, 52px) clamp(22px, 4vw, 56px) clamp(28px, 3.4vw, 44px); box-shadow: 0 26px 40px -28px rgba(60, 40, 10, .5), 0 0 0 1px var(--line); rotate: -.4deg; }
.p-hall .vh-tape { position: absolute; top: -13px; width: 110px; height: 28px; background: rgba(228, 233, 242, .8); box-shadow: 0 2px 4px rgba(29, 44, 76, .12); border-left: 2px dashed rgba(255, 255, 255, .6); border-right: 2px dashed rgba(255, 255, 255, .6); }
.p-hall .vh-tape--l { left: 34px; rotate: -5deg; }
.p-hall .vh-tape--r { right: 34px; rotate: 4deg; background: rgba(243, 229, 192, .85); }
.p-hall .vh-program h2 { font-size: clamp(30px, 3.6vw, 44px); margin: 0 0 26px; }
/* ninety minutes to scale: 5 welcome, 45 lesson (recorded), 40 questions */
.p-hall .vh-ribbon { display: flex; gap: 4px; height: 22px; margin: 0 0 16px; }
.p-hall .vh-seg { position: relative; display: block; height: 100%; border-radius: 6px; transform-origin: left; }
.p-hall .vh-seg:first-child { border-radius: 22px 6px 6px 22px; }
.p-hall .vh-seg:last-child { border-radius: 6px 22px 22px 6px; }
.p-hall .vh-seg--welcome { flex: 5; background: var(--gold); }
.p-hall .vh-seg--lesson { flex: 45; background: var(--blue); }
.p-hall .vh-seg--qa { flex: 40; background: var(--sage); }
.p-hall .vh-rec, .p-hall .vh-rec-key { display: inline-block; width: 12px; height: 12px; border-radius: 50%; background: var(--brick); box-shadow: 0 0 0 3px rgba(255, 252, 245, .85); }
.p-hall .vh-rec { position: absolute; left: 10px; top: 5px; }
@media (prefers-reduced-motion: no-preference) {
  .p-hall .vh-rec { animation: vh-rec 2s ease-in-out infinite; }
  .vh-motion .vh-ribbon:not(.is-in) .vh-seg { transform: scaleX(0); }
  .vh-motion .vh-ribbon.is-in .vh-seg { animation: vh-grow .5s var(--ease) both; }
  .vh-motion .vh-ribbon.is-in .vh-seg--lesson { animation-duration: 1.1s; animation-delay: .45s; }
  .vh-motion .vh-ribbon.is-in .vh-seg--qa { animation-duration: 1s; animation-delay: 1.5s; }
}
@keyframes vh-grow { from { transform: scaleX(0); } to { transform: scaleX(1); } }
@keyframes vh-rec { 50% { opacity: .35; } }
.p-hall .vh-timeline { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0 18px; margin-top: 22px; }
.p-hall .vh-timeline li { position: relative; background: none; border-radius: 0; padding: 14px 6px 0 0; border-top: 5px solid var(--gold); font-weight: 700; }
.p-hall .vh-timeline li:nth-child(2) { border-top-color: var(--blue); }
.p-hall .vh-timeline li:nth-child(3) { border-top-color: var(--sage); }
.p-hall .vh-timeline li:nth-child(4) { border-top-color: var(--navy); }
.p-hall .vh-timeline .vh-time { font: 600 clamp(22px, 2.2vw, 28px)/1 var(--f-display); color: var(--navy); }
.p-hall .vh-timeline li > span:not(.vh-time) { font-size: 16px; color: var(--text); font-weight: 600; line-height: 1.35; margin-top: 4px; }
.p-hall .vh-program-foot { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.5fr); gap: 20px 30px; align-items: center; margin-top: 30px; padding-top: 24px; border-top: 2px dashed #eadcb4; }
.p-hall .vh-privacy { display: flex; align-items: center; gap: 12px; margin: 0; padding: 14px 18px; border: 0; border-radius: 14px; background: var(--brick-soft); color: var(--brick-ink); font: 600 17px/1.35 var(--f-display); }
.p-hall .vh-rec-key { flex-shrink: 0; }
.p-hall .vh-bring { margin: 0; font-size: 17.5px; line-height: 1.6; color: var(--text); }

/* ---------- the notify list: an airmail envelope ---------- */
.p-hall .vh-notify-sec { padding: clamp(40px, 5vw, 70px) 0 clamp(30px, 4vw, 60px); }
.p-hall .vh-envelope {
  position: relative;
  max-width: 680px;
  margin: 70px auto 0;
  padding: clamp(78px, 8vw, 96px) clamp(22px, 4.4vw, 54px) clamp(30px, 3.6vw, 44px);
  border: 12px solid transparent;
  border-radius: 20px;
  background:
    linear-gradient(var(--paper), var(--paper)) padding-box,
    repeating-linear-gradient(135deg, var(--brick) 0 16px, var(--paper) 16px 26px, var(--blue-ink) 26px 42px, var(--paper) 42px 52px) border-box;
  box-shadow: 0 34px 50px -30px rgba(20, 32, 58, .55), 0 2px 6px rgba(20, 32, 58, .08);
  perspective: 900px;
  scroll-margin-top: calc(var(--osv-header-h) + 90px);
}
.p-hall .vh-flap {
  position: absolute;
  left: -12px;
  right: -12px;
  top: -12px;
  height: 88px;
  background: linear-gradient(180deg, #f1e3c0, #ead6a6);
  clip-path: polygon(0 0, 100% 0, 50% 100%);
  transform-origin: 50% 0;
  transform: rotateX(180deg);
  z-index: 1;
  pointer-events: none;
  filter: drop-shadow(0 4px 4px rgba(60, 40, 10, .2));
}
.p-hall .vh-stamp { position: absolute; top: 18px; right: 22px; z-index: 2; width: 88px; height: 100px; display: grid; place-items: center; background: var(--gold-soft); rotate: 5deg; box-shadow: 0 6px 10px -6px rgba(60, 40, 10, .5);
  border: 5px dotted var(--paper); outline: 1px solid rgba(180, 134, 31, .25); outline-offset: -5px; }
.p-hall .vh-stamp::before { content: ""; position: absolute; inset: 8px; border: 1.5px solid rgba(180, 134, 31, .55); }
.p-hall .vh-stamp img { width: 64px; height: auto; position: relative; }
.p-hall .vh-postmark { position: absolute; top: 30px; right: 96px; z-index: 2; width: 74px; height: 74px; border-radius: 50%; border: 2.5px solid rgba(60, 83, 120, .45); box-shadow: inset 0 0 0 6px var(--paper), inset 0 0 0 8px rgba(60, 83, 120, .35); rotate: -12deg; }
.p-hall .vh-postmark::after { content: ""; position: absolute; top: 20px; right: 64px; width: 80px; height: 30px; background: repeating-linear-gradient(180deg, rgba(60, 83, 120, .4) 0 2.5px, transparent 2.5px 9px); border-radius: 50%; }
.p-hall .vh-envelope h2 { position: relative; z-index: 3; font-size: clamp(28px, 3.6vw, 42px); letter-spacing: .04em; line-height: 1.08; margin: 0 0 14px; }
.p-hall .vh-envelope > p { font-size: 18px; line-height: 1.55; color: var(--text); max-width: 30em; margin: 0 auto 24px; }
.p-hall .vh-form-wrap { text-align: left; }
.p-hall .vh-envelope .form { gap: 18px; }
.p-hall .vh-envelope .form label { font: 600 16.5px/1.3 var(--f-display); color: var(--navy); }
.p-hall .vh-envelope .form input:not([type="checkbox"]) { min-height: 54px; border-radius: 16px; border: 2px solid var(--line); background: #fff; font-size: 17px; padding: 12px 18px; }
.p-hall .vh-envelope .form input:not([type="checkbox"]):focus { border-color: var(--navy); box-shadow: 0 0 0 4px rgba(215, 164, 62, .35); }
.p-hall .vh-envelope .form .check { font-size: 16px; color: var(--text); align-items: center; min-height: 44px; }
.p-hall .vh-envelope .form .check input { width: 22px; height: 22px; margin: 0; accent-color: var(--navy); flex-shrink: 0; }
.p-hall .vh-envelope .form button[type="submit"] { width: 100%; font-size: 19px; min-height: 60px; }
@media (prefers-reduced-motion: no-preference) {
  .vh-motion .vh-envelope:not(.is-in) .vh-flap { transform: rotateX(0deg); }
  .vh-motion .vh-envelope:not(.is-in) :is(.vh-stamp, .vh-postmark) { opacity: 0; }
  .vh-motion .vh-envelope.is-in .vh-flap { animation: vh-flap 1s .25s cubic-bezier(.5, 0, .3, 1) both; }
  .vh-motion .vh-envelope.is-in .vh-stamp { animation: vh-stamp-on .5s 1.05s cubic-bezier(.3, 1.5, .6, 1) both; }
  .vh-motion .vh-envelope.is-in .vh-postmark { animation: vh-mark-on .4s 1.35s ease-out both; }
}
@keyframes vh-flap { from { transform: rotateX(0deg); } to { transform: rotateX(180deg); } }
@keyframes vh-stamp-on { from { opacity: 0; scale: 1.6; rotate: -8deg; } to { opacity: 1; scale: 1; rotate: 5deg; } }
@keyframes vh-mark-on { from { opacity: 0; scale: 1.3; } to { opacity: 1; scale: 1; } }

/* ---------- widths ---------- */
@media (max-width: 1000px) {
  .p-hall .vh-board { grid-template-columns: 1fr; }
  .p-hall .vh-poster--next { margin-top: 10px; }
}
@media (max-width: 760px) {
  .p-hall .vh-program-foot { grid-template-columns: 1fr; }
  .p-hall .vh-timeline { grid-template-columns: 1fr; gap: 10px; }
  .p-hall .vh-timeline { margin-top: 18px; }
  .p-hall .vh-timeline li { display: grid; grid-template-columns: 4.6rem minmax(0, 1fr); align-items: baseline; padding: 10px 12px 10px 16px; border-radius: 12px; background: var(--cream); border-top: 0; }
  .p-hall .vh-timeline li::before { content: ""; position: absolute; left: 0; top: 10px; bottom: 10px; width: 5px; border-radius: 5px; background: var(--gold); }
  .p-hall .vh-timeline li:nth-child(2)::before { background: var(--blue); }
  .p-hall .vh-timeline li:nth-child(3)::before { background: var(--sage); }
  .p-hall .vh-timeline li:nth-child(4)::before { background: var(--navy); }
  .p-hall .vh-timeline li > span:not(.vh-time) { margin-top: 0; }
  .p-hall .vh-timeline .vh-time { font-size: 22px; }
}
@media (max-width: 600px) {
  .p-hall .vh-action { flex-direction: column; align-items: stretch; }
  .p-hall .hero-status { order: 0; align-self: flex-start; margin-left: 4px; }
  .p-hall .vh-action .btn { width: 100%; }
  .p-hall .vh-board { padding: 36px 20px 30px; border-radius: 28px; box-shadow: inset 0 0 0 9px #c99a45, inset 0 0 0 11px #a67a2c, inset 0 8px 20px 8px rgba(122, 91, 19, .24), var(--shadow); }
  .p-hall .vh-poster { padding: 30px 18px 22px; }
  .p-hall .vh-guest-grid { grid-template-columns: 1fr; }
  .p-hall .vh-guest-photo { width: min(200px, 70%); margin: 4px auto 6px; }
  .p-hall .vh-envelope { border-width: 9px; margin-top: 60px; padding-top: 118px; }
  .p-hall .vh-flap { left: -9px; right: -9px; top: -9px; height: 64px; }
  .p-hall .vh-stamp { width: 70px; height: 80px; top: 16px; right: 16px; }
  .p-hall .vh-stamp img { width: 50px; }
  .p-hall .vh-postmark { width: 58px; height: 58px; top: 26px; right: 80px; }
  .p-hall .vh-postmark::after { right: 50px; width: 56px; top: 14px; }
  .p-hall .vh-program { padding-top: 38px; }
}
@media (max-width: 374px) {
  .p-hall .vh-hero .hero-facts .pill { font-size: 14px; padding: 5px 11px; }
  .p-hall .vh-envelope { padding-left: 14px; padding-right: 14px; }
  .p-hall .vh-cal { width: 56px; right: 14px; }
  .p-hall .vh-poster--next h2 { padding-right: 64px; }
}
@media print {
  .p-hall .vh-bunting, .p-hall .vh-flap, .p-hall .vh-stamp, .p-hall .vh-postmark { display: none; }
}

/* the hall painting stands beside the words, large, rather than tucked into the corner */
@media (min-width: 900px) {
  .p-hall main > .vh-hero .page-visual { align-self: center; margin: 40px 0 -60px; }
  .p-hall main > .vh-hero .page-visual .village-art { max-width: 640px; width: 112%; margin: 0 -6% 0 auto; }
}
/* Phones (Taylor, Sept 30): the cork board's frame and padding left the two posters skinny and squished.
   The board now runs nearly edge to edge with a slimmer frame, so the posters get the width back. */
@media (max-width: 600px) {
  .p-hall .vh-board-sec > .container { padding-inline: 8px; }
  .p-hall .vh-board { padding: 30px 12px 24px; border-radius: 20px; box-shadow: inset 0 0 0 6px #c99a45, inset 0 0 0 8px #a67a2c, inset 0 6px 16px 6px rgba(122, 91, 19, .22), var(--shadow); }
  .p-hall .vh-poster { padding: 28px 18px 22px; --tilt: -.4deg; }
  .p-hall .vh-poster--next { --tilt: .4deg; }
}

/* Oct 1, 2026 (Taylor): the first Village Hall is free and registration happens by hand, so the
   sign-up is a taped note with a short form that reaches us by the contact route. Same note as the
   newsletter and support-group sign-ups on dev (shell.css); kept here until that release goes live. */
.signup-note {
  position: relative; text-align: left; margin: 18px auto 4px; max-width: 520px;
  padding: 30px clamp(18px, 3vw, 28px) 20px; border-radius: 4px;
  background: #fdf3d8; color: var(--navy); rotate: -1deg;
  box-shadow: 0 1px 0 rgba(0, 0, 0, .04), 0 22px 30px -20px rgba(60, 35, 5, .55);
}
.signup-note-tape { position: absolute; top: -13px; left: 50%; width: 118px; height: 28px; margin-left: -59px; rotate: 2deg; background: rgba(233, 214, 160, .82); box-shadow: 0 1px 2px rgba(0, 0, 0, .08); clip-path: polygon(3% 0, 97% 4%, 100% 50%, 96% 100%, 2% 96%, 0 50%); }
.signup-note-head { font: 400 clamp(25px, 2.6vw, 30px)/1.15 var(--f-hand); color: var(--gold-dark); margin: 0 0 8px; }
.signup-note > p { font-size: 16.5px; line-height: 1.55; margin: 0 0 14px; color: var(--navy); }
.signup-note .form { margin: 0; }
.signup-note .form-status:empty { display: none; }
.signup-note-alt { font-size: 15px !important; color: var(--muted) !important; margin: 12px 0 0 !important; }
.signup-note-alt a { color: var(--navy); font-weight: 700; }
.vh-form-wrap[hidden] { display: none !important; }
@media (prefers-reduced-motion: no-preference) {
  .signup-note { animation: osv-note-pin .9s .3s var(--ease) both; transform-origin: 50% -12px; }
  @keyframes osv-note-pin { 0% { transform: translateY(-14px) rotate(-3deg); opacity: 0; } 65% { transform: rotate(1deg); opacity: 1; } 100% { transform: none; } }
}
