:root{
  --black:#000001; --plum:#4A2545; --plum-2:#3A1D36; --grape:#824C71;
  --teal:#90AA86; --teal-ink:#5E7357; --beige:#DCCCA3;
  --cream:#F8F3E9; --cream-2:#F0E7D5; --line:#E4D8C0;
  --ink:#241019; --ink-soft:#6E5A63;
  --good:#5E7357; --mid:#824C71; --low:#8A3A55;
  --r:20px; --maxw:1140px;
}
*{box-sizing:border-box;margin:0;padding:0}
body{background:var(--cream);color:var(--ink);
  font-family:'Atkinson Hyperlegible',system-ui,sans-serif;font-size:18px;line-height:1.6;
  -webkit-font-smoothing:antialiased}
h1,h2,h3{font-family:'Fraunces',Georgia,serif;line-height:1.1;color:var(--plum);letter-spacing:-.01em}
h1{font-size:clamp(2rem,4.6vw,3.2rem);font-weight:600}
h2{font-size:clamp(1.5rem,3vw,2.1rem);font-weight:600;margin-bottom:.35em}
h3{font-size:1.12rem;font-weight:600}
a{color:var(--grape);text-underline-offset:3px}
a:hover{color:var(--plum)}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 24px}
.wrapwide{max-width:1560px;margin:0 auto;padding:0 24px}
.wrapmid{max-width:1300px;margin:0 auto;padding:0 24px}
section{padding:clamp(40px,6vw,72px) 0}
section.band{background:var(--cream-2)}
header.site{position:sticky;top:0;z-index:60;background:rgba(248,243,233,.92);
  backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.nav{display:flex;align-items:center;justify-content:space-between;padding:13px 24px;
  max-width:var(--maxw);margin:0 auto}
.mark{font-family:'Fraunces',serif;font-weight:600;font-size:1.35rem;color:var(--plum);
  text-decoration:none;letter-spacing:-.02em;display:flex;align-items:center;gap:9px}
.berry{width:30px;height:30px;flex:none}
.nav-links{display:flex;gap:24px;font-size:.93rem}
.nav-links a{text-decoration:none;color:var(--ink-soft);font-weight:700}
.nav .cta{background:var(--grape);color:#fff;padding:8px 17px;border-radius:999px;font-weight:700;
  text-decoration:none;font-size:.88rem}
@media(max-width:840px){.nav-links{display:none}}
.crumbs{background:var(--cream-2);border-bottom:1px solid var(--line);font-size:.95rem;
  padding:9px 0;color:var(--ink-soft)}
.crumbs .wrap{display:flex;flex-wrap:wrap;gap:4px 28px}
.crumbs a{color:var(--ink-soft);text-decoration:none;font-weight:400}
.crumbs em{font-style:normal;font-weight:700;color:var(--ink)}
.crumbs a:hover{color:var(--grape)}
.crumbs i{font-style:normal;opacity:.5;margin:0 7px}
.ehero{background:var(--plum-2);color:var(--cream)}
.ehero .wrap{padding-top:clamp(48px,7vw,84px);padding-bottom:clamp(48px,7vw,84px)}
.ehero h1{color:var(--cream);max-width:22ch}
.ehero p.answer{color:#EBDDD0;font-size:1.14rem;line-height:1.6;max-width:62ch;margin:18px 0 28px}
.btn{display:inline-flex;align-items:center;gap:9px;background:var(--grape);color:#fff;font-weight:700;
  padding:14px 26px;border-radius:999px;text-decoration:none;font-size:1rem;
  box-shadow:0 10px 30px rgba(74,37,69,.4)}
.btn:hover{background:#6d3d5f;color:#fff}
.btn.ghost{background:transparent;border:2px solid rgba(235,221,208,.6);box-shadow:none;margin-left:10px}
.herogrid{display:grid;grid-template-columns:1.12fr .88fr;gap:clamp(28px,4vw,60px);align-items:center}
.herogrid>*{min-width:0}
.ehero .panel{border:none;box-shadow:0 26px 70px rgba(0,0,1,.45)}
.brandhead{display:flex;align-items:center;gap:22px;margin-bottom:10px}
.brandhead h1{margin:0}
.logocard{background:#fff;border-radius:18px;padding:14px;width:96px;height:96px;flex:none;
  display:flex;align-items:center;justify-content:center;box-shadow:0 14px 40px rgba(0,0,1,.35)}
.logocard img{max-width:100%;max-height:100%;display:block}
@media(max-width:880px){.herogrid{grid-template-columns:1fr}.herogrid .panel{margin-top:30px}}
.panel{background:#fff;border:1px solid var(--line);border-radius:var(--r);
  box-shadow:0 18px 50px rgba(74,37,69,.08);padding:28px 30px}
.panel.tight{padding:0;overflow:hidden}
.panel .kick{color:var(--grape);font-weight:700;letter-spacing:.14em;text-transform:uppercase;
  font-size:.72rem;margin-bottom:10px}
.meter{position:relative;display:inline-block;font-size:1.25rem;letter-spacing:1.5px;vertical-align:middle}
.meter.g{font-size:1.18rem;letter-spacing:1.5px}
.rvw-h .rstars{color:#FBBC04;font-size:1.05rem;letter-spacing:1px}
.rvw-h .rstars i{font-style:normal;color:var(--line)}
.meter.g .stars-fill{color:#FBBC04}
.pc-g .meter{font-size:1.28rem}
.pc-g em{font-style:normal;font-size:.95rem;color:var(--ink-soft)}
.stars-base{color:var(--line)}
.stars-fill{position:absolute;left:0;top:0;overflow:hidden;white-space:nowrap;display:inline-block}
.stars-fill.good{color:var(--teal)} .stars-fill.mid{color:var(--grape)} .stars-fill.low{color:var(--low)}
.mnum{font-family:'Fraunces',Georgia,serif;font-variant-numeric:lining-nums tabular-nums;font-weight:600;font-size:1.15rem;margin-left:10px;vertical-align:middle}
.mnum.good{color:var(--good)} .mnum.mid{color:var(--grape)} .mnum.low{color:var(--low)}
.facts{display:grid;grid-template-columns:1fr;gap:0}
.fact{padding:10px 0;border-top:1px solid var(--cream-2);display:flex;justify-content:space-between;align-items:baseline;gap:14px}
.fact:first-child{border-top:none}
.fact b{font-size:.8rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);flex:none}
.fact span{font-size:1.05rem;font-weight:700;color:var(--ink);text-align:right}
.fact .stars-base{color:var(--line)}
.tblwrap.plain{box-shadow:0 6px 18px rgba(74,37,69,.06)}
table.roster{min-width:680px}
.roster td.prov{white-space:normal;max-width:none;min-width:360px;line-height:1.35;padding-top:10px;padding-bottom:10px}
.roster td:not(.prov){width:1%}
.roster th:not(:nth-child(2)){width:1%}
th.sortable{cursor:pointer;user-select:none}
th.sortable:after{content:'\2195';opacity:.45;margin-left:7px;font-size:.8em}
th.sortable.s-asc:after{content:'\25B2';opacity:1}
th.sortable.s-desc:after{content:'\25BC';opacity:1}
.filterbar{display:flex;flex-wrap:wrap;justify-content:center;align-items:stretch;width:max-content;max-width:100%;
  margin:0 auto 24px;background:#fff;border:1px solid var(--line);border-radius:999px;overflow:hidden;
  box-shadow:0 6px 18px rgba(74,37,69,.06)}
.fseg{display:flex;flex-direction:column;gap:3px;padding:12px 28px;border-left:1px solid var(--cream-2)}
.fseg:first-child{border-left:none}
.fseg label{font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);font-weight:700}
.fseg select{appearance:none;-webkit-appearance:none;border:none;background:transparent;font-family:inherit;
  font-size:1.05rem;font-weight:700;color:var(--ink);outline:none;cursor:pointer;padding-right:20px;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8'><path d='M1 1l5 5 5-5' stroke='%234A2545' stroke-width='2' fill='none' stroke-linecap='round'/></svg>");background-repeat:no-repeat;background-position:right center}
.roster thead th{background:transparent;color:var(--ink-soft);border-bottom:2px solid var(--plum);padding:12px}
.roster tbody tr:nth-child(even) td{background:none}
.roster tbody tr:hover td{background:none}
.roster tr.me td{background:#F5ECF2}
.roster tr.me td:first-child{box-shadow:inset 3px 0 0 var(--grape)}
.pill.me{background:var(--grape);color:#fff;margin-left:9px}
.scorebar{margin:2px 0 18px}
.scorebar-h{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:8px}
.scorebar-h b{font-size:.95rem;color:var(--plum)}
.scorebar-h .val{font-family:'Fraunces',Georgia,serif;font-weight:600;font-size:1.45rem;line-height:1}
.scorebar-h .val i{font-style:normal;font-size:.85rem;font-weight:400;color:var(--ink-soft)}
.scorebar-h .val.good{color:var(--good)} .scorebar-h .val.mid{color:var(--grape)} .scorebar-h .val.low{color:var(--low)}
.track{height:12px;border-radius:999px;background:var(--cream-2);overflow:hidden}
.track .fill{display:block;height:100%;border-radius:999px;background:var(--grape);
  animation:fillup 1.2s cubic-bezier(.22,.9,.32,1) .25s backwards}
.track .fill.good{background:var(--teal-ink)} .track .fill.mid{background:var(--grape)} .track .fill.low{background:var(--low)}
.scorebar-cap{font-size:.9rem;color:var(--ink-soft);margin-top:7px}
@keyframes fillup{from{width:0}}
@media(prefers-reduced-motion:reduce){.track .fill{animation:none}}
.pill{font-size:.82rem;font-weight:700;padding:4px 11px;border-radius:999px;white-space:nowrap}
.pill.gov{background:#EFE7D5;color:#7A6634}
.pill.up{background:#E4EBDF;color:var(--teal-ink)}
.pill.down{background:#F3E0E4;color:var(--low)}
.pill.par{background:var(--cream-2);color:var(--ink-soft)}
.tblwrap{border-radius:var(--r);border:1px solid var(--line);background:#fff;overflow:hidden;
  box-shadow:0 18px 50px rgba(74,37,69,.1)}
.tblscroll{overflow-x:auto}
table{border-collapse:collapse;width:100%;min-width:640px;font-size:1.2rem}
thead th{background:var(--plum);color:var(--beige);text-align:left;padding:13px;font-weight:700;
  white-space:nowrap;font-size:.92rem;letter-spacing:.06em;text-transform:uppercase}
thead th.num{text-align:right}
tbody td{padding:0 13px;height:62px;border-bottom:1px solid var(--cream-2);vertical-align:middle;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:340px}
tbody tr:last-child td{border-bottom:none}
tbody tr:nth-child(even) td{background:#FCFAF4}
tbody tr:hover td{background:var(--cream)}
td.rk{color:var(--ink-soft);font-family:'Fraunces',Georgia,serif;font-variant-numeric:lining-nums tabular-nums;font-size:1.05rem;width:44px;text-align:center}
td.prov{font-weight:700;font-size:1.25rem}
td.prov a{color:var(--plum);text-decoration:none}
td.prov a:hover{color:var(--grape)}
td.num{text-align:right;font-family:'Fraunces',Georgia,serif;font-weight:600;font-size:1.2rem;font-variant-numeric:lining-nums tabular-nums}
td.rate{overflow:visible;min-width:170px}
td.msr{font-weight:700}
tr.sumrow td{background:var(--cream-2) !important;border-top:2px solid var(--plum);font-size:1rem}
tr.sumrow td.msr{color:var(--plum)}
/* map */
.mapcard{border:1px solid var(--line);border-radius:var(--r);overflow:hidden;background:#fff;
  box-shadow:0 18px 50px rgba(74,37,69,.1);display:flex;flex-direction:column;
  position:relative;z-index:0}
#homemap{height:620px;width:100%}
#brandmap{height:560px;width:100%}
.maphead{text-align:center;margin-bottom:30px}
.maphead h2{margin-bottom:20px}
.pcfilter{display:flex;justify-content:center;align-items:center;gap:14px}
.pcfilter input{font-family:inherit;font-size:1.12rem;padding:15px 26px;border-radius:999px;border:1px solid var(--line);
  background:#fff;width:340px;text-align:center;color:var(--ink);outline:none}
.pcfilter input:focus{border-color:var(--grape);box-shadow:0 0 0 3px rgba(130,76,113,.15)}
.pcfilter span{font-size:.88rem;color:var(--ink-soft)}
@media(max-width:640px){#homemap{height:400px}}
.mapkey{display:flex;gap:20px;padding:12px 16px;font-size:.92rem;color:var(--ink-soft);
  border-top:1px solid var(--line);background:#fff}
.mapkey i{display:inline-block;width:11px;height:11px;border-radius:50%;margin-right:6px;vertical-align:middle}
.place-pop .leaflet-popup-content-wrapper{border-radius:14px;padding:0;overflow:hidden;
  box-shadow:0 14px 40px rgba(36,16,25,.35)}
.place-pop .leaflet-popup-tip-container{display:none}
.pc .btn{display:flex;justify-content:center;margin-top:12px;padding:11px 14px;font-size:.9rem;box-shadow:none;color:#fff}
.leaflet-tooltip.place-tip{background:#fff;border:none;border-radius:14px;padding:0;white-space:normal;
  box-shadow:0 14px 40px rgba(36,16,25,.3);font-family:'Atkinson Hyperlegible',system-ui,sans-serif}
.leaflet-tooltip.place-tip:before{display:none}
.place-tip .pc-b{padding:10px 14px 12px;min-width:210px}
.place-tip .pc-a{white-space:normal}
.place-pop .leaflet-popup-content{margin:0;width:250px !important;
  font-family:'Atkinson Hyperlegible',system-ui,sans-serif;line-height:1.45}
.pc img{display:block;width:100%;height:118px;object-fit:cover}
.pc-b{padding:11px 14px 13px}
.pc-b>b{font-family:'Fraunces',Georgia,serif;font-size:1.02rem;color:var(--plum);line-height:1.25;
  display:block;margin-bottom:4px}
.pc-g{display:flex;align-items:center;gap:7px;font-size:.95rem;color:var(--ink-soft)}
.pc-g i{font-style:normal;font-family:'Fraunces',Georgia,serif;font-weight:600;color:var(--ink)}
.pc-a{font-size:.95rem;color:var(--ink-soft);white-space:nowrap;margin-top:8px;padding-top:9px;border-top:1px solid var(--cream-2)}
/* reviews wall */
.wall{columns:3;column-gap:22px}
@media(max-width:980px){.wall{columns:2}}
@media(max-width:640px){.wall{columns:1}}
.rvw,.ph{break-inside:avoid;margin:0 0 22px}
.rvw{background:#fff;border:1px solid var(--line);border-radius:16px;padding:20px 22px}
.rvw-h{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:9px}
.rvw-h b{font-size:1.05rem}
.rvw-h span{font-size:.9rem;color:var(--ink-soft)}
.rvw p{font-size:1.05rem;line-height:1.6;color:var(--ink);display:-webkit-box;
  -webkit-line-clamp:9;-webkit-box-orient:vertical;overflow:hidden}
.rvw p.mutetxt{color:var(--ink-soft);font-style:italic}
.ph{border-radius:16px;overflow:hidden;border:1px solid var(--line);
  box-shadow:0 12px 34px rgba(74,37,69,.1)}
.ph img{display:block;width:100%;height:auto}
.ctaband{background:var(--plum-2);color:var(--cream);text-align:center}
.ctaband h2{color:var(--cream)}
.ctaband p{color:#EBDDD0;max-width:52ch;margin:12px auto 26px}
footer.site{background:var(--black);color:#B9A8B0;font-size:.86rem;padding:34px 0}
footer.site .wrap{display:flex;justify-content:space-between;gap:18px;flex-wrap:wrap;align-items:center}
footer.site a{color:#D9C9B6;text-decoration:none;font-weight:700;margin-left:22px}
/* hub pages */
.hubgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
@media(max-width:980px){.hubgrid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:540px){.hubgrid{grid-template-columns:1fr}}
.hubcard{display:flex;flex-direction:column;gap:8px;background:#fff;border:1px solid var(--line);
  border-radius:var(--r);padding:22px 24px;text-decoration:none;color:var(--ink);
  box-shadow:0 6px 18px rgba(74,37,69,.06);transition:transform .15s,box-shadow .15s}
.hubcard:hover{transform:translateY(-2px);box-shadow:0 14px 34px rgba(74,37,69,.14)}
.hubcard b{font-family:'Fraunces',Georgia,serif;font-size:1.3rem;font-weight:600;color:var(--plum)}
.hubcard span{font-size:.95rem;color:var(--ink-soft)}
.chips{display:flex;flex-wrap:wrap;gap:10px}
.chip{display:inline-flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--line);
  border-radius:999px;padding:9px 18px;text-decoration:none;color:var(--ink);font-weight:700;font-size:.98rem}
.chip b{color:var(--grape);font-family:'Fraunces',Georgia,serif}
.chip:hover{border-color:var(--grape)}

/* --- blog (generate_blog.py) --- */
.artwrap{max-width:780px;padding:34px 24px 60px}
.article h1{font-size:clamp(1.9rem,4.2vw,2.7rem);margin:.2em 0 .3em}
.article h2{font-size:1.45rem;margin:1.7em 0 .5em}
.article h3{font-size:1.12rem;margin:1.3em 0 .4em}
.article p,.article li{font-size:1.06rem;line-height:1.72}
.article ul,.article ol{padding-left:1.3em;margin:.6em 0 1em}
.article li{margin:.3em 0}
.article table{border-collapse:collapse;width:100%;margin:1.1em 0;font-size:.98rem}
.article th,.article td{border:1px solid var(--line);padding:9px 12px;text-align:left;vertical-align:top}
.article th{background:var(--cream-2);font-family:'Fraunces',serif;color:var(--plum)}
.article blockquote{margin:1.1em 0;padding:10px 18px;border-left:3px solid var(--grape);background:var(--cream-2)}
.art-kicker{text-transform:uppercase;letter-spacing:.09em;font-size:.8rem;font-weight:700;color:var(--grape);margin:0}
.art-date{color:var(--ink-soft);font-size:.92rem;margin:.1em 0 1.4em}
.article .ctaband{margin:1.8em -24px}
/* Claymation CTA (Ky ruling 2026-08-24: replaces the flat plum ctaband on blog
   surfaces). Desktop overlays the copy on the image's deliberately empty left
   third behind a cream scrim sized to the text, not the frame. Below 720px the
   card stacks, so the copy never sits over the busy right side of the scene.
   width/height are declared on the img to hold CLS at 0. */
.claycta{margin:2em -24px}
.claycta-card{position:relative;border-radius:18px;overflow:hidden;border:1px solid var(--line);
  background:var(--cream-2);isolation:isolate}
.claycta-img{display:block;width:100%;height:100%;object-fit:cover;object-position:72% 50%}
.claycta-copy{padding:26px 24px 30px}
.claycta-copy h2{margin:0 0 .4em;font-size:1.5rem;color:var(--plum);line-height:1.2}
.claycta-copy p{margin:0 0 20px;color:var(--ink-soft);font-size:1rem;line-height:1.6;max-width:44ch}
.claycta .btn{display:inline-block}
@media(min-width:720px){
  .claycta-card{aspect-ratio:1600/679}
  .claycta-img{position:absolute;inset:0}
  /* The scrim is its own layer, wider than the text box it protects, so the
     fade never starts before the last word. Sizing the gradient to the copy
     column instead put "we match you with" on bare sky. */
  .claycta-card::before{content:'';position:absolute;inset:0;z-index:1;
    background:linear-gradient(90deg,var(--cream) 0%,var(--cream) 40%,
      rgba(248,243,233,.9) 55%,rgba(248,243,233,0) 74%)}
  .claycta-copy{position:relative;z-index:2;display:flex;flex-direction:column;justify-content:center;
    align-items:flex-start;height:100%;width:min(52%,410px);padding:34px 24px 34px 32px}
  .claycta-copy h2{font-size:1.7rem}
  .claycta-copy p{max-width:34ch}
}
.art-related{margin-top:2.4em;border-top:1px solid var(--line);padding-top:1.2em}
.art-related ul{list-style:none;padding:0}
.art-related li{margin:.45em 0}
.blogband{padding:26px 0}
.bloggrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px;margin-top:12px}
.bloglink{display:block;background:#fff;border:1px solid var(--line);border-radius:14px;padding:18px 20px;
  text-decoration:none;color:var(--ink);transition:border-color .15s}
.bloglink:hover{border-color:var(--grape);color:var(--ink)}
.bloglink h3{margin:0 0 6px;font-size:1.08rem;color:var(--plum)}
.blogband h2 a{color:inherit;text-decoration:none}
.blogband h2 a:hover{text-decoration:underline;text-underline-offset:4px}
.bloglink p{margin:0;font-size:.94rem;color:var(--ink-soft);line-height:1.5}
