/* CampCompass Austin — warm, friendly, clean. Plain CSS, no framework. */
/* Self-hosted Google Fonts (SIL Open Font License): Plus Jakarta Sans (headings, wght 500-800) + Inter (body, wght 400-700), latin subset, variable weight */
@font-face{font-family:"Plus Jakarta Sans";font-style:normal;font-weight:500 800;font-display:swap;src:url(fonts/plus-jakarta-sans-latin.woff2) format("woff2")}
@font-face{font-family:"Inter";font-style:normal;font-weight:400 700;font-display:swap;src:url(fonts/inter-latin.woff2) format("woff2")}
@font-face{font-family:"Inter";font-style:italic;font-weight:400 700;font-display:swap;src:url(fonts/inter-italic-latin.woff2) format("woff2")}
:root{
  --bg:#fff8ee;--bg2:#fdf0e1;--card:#fff;--ink:#1d3a32;--ink2:#2f4b43;--muted:#5a625c;
  --brand:#c4512c;--brand-d:#a8421f;--coral:#e8704a;--coral-l:#ffe7dc;
  --teal:#2c6e63;--teal-d:#1f5e58;--teal-l:#e3f1ef;--sun:#f6c453;--sun-l:#fff1c4;
  --line:#efe3d2;--line2:#e5d6c1;--radius:20px;--radius-s:12px;
  --shadow:0 1px 2px rgba(60,40,20,.05),0 4px 14px rgba(60,40,20,.06);
  --shadow-h:0 2px 4px rgba(60,40,20,.06),0 14px 30px rgba(60,40,20,.11);
  --display:"Plus Jakarta Sans","Segoe UI",system-ui,-apple-system,Roboto,Helvetica,Arial,sans-serif;
  --sans:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-padding-top:84px}
body{margin:0;font-family:var(--sans);color:var(--ink);background:var(--bg);line-height:1.6;font-size:16px;-webkit-font-smoothing:antialiased}
h1,h2,h3{font-family:var(--display);font-weight:700;line-height:1.15;letter-spacing:-.015em;color:var(--ink)}
a{color:var(--teal);text-underline-offset:2px}a:hover{color:var(--brand-d)}
:focus-visible{outline:3px solid var(--brand);outline-offset:2px;border-radius:6px}
.wrap{max-width:1160px;margin:0 auto;padding:0 20px}.wrap.narrow{max-width:800px}
.ic{width:18px;height:18px;flex:none;vertical-align:-3px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:12px;top:-60px;background:var(--ink);color:#fff;padding:10px 16px;border-radius:10px;z-index:100;font-weight:700}
.skip:focus{top:10px;color:#fff}
.hidden{display:none!important}

/* header */
header.site{background:rgba(255,252,247,.92);backdrop-filter:saturate(1.4) blur(10px);-webkit-backdrop-filter:saturate(1.4) blur(10px);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:30}
header.site .wrap{display:flex;align-items:center;gap:20px;height:68px}
.logo{display:flex;align-items:center;gap:10px;font-family:var(--display);font-weight:700;font-size:1.3rem;color:var(--ink);text-decoration:none;white-space:nowrap}
.logo svg{flex:none}.logo b{color:var(--brand);font-weight:700}.logo em{font-style:normal;font-weight:500;color:var(--muted)}
.logo:hover{color:var(--ink)}
nav.top{display:flex;gap:4px;margin-left:auto}
nav.top a{text-decoration:none;font-weight:700;color:var(--ink2);font-size:.95rem;padding:8px 12px;border-radius:999px;white-space:nowrap}
nav.top a:hover{background:var(--bg2);color:var(--brand-d)}
header.site .cta{background:var(--brand);color:#fff;padding:10px 18px;border-radius:999px;font-weight:800;font-size:.95rem;text-decoration:none;white-space:nowrap;box-shadow:0 2px 0 var(--brand-d)}
header.site .cta:hover{background:var(--brand-d);color:#fff}
@media(max-width:860px){
  header.site{position:relative}
  header.site .wrap{flex-wrap:wrap;height:auto;padding-top:10px;padding-bottom:0;gap:8px 12px}
  header.site .cta{margin-left:auto;padding:8px 14px;font-size:.88rem}
  nav.top{order:3;width:calc(100% + 40px);margin:0 -20px;padding:2px 14px 8px;overflow-x:auto;scrollbar-width:none;gap:2px}
  nav.top::-webkit-scrollbar{display:none}
  nav.top a{font-size:.9rem;padding:7px 11px;background:var(--bg2)}
}
@media(max-width:420px){.logo{font-size:1.12rem;gap:8px}.logo svg{width:30px;height:30px}.logo em{display:none}}

/* hero */
.hero{position:relative;overflow:hidden;background:radial-gradient(1200px 500px at 85% -10%,#ffe1bf 0%,transparent 60%),linear-gradient(165deg,#ffeedd 0%,#fff6ea 50%,#eaf4ee 100%);padding:40px 0 76px}
.hero h1{font-size:clamp(1.9rem,4.6vw,3rem);margin:0 0 14px;max-width:30ch}
.hero .lead{font-size:1.12rem;color:var(--ink2);max-width:620px;margin:0 0 22px}
.hero .wrap{position:relative;z-index:1}
.hills{position:absolute;left:0;right:0;bottom:-1px;width:100%;height:70px;display:block}
.sun{position:absolute;width:420px;height:420px;border-radius:50%;right:-120px;top:-170px;background:radial-gradient(circle,#ffd77a 0%,#ffc85c 38%,rgba(255,200,92,0) 70%);opacity:.55;pointer-events:none}
.hero.home{padding:56px 0 96px}
.hero.home h1{max-width:none}.hero.home h1 br{display:none}.hl{white-space:nowrap}
.hl{background:linear-gradient(transparent 62%,rgba(246,196,83,.65) 62%);padding:0 .08em;border-radius:3px}
.hero-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:44px;align-items:center}
.kicker{display:inline-flex;align-items:center;gap:8px;margin:0 0 16px;background:rgba(255,255,255,.75);border:1px solid var(--line);border-radius:999px;padding:6px 14px;font-weight:800;font-size:.85rem;color:var(--ink2)}
.search{display:flex;align-items:center;gap:8px;background:#fff;border:2px solid var(--line);border-radius:999px;padding:6px 6px 6px 18px;box-shadow:var(--shadow);max-width:620px;transition:border-color .15s}
.search:focus-within{border-color:var(--coral)}
.search .ic{color:var(--muted)}
.search input{flex:1;border:0;font:inherit;font-size:1rem;padding:10px 4px;background:transparent;min-width:0;outline:none;color:var(--ink)}
.search button{border:0;background:var(--brand);color:#fff;font:inherit;font-weight:800;border-radius:999px;padding:11px 22px;cursor:pointer}
.search button:hover{background:var(--brand-d)}
.stats{display:flex;gap:8px;flex-wrap:wrap;margin:18px 0 0;padding:0;list-style:none}
.stat{background:rgba(255,255,255,.8);border:1px solid var(--line);border-radius:999px;padding:6px 13px;font-size:.88rem;color:var(--muted)}
.stat b{color:var(--ink);font-weight:800}
.signup-card{background:#fff;border-radius:24px;padding:28px;box-shadow:0 2px 6px rgba(60,40,20,.06),0 24px 48px rgba(60,40,20,.12);border:1px solid var(--line);position:relative}
.signup-card::before{content:"";position:absolute;inset:-10px 18px auto auto;width:64px;height:20px;background:rgba(246,196,83,.75);transform:rotate(6deg);border-radius:3px}
.signup-ic{width:48px;height:48px;border-radius:14px;background:var(--coral-l);color:var(--brand);display:grid;place-items:center;margin-bottom:14px}
.signup-ic .ic{width:24px;height:24px}
.signup-card h2{font-size:1.45rem;margin:0 0 8px}
.signup-card .sub{margin:0 0 16px;font-size:.98rem}
.ticks{list-style:none;margin:12px 0 0;padding:0;display:flex;gap:16px;flex-wrap:wrap;font-size:.86rem;font-weight:700;color:var(--teal-d)}
.ticks li{display:flex;align-items:center;gap:5px}.ticks .ic{width:16px;height:16px}

/* sections */
section{padding:44px 0}
section.tint{background:linear-gradient(#fdf0e1,#fff8ee 260px)}
h2{font-size:clamp(1.5rem,3vw,2rem);margin:0 0 6px}
.sec-head{margin-bottom:22px}
.eyebrow-lg{display:flex;align-items:center;gap:7px;margin:0 0 6px;color:var(--brand);font-weight:800;font-size:.82rem;text-transform:uppercase;letter-spacing:.08em}
.sub{color:var(--muted);margin:0 0 16px;max-width:680px}
.note-small{font-size:.82rem;color:var(--muted)}
.fine{margin-top:18px}

/* registration soon */
.soon{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px}
.soon .item{display:flex;gap:14px;align-items:flex-start;background:#fff;border:1px solid var(--line);border-radius:16px;padding:14px;box-shadow:var(--shadow)}
.chip{flex:none;width:58px;border-radius:12px;overflow:hidden;text-align:center;background:#fff;border:1px solid var(--line2);line-height:1.1;box-shadow:0 2px 0 var(--line)}
.chip-m{display:block;background:var(--brand);color:#fff;font-weight:800;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;padding:4px 0}
.chip-d{display:block;font-family:var(--display);font-weight:700;font-size:1.45rem;color:var(--ink);padding:3px 0 0}
.chip-y{display:block;font-size:.68rem;color:var(--muted);font-weight:700;padding:0 0 5px}
.past .chip-m{background:#9a9186}
.item-body{min-width:0}
.soon .date{font-weight:800;color:var(--brand-d);font-size:.92rem;display:flex;flex-direction:column;gap:3px;align-items:flex-start}
.soon .past .date{color:var(--muted)}
.status{background:var(--teal-l);color:var(--teal-d);border-radius:999px;padding:1px 8px;font-size:.74rem;font-weight:800}
.soon .name{font-weight:800;margin:2px 0;line-height:1.3}.soon .name a{color:var(--ink);text-decoration:none}.soon .name a:hover{color:var(--brand-d);text-decoration:underline}
.soon .note{font-size:.84rem;color:var(--muted);line-height:1.45}
.past-dates{margin-top:20px;background:rgba(255,255,255,.6);border:1px dashed var(--line2);border-radius:16px;padding:4px 16px}
.past-dates[open]{padding-bottom:16px}
.past-dates summary{cursor:pointer;padding:12px 0;list-style:none;display:flex;gap:10px;align-items:flex-start}
.past-dates summary::-webkit-details-marker{display:none}
.past-dates summary::before{content:"+";flex:none;width:24px;height:24px;border-radius:50%;background:var(--bg2);display:grid;place-items:center;font-weight:800;color:var(--brand)}
.past-dates[open] summary::before{content:"–"}
.past-dates .soon{margin-top:6px}

/* filters */
.filters{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow)}
.filters label{display:flex;flex-direction:column;font-size:.78rem;font-weight:800;color:var(--muted);gap:6px;text-transform:uppercase;letter-spacing:.05em;position:relative}
.filters label>.ic{position:absolute;left:12px;bottom:12px;width:17px;height:17px;color:var(--brand);pointer-events:none}
.filters select{appearance:none;-webkit-appearance:none;font:inherit;font-size:.96rem;font-weight:600;padding:11px 34px 11px 38px;border:1.5px solid var(--line2);border-radius:var(--radius-s);color:var(--ink);text-transform:none;letter-spacing:0;cursor:pointer;width:100%;
  background:#fffcf7 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235a625c' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") no-repeat right 11px center/16px;transition:border-color .15s,background-color .15s}
.filters select:hover{border-color:var(--coral)}
.filters label.on select{border-color:var(--brand);background-color:var(--coral-l)}
@media(max-width:900px){.filters{grid-template-columns:1fr 1fr;padding:14px;gap:10px}.filters label:last-child{grid-column:1/-1}}
.resultbar{display:flex;justify-content:space-between;align-items:center;margin:18px 2px 14px;color:var(--muted);font-size:.95rem}
.resultbar b{color:var(--ink)}
.resultbar button,.linkish{border:1.5px solid var(--line2);background:#fff;border-radius:999px;padding:7px 14px;font:inherit;font-weight:700;color:var(--ink2);cursor:pointer;font-size:.88rem}
.resultbar button:hover{border-color:var(--brand);color:var(--brand-d)}
.linkish{padding:2px 10px}
.empty-state{background:#fff;border:1px dashed var(--line2);border-radius:var(--radius);padding:28px;text-align:center}

/* cards */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(310px,1fr));gap:16px}
.card{position:relative;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:18px 18px 16px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:10px;transition:transform .18s ease,box-shadow .18s ease,border-color .18s}
.card:hover{transform:translateY(-3px);box-shadow:var(--shadow-h);border-color:var(--line2)}
.card:focus-within{border-color:var(--brand)}
.eyebrow{margin:0;color:var(--teal);font-weight:800;font-size:.74rem;text-transform:uppercase;letter-spacing:.07em}
.card h3{margin:-4px 0 0;font-size:1.2rem;line-height:1.25}
.card h3 a{color:var(--ink);text-decoration:none}
.card h3 a::after{content:"";position:absolute;inset:0;border-radius:var(--radius)}
.card h3 a:focus-visible{outline:none}.card h3 a:focus-visible::after{outline:3px solid var(--brand);outline-offset:2px}
.card:hover h3 a{color:var(--brand-d)}
.badges{display:flex;flex-wrap:wrap;gap:6px}
.badge{display:inline-flex;align-items:center;gap:5px;font-size:.8rem;font-weight:700;border-radius:999px;padding:4px 10px 4px 8px;background:#f6efe5;color:#4d453c;line-height:1.3}
.badge .ic{width:14px;height:14px}
.badge.age{background:var(--teal-l);color:var(--teal-d)}
.badge.price{background:#eaf1fb;color:#24476e}
.badge.area{background:#f6efe5;color:#5a4a36}
.badge.care{background:var(--sun-l);color:#6b4e00}
.badges.lg .badge{font-size:.9rem;padding:6px 13px 6px 10px}.badges.lg .ic{width:16px;height:16px}
.facts{font-size:.88rem;color:var(--muted);margin:0;padding:0;list-style:none;display:grid;gap:4px}
.facts li{display:flex;gap:7px;align-items:flex-start;line-height:1.45}
.facts .ic{width:15px;height:15px;margin-top:2px;color:#a39686}
.facts b{color:var(--ink2);font-weight:700}
.reg{display:flex;align-items:center;gap:8px;margin:2px 0 0;background:var(--coral-l);color:#8f3414;border-radius:var(--radius-s);padding:8px 12px;font-size:.88rem;font-weight:600}
.reg b{font-weight:800}.reg .ic{color:var(--brand)}
.reg.past{background:#f4efe8;color:var(--muted)}.reg.past .ic{color:#9a9186}
.card .more{position:relative;z-index:1;margin-top:auto;align-self:flex-start;font-weight:800;font-size:.92rem;text-decoration:none;color:var(--brand-d)}
.card .more:hover{text-decoration:underline}

/* buttons & forms */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;background:var(--brand);color:#fff;font:inherit;font-weight:800;border-radius:var(--radius-s);padding:12px 20px;cursor:pointer;text-decoration:none;box-shadow:0 2px 0 var(--brand-d);transition:background .15s,transform .1s}
.btn:hover{background:var(--brand-d);color:#fff}.btn:active{transform:translateY(1px)}
.btn.alt{background:var(--teal);box-shadow:0 2px 0 #1a4c44}.btn.alt:hover{background:var(--teal-d)}
.btn.wide{width:100%}
.btn.ghost{background:#fff;color:var(--brand-d);border:1.5px solid var(--line2);box-shadow:none}.btn.ghost:hover{border-color:var(--brand);background:var(--coral-l)}
form.nl{display:flex;gap:8px;flex-wrap:wrap}
form.nl input,form.box input,form.box select,form.box textarea{font:inherit;padding:12px 14px;border:1.5px solid var(--line2);border-radius:var(--radius-s);background:#fffcf7;flex:1;min-width:200px;color:var(--ink)}
form.nl input:focus,form.box input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(232,112,74,.2)}
form.nl .form-msg{width:100%;margin:4px 0 0}
form.nl .form-msg.ok{color:var(--teal-d);font-weight:800;font-size:.95rem;background:var(--teal-l);padding:10px 12px;border-radius:var(--radius-s)}
form.nl .form-msg.err{color:#b3261e}
form.nl.done input,form.nl.done button{display:none}
form.nl button:disabled{opacity:.6;cursor:wait}
.signup-card form.nl input{min-width:0;flex:1 1 100%}.signup-card form.nl button{flex:1 1 100%;padding:13px 20px;font-size:1.02rem}

/* page heads, detail */
.crumbs{font-size:.88rem;color:var(--muted);margin:0 0 12px}.crumbs a{color:var(--muted)}.crumbs a:hover{color:var(--brand-d)}
.page-head{background:linear-gradient(165deg,#ffeedd 0%,#fff6ea 60%,#eaf4ee 100%);padding:28px 0 30px;border-bottom:1px solid var(--line)}
.page-head h1{font-size:clamp(1.7rem,4vw,2.5rem);margin:6px 0 14px}
.detail{display:grid;grid-template-columns:minmax(0,1.75fr) minmax(0,1fr);gap:24px;margin-top:28px;align-items:start}
.side{display:grid;gap:16px;position:sticky;top:88px}
@media(max-width:860px){.detail{grid-template-columns:1fr;gap:16px}.side{display:contents}.side .reg-hl{order:-1}.side .panel{order:1}}
.panel{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:22px;box-shadow:var(--shadow)}
.panel-h{font-size:1.25rem;margin:0 0 14px}
dl.kv{display:grid;grid-template-columns:180px 1fr;margin:0}
dl.kv dt,dl.kv dd{padding:11px 0;border-top:1px solid var(--line)}
dl.kv dt:first-of-type,dl.kv dt:first-of-type+dd{border-top:0}
dl.kv dt{font-weight:800;color:var(--muted);font-size:.9rem}dl.kv dd{margin:0}
@media(max-width:560px){dl.kv{grid-template-columns:1fr}dl.kv dd{border-top:0;padding-top:0}dl.kv dt{padding-bottom:2px}}
.empty{color:#8a8075;font-style:italic}
.pill{font-size:.78rem;background:#f6efe5;border-radius:999px;padding:3px 9px;color:#5a5249;font-weight:700}
.pill.reg{background:var(--coral-l);color:#8f3414}
.reg-hl{display:flex;gap:14px;align-items:center;background:#fff;border:2px solid var(--coral);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow)}
.reg-hl.past{border-color:var(--line2)}.reg-hl.none{border:2px dashed var(--line2)}
.reg-hl p{margin:0}.reg-hl-k{font-size:.78rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--brand)}
.reg-hl.past .reg-hl-k,.reg-hl.none .reg-hl-k{color:var(--muted)}
.reg-hl-v{font-family:var(--display);font-weight:700;font-size:1.35rem;line-height:1.2}
.reg-hl-n{font-size:.82rem;color:var(--muted);margin-top:2px!important}
.remind{margin-top:16px;padding-top:16px;border-top:1px solid var(--line)}
.remind-h{margin:0 0 10px;font-size:.95rem;display:flex;gap:8px;align-items:flex-start}.remind-h .ic{color:var(--teal);margin-top:3px}
.sim-h{margin-top:40px;font-size:1.5rem}
.area-links{margin:28px 0 8px;font-weight:700}
.more-cta{margin:26px 0 0}

/* areas */
.area-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px}
.area-tile{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--line);border-radius:16px;padding:14px 16px;text-decoration:none;color:var(--ink);box-shadow:var(--shadow);transition:transform .18s,box-shadow .18s,border-color .18s}
.area-tile>.ic:not(.go){width:36px;height:36px;padding:8px;border-radius:12px;background:var(--coral-l);color:var(--brand)}
.area-tile:hover{transform:translateY(-2px);box-shadow:var(--shadow-h);border-color:var(--coral);color:var(--ink)}
.area-txt{display:flex;flex-direction:column;min-width:0;flex:1}
.area-name{font-weight:800;line-height:1.3}.area-n{font-size:.85rem;color:var(--muted)}.area-sub{font-size:.8rem;color:var(--teal-d);font-weight:700}
.area-tile .go{width:20px;height:20px;color:#c9b8a2;transition:color .15s,transform .15s}.area-tile:hover .go{color:var(--brand);transform:translateX(2px)}

/* list your camp / about */
.pricing{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px}
.pricing .panel h3{margin-top:0;font-size:1.25rem}
.panel.featured{border:2px solid var(--sun);background:linear-gradient(#fffaf0,#fff)}
.tag-featured{background:var(--sun);color:#4a3600;font-weight:800}
.soon-note{display:flex;gap:10px;align-items:flex-start;background:var(--sun-l);border:1px solid #f1dc9a;border-radius:var(--radius-s);padding:12px 14px;max-width:640px}
.soon-note .ic{color:#8a6500;margin-top:3px}
.open-note{display:flex;gap:10px;align-items:flex-start;background:var(--teal-l);border:1px solid #c3e0da;border-radius:var(--radius-s);padding:12px 14px;max-width:640px;color:var(--ink)}
.open-note .ic{color:var(--teal-d);margin-top:3px;flex:none}
form.box{display:grid;gap:10px;max-width:640px}
form.box fieldset{display:grid;gap:10px;border:0;padding:0;margin:0;min-width:0}
form.box fieldset:disabled{opacity:.55}
form.box fieldset:disabled .btn{cursor:not-allowed}
.prose{font-size:1.04rem}
.checklist{list-style:none;padding:0;margin:0 0 16px;display:grid;gap:12px}
.checklist li{display:flex;gap:10px;align-items:flex-start}
.checklist .ic{flex:none;width:24px;height:24px;padding:4px;border-radius:50%;background:var(--teal-l);color:var(--teal-d);margin-top:1px}

/* footer */
footer.site{background:var(--ink);color:#d7e3dc;padding:48px 0 32px;font-size:.92rem;margin-top:24px}
footer.site a{color:#fff3e4}footer.site a:hover{color:var(--sun)}
.foot-grid{display:grid;grid-template-columns:1.3fr 1fr 1.2fr;gap:36px}
.foot-h{font-family:var(--sans);font-size:.78rem;text-transform:uppercase;letter-spacing:.1em;color:var(--sun);margin:4px 0 12px;font-weight:800}
.logo.light{color:#fff;margin-bottom:12px}.logo.light b{color:#ffab8a}.logo.light em{color:#cfe0d6}
.foot-areas{display:flex;flex-wrap:wrap;gap:6px}
.foot-areas a{text-decoration:none;background:rgba(255,255,255,.08);border-radius:999px;padding:4px 11px;font-size:.85rem}
.foot-areas a:hover{background:rgba(255,255,255,.16)}
.foot-legal{border-top:1px solid rgba(255,255,255,.12);margin:30px 0 0;padding-top:18px;color:#b7c9bf}
footer.site :focus-visible{outline-color:var(--sun)}
@media(max-width:860px){.foot-grid{grid-template-columns:1fr;gap:20px}}

/* mobile */
@media(max-width:860px){
  .hero-grid{grid-template-columns:1fr;gap:28px}
  .hero.home{padding:34px 0 84px}
  .sun{width:300px;height:300px;right:-120px;top:-130px}
}
@media(max-width:560px){
  .wrap{padding:0 16px}
  section{padding:34px 0}
  .hero{padding:28px 0 70px}.hero.home{padding:26px 0 76px}
  .hero br{display:none}
  .hero .lead{font-size:1.02rem}
  .kicker{font-size:.78rem;padding:5px 12px}
  .search{padding:5px 5px 5px 14px}.search button{padding:10px 16px}
  .stat{font-size:.8rem;padding:5px 11px}
  .signup-card{padding:22px 18px;border-radius:20px}
  .signup-card h2{font-size:1.3rem}
  .grid{grid-template-columns:1fr;gap:12px}
  .soon{grid-template-columns:1fr}
  .card{padding:16px}
  .filters select{padding:11px 28px 11px 12px;font-size:.92rem;background-position:right 8px center}
  .filters label>.ic{display:none}
  .panel{padding:18px}
  .hills{height:46px}
  nav.top{width:calc(100% + 32px);margin:0 -16px;padding:2px 10px 8px}
}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}.card:hover,.area-tile:hover{transform:none}}

/* 2026-10-20: area groups + neighborhood chips on area pages */
.area-group-h{font-family:var(--display);font-size:1.05rem;color:var(--ink2);margin:22px 0 10px}
.area-group-h:first-child{margin-top:0}
.nbhd-chips{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 6px}
.nbhd-k{font-weight:800;color:var(--ink2);font-size:.9rem;margin-right:2px}
.nbhd-chip{border:1.5px solid var(--line2);background:#fff;border-radius:999px;padding:6px 13px;font:inherit;font-weight:700;color:var(--ink2);cursor:pointer;font-size:.88rem;line-height:1.2}
.nbhd-chip .n{font-weight:600;color:var(--muted);font-size:.8rem}
.nbhd-chip:hover{border-color:var(--teal)}
.nbhd-chip:focus-visible{outline:3px solid var(--sun);outline-offset:2px}
.nbhd-chip[aria-pressed="true"]{background:var(--teal);border-color:var(--teal);color:#fff}
.nbhd-chip[aria-pressed="true"] .n{color:#e3f1ef}
.nbhd-status{min-height:1.2em;margin:0 0 14px}
/* newsletter "Which areas?" picker (2026-10-20) */
form.nl .nl-areas{width:100%;order:2;border:1.5px solid var(--line2);border-radius:var(--radius-s);background:#fffcf7;font-size:.92rem}
form.nl button[type=submit]{order:3}form.nl .form-msg{order:4}
.nl-areas summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:6px;padding:9px 12px;font-weight:700;color:var(--ink2);min-height:44px;box-sizing:border-box}
.nl-areas summary::-webkit-details-marker{display:none}
.nl-areas summary::after{content:"";margin-left:auto;width:8px;height:8px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg) translateY(-2px);transition:transform .15s}
.nl-areas[open] summary::after{transform:rotate(-135deg) translateY(-2px)}
.nl-areas-k{color:var(--teal-d);font-weight:800}
.nl-areas-v{background:var(--teal-l);color:var(--teal-d);border-radius:999px;padding:1px 9px;font-size:.82rem;font-weight:800}
.nl-areas-opt{color:var(--ink2);font-weight:600;font-size:.78rem;opacity:.75}
.nl-areas fieldset{border:0;margin:0;padding:0 12px 10px}
.nl-areas-group{margin:4px 0 6px;font-size:.72rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--brand-d)}
.nl-area-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(128px,1fr));gap:6px;margin-bottom:8px}
.nl-area{display:flex;align-items:center;gap:7px;padding:6px 9px;border:1.5px solid var(--line2);border-radius:999px;background:#fff;cursor:pointer;font-weight:700;font-size:.86rem;color:var(--ink);line-height:1.2;min-height:36px;box-sizing:border-box}
form.nl .nl-area input{width:16px;height:16px;min-width:0;flex:none;margin:0;padding:0;border:0;accent-color:var(--brand)}
.nl-area:has(input:checked){border-color:var(--brand);background:var(--coral-l)}
.nl-area:focus-within{box-shadow:0 0 0 3px rgba(232,112,74,.2)}
.nl-areas-note{margin:2px 0 0}
form.nl.done .nl-areas{display:none}
.area-signup{margin:28px 0 8px;max-width:640px}
.foot-nl{margin-top:28px;max-width:640px}
footer.site .nl-areas{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.18)}
footer.site .nl-areas summary,footer.site .nl-areas-opt{color:#d7e3dc}
footer.site .nl-areas-k{color:var(--sun)}
footer.site .nl-areas-group{color:var(--sun)}
footer.site .nl-area{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.2);color:#fff3e4}
footer.site .nl-area:has(input:checked){background:rgba(232,112,74,.35);border-color:var(--coral)}
footer.site form.nl input[type=email]{background:#fffcf7}
@media(max-width:420px){.nl-area-grid{grid-template-columns:1fr 1fr}}
footer.site form.nl .note-small:not(.ok):not(.err){color:#c9d8d0}
/* winter break (2026-10-20) */
.wb-banner-sec{padding:18px 0 4px}
.wb-banner{display:flex;align-items:center;gap:16px;text-decoration:none;color:var(--ink);background:linear-gradient(100deg,#e6f2f4,#f3f8ff 60%,#fff);border:1.5px solid #cfe2e6;border-radius:var(--radius);padding:16px 20px;box-shadow:0 2px 0 var(--line)}
.wb-banner:hover{border-color:var(--teal);color:var(--ink)}
.wb-snow{font-size:2rem;line-height:1;flex:none}
.wb-banner-t{display:flex;flex-direction:column;gap:2px;flex:1}
.wb-banner-t b{font-family:var(--display,inherit);font-size:1.18rem;color:var(--teal-d)}
.wb-banner-t span{font-size:.95rem;color:var(--ink2)}
.wb-banner-btn{flex:none}
@media(max-width:640px){.wb-banner{flex-wrap:wrap;padding:14px 16px;gap:10px 12px}.wb-banner-t{flex-basis:calc(100% - 48px)}.wb-banner-btn{width:100%;justify-content:center}}
.badge.wbreg.open{background:#dff3e4;color:#1d6b3a}
.badge.wbreg.soon{background:var(--sun-l);color:#6b4e00}
.badge.wbreg.other{background:#eef0f2;color:#3e4a52}
a.badge.wb{text-decoration:none;background:#e6f2f4;color:var(--teal-d)}
.wcard .wls .wl+.wl::before{content:"; "}
.wb-third{margin:6px 0 0;color:#7a4b12;background:#fff4df;border-radius:8px;padding:5px 9px;font-weight:700}
.wb-links{display:flex;flex-wrap:wrap;gap:4px 16px;margin-top:auto}
.wb-links .more{margin-top:10px}
.wb-filters{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:18px 0 6px}
.wb-f{position:relative;flex:0 1 340px;min-width:220px}
.wb-f .ic{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--teal);pointer-events:none}
.wb-filters select{appearance:none;-webkit-appearance:none;font:inherit;font-size:.96rem;font-weight:700;padding:11px 14px 11px 38px;border:1.5px solid var(--line2);border-radius:var(--radius-s);background:#fff;color:var(--ink);width:100%;cursor:pointer}
.wb-count{margin:0;font-weight:800;color:var(--teal-d)}
.wb-districts{margin:18px 0 6px}
.tbl-wrap{overflow-x:auto;margin:8px 0}
.wb-table{border-collapse:collapse;width:100%;font-size:.9rem;background:#fff;border-radius:12px;overflow:hidden}
.wb-table th,.wb-table td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:top}
.wb-table thead th{background:#f6efe5;font-size:.78rem;text-transform:uppercase;letter-spacing:.06em}
.spring-teaser{margin:36px 0 10px;padding:22px;background:#fff;border:1px dashed var(--line2);border-radius:var(--radius)}
.spring-teaser h2{display:flex;align-items:center;gap:8px;margin:0 0 6px}
.sp-list{list-style:none;padding:0;margin:12px 0 0;display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px 20px}
.sp-list li{font-size:.92rem;padding:8px 0;border-top:1px solid var(--line)}
.sp-area{font-size:.78rem;font-weight:800;color:var(--brand-d);margin-left:4px}
.pill.warn{background:var(--sun-l);color:#6b4e00;border-radius:999px;padding:1px 8px;font-size:.74rem;font-weight:800;margin-left:4px}
.btn.ghost.wb-link{margin-left:8px}
@media(max-width:560px){.btn.ghost.wb-link{margin:10px 0 0}}
.wb-pill{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap;text-decoration:none;background:#e6f2f4;color:var(--teal-d);border:1.5px solid #cfe2e6;border-radius:999px;padding:7px 14px;font-size:.92rem;font-weight:700;margin:0 0 12px}
.wb-pill:hover{border-color:var(--teal);color:var(--teal-d)}
@media(max-width:420px){.wb-pill{font-size:.8rem;padding:6px 11px;gap:4px}}

/* ---- Map page (2026-10-20) ---- */
.map-hero{padding-bottom:8px}
.map-sec{padding-top:8px}
.map-filters{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px}
.map-f select{min-width:220px}
.map-w{display:inline-flex;align-items:center;gap:6px;font-weight:700;cursor:pointer;background:#fff;border:1px solid var(--line,#e7d9c6);border-radius:999px;padding:8px 14px}
.map-w input{width:18px;height:18px;accent-color:#1f5e7a}
.map-count{margin:0;font-weight:800;color:var(--teal-d)}
.map-legend{display:flex;align-items:center;gap:8px;margin:6px 0 10px}
.mdot{display:inline-block;width:12px;height:12px;border-radius:50%;background:#e8704a;border:2px solid #a8421f;margin-left:6px}
.mdot.w{background:#4a9cc7;border-color:#1f5e7a}
.camp-map{width:100%;height:72vh;min-height:440px;background:#eef3f2;border-top:1px solid #eadbc8;border-bottom:1px solid #eadbc8;z-index:0}
.map-note{margin-top:12px}
.leaflet-container{font:inherit}
.leaflet-popup-content{margin:12px 14px;font-size:.95rem;line-height:1.4}
.mp-cat{margin:0 0 2px;font-size:.78rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--brand-d)}
.mp-name{margin:0 0 6px;font-size:1.05rem;line-height:1.25}
.mp-name a{color:var(--ink,#22302c);text-decoration:none}
.mp-wb{display:inline-block;margin:0 0 6px;padding:2px 8px;border-radius:999px;background:#e3f0f7;color:#1f5e7a;font-weight:800;font-size:.8rem}
.mp-facts{list-style:none;margin:0 0 8px;padding:0}
.mp-facts li{margin:2px 0}
.mp-more{font-weight:800;color:var(--brand)}
.map-link{display:inline-flex;align-items:center;gap:6px;font-weight:800;color:var(--teal-d)}
.resultbar .map-link{margin-left:auto;margin-right:12px}
@media(max-width:640px){.camp-map{height:68vh;min-height:380px}.map-f select{min-width:0;width:100%}.map-f{flex:1 1 100%}.leaflet-popup-content{font-size:1rem}}
.filters label.map-w{flex-direction:row;align-items:center;align-self:center;text-transform:none;letter-spacing:0;font-size:.95rem;color:var(--ink);padding:10px 16px;gap:8px}
.filters label.map-w>.ic{position:static;color:#1f5e7a}
.filters label.map-w input{margin:0;flex:none}

/* ==== Polish pass (2026-10-20): category colours, cleaner cards, map entry points, mobile tab bar ==== */
.cat-sports{--cbg:#ffe7dc;--cfg:#a8421f}.cat-stem{--cbg:#e4eefb;--cfg:#24518a}.cat-arts{--cbg:#fbe3ef;--cfg:#9a2f63}
.cat-theatre-dance{--cbg:#efe6fb;--cfg:#5b3a99}.cat-music{--cbg:#fff1c4;--cfg:#7a5600}.cat-outdoor-nature{--cbg:#e3f1ef;--cfg:#1f5e58}
.cat-academic-language{--cbg:#eaf0dc;--cfg:#4a6020}.cat-cooking{--cbg:#fdebd8;--cfg:#8a4a12}.cat-general-day-camp{--cbg:#fff3d1;--cfg:#805300}
.cat-special-needs-inclusive{--cbg:#fde4e4;--cfg:#a12f3a}
.cat-ic{display:inline-grid;place-items:center;flex:none;width:34px;height:34px;border-radius:11px;background:var(--cbg,#f6efe5);color:var(--cfg,var(--teal))}
.cat-ic .ic{width:19px;height:19px}
.cat-ic.lg{width:52px;height:52px;border-radius:16px}.cat-ic.lg .ic{width:28px;height:28px}

/* header + nav */
nav.top a[aria-current="page"]{background:var(--coral-l);color:var(--brand-d)}
nav.top .nav-map{display:inline-flex;align-items:center;gap:5px;color:var(--brand-d)}
nav.top .nav-map .ic{width:16px;height:16px}
.tabbar{display:none}
@media(max-width:860px){
  header.site .wrap{flex-wrap:nowrap;height:58px;padding-top:0;padding-bottom:0}
  nav.top{display:none}
  .tabbar{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;left:0;right:0;bottom:0;z-index:1000;background:rgba(255,252,247,.97);
    border-top:1px solid var(--line2);box-shadow:0 -6px 20px rgba(60,40,20,.08);padding:4px 4px calc(4px + env(safe-area-inset-bottom))}
  .tabbar a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:52px;border-radius:14px;text-decoration:none;color:var(--ink2);font-weight:800;font-size:.72rem;letter-spacing:.01em}
  .tabbar a .ic{width:22px;height:22px}
  .tabbar a[aria-current="page"]{color:var(--brand-d);background:var(--coral-l)}
  .tabbar a:active{background:var(--bg2)}
  body{padding-bottom:calc(64px + env(safe-area-inset-bottom))}
}

/* home hero */
.hero.home .kicker{background:none;border:0;padding:0;margin:0 0 10px;color:var(--brand-d);text-transform:uppercase;letter-spacing:.08em;font-size:.8rem}
.hero.home .lead{max-width:540px}
.hero-visual{position:relative}
.hero-art{display:block;width:100%;height:auto;filter:drop-shadow(0 18px 30px rgba(60,40,20,.12))}
.hero-grid{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr)}
.stats{gap:0 14px}
.stat{background:none;border:0;padding:0;font-size:.9rem}
.stat+.stat::before{content:"·";margin-right:14px;color:var(--line2);font-weight:800}
@media(max-width:860px){
  .hero.home{padding:22px 0 64px}
  .hero-visual{order:2;margin:2px -4px -18px}
  .hero-art{max-height:220px;width:auto;margin:0 auto;filter:none}
  .stat{font-size:.82rem}.stats{gap:0 10px}.stat+.stat::before{margin-right:10px}
}

/* quick actions: map + winter */
section.quick{padding:6px 0 10px}
.quick-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:16px;align-items:stretch}
.map-card{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);grid-template-rows:1fr auto;gap:6px 18px;align-items:center;text-decoration:none;color:var(--ink);
  background:#fff;border:1.5px solid var(--line2);border-radius:var(--radius);padding:14px;box-shadow:var(--shadow);transition:transform .18s,box-shadow .18s,border-color .18s}
.map-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-h);border-color:var(--coral);color:var(--ink)}
.map-card:active{transform:scale(.99)}
.map-card-viz{grid-row:1/3;position:relative;display:block;border-radius:14px;overflow:hidden;background:#eef4ef;border:1px solid #dfe9e1}
.map-card-pin{position:absolute;left:10px;top:10px;width:36px;height:36px;border-radius:12px;background:#fff;color:var(--brand);display:grid;place-items:center;box-shadow:var(--shadow)}
.map-card-t{display:flex;flex-direction:column;gap:4px;align-self:end}
.map-card-t b{font-family:var(--display);font-weight:700;font-size:1.45rem;line-height:1.15}
.map-card-t span{color:var(--ink2);font-size:.95rem}
.map-card-btn{justify-self:start;align-self:start;min-height:44px}
.mini-map{display:block;width:100%;height:auto}
.mm-grid path{stroke:#dfe9e1;stroke-width:1}
.mm-dots .dc{fill:#e8704a;stroke:#fff;stroke-width:1.6}
.mm-dots .dw{fill:#4a9cc7;stroke:#fff;stroke-width:1.6}
.quick .wb-banner{flex-direction:column;align-items:flex-start;justify-content:center;gap:10px;padding:20px}
.quick .wb-banner-btn{min-height:44px}
@media(max-width:860px){.quick-grid{grid-template-columns:1fr;gap:12px}}
@media(max-width:560px){
  .map-card{grid-template-columns:1fr;grid-template-rows:auto;padding:12px;gap:10px}
  .map-card-viz{grid-row:auto}.map-card-viz .mini-map{height:150px;width:100%}
  .map-card-t b{font-size:1.3rem}
  .map-card-btn{width:100%}
  .quick .wb-banner-btn{width:100%}
}

/* browse by type */
.cats-sec{padding-top:30px}
.cat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px}
.cat-tile{display:flex;align-items:center;gap:10px;min-height:60px;padding:10px 12px;background:#fff;border:1px solid var(--line);border-radius:16px;text-decoration:none;color:var(--ink);box-shadow:var(--shadow);transition:transform .15s,border-color .15s,box-shadow .15s}
.cat-tile:hover{transform:translateY(-2px);border-color:var(--cfg);box-shadow:var(--shadow-h);color:var(--ink)}
.cat-tile:active{transform:scale(.98)}
.cat-tile .cat-ic{width:40px;height:40px;border-radius:13px}
.cat-t{display:flex;flex-direction:column;line-height:1.25;min-width:0}.cat-t b{font-size:.95rem}.cat-t span{font-size:.8rem;color:var(--muted)}
@media(max-width:560px){.cat-grid{grid-template-columns:1fr 1fr;gap:8px}.cat-tile{padding:9px 10px;gap:8px}.cat-t b{font-size:.88rem}}

/* newsletter band */
.nl-sec{padding:20px 0 30px}
.nl-split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px 36px;align-items:center;padding:30px 32px;background:linear-gradient(120deg,#fff 0%,#fff 55%,#fff6ea 100%)}
.nl-copy h2{font-size:1.6rem}
@media(max-width:860px){.nl-split{grid-template-columns:1fr;padding:22px 18px}.nl-copy h2{font-size:1.3rem}}

/* section headings */
.sec-head h2,.sim-h{display:flex;align-items:center;gap:10px}
.sim-h::before{content:"";flex:none;width:6px;height:1.1em;border-radius:3px;background:var(--coral)}

/* filters: compact sticky bar on phones */
.filters .fl{display:block}
@media(max-width:860px){
  #filters{position:sticky;top:0;z-index:25;display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;margin:0 -16px;padding:10px 16px;border-radius:0;border-left:0;border-right:0;
    background:rgba(255,250,243,.97);box-shadow:0 6px 14px rgba(60,40,20,.06)}
  #filters::-webkit-scrollbar{display:none}
  #filters label{flex:none;gap:0}
  #filters label:last-child{grid-column:auto}
  #filters .fl{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  #filters select{min-height:44px;padding:9px 30px 9px 14px;border-radius:999px;font-size:.9rem;font-weight:700;width:auto;max-width:200px}
  #filters label.on select{background-color:var(--coral-l);border-color:var(--brand)}
}
.resultbar{gap:10px;flex-wrap:wrap}
.resultbar #f-reset{min-height:40px}
.seg{display:inline-flex;background:#fff;border:1.5px solid var(--line2);border-radius:999px;padding:3px;gap:2px}
.seg-a{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:0 16px;border-radius:999px;text-decoration:none;font-weight:800;font-size:.92rem;color:var(--ink2)}
.seg-a .ic{width:17px;height:17px}
.seg-a.on{background:var(--teal);color:#fff}
.seg-a:not(.on):hover{background:var(--coral-l);color:var(--brand-d)}
.seg-a:not(.on){color:var(--brand-d)}
.resultbar .seg{margin-left:auto}
.resultbar .map-link{margin:0}
@media(max-width:560px){.resultbar .count-wrap{flex:1 1 100%}.resultbar .seg{margin-left:0}.resultbar #f-reset{margin-left:auto}}

/* cards */
.card{gap:9px}
.card-top{display:flex;align-items:center;gap:9px}
.card .eyebrow{color:var(--cfg,var(--teal))}
.card h3{margin:0;font-size:1.18rem}
.kf{display:flex;flex-wrap:wrap;gap:4px 16px;font-size:.98rem;color:var(--ink)}
.kf-i{display:inline-flex;align-items:center;gap:6px}
.kf-i .ic{width:16px;height:16px;color:var(--cfg,var(--teal))}
.kf-k{color:var(--muted);font-weight:600}
.kf-v{font-weight:800}
.card .badges .badge{font-size:.78rem;padding:3px 9px 3px 7px}
.facts .where .wt{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.facts .where.open .wt{-webkit-line-clamp:unset;display:block}
.facts .where{flex-wrap:wrap}
.where-more{position:relative;z-index:2;border:0;background:none;padding:0 2px;margin:-4px 0 0 22px;font:inherit;font-size:.82rem;font-weight:800;color:var(--teal-d);text-decoration:underline;cursor:pointer;min-height:28px}
.card .more{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 18px;margin-top:auto;border:1.5px solid var(--line2);border-radius:999px;background:#fff;color:var(--brand-d);transition:background .15s,border-color .15s}
.card .more:hover{background:var(--coral-l);border-color:var(--brand);text-decoration:none}
.card:active{transform:scale(.995)}
.reg{margin-top:0}
.card.cut{display:none}
.grid-more{display:flex;justify-content:center;margin:18px 0 0}
#grid-more{min-height:48px;padding:0 26px}
#grid-more[hidden]{display:none}
.wb-links{align-items:center;gap:8px 14px}
.wb-links .more{margin-top:4px}
.wb-links .more.wb-ext{border:0;padding:0 4px;background:none}

/* camp page header */
.page-head{background:linear-gradient(165deg,var(--cbg,#ffeedd) 0%,#fff6ea 58%,#eaf4ee 100%)}
.ph-top{display:flex;align-items:center;gap:12px;margin-top:6px}
.page-head .eyebrow{color:var(--cfg,var(--teal))}
.page-head h1{margin:10px 0 12px}
.keyfacts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:16px 0 0;max-width:860px}
.kfact{background:#fff;border:1px solid var(--line);border-radius:14px;padding:11px 13px;box-shadow:var(--shadow)}
.kfact dt{display:flex;align-items:center;gap:6px;font-size:.74rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.kfact dt .ic{width:15px;height:15px;color:var(--cfg,var(--teal))}
.kfact dd{margin:3px 0 0;font-weight:800;font-size:1rem;line-height:1.3;color:var(--ink)}
.kfact dd .empty{font-weight:600;font-size:.92rem}
.head-cta{display:none}
.empty-list{color:var(--muted)}
@media(max-width:860px){.keyfacts{grid-template-columns:1fr 1fr}.head-cta{display:flex;width:100%;margin-top:14px;min-height:48px}}

/* area pages: List | Map + mini map */
.area-sec{padding-top:26px}
.viewbar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:0 0 20px}
.area-map-card{flex:1 1 420px;display:flex;align-items:center;gap:14px;text-decoration:none;color:var(--ink);background:#fff;border:1.5px solid var(--line2);border-radius:18px;padding:8px 12px 8px 8px;box-shadow:var(--shadow);transition:border-color .15s,box-shadow .15s,transform .15s}
.area-map-card:hover{border-color:var(--coral);box-shadow:var(--shadow-h);color:var(--ink)}
.area-map-card:active{transform:scale(.99)}
.amc-viz{flex:none;width:200px;border-radius:12px;overflow:hidden;background:#eef4ef;border:1px solid #dfe9e1}
.amc-t{display:flex;flex-direction:column;flex:1;line-height:1.3}
.amc-t b{font-family:var(--display);font-weight:700;font-size:1.2rem}.amc-t span{color:var(--muted);font-size:.9rem}
.amc-btn{flex:none;min-height:44px}
@media(max-width:560px){
  .viewbar{gap:10px}
  .area-map-card{flex-wrap:wrap;padding:8px}
  .amc-viz{width:100%}.amc-viz .mini-map{height:120px;width:100%}
  .amc-t{padding:0 4px}.amc-btn{width:100%}
  .nbhd-chips{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin:0 -16px 6px;padding:2px 16px 6px}
  .nbhd-chips::-webkit-scrollbar{display:none}
  .nbhd-chip{flex:none;min-height:44px;white-space:nowrap}
  .nbhd-k{flex:none}
}

/* winter page toggle */
.wb-filters .seg{margin-left:auto}
@media(max-width:560px){.wb-filters .seg{margin-left:0}}

/* footer */
footer.site{position:relative;margin-top:70px}
.foot-wave{position:absolute;left:0;right:0;top:-59px;width:100%;height:60px;display:block}
.foot-hello{font-family:var(--display);font-size:1.35rem;color:#fff;margin:0 0 26px}
.foot-legal a{color:#fff3e4}

/* tap/hover states */
.area-tile:active{transform:scale(.99)}
.btn:focus-visible,.seg-a:focus-visible,.cat-tile:focus-visible,.map-card:focus-visible,.area-map-card:focus-visible,.tabbar a:focus-visible{outline:3px solid var(--brand);outline-offset:2px}
@media(prefers-reduced-motion:reduce){.map-card:hover,.cat-tile:hover,.area-map-card:hover{transform:none}}
@media(max-width:860px){.hero-grid{grid-template-columns:1fr;gap:18px}}
.quick .wb-banner{flex-wrap:nowrap}.quick .wb-banner-t{flex-basis:auto}
.wb-banner-t b{line-height:1.25}
@media(max-width:560px){
  .hero-art{max-height:150px}
  .hero.home .stat:last-child{display:none}
  /* registration-soon list: swipeable row instead of a long wall of cards */
  #soon .soon{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:10px;margin:0 -16px;padding:4px 16px 12px;scrollbar-width:none}
  #soon .soon::-webkit-scrollbar{display:none}
  #soon .soon .item{flex:0 0 82%;scroll-snap-align:start}
  .card .more{padding:0 16px;font-size:.9rem}
}
.page-head .cat-ic.lg{background:#fff;box-shadow:var(--shadow)}
.hero-acts{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}
.hero-acts .btn{min-height:46px}
@media(max-width:560px){.hero-acts .btn{flex:1 1 0;padding:12px 10px}}
@media(max-width:560px){.stats{gap:2px 14px}.stat+.stat::before{display:none}}
@media(max-width:560px){.map-hero{padding:16px 0 4px}.map-hero h1{font-size:1.6rem;margin-bottom:4px}.map-hero .lead{font-size:.95rem;margin:0}.map-hero .crumbs{display:none}}

/* 2026-10-21: mobile filters wrap instead of scrolling sideways (owner request).
   <=860px: the pill bar wraps onto extra lines (no horizontal scroll).
   <=700px: 2-column grid, every dropdown fills its cell, odd last item spans both columns,
   bar is no longer sticky (3 rows would cover ~20% of a phone screen).
   Neighborhood chips and the "Registration opening soon" list wrap/stack too. Desktop (>860px) unchanged. */
@media(max-width:860px){
  #filters{flex-wrap:wrap;overflow-x:visible}
  #filters label{flex:0 1 auto;min-width:0}
}
@media(max-width:700px){
  #filters{position:static;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0;padding:10px;border-radius:var(--radius-s);border:1px solid var(--line);box-shadow:var(--shadow)}
  #filters label{min-width:0;gap:0}
  #filters label:last-child:nth-child(odd){grid-column:1/-1}
  #filters select{width:100%;max-width:none;min-width:0;padding:9px 26px 9px 12px;font-size:.88rem;background-position:right 9px center;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}
  .nbhd-chips{flex-wrap:wrap;overflow-x:visible;margin:0 0 6px;padding:2px 0 6px;gap:6px}
  .nbhd-k{flex:1 1 100%}
  .nbhd-chip{flex:0 1 auto;white-space:normal}
  #soon .soon{display:grid;grid-template-columns:1fr;overflow-x:visible;scroll-snap-type:none;gap:8px;margin:0;padding:0}
  #soon .soon .item{flex:none;padding:12px}
}

/* 2026-10-21: in-page List | Map toggle (assets/inline-map.js); the home "See camps on a map" card was removed */
.quick-grid{grid-template-columns:minmax(0,1fr)}
.imap-hide{display:none!important}
.imap{margin:4px 0 18px}
.imap-legend{display:flex;align-items:center;flex-wrap:wrap;gap:6px 8px;margin:0 0 8px}
.imap-count{font-weight:800;color:var(--teal-d)}
.inline-map{width:100%;height:62vh;min-height:380px;max-height:680px;background:#eef3f2;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;z-index:0}
.imap-note{margin-top:8px}
@media(max-width:700px){.inline-map{height:58vh;min-height:320px;border-radius:var(--radius-s)}}
@media(min-width:861px){.quick .wb-banner{flex-direction:row;align-items:center;gap:16px;padding:16px 20px}} /* full-width banner now that the map card is gone */

/* 2026-10-21: home "Registration opening soon" shows the next 5; #soon-toggle expands the rest in place (app.js) */
.soon.collapsed .soon-more{display:none}
.soon-toggle-wrap{display:flex;justify-content:center;margin:14px 0 4px}
.soon-toggle{min-height:44px}
@media(max-width:700px){.soon-toggle{width:100%;justify-content:center}}
.soon-toggle[hidden]{display:none}

/* 2026-10-21: Leagues page (/leagues.html) + compact home link + 5-tab bar with Leagues */
.lg-hero{padding:30px 0 70px}
.lg-hero h1{margin-bottom:8px}
.lg-hero .lead{margin-bottom:6px}
.lg-hero .kicker .ic{color:var(--brand)}
.lg-disclaim{margin:0 0 4px;max-width:620px}
.lg-top{padding-top:18px}
.lg-h2{margin-top:34px}
.lg-chip .chip-d.w{font-size:1rem;padding:7px 0 3px}
.lg-chip.open .chip-m{background:#1d6b3a}
.lg-chip .chip-y{font-size:.62rem;text-transform:uppercase;letter-spacing:.04em}
.lg-soon .item .name a{text-decoration:none;color:var(--ink);font-weight:800}
.lg-soon .item .name a:hover{color:var(--brand-d);text-decoration:underline}
.lg-soon .item .date{font-weight:800;color:var(--brand-d);font-size:.9rem}
.lg-soon .item .note{font-size:.84rem;color:var(--muted)}
.lg-filters{grid-template-columns:repeat(4,minmax(0,1fr))}
.lcard .eyebrow{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lcard h3{font-size:1.12rem}
.lcard .facts li span{min-width:0;overflow-wrap:anywhere}
.lg-warn{margin:0;color:#6b4e00;background:var(--sun-l);border-radius:10px;padding:5px 10px}
.lg-src{margin:0}
.lg-src a{color:var(--muted)}
.lcard{scroll-margin-top:90px}
.lcard.lg-flash{border-color:var(--brand);box-shadow:0 0 0 3px var(--coral-l),var(--shadow-h)}
@media(max-width:900px){.lg-filters label:last-child{grid-column:auto}}
@media(max-width:700px){
  .lg-filters{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:10px;border-radius:var(--radius-s)}
  .lg-filters label{min-width:0;gap:0}
  .lg-filters .fl{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .lg-filters select{width:100%;min-width:0;min-height:44px;padding:9px 26px 9px 12px;font-size:.88rem;font-weight:700;border-radius:999px;background-position:right 9px center;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}
  .lg-filters label.on select{background-color:var(--coral-l);border-color:var(--brand)}
}
@media(max-width:560px){
  .lg-hero{padding:16px 0 56px}.lg-hero h1{font-size:1.6rem}.lg-hero .lead{font-size:.98rem}.lg-hero .crumbs{display:none}
  .lg-hero .stat:last-child{display:none}
  .lg-soon .item{padding:12px;gap:12px}
  .lg-h2{margin-top:26px}
}
/* home: one-row link to /leagues (sits beside the winter banner on desktop) */
.lg-link{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--ink);background:#fff;border:1.5px solid var(--line2);border-radius:var(--radius);padding:12px 16px;box-shadow:var(--shadow);transition:border-color .15s,box-shadow .15s,transform .15s;align-self:center}
.lg-link:hover{border-color:var(--coral);box-shadow:var(--shadow-h);color:var(--ink);transform:translateY(-2px)}
.lg-link:active{transform:scale(.99)}
.lg-link:focus-visible{outline:3px solid var(--brand);outline-offset:2px}
.lg-link-ic{flex:none;width:40px;height:40px;border-radius:13px;display:grid;place-items:center;background:#ffe7dc;color:#a8421f}
.lg-link-ic .ic{width:22px;height:22px}
.lg-link-t{display:flex;flex-direction:column;min-width:0;line-height:1.3}
.lg-link-t b{font-size:1rem}
.lg-link-t span{font-size:.85rem;color:var(--muted)}
.lg-link .go{margin-left:auto;width:20px;height:20px;color:#c9b8a2;flex:none}
.lg-link:hover .go{color:var(--brand)}
@media(max-width:860px){.lg-link{padding:10px 14px}}
.lcard{min-width:0}
.lcard .kf-i{min-width:0}.lcard .kf-v{overflow-wrap:anywhere}
/* header nav fit after adding "Leagues" (2026-10-21): tighten between the tab-bar breakpoint and full desktop;
   "About the data" drops out of the header below 1180px (still in the footer). This also fixes the header that already ran wide at 861–1160px. */
@media(min-width:861px){
  header.site .wrap{gap:12px}
  nav.top{gap:0}
  nav.top a{padding:8px 9px;font-size:.9rem}
  header.site .cta{padding:9px 14px;font-size:.9rem}
}
@media(min-width:861px) and (max-width:1179px){nav.top .nav-about{display:none}.logo em{display:none}}
@media(min-width:861px) and (max-width:1023px){nav.top .nav-map .ic{display:none}nav.top a{padding:7px 7px;font-size:.86rem}.logo{font-size:1.15rem}header.site .cta{padding:8px 12px;font-size:.85rem}}
.lcard .facts .where .wt{flex:1 1 0}
.lcard .kf{font-size:.92rem}
#leagues .resultbar .count-wrap{flex:1 1 auto}
/* leagues v2 (2026-10-21): season-dates line in the Registering now / Opening soon strips */
.lg-soon .lg-season{display:flex;align-items:center;gap:.3rem;font-size:.85rem;line-height:1.3;color:var(--ink2);margin:.1rem 0 .05rem}
.lg-soon .lg-season svg{width:14px;height:14px;flex:0 0 14px;opacity:.7}
.lg-soon .lg-season span{min-width:0;overflow-wrap:anywhere}
.lcard .lg-sx{color:var(--muted,#5b6b7c);font-size:.85em}
@media(max-width:480px){.lg-soon .lg-season{font-size:.8rem}}
.lg-nbhd{margin:4px 0 12px}
.lg-nbhd[hidden]{display:none}
/* home: leagues banner (2026-10-21 v3) — same size/layout as the winter-break banner, warm colors, sits above it */
.lg-banner{background:linear-gradient(100deg,#ffeee4,#fff6ef 60%,#fff);border-color:#f3cdb8}
.lg-banner:hover{border-color:var(--coral)}
.lg-banner .wb-banner-t b{color:#a8421f}
.lg-banner-ic{display:inline-grid;place-items:center;color:#a8421f}
.lg-banner-ic .ic{width:30px;height:30px}

/* 2026-10-21 font switch (Plus Jakarta Sans + Inter): Inter is wider than Nunito Sans, so the search input's
   intrinsic width no longer fits a 390px phone; let it shrink, and keep the one-column hero grid from growing past the screen. */
.search input{width:0}
@media(max-width:860px){.hero-grid{grid-template-columns:minmax(0,1fr)}}
/* Plus Jakarta Sans sets wider than Fredoka at display sizes: tighten the big headings a little */
.hero h1,.page-head h1{letter-spacing:-.025em}
h2{letter-spacing:-.02em}
.foot-hello{font-weight:600}
.hero.home h1{font-size:clamp(1.9rem,4.6vw,2.8rem)}
@media(min-width:861px){.nl-copy h2{font-size:1.5rem}}
/* long area names ("Grapevine/Southlake/Colleyville") in the "Which areas?" summary chip are wider in Inter: let them wrap instead of widening the page */
.nl-areas-v,.nl-area span{min-width:0;overflow-wrap:anywhere}
.nl-areas fieldset{min-width:0}
/* 2026-10-21 hero copy "camps and sports league": the longer headline ran to 4 lines in the desktop column; trim the desktop size a touch so it stays at 3 */
@media(min-width:861px){.hero.home h1{font-size:clamp(1.9rem,3.4vw,2.5rem)}}
/* the "Camps & leagues" eyebrow wraps on 360–375px phones: tighten its tracking a little there */
@media(max-width:389px){.hero.home .kicker{letter-spacing:.04em;font-size:.76rem}}
/* 2026-10-21 home: third quick card "Summer 2027 camps" — same size/layout as the leagues + winter banners, sunny yellow */
.su-banner{background:linear-gradient(100deg,#fff3c9,#fff9e6 60%,#fff);border-color:#f0d98c}
.su-banner:hover{border-color:#d9a514}
.su-banner .wb-banner-t b{color:#7a5600}
/* 2026-10-21 home: compact "Browse by area" pills (replaces the tall area-tile list; area pages unchanged) */
.area-chips-sec{padding:26px 0 30px}
.ac-h{display:flex;align-items:center;gap:8px;font-size:1.2rem;margin:0 0 12px}
.ac-h .ic{width:20px;height:20px;color:var(--brand)}
.area-chips{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 10px}
.ac-g{flex:0 0 auto;font-size:.78rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-right:2px}
.area-chip{display:inline-flex;align-items:center;gap:4px;min-height:36px;padding:6px 13px;border:1px solid var(--line2);border-radius:999px;background:#fff;color:var(--ink);font-size:.9rem;font-weight:600;text-decoration:none;white-space:nowrap;transition:border-color .15s,color .15s}
.area-chip:hover{border-color:var(--coral);color:var(--brand)}
.area-chip:focus-visible{outline:3px solid var(--brand);outline-offset:2px}
.area-chip.all{border-color:transparent;background:var(--coral-l);color:var(--brand-d)}
.area-chip.all .ic{width:15px;height:15px}
@media(max-width:560px){.ac-g{flex-basis:100%}.area-chip{font-size:.86rem;padding:6px 11px}}
.quick-grid{grid-auto-rows:1fr} /* the three home cards (leagues, winter, summer) stay the same height */
/* 2026-10-21: 404 page (404.html, links are root-relative) */
.nf-hero{padding-bottom:70px}
.nf-hero .search{max-width:560px}
.nf-acts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;max-width:720px}
.nf-acts .btn{justify-content:center;flex:none;text-align:center}
@media(max-width:560px){.nf-acts{grid-template-columns:1fr 1fr}.nf-acts .btn{padding:12px 10px;min-height:48px}.nf-acts .btn:first-child{grid-column:1/-1}}

/* Instagram link (2026-10-21): low-key footer link + muted line under newsletter forms */
.nl-follow{margin:10px 0 0;font-size:.8rem;color:var(--muted);line-height:1.45}
.nl-follow a{color:var(--ink2);font-weight:600;text-decoration:underline;text-decoration-color:rgba(47,75,67,.35);text-underline-offset:2px}
.nl-follow a:hover{color:var(--brand-d);text-decoration-color:currentColor}
footer.site .nl-follow{color:#b7c9bf}
footer.site .nl-follow a{color:#fff3e4;text-decoration-color:rgba(255,243,228,.4)}
footer.site .nl-follow a:hover{color:var(--sun)}
.foot-ig{display:inline-flex;align-items:center;gap:5px;white-space:nowrap;vertical-align:bottom}
.foot-ig .ig-ic{width:15px;height:15px;flex:none}
/* Spring break page (2026-10-21) */
.badge.sbyr{font-weight:800}
.badge.sbyr.c27{background:#dff3e4;color:#1d6b3a}
.badge.sbyr.ann{background:var(--sun-l);color:#6b4e00}
.badge.sbyr.ly{background:#eef0f2;color:#3e4a52}
.sbcard.sb-ly{background:#fbfaf8}
.sbcard .facts li.ly{color:#3e4a52}
.sb-checked{margin-top:6px}
.sb-districts{margin:18px 0 26px}
.sb-districts h2,.sb-list-h{margin:0 0 10px}
.sb-districts .sb-src{font-size:.78rem;font-weight:700;white-space:nowrap}
.sb-districts .sb-src .ic{width:12px;height:12px}
.spring-teaser.sp-link .btn{margin-top:6px}
/* 2026-10-21: room for the Spring break nav link. The header is capped at 1160px, so the desktop nav drops "About the data"
   (still in every footer) and, from 861 to 1179px, drops Spring break too (it stays in the footer and on the winter page). */
@media(min-width:861px){nav.top .nav-about{display:none}}
@media(min-width:861px) and (max-width:1179px){nav.top .nav-spring{display:none}}
.sb-districts .sb-other{font-size:.86rem;color:var(--ink2)}

/* ---- 2026-10-21 combined registration dates page (registration-dates.html): both builds ---- */
.rd-bar{position:sticky;top:68px;z-index:20;background:rgba(255,248,238,.94);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-bottom:1px solid var(--line);padding:10px 0}
.rd-chips{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;padding:2px}
.rd-chips::-webkit-scrollbar{display:none}
.rd-chip{flex:none;display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:8px 14px;border-radius:999px;border:1px solid var(--line2,var(--line));background:#fff;color:var(--ink);font:inherit;font-weight:700;font-size:.92rem;cursor:pointer;white-space:nowrap}
.rd-chip .rd-cn{font-size:.78rem;font-weight:800;color:var(--muted);background:var(--bg2);border-radius:999px;padding:1px 7px}
.rd-chip[aria-pressed="true"]{background:var(--brand);border-color:var(--brand);color:#fff}
.rd-chip[aria-pressed="true"] .rd-cn{background:rgba(255,255,255,.22);color:#fff}
.rd-chip:focus-visible{outline:3px solid var(--brand);outline-offset:2px}
.rd-sec{padding:34px 0 8px}
.rd-sec[hidden],.rd-item[hidden],.rd-list[hidden],.rd-past[hidden],.rd-sec .sec-head[hidden]{display:none}
#rd-closing .sec-head h2{color:var(--brand-d)}
.rd-count{font-size:.7em;color:var(--muted);font-weight:700}
.rd-meta{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;margin:3px 0 1px;font-size:.8rem}
.rd-type{font-weight:800;text-transform:uppercase;letter-spacing:.04em;font-size:.7rem;border-radius:999px;padding:2px 8px;background:var(--bg2);color:var(--ink2)}
.rd-t-league{background:#e3f0fb;color:#1f4f7a}.rd-t-winter{background:#e6f3f5;color:#1d5f6b}.rd-t-summer{background:#fff1d6;color:#7a5200}.rd-t-cot{background:#efe6fb;color:#4a2d7a}.rd-t-class{background:#fbe3ef;color:#9a2f63}
.rd-area{display:inline-flex;align-items:center;gap:3px;color:var(--muted);font-weight:600}
.rd-area .ic{width:13px;height:13px}
.rd-item .note{font-size:.84rem;color:var(--muted)}
.rd-item .name a{text-decoration:none;color:var(--ink);font-weight:800}
.rd-item .name a:hover{color:var(--brand-d);text-decoration:underline}
.rd-item .date{font-weight:800;color:var(--brand-d);font-size:.9rem}
.lg-chip.rd-c-closes .chip-m{background:#b23a1e}
.lg-chip.rd-c-opens .chip-m{background:#8a6500}
.lg-chip.rd-c-refund .chip-m{background:#a8421f}
.lg-chip.rd-c-na .chip-m{background:#7a7468}
.rd-past{margin-top:18px}
.rd-foot{padding:18px 0 30px}
@media(max-width:860px){.rd-bar{position:static;background:transparent;border-bottom:0;padding:6px 0 0}.rd-chips{flex-wrap:wrap;overflow:visible;gap:6px}}
@media(max-width:560px){.rd-sec{padding:24px 0 4px}.rd-chip{font-size:.86rem;padding:8px 12px}.rd-hero .stat:last-child{display:none}}

/* ---- 2026-10-21 cotillion & etiquette page + site-wide Browse menu (scripts/add_cotillion_2026_10_21.py) ---- */
.cat-cot{--cbg:#efe6fb;--cfg:#5b3a92}
.cot-hero .kicker .ic{color:var(--brand)}
/* 2026-10-21 polish: registration opens / closes / refunds as a labeled date box (the dates parents miss most) */
.cot-key{background:#fff4d6;border:1px solid #f1dc9a;border-left:4px solid #c98a00;border-radius:12px;padding:8px 12px;margin:2px 0 4px;display:grid;gap:6px}
.cot-key>div{display:block}
.cot-key dt{font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:#6b4e00;line-height:1.35}
.cot-key dd{margin:0;font-size:.92rem;line-height:1.4;color:var(--ink);font-weight:600;overflow-wrap:anywhere}
.cot-key>div+div{border-top:1px dashed #ecd28a;padding-top:6px}
/* hero: what cotillion is, typical grades, when to sign up */
.cot-what{list-style:none;margin:14px 0 6px;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.cot-what li{display:flex;gap:10px;align-items:flex-start;background:rgba(255,255,255,.78);border:1px solid var(--line);border-radius:14px;padding:11px 13px;font-size:.9rem;line-height:1.45;color:var(--ink2)}
.cot-what li .ic{flex:none;width:20px;height:20px;margin-top:1px;color:var(--brand)}
.cot-what b{display:block;color:var(--ink);font-size:.95rem;margin-bottom:1px}
@media(max-width:860px){.cot-what{grid-template-columns:1fr;gap:8px;margin-top:12px}.cot-what li{padding:9px 12px;font-size:.86rem;line-height:1.42}.cot-what b{display:inline;font-size:.88rem;margin:0 2px 0 0}.cot-what li+li b::after{content:":"}}
.cot-hero .lg-disclaim{margin-top:6px}
.cot-note{margin:0;color:var(--ink2)}
.lg-chip.refund .chip-m{background:#a8421f}
.lg-chip.invite .chip-m{background:#5b3a92}
.lg-chip.anyday .chip-m,.lg-chip.opens .chip-m{background:#8a6500}
.badge.wbreg.invite{background:#efe6fb;color:#4a2d7a}
.lg-xlink{margin:8px 0 2px;font-weight:700}
.lg-xlink a{color:var(--brand-d)}
/* Browse menu: one button + list in the shared header, same dropdown on desktop and phones */
.browse{position:relative;flex:none}
.browse-btn{display:inline-flex;align-items:center;gap:6px;font:inherit;font-weight:700;font-size:.95rem;color:var(--ink2);background:var(--bg2);border:1px solid var(--line);border-radius:999px;padding:8px 14px;cursor:pointer;min-height:40px;white-space:nowrap}
.browse-btn:hover,.browse.open .browse-btn{color:var(--brand-d);border-color:var(--brand)}
.browse-btn:focus-visible{outline:3px solid var(--brand);outline-offset:2px}
.browse-btn .caret{width:14px;height:14px;transition:transform .15s}
.browse.open .browse-btn .caret{transform:rotate(180deg)}
.browse-menu{position:absolute;top:calc(100% + 8px);right:0;min-width:240px;margin:0;padding:6px;list-style:none;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 12px 32px rgba(29,58,50,.18);z-index:1100}
.browse-menu[hidden]{display:none}
.browse-menu a{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;text-decoration:none;color:var(--ink);font-weight:700;font-size:.95rem;min-height:44px;box-sizing:border-box}
.browse-menu a:hover,.browse-menu a:focus-visible{background:var(--bg2);color:var(--brand-d);outline:none}
.browse-menu a[aria-current="page"]{background:var(--coral-l);color:var(--brand-d)}
.browse-menu .ic{width:18px;height:18px;color:var(--brand);flex:none}
.browse-menu li.bm-sep{border-top:1px solid var(--line);margin-top:5px;padding-top:5px}
.browse-menu{max-height:calc(100vh - 150px);overflow-y:auto;overscroll-behavior:contain}
/* the Browse menu repeats Winter / Spring / Leagues, so those header links give it room: Spring break always (desktop), Winter + Leagues below 1180px */
@media(min-width:861px){nav.top .nav-spring,nav.top .nav-about{display:none}}
@media(min-width:861px) and (max-width:1179px){nav.top .nav-winter,nav.top .nav-leagues{display:none}}
@media(min-width:861px){nav.top .nav-areas{display:none}}  /* Areas lives in the Browse menu (and the phone tab bar) */
@media(max-width:860px){
  .browse{order:2;margin-left:0;position:static}
  header.site .cta{order:1}
  .browse-btn{min-height:44px;gap:4px}
  header.site .cta{min-height:44px;display:inline-flex;align-items:center;box-sizing:border-box}  /* tap target */
  .browse-menu{position:absolute;top:calc(100% + 4px);left:12px;right:12px;min-width:0}
}
/* phones: room for the Browse button next to "List your camp" (bottom tab bar unchanged) */
@media(max-width:560px){.logo em{display:none}.logo{font-size:1.05rem;gap:6px}.logo svg{width:28px;height:28px}header.site .wrap{gap:8px}header.site .cta{padding:8px 12px;font-size:.84rem}
  .browse-btn{font-size:.82rem;padding:6px 8px 6px 10px}.browse-btn .caret{width:12px;height:12px}}
@media(max-width:400px){header.site .wrap{gap:6px;padding-left:10px;padding-right:10px}.logo{font-size:1rem}header.site .cta{padding:7px 9px;font-size:.78rem}.browse-btn{padding:6px 10px}.browse-btn .caret{display:none}}
@media(max-width:340px){header.site .wrap{gap:4px;padding-left:8px;padding-right:8px}.logo{font-size:.88rem;gap:4px}.logo svg{width:24px;height:24px}header.site .cta{padding:7px 6px;font-size:.72rem}.browse-btn{font-size:.78rem;padding:6px 8px}}

/* ---- 2026-10-21 leagues tiles + keyword search (add_cotillion_2026_10_21.py) ---- */
.lg-cats{padding-bottom:30px}
.lg-emo{font-size:1.2rem;line-height:1}
.kw-search{position:relative;margin:0 0 12px}
.kw-search>.ic{position:absolute;left:14px;top:50%;transform:translateY(-50%);width:18px;height:18px;color:var(--brand);pointer-events:none}
.kw-search input{width:100%;box-sizing:border-box;font:inherit;font-size:1rem;font-weight:600;padding:13px 14px 13px 42px;border:1.5px solid var(--line2);border-radius:var(--radius-s);background:#fff;color:var(--ink);box-shadow:var(--shadow);min-height:48px}
.kw-search input:hover{border-color:var(--coral)}
.kw-search input:focus{outline:3px solid var(--coral-l);border-color:var(--brand)}
.kw-search input:not(:placeholder-shown){border-color:var(--brand);background:var(--coral-l)}
/* 2026-10-21 leagues-top: hero search + sport tiles above the strips (backup-leaguestop-2026-10-21/) */
.lg-find{margin:16px 0 0;max-width:640px}
.lg-qlab{display:flex;align-items:center;gap:6px;font-weight:800;font-size:.95rem;margin:0 0 6px;color:var(--ink)}
.lg-qlab .ic{width:16px;height:16px;color:var(--brand)}
.lg-kw{display:flex;margin:0}
.lg-kw input{padding:13px 108px 13px 16px;min-height:52px}
.lg-kw .lg-qgo{position:absolute;right:5px;top:5px;bottom:5px;min-height:0;padding:0 18px;border-radius:calc(var(--radius-s) - 3px);justify-content:center}
.lg-kw .lg-qgo .ic{display:none;width:20px;height:20px;margin:0}
.lg-qhint{margin:8px 2px 0;font-size:.92rem;color:var(--ink)}
.lg-qhint[hidden],.lg-qrow[hidden]{display:none}
.lg-qhint .linkish{font-weight:800}
.lg-cats{padding-top:4px}
.lg-cats .sec-head{margin-bottom:12px}
.lg-qrow{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;margin:0 0 12px}
.lg-qtag{display:inline-flex;align-items:center;gap:6px;background:var(--coral-l);border:1.5px solid var(--brand);border-radius:999px;padding:4px 4px 4px 14px;font-size:.92rem}
.lg-qtag button{border:0;background:#fff;color:var(--brand-d);width:30px;height:30px;border-radius:50%;font-size:1.15rem;line-height:1;cursor:pointer}
.lg-qrow a{font-weight:700;font-size:.92rem}
#lg-results,.lg-qrow{scroll-margin-top:0}
@media(max-width:860px){#lg-results,.lg-qrow{scroll-margin-top:-72px}} /* header is not sticky here; html scroll-padding-top is 84px */
@media(max-width:560px){.lg-find{margin-top:14px}.lg-kw input{font-size:.92rem;padding-right:58px;padding-left:14px}.lg-kw .lg-qgo{width:46px;padding:0}.lg-kw .lg-qgo .ic{display:block}.lg-qgo-t{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}}

/* -- gender 2026-10-21 (scripts/add_gender_2026_10_21.py): 5th "Girls / Boys / Co-ed" filter + card / registration-dates chips -- */
.lg-filters{grid-template-columns:repeat(5,minmax(0,1fr))}
@media(max-width:1100px){.lg-filters{grid-template-columns:repeat(3,minmax(0,1fr))}.lg-filters label.lg-gl{grid-column:auto}}
@media(max-width:900px){.lg-filters{grid-template-columns:repeat(2,minmax(0,1fr))}.lg-filters label.lg-gl{grid-column:1/-1}}
.badge.lg-g{background:#efeafb;color:#46357a}
.badge.lg-g-girls{background:#fbe9f1;color:#8a2453}
.badge.lg-g-boys{background:#e6f0fb;color:#1f4f86}
.badge.lg-g-coed{background:#e7f5ef;color:#1c6447}
.lg-gnote{margin:-4px 0 12px;padding:9px 12px;border-radius:var(--radius-s);background:#fff8e6;border:1px solid #f1dfae;color:#5d4a14;line-height:1.45}
.lg-gnote .linkish{font-weight:800;white-space:nowrap}
.rd-g{display:inline-flex;align-items:center;gap:4px;font-size:.78rem;font-weight:700;border-radius:999px;padding:2px 8px 2px 6px;background:#efeafb;color:#46357a}
.rd-g .ic{width:13px;height:13px}
.lg-nw{white-space:nowrap}
.rd-g.lg-g-girls{background:#fbe9f1;color:#8a2453}.rd-g.lg-g-boys{background:#e6f0fb;color:#1f4f86}.rd-g.lg-g-coed{background:#e7f5ef;color:#1c6447}
/* -- end gender -- */
