@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Lora:ital,wght@0,400;0,500;0,600;1,400&display=swap");

/* ==========================================================================
   Central Events — Bootstrap theme override
   Implements STYLE.md (Brand & Typography) on top of Bootstrap 5.
   ========================================================================== */

:root {
  /* Brand colours */
  --colour-parchment: #F3F0E8;
  --colour-charcoal-ink: #232323;
  --colour-slate-grey: #68707A;
  --colour-oxidised-green: #5E7463;
  --colour-deep-navy: #2E4052;
  --colour-stone-taupe: #D8D1C7;
  --colour-burnt-ochre: #B17A3E;

  /* Semantic roles */
  --colour-background: var(--colour-parchment);
  --colour-surface: #F8F6F1;
  --colour-surface-muted: var(--colour-stone-taupe);
  --colour-text-primary: var(--colour-charcoal-ink);
  --colour-text-secondary: var(--colour-slate-grey);
  --colour-border: rgba(35, 35, 35, 0.14);
  --colour-action: var(--colour-oxidised-green);
  --colour-action-hover: #4F6656;
  --colour-highlight: var(--colour-burnt-ochre);

  /* Type stacks. Sentinel/Lyon Text are commercial; Lora is a free editorial fallback. */
  --font-serif: "Sentinel", "Lyon Text", "Freight Text", "Lora", Georgia, serif;
  --font-sans: "Inter", "Source Sans 3", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;

  /* Type scale */
  --type-h1-size: 3.25rem;
  --type-h1-line: 3.75rem;
  --type-h1-tracking: -0.01em;
  --type-h2-size: 2rem;
  --type-h2-line: 2.5rem;
  --type-h2-tracking: -0.01em;
  --type-h3-size: 1.25rem;
  --type-h3-line: 1.75rem;
  --type-h4-size: 1rem;
  --type-h4-line: 1.5rem;
  --type-body-size: 1rem;
  --type-body-line: 1.625rem;
  --type-meta-size: 0.75rem;
  --type-meta-line: 1rem;
  --type-meta-tracking: 0.02em;
  --type-small-size: 0.8125rem;
  --type-small-line: 1.125rem;
  --type-small-tracking: 0.02em;

  /* Layout */
  --container-max: 1200px;
  --container-padding: clamp(1rem, 3vw, 2rem);
  --grid-gap: clamp(1rem, 2vw, 2rem);

  /* Spacing scale */
  --space-1: 0.25rem;
  --space-2: 0.5rem;
  --space-3: 0.75rem;
  --space-4: 1rem;
  --space-5: 1.5rem;
  --space-6: 2rem;
  --space-7: 3rem;
  --space-8: 4rem;
  --space-9: 6rem;

  /* Motion */
  --ease-standard: cubic-bezier(0.2, 0, 0, 1);
  --duration-fast: 150ms;
  --duration-standard: 240ms;
  --duration-slow: 400ms;

  /* ----- Bootstrap variable overrides ------------------------------------ */
  --bs-body-bg: var(--colour-background);
  --bs-body-color: var(--colour-text-primary);
  --bs-body-font-family: var(--font-sans);
  --bs-body-font-size: var(--type-body-size);
  --bs-body-font-weight: 400;
  --bs-body-line-height: var(--type-body-line);

  --bs-emphasis-color: var(--colour-charcoal-ink);
  --bs-secondary-color: var(--colour-text-secondary);
  --bs-tertiary-color: var(--colour-slate-grey);
  --bs-secondary-bg: var(--colour-surface);
  --bs-tertiary-bg: var(--colour-surface-muted);

  --bs-border-color: var(--colour-border);
  --bs-border-color-translucent: var(--colour-border);
  --bs-border-radius: 2px;
  --bs-border-radius-sm: 2px;
  --bs-border-radius-lg: 4px;

  --bs-link-color: var(--colour-action);
  --bs-link-hover-color: var(--colour-action-hover);
  --bs-link-color-rgb: 94, 116, 99;
  --bs-link-hover-color-rgb: 79, 102, 86;

  --bs-primary: var(--colour-oxidised-green);
  --bs-primary-rgb: 94, 116, 99;
  --bs-secondary: var(--colour-slate-grey);
  --bs-secondary-rgb: 104, 112, 122;
  --bs-success: var(--colour-oxidised-green);
  --bs-success-rgb: 94, 116, 99;
  --bs-info: var(--colour-deep-navy);
  --bs-info-rgb: 46, 64, 82;
  --bs-warning: var(--colour-burnt-ochre);
  --bs-warning-rgb: 177, 122, 62;
  --bs-danger: #8C3A3A;
  --bs-danger-rgb: 140, 58, 58;
  --bs-light: var(--colour-surface);
  --bs-light-rgb: 248, 246, 241;
  --bs-dark: var(--colour-charcoal-ink);
  --bs-dark-rgb: 35, 35, 35;

  --bs-focus-ring-color: rgba(177, 122, 62, 0.35);
}

/* ==========================================================================
   Base
   ========================================================================== */

html {
  font-size: 16px;
}

body {
  background: var(--colour-background);
  color: var(--colour-text-primary);
  font-family: var(--font-sans);
  font-size: var(--type-body-size);
  line-height: var(--type-body-line);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

h1, h2, .type-h1, .type-h2 {
  font-family: var(--font-serif);
  color: var(--colour-text-primary);
}

h3, h4, h5, h6 {
  font-family: var(--font-sans);
  color: var(--colour-text-primary);
}

h1, .type-h1, .editorial-headline {
  font-family: var(--font-serif);
  font-weight: 400;
  font-size: clamp(2.75rem, 6vw, var(--type-h1-size));
  line-height: var(--type-h1-line);
  letter-spacing: var(--type-h1-tracking);
}

h2, .type-h2, .event-title {
  font-family: var(--font-serif);
  font-weight: 600;
  font-size: clamp(1.75rem, 3vw, var(--type-h2-size));
  line-height: var(--type-h2-line);
  letter-spacing: var(--type-h2-tracking);
}

h3, .type-h3, .section-heading {
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: var(--type-h3-size);
  line-height: var(--type-h3-line);
  letter-spacing: 0;
}

h4, .type-h4, .card-heading {
  font-family: var(--font-sans);
  font-weight: 500;
  font-size: var(--type-h4-size);
  line-height: var(--type-h4-line);
}

.body-copy,
.event-description {
  font-family: var(--font-sans);
  font-size: var(--type-body-size);
  line-height: var(--type-body-line);
  font-weight: 400;
}

.meta,
.ui-label {
  font-family: var(--font-sans);
  font-size: var(--type-meta-size);
  line-height: var(--type-meta-line);
  letter-spacing: var(--type-meta-tracking);
  text-transform: uppercase;
  font-weight: 400;
  color: var(--colour-text-secondary);
}

.secondary-text {
  font-family: var(--font-sans);
  font-size: var(--type-small-size);
  line-height: var(--type-small-line);
  letter-spacing: var(--type-small-tracking);
  font-weight: 400;
  color: var(--colour-text-secondary);
}

a {
  color: var(--colour-action);
  text-decoration-thickness: 1px;
  text-underline-offset: 0.2em;
  transition: color var(--duration-fast) var(--ease-standard);
}

a:hover {
  color: var(--colour-action-hover);
}

hr,
.divider {
  border: 0;
  border-top: 1px solid var(--colour-border);
  opacity: 1;
}

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

/* ==========================================================================
   Layout helpers
   ========================================================================== */

.section {
  padding-block: clamp(3rem, 8vw, 7rem);
}

.paper-surface {
  background-color: var(--colour-parchment);
  background-image: radial-gradient(rgba(35, 35, 35, 0.035) 1px, transparent 1px);
  background-size: 4px 4px;
}

/* ==========================================================================
   Bootstrap component overrides
   ========================================================================== */

/* Navbar -------------------------------------------------------------------*/
.navbar {
  background-color: var(--colour-background) !important;
  border-bottom: 1px solid var(--colour-border) !important;
  box-shadow: none !important;
  padding-block: var(--space-4);
}

.navbar-brand {
  font-family: var(--font-serif);
  font-weight: 600;
  font-size: 1.375rem;
  letter-spacing: -0.01em;
  color: var(--colour-text-primary) !important;
}

.navbar .nav-link {
  font-family: var(--font-sans);
  font-size: 0.9375rem;
  font-weight: 500;
  color: var(--colour-text-primary) !important;
  padding-inline: var(--space-4);
  position: relative;
  transition: color var(--duration-fast) var(--ease-standard);
}

.navbar .nav-link:hover {
  color: var(--colour-action) !important;
}

.navbar .nav-link.active,
.navbar .nav-link[aria-current="page"] {
  color: var(--colour-action) !important;
}

.navbar .nav-link.active::after,
.navbar .nav-link[aria-current="page"]::after {
  content: "";
  position: absolute;
  left: var(--space-4);
  right: var(--space-4);
  bottom: -2px;
  height: 1px;
  background: var(--colour-action);
}

/* Buttons ------------------------------------------------------------------*/
.btn {
  font-family: var(--font-sans);
  font-weight: 500;
  border-radius: 2px;
  padding: 0.75rem 1.25rem;
  letter-spacing: -0.005em;
  transition: background-color var(--duration-fast) var(--ease-standard),
              border-color var(--duration-fast) var(--ease-standard),
              color var(--duration-fast) var(--ease-standard);
}

.btn-sm {
  padding: 0.4rem 0.75rem;
  font-size: 0.8125rem;
}

.btn-lg {
  padding: 1rem 1.75rem;
  font-size: 1rem;
}

.btn-primary,
.button-primary {
  background-color: var(--colour-action);
  border-color: var(--colour-action);
  color: var(--colour-parchment);
}

.btn-primary:hover,
.btn-primary:focus,
.button-primary:hover {
  background-color: var(--colour-action-hover);
  border-color: var(--colour-action-hover);
  color: var(--colour-parchment);
}

.btn-secondary,
.button-secondary {
  background-color: transparent;
  border-color: var(--colour-border);
  color: var(--colour-text-primary);
}

.btn-secondary:hover,
.btn-secondary:focus,
.button-secondary:hover {
  background-color: rgba(216, 209, 199, 0.35);
  border-color: var(--colour-border);
  color: var(--colour-text-primary);
}

.btn-outline-primary {
  border-color: var(--colour-action);
  color: var(--colour-action);
  background-color: transparent;
}

.btn-outline-primary:hover,
.btn-outline-primary:focus {
  background-color: var(--colour-action);
  border-color: var(--colour-action);
  color: var(--colour-parchment);
}

.btn-dark {
  background-color: var(--colour-charcoal-ink);
  border-color: var(--colour-charcoal-ink);
  color: var(--colour-parchment);
}

.btn-dark:hover {
  background-color: #1a1a1a;
  border-color: #1a1a1a;
  color: var(--colour-parchment);
}

.btn-link {
  color: var(--colour-action);
  text-decoration: underline;
  text-underline-offset: 0.25em;
}

.btn-link:hover {
  color: var(--colour-action-hover);
}

/* Cards --------------------------------------------------------------------*/
.card,
.event-card {
  background: var(--colour-surface);
  border: 1px solid var(--colour-border);
  border-radius: 2px;
  box-shadow: none;
  overflow: hidden;
  transition: transform var(--duration-standard) var(--ease-standard),
              border-color var(--duration-standard) var(--ease-standard);
}

.event-card:hover {
  transform: translateY(-2px);
}

.card-header,
.card-footer {
  background-color: transparent;
  border-color: var(--colour-border);
  font-family: var(--font-sans);
}

.card-title {
  font-family: var(--font-serif);
  font-weight: 600;
  font-size: 1.25rem;
  line-height: 1.6rem;
  color: var(--colour-text-primary);
}

.event-card img {
  aspect-ratio: 4 / 3;
  width: 100%;
  object-fit: cover;
  filter: saturate(0.85) contrast(0.95);
}

.event-card-content {
  padding: var(--space-5);
}

/* Forms --------------------------------------------------------------------*/
.form-control,
.form-select,
.filter-control {
  background-color: var(--colour-surface);
  border: 1px solid var(--colour-border);
  border-radius: 2px;
  color: var(--colour-text-primary);
  font-family: var(--font-sans);
  padding: 0.75rem 1rem;
  transition: border-color var(--duration-fast) var(--ease-standard),
              box-shadow var(--duration-fast) var(--ease-standard);
}

.form-control:focus,
.form-select:focus,
.filter-control:focus {
  background-color: var(--colour-surface);
  border-color: var(--colour-action);
  color: var(--colour-text-primary);
  box-shadow: 0 0 0 0.2rem rgba(94, 116, 99, 0.15);
}

.form-label {
  font-family: var(--font-sans);
  font-size: 0.8125rem;
  font-weight: 500;
  color: var(--colour-text-primary);
  letter-spacing: 0.01em;
  margin-bottom: var(--space-2);
}

.form-text {
  color: var(--colour-text-secondary);
  font-size: var(--type-small-size);
}

.form-check-input:checked {
  background-color: var(--colour-action);
  border-color: var(--colour-action);
}

.form-check-input:focus {
  border-color: var(--colour-action);
  box-shadow: 0 0 0 0.2rem rgba(94, 116, 99, 0.15);
}

/* Tags, badges, pills ------------------------------------------------------*/
.badge {
  font-family: var(--font-sans);
  font-weight: 500;
  font-size: var(--type-meta-size);
  letter-spacing: var(--type-meta-tracking);
  text-transform: uppercase;
  padding: 0.4rem 0.65rem;
  border-radius: 999px;
}

.tag {
  display: inline-flex;
  align-items: center;
  border-radius: 999px;
  padding: 0.4rem 0.75rem;
  background: var(--colour-stone-taupe);
  color: var(--colour-charcoal-ink);
  font-family: var(--font-sans);
  font-size: var(--type-meta-size);
  letter-spacing: var(--type-meta-tracking);
  text-transform: uppercase;
  line-height: 1;
}

.tag-active,
.badge.bg-primary {
  background-color: var(--colour-oxidised-green) !important;
  color: var(--colour-parchment) !important;
}

.badge.bg-success {
  background-color: var(--colour-oxidised-green) !important;
  color: var(--colour-parchment) !important;
}

.badge.bg-warning {
  background-color: var(--colour-burnt-ochre) !important;
  color: var(--colour-parchment) !important;
}

.badge.bg-secondary {
  background-color: var(--colour-stone-taupe) !important;
  color: var(--colour-charcoal-ink) !important;
}

.badge.bg-dark {
  background-color: var(--colour-charcoal-ink) !important;
  color: var(--colour-parchment) !important;
}

.badge.bg-light {
  background-color: var(--colour-surface) !important;
  color: var(--colour-charcoal-ink) !important;
}

/* Tables -------------------------------------------------------------------*/
.table {
  --bs-table-bg: transparent;
  --bs-table-color: var(--colour-text-primary);
  --bs-table-border-color: var(--colour-border);
  --bs-table-striped-bg: rgba(216, 209, 199, 0.18);
  --bs-table-hover-bg: rgba(216, 209, 199, 0.28);
  font-family: var(--font-sans);
}

.table > thead {
  font-family: var(--font-sans);
  font-size: var(--type-meta-size);
  letter-spacing: var(--type-meta-tracking);
  text-transform: uppercase;
  color: var(--colour-text-secondary);
}

.table > thead th {
  font-weight: 500;
  border-bottom: 1px solid var(--colour-border);
  padding-block: var(--space-3);
}

/* Alerts -------------------------------------------------------------------*/
.alert {
  border-radius: 2px;
  border: 1px solid var(--colour-border);
  font-family: var(--font-sans);
}

.alert-primary,
.alert-success {
  background-color: rgba(94, 116, 99, 0.08);
  border-color: rgba(94, 116, 99, 0.25);
  color: var(--colour-deep-navy);
}

.alert-warning {
  background-color: rgba(177, 122, 62, 0.10);
  border-color: rgba(177, 122, 62, 0.30);
  color: #6E4A24;
}

.alert-info {
  background-color: rgba(46, 64, 82, 0.06);
  border-color: rgba(46, 64, 82, 0.20);
  color: var(--colour-deep-navy);
}

.alert-danger {
  background-color: rgba(140, 58, 58, 0.06);
  border-color: rgba(140, 58, 58, 0.25);
  color: #6E2D2D;
}

/* Pagination, list-group ---------------------------------------------------*/
.pagination .page-link {
  color: var(--colour-text-primary);
  border-color: var(--colour-border);
  background-color: transparent;
  font-family: var(--font-sans);
}

.pagination .page-link:hover {
  background-color: rgba(216, 209, 199, 0.35);
  color: var(--colour-action);
}

.pagination .page-item.active .page-link {
  background-color: var(--colour-action);
  border-color: var(--colour-action);
  color: var(--colour-parchment);
}

.list-group-item {
  background-color: transparent;
  border-color: var(--colour-border);
  color: var(--colour-text-primary);
  font-family: var(--font-sans);
}

/* Footer -------------------------------------------------------------------*/
.footer {
  background-color: transparent;
  border-top: 1px solid var(--colour-border) !important;
  color: var(--colour-text-secondary);
  font-family: var(--font-sans);
  font-size: var(--type-small-size);
  padding-block: var(--space-5);
}

.footer a {
  color: var(--colour-text-secondary);
}

.footer a:hover {
  color: var(--colour-action);
}

/* ==========================================================================
   Utility classes
   ========================================================================== */

.bg-parchment   { background-color: var(--colour-parchment) !important; }
.bg-surface     { background-color: var(--colour-surface) !important; }
.bg-stone-taupe { background-color: var(--colour-stone-taupe) !important; }
.bg-charcoal    { background-color: var(--colour-charcoal-ink) !important; color: var(--colour-parchment); }
.bg-deep-navy   { background-color: var(--colour-deep-navy) !important; color: var(--colour-parchment); }

.text-charcoal  { color: var(--colour-charcoal-ink) !important; }
.text-slate     { color: var(--colour-slate-grey) !important; }
.text-ochre     { color: var(--colour-burnt-ochre) !important; }
.text-green     { color: var(--colour-oxidised-green) !important; }
.text-parchment { color: var(--colour-parchment) !important; }
