:root{
  --red:#A32638; --red-dark:#7E1C2A; --red-soft:#F3D9DC;
  --navy:#33305E; --navy-dark:#242143;
  --gold:#F0B429; --gold-dark:#B9820C;
  --bg:#FBF8F2; --surface:#FFFFFF; --surface-2:#F3EEE3;
  --ink:#241F33; --muted:#5B5670; --line:#E7E1D6;
  --focus:#B9820C;
  --shadow: 0 1px 2px rgba(36,31,51,.06), 0 8px 24px rgba(36,31,51,.08);
}
@media (prefers-color-scheme: dark){
  :root{ --bg:#1C1A2E; --surface:#262340; --surface-2:#2C2850; --ink:#F2EFE9; --muted:#BDB7D6; --line:#3B3760;
    --red:#E05468; --red-dark:#C43A50; --red-soft:#4A2430; --gold:#F5C24B;
    --shadow: 0 1px 2px rgba(0,0,0,.3), 0 12px 32px rgba(0,0,0,.45); }
}
:root[data-theme="dark"]{ --bg:#1C1A2E; --surface:#262340; --surface-2:#2C2850; --ink:#F2EFE9; --muted:#BDB7D6; --line:#3B3760;
  --red:#E05468; --red-dark:#C43A50; --red-soft:#4A2430; --gold:#F5C24B;
  --shadow: 0 1px 2px rgba(0,0,0,.3), 0 12px 32px rgba(0,0,0,.45); }
:root[data-theme="light"]{ --red:#A32638; --red-dark:#7E1C2A; --red-soft:#F3D9DC; --navy:#33305E; --navy-dark:#242143;
  --gold:#F0B429; --gold-dark:#B9820C; --bg:#FBF8F2; --surface:#FFFFFF; --surface-2:#F3EEE3;
  --ink:#241F33; --muted:#5B5670; --line:#E7E1D6;
  --shadow: 0 1px 2px rgba(36,31,51,.06), 0 8px 24px rgba(36,31,51,.08); }

*{box-sizing:border-box;}
body{margin:0; background:var(--bg); color:var(--ink); font-family:'Segoe UI', Avenir, Helvetica, Arial, sans-serif; -webkit-font-smoothing:antialiased;}
a{color:inherit;} button{font-family:inherit;} img{max-width:100%; display:block;}
h1,h2,h3,p{text-wrap:balance;}
:focus-visible{outline:3px solid var(--focus); outline-offset:2px; border-radius:4px;}


header.top{position:sticky; top:0; z-index:30; background:var(--surface); border-bottom:1px solid var(--line); box-shadow:var(--shadow);}
.top-inner{max-width:1180px; margin:0 auto; padding:.45rem 1.25rem; display:flex; align-items:center; gap:1.25rem;}
.top-inner > a{display:contents;}
.logo-mark{height:76px; width:auto; flex:none;}
.logo-color{display:block;} .logo-white{display:none;}
@media (prefers-color-scheme: dark){ .logo-color{display:none;} .logo-white{display:block;} }
:root[data-theme="dark"] .logo-color{display:none;} :root[data-theme="dark"] .logo-white{display:block;}
:root[data-theme="light"] .logo-color{display:block;} :root[data-theme="light"] .logo-white{display:none;}

nav.tabs{display:flex; align-items:center; gap:1.4rem; flex:1;}
nav.tabs .tab-btn{color:var(--muted); font-size:.86rem; font-weight:600; text-decoration:none; padding:.4rem .1rem; position:relative; white-space:nowrap;}
nav.tabs .tab-btn:hover{color:var(--ink);}
nav.tabs .tab-btn.active{color:var(--red);}
nav.tabs .tab-btn.active::after{content:""; position:absolute; left:0; right:0; bottom:-.7rem; height:2px; background:var(--red);}

.search-wrap{position:relative; width:min(240px,100%); margin-left:auto; flex:none;}
.search-input{width:100%; padding:.5rem .8rem .5rem 2rem; border-radius:999px; border:1px solid var(--line); background:var(--surface-2); color:var(--ink); font-size:.82rem;}
.search-icon{position:absolute; left:.65rem; top:50%; transform:translateY(-50%); opacity:.55; font-size:.82rem;}
.search-results{position:absolute; top:calc(100% + 6px); right:0; background:var(--surface); border:1px solid var(--line); border-radius:12px; box-shadow:var(--shadow); max-height:60vh; overflow:auto; display:none; z-index:35; width:280px;}
.search-results.open{display:block;}
.search-row{display:flex; align-items:center; gap:.6rem; width:100%; text-align:left; padding:.6rem .8rem; text-decoration:none; color:var(--ink); border-bottom:1px solid var(--line);}
.search-row:last-child{border-bottom:0;}
.search-row:hover{background:var(--surface-2);}
.search-row .kind{font-size:.66rem; text-transform:uppercase; letter-spacing:.06em; color:var(--muted); flex:none; width:4.6rem;}
.search-empty{padding:.9rem; font-size:.85rem; color:var(--muted);}

.hamburger{display:none; background:none; border:0; cursor:pointer; padding:.4rem; flex:none;}
.hamburger span{display:block; width:20px; height:2px; background:var(--ink); margin:4px 0; border-radius:2px;}
.mobile-panel{display:none;}
@media (max-width:920px){
  nav.tabs{display:none;} .hamburger{display:block;} .search-wrap{width:auto; flex:1;}
  .logo-mark{height:58px;}
  .mobile-panel.open{display:flex; flex-direction:column; gap:.2rem; padding:.6rem 1.25rem 1rem; border-top:1px solid var(--line); background:var(--surface);}
  .mobile-panel .tab-btn{text-align:left; padding:.6rem .2rem; border-bottom:1px solid var(--line); color:var(--ink); font-size:.94rem; font-weight:600; text-decoration:none;}
  .mobile-panel .tab-btn.active{color:var(--red);}
}

.hero-banner{position:relative; color:#fff; display:flex; align-items:flex-end; overflow:hidden;}
.hero-banner::before{content:""; position:absolute; inset:0; z-index:1; background:linear-gradient(180deg, rgba(27,25,53,.35) 0%, rgba(27,25,53,.55) 55%, rgba(27,25,53,.88) 100%);}
.hero-video{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:0;}
.hero-img{position:absolute; inset:0; width:100%; height:100%; background-size:cover; z-index:0;}
@media (prefers-reduced-motion: reduce){ .hero-video{display:none;} }
.hero-inner{position:relative; z-index:1; max-width:1180px; margin:0 auto; padding:3.2rem 1.25rem 2.2rem; width:100%;}
/* Banner heights mirrored from the live site (Website/assets/css/style.css):
   .hero.has-media 560/460, .page-banner.has-media 440/360. */
.hero-tall{min-height:560px;} .hero-short{min-height:440px;} .hero-xtall{min-height:640px;}
@media (max-width:720px){ .hero-tall{min-height:460px;} .hero-short{min-height:360px;} .hero-xtall{min-height:480px;} }
.hero-eyebrow{font-size:.82rem; font-weight:700; opacity:.92; margin-bottom:.6rem;}
.hero-title{font-size:clamp(1.8rem,4.4vw,2.9rem); font-weight:800; line-height:1.14; margin:0 0 .3rem; max-width:24ch;}
.hero-title.small{font-size:clamp(1.6rem,3.6vw,2.2rem);}
.hero-sub{font-size:1rem; opacity:.92; max-width:52ch; margin:0 0 1rem; line-height:1.55;}
.hero-cta-row{display:flex; align-items:center; gap:.8rem; flex-wrap:wrap; font-size:.88rem;}
.pill-btn{display:inline-flex; align-items:center; background:var(--navy-dark); color:#fff; font-size:.76rem; font-weight:800; letter-spacing:.05em; padding:.55em 1.1em; border-radius:999px; text-decoration:none; border:1px solid rgba(255,255,255,.25);}
.scroll-hint{display:flex; align-items:center; gap:.5rem; font-size:.78rem; font-weight:600; opacity:.85; margin-top:1.6rem;}
.scroll-hint .ring{width:20px; height:20px; border:1.5px solid #fff; border-radius:50%; flex:none;}

main{max-width:1180px; margin:0 auto; padding:0 1.25rem 4rem;}
.section{padding:2.6rem 0;} .section.tight{padding:1.8rem 0;}
h2.section-title{font-size:1.5rem; font-weight:800; margin:0 0 .8rem; color:var(--ink);}
h2.section-title .sub{display:block; font-size:.85rem; font-weight:400; color:var(--muted); margin-top:.3rem;}
.body-copy{font-size:.98rem; line-height:1.7; color:var(--ink); max-width:70ch;}
.body-copy + .body-copy{margin-top:.9rem;}
.quote-card{display:inline-flex; align-items:center; gap:1.2rem; background:var(--navy); color:#fff; border-radius:14px; padding:1rem 1.3rem; box-shadow:var(--shadow); margin-top:1.4rem;}
.quote-card .name{font-weight:700; font-size:.92rem;} .quote-card .role{font-size:.78rem; opacity:.8;}
.quote-card .mark{font-size:1.6rem; color:var(--gold); font-weight:800; line-height:1;}

.stats-band{background:var(--navy-dark); color:#fff; border-radius:20px; padding:2.2rem 1.6rem; position:relative; overflow:hidden;}
.stats-band svg.wave{position:absolute; inset:0; width:100%; height:100%; opacity:.18;}
.stats-grid{position:relative; z-index:1; display:grid; grid-template-columns:repeat(auto-fit,minmax(140px,1fr)); gap:1.4rem; text-align:center;}
.stats-grid .n{font-size:2rem; font-weight:800; font-variant-numeric:tabular-nums; color:var(--gold);}
.stats-grid .l{font-size:.78rem; opacity:.85; margin-top:.2rem; text-transform:uppercase; letter-spacing:.04em;}

.feature-grid{display:grid; gap:1.1rem; grid-template-columns:repeat(auto-fit,minmax(220px,1fr));}
.feature-card{background:var(--surface); border:1px solid var(--line); border-radius:16px; padding:1.4rem 1.4rem 1.5rem; box-shadow:var(--shadow); text-align:left; text-decoration:none; color:inherit; display:block;}
.feature-card .ico{width:38px; height:38px; border-radius:10px; background:var(--red-soft); color:var(--red); display:flex; align-items:center; justify-content:center; margin-bottom:.8rem; font-size:1.1rem;}
.feature-card h3{font-size:1.02rem; font-weight:700; margin:0 0 .4rem;}
.feature-card p{font-size:.86rem; color:var(--muted); line-height:1.55; margin:0;}

.newsletter-band{background:var(--navy); color:#fff; border-radius:20px; padding:2rem 1.8rem; display:flex; flex-wrap:wrap; align-items:center; gap:1.4rem; justify-content:space-between; position:relative; overflow:hidden;}
.newsletter-band::after{content:""; position:absolute; right:-60px; bottom:-60px; width:180px; height:180px; border-radius:50%; background:rgba(255,255,255,.06);}
.newsletter-band .eyebrow2{font-size:.72rem; font-weight:800; letter-spacing:.08em; text-transform:uppercase; color:var(--gold); margin-bottom:.35rem;}
.newsletter-band h3{font-size:1.2rem; font-weight:800; margin:0; max-width:34ch;}
.newsletter-form{display:flex; gap:.5rem; position:relative; z-index:1; flex-wrap:wrap;}
.newsletter-form input{padding:.65rem 1rem; border-radius:999px; border:1px solid rgba(255,255,255,.3); background:rgba(255,255,255,.08); color:#fff; font-size:.85rem; min-width:200px;}
.newsletter-form input::placeholder{color:rgba(255,255,255,.6);}
.newsletter-note{font-size:.76rem; opacity:.8; width:100%; margin-top:.3rem;}

.chip-row{display:flex; gap:.5rem; flex-wrap:wrap; margin-bottom:1.2rem;}
.chip{border:1px solid var(--line); background:var(--surface); color:var(--muted); font-size:.8rem; font-weight:600; padding:.4em 1em; border-radius:999px; cursor:pointer;}
.chip.active{background:var(--red); border-color:var(--red); color:#fff;}
.chip:hover:not(.active){border-color:var(--red);}
.filter-block{margin-bottom:1.6rem;}
.filter-label{font-size:.72rem; text-transform:uppercase; letter-spacing:.06em; color:var(--muted); margin-bottom:.5rem; font-weight:700;}

.grid{display:grid; gap:1rem; grid-template-columns:repeat(auto-fill, minmax(240px,1fr));}
.card{background:var(--surface); border:1px solid var(--line); border-radius:16px; overflow:hidden; text-align:left; text-decoration:none; color:inherit; display:flex; flex-direction:column; box-shadow:var(--shadow); transition:transform .15s ease;}
.card:hover{transform:translateY(-2px);}
.county-card{padding:1.3rem 1.3rem 1.1rem;}
.county-card .county-name{font-size:1.1rem; font-weight:800; color:var(--navy);}
@media (prefers-color-scheme: dark){ .county-card .county-name{color:#fff;} }
:root[data-theme="dark"] .county-card .county-name{color:#fff;}
.county-card .county-meta{font-size:.8rem; color:var(--muted); margin-top:.3rem;}
.county-card .county-cta{margin-top:.8rem; font-size:.8rem; font-weight:700; color:var(--red);}
.school-card{padding:1.2rem 1.3rem;}
.school-card .school-name{font-size:1.02rem; font-weight:700;}
.school-card .school-addr{font-size:.8rem; color:var(--muted); margin-top:.3rem;}
.school-card .school-meta{margin-top:.7rem; display:flex; align-items:center; justify-content:space-between; font-size:.78rem; color:var(--muted);}
.school-card .school-cta{font-weight:700; color:var(--red);}
.pill{display:inline-flex; align-items:center; background:var(--navy); color:#fff; font-size:.7rem; font-weight:700; padding:.3em .8em; border-radius:999px;}
@media (prefers-color-scheme: dark){ .pill{background:var(--surface-2); border:1px solid var(--line);} }
:root[data-theme="dark"] .pill{background:var(--surface-2); border:1px solid var(--line);}

.thumb{height:110px; position:relative;}
.tile{width:100%; height:100%; position:relative; display:flex; align-items:flex-end; padding:.55rem .65rem; color:#fff;}
.tile .glyph{position:absolute; top:.55rem; right:.65rem; opacity:.55; width:22px; height:22px;}
.tile .cap{font-size:.68rem; font-weight:700; text-transform:uppercase; letter-spacing:.05em; opacity:.9;}
.rest-card-body{padding:.9rem 1.05rem 1.1rem; flex:1; display:flex; flex-direction:column; gap:.35rem;}
.rest-card-body .rname{font-size:.98rem; font-weight:700;}
.rest-tags{display:flex; gap:.4rem; flex-wrap:wrap; font-size:.72rem; color:var(--muted);}
.rest-tags span:not(:last-child)::after{content:"·"; margin-left:.4rem; color:var(--line);}
.rest-card-body .raddr{font-size:.76rem; color:var(--muted);}
.rest-card-body .rschool{font-size:.72rem; color:var(--red); font-weight:700; margin-top:.1rem;}
.rest-card-body .rcta{margin-top:.4rem; font-size:.78rem; font-weight:700; color:var(--red);}

.school-head{background:var(--surface); border:1px solid var(--line); border-radius:16px; padding:1.3rem 1.4rem; display:flex; flex-wrap:wrap; gap:1rem 2rem; align-items:center; justify-content:space-between; margin:.4rem 0 1.6rem;}
.school-head .addr{font-size:.85rem; color:var(--muted); margin-top:.3rem;}
.zero-note{display:flex; align-items:center; gap:.6rem; background:var(--red); color:#fff; border-radius:12px; padding:.6rem .9rem; font-size:.82rem; font-weight:600;}
.zero-note b{font-size:1.15rem;}

.rest-head{margin:.4rem 0 0;}
.rest-head .rtitle{font-size:clamp(1.4rem,3.4vw,1.9rem); font-weight:800;}
.rest-head .rsub{font-size:.9rem; color:var(--muted); margin-top:.3rem;}
.gallery{display:grid; grid-template-columns:repeat(4,1fr); gap:.6rem; margin:1.2rem 0 1.6rem;}
@media (max-width:640px){ .gallery{grid-template-columns:repeat(2,1fr);} }
.gallery .tile{aspect-ratio:4/3; border-radius:12px; overflow:hidden;}
.detail-layout{display:grid; grid-template-columns:1fr; gap:2rem; padding-bottom:2.6rem;}
@media (min-width:760px){ .detail-layout{grid-template-columns:1.3fr .9fr;} }
.menu-block h3{font-size:.78rem; text-transform:uppercase; letter-spacing:.08em; color:var(--red); border-bottom:1px solid var(--line); padding-bottom:.5rem; margin:1.6rem 0 .8rem;}
.menu-block h3:first-child{margin-top:0;}
.menu-item{padding:.7rem 0; border-bottom:1px dashed var(--line);}
.menu-item:last-child{border-bottom:0;}
.menu-item .row{display:flex; justify-content:space-between; gap:1rem; align-items:baseline;}
.menu-item .iname{font-weight:700; font-size:.96rem;}
.menu-item .price{font-weight:700; font-size:.92rem; color:var(--navy); font-variant-numeric:tabular-nums; white-space:nowrap;}
@media (prefers-color-scheme: dark){ .menu-item .price{color:var(--gold);} }
:root[data-theme="dark"] .menu-item .price{color:var(--gold);}
.menu-item .idesc{font-size:.86rem; color:var(--muted); margin-top:.2rem; line-height:1.5;}
.side-card{background:var(--surface); border:1px solid var(--line); border-radius:16px; padding:1.2rem 1.3rem; box-shadow:var(--shadow); height:fit-content; display:flex; flex-direction:column; gap:1rem;}
.donate-box{background:var(--surface-2); border-radius:12px; padding:.9rem 1rem; font-size:.85rem; line-height:1.5;}
.donate-box b{color:var(--red);}
@media (prefers-color-scheme: dark){ .donate-box b{color:var(--gold);} }
:root[data-theme="dark"] .donate-box b{color:var(--gold);}
.info-line{font-size:.86rem; display:flex; gap:.5rem;}
.info-line .k{color:var(--muted); flex:none; width:4.2rem;}
.cta-row{display:flex; gap:.6rem; flex-wrap:wrap;}
.btn{display:inline-flex; align-items:center; gap:.4rem; padding:.6rem 1rem; border-radius:999px; font-size:.84rem; font-weight:700; text-decoration:none; border:1px solid transparent; cursor:pointer;}
.btn-primary{background:var(--red); color:#fff;}
.btn-primary:hover{background:var(--red-dark);}
.btn-ghost{background:transparent; border-color:var(--line); color:var(--ink);}
.btn-ghost:hover{border-color:var(--muted);}
.btn[aria-disabled="true"]{opacity:.45; cursor:default; pointer-events:none;}
.social-row{display:flex; gap:.5rem; flex-wrap:wrap;}

.back-link{display:inline-flex; align-items:center; gap:.3rem; font-size:.85rem; font-weight:700; color:var(--muted); text-decoration:none; padding:.2rem 0; margin:1rem 0 .4rem;}
.back-link:hover{color:var(--red);}
.back-row{display:flex; flex-wrap:wrap; align-items:center; gap:0 1.4rem; margin:1rem 0 .4rem;}
.back-row .back-link{margin:0;}
#restFilters{scroll-margin-top:96px;}

.edition-card{background:var(--surface); border:1px solid var(--line); border-radius:18px; padding:1.6rem 1.7rem; box-shadow:var(--shadow); margin-bottom:1.6rem;}
.edition-top{display:flex; flex-wrap:wrap; justify-content:space-between; gap:1rem; align-items:flex-start;}
.edition-name{font-size:1.3rem; font-weight:800;}
.status-pill{background:var(--gold); color:var(--navy-dark); font-size:.72rem; font-weight:800; text-transform:uppercase; letter-spacing:.04em; padding:.35em .9em; border-radius:999px;}
.edition-dates{font-size:.9rem; color:var(--muted); margin-top:.3rem;}
.pill-link{text-decoration:none;}
.pill-link:hover,.pill-link:focus-visible{background:var(--gold); color:var(--navy-dark);}
.county-pill-row{display:flex; gap:.5rem; flex-wrap:wrap; margin-top:1rem;}
.timeline{list-style:none; margin:0; padding:0;}
.timeline li{padding:.7rem 0; border-bottom:1px solid var(--line); display:flex; justify-content:space-between; gap:1rem; font-size:.88rem;}
.timeline li:last-child{border-bottom:0;}
.timeline .ename{font-weight:700;} .timeline .estatus{color:var(--muted); font-size:.8rem;}

.participate-grid{display:grid; gap:1.4rem; grid-template-columns:1fr; margin-top:1rem;}
@media (min-width:700px){ .participate-grid{grid-template-columns:1fr 1fr;} }
.participate-card{background:var(--surface); border:1px solid var(--line); border-radius:18px; padding:1.7rem 1.8rem; box-shadow:var(--shadow); display:flex; flex-direction:column; gap:.9rem;}
.participate-card .fee{font-size:2rem; font-weight:800; color:var(--red);}
@media (prefers-color-scheme: dark){ .participate-card .fee{color:var(--gold);} }
:root[data-theme="dark"] .participate-card .fee{color:var(--gold);}
.participate-card .fee-note{font-size:.78rem; color:var(--muted);}
.participate-card ul{margin:.2rem 0 0; padding-left:1.1rem; font-size:.86rem; line-height:1.7; color:var(--ink);}
.deadline-note{font-size:.78rem; color:var(--muted); margin-top:.2rem;}

.contact-card{background:var(--surface); border:1px solid var(--line); border-radius:18px; padding:1.8rem; box-shadow:var(--shadow); max-width:520px;}
.contact-row{display:flex; gap:.8rem; align-items:flex-start; padding:.7rem 0; border-bottom:1px solid var(--line);}
.contact-row:last-of-type{border-bottom:0;}
.contact-row .k{font-size:.72rem; text-transform:uppercase; letter-spacing:.05em; color:var(--muted); width:6rem; flex:none; padding-top:.15rem;}
.contact-row .v{font-size:.92rem; font-weight:600;}
.contact-row .v a{color:var(--red); text-decoration:none;}
@media (prefers-color-scheme: dark){ .contact-row .v a{color:var(--gold);} }
:root[data-theme="dark"] .contact-row .v a{color:var(--gold);}

footer.site{background:var(--surface-2); border-top:1px solid var(--line); margin-top:3rem;}
.footer-inner{max-width:1180px; margin:0 auto; padding:2.6rem 1.25rem 1.4rem; display:grid; gap:2rem; grid-template-columns:1.2fr 1fr 1fr;}
@media (max-width:760px){ .footer-inner{grid-template-columns:1fr;} }
.footer-inner h4{font-size:.82rem; text-transform:uppercase; letter-spacing:.05em; color:var(--muted); margin:0 0 .8rem;}
.footer-links{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:.5rem;}
.footer-links a{font-size:.88rem; color:var(--ink); text-decoration:none;}
.footer-links a:hover{color:var(--red);}
.footer-contact div{font-size:.88rem; margin-bottom:.5rem;}
.footer-contact .k{color:var(--muted); font-size:.76rem; text-transform:uppercase; letter-spacing:.04em; margin-right:.4rem;}
.footer-bottom{border-top:1px solid var(--line); padding:1rem 1.25rem; max-width:1180px; margin:0 auto; display:flex; justify-content:space-between; flex-wrap:wrap; gap:.5rem; font-size:.78rem; color:var(--muted);}

/* ─────────────────────────────────────────────────────────────────────────
   Additions for the November 2026 build: countdown, county map, honest
   empty states, menu rules, roster and the announcement bar.
   ───────────────────────────────────────────────────────────────────────── */


/* Countdown ---------------------------------------------------------------- */
.countdown{display:flex; gap:.55rem; flex-wrap:wrap; margin-top:1.4rem;}
.cd-cell{background:rgba(255,255,255,.12); border:1px solid rgba(255,255,255,.28); border-radius:12px; padding:.5rem .8rem; min-width:64px; text-align:center; backdrop-filter:blur(2px);}
.cd-cell .cd-n{font-size:1.45rem; font-weight:800; line-height:1.1; font-variant-numeric:tabular-nums;}
.cd-cell .cd-l{font-size:.62rem; text-transform:uppercase; letter-spacing:.09em; opacity:.85; margin-top:.15rem;}
.cd-live{display:inline-flex; align-items:center; gap:.5rem; background:var(--gold); color:var(--navy-dark); font-weight:800; font-size:.82rem; padding:.5em 1.1em; border-radius:999px; margin-top:1.4rem;}

/* County map --------------------------------------------------------------- */
.map-layout{display:grid; grid-template-columns:minmax(0,420px) minmax(0,1fr); gap:1.4rem; align-items:start;}
@media (max-width:900px){ .map-layout{grid-template-columns:1fr;} }
.panel{background:var(--surface); border:1px solid var(--line); border-radius:16px; box-shadow:var(--shadow); overflow:hidden;}
.panel-hd{padding:.9rem 1.1rem; border-bottom:1px solid var(--line); display:flex; align-items:baseline; justify-content:space-between; gap:.8rem;}
.panel-hd h3{font-size:.72rem; font-weight:800; letter-spacing:.12em; text-transform:uppercase; margin:0; color:var(--muted);}
.panel-hd .hint{font-size:.74rem; color:var(--muted);}
.mapbox{padding:.7rem;}
svg.map{display:block; width:100%; height:auto; border-radius:10px; overflow:hidden;}
.county-shape{fill:var(--surface-2); stroke:var(--line); stroke-width:1.2;}
.county-label{font-size:11px; font-weight:800; letter-spacing:.1em; text-transform:uppercase; fill:var(--muted);}
.city-dot{fill:var(--muted); opacity:.5;}
.city-label{font-size:10px; fill:var(--muted); letter-spacing:.03em; paint-order:stroke fill; stroke:var(--surface-2); stroke-width:3px; stroke-linejoin:round;}
.pin{cursor:pointer;}
.pin .halo{fill:var(--red); opacity:.16; transition:opacity .14s;}
.pin .ring{fill:none; stroke:var(--surface); stroke-width:2;}
.pin .dot{fill:var(--red);}
.pin.on .halo, .pin:focus-visible .halo{opacity:.4;}
.pin:focus{outline:none;}
.map-water{fill:var(--bg);}
.school-mark rect{fill:var(--gold); stroke:var(--surface); stroke-width:1.5;}
.school-mark{cursor:default;}
.map-legend{display:flex; flex-wrap:wrap; gap:.4rem 1.1rem; padding:.1rem 1.1rem .9rem; font-size:.76rem; color:var(--muted);}
.map-legend span{display:inline-flex; align-items:center; gap:.45rem;}
.map-legend .lg-rest{width:10px; height:10px; border-radius:99px; background:var(--red);}
.map-legend .lg-school{width:8px; height:8px; background:var(--gold); transform:rotate(45deg); border-radius:1.5px;}
.roster-scroll{max-height:560px; overflow-y:auto;}
@media (max-width:900px){ .roster-scroll{max-height:420px;} }
.tip .t-s{color:var(--red); font-weight:600;}

.cty-hd{padding:.8rem 1.1rem .35rem; display:flex; align-items:baseline; gap:.6rem; border-bottom:1px solid var(--line);}
.cty-hd h4{font-size:.9rem; font-weight:800; margin:0;}
.cty-hd .c{font-size:.74rem; color:var(--muted); font-variant-numeric:tabular-nums;}
ol.roster{list-style:none; margin:0; padding:0;}
li.roster-row{display:grid; grid-template-columns:12px minmax(0,1fr) auto; gap:.75rem; align-items:center; padding:.6rem 1.1rem; border-bottom:1px solid var(--line); cursor:pointer; transition:background .12s; text-decoration:none; color:inherit;}
li.roster-row:last-child{border-bottom:0;}
li.roster-row:hover, li.roster-row.on{background:var(--surface-2);}
li.roster-row .r-name{font-weight:600; font-size:.92rem; line-height:1.3; min-width:0;}
li.roster-row .r-city{font-size:.76rem; color:var(--muted); display:block; font-weight:400;}
li.roster-row .r-lvl{font-size:.66rem; letter-spacing:.06em; text-transform:uppercase; font-weight:700; color:var(--muted); white-space:nowrap;}
li.roster-row .bullet{width:9px; height:9px; border-radius:99px; background:var(--red); justify-self:center;}

.tip{position:fixed; pointer-events:none; z-index:40; opacity:0; transform:translateY(3px); transition:opacity .12s, transform .12s; max-width:260px; background:var(--surface); color:var(--ink); border:1px solid var(--line); border-radius:10px; padding:.6rem .75rem; box-shadow:var(--shadow); font-size:.78rem; line-height:1.45;}
.tip.on{opacity:1; transform:translateY(0);}
.tip .t-n{display:block; font-weight:700;}
.tip .t-a{display:block; color:var(--muted); margin-top:.15rem;}

/* Honest empty states ------------------------------------------------------ */
.empty-state{background:var(--surface); border:1px dashed var(--line); border-radius:18px; padding:2.2rem 1.9rem; box-shadow:var(--shadow); max-width:64ch;}
.empty-state .es-eyebrow{font-size:.7rem; font-weight:800; letter-spacing:.1em; text-transform:uppercase; color:var(--red); margin-bottom:.6rem;}
.empty-state h3{font-size:1.2rem; font-weight:800; margin:0 0 .6rem;}
.empty-state p{font-size:.92rem; line-height:1.65; color:var(--muted); margin:0 0 .9rem; max-width:58ch;}
.empty-state p:last-of-type{margin-bottom:1.2rem;}

.notice{display:flex; gap:.8rem; align-items:flex-start; background:var(--surface-2); border-radius:12px; padding:.85rem 1rem; font-size:.85rem; line-height:1.6; color:var(--ink);}
.notice .ni{flex:none; font-size:1rem; line-height:1.4;}

/* How it works ------------------------------------------------------------- */
.steps{display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); border:1px solid var(--line); border-radius:16px; background:var(--surface); box-shadow:var(--shadow); overflow:hidden;}
.step-cell{padding:1.3rem 1.4rem; border-right:1px solid var(--line); display:flex; flex-direction:column; gap:.45rem;}
.step-cell:last-child{border-right:0;}
@media (max-width:760px){ .step-cell{border-right:0; border-bottom:1px solid var(--line);} .step-cell:last-child{border-bottom:0;} }
.step-cell .n{font-weight:800; font-size:.68rem; letter-spacing:.11em; color:var(--red); text-transform:uppercase;}
.step-cell h4{font-size:1rem; font-weight:700; margin:0;}
.step-cell p{margin:0; font-size:.86rem; color:var(--muted); line-height:1.6;}

/* Menu-rule cards ---------------------------------------------------------- */
.rule-grid{display:grid; gap:1rem; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); margin-top:1rem;}
.rule-card{background:var(--surface); border:1px solid var(--line); border-radius:16px; padding:1.3rem 1.4rem; box-shadow:var(--shadow);}
.rule-card h4{margin:0 0 .4rem; font-size:1rem; font-weight:800;}
.rule-card p{margin:0; font-size:.87rem; line-height:1.6; color:var(--muted);}
.or-note{font-size:.78rem; color:var(--muted); margin-top:.8rem;}

/* Bits --------------------------------------------------------------------- */
.lede{font-size:1.02rem; line-height:1.7; color:var(--muted); max-width:66ch; margin:0 0 1.4rem;}
.kicker{font-size:.72rem; font-weight:800; letter-spacing:.1em; text-transform:uppercase; color:var(--red); margin-bottom:.5rem;}
.photo-band{display:grid; grid-template-columns:repeat(4,1fr); gap:.5rem; margin:2rem 0;}
@media (max-width:700px){ .photo-band{grid-template-columns:repeat(2,1fr);} }
.photo-band img{aspect-ratio:4/3; object-fit:cover; border-radius:12px; width:100%;}
.bio-row{display:grid; grid-template-columns:200px 1fr; gap:1.8rem; align-items:start;}
@media (max-width:700px){ .bio-row{grid-template-columns:1fr;} }
.bio-row img{border-radius:16px; box-shadow:var(--shadow);}
.tagline{font-size:clamp(1.5rem,3.4vw,2.1rem); font-weight:800; color:var(--red); margin:.2rem 0 .6rem;}
.social-links{display:flex; gap:.7rem; align-items:center; flex-wrap:wrap;}
.social-links img{height:26px; width:26px;}
.sr-only{position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0;}

/* ── TEST BUILD additions ─────────────────────────────────────────────────── */
.test-ribbon{background:repeating-linear-gradient(135deg,#F0B429 0 14px,#F5C24B 14px 28px); color:#241F33; text-align:center; font-size:.78rem; line-height:1.45; padding:.45rem 1rem; position:relative; z-index:41;}
.test-ribbon b{letter-spacing:.08em;}

/* school cards: logo */
.sc-top{display:flex; align-items:flex-start; justify-content:space-between; gap:.6rem;}
.sc-logo{width:44px; height:44px; object-fit:contain; border-radius:10px; background:#fff; padding:3px; border:1px solid var(--line); flex:none;}

/* school page hero */
.school-hero{background:var(--surface); border:1px solid var(--line); border-radius:20px; box-shadow:var(--shadow); padding:1.4rem 1.5rem; margin:.4rem 0 1.4rem; display:flex; flex-direction:column; gap:1.1rem;}
.sh-id{display:flex; gap:1.1rem; align-items:center;}
.sh-logo{width:88px; height:88px; object-fit:contain; background:#fff; border-radius:18px; padding:6px; border:1px solid var(--line); flex:none;}
.sh-name{font-size:clamp(1.4rem,3.4vw,2rem); font-weight:800; margin:.5rem 0 0; line-height:1.15;}
.school-hero .addr{font-size:.85rem; color:var(--muted); margin-top:.35rem;}
.school-hero .addr a{color:var(--red);}
.sh-facts{display:grid; grid-template-columns:repeat(auto-fit,minmax(120px,1fr)); gap:.6rem;}
.sh-fact{background:var(--surface-2); border-radius:12px; padding:.6rem .8rem; display:flex; flex-direction:column;}
.sh-fact .k{font-size:.66rem; text-transform:uppercase; letter-spacing:.07em; color:var(--muted); font-weight:700;}
.sh-fact .v{font-size:.98rem; font-weight:800; margin-top:.15rem;}
.sh-foot{display:flex; flex-wrap:wrap; gap:.8rem 1.2rem; align-items:center; justify-content:space-between;}
@media (max-width:560px){ .sh-id{align-items:flex-start;} .sh-logo{width:64px; height:64px;} }

.about-teaser{display:block; text-decoration:none; color:inherit; background:linear-gradient(135deg,var(--navy-dark),var(--navy)); color:#fff; border-radius:18px; padding:1.4rem 1.5rem; box-shadow:var(--shadow);}
.about-teaser .at-kicker{font-size:.72rem; font-weight:800; letter-spacing:.1em; text-transform:uppercase; color:var(--gold); margin-bottom:.5rem;}
.about-teaser p{margin:0 0 .8rem; font-size:.96rem; line-height:1.65; max-width:78ch; opacity:.95;}
.about-teaser .at-cta{font-size:.84rem; font-weight:700; color:var(--gold);}

/* restaurant cards */
.rc-media{height:96px; background:linear-gradient(135deg,var(--t1),var(--t2)); display:flex; align-items:center; justify-content:center; gap:.4rem; font-size:2rem; position:relative;}
.rc-media > span:not(.rc-count){filter:drop-shadow(0 2px 3px rgba(0,0,0,.15));}
.rc-count{position:absolute; left:.6rem; bottom:.5rem; font-size:.66rem; font-weight:800; letter-spacing:.04em; background:rgba(255,255,255,.85); color:#241F33; border-radius:999px; padding:.2em .65em;}
.rest-card-body .rloc{font-size:.78rem; font-weight:600; color:var(--muted); margin-top:-.2rem;}
.filter-count{font-size:.8rem; color:var(--muted); font-weight:700;}
.school-select{font:inherit; font-size:.86rem; padding:.5rem .8rem; border-radius:12px; border:1px solid var(--line); background:var(--surface); color:var(--ink); margin-bottom:1.2rem; max-width:100%;}

/* restaurant page */
.rloc-lg{font-size:1rem; font-weight:700; color:var(--red); margin-top:.15rem;}
.menu-hd{display:flex; align-items:center; justify-content:space-between; gap:.8rem; flex-wrap:wrap; margin-bottom:.9rem;}
.menu-hd h2{font-size:1.2rem; font-weight:800; margin:0;}
.fmt-pill{font-size:.72rem; font-weight:800; letter-spacing:.04em; background:var(--surface-2); border:1px solid var(--line); border-radius:999px; padding:.3em .8em; color:var(--muted);}
.dish-list{display:flex; flex-direction:column; gap:.8rem;}
.dish{display:grid; grid-template-columns:112px minmax(0,1fr); gap:1rem; background:var(--surface); border:1px solid var(--line); border-radius:16px; padding:.7rem; box-shadow:var(--shadow);}
.dish-tile{aspect-ratio:1/1; border-radius:12px; background:radial-gradient(circle at 30% 25%,var(--t1),var(--t2)); display:flex; align-items:center; justify-content:center; font-size:3rem;}
.dish-tile span{filter:drop-shadow(0 3px 4px rgba(0,0,0,.18));}
.dish-body{padding:.2rem .3rem .2rem 0; display:flex; flex-direction:column; gap:.3rem; min-width:0;}
.dish-body .row{display:flex; justify-content:space-between; gap:1rem; align-items:baseline;}
.dish-body .iname{font-weight:800; font-size:1rem;}
.dish-body .price{font-weight:800; font-size:1rem; color:var(--navy); font-variant-numeric:tabular-nums; white-space:nowrap;}
@media (prefers-color-scheme: dark){ .dish-body .price{color:var(--gold);} }
:root[data-theme="dark"] .dish-body .price{color:var(--gold);}
:root[data-theme="light"] .dish-body .price{color:var(--navy);}
.dish-body .idesc{font-size:.87rem; color:var(--muted); line-height:1.5;}
.dish-tags{display:flex; gap:.35rem; flex-wrap:wrap; margin-top:.15rem;}
.svc{font-size:.66rem; font-weight:800; letter-spacing:.05em; text-transform:uppercase; border-radius:999px; padding:.25em .7em; background:var(--surface-2); color:var(--muted); border:1px solid var(--line);}
.svc-veg{background:#E4F1E4; color:#2E6B35; border-color:#C4E0C6;}
.svc-asis{text-transform:none; letter-spacing:.02em;}
.svc-code{background:var(--red-soft); color:var(--red); border-color:var(--red-soft); text-transform:none; letter-spacing:.02em;}
@media (prefers-color-scheme: dark){ .svc-veg{background:#23402A; color:#A8DDB0; border-color:#2F5A38;} }
:root[data-theme="dark"] .svc-veg{background:#23402A; color:#A8DDB0; border-color:#2F5A38;}
:root[data-theme="light"] .svc-veg{background:#E4F1E4; color:#2E6B35; border-color:#C4E0C6;}
@media (max-width:520px){ .dish{grid-template-columns:84px minmax(0,1fr); gap:.75rem;} .dish-tile{font-size:2.3rem;} }
.menu-foot{font-size:.8rem; color:var(--muted); line-height:1.6; margin-top:1rem;}
.school-link{display:flex; gap:.8rem; align-items:center; text-decoration:none; color:inherit; background:var(--surface-2); border-radius:14px; padding:.75rem .85rem;}
.school-link img{width:52px; height:52px; object-fit:contain; background:#fff; border-radius:10px; padding:3px; flex:none;}
.school-link .k{display:block; font-size:.66rem; text-transform:uppercase; letter-spacing:.07em; color:var(--muted); font-weight:700;}
.school-link b{display:block; font-size:.95rem; line-height:1.3;}
.school-link .mi{display:block; font-size:.76rem; color:var(--red); font-weight:700; margin-top:.15rem;}
.info-line a{color:var(--red);}
.side-sub{border-top:1px solid var(--line); padding-top:.9rem; display:flex; flex-direction:column; gap:.45rem;}
.side-sub .k{font-size:.66rem; text-transform:uppercase; letter-spacing:.07em; color:var(--muted); font-weight:700;}
.sib{display:flex; flex-direction:column; text-decoration:none; color:inherit; font-size:.82rem; padding:.35rem 0; border-bottom:1px dashed var(--line);}
.sib:last-child{border-bottom:0;}
.sib span{color:var(--muted); font-size:.76rem;}
.sib:hover b{color:var(--red);}

/* "More about this school" --------------------------------------------------- */
.about-hero{background:linear-gradient(135deg,var(--navy-dark) 0%,var(--navy) 60%,#4A3F7A 100%); color:#fff; border-radius:24px; padding:2rem 1.6rem 1.4rem; margin:.4rem 0 1.8rem; position:relative; overflow:hidden; box-shadow:var(--shadow);}
.about-hero::after{content:""; position:absolute; right:-80px; top:-80px; width:260px; height:260px; border-radius:50%; background:rgba(240,180,41,.10);}
.ah-inner{display:flex; gap:1.4rem; align-items:center; position:relative; z-index:1;}
.ah-logo{width:118px; height:118px; border-radius:26px; background:#fff; padding:10px; flex:none; box-shadow:0 8px 24px rgba(0,0,0,.25);}
.ah-logo img{width:100%; height:100%; object-fit:contain;}
.ah-text h1{font-size:clamp(1.6rem,4vw,2.5rem); font-weight:800; margin:.5rem 0 0; line-height:1.1;}
.ah-pills{display:flex; gap:.4rem; flex-wrap:wrap;}
.ah-pill{font-size:.68rem; font-weight:800; letter-spacing:.06em; text-transform:uppercase; background:rgba(255,255,255,.14); border:1px solid rgba(255,255,255,.22); border-radius:999px; padding:.3em .8em;}
.ah-headline{font-size:1.08rem; font-weight:700; color:var(--gold); margin:.5rem 0 0; font-style:italic;}
.ah-sub{font-size:.86rem; opacity:.82; margin:.45rem 0 0;}
.ah-facts{position:relative; z-index:1; display:grid; grid-template-columns:repeat(auto-fit,minmax(118px,1fr)); gap:.6rem; margin-top:1.5rem;}
.af{background:rgba(255,255,255,.09); border:1px solid rgba(255,255,255,.14); border-radius:14px; padding:.7rem .85rem;}
.af-v{font-size:1.15rem; font-weight:800; color:#fff; line-height:1.2;}
.af-k{font-size:.66rem; text-transform:uppercase; letter-spacing:.08em; opacity:.75; margin-top:.2rem;}
@media (max-width:600px){ .ah-inner{flex-direction:column; align-items:flex-start;} .ah-logo{width:92px; height:92px;} }

.about-layout{display:grid; grid-template-columns:1fr; gap:1.6rem;}
@media (min-width:900px){ .about-layout{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);} }
.about-main{display:flex; flex-direction:column; gap:1.6rem; min-width:0;}
.about-side{display:flex; flex-direction:column; gap:1rem; min-width:0;}
@media (min-width:900px){ .about-side{position:sticky; top:120px; align-self:start;} }
.ab-lede{font-size:1.05rem; line-height:1.75; margin:0; max-width:70ch;}
.ab-h{font-size:1.2rem; font-weight:800; margin:0 0 .8rem;}
.mv-grid{display:grid; gap:1rem; grid-template-columns:1fr;}
@media (min-width:640px){ .mv-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));} }
.mv-card{background:var(--surface); border:1px solid var(--line); border-left:5px solid var(--red); border-radius:16px; padding:1.1rem 1.2rem; box-shadow:var(--shadow);}
.mv-card.mv-vision{border-left-color:var(--gold);}
.mv-k{font-size:.7rem; font-weight:800; letter-spacing:.1em; text-transform:uppercase; color:var(--red); margin-bottom:.4rem;}
.mv-vision .mv-k{color:var(--gold-dark);}
@media (prefers-color-scheme: dark){ .mv-vision .mv-k{color:var(--gold);} }
:root[data-theme="dark"] .mv-vision .mv-k{color:var(--gold);}
.mv-card p{margin:0; font-size:.92rem; line-height:1.65;}
.pm-card{margin:0; background:var(--surface-2); border-radius:18px; padding:1.3rem 1.4rem 1.2rem 3.4rem; position:relative;}
.pm-mark{position:absolute; left:1rem; top:.4rem; font-size:3.4rem; font-weight:800; color:var(--red); line-height:1;}
.pm-card blockquote{margin:0; font-size:1rem; line-height:1.7; font-style:italic;}
.pm-card figcaption{margin-top:.7rem; font-size:.8rem; font-weight:700; color:var(--muted);}
.prog-grid{display:grid; gap:.8rem; grid-template-columns:repeat(auto-fill,minmax(230px,1fr));}
.prog{background:var(--surface); border:1px solid var(--line); border-radius:14px; padding:1rem 1.1rem; box-shadow:var(--shadow);}
.prog h4{margin:0 0 .35rem; font-size:.95rem; font-weight:800;}
.prog p{margin:0; font-size:.84rem; line-height:1.55; color:var(--muted);}
ul.awards{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:.5rem;}
ul.awards li{display:flex; gap:.7rem; align-items:flex-start; background:var(--surface); border:1px solid var(--line); border-radius:12px; padding:.65rem .85rem; font-size:.9rem; line-height:1.5;}
.aw-ico{color:var(--gold-dark); font-size:1rem; line-height:1.4; flex:none;}
@media (prefers-color-scheme: dark){ .aw-ico{color:var(--gold);} }
:root[data-theme="dark"] .aw-ico{color:var(--gold);}
.life-grid{display:grid; gap:1.2rem; grid-template-columns:1fr;}
@media (min-width:700px){ .life-grid{grid-template-columns:1fr 1fr;} }
.chips-h{margin:0 0 .5rem; font-size:.78rem; text-transform:uppercase; letter-spacing:.08em; color:var(--muted);}
.tag-cloud{display:flex; flex-wrap:wrap; gap:.4rem;}
.tag-cloud span{font-size:.8rem; background:var(--surface); border:1px solid var(--line); border-radius:999px; padding:.3em .8em;}
.kv-list{background:var(--surface); border:1px solid var(--line); border-radius:16px; box-shadow:var(--shadow); overflow:hidden;}
.kv{display:grid; grid-template-columns:minmax(0,11rem) minmax(0,1fr); gap:1rem; padding:.75rem 1rem; border-bottom:1px solid var(--line); font-size:.88rem; line-height:1.55;}
.kv:last-child{border-bottom:0;}
.kv-k{font-weight:800; color:var(--muted); font-size:.78rem; text-transform:uppercase; letter-spacing:.05em; padding-top:.1rem;}
@media (max-width:560px){ .kv{grid-template-columns:1fr; gap:.2rem;} }
.side-box{background:var(--surface); border:1px solid var(--line); border-radius:16px; padding:1.1rem 1.2rem; box-shadow:var(--shadow); display:flex; flex-direction:column; gap:.55rem;}
.side-box h3{margin:0 0 .2rem; font-size:.74rem; font-weight:800; letter-spacing:.1em; text-transform:uppercase; color:var(--red);}
.side-box p{margin:0; font-size:.86rem; line-height:1.55; color:var(--muted);}
.side-box .btn{align-self:flex-start;}
.bs-row{display:flex; justify-content:space-between; gap:1rem; font-size:.86rem; padding:.35rem 0; border-bottom:1px dashed var(--line);}
.bs-row:last-child{border-bottom:0;}
.bs-row span{color:var(--muted); flex:none;}
.bs-row b{text-align:right;}
.ct{display:grid; grid-template-columns:5.2rem minmax(0,1fr); gap:.5rem; font-size:.86rem; line-height:1.5;}
.ct .k{color:var(--muted);}
.ct a{color:var(--red);}
.ld{display:flex; flex-direction:column; font-size:.86rem; padding:.3rem 0; border-bottom:1px dashed var(--line);}
.ld:last-child{border-bottom:0;}
.ld span{color:var(--muted); font-size:.78rem;}
.po-box{background:var(--red-soft); border-color:transparent;}
.po-box p{color:var(--ink);}
.soc-row{display:flex; gap:.5rem; flex-wrap:wrap;}
.soc-row img{width:34px; height:34px;}
.soc-txt{font-size:.8rem; font-weight:700; border:1px solid var(--line); border-radius:999px; padding:.35em .8em; text-decoration:none;}
.rest-strip{background:var(--surface); border:1px solid var(--line); border-radius:20px; padding:1.4rem 1.5rem; box-shadow:var(--shadow); display:flex; flex-direction:column; gap:1rem;}
.rest-strip h3{margin:0; font-size:1.1rem; font-weight:800; max-width:60ch;}
.rs-chips{display:flex; flex-wrap:wrap; gap:.45rem;}
.rs-chip{font-size:.8rem; font-weight:600; text-decoration:none; background:var(--surface-2); border:1px solid var(--line); border-radius:999px; padding:.35em .85em;}
.rs-chip:hover{border-color:var(--red); color:var(--red);}
.rest-strip .btn{align-self:flex-start;}
.source-note{font-size:.8rem; color:var(--muted); line-height:1.6; max-width:80ch;}
.source-note a{color:var(--red);}
.rest-head{margin-bottom:1.6rem;}

/* ── Real restaurant media ─────────────────────────────────────────────────── */
.rc-banner{position:relative; height:150px; background:linear-gradient(135deg,var(--t1),var(--t2)); overflow:visible; margin-bottom:22px;}
.rc-banner-img{width:100%; height:100%; object-fit:cover; display:block;}
.rc-banner::after{content:""; position:absolute; inset:0; background:linear-gradient(180deg,rgba(0,0,0,0) 55%,rgba(0,0,0,.28)); pointer-events:none;}
.rc-banner-logo{position:absolute; left:14px; bottom:-20px; width:58px; height:58px; border-radius:14px; background:#fff; border:1px solid var(--line); box-shadow:0 4px 12px rgba(0,0,0,.14); display:flex; align-items:center; justify-content:center; padding:6px; z-index:1;}
.rc-banner-logo img{max-width:100%; max-height:100%; object-fit:contain;}
.rc-banner-logo-txt, .rh-banner-logo-txt{font-weight:800; font-size:1.5rem; color:var(--navy);}
.rc-dishes{display:flex; align-items:center; gap:.5rem; font-size:.74rem; font-weight:700; color:var(--muted);}
.rc-emoji{font-size:.95rem; letter-spacing:.08em;}

.rest-hero{position:relative; margin:.4rem 0 1.8rem;}
.rh-banner{position:relative; height:clamp(200px,34vw,360px); border-radius:22px; background:linear-gradient(135deg,var(--t1),var(--t2)); box-shadow:var(--shadow);}
.rh-banner-img{width:100%; height:100%; object-fit:cover; border-radius:22px; display:block;}
.rh-banner::after{content:""; position:absolute; inset:0; border-radius:22px; background:linear-gradient(180deg,rgba(0,0,0,0) 50%,rgba(0,0,0,.35)); pointer-events:none;}
.rh-banner-logo{position:absolute; left:24px; bottom:-42px; width:108px; height:108px; border-radius:24px; background:#fff; border:1px solid var(--line); box-shadow:0 8px 24px rgba(0,0,0,.18); display:flex; align-items:center; justify-content:center; padding:10px; z-index:1;}
.rh-banner-logo img{max-width:100%; max-height:100%; object-fit:contain;}
.rh-text{padding:.9rem 0 0 150px; min-height:56px;}
.rh-text .rtitle{font-size:clamp(1.4rem,3.4vw,2rem); font-weight:800; line-height:1.15;}
.rh-text .rsub{font-size:.9rem; color:var(--muted); margin-top:.3rem;}
@media (max-width:600px){
  .rh-banner-logo{width:80px; height:80px; left:16px; bottom:-34px; border-radius:18px;}
  .rh-text{padding:2.8rem 0 0 0;}
}

.dish-photo{aspect-ratio:1/1; border-radius:12px; overflow:hidden; background:var(--surface-2);}
.dish-photo img{width:100%; height:100%; object-fit:cover; display:block;}
.dish{grid-template-columns:136px minmax(0,1fr);}
@media (max-width:520px){ .dish{grid-template-columns:96px minmax(0,1fr);} }
.chip .chip-n{display:inline-block; min-width:1.4em; margin-left:.3em; padding:0 .35em; border-radius:999px; background:var(--surface-2); color:var(--muted); font-size:.7rem; font-weight:800; text-align:center;}
.chip.active .chip-n{background:rgba(255,255,255,.25); color:#fff;}
/* School chips are the primary filter: 30% larger than the county/cuisine chips
   (.chip is .8rem with em-based padding, so scaling font-size scales the whole chip). */
.chip-row-lg .chip{font-size:1.04rem;}
.rc-dishes{flex-wrap:wrap; row-gap:.15rem;}
.rc-dishes > span{white-space:nowrap;}

/* Per-location terms: hours, days, or a different donation rate. Meant to be
   read, not to alarm: a red "please read" strip over a warm amber panel. The
   strip carries the urgency so the body can stay friendly — a fully red box
   reads as an error, which is the opposite of the intent. */
.disclosure{background:rgba(240,180,41,.22); border:1px solid rgba(185,130,12,.5);
  border-radius:12px; overflow:hidden; margin-bottom:1rem;
  font-size:.9rem; line-height:1.55; color:var(--ink);}
.disclosure .d-strip{background:var(--red); color:#fff; font-size:.68rem; font-weight:800;
  letter-spacing:.1em; text-transform:uppercase; padding:.45em .95em;}
.disclosure .d-body{display:flex; gap:.7rem; align-items:flex-start; padding:.85rem 1.05rem;}
.disclosure b{font-weight:800;}
.disclosure .d-ico{flex:none; font-size:1.15rem; line-height:1.3; color:var(--gold-dark);}
@media (prefers-color-scheme: dark){
  .disclosure{background:rgba(245,194,75,.16); border-color:rgba(245,194,75,.42);}
  .disclosure .d-ico{color:var(--gold);}
}
:root[data-theme="dark"] .disclosure{background:rgba(245,194,75,.16); border-color:rgba(245,194,75,.42);}
:root[data-theme="dark"] .disclosure .d-ico{color:var(--gold);}

.side-note{background:rgba(240,180,41,.13); border-radius:12px; padding:.75rem .9rem;
  font-size:.82rem; line-height:1.5; color:var(--ink);}
.side-note b{font-weight:800;}

.rc-flag{display:inline-block; margin-top:.4rem; font-size:.68rem; font-weight:800;
  letter-spacing:.04em; text-transform:uppercase; padding:.3em .75em; border-radius:999px;
  background:rgba(240,180,41,.34); border:1px solid rgba(185,130,12,.6); color:var(--red-dark);}
@media (prefers-color-scheme: dark){ .rc-flag{background:rgba(245,194,75,.2); color:var(--gold);} }
:root[data-theme="dark"] .rc-flag{background:rgba(245,194,75,.2); color:var(--gold);}

/* ── partner band ────────────────────────────────────────────────────────────
   One band, on every page, just above the footer. The tier columns are a grid
   with 1px rules between them (the sample post's look) and each logo sits on
   its own white plate: the marks belong to other people, most are dark ink on
   transparency, and the site's dark mode would swallow them otherwise.
   --sp-h is the logo box height; a per-logo --sp-scale (set in
   data/sponsors.py) nudges one mark up or down so a round badge and a
   three-line wordmark can sit beside a plain wordmark without one shouting. */
/* --sp-h lives on :root, not on .sponsor-band, because .sp-logo is reused by
   the About page's partner cards. Scoped to the band it resolved to nothing
   there, calc() fell over, and the logos rendered at their natural size. */
:root{ --sp-h:34px; }
.sponsor-band{background:var(--surface); border-top:1px solid var(--line); border-bottom:1px solid var(--line);
  padding:1.6rem 1.25rem 1.5rem;}
.rule-card .sp-logo{--sp-h:38px; align-self:flex-start;}
.sponsor-band.big{--sp-h:44px; padding:2.3rem 1.25rem 2rem;}
.sp-title{max-width:1180px; margin:0 auto .15rem; font-size:.72rem; font-weight:800; letter-spacing:.14em;
  text-transform:uppercase; color:var(--muted); text-align:center;}
.sponsor-band.big .sp-title{font-size:.8rem; margin-bottom:.4rem;}
.sp-cols{max-width:1180px; margin:0 auto; display:flex; flex-wrap:wrap; justify-content:center; align-items:stretch; gap:0;}
.sp-col{flex:0 1 auto; padding:.9rem 1.6rem .2rem; display:flex; flex-direction:column; align-items:center;
  justify-content:flex-start; gap:.7rem; border-left:1px solid var(--line);}
.sp-col:first-child{border-left:0;}
.sp-tier{font-size:.63rem; font-weight:800; letter-spacing:.13em; text-transform:uppercase; color:var(--navy);
  text-align:center; white-space:nowrap;}
.sponsor-band.big .sp-tier{font-size:.68rem;}
@media (prefers-color-scheme: dark){ .sp-tier{color:var(--gold);} }
:root[data-theme="dark"] .sp-tier{color:var(--gold);}
:root[data-theme="light"] .sp-tier{color:var(--navy);}
.sp-row{display:flex; flex-wrap:wrap; justify-content:center; align-items:center; gap:.85rem; flex:1;}
/* min-height, not height: a per-logo --sp-scale above 1 (a round badge, a
   wordmark with a tagline under it) has to be able to grow its plate rather
   than spill out of it. */
.sp-logo{display:flex; align-items:center; justify-content:center; background:#fff; border:1px solid var(--line);
  border-radius:10px; padding:.5rem .85rem; min-height:calc(var(--sp-h) + 1.35rem); transition:transform .15s, box-shadow .15s;}
.sp-logo:hover{transform:translateY(-2px); box-shadow:var(--shadow);}
.sp-logo img{height:calc(var(--sp-h) * var(--sp-scale, 1)); width:auto; max-width:190px; object-fit:contain;}
.sp-note{max-width:1180px; margin:1.1rem auto 0; font-size:.72rem; color:var(--muted); text-align:center; font-style:italic;}
@media (max-width:820px){
  /* The vertical rules stop working once the columns stack, so they become a
     single hairline between rows. */
  .sp-cols{flex-direction:column; gap:0;}
  .sp-col{border-left:0; border-top:1px solid var(--line); padding:1rem .5rem .9rem; width:100%;}
  .sp-col:first-child{border-top:0;}
  .sponsor-band{--sp-h:30px;} .sponsor-band.big{--sp-h:34px;}
  .sp-logo img{max-width:150px;}
}

/* Prix-fixe menus: one block per service, courses with "choose one" */
.prix{display:flex; flex-direction:column; gap:1.6rem;}
.prix-svc{display:flex; flex-direction:column; gap:.6rem;}
.prix-hd{display:flex; justify-content:space-between; align-items:baseline; gap:1rem; border-bottom:2px solid var(--line); padding-bottom:.4rem;}
.prix-hd h3{margin:0; font-size:1.25rem;}
.prix-hd .price{font-weight:800; font-size:1.25rem; color:var(--navy); white-space:nowrap;}
.prix-hd .price small{font-weight:600; font-size:.75rem; color:var(--muted);}
.prix-how{margin:0; color:var(--muted); font-size:.9rem;}
.prix-course{margin:.6rem 0 .2rem; font-size:.95rem; text-transform:uppercase; letter-spacing:.05em;}
.prix-course small{text-transform:none; letter-spacing:0; font-weight:600; color:var(--muted);}
@media (prefers-color-scheme: dark){ .prix-hd .price{color:var(--gold);} }
.menu-pending{background:var(--surface-2); border:1px dashed var(--line); border-radius:16px; padding:1.2rem 1.4rem; color:var(--muted);}
.menu-pending p{margin:0;}

/* ── Next edition sign-up form (restaurants + schools pages) ─────────────── */
.interest-card{background:var(--surface); border:1px solid var(--line); border-radius:18px; padding:1.6rem 1.7rem; box-shadow:var(--shadow); max-width:820px; margin:0 auto;}
.interest-hd .body-copy{margin:.4rem 0 0;}
.interest-note{margin:.7rem 0 0; font-size:.9rem; color:var(--red);}
.interest-form{margin-top:1.4rem; display:flex; flex-direction:column; gap:1.1rem;}
.f-grid{display:grid; grid-template-columns:1fr 1fr; gap:1.1rem;}
@media (max-width:640px){ .f-grid{grid-template-columns:1fr;} .interest-card{padding:1.2rem 1rem;} }
.f-field{display:flex; flex-direction:column; gap:.35rem; min-width:0;}
.f-group{border:0; padding:0; margin:0;}
.f-field > label, .f-group legend{font-size:.86rem; font-weight:700; color:var(--ink);}
.f-group legend{padding:0; margin-bottom:.35rem;}
.f-field input[type=text], .f-field input[type=email], .f-field input[type=tel], .f-field input[type=number],
.f-field select, .f-field textarea{font:inherit; font-size:1rem; padding:.65rem .8rem; border-radius:12px; border:1px solid var(--line); background:var(--surface-2); color:var(--ink); width:100%; box-sizing:border-box;}
.f-field textarea{resize:vertical; min-height:4.5rem;}
.f-field input:focus, .f-field select:focus, .f-field textarea:focus{border-color:var(--navy); outline:3px solid var(--focus); outline-offset:1px;}
.f-hint{font-size:.78rem; color:var(--muted);}
.f-count{align-self:flex-end;}
.f-sub{font-size:.8rem; font-weight:700; color:var(--muted); margin-top:.6rem;}
.req{color:var(--red); font-weight:800;}
.opt{font-weight:400; color:var(--muted); font-size:.78rem;}
.f-err{font-size:.8rem; font-weight:700; color:var(--red); min-height:0;}
.f-err:empty{display:none;}
.f-field.has-err input, .f-field.has-err select, .f-field.has-err textarea{border-color:var(--red); border-width:2px;}
.f-group.has-err .f-checks, .f-group.has-err .f-schools{outline:2px solid var(--red); outline-offset:4px; border-radius:10px;}
.f-checks{display:flex; flex-wrap:wrap; gap:.4rem 1.2rem;}
.f-check{display:flex; align-items:flex-start; gap:.55rem; font-size:.9rem; cursor:pointer; line-height:1.35; padding:.3rem 0;}
.f-check input{width:1.15rem; height:1.15rem; margin:.1rem 0 0; flex:none; accent-color:var(--red);}
.f-consent{font-weight:600;}
.f-schools{display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:.4rem 1.4rem; max-height:26rem; overflow:auto; padding:.2rem .1rem;}
.f-county-hd{font-size:.72rem; font-weight:800; letter-spacing:.08em; text-transform:uppercase; color:var(--red); margin:.4rem 0 .2rem;}
.f-city{display:block; font-size:.74rem; color:var(--muted);}
.f-check .f-city{display:inline; margin-left:.35rem;}
.f-pta{margin:0 0 .5rem 1.7rem; display:flex; flex-direction:column; gap:.25rem;}
.f-pta[hidden]{display:none;}
.f-pta label{font-size:.76rem; font-weight:700;}
.f-pta input{font:inherit; font-size:.92rem; padding:.45rem .7rem; border-radius:10px; border:1px solid var(--line); background:var(--surface-2); color:var(--ink);}
.f-hp{position:absolute; left:-10000px; width:1px; height:1px; overflow:hidden;}
.f-summary{background:var(--red-soft); color:var(--ink); border:1px solid var(--red); border-radius:12px; padding:.8rem 1rem; font-size:.88rem;}
.f-summary ul{margin:.4rem 0 0; padding-left:1.2rem;}
.f-summary a{color:inherit; font-weight:700;}
.f-legend-note{font-size:.76rem; color:var(--muted); margin:0;}
.interest-form button[disabled]{opacity:.6; cursor:wait;}
.interest-thanks{margin-top:1.2rem; display:flex; gap:.9rem; align-items:center; background:var(--surface-2); border:1px solid var(--line); border-radius:14px; padding:1.1rem 1.2rem; font-size:1rem; font-weight:600;}
.interest-thanks[hidden]{display:none;}
.interest-thanks p{margin:0;}
.it-icon{flex:none; width:2.2rem; height:2.2rem; border-radius:50%; background:var(--gold); color:var(--navy-dark); display:flex; align-items:center; justify-content:center; font-weight:800;}
.interest-form[hidden]{display:none;}
#next-edition{scroll-margin-top:96px;}
.order-box{display:flex; flex-wrap:wrap; align-items:center; gap:.6rem 1rem; margin:0 0 1.2rem; padding:.9rem 1rem; border:2px solid var(--red); border-radius:14px; background:var(--surface);}
.order-box p{margin:0; flex:1 1 240px; font-size:.84rem; line-height:1.5; color:var(--ink);}
.order-box p b{color:var(--red);}
.order-box-side{margin:0;}
.dish-order{display:flex; flex-wrap:wrap; align-items:center; gap:.4rem .8rem; margin-top:.55rem;}
.dish-order a{font-size:.82rem; font-weight:800; color:var(--red); text-decoration:underline; text-underline-offset:2px;}
.no-deliv{font-size:.74rem; font-weight:800; letter-spacing:.06em; color:#fff; background:var(--red); border-radius:6px; padding:.15em .55em;}
.order-box p b{color:var(--red); font-weight:800;}
.city-grid{display:grid; grid-template-columns:repeat(auto-fill, minmax(170px, 1fr)); gap:.8rem;}
.city-card{background:var(--surface); border:1px solid var(--line); border-left:4px solid var(--red); border-radius:12px; padding:.85rem 1rem; display:flex; flex-direction:column; gap:.15rem; box-shadow:var(--shadow);}
.city-card b{font-size:1rem; font-weight:800;}
.city-card span{font-size:.8rem; color:var(--muted);}

/* ── Mobile homepage (index only; the block is hidden above 720px) ─────── */
.m-home{display:none; padding-top:1.2rem;}
.m-head h1{font-size:1.65rem; line-height:1.18; margin:.35rem 0 .6rem; color:var(--ink);}
.m-head p{margin:0; font-size:.92rem; line-height:1.55; color:var(--muted);}
.m-eyebrow{font-size:.7rem; font-weight:800; letter-spacing:.12em; text-transform:uppercase; color:var(--red);}
.m-sec{padding:1.4rem 0 .2rem; border-top:1px solid var(--line); margin-top:1.4rem;}
.m-sec h2{font-size:1rem; font-weight:800; margin:0 0 .8rem; display:flex; align-items:baseline; gap:.5rem;}
.m-sec h2 span{font-size:.76rem; font-weight:600; color:var(--muted);}
.m-chips{margin-bottom:.4rem;}
#mRestaurants{scroll-margin-top:80px;}
.m-hint{margin:-.4rem 0 .7rem; font-size:.78rem; color:var(--muted);}
.m-strip{display:flex; gap:.8rem; overflow-x:auto; overscroll-behavior-x:contain; scroll-snap-type:x mandatory;
  -webkit-overflow-scrolling:touch; padding:.2rem .1rem 1rem; max-width:100%;}
.m-rcard{flex:0 0 78%; max-width:300px; scroll-snap-align:start; background:var(--surface); border:1px solid var(--line);
  border-radius:16px; overflow:hidden; text-decoration:none; color:inherit; box-shadow:var(--shadow); display:flex; flex-direction:column;}
.m-rbody{padding:.8rem .95rem 1rem; display:flex; flex-direction:column; gap:.2rem;}
.m-rloc{font-size:.84rem; font-weight:700; color:var(--red);}
.m-rmeta{font-size:.8rem; color:var(--muted);}
.m-rflag{align-self:flex-start; margin-top:.2rem; font-size:.7rem; font-weight:800; text-transform:uppercase; letter-spacing:.04em;
  background:var(--gold); color:#241F33; border-radius:6px; padding:.15em .5em;}
.m-rschool{font-size:.8rem; font-weight:600; margin-top:.3rem;}
.m-rcard .rcta{margin-top:.4rem;}

/* ── Restaurants page on phones: cards carousel → every location → raising money for → map last ── */
@media (max-width:720px){
  .rest-sec{display:flex; flex-direction:column;}
  .rest-sec .map-layout{display:contents;}
  .rest-sec > .section-title{order:0;}
  .rest-sec #restGrid{order:1; display:flex; gap:.8rem; overflow-x:auto; overscroll-behavior-x:contain;
    scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch; padding:.2rem .1rem 1rem; max-width:100%; scroll-margin-top:80px;}
  .rest-sec #restGrid > .rest-card{flex:0 0 78%; max-width:300px; scroll-snap-align:start;}
  .rest-sec #restGrid .rc-dishes, .rest-sec #restGrid .rc-flag-pct{display:none;}
  .rest-sec .map-layout > .panel:nth-child(2){order:2; margin-top:1.2rem;}
  .rest-sec #restFilters{order:3; margin-top:1.6rem;}
  .rest-sec .map-layout > .panel:nth-child(1){order:4; margin-top:.8rem;}
}


/* Edition page photo grid (below How it works) */
.edition-gallery{display:grid; grid-template-columns:1.1fr 1fr 1fr; grid-template-rows:repeat(2,minmax(0,1fr)); gap:12px; aspect-ratio:16/9;}
.edition-gallery figure{margin:0; border-radius:16px; overflow:hidden; background:var(--surface); box-shadow:var(--shadow); min-height:0;}
.edition-gallery img{display:block; width:100%; height:100%; object-fit:cover;}
.edition-gallery .eg-tall{grid-row:span 2;}
.edition-gallery .eg-tall img{object-position:left center;}
@media (max-width:720px){
  .edition-gallery{grid-template-columns:1fr 1fr; grid-template-rows:none; aspect-ratio:auto;}
  .edition-gallery figure{aspect-ratio:4/3;}
  .edition-gallery .eg-tall{grid-column:1 / -1; grid-row:auto; aspect-ratio:4/5;}
}

/* About page intro: text left, photo right */
.about-intro{display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:clamp(1.5rem,4vw,3rem); align-items:stretch;}
.about-intro .body-copy{max-width:none; text-wrap:pretty;}
.about-intro-photo{margin:0; border-radius:16px; overflow:hidden; box-shadow:var(--shadow); background:var(--surface); min-height:320px;}
.about-intro-photo img{display:block; width:100%; height:100%; object-fit:cover; object-position:center 40%;}
@media (max-width:860px){
  .about-intro{grid-template-columns:1fr;}
  .about-intro-photo{min-height:0; aspect-ratio:1/1;}
}
