/* ============================================================
   CULCHETH VILLAGE — "Village hub"
   Dark · refined · glowing. Plus Jakarta Sans, soft corners,
   one luminous blue accent. Design system implemented from
   the claude.ai/design project "Culcheth Village".

   Structure:
     1. Tokens (new design system + legacy aliases)
     2. Base, typography, helpers
     3. New components (.btn .chip .card .date-cap .spotlight …)
     4. Header / nav / footer (shared layout)
     5. Legacy view bridge — restyles the class names still used
        by the ~30 pages not yet hand-converted, so they adopt
        the new theme without breaking.
   ============================================================ */

@import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap');

/* ===== 1. TOKENS ========================================== */
:root{
  /* Canvas & surfaces */
  --bg:#0A0D14; --bg-2:#0D111A; --surface:#11151F; --surface-2:#161B27; --raised:#1B2130;
  /* Hairlines */
  --line:rgba(255,255,255,.07); --line-2:rgba(255,255,255,.12); --line-3:rgba(255,255,255,.20);
  /* Accent — luminous blue */
  --accent:#4D8DFF; --accent-2:#7CAAFF; --accent-deep:#2F6BE0; --accent-ink:#06101F;
  --accent-tint:rgba(77,141,255,.14); --accent-line:rgba(77,141,255,.40); --accent-glow:rgba(77,141,255,.45);
  /* Text */
  --text:#EEF1F7; --text-2:#AAB3C4; --text-3:#717B8E;
  /* Category signals */
  --c-event:#5B9DFF; --c-news:#F4B860; --c-notice:#FF7B86; --c-guide:#45D6C4;
  /* Radius */
  --r-sm:10px; --r:14px; --r-lg:20px; --r-xl:26px; --pill:999px;
  /* Elevation */
  --sh-sm:0 1px 2px rgba(0,0,0,.45); --sh:0 10px 30px rgba(0,0,0,.45);
  --sh-lg:0 28px 70px rgba(0,0,0,.55);
  --glow:0 0 0 1px var(--accent-line), 0 12px 44px var(--accent-glow);
  /* Motion */
  --ease:cubic-bezier(.2,.7,.2,1); --fast:.16s var(--ease);
  --transition:all .25s var(--ease); --transition-fast:all .16s var(--ease);

  /* Spacing */
  --space-xs:.5rem; --space-sm:.75rem; --space-md:1rem; --space-lg:1.5rem;
  --space-xl:2rem; --space-2xl:3rem; --space-3xl:4rem; --space-4xl:6rem; --spacing-unit:1rem;
  /* Layout */
  --max-width:1200px; --border-radius:var(--r); --border-radius-lg:var(--r-lg); --border-radius-xl:var(--r-xl);

  /* ---- Legacy aliases: old views reference these; remap to the new palette ---- */
  --bg-primary:var(--bg); --bg-secondary:var(--bg-2); --bg-tertiary:var(--surface); --bg-hover:var(--raised);
  --bg-color:var(--bg-2);
  --accent-teal:var(--accent); --accent-teal-dark:var(--accent-deep); --accent-ice:var(--accent-2);
  --accent-amber:var(--c-news); --accent-amber-dark:#C98A2E; --accent-green:var(--c-guide);
  --text-primary:var(--text); --text-secondary:var(--text-2); --text-tertiary:var(--text-3);
  --border-primary:var(--line); --border-secondary:var(--line-2); --border-accent:var(--accent-line);
  --border-color:var(--line);
  --shadow-sm:var(--sh-sm); --shadow-md:var(--sh); --shadow-lg:var(--sh-lg); --shadow-glow:var(--glow);
  --category-event:var(--c-event); --category-news:var(--c-news); --category-notice:var(--c-notice); --category-business:var(--c-guide);
}

/* ===== 2. BASE ============================================ */
*{margin:0;padding:0;box-sizing:border-box}
html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scroll-behavior:smooth}
body{
  font-family:"Plus Jakarta Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
  color:var(--text); background:var(--bg);
  background-image:
    radial-gradient(120% 80% at 80% -10%, rgba(77,141,255,.12), transparent 55%),
    radial-gradient(90% 70% at 0% 110%, rgba(77,141,255,.06), transparent 55%);
  background-attachment:fixed; line-height:1.6; min-height:100vh; text-rendering:optimizeLegibility;
}
h1,h2,h3,h4,h5,h6{font-weight:800;line-height:1.1;color:var(--text);letter-spacing:-.02em;margin-bottom:var(--space-md)}
h1{font-size:clamp(2rem,4.5vw,3.2rem);line-height:1.04}
h2{font-size:clamp(1.6rem,3.2vw,2.4rem)}
h3{font-size:clamp(1.2rem,2.2vw,1.6rem);font-weight:700}
h4{font-size:1.18rem;font-weight:700}
p{margin-bottom:var(--space-md);color:var(--text-2);line-height:1.6;max-width:68ch}
a{color:var(--accent-2);text-decoration:none;transition:var(--fast)}
a:hover{color:var(--accent)}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}
img{max-width:100%}

.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}
.skip-link{position:absolute;top:-48px;left:12px;background:var(--accent);color:var(--accent-ink);padding:.6rem 1rem;border-radius:var(--r-sm);font-weight:700;z-index:1000;transition:top var(--fast)}
.skip-link:focus{top:12px}
.container{max-width:var(--max-width);margin:0 auto;padding:0 var(--space-lg)}

/* Type helpers */
.t-eyebrow{font-size:.74rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--accent-2)}
.num{font-variant-numeric:tabular-nums lining-nums}

/* ===== 3. NEW COMPONENTS ================================== */
/* Buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:48px;padding:0 1.5rem;
  border:1px solid transparent;border-radius:var(--r);font-family:inherit;font-size:1rem;font-weight:700;
  letter-spacing:-.01em;cursor:pointer;text-decoration:none;line-height:1;white-space:nowrap;
  transition:transform var(--fast),background var(--fast),border-color var(--fast),box-shadow var(--fast),color var(--fast)}
.btn .ico{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.btn-primary{background:var(--accent);color:var(--accent-ink);box-shadow:0 8px 24px var(--accent-glow)}
.btn-primary:hover{background:var(--accent-2);color:var(--accent-ink);transform:translateY(-2px);box-shadow:0 12px 32px var(--accent-glow)}
.btn-secondary{background:var(--surface-2);color:var(--text);border-color:var(--line-2)}
.btn-secondary:hover{background:var(--raised);border-color:var(--line-3);color:var(--text);transform:translateY(-2px)}
.btn-ghost{background:transparent;color:var(--text-2)}
.btn-ghost:hover{background:var(--surface-2);color:var(--text)}
.btn-sm{min-height:38px;padding:0 1rem;font-size:.9rem;border-radius:var(--r-sm)}
.btn-lg{min-height:56px;padding:0 1.9rem;font-size:1.1rem}

/* Chips */
.chip{display:inline-flex;align-items:center;gap:.5rem;padding:.4rem .85rem;border-radius:var(--pill);
  background:var(--surface-2);border:1px solid var(--line);font-size:.78rem;font-weight:700;letter-spacing:.02em;color:var(--text)}
.chip .dot{width:8px;height:8px;border-radius:50%;flex:none;box-shadow:0 0 8px currentColor}
.chip.event .dot{background:var(--c-event);color:var(--c-event)}
.chip.news .dot{background:var(--c-news);color:var(--c-news)}
.chip.notice .dot{background:var(--c-notice);color:var(--c-notice)}
.chip.guide .dot{background:var(--c-guide);color:var(--c-guide)}
.chip.toggle{cursor:pointer;transition:var(--fast)}
.chip.toggle:hover{border-color:var(--line-3);background:var(--raised)}
.chip.toggle.on{background:var(--accent-tint);border-color:var(--accent-line);color:var(--accent-2)}

/* Cards */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:1.5rem;
  box-shadow:var(--sh);position:relative;transition:transform var(--fast),border-color var(--fast),box-shadow var(--fast)}
a.card,.card.link{cursor:pointer;text-decoration:none;color:inherit;display:block}
a.card:hover,.card.link:hover{transform:translateY(-3px);border-color:var(--line-2);box-shadow:var(--sh-lg)}
.card h3{font-size:1.18rem;font-weight:700;letter-spacing:-.01em;line-height:1.18;margin:.2rem 0 .5rem}
.card h3 a{color:inherit}
.card p{font-size:.95rem;color:var(--text-2);margin-bottom:.9rem}
.card .meta{display:flex;align-items:center;gap:.5rem;font-size:.86rem;color:var(--text-3);margin-top:.35rem}
.card .meta .ico{width:15px;height:15px;stroke:var(--accent-2);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none}
.thumb{height:140px;border-radius:var(--r);margin-bottom:1rem;overflow:hidden;border:1px solid var(--line);
  background:repeating-linear-gradient(135deg,rgba(255,255,255,.035) 0 10px,transparent 10px 20px),linear-gradient(160deg,var(--surface-2),var(--bg-2));
  display:flex;align-items:center;justify-content:center}
.thumb img{width:100%;height:100%;object-fit:cover;display:block}
.thumb span{font-family:ui-monospace,Menlo,monospace;font-size:.74rem;letter-spacing:.06em;color:var(--text-3);text-transform:uppercase}

/* Date capsule — signature */
.date-cap{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;min-width:58px;
  padding:.55rem .5rem;border-radius:var(--r);background:var(--surface-2);border:1px solid var(--line-2);text-align:center;flex:none}
.date-cap .day{font-size:1.55rem;font-weight:800;line-height:1;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.date-cap .mon{font-size:.64rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--text-3);margin-top:.25rem}
.date-cap.lg{min-width:84px;padding:.8rem .7rem}
.date-cap.lg .day{font-size:2.4rem}
.date-cap.lg .mon{font-size:.72rem}
.date-cap.today{background:linear-gradient(160deg,var(--accent),var(--accent-deep));border-color:transparent;color:var(--accent-ink);box-shadow:0 8px 26px var(--accent-glow)}
.date-cap.today .mon{color:rgba(6,16,31,.7)}

/* Spotlight — signature */
.spotlight{position:relative;background:var(--surface);border:1px solid var(--line-2);border-radius:var(--r-lg);
  padding:1.4rem;overflow:hidden;box-shadow:var(--sh)}
.spotlight::before{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:linear-gradient(90deg,var(--accent),transparent 70%)}
.spotlight::after{content:"";position:absolute;top:-40%;left:-10%;width:55%;height:140%;background:radial-gradient(closest-side,var(--accent-glow),transparent);opacity:.5;pointer-events:none}
.spotlight>*{position:relative}
.live{display:inline-flex;align-items:center;gap:.5rem;font-size:.7rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--accent-2)}
.live .pulse{width:8px;height:8px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 0 var(--accent-glow);animation:pulse 2s var(--ease) infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 var(--accent-glow)}70%{box-shadow:0 0 0 9px transparent}100%{box-shadow:0 0 0 0 transparent}}

/* Inputs / panels */
.field{display:flex;flex-direction:column;gap:.5rem}
.field label{font-size:.78rem;font-weight:700;letter-spacing:.04em;color:var(--text-2)}
.input,select.input,textarea.input{width:100%;min-height:48px;padding:.7rem 1rem;background:var(--surface-2);
  border:1px solid var(--line-2);border-radius:var(--r);color:var(--text);font-family:inherit;font-size:1rem;line-height:1.4;transition:var(--fast)}
textarea.input{min-height:auto;resize:vertical}
.input::placeholder{color:var(--text-3)}
.input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-tint)}
select.input{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--text-3) 50%),linear-gradient(135deg,var(--text-3) 50%,transparent 50%);background-position:calc(100% - 18px) 21px,calc(100% - 13px) 21px;background-size:5px 5px;background-repeat:no-repeat;padding-right:2.4rem}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:1.5rem;box-shadow:var(--sh)}

/* ===== 4. HEADER / NAV / FOOTER =========================== */
.site-header{position:sticky;top:0;z-index:100;padding:14px 0;
  background:rgba(13,17,26,.72);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line);box-shadow:0 10px 30px rgba(0,0,0,.35)}
.header-content{display:flex;align-items:center;gap:1.2rem}
.brand,.site-logo{display:inline-flex;align-items:center;gap:.7rem;text-decoration:none;color:var(--text)}
.brand .mark{width:42px;height:42px;border-radius:12px;flex:none;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(155deg,var(--accent-2),var(--accent-deep));box-shadow:0 6px 20px var(--accent-glow),inset 0 1px 0 rgba(255,255,255,.25)}
.brand .mark svg{width:24px;height:24px}
.brand .wordmark{display:flex;flex-direction:column;line-height:1}
.brand .wordmark .name{font-size:1.25rem;font-weight:800;letter-spacing:-.02em}
.brand .wordmark .sub{font-size:.62rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--text-3);margin-top:.2rem}

.main-nav{margin:0 auto}
.nav-menu{display:flex;align-items:center;gap:.15rem;list-style:none;margin:0;padding:0}
.nav-menu a{display:inline-flex;align-items:center;min-height:42px;padding:0 .95rem;border-radius:var(--r-sm);
  color:var(--text-2);font-weight:600;font-size:.96rem;transition:var(--fast)}
.nav-menu a:hover{background:var(--surface-2);color:var(--text)}
.nav-menu a.active{color:var(--text);background:var(--accent-tint);box-shadow:inset 0 0 0 1px var(--accent-line)}

.header-actions{display:flex;align-items:center;gap:.6rem;margin-left:auto}
.search-form{display:flex;align-items:center;gap:.5rem;background:var(--surface-2);border:1px solid var(--line-2);
  border-radius:var(--pill);padding:.3rem .35rem .3rem 1rem;transition:var(--fast)}
.search-form:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-tint)}
.search-form input{flex:1;border:none;background:transparent;color:var(--text);font-family:inherit;font-size:.95rem;min-width:120px}
.search-form input::placeholder{color:var(--text-3)}
.search-form input:focus{outline:none}
.search-form button{min-height:38px;padding:0 1rem;border:none;border-radius:var(--pill);background:var(--accent);
  color:var(--accent-ink);font-family:inherit;font-weight:700;font-size:.9rem;cursor:pointer;transition:var(--fast)}
.search-form button:hover{background:var(--accent-2)}

.nav-toggle{display:none;flex-direction:column;justify-content:center;gap:5px;width:44px;height:44px;
  background:var(--surface-2);border:1px solid var(--line-2);border-radius:var(--r-sm);cursor:pointer}
.nav-toggle span{display:block;width:20px;height:2px;background:var(--text);margin:0 auto;border-radius:2px;transition:var(--fast)}

.main-content{padding:var(--space-2xl) 0 var(--space-4xl);min-height:calc(100vh - 220px)}

.site-footer{background:var(--bg-2);border-top:1px solid var(--line);margin-top:var(--space-4xl);padding:var(--space-3xl) 0 var(--space-xl)}
.footer-content{display:grid;grid-template-columns:1.4fr repeat(3,1fr);gap:2rem;margin-bottom:2rem}
.footer-section h3{font-size:1.15rem;font-weight:800;margin-bottom:.6rem}
.footer-section h4{font-size:.74rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--text-3);margin-bottom:1rem}
.footer-section p{color:var(--text-2);font-size:.95rem;margin-bottom:.6rem}
.footer-section ul{list-style:none}
.footer-section li{margin-bottom:.6rem}
.footer-section a{color:var(--text-2);font-size:.95rem}
.footer-section a:hover{color:var(--accent-2)}
.footer-updated{font-size:.82rem;color:var(--text-3)}
.footer-bottom{border-top:1px solid var(--line);padding-top:1.3rem;text-align:center;color:var(--text-3);font-size:.84rem}

/* Newsletter form (footer + subscribe) */
.newsletter-form{display:flex;flex-direction:column;gap:.6rem}
.newsletter-input{display:flex;align-items:center;gap:.5rem;background:var(--surface-2);border:1px solid var(--line-2);
  border-radius:var(--pill);padding:.3rem .35rem .3rem 1rem;transition:var(--fast);max-width:380px}
.newsletter-input:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-tint)}
.newsletter-input input[type="email"]{flex:1;border:none;background:transparent;color:var(--text);font-family:inherit;font-size:.95rem;min-width:0}
.newsletter-input input[type="email"]:focus{outline:none}
.newsletter-input input::placeholder{color:var(--text-3)}
.newsletter-input .btn,.newsletter-input button{min-height:40px;white-space:nowrap}
.subscription-status{display:none;align-items:center;justify-content:center;width:34px;height:34px;border-radius:50%;
  border:1px solid var(--c-guide);background:rgba(69,214,196,.12)}
.subscription-status svg{width:18px;height:18px;stroke:var(--c-guide);stroke-width:2.5;fill:none}
.newsletter-form.newsletter-success .subscription-status{display:inline-flex}
.form-message{margin-top:.6rem;font-size:.9rem}
.form-message.success{color:var(--c-guide)}
.form-message.error{color:var(--c-notice)}

/* ===== 5. LEGACY VIEW BRIDGE ============================== */
/* Generic page section rhythm */
.section{margin-bottom:var(--space-3xl)}
.section-title{font-size:clamp(1.6rem,3vw,2.1rem);font-weight:800;letter-spacing:-.02em;margin-bottom:var(--space-lg);display:flex;align-items:center;gap:var(--space-md)}
.section-title::after{content:"";flex:1;height:1px;background:var(--line)}

/* Generic content cards used across What's On / News & Notices / Village Guide */
.event-card,.notice-card,.news-card,.business-card{background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-lg);padding:var(--space-lg);box-shadow:var(--sh);position:relative;transition:transform var(--fast),border-color var(--fast),box-shadow var(--fast)}
.event-card:hover,.notice-card:hover,.news-card:hover,.business-card:hover{transform:translateY(-3px);border-color:var(--line-2);box-shadow:var(--sh-lg)}
.event-card h2,.event-card h3,.notice-card h3,.news-card h3,.business-card h3{letter-spacing:-.01em}
.event-card h2 a,.event-card h3 a,.notice-card h3 a,.news-card h3 a,.business-card h3 a{color:var(--text)}
.event-card h2 a:hover,.event-card h3 a:hover,.notice-card h3 a:hover,.news-card h3 a:hover,.business-card h3 a:hover{color:var(--accent-2)}

/* Old date badge → capsule look */
.date-badge,.event-date-badge{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;
  min-width:62px;background:var(--surface-2);border:1px solid var(--line-2);border-radius:var(--r);padding:.5rem .45rem;text-align:center}
.date-badge .day,.event-date-badge .day{font-size:1.7rem;font-weight:800;line-height:1;color:var(--text);font-variant-numeric:tabular-nums}
.date-badge .month,.event-date-badge .month{font-size:.66rem;text-transform:uppercase;font-weight:700;color:var(--text-3);letter-spacing:.12em;margin-top:.2rem}
.event-date-badge .year{font-size:.62rem;color:var(--text-3);margin-top:.1rem}

/* Old category chips / pills */
.category-chip{display:inline-flex;align-items:center;padding:.25rem .75rem;border-radius:var(--pill);
  font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;background:var(--surface-2);border:1px solid var(--line);color:var(--text)}
.category-chip.news{color:var(--c-news)} .category-chip.notice{color:var(--c-notice)}
.category-chip.event{color:var(--c-event)} .category-chip.business{color:var(--c-guide)}
.category-pill,.result-type-pill{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:var(--pill);
  background:var(--accent-tint);color:var(--accent-2);font-weight:700;font-size:.82rem;border:1px solid var(--accent-line);width:fit-content}

/* Event card internals */
.event-card{display:flex;gap:var(--space-lg);align-items:flex-start}
.events-page .event-card{flex-direction:column;gap:var(--space-md)}
.event-date{flex-shrink:0}
.event-details h3,.event-content h2{margin:0 0 var(--space-xs)}
.event-meta{display:flex;flex-direction:column;gap:var(--space-xs);margin-top:var(--space-sm);font-size:.9rem;color:var(--text-2)}
.event-image img{border-radius:var(--r);width:100%;object-fit:cover}
.event-link a{display:inline-flex;align-items:center;gap:6px;color:var(--accent-2);font-weight:700}
.event-card .category-pill{position:absolute;top:var(--space-lg);right:var(--space-lg)}
.cancelled-banner{background:rgba(255,123,134,.14);border:1px solid rgba(255,123,134,.4);color:var(--c-notice);
  padding:var(--space-sm) var(--space-md);text-align:center;font-weight:700;border-radius:var(--r-sm);margin-bottom:var(--space-md)}
.no-results{color:var(--text-3);padding:var(--space-2xl) 0;text-align:center}

/* Event / content detail pages */
.event-detail,.post-detail,.notice-detail{padding-top:var(--space-sm)}
.cancelled-banner-large{background:rgba(255,123,134,.14);border:1px solid rgba(255,123,134,.4);color:var(--c-notice);padding:var(--space-md) var(--space-lg);border-radius:var(--r);font-weight:700;text-align:center;margin-bottom:var(--space-xl)}
.event-header{margin-bottom:var(--space-2xl)}
.event-hero-image{border-radius:var(--r-lg);overflow:hidden;border:1px solid var(--line);margin-bottom:var(--space-xl);box-shadow:var(--sh)}
.event-hero-image img{width:100%;height:auto;display:block}
.event-title-section .category-pill{position:static;margin-bottom:var(--space-md)}
.event-title-section h1{margin-bottom:var(--space-md)}
.event-intro{font-size:1.18rem;color:var(--text-2);max-width:65ch}
.event-lead{font-size:1.18rem;line-height:1.6;color:var(--text-2);margin-bottom:var(--space-lg);max-width:65ch}
.event-details-grid{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:var(--space-2xl);align-items:start;margin-bottom:var(--space-2xl)}
.event-main-content{min-width:0}
.event-body{color:var(--text-2);line-height:1.75}
.event-body > * + *{margin-top:var(--space-md)}
.event-body h2,.event-body h3{margin-top:var(--space-xl);color:var(--text)}
.event-sidebar{position:sticky;top:90px}
.event-info-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--space-xl);box-shadow:var(--sh)}
.event-info-card h3{margin-bottom:var(--space-lg);padding-bottom:var(--space-md);border-bottom:1px solid var(--line)}
.event-info-card dl{margin:0}
.event-info-card dt{font-size:.74rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--text-3);margin-top:var(--space-lg);margin-bottom:.3rem}
.event-info-card dd{margin:0 0 var(--space-lg);color:var(--text-2);line-height:1.6}
.event-info-card dd:last-child{margin-bottom:0}
.event-info-card strong{color:var(--text)}
.calendar-actions{margin-top:var(--space-xl);padding-top:var(--space-xl);border-top:1px solid var(--line)}
.calendar-buttons{display:flex;gap:var(--space-md);flex-wrap:wrap}
@media (max-width:820px){.event-details-grid,.event-details-grid.no-body{grid-template-columns:1fr;gap:var(--space-xl)}.event-sidebar{position:static}}

/* About page */
.about-hero.has-hero-image{background-size:cover;background-position:center;background-repeat:no-repeat;min-height:340px;display:flex;align-items:flex-end;text-align:left;padding:var(--space-3xl) 0;border:0}
.about-hero.has-hero-image::before{display:none}
.hero-overlay{position:absolute;inset:0;background:linear-gradient(180deg,rgba(10,13,20,.35),rgba(10,13,20,.92));z-index:0}
.about-hero .hero-summary{color:var(--text-2);max-width:62ch;font-size:1.1rem;margin-top:var(--space-md)}
.about-sections{margin-top:var(--space-2xl)}
.about-grid{display:grid;grid-template-columns:1fr;gap:var(--space-lg)}
.about-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--space-xl);box-shadow:var(--sh)}
.about-card h3{margin-bottom:var(--space-md);padding-bottom:var(--space-sm);border-bottom:1px solid var(--line)}
.about-card .richtext{color:var(--text-2);line-height:1.7;max-width:78ch}
.about-card .richtext > * + *{margin-top:var(--space-sm)}
.fullpage-links{margin-top:var(--space-3xl)}
.fullpage-links__header{margin-bottom:var(--space-xl)}
.fullpage-links__eyebrow{font-size:.74rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--accent-2);margin-bottom:.4rem}
.fullpage-links__lead{color:var(--text-2);max-width:60ch}
.fullpage-links__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:var(--space-lg)}
.fullpage-links__card{display:block;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--space-xl);box-shadow:var(--sh);color:inherit;transition:transform var(--fast),border-color var(--fast),box-shadow var(--fast)}
.fullpage-links__card:hover{transform:translateY(-3px);border-color:var(--line-2);box-shadow:var(--sh-lg)}
.fullpage-links__badge{display:inline-block;font-size:.7rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--accent-2);background:var(--accent-tint);border:1px solid var(--accent-line);padding:.2rem .6rem;border-radius:var(--pill);margin-bottom:var(--space-sm)}
.fullpage-links__cta{color:var(--accent-2);font-weight:700;display:inline-block;margin-top:var(--space-sm)}

/* Submit page — chooser cards, collapsing to a compact switcher after selection */
.submit-intro{color:var(--text-2);max-width:60ch;margin-bottom:var(--space-xl)}
.submit-switcher{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--space-lg);margin-bottom:var(--space-2xl)}
.choice{display:flex;flex-direction:column;align-items:flex-start;gap:.45rem;text-align:left;background:var(--surface);border:1px solid var(--line-2);border-radius:var(--r-lg);padding:var(--space-xl);box-shadow:var(--sh);cursor:pointer;font-family:inherit;color:var(--text);transition:transform var(--fast),border-color var(--fast),box-shadow var(--fast)}
.choice:hover{transform:translateY(-3px);border-color:var(--accent-line);box-shadow:var(--sh-lg)}
.choice-ico{width:42px;height:42px;border-radius:12px;display:flex;align-items:center;justify-content:center;background:var(--accent-tint);border:1px solid var(--accent-line);margin-bottom:.3rem}
.choice-ico svg{width:22px;height:22px;stroke:var(--accent-2);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.choice-title{font-size:1.15rem;font-weight:800;letter-spacing:-.01em}
.choice-desc{font-size:.92rem;color:var(--text-3)}
.choice[aria-pressed="true"]{border-color:var(--accent);box-shadow:var(--glow)}
.submit-switcher.chosen{display:flex;flex-wrap:wrap;gap:.6rem;margin-bottom:var(--space-xl)}
.submit-switcher.chosen .choice{flex-direction:row;align-items:center;padding:0 1.1rem;min-height:44px;border-radius:var(--pill);box-shadow:none;background:var(--surface-2);border-color:var(--line-2)}
.submit-switcher.chosen .choice:hover{transform:none;box-shadow:none;border-color:var(--line-3)}
.submit-switcher.chosen .choice-ico,.submit-switcher.chosen .choice-desc{display:none}
.submit-switcher.chosen .choice-title{font-size:.95rem;font-weight:700}
.submit-switcher.chosen .choice[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);box-shadow:0 6px 18px var(--accent-glow)}
.submit-switcher.chosen .choice[aria-pressed="true"] .choice-title{color:var(--accent-ink)}
.submission-form-section h2{margin-bottom:var(--space-lg)}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-lg)}
.required{color:var(--c-notice)}
.field-error{display:block;color:var(--c-notice);font-size:.82rem;margin-top:.3rem}
.form-group.error input,.form-group.error select,.form-group.error textarea{border-color:var(--c-notice)}
.file-input-label{display:inline-flex;margin-top:.3rem}
/* Hide the native file input (kept accessible/clickable via the .file-input-label[for]) so
   only the styled "Choose Image" button shows, not a second native "Choose File" control. */
.file-input-visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.file-input-label+.file-input-visually-hidden:focus-visible+*{outline:2px solid var(--accent-2)}
.turnstile-wrapper{margin:var(--space-md) 0}
@media (max-width:600px){.form-row{grid-template-columns:1fr}}

/* Article / post detail */
.post-detail{max-width:760px;margin:0 auto}
.post-header{margin-bottom:var(--space-2xl)}
.post-header h1{margin-bottom:var(--space-md)}
.post-meta{display:flex;flex-wrap:wrap;gap:var(--space-md);align-items:center;color:var(--text-3);font-size:.9rem;margin-bottom:var(--space-lg)}
.post-category{display:inline-flex;align-items:center;padding:.2rem .7rem;border-radius:var(--pill);background:var(--surface-2);border:1px solid var(--line);color:var(--accent-2);font-weight:700;font-size:.74rem;text-transform:uppercase;letter-spacing:.05em}
.post-intro{font-size:1.25rem;line-height:1.6;color:var(--text);max-width:none;margin-bottom:var(--space-xl)}
.post-hero{border-radius:var(--r-lg);overflow:hidden;border:1px solid var(--line);box-shadow:var(--sh);margin-bottom:var(--space-xl)}
.post-hero img{width:100%;height:auto;display:block}
.post-body{font-size:1.06rem;line-height:1.8;color:var(--text-2)}
.post-body > * + *{margin-top:var(--space-lg)}
.post-body h2,.post-body h3{color:var(--text);margin-top:var(--space-2xl)}
.post-body img{border-radius:var(--r);margin:var(--space-lg) 0;max-width:100%;height:auto}
.post-body a{color:var(--accent-2);text-decoration:underline}
.post-source{margin-top:var(--space-2xl);padding-top:var(--space-xl);border-top:1px solid var(--line)}
.source-link{display:inline-flex;align-items:center;gap:.5rem;color:var(--accent-2);font-weight:700}

/* What's On list: date as a horizontal pill, not a cramped vertical box */
.events-page .event-content{display:flex;flex-direction:column;align-items:flex-start;gap:.4rem}
.events-page .event-date-badge{flex-direction:row;align-items:baseline;gap:.45rem;min-width:0;width:fit-content;padding:.4rem 1rem;background:linear-gradient(160deg,var(--accent),var(--accent-deep));border:1px solid transparent;border-radius:var(--pill);box-shadow:0 6px 18px var(--accent-glow);margin-bottom:.3rem}
.events-page .event-date-badge .day{font-size:1.35rem;color:#fff}
.events-page .event-date-badge .month{font-size:.85rem;font-weight:800;color:#fff;margin-top:0;letter-spacing:.04em}
.events-page .event-date-badge .year{margin-top:0;font-size:.85rem;color:rgba(255,255,255,.82);letter-spacing:.04em}

/* Notice pinned + important panel */
.notice-card.pinned{border-color:var(--line-2)}
.notice-card.pinned::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;border-radius:3px 0 0 3px;background:var(--c-notice);box-shadow:0 0 14px var(--c-notice)}
.pin-icon{position:absolute;top:var(--space-md);right:var(--space-md)}
.important-notices-panel{background:var(--surface);border:1px solid var(--line-2);border-radius:var(--r-lg);padding:var(--space-xl);margin-bottom:var(--space-2xl);position:relative;overflow:hidden}
.important-notices-panel::before{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:linear-gradient(90deg,var(--c-notice),transparent 70%)}
.important-notices-panel h2{font-size:1.4rem;margin-bottom:var(--space-lg)}
.notices-list{display:flex;flex-direction:column;gap:var(--space-md)}

/* News */
.news-card{display:flex;flex-direction:column}
.news-image{width:100%;height:200px;object-fit:cover;border-radius:var(--r);margin-bottom:var(--space-md)}
.news-date{font-size:.85rem;color:var(--text-3);margin-bottom:var(--space-sm)}

/* Grids */
.events-list,.events-grid,.business-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:var(--space-lg)}
.news-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:var(--space-lg)}

/* Directory spotlight + business card */
.directory-spotlight{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-xl);padding:var(--space-2xl);margin-bottom:var(--space-3xl)}
.business-card .business-meta{font-size:.88rem;color:var(--text-2)}
.business-card .business-meta a{color:var(--accent-2)}

/* Hero (legacy home / other heroes) */
.hero-section{text-align:center;padding:var(--space-3xl) 0;margin-bottom:var(--space-2xl);position:relative;overflow:hidden;
  background:linear-gradient(160deg,var(--surface),var(--bg-2));border:1px solid var(--line);border-radius:var(--r-xl)}
.hero-section::before{content:"";position:absolute;top:-30%;right:-8%;width:60%;height:120%;background:radial-gradient(closest-side,var(--accent-glow),transparent);opacity:.5;pointer-events:none}
.hero-section .container{position:relative;z-index:1}
.hero-section p{font-size:1.18rem;color:var(--text-2);margin:0 auto var(--space-xl);max-width:50ch}
.hero-actions,.cta-actions{display:flex;gap:var(--space-md);justify-content:center;flex-wrap:wrap}

/* Community CTA */
.community-cta{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-xl);padding:var(--space-2xl);margin:var(--space-3xl) 0;text-align:center;position:relative;overflow:hidden}
.community-cta::before{content:"";position:absolute;top:-40%;left:50%;transform:translateX(-50%);width:60%;height:140%;background:radial-gradient(closest-side,var(--accent-glow),transparent);opacity:.4;pointer-events:none}
.community-cta>*{position:relative}
.community-cta p{margin:0 auto var(--space-xl);max-width:52ch}

/* Filters */
.filters{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--space-lg);margin-bottom:var(--space-xl)}
.filter-form{display:flex;flex-wrap:wrap;gap:var(--space-md);align-items:end}
.filter-group{display:flex;flex-direction:column;gap:.5rem;flex:1;min-width:180px}
.filter-group label{font-size:.78rem;font-weight:700;color:var(--text-2);text-transform:uppercase;letter-spacing:.04em}
.filter-group select,.filter-group input{padding:.7rem 1rem;background:var(--surface-2);border:1px solid var(--line-2);border-radius:var(--r);color:var(--text);font-size:1rem;font-family:inherit}
.filter-group select:focus,.filter-group input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-tint)}
.filters .search-filter .search-form{border:none;background:none;box-shadow:none;padding:0}
.filters .search-filter .search-form input{border:1px solid var(--line-2);border-radius:var(--r);background:var(--surface-2);color:var(--text);padding:.7rem 1rem;min-width:0}
.filters .search-filter .search-form button{background:var(--accent);color:var(--accent-ink)}

/* Forms (Submit / Contact) */
.submission-form{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-xl);padding:var(--space-2xl)}
.form-group{margin-bottom:var(--space-lg)}
.form-group label{display:block;margin-bottom:.5rem;font-weight:700;color:var(--text);font-size:.95rem}
.form-group input,.form-group select,.form-group textarea{width:100%;padding:.7rem 1rem;background:var(--surface-2);border:1px solid var(--line-2);border-radius:var(--r);color:var(--text);font-family:inherit;font-size:1rem}
.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-tint)}

/* Search results page */
.search-form-large{width:100%;max-width:720px;margin:var(--space-lg) auto;background:var(--surface-2);border:1px solid var(--line-2);border-radius:var(--pill);padding:.4rem .4rem .4rem 1.2rem}
.search-form-large input{width:100%;background:transparent;border:none;color:var(--text);font-size:1.05rem}
.search-results .results-list{display:flex;flex-direction:column;border-top:1px solid var(--line)}
.search-result-item{padding:var(--space-md) 0;border-bottom:1px solid var(--line)}
.search-result-item h3{margin:0 0 var(--space-xs);font-size:1.2rem}
.result-summary{margin:0;color:var(--text-2)}
.text-accent{color:var(--accent-2)}

/* Tabs (Village Guide, News & Notices) — match the design-system filter chips */
.tabs,.tabs.tabs-pill{display:inline-flex;flex-wrap:wrap;gap:.5rem;background:none;border:none;padding:0;margin-bottom:var(--space-xl)}
.tab,.tabs.tabs-pill .tab{padding:.5rem 1rem;border-radius:var(--pill);background:var(--surface-2);border:1px solid var(--line);color:var(--text-2);font-weight:700;font-size:.9rem;transition:var(--fast)}
.tab:hover,.tab:focus,.tabs.tabs-pill .tab:hover,.tabs.tabs-pill .tab:focus{color:var(--text);background:var(--raised);border-color:var(--line-3)}
.tab.active,.tabs.tabs-pill .tab.active{background:var(--accent-tint);border-color:var(--accent-line);color:var(--accent-2);box-shadow:none}

/* Badges + inline link affordances — match the design-system chip */
.category-badge{display:inline-flex;align-items:center;padding:.3rem .8rem;border-radius:var(--pill);background:var(--surface-2);border:1px solid var(--line);color:var(--text-2);font-size:.78rem;font-weight:700;letter-spacing:.02em}
.arrow-link,.read-more,.map-link,.opening-times-link{display:inline-flex;align-items:center;gap:.35rem;color:var(--accent-2);font-weight:700;cursor:pointer}
.opening-times{margin-top:var(--space-xs)}
.opening-times pre{white-space:pre-wrap;font-family:inherit;color:var(--text-2);background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-sm);padding:.6rem .8rem;margin-top:.4rem}
.year-filter{display:flex;gap:var(--space-sm);flex-wrap:wrap;margin-bottom:var(--space-lg)}

/* Inline meta icon (replaces emoji in lists/details) */
.ico-in{width:15px;height:15px;stroke:var(--accent-2);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none;vertical-align:-2px;margin-right:.4rem}

/* Notice / news list extras */
.notice-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-md);flex-wrap:wrap}
.notice-summary{margin:.4rem 0;color:var(--text-2)}
.notice-meta{display:flex;flex-wrap:wrap;gap:var(--space-md);font-size:.85rem;color:var(--text-3);margin-top:var(--space-sm)}
.publish-date,.expiry-date,.news-author{font-size:.85rem;color:var(--text-3)}
.news-author{margin-left:.5rem}

/* Village guide cards (fallback surfaces) */
.place-card,.group-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--space-lg);box-shadow:var(--sh)}
.places-grid,.groups-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:var(--space-lg);margin-top:var(--space-lg)}
.place-details p,.group-details p{margin:.4rem 0;color:var(--text-2);font-size:.92rem;line-height:1.5}
.group-details p strong{color:var(--text);margin-right:.35rem}
.group-details{display:flex;flex-direction:column;gap:.1rem}
.place-divider{height:1px;background:var(--line);margin:var(--space-md) 0}

/* ===== 6. RESPONSIVE ===================================== */
@media (max-width:900px){
  .footer-content{grid-template-columns:1fr 1fr}
  .nav-toggle{display:flex}
  .main-nav{margin:0}
  .nav-menu{display:none;position:absolute;top:calc(100% + 8px);right:var(--space-lg);left:var(--space-lg);
    flex-direction:column;align-items:stretch;background:var(--raised);border:1px solid var(--line-2);border-radius:var(--r-lg);padding:.5rem;box-shadow:var(--sh-lg)}
  .nav-menu.active{display:flex}
  .nav-menu a{min-height:48px;padding:0 1rem}
  .header-actions .search-form{display:none}
}
@media (max-width:600px){
  .footer-content{grid-template-columns:1fr}
  .container{padding:0 var(--space-md)}
  .header-actions .btn{display:none}
}
@media (prefers-reduced-motion:reduce){
  *{scroll-behavior:auto}
  .live .pulse{animation:none}
  .btn:hover,.card:hover,a.card:hover,.card.link:hover,.event-card:hover,.notice-card:hover,.news-card:hover,.business-card:hover{transform:none}
}
