: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}
/* Mobile nav control: hidden at desktop, sized up inside the 840px query below.
   Source order matters here: a media query adds no specificity, so this base
   display:none must precede the block that turns the control on. */
.nav-cb,.nav-burger,.nav-mobile{display:none}
@media(max-width:840px){
  /* Keep the header reachable while the disclosed menu scrolls independently. */
  .nav{position:relative;gap:10px}
  .mark{margin-right:auto}
  .nav .cta{order:2}
  .nav-cb{display:block;position:absolute;top:0;left:0;width:1px;height:1px;
    opacity:0;margin:0;pointer-events:none}
  .nav-burger{display:flex;order:3;flex:0 0 44px;width:44px;height:44px;
    flex-direction:column;align-items:center;justify-content:center;
    border-radius:12px;cursor:pointer}
  .nav-burger span{display:block;width:22px;height:2px;border-radius:2px;background:var(--plum);
    transition:transform .18s ease,opacity .18s ease}
  .nav-burger span+span{margin-top:5px}
  .nav-cb:focus-visible+.nav-burger{outline:2px solid var(--grape);outline-offset:2px}
  .nav-cb:checked+.nav-burger span:nth-child(1){transform:translateY(7px) rotate(45deg)}
  .nav-cb:checked+.nav-burger span:nth-child(2){opacity:0}
  .nav-cb:checked+.nav-burger span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
  .nav-links{display:none;position:absolute;top:100%;left:0;right:0;z-index:1;
    flex-direction:column;gap:0;font-size:1rem;background:var(--cream);
    max-height:calc(100vh - 100%);max-height:calc(100dvh - 100%);
    overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;
    scrollbar-color:#824C71 #F8F3E9;padding-bottom:env(safe-area-inset-bottom,0px);
    border-bottom:1px solid var(--line);box-shadow:0 18px 40px rgba(36,16,25,.12)}
  html:has(.nav-cb:checked){overflow:hidden}
  .nav-cb:checked~.nav-links{display:flex}
  .nav-links a{padding:15px 24px;border-bottom:1px solid var(--line)}
  .nav-links a:last-child{border-bottom:0}
}
@media(prefers-reduced-motion:reduce){.nav-burger span{transition:none}}
/* Desktop mega menus and a mobile drawer with native disclosure groups.
   CSS only. Shared block — mirrored verbatim into the inline-styled hand pages
   (literal colours on purpose: the hand pages' :root sets differ). */
.nav{position:relative;max-width:1560px}
.nav-mega{padding:16px 0;margin:-16px 0}
.nav-mega>a{display:inline-flex;align-items:center;gap:6px}
.nav-mega>a::after{content:'';width:6px;height:6px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:translateY(-2px) rotate(45deg)}
.nav-panel{display:none;position:absolute;left:0;right:0;top:100%;z-index:2;background:#F8F3E9;border:1px solid #E4D8C0;border-top:0;border-radius:0 0 20px 20px;box-shadow:0 18px 40px rgba(36,16,25,.12)}
.nav-mega:hover .nav-panel,.nav-mega:has(:focus-visible) .nav-panel{display:block}
.nav-panel-in{padding:30px 32px 34px;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:28px 56px}
.nav-panel h3{font-family:'Fraunces',Georgia,serif;font-size:1.3rem;font-weight:600;color:#241019;margin:0 0 12px;letter-spacing:-.01em}
.nav-panel p{font-size:.95rem;line-height:1.55;color:#241019;margin:0 0 14px;font-weight:400}
.nav-panel a{font-weight:400;color:#824C71;text-decoration:none;border-radius:6px;transition:background-color .15s ease,color .15s ease}
.nav-panel a:hover,.nav-panel a:focus-visible{color:#4A2545;background:#EDE2D8;text-decoration:none}
.nav-links a:focus-visible{outline:2px solid #824C71;outline-offset:4px}
.nav-panel .nav-more{display:block;font-weight:700;margin:0 0 8px}
.nav-near-head{display:flex;justify-content:space-between;align-items:baseline;gap:16px;margin:0 0 12px}
.nav-near-head h3{margin:0}
.nav-panel .nav-all{font-weight:700;white-space:nowrap}
.nav-towns{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 24px;font-size:1rem}
@media(min-width:841px){
  /* Stretch the hover region to bridge the header padding and dropdown. */
  .nav-links{align-self:stretch}
  .nav-mega{display:flex;align-items:center}
  .nav-mega>a{padding:6px 10px;margin:0 -10px;border-radius:8px;transition:background-color .15s ease,color .15s ease}
  .nav-mega:hover>a,.nav-mega:has(:focus-visible)>a{color:#4A2545;background:#F0E7D5}
  .nav-mega:hover>a::after,.nav-mega:has(:focus-visible)>a::after{transform:translateY(1px) rotate(225deg)}
  /* Keyboard focus owns one panel, even if the pointer rests over another. */
  .nav-links:has(:focus-visible) .nav-mega:not(:has(:focus-visible)) .nav-panel{display:none}
  .nav-links:has(:focus-visible) .nav-mega:not(:has(:focus-visible))>a{color:#6E5A63;background:transparent}
  .nav-links:has(:focus-visible) .nav-mega:not(:has(:focus-visible))>a::after{transform:translateY(-2px) rotate(45deg)}
  .nav-towns a{display:block;padding:6px 10px;margin:-6px -10px}
  .nav-panel .nav-more{padding:6px 10px;margin:0 -10px 2px}
  .nav-panel .nav-all{padding:6px 10px;margin:-6px -10px}
}
@media(prefers-reduced-motion:reduce){.nav-mega>a,.nav-panel a{transition:none}}
@media(min-width:1100px){
  .nav-towns{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:840px){
  .nav-links>.nav-mega{display:none}
  .nav-mobile{display:block;padding:8px 20px 16px;color:#4A2545}
  .nav-mobile-group,.nav-mobile>.nav-mobile-browse{border-bottom:1px solid #E4D8C0}
  .nav-mobile-group:last-child{border-bottom:0}
  .nav-links .nav-mobile-browse,.nav-mobile summary{display:flex;align-items:center;
    min-height:56px;padding:14px 4px;color:#4A2545;font-size:1rem;font-weight:700}
  .nav-mobile summary{justify-content:space-between;gap:20px;cursor:pointer;list-style:none}
  .nav-mobile summary::-webkit-details-marker{display:none}
  .nav-mobile summary::after{content:'';width:8px;height:8px;flex:none;
    border-right:2px solid currentColor;border-bottom:2px solid currentColor;
    transform:translateY(-2px) rotate(45deg);margin-right:4px}
  .nav-mobile details[open]>summary::after{transform:translateY(2px) rotate(225deg)}
  .nav-mobile summary:focus-visible,.nav-links .nav-mobile a:focus-visible{
    outline:2px solid #824C71;outline-offset:-2px;border-radius:4px}
  .nav-mobile ul{list-style:none;margin:0;padding:0 0 12px}
  .nav-links .nav-mobile li a{display:flex;align-items:center;min-height:44px;
    padding:10px 16px;border:0;font-size:1rem;line-height:1.4;font-weight:400;color:#6E5A63}
  .nav-mobile summary:hover,.nav-links .nav-mobile a:hover{color:#4A2545;background:#F0E7D5}
}
.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}
/* site footer (shared block — mirrored verbatim into the inline-styled hand pages) */
footer.site{background:#3A1D36;color:#D6C4CF;font-size:.9rem;line-height:1.55;padding:56px 0 28px}
footer.site .foot-in{max-width:1560px;margin:0 auto;padding:0 24px}
footer.site .foot-grid{display:grid;grid-template-columns:minmax(0,1.5fr) repeat(4,minmax(0,1fr));gap:36px 28px}
footer.site .foot-brand p{max-width:34ch;margin:14px 0 0;color:#D6C4CF}
footer.site .foot-mark{display:inline-flex;align-items:center;gap:9px;font-family:'Fraunces',Georgia,serif;font-weight:600;font-size:1.35rem;letter-spacing:-.02em;color:#fff;text-decoration:none}
footer.site .foot-mark .berry{width:30px;height:30px;flex:none;display:block}
footer.site h4{font-family:inherit;font-size:.72rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#B99DB0;margin:0 0 14px}
footer.site ul{list-style:none;margin:0;padding:0}
footer.site li{margin:0 0 9px}
footer.site a{color:#EBDDD0;text-decoration:none;font-weight:400;margin:0}
footer.site a:hover{color:#fff;text-decoration:underline}
footer.site .foot-disc{margin:40px 0 0;padding-top:22px;border-top:1px solid rgba(255,255,255,.12);font-size:.82rem;color:#B99DB0;max-width:90ch}
footer.site .foot-bar{display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px 24px;margin-top:18px;font-size:.8rem;color:#B99DB0}
footer.site .foot-bar a{color:#EBDDD0;font-weight:700}
@media(max-width:900px){footer.site .foot-grid{grid-template-columns:repeat(2,minmax(0,1fr))}footer.site .foot-brand{grid-column:1/-1}}
@media(max-width:480px){footer.site .foot-grid{grid-template-columns:1fr}}
/* 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)}
.chip-none{color:var(--ink-soft);font-weight:400;background:transparent}

/* --- 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}
