/*
Theme Name:   Culturama 2026
Theme URI:    https://www.culturamanevis.com/
Author:       Code X Elite Ltd.
Author URI:   https://codexeliteltd.com/
Description:  Custom theme for the Nevis Culturama Festival, built on the rounded band grammar. Content types and festival settings live in the Culturama Core plugin, so this theme can be replaced without losing a single event, contest or date.
Version:      0.1.0
Requires at least: 6.5
Tested up to: 6.7
Requires PHP: 8.0
License:      Proprietary. Licensed to the Nevis Culturama Committee.
Text Domain:  culturama
Tags:         festival, events, custom-colors, accessibility-ready
*/

/* This file carries the theme header and the full design system. Nothing here
   was written twice: the tokens below are the same ones the signed-off mockups
   used, and the values are measured rather than estimated. See the colour
   system sheet in Drive before changing any hex value. */

/* ── Fonts, self hosted ───────────────────────────────────────────────────
   Self hosted rather than pulled from Google, so the site keeps working when
   a visitor is behind a filter and no third party sees who is reading. */
@font-face{font-family:Quicksand;src:url("assets/fonts/quicksand-latin-400-normal.woff2") format("woff2");font-weight:400;font-display:swap;font-style:normal}
@font-face{font-family:Quicksand;src:url("assets/fonts/quicksand-latin-500-normal.woff2") format("woff2");font-weight:500;font-display:swap;font-style:normal}
@font-face{font-family:Quicksand;src:url("assets/fonts/quicksand-latin-600-normal.woff2") format("woff2");font-weight:600;font-display:swap;font-style:normal}
@font-face{font-family:Quicksand;src:url("assets/fonts/quicksand-latin-700-normal.woff2") format("woff2");font-weight:700;font-display:swap;font-style:normal}
@font-face{font-family:"DM Sans";src:url("assets/fonts/dm-sans-latin-400-normal.woff2") format("woff2");font-weight:400;font-display:swap;font-style:normal}
@font-face{font-family:"DM Sans";src:url("assets/fonts/dm-sans-latin-500-normal.woff2") format("woff2");font-weight:500;font-display:swap;font-style:normal}
@font-face{font-family:"DM Sans";src:url("assets/fonts/dm-sans-latin-700-normal.woff2") format("woff2");font-weight:700;font-display:swap;font-style:normal}

:root{
  /* ── Brand ─────────────────────────────────────────────────────────
     Primary: plum, sampled from the live topbar and footer.
     Secondary: the four swoosh colours lifted from the festival logo,
     measured from the file rather than guessed.
     Contrast, measured: gold 1.45:1 on white and 10.34:1 on plum; sky
     1.82 and 8.27; green 3.78 and 3.97; red 5.30 and 2.84. Gold and sky
     are fills or plum-ground accents only, never text on white.
     The -ink variants are darkened to clear 4.5:1 against the OFF-WHITE
     tint, the tougher of the two light grounds, so they pass on both. */
  --brand-dark:#351C42;     /* PRIMARY. Hero band, ticket band, footer   */
  --brand-deep:#25122F;     /* Derived: one step darker, footer floor    */
  --brand-accent:#FFD13C;   /* Logo gold. Actions, eyebrows on plum      */
  --sky:#6ECEDE;            /* Logo sky. Information, tickets, the app   */
  --green:#419446;          /* Logo green. Open, on sale, confirmed      */
  --red:#D12128;            /* Logo red. Closing, limited, deadlines     */
  --brand-light:#F3EEF5;    /* Derived: primary at 11% on white          */
  --accent-ink:#886E1A;     /* 4.58:1 on the off-white tint, 4.89 on white */
  --sky-ink:#3D7A84;        /* 4.55:1 on the off-white tint, 4.87 on white */
  --green-ink:#348039;      /* 4.58:1 on the off-white tint, 4.89 on white */
  --red-ink:#D1161E;        /* 5.11:1 on the off-white tint, 5.46 on white */
  --white:#FFFFFF;
  --off-white:#FAF7F2;
  --text:#1A1A1A;
  --text-mid:#5A5A5A;
  --text-inv:#FFFFFF;

  --font-display:Quicksand,"Trebuchet MS",sans-serif;
  --font-body:"DM Sans","Helvetica Neue",Arial,sans-serif;

  /* ── Type scale, nine sizes, no drift ─────────────────────────────── */
  --text-display:clamp(42px,5.2vw,68px);
  --text-2xl:clamp(30px,4vw,50px);
  --text-xl:clamp(23px,2.8vw,34px);
  --text-lg:clamp(18px,2vw,22px);
  --text-md:17px;
  --text-base:16px;
  --text-sm:14px;
  --text-xs:11px;
  --text-micro:10px;
  --tracking-caps:.2em;
  --tracking-display:-.02em;
  --leading-display:1.04;
  --leading-heading:1.2;
  --leading-body:1.7;

  /* ── Container arithmetic, content width first, then the box ──────── */
  --content:1200px;
  --sx:clamp(20px,5vw,48px);
  --wrap:calc(var(--content) + var(--sx) * 2);

  --band-r:48px;
  --card-r:20px;
  --photo-r:16px;
  --r-sm:10px;
  --gap:24px;
  --section-y:96px;
  --band-p:80px;
  --ease-premium:cubic-bezier(.22,1,.36,1);
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:var(--white);color:var(--text);font-family:var(--font-body);font-size:var(--text-md);line-height:var(--leading-body);overflow-x:hidden;-webkit-font-smoothing:antialiased}
img{display:block;max-width:100%;height:auto}
a{color:inherit;text-decoration:none}
h1,h2,h3,h4{font-family:var(--font-display);letter-spacing:var(--tracking-display)}
ul{list-style:none}
button{font-family:inherit}

/* Focus, visible and on brand. Never remove this without replacing it. */
:where(a,button,input,select,textarea,summary,[tabindex]):focus-visible{outline:3px solid var(--brand-accent);outline-offset:3px;border-radius:4px}
.on-plum :where(a,button):focus-visible,.band :where(a,button):focus-visible,.footer :where(a,button):focus-visible{outline-color:var(--white)}

.screen-reader-text{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip-link{position:absolute;left:-9999px;top:0;z-index:1000;background:var(--brand-dark);color:var(--text-inv);padding:14px 22px;border-radius:0 0 var(--r-sm) 0;font-size:var(--text-sm);font-weight:700}
.skip-link:focus{left:0}

.wrap{max-width:var(--wrap);margin:0 auto;padding:0 var(--sx)}
.section{padding-top:var(--section-y);padding-bottom:var(--section-y)}
.sec-tint{background:var(--off-white);padding-top:var(--section-y);padding-bottom:var(--section-y)}

.eyebrow{font-family:var(--font-body);font-size:var(--text-xs);font-weight:700;letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--brand-accent);line-height:1;margin-bottom:18px}
.eyebrow.on-light{color:var(--accent-ink)}
.eyebrow.sky{color:var(--sky)}
.h2{font-size:var(--text-2xl);font-weight:700;line-height:var(--leading-display);color:var(--text)}
.h2.inv{color:var(--text-inv)}
.h3{font-size:var(--text-xl);font-weight:700;line-height:var(--leading-heading)}
.support{color:var(--text-mid);font-size:var(--text-lg);max-width:640px;margin-top:16px;line-height:1.55}
.support.inv{color:rgba(255,255,255,.72)}

/* ── nav ────────────────────────────────────────────────────────────── */
.nav{display:flex;align-items:center;justify-content:space-between;gap:28px;padding:24px 0 20px}
.nav-logo{height:50px;width:auto}
.nav-links{display:flex;align-items:center;gap:26px;font-size:var(--text-sm);font-weight:500;color:var(--text)}
.nav-links .on > a,.nav-links .current-menu-item > a,.nav-links .current_page_item > a{color:var(--brand-dark);font-weight:700}
.nav-right{display:flex;align-items:center;gap:20px}
.nav-tel{font-size:var(--text-sm);font-weight:700;color:var(--brand-dark);white-space:nowrap}
.nav-toggle{display:none;flex-direction:column;gap:5px;background:none;border:none;-webkit-appearance:none;appearance:none;padding:8px;cursor:pointer}
.nav-toggle span{display:block;width:24px;height:2px;background:var(--brand-dark);border-radius:2px;transition:transform .25s var(--ease-premium),opacity .2s}
.nav-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.nav-toggle[aria-expanded="true"] span:nth-child(2){opacity:0}
.nav-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

.pill{display:inline-flex;align-items:center;gap:10px;background:var(--brand-accent);color:#111;font-family:var(--font-body);font-size:var(--text-xs);font-weight:700;letter-spacing:.16em;text-transform:uppercase;padding:15px 26px;border-radius:999px;line-height:1;border:none;cursor:pointer;transition:opacity .2s,transform .2s}
.pill:hover{opacity:.88;transform:translateY(-1px)}
.pill.inv{background:var(--white);color:var(--brand-dark)}
.pill.ghost{background:rgba(255,255,255,.12);color:#fff}
.pill.outline{background:transparent;color:var(--brand-dark);box-shadow:inset 0 0 0 1.5px var(--brand-dark)}
.pill.sm{padding:13px 20px}

/* ── bands ──────────────────────────────────────────────────────────── */
.band{background:var(--brand-dark);color:var(--text-inv);border-radius:var(--band-r);position:relative;overflow:hidden;padding:var(--band-p)}
.band-wrap{max-width:var(--wrap);margin:0 auto;padding:0 var(--sx)}
.texture{position:absolute;font-family:var(--font-display);font-weight:700;color:rgba(255,255,255,.07);line-height:.8;pointer-events:none;user-select:none;z-index:0;right:-24px;bottom:-58px;font-size:300px}
.texture.left{right:auto;left:-30px;top:-40px;bottom:auto;font-size:260px}
.band-inner{position:relative;z-index:2}

/* hero */
.hero{display:grid;grid-template-columns:1.08fr 1fr;gap:52px;align-items:center;position:relative;z-index:2}
.hero h1{font-size:var(--text-display);font-weight:700;line-height:var(--leading-display);max-width:11ch}
.hero .kicker{font-family:var(--font-display);font-weight:600;font-size:var(--text-lg);color:var(--brand-accent);margin-top:22px;line-height:1.25}
.hero .dates{margin-top:10px;color:rgba(255,255,255,.78);font-size:var(--text-md);max-width:38ch;line-height:1.5}
.hero-photo{position:relative;border-radius:var(--photo-r);overflow:hidden;aspect-ratio:5/4;background:var(--brand-deep)}
/* A portrait original keeps its shape. Set by the template from the image's own
   dimensions, so a tall parade shot is not cropped down to a letterbox. */
.hero-photo.is-tall{aspect-ratio:4/5}
.hero-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:46% 42%}
.hero-photo.is-tall img{object-position:50% 50%}
/* With a tall photo the band reads better if the columns share the width more
   evenly. Scoped to wide screens on purpose: :has() outranks a plain .hero
   selector, so left unscoped it would beat the mobile single-column rule and
   leave the photograph in a thin side column. */
@media (min-width:769px){
  .hero:has(.hero-photo.is-tall){grid-template-columns:1fr .82fr;align-items:center}
}
.countdown{display:flex;gap:10px;margin-top:30px}
.cd{background:rgba(255,255,255,.1);border-radius:14px;padding:14px 16px;text-align:center;min-width:76px}
.cd b{display:block;font-family:var(--font-display);font-size:26px;font-weight:700;line-height:1}
.cd span{font-size:var(--text-micro);letter-spacing:.16em;text-transform:uppercase;color:rgba(255,255,255,.65)}
.hero-cta{display:flex;gap:14px;margin-top:34px;flex-wrap:wrap}

/* signature overlap card */
.overlap{max-width:var(--wrap);margin:-58px auto 0;padding:0 var(--sx);position:relative;z-index:5}
.callout{background:var(--white);border-radius:var(--card-r);padding:30px 34px;display:flex;align-items:center;gap:26px;max-width:740px;margin-left:var(--band-p)}
.callout .label{font-size:var(--text-xs);font-weight:700;letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--accent-ink);margin-bottom:8px}
.callout .line{font-family:var(--font-display);font-weight:700;font-size:var(--text-lg);line-height:1.3;color:var(--brand-dark)}
.callout .sub{color:var(--text-mid);font-size:var(--text-sm);margin-top:6px}
.chev{width:44px;height:44px;border-radius:999px;background:var(--brand-accent);flex:0 0 44px;display:flex;align-items:center;justify-content:center;margin-left:auto}

/* ── grids and cards ────────────────────────────────────────────────── */
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--gap)}
.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;grid-auto-rows:1fr}
.mt-l{margin-top:44px}
.mt-m{margin-top:32px}
.sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:32px;flex-wrap:wrap}

.pcard{border-radius:var(--card-r);overflow:hidden;background:var(--off-white);display:flex;flex-direction:column}
.sec-tint .pcard{background:var(--white)}
.pcard .ph{position:relative;aspect-ratio:16/13;overflow:hidden;background:var(--brand-light)}
.pcard .ph img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .65s var(--ease-premium)}
.pcard:hover .ph img{transform:scale(1.05)}
.pcard .body{padding:22px 24px 26px}
.pcard h3{font-size:var(--text-lg);font-weight:700;color:var(--brand-dark);line-height:var(--leading-heading)}
.pcard p{color:var(--text-mid);font-size:var(--text-base);margin-top:8px;line-height:1.55}
.tag{display:inline-block;font-size:var(--text-micro);font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--accent-ink);margin-bottom:10px}
.tag.t-red{color:var(--red-ink)}
.tag.t-sky{color:var(--sky-ink)}
.tag.t-green{color:var(--green-ink)}

/* editorial split */
.split{display:grid;grid-template-columns:.85fr 1fr;gap:64px;align-items:center}
.split .ph{position:relative;border-radius:var(--photo-r);overflow:hidden;aspect-ratio:4/5;background:var(--brand-light)}
.split .ph img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.prose p{color:var(--text-mid);margin-top:18px;line-height:var(--leading-body);font-size:var(--text-md)}
.prose p.lead{color:var(--text);font-size:var(--text-lg);line-height:1.55}

/* gallery, asymmetric */
.gallery{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:190px;gap:16px}
.gi{overflow:hidden;border-radius:var(--photo-r);background:var(--brand-light);cursor:pointer;position:relative;border:none;padding:0;display:block;width:100%;text-align:left}
.gi img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .6s var(--ease-premium),filter .4s;filter:saturate(.95)}
.gi:hover img{transform:scale(1.06);filter:saturate(1.1)}
.gi-a{grid-column:1;grid-row:1 / 3}
.gi-b{grid-column:2;grid-row:1}
.gi-c{grid-column:3 / 5;grid-row:1}
.gi-d{grid-column:2;grid-row:2}
.gi-e{grid-column:3;grid-row:2}
.gi-f{grid-column:4;grid-row:2}
.gi-cap{position:absolute;left:0;right:0;bottom:0;padding:16px 18px;color:#fff;font-size:var(--text-sm);font-weight:500;background:linear-gradient(to top,rgba(0,0,0,.85) 0%,rgba(0,0,0,.55) 45%,rgba(0,0,0,0) 100%)}
.brand-ribbon{height:4px;border-radius:2px;background:linear-gradient(to right,var(--red) 0 25%,var(--sky) 25% 50%,var(--green) 50% 75%,var(--brand-accent) 75% 100%)}
.brand-ribbon.rule-hero{width:150px;margin-top:26px}

/* lightbox */
.lb{position:fixed;inset:0;z-index:1000;background:rgba(20,10,26,.94);display:none;align-items:center;justify-content:center;padding:40px}
.lb.open{display:flex}
.lb img{max-width:min(1100px,92vw);max-height:86vh;width:auto;border-radius:var(--photo-r)}
.lb-cap{position:absolute;left:0;right:0;bottom:28px;text-align:center;color:rgba(255,255,255,.8);font-size:var(--text-sm);padding:0 24px}
.lb-close,.lb-prev,.lb-next{position:absolute;background:rgba(255,255,255,.12);color:#fff;border:none;width:46px;height:46px;border-radius:50%;cursor:pointer;font-size:20px;line-height:1;display:flex;align-items:center;justify-content:center}
.lb-close{top:24px;right:24px}
.lb-prev{left:24px;top:50%;transform:translateY(-50%)}
.lb-next{right:24px;top:50%;transform:translateY(-50%)}

/* tickets */
.tier-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--gap);margin-top:40px}
.band-note{color:rgba(255,255,255,.55);font-size:var(--text-sm);margin-top:26px;max-width:70ch;line-height:1.6}
.tier{background:var(--white);color:var(--text);border-radius:var(--card-r);padding:32px 30px 34px;display:flex;flex-direction:column}
.tier .nm{font-size:var(--text-xs);font-weight:700;letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--accent-ink);margin-bottom:14px}
.tier .amt{font-family:var(--font-display);font-size:var(--text-xl);font-weight:700;color:var(--brand-dark);line-height:1}
.tier .per{font-size:var(--text-sm);color:var(--text-mid);margin-top:6px}
.tier ul{margin:22px 0 26px;flex:1;display:flex;flex-direction:column;gap:9px}
.tier li{font-size:var(--text-base);color:var(--text);padding-left:20px;position:relative}
.tier li::before{content:"";position:absolute;left:0;top:7px;width:10px;height:6px;border-left:2px solid var(--brand-dark);border-bottom:2px solid var(--brand-dark);transform:rotate(-45deg)}
.tier .status{font-size:var(--text-micro);font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--green-ink);margin-bottom:12px}
.tier .status.low{color:var(--red-ink)}

/* faq */
.faq{max-width:820px}
.faq-item{border-bottom:1px solid rgba(0,0,0,.09)}
.faq-item:first-child{border-top:1px solid rgba(0,0,0,.09)}
.faq-q{width:100%;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:22px 0;background:none;border:none;cursor:pointer;font-family:var(--font-display);font-size:var(--text-lg);font-weight:700;color:var(--brand-dark);text-align:left}
.faq-icon{width:18px;height:18px;flex-shrink:0;position:relative}
.faq-icon::before,.faq-icon::after{content:"";position:absolute;background:currentColor;border-radius:1px;top:50%;left:50%}
.faq-icon::before{width:12px;height:2px;transform:translate(-50%,-50%)}
.faq-icon::after{width:2px;height:12px;transform:translate(-50%,-50%);transition:opacity .2s}
.faq-item.open .faq-icon::after{opacity:0}
.faq-a{padding:0 0 24px;max-width:70ch}
.faq-a p{font-size:var(--text-md);color:var(--text-mid);line-height:var(--leading-body)}
.faq-a[hidden]{display:none}

/* visit */
.visit{display:grid;grid-template-columns:1fr 380px;gap:56px;align-items:start}
.visit-map{position:relative;aspect-ratio:16/10;border-radius:var(--photo-r);overflow:hidden;background:var(--brand-light)}
.visit-map img,.visit-map iframe{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border:0}
.loc-block{margin-bottom:30px}
.loc-block:last-child{margin-bottom:0}
.loc-label{display:block;font-size:var(--text-xs);font-weight:700;letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--accent-ink);margin-bottom:10px}
.loc-block p,.loc-block address{font-style:normal;font-size:var(--text-md);color:var(--text);line-height:1.8}
.hours-table{border-collapse:collapse;width:100%}
.hours-table tr{border-bottom:1px solid rgba(0,0,0,.06)}
.hours-table tr:last-child{border-bottom:none}
.hours-table td{padding:8px 0;font-size:var(--text-base);color:var(--text)}
.hours-table td:last-child{text-align:right;color:var(--text-mid)}

/* cta finale */
.cta-finale{background:var(--white);padding:var(--section-y) 0;position:relative}
.cta-finale::before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(to right,var(--red) 0 25%,var(--sky) 25% 50%,var(--green) 50% 75%,var(--brand-accent) 75% 100%)}
.cta-inner{max-width:700px;margin:0 auto;text-align:center}
.cta-actions{display:flex;gap:16px;justify-content:center;flex-wrap:wrap;margin-top:34px}

/* news
   The card is padding-free at the top so the photograph runs to the corners,
   the same treatment as the programme cards. Every imported post has a
   featured image; one without gets the plum panel rather than a gap. */
.ncard{background:var(--white);border-radius:var(--card-r);padding:0;overflow:hidden;display:flex;flex-direction:column}
.ncard-photo{display:block}
.ncard .ph{position:relative;aspect-ratio:16/10;overflow:hidden;background:var(--brand-light)}
.ncard .ph img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .65s var(--ease-premium)}
.ncard:hover .ph img{transform:scale(1.04)}
.ncard .body{padding:24px 26px 28px;display:flex;flex-direction:column;flex:1}
.ncard .date{font-size:var(--text-xs);font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--accent-ink)}
.ncard h3{font-size:var(--text-lg);font-weight:700;margin-top:12px;color:var(--brand-dark);line-height:var(--leading-heading)}
.ncard p{color:var(--text-mid);font-size:var(--text-base);margin-top:10px;line-height:1.55}

/* footer */
.footer{background:var(--brand-deep);color:var(--text-inv);border-radius:var(--band-r) var(--band-r) 0 0;padding:74px var(--band-p) 46px;position:relative;overflow:hidden}
.footer-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1.2fr;gap:48px;position:relative;z-index:2}
.logo-chip{background:var(--white);border-radius:14px;padding:14px 18px;display:inline-block}
.logo-chip img{height:44px;width:auto}
.footer h4{font-size:var(--text-xs);letter-spacing:var(--tracking-caps);text-transform:uppercase;font-family:var(--font-body);font-weight:700;color:var(--brand-accent);margin-bottom:18px}
.footer li,.footer p{color:rgba(255,255,255,.72);font-size:var(--text-base);line-height:2}
.footer a:hover{color:var(--brand-accent)}
.footer .brandline{max-width:290px;line-height:1.7}
.footer-socials{display:flex;gap:14px;margin-top:20px}
.footer-socials a{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:var(--r-sm);background:rgba(255,255,255,.08);color:rgba(255,255,255,.7);transition:background .2s,color .2s}
.footer-socials a:hover{background:var(--brand-accent);color:var(--brand-deep)}
.legal{margin-top:48px;padding-top:22px;color:rgba(255,255,255,.45);font-size:var(--text-sm);position:relative;z-index:2}

/* WhatsApp float and mobile sticky bar */
.wa-float{position:fixed;bottom:28px;right:28px;z-index:900;width:52px;height:52px;background:#25D366;color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 16px rgba(15,23,42,.16)}
.mobile-sticky{display:none;position:fixed;bottom:0;left:0;right:0;z-index:950;background:var(--brand-dark)}
.ms-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;padding:14px 12px;color:var(--text-inv);font-size:var(--text-xs);font-weight:700;letter-spacing:.12em;text-transform:uppercase}
.ms-wa{background:#25D366;color:#fff}

/* ── forms ──────────────────────────────────────────────────────────── */
.formwrap{display:grid;grid-template-columns:1.55fr 1fr;gap:56px;align-items:start}
.formcard{background:var(--off-white);border-radius:var(--card-r);padding:44px}
.frow{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.field{margin-top:22px}
.field.full{grid-column:1 / -1}
label{display:block;font-size:var(--text-xs);font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#6B5A74;margin-bottom:9px}
input,select,textarea{width:100%;background:var(--white);border:none;border-radius:var(--r-sm);padding:16px 18px;font-family:inherit;font-size:var(--text-base);color:var(--text);-webkit-appearance:none;appearance:none}
input::placeholder,textarea::placeholder{color:#9B93A0}
select{color:#6B5A74;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' fill='none'%3E%3Cpath d='M1 1.5L6 6.5l5-5' stroke='%236B5A74' stroke-width='1.8' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 18px center}
textarea{min-height:104px;resize:vertical;line-height:1.6}
.hint{display:block;font-size:var(--text-sm);color:var(--text-mid);margin-top:8px;line-height:1.5}
.consent{background:var(--brand-light);border-radius:14px;padding:22px 24px;margin-top:26px}
.consent .t{font-family:var(--font-display);font-weight:700;color:var(--brand-dark);font-size:var(--text-base)}
.consent p{font-size:var(--text-sm);color:#5E5266;margin-top:6px;line-height:1.55}
.aside{background:var(--brand-dark);color:var(--text-inv);border-radius:var(--card-r);padding:34px;position:relative;overflow:hidden}
.aside h4{font-family:var(--font-body);font-size:var(--text-xs);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--brand-accent);margin:0 0 14px}
.aside .big{font-family:var(--font-display);font-weight:700;font-size:var(--text-xl);line-height:1.2;color:var(--brand-accent)}
.aside ul{margin:14px 0 0}
.aside li,.aside p{color:rgba(255,255,255,.75);font-size:var(--text-base);line-height:1.9}
.aside .rule{height:2px;background:linear-gradient(to right,var(--sky) 0 34%,rgba(255,255,255,.14) 34% 100%);margin:26px 0}

/* contest chips */
.chip{background:var(--off-white);border-radius:16px;padding:20px 22px;display:block}
.sec-tint .chip{background:var(--white)}
.chip.on{background:var(--brand-dark)}
.chip .nm{font-family:var(--font-display);font-weight:700;font-size:var(--text-base);line-height:1.3;color:var(--brand-dark)}
.chip.on .nm{color:var(--text-inv)}
.chip .st{font-size:var(--text-micro);font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--green-ink);margin-top:10px}
.chip .st.later{color:var(--accent-ink)}
.chip.on .st{color:var(--brand-accent)}

/* ── editor and single-post content ─────────────────────────────────── */
.entry{max-width:760px;margin:0 auto}
.entry h2{font-size:var(--text-xl);font-weight:700;color:var(--brand-dark);margin-top:40px;line-height:var(--leading-heading)}
.entry h3{font-size:var(--text-lg);font-weight:700;color:var(--brand-dark);margin-top:30px}
.entry p{margin-top:18px;color:var(--text-mid);font-size:var(--text-md);line-height:var(--leading-body)}
.entry ul,.entry ol{margin:18px 0 0 22px;color:var(--text-mid);line-height:var(--leading-body)}
.entry ul{list-style:disc}
.entry ol{list-style:decimal}
.entry li{margin-top:8px}
.entry a{color:var(--brand-dark);font-weight:700;text-decoration:underline;text-underline-offset:3px}
.entry img,.entry .wp-block-image img{border-radius:var(--photo-r);margin-top:26px}
.entry blockquote{border-left:4px solid var(--brand-accent);padding-left:22px;margin-top:26px;font-size:var(--text-lg);color:var(--text)}
.entry table{width:100%;border-collapse:collapse;margin-top:26px}
.entry th,.entry td{text-align:left;padding:10px 0;border-bottom:1px solid rgba(0,0,0,.08);font-size:var(--text-base)}
.page-hero{background:var(--brand-dark);color:var(--text-inv);border-radius:0 0 var(--band-r) var(--band-r);padding:64px var(--band-p) 72px;position:relative;overflow:hidden}
.pagination{display:flex;gap:10px;flex-wrap:wrap;margin-top:48px}
.pagination .page-numbers{display:inline-flex;align-items:center;justify-content:center;min-width:42px;height:42px;padding:0 12px;border-radius:var(--r-sm);background:var(--off-white);color:var(--brand-dark);font-size:var(--text-sm);font-weight:700}
.pagination .page-numbers.current{background:var(--brand-dark);color:var(--text-inv)}

/* ── responsive ─────────────────────────────────────────────────────── */
@media (max-width:1024px){
  .grid-4{grid-template-columns:repeat(2,1fr)}
  .formwrap,.visit{grid-template-columns:1fr;gap:36px}
  .tier-grid{grid-template-columns:1fr;max-width:440px}
}
@media (max-width:768px){
  :root{--band-r:32px;--band-p:26px;--section-y:60px;--content:100%}
  .nav{padding:16px 0 12px;gap:12px;position:relative}
  .nav-links,.nav-tel{display:none}
  .nav-links.open{display:flex;position:absolute;top:100%;left:0;right:0;flex-direction:column;align-items:flex-start;gap:0;background:var(--white);border-radius:var(--card-r);padding:12px 20px 18px;z-index:60;box-shadow:0 12px 30px rgba(26,10,34,.14)}
  .nav-links.open li{width:100%;padding:12px 0;border-bottom:1px solid rgba(0,0,0,.06)}
  .nav-links.open li:last-child{border-bottom:none}
  .nav-toggle{display:flex}
  .nav-logo{height:38px}
  .pill{padding:13px 18px;font-size:var(--text-micro)}
  .band{padding:40px 26px}
  .hero{grid-template-columns:1fr;gap:30px}
  .hero h1{font-size:38px;max-width:none}
  .hero-photo{aspect-ratio:4/3}
  .hero-photo.is-tall{aspect-ratio:4/5}
  .cd{min-width:0;flex:1;padding:12px 6px}
  .cd b{font-size:22px}
  .overlap{margin-top:-34px}
  .callout{margin-left:0;padding:22px 24px;gap:16px;align-items:flex-start}
  .chev{width:38px;height:38px;flex:0 0 38px;margin-top:2px}
  .grid-3,.tier-grid{grid-template-columns:1fr;gap:16px}
  .grid-4{grid-template-columns:1fr;gap:12px}
  .split{grid-template-columns:1fr;gap:26px}
  .split .ph{aspect-ratio:4/3}
  .gallery{grid-template-columns:repeat(2,1fr);grid-auto-rows:auto;gap:12px}
  .gi-a,.gi-b,.gi-c,.gi-d,.gi-e,.gi-f{grid-column:auto;grid-row:auto;aspect-ratio:1}
  .gi-c,.gi-f{grid-column:span 2;aspect-ratio:16/9}
  .formcard{padding:26px 22px}
  .frow{grid-template-columns:1fr;gap:0}
  .aside{padding:26px 24px}
  .footer{padding:48px 26px 34px;border-radius:32px 32px 0 0}
  .footer-grid{grid-template-columns:1fr;gap:30px}
  .page-hero{padding:44px 26px 50px;border-radius:0 0 32px 32px}
  .texture{font-size:170px}
  .texture.left{font-size:150px}
  .wa-float{display:none}
  .mobile-sticky{display:flex}
  body{padding-bottom:52px}
}

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