:root {
  --giri-admin-bar: 0px;
  --blue: var(--news-blue);
  --grey: var(--news-grey);
  --pink: var(--news-pink);
  --font-mono: var(--mono);
}

html { scroll-padding-top: calc(88px + var(--giri-admin-bar)); }
body.admin-bar { --giri-admin-bar: 32px; }
body { margin: 0; }
body > .site-shell, body > .page-shell { overflow: clip; }
.venue-strip { top: var(--giri-admin-bar); }
.site-header { top: calc(24px + var(--giri-admin-bar)); }
.skip-link { position: fixed; top: 8px; left: 8px; z-index: 100000; padding: 12px 16px; background: #171819; color: #fff; transform: translateY(-160%); }
.skip-link:focus { transform: none; }
.screen-reader-text, .sr-only { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.page-content-anchor { scroll-margin-top: 120px; }

.giri-brand-image { display: block; width: 100%; height: 100%; object-fit: contain; }
.brand-logo { background-image: none !important; }
.brand-logo::before { content: ""; display: block; width: 100%; height: 100%; background: url('../images/giri-logo-stylised-crop.png') center/contain no-repeat; }
.frontpage-visual figure img, .page-hero > img, .story-mosaic img, .full-gallery img, .booking-cta img { object-fit: cover; }

.giri-event-image { background: var(--news-grey); }
.giri-event-image img { display: block; width: 100%; height: 100%; object-fit: cover; }
.giri-empty-events { padding: 38px var(--pad); border-bottom: 1px solid var(--ink); font: 400 1.1rem/1.55 var(--sans); }
.event-row-link { color: inherit; text-decoration: none; }
.event-row-link:focus-visible { outline: 4px solid var(--news-blue); outline-offset: -4px; }

.giri-programme-calendar { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); border-top: 1px solid var(--ink); border-left: 1px solid var(--ink); }
.giri-calendar-weekday { min-height: 42px; padding: 11px; border-right: 1px solid var(--ink); border-bottom: 1px solid var(--ink); font: 700 .72rem/1 var(--sans); text-transform: uppercase; }
.giri-calendar-day { min-height: 150px; padding: 10px; border-right: 1px solid var(--ink); border-bottom: 1px solid var(--ink); background: var(--paper); }
.giri-calendar-day.is-outside { color: #777; background: var(--news-grey); }
.giri-calendar-day > time { display: block; margin-bottom: 18px; font: 400 1.55rem/1 var(--serif); }
.giri-calendar-event { display: block; margin: 0 0 7px; padding: 7px 8px; border-left: 4px solid var(--ink); background: #fff; color: inherit; font: 700 .76rem/1.25 var(--sans); text-decoration: none; }
.giri-calendar-event[data-category="music"] { border-color: var(--news-blue); }
.giri-calendar-event[data-category="food"] { border-color: var(--red-pencil); }
.giri-calendar-event[data-category="community"] { border-color: #50675c; }
.giri-programme-toolbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px; padding: 18px 0; border-top: 3px double var(--ink); border-bottom: 1px solid var(--ink); }
.giri-month-nav, .giri-view-switch, .giri-filters { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.giri-month-nav a, .giri-view-switch button, .giri-filters button { min-height: 44px; padding: 10px 14px; border: 1px solid var(--ink); background: var(--paper); color: var(--ink); font: 700 .82rem/1.2 var(--sans); text-decoration: none; }
.giri-view-switch button[aria-pressed="true"], .giri-filters button[aria-pressed="true"] { background: var(--news-blue); color: #fff; }
.giri-programme-list[hidden], .giri-programme-calendar[hidden] { display: none; }

.baci-wp { padding: 54px var(--pad) 72px; background: var(--news-grey); }
.baci-wp-intro { display: grid; grid-template-columns: 1fr 1fr; gap: 48px; align-items: end; margin-bottom: 44px; }
.baci-wp-intro h2 { margin: 0; font: 400 clamp(54px, 8vw, 116px)/.82 var(--serif); letter-spacing: -.055em; }
.baci-wp-intro h2 em { color: var(--news-blue); }
.baci-wp-intro p { max-width: 46ch; font: 400 clamp(20px, 2.2vw, 31px)/1.25 var(--serif); }
.baci-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin: 24px 0 36px; }
.baci-actions a { display: grid; grid-template-columns: 40px 1fr auto; gap: 14px; align-items: center; min-height: 84px; padding: 18px; border: 1px solid var(--ink); color: inherit; background: var(--news-pink); text-decoration: none; }
.baci-actions a:nth-child(2) { background: var(--news-blue); color: #fff; }
.baci-actions img { width: 36px; max-height: 30px; }
.baci-actions strong, .baci-actions small { display: block; font-family: var(--sans); }
.baci-list { border-top: 1px solid var(--ink); }
.baci-record { display: grid; grid-template-columns: 95px minmax(0, 1fr) auto; gap: 20px; align-items: center; min-height: 76px; padding: 12px 16px; border-bottom: 1px solid var(--ink); color: inherit; }
.baci-record:hover { background: var(--news-pink); }
.baci-record span:first-child, .baci-record small { font: 700 .7rem/1.25 var(--sans); text-transform: uppercase; }
.baci-record strong { font: 400 clamp(18px, 1.7vw, 27px)/1.15 var(--serif); }
.baci-record-actions { display: flex; gap: 6px; }
.baci-record-actions button, .baci-record-actions a { display: grid; place-items: center; width: 44px; height: 44px; padding: 0; border: 1px solid var(--ink); background: var(--paper); color: var(--ink); font: 700 1rem/1 var(--sans); text-decoration: none; }
.baci-record-actions button:hover, .baci-record-actions a:hover { background: var(--news-blue); color: #fff; }
.baci-filters { margin-bottom: 16px; }
.baci-record[hidden] { display: none; }

.consent-placeholder { min-height: 320px; display: grid; place-items: center; padding: 40px; text-align: center; background: #232425; color: #fff; }
.consent-placeholder > div { max-width: 560px; }
.consent-placeholder h3 { margin: 0 0 12px; font: 400 clamp(30px, 4vw, 54px)/1.05 var(--serif); }
.consent-placeholder p { font: 400 1rem/1.6 var(--sans); }
.giri-map-frame { width: 100%; min-height: 410px; border: 0; display: block; }
.footer-map { display: block; }
.footer-map .consent-placeholder { width: 100%; }

.giri-dialog { width: min(700px, calc(100vw - 28px)); max-height: 90vh; padding: 0; border: 2px solid var(--ink); background: var(--paper); color: var(--ink); }
.giri-dialog::backdrop { background: rgb(0 0 0 / .62); }
.giri-dialog-inner { position: relative; padding: 38px; }
.giri-dialog-close { position: absolute; top: 12px; right: 12px; width: 44px; height: 44px; border: 1px solid var(--ink); background: var(--paper); color: var(--ink); font-size: 24px; }
.giri-dialog h2 { margin: 14px 0 24px; font: 400 clamp(38px, 6vw, 66px)/1 var(--serif); }
.giri-dialog fieldset { padding: 0; border: 0; }
.giri-form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.giri-form-grid label { display: grid; gap: 7px; font: 700 .78rem/1.3 var(--sans); text-transform: uppercase; }
.giri-form-grid .full { grid-column: 1 / -1; }
.giri-form-grid input, .giri-form-grid select, .giri-form-grid textarea { width: 100%; min-height: 46px; padding: 10px; border: 1px solid var(--ink); border-radius: 0; background: #fff; color: var(--ink); font: 400 1rem/1.35 var(--sans); text-transform: none; }
.giri-form-grid textarea { min-height: 130px; resize: vertical; }
.giri-honeypot { position: absolute !important; left: -9999px !important; }
.giri-form-note { font: 400 .84rem/1.55 var(--sans); }
.giri-alert { margin: 18px 0; padding: 15px; border: 2px solid var(--ink); background: #fff; font: 700 .9rem/1.45 var(--sans); }
.giri-alert.success { background: #d9f2df; }

.giri-privacy-services { display: grid; gap: 16px; margin: 22px 0; }
.giri-privacy-service { padding: 18px 0; border-top: 1px solid var(--ink); }
.giri-privacy-service h3 { margin: 0 0 8px; font: 400 28px/1.2 var(--serif); }
.giri-consent-actions { display: flex; flex-wrap: wrap; gap: 8px; }

.legal-content .preserve-lines { white-space: pre-line; }
.entry-content { max-width: 760px; margin: 0 auto; padding: 60px var(--pad); }
.entry-content img { max-width: 100%; height: auto; }
.event-page { display: grid; grid-template-columns: minmax(300px, .9fr) minmax(0, 1.1fr); min-height: 620px; border-bottom: 1px solid var(--ink); }
.event-page-image { min-height: 620px; background: var(--news-grey); border-right: 1px solid var(--ink); }
.event-page-image img { width: 100%; height: 100%; object-fit: cover; }
.event-page-copy { padding: clamp(38px, 6vw, 92px) var(--pad); }
.event-page-copy h1 { max-width: 18ch; margin: 18px 0; font: 400 clamp(48px, 7vw, 104px)/.93 var(--serif); letter-spacing: -.055em; overflow-wrap: anywhere; }
.event-page-date, .event-page-copy .event-subtitle { font: 400 1.2rem/1.5 var(--serif); }
.event-page-copy .event-description { max-width: 65ch; font: 400 1.05rem/1.65 var(--sans); }
.giri-word-grid { display: grid; gap: 12px; width: min(100%, 620px); margin: 28px auto 0; }
.giri-word-grid label { display: grid; grid-template-columns: 28px minmax(180px, 1fr) minmax(120px, .65fr); gap: 12px; align-items: center; padding-bottom: 10px; border-bottom: 1px solid var(--ink); font: 700 .84rem/1.4 var(--sans); }
.giri-word-grid input { min-height: 48px; padding: 8px 12px; border: 1px solid var(--ink); background: var(--paper); font: 700 1.2rem/1 var(--sans); letter-spacing: .12em; text-transform: uppercase; }
.giri-puzzle-status { min-height: 24px; margin: 0; font: 700 .84rem/1.4 var(--sans); }
.giri-route-steps { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.giri-route-steps article { min-height: 260px; padding: clamp(28px, 4vw, 58px) var(--pad); border-right: 1px solid var(--ink); }
.giri-route-steps article:last-child { border-right: 0; }
.giri-route-steps span { font: 700 .72rem/1.3 var(--sans); letter-spacing: .08em; }
.giri-route-steps h3 { margin: 40px 0 14px; font: 400 clamp(26px, 3vw, 44px)/1 var(--serif); }
.giri-route-steps p { max-width: 34ch; font: 400 1rem/1.55 var(--sans); }
.giri-route-actions { display: flex; flex-wrap: wrap; gap: 12px; padding: 24px var(--pad); border-top: 1px solid var(--ink); }
.giri-booking-form { min-height: 720px; }
.giri-booking-form .booking-content { padding-block: 48px; }
.giri-booking-form .booking-content h2 { margin-bottom: 18px; }
.giri-booking-form form { margin-top: 26px; }

@media (max-width: 782px) {
  body.admin-bar { --giri-admin-bar: 46px; }
  .giri-programme-calendar { grid-template-columns: 1fr; }
  .giri-calendar-weekday { display: none; }
  .giri-calendar-day { min-height: auto; }
  .giri-calendar-day:empty, .giri-calendar-day.is-outside { display: none; }
  .baci-wp-intro { grid-template-columns: 1fr; }
  .baci-actions { grid-template-columns: 1fr; }
  .baci-record { grid-template-columns: 68px minmax(0, 1fr) 28px; gap: 12px; }
  .baci-record small { display: none; }
  .baci-record-actions { grid-column: 1 / -1; justify-content: end; }
  .giri-form-grid { grid-template-columns: 1fr; }
  .event-page { grid-template-columns: 1fr; }
  .event-page-image { min-height: 360px; max-height: 520px; border-right: 0; border-bottom: 1px solid var(--ink); }
  .giri-word-grid label { grid-template-columns: 28px 1fr; }
  .giri-word-grid input { grid-column: 1 / -1; }
  .giri-route-steps { grid-template-columns: 1fr; }
  .giri-route-steps article { min-height: 0; border-right: 0; border-bottom: 1px solid var(--ink); }
}

@media (max-width: 480px) {
  .giri-dialog-inner { padding: 28px 18px 22px; }
  .baci-wp { padding-inline: var(--pad); }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}
