/* Poppins: SIL Open Font License 1.1, self-hosted (see fonts/OFL.txt). */
@font-face{font-family:"Poppins";font-style:normal;font-weight:600;font-display:swap;src:url(fonts/poppins-600-latin.woff2) format("woff2")}
@font-face{font-family:"Poppins";font-style:normal;font-weight:700;font-display:swap;src:url(fonts/poppins-700-latin.woff2) format("woff2")}
:root{
  --navy:#0a1f44; --deep:#173a7a; --violet:#4a2b8f; --blue:#1557b0; --ice:#eef6fd; --frost:#dcecfa;
  --line:#cfe0f0; --text:#14212e; --muted:#475569; --white:#fff; --focus:#f59e0b; --radius:18px;
  --glow:#7dd3fc; --lilac:#c4b5fd;
  --display:"Poppins",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --accent:#34508a; --tint:#eef2fa;
  font-family:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
}
/* Category accents. Each accent passes 4.5:1 on white and with white text. */
.cat-ice-rink{--accent:#1557b0;--tint:#e6f0fc;--accent2:#38bdf8}
.cat-skating-club{--accent:#6b3fb8;--tint:#f0eafb;--accent2:#c084fc}
.cat-learn-to-skate{--accent:#00756a;--tint:#e3f5f2;--accent2:#2dd4bf}
.cat-skate-shop{--accent:#b02a6b;--tint:#fbe9f2;--accent2:#f472b6}
.cat-coach{--accent:#a34a00;--tint:#fdf0e3;--accent2:#fbbf24}
.cat-teams-skating-groups{--accent:#b4232a;--tint:#fdecec;--accent2:#fb7185}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;color:var(--text);background:var(--white);line-height:1.6;font-size:1.0625rem}
img{max-width:100%;height:auto}
a{color:var(--blue);text-underline-offset:3px}
a:hover{color:var(--navy)}
:focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:6px}
h1,h2,h3{font-family:var(--display);color:var(--navy);line-height:1.15;margin:0 0 .5em;font-weight:700;letter-spacing:-.01em}
h1{font-size:clamp(2rem,6.5vw,3.3rem)}
h2{font-size:clamp(1.3rem,3.5vw,1.6rem)}
h3{font-size:1.1rem;font-weight:600}
.wrap{max-width:1140px;margin:0 auto;padding:0 1.25rem}
.section{padding:2.25rem 0}
.section-sm{margin-top:1.75rem}
.small{font-size:.9rem}.muted{color:var(--muted)}
.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip-link{position:absolute;left:-999px;top:0;background:var(--navy);color:#fff;padding:.5rem 1rem;z-index:10}
.skip-link:focus{left:0}
.preview-banner{background:#fff4d6;color:#5a4300;text-align:center;font-size:.875rem;padding:.4rem 1rem;border-bottom:1px solid #f0d58a}

/* Header */
.site-header{background:rgba(255,255,255,.96);border-bottom:1px solid var(--line);z-index:5}
.header-inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.4rem 1.5rem;padding-top:.7rem;padding-bottom:.7rem}
.brand{display:flex;align-items:center;gap:.6rem;text-decoration:none;color:var(--navy);font-family:var(--display);font-weight:600;font-size:1.1rem}
.brand strong{background:linear-gradient(90deg,var(--blue),var(--violet));-webkit-background-clip:text;background-clip:text;color:transparent}
.logo-mark{width:36px;height:36px;flex:none}
.site-header ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.25rem}
.site-header nav a{text-decoration:none;color:var(--text);padding:.4rem .75rem;display:inline-block;border-radius:999px;font-weight:500}
.site-header nav a:hover{background:var(--ice);color:var(--navy)}
.site-header nav a[aria-current=page]{background:var(--navy);color:#fff}

/* Hero: a freshly resurfaced ice sheet. Texture is ice.jpg (tools/make_ice_texture.py), lit with
   colored arena-light glows and a glossy sheen so it stays bright and colorful. */
.hero,.page-band,.detail-band{position:relative;overflow:hidden;color:var(--navy);
  background:
    linear-gradient(112deg,transparent 22%,rgba(255,255,255,.55) 34%,rgba(255,255,255,.1) 41%,transparent 48%,transparent 62%,rgba(255,255,255,.35) 70%,transparent 78%),
    radial-gradient(ellipse 45% 70% at 95% 0%,rgba(56,189,248,.42),transparent 70%),
    radial-gradient(ellipse 40% 60% at 0% 100%,rgba(167,139,250,.38),transparent 70%),
    radial-gradient(ellipse 35% 55% at 55% 110%,rgba(45,212,191,.28),transparent 70%),
    radial-gradient(ellipse 30% 50% at 30% -10%,rgba(244,114,182,.16),transparent 70%),
    url(ice.jpg) center/cover no-repeat,
    linear-gradient(135deg,#eef8fd,#c3e2f3)}
.hero{padding:3rem 0 5rem}
/* moving gloss: one slow pass of light across the ice (off for reduced motion) */
.hero::after,.page-band::after,.detail-band::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(105deg,transparent 40%,rgba(255,255,255,.5) 50%,transparent 60%) no-repeat;background-size:250% 100%;
  background-position:120% 0;animation:ice-gloss 9s ease-in-out infinite}
@keyframes ice-gloss{0%,15%{background-position:120% 0}65%,100%{background-position:-20% 0}}
.hero-art{position:absolute;right:0;top:0;height:100%;width:min(720px,70%);pointer-events:none;opacity:.42}
.hero-art .glints path{filter:drop-shadow(0 0 4px #7dd3fc);animation:ice-glint 4.5s ease-in-out infinite}
.hero-art .glints path:nth-child(2){animation-delay:1.2s}.hero-art .glints path:nth-child(3){animation-delay:2.4s}.hero-art .glints path:nth-child(4){animation-delay:3.3s}
@keyframes ice-glint{0%,100%{opacity:.35}50%{opacity:1}}
.hero-inner,.page-band .wrap,.detail-band .wrap{position:relative;z-index:1}
.hero h1,.page-band h1,.detail-band h1{color:var(--navy);max-width:18ch;text-shadow:0 1px 0 rgba(255,255,255,.7),0 0 24px rgba(255,255,255,.65)}
.page-band h1,.detail-band h1{max-width:none}
.hero h1 .shine{background:linear-gradient(90deg,#1557b0,#6b3fb8 55%,#b02a6b);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:none}
.hero .lead,.page-band .lead{color:#1c3258;font-weight:500}
.eyebrow{font-weight:600;font-size:.95rem;margin:0 0 .6rem;display:flex;align-items:center;gap:.4rem}
.hero .eyebrow,.page-band .eyebrow{color:#1557b0;text-transform:uppercase;letter-spacing:.08em;font-size:.82rem;font-weight:700}
.hero .eyebrow::before,.page-band .eyebrow::before{content:"\2726";color:#6b3fb8}
.lead{font-size:1.125rem;color:var(--muted);max-width:44rem}
.blade{position:absolute;left:0;right:0;bottom:-1px;width:100%;height:48px;display:block;z-index:1}
.page-band{padding:2.25rem 0 4.25rem}
.detail-band{padding:1.5rem 0 4.5rem}
/* detail pages: tint the ice with the listing's category color */
.detail-band::before{content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(ellipse 55% 90% at 100% 0%,color-mix(in srgb,var(--accent2,#38bdf8) 45%,transparent),transparent 70%),
    radial-gradient(ellipse 40% 70% at 0% 100%,color-mix(in srgb,var(--accent,#1557b0) 22%,transparent),transparent 70%)}

/* Search */
.search{margin-top:1.75rem;max-width:40rem}
.search label{font-weight:700;display:block;margin-bottom:.4rem;color:var(--navy)}
.search-row{display:flex;gap:.5rem;background:rgba(255,255,255,.75);padding:.4rem;border-radius:999px;border:1.5px solid rgba(21,87,176,.35);box-shadow:0 10px 30px rgba(21,87,176,.18),inset 0 1px 0 #fff;backdrop-filter:blur(4px)}
.search-row input{border:0;border-radius:999px;padding-left:1.1rem}
.search button{border:0;border-radius:999px;padding:0 1.5rem;font-weight:700;font-family:var(--display);color:#fff;
  background:linear-gradient(135deg,var(--blue),var(--violet));box-shadow:0 4px 14px rgba(74,43,143,.35);transition:transform .15s,box-shadow .15s}
.search button:hover{transform:translateY(-1px);box-shadow:0 6px 18px rgba(74,43,143,.5)}
.field>label,.field>summary{font-weight:600;display:block;margin-bottom:.35rem;color:var(--navy)}
input[type=search],select{width:100%;font:inherit;padding:.7rem .9rem;border:1.5px solid #9db8d3;border-radius:12px;background:#fff;color:var(--text);min-height:46px}
input[type=search]:focus,select:focus{border-color:var(--blue)}
button{font:inherit;cursor:pointer;min-height:46px}
.btn-secondary{background:#fff;border:2px solid var(--deep);color:var(--deep);border-radius:999px;padding:.4rem 1rem;font-weight:700;width:100%;transition:background .15s,color .15s}
.btn-secondary:hover{background:var(--deep);color:#fff}

/* Section headings */
.accent-h{display:flex;align-items:center;gap:.6rem}
.accent-h::before{content:"";width:28px;height:6px;border-radius:999px;background:linear-gradient(90deg,var(--glow),var(--violet));flex:none}

/* Category tiles */
.tiles{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:1rem}
.tile{position:relative;display:flex;flex-direction:column;gap:.35rem;padding:1.2rem 1.1rem 1.1rem;border-radius:var(--radius);text-decoration:none;color:var(--navy);height:100%;
  background:linear-gradient(160deg,#fff 0%,var(--tint) 100%);border:1px solid var(--line);border-top:5px solid var(--accent);
  box-shadow:0 2px 6px rgba(10,31,68,.06);transition:transform .18s ease,box-shadow .18s ease}
.tile:hover{transform:translateY(-5px);box-shadow:0 14px 28px rgba(10,31,68,.14);color:var(--navy)}
.tile-icon{width:48px;height:48px;border-radius:14px;display:grid;place-items:center;color:#fff;margin-bottom:.35rem;
  background:linear-gradient(135deg,var(--accent),var(--accent2,var(--accent)))}
.tile .icon{width:26px;height:26px}
.tile-name{font-family:var(--display);font-weight:700;font-size:1.05rem}
.tile-count{color:var(--accent);font-size:.9rem;font-weight:600}

/* Cities */
.city-list{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:.55rem}
.city-list a{display:inline-block;padding:.5rem 1rem;border-radius:999px;text-decoration:none;background:var(--ice);color:var(--navy);font-weight:500;border:1px solid var(--line);transition:background .15s,color .15s,transform .15s}
.city-list a:hover{background:var(--navy);color:#fff;transform:translateY(-2px)}
.city-list a:hover .count{color:#dbeafe}
.count{color:var(--muted)}
.note-block{margin-top:1rem}
.note-card{background:linear-gradient(135deg,var(--ice),#f4f0fd);border-radius:var(--radius);padding:1.5rem;border:1px solid var(--line)}
.note-card p{max-width:46rem}

/* Directory */
.dir-layout{display:grid;gap:1.5rem}
.filters{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:1.1rem;display:grid;gap:1rem;align-self:start;box-shadow:0 6px 20px rgba(10,31,68,.07)}
.filters fieldset{border:0;margin:0;padding:0}
.filters details>summary{cursor:pointer;display:list-item;margin-bottom:0}
.checks{list-style:none;padding:0;margin:.4rem 0 0;display:grid;grid-template-columns:1fr 1fr;gap:.15rem .5rem;font-size:.95rem}
.checks label{display:flex;gap:.45rem;align-items:center;min-height:34px}
.checks input{width:18px;height:18px;accent-color:var(--violet)}
.result-count{font-family:var(--display);font-weight:600;color:var(--navy);margin-top:0}
.cards{list-style:none;padding:0;margin:0;display:grid;gap:1.1rem}
.card{position:relative;border:1px solid var(--line);border-radius:var(--radius);padding:0 1.2rem 1.15rem;background:#fff;overflow:hidden;
  box-shadow:0 2px 8px rgba(10,31,68,.06);transition:transform .18s ease,box-shadow .18s ease}
.card::before{content:"";display:block;height:8px;margin:0 -1.2rem 1rem;background:linear-gradient(90deg,var(--accent),var(--accent2,var(--accent)))}
.card:hover{transform:translateY(-4px);box-shadow:0 14px 28px rgba(10,31,68,.13)}
.card:focus-within{box-shadow:0 0 0 3px var(--focus)}
.card h3{margin:.45rem 0 .1rem;font-size:1.15rem}
.card h3 a{text-decoration:none;color:var(--navy)}
.card h3 a::after{content:"";position:absolute;inset:0}
.card h3 a:hover{text-decoration:underline}
.card h3 a:focus-visible{outline:none}
.card-top{display:flex;align-items:center;gap:.4rem}
.card-cat{display:inline-flex;align-items:center;gap:.35rem}
.card-top{color:var(--accent);background:var(--tint);border-radius:999px;padding:.2rem .7rem .2rem .55rem;font-size:.82rem;font-weight:700;width:max-content}
.card-top .icon{width:18px;height:18px}
.card-loc{margin:0;color:var(--muted);font-size:.95rem}
.card-loc::before{content:"\2022  ";color:var(--accent)}
.card-desc{margin:.55rem 0;font-size:.97rem}
.chips{list-style:none;padding:0;margin:.5rem 0 0;display:flex;flex-wrap:wrap;gap:.4rem}
.chips li{background:var(--tint,var(--ice));border-radius:999px;padding:.2rem .75rem;font-size:.84rem;font-weight:500;color:var(--accent,var(--deep));border:1px solid rgba(10,31,68,.08)}
.badges{margin:.3rem 0}.badge{background:var(--deep);color:#fff;border-radius:6px;padding:.1rem .5rem;font-size:.8rem;margin-right:.3rem}
.no-results{padding:1rem;border:2px dashed var(--line);border-radius:var(--radius)}

/* Detail */
.crumbs{font-size:.9rem;margin-bottom:1rem;color:#24406b}
.crumbs a{color:var(--blue);font-weight:600}
.detail-band .pill{display:inline-flex;align-items:center;gap:.4rem;background:var(--accent);color:#fff;box-shadow:0 4px 12px rgba(10,31,68,.18);border-radius:999px;padding:.25rem .8rem;font-size:.85rem;font-weight:700}
.detail-band .pill .icon{width:18px;height:18px}
.detail-head{display:flex;gap:1rem;align-items:flex-start;position:relative}
.detail-loc{font-size:1.15rem;color:#1c3258;font-weight:500;margin:0}
.biz-logo{border-radius:12px;border:1px solid var(--line);background:#fff}
.detail{padding-top:1.25rem}
.detail-grid{display:grid;gap:1.75rem}
.detail-main p{max-width:44rem}
.detail-main h2{display:flex;align-items:center;gap:.6rem}
.detail-main h2::before{content:"";width:22px;height:6px;border-radius:999px;background:linear-gradient(90deg,var(--accent),var(--accent2,var(--accent)));flex:none}
.detail-side{background:#fff;border:1px solid var(--line);border-top:6px solid var(--accent);border-radius:var(--radius);padding:1.1rem 1.25rem;align-self:start;box-shadow:0 8px 24px rgba(10,31,68,.08)}
.facts{margin:0}
.facts div{padding:.6rem 0;border-bottom:1px solid var(--line)}
.facts div:last-child{border-bottom:0}
.facts dt{font-weight:700;font-size:.78rem;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.facts dd{margin:.1rem 0 0;overflow-wrap:anywhere}
.social{margin-right:.6rem}
.photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.5rem;margin:1rem 0}
.prose{max-width:46rem}
.placeholder-note{background:#fff4d6;border:1px solid #f0d58a;border-radius:var(--radius);padding:1rem 1.2rem;color:#4a3800}

/* Footer */
.site-footer{margin-top:2.5rem;padding:2rem 0;color:#dbe7fb;font-size:.95rem;background:linear-gradient(135deg,var(--navy),#1e2f6b)}
.site-footer p{margin:.25rem 0}
.site-footer p:first-child{font-family:var(--display);font-weight:600;color:#fff}

@media (min-width:760px){
  .dir-layout{grid-template-columns:290px 1fr}
  .filters{position:sticky;top:1rem}
  .site-header{position:sticky;top:0;backdrop-filter:saturate(1.4) blur(6px)}
  .cards{grid-template-columns:1fr 1fr}
  .detail-grid{grid-template-columns:1fr 330px}
  .hero{padding:4.5rem 0 6.5rem}
  .hero-art{opacity:.55}
  .blade{height:70px}
  .detail-band{padding-bottom:5.5rem}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important}.hero::after,.page-band::after,.detail-band::after,.hero-art .glints path{animation:none!important}.hero::after,.page-band::after,.detail-band::after{display:none}.tile:hover,.card:hover,.city-list a:hover,.search button:hover{transform:none}}

/* Contact form */
.contact-form{display:grid;gap:.4rem;max-width:560px;margin-top:1.25rem;padding:1.5rem;background:#fff;border:1px solid #dbe7f5;border-radius:16px;box-shadow:0 8px 24px rgba(20,40,90,.08)}
.contact-form label{font-weight:600;margin-top:.6rem;color:#14204a}
.contact-form input,.contact-form select,.contact-form textarea{font:inherit;padding:.7rem .85rem;border:1.5px solid #c5d6ee;border-radius:10px;background:#f8fbff;color:#14204a}
.contact-form input:focus,.contact-form select:focus,.contact-form textarea:focus{outline:3px solid #7aa7ff;outline-offset:1px;border-color:#2d5bd7}
.contact-form .btn-primary{margin-top:1rem;justify-self:start;padding:.75rem 1.6rem;border:0;border-radius:999px;font:inherit;font-weight:700;color:#fff;background:linear-gradient(90deg,#2d5bd7,#7b3fe4);cursor:pointer}
.contact-form .btn-primary:disabled{opacity:.6;cursor:wait}
.contact-form .hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}
.form-status{min-height:1.4em;font-weight:600;color:#14204a}
