/* Shared component kit for sample-site inner pages. Each site's style.css sets the --k-* variables. */
:root{--k-ui:"Inter",system-ui,-apple-system,sans-serif;--k-bg:#fff;--k-surface:#fff;--k-alt:#f4f4f4;--k-ink:#111;--k-muted:#555;--k-line:#e3e3e3;--k-accent:#222;--k-accent-ink:#fff;--k-dark:#111;--k-dark-ink:#f4f4f4;--k-head:inherit;--k-radius:12px;--k-btn-radius:8px;--k-upper:none;--k-head-weight:700;--k-track:-.01em}
.k-sec{padding:clamp(3rem,7vw,5.5rem) 0;background:var(--k-bg);color:var(--k-ink)}
.k-sec.alt{background:var(--k-alt)}.k-sec.dark{background:var(--k-dark);color:var(--k-dark-ink)}
.k-sec.dark .k-muted,.k-sec.dark p{color:color-mix(in srgb,var(--k-dark-ink) 78%,transparent)}
.k-sec.tight{padding:2.2rem 0}
.k-h1,.k-h2,.k-h3,.k-sec h2,.k-sec h3,.k-hero h1{font-family:var(--k-head);text-transform:var(--k-upper);font-weight:var(--k-head-weight);letter-spacing:var(--k-track);line-height:1.08;margin:0 0 .55em}
.k-sec h2{font-size:clamp(1.8rem,3.6vw,2.7rem)}.k-sec h3{font-size:1.25rem}
.k-sec.dark h2,.k-sec.dark h3{color:var(--k-dark-ink)}
.k-eyebrow{display:block;font:700 .74rem/1 var(--k-ui);letter-spacing:.18em;text-transform:uppercase;color:var(--k-accent);margin-bottom:1rem}
.k-sec.dark .k-eyebrow{color:var(--k-accent-2,var(--k-accent))}
.k-lede{font-size:clamp(1.05rem,1.8vw,1.25rem);max-width:44rem;color:var(--k-muted)}
.k-muted{color:var(--k-muted)}
.k-head{max-width:46rem;margin-bottom:2.4rem}.k-head.center{text-align:center;margin-inline:auto}
.k-btn{display:inline-flex;align-items:center;gap:.5rem;background:var(--k-accent);color:var(--k-accent-ink);padding:.95rem 1.5rem;border-radius:var(--k-btn-radius);font:700 .95rem var(--k-ui);text-decoration:none;border:2px solid var(--k-accent);cursor:pointer;transition:transform .15s,filter .15s}
.k-btn:hover{transform:translateY(-1px);filter:brightness(1.07)}
.k-btn.ghost{background:transparent;color:inherit;border-color:currentColor}
.k-btns{display:flex;flex-wrap:wrap;gap:.8rem;margin-top:1.6rem}
.k-link{color:var(--k-accent);font-weight:700;text-decoration:none;font-family:var(--k-ui);font-size:.95rem}.k-link:hover{text-decoration:underline}

/* Hero banner for inner pages */
.k-hero{position:relative;color:#fff;padding:clamp(4rem,10vw,7.5rem) 0 clamp(3rem,7vw,5rem);background:var(--k-dark);overflow:hidden}
.k-hero>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.9}
.k-hero::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(0,0,0,.78),rgba(0,0,0,.45) 60%,rgba(0,0,0,.25))}
.k-hero .container{position:relative;z-index:2}
.k-hero h1{font-size:clamp(2.3rem,5.5vw,4rem);max-width:18ch;color:#fff}
.k-hero p{font-size:clamp(1.05rem,1.8vw,1.25rem);max-width:40rem;color:rgba(255,255,255,.88)}
.k-hero .k-eyebrow{color:var(--k-accent-2,var(--k-accent))}
.k-hero.plain{background:var(--k-alt);color:var(--k-ink)}.k-hero.plain::after{display:none}.k-hero.plain h1{color:var(--k-ink)}.k-hero.plain p{color:var(--k-muted)}.k-hero.plain .k-eyebrow{color:var(--k-accent)}
.k-crumbs{font:500 .82rem var(--k-ui);margin-bottom:1.4rem;opacity:.85}.k-crumbs a{text-decoration:none}.k-crumbs a:hover{text-decoration:underline}.k-crumbs span{margin:0 .45rem;opacity:.6}

/* Layouts */
.k-split{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,5vw,4rem);align-items:center}
.k-split.rev>:first-child{order:2}
.k-split img,.k-media{width:100%;height:auto;aspect-ratio:3/2;object-fit:cover;border-radius:var(--k-radius);box-shadow:0 24px 50px -30px rgba(0,0,0,.55)}
@media(max-width:860px){.k-split{grid-template-columns:1fr}.k-split.rev>:first-child{order:0}}
.k-grid{display:grid;gap:1.4rem}.k-g2{grid-template-columns:repeat(2,1fr)}.k-g3{grid-template-columns:repeat(3,1fr)}.k-g4{grid-template-columns:repeat(4,1fr)}
@media(max-width:960px){.k-g3,.k-g4{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){.k-g2,.k-g3,.k-g4{grid-template-columns:1fr}}
.k-cols{display:grid;grid-template-columns:2fr 1fr;gap:clamp(2rem,5vw,4rem);align-items:start}@media(max-width:900px){.k-cols{grid-template-columns:1fr}}

/* Cards */
.k-card{background:var(--k-surface);border:1px solid var(--k-line);border-radius:var(--k-radius);overflow:hidden;display:flex;flex-direction:column;color:var(--k-ink);text-decoration:none;transition:transform .25s,box-shadow .25s}
a.k-card:hover{transform:translateY(-4px);box-shadow:0 20px 40px -26px rgba(0,0,0,.5)}
.k-card img{width:100%;height:auto;aspect-ratio:3/2;object-fit:cover}
.k-card .k-body{padding:1.4rem 1.5rem 1.6rem;display:flex;flex-direction:column;gap:.4rem;flex:1}
.k-card h3{margin:0;font-size:1.2rem}.k-card p{margin:0;color:var(--k-muted);font-size:.97rem}
.k-card .k-meta{font:700 .72rem var(--k-ui);letter-spacing:.12em;text-transform:uppercase;color:var(--k-accent)}
.k-card .k-more{margin-top:auto;padding-top:.6rem}
.k-sec.dark .k-card{background:color-mix(in srgb,var(--k-dark) 85%,#fff 15%);border-color:color-mix(in srgb,var(--k-dark) 70%,#fff 30%);color:var(--k-dark-ink)}
.k-sec.dark .k-card p{color:color-mix(in srgb,var(--k-dark-ink) 75%,transparent)}

/* Lists */
.k-checks{list-style:none;padding:0;margin:1rem 0;display:grid;gap:.55rem}
.k-checks li{position:relative;padding-left:1.8rem}
.k-checks li::before{content:"";position:absolute;left:0;top:.45em;width:1rem;height:.55rem;border-left:3px solid var(--k-accent);border-bottom:3px solid var(--k-accent);transform:rotate(-45deg)}
.k-checks.two{grid-template-columns:1fr 1fr}@media(max-width:600px){.k-checks.two{grid-template-columns:1fr}}

/* Stats */
.k-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;text-align:center}
@media(max-width:700px){.k-stats{grid-template-columns:1fr 1fr}}
.k-stats b{display:block;font-family:var(--k-head);font-size:clamp(1.8rem,4vw,2.6rem);line-height:1.1;color:var(--k-accent)}
.k-stats span{font:600 .85rem var(--k-ui);opacity:.85}

/* Steps */
.k-steps{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(4,1fr);gap:1.2rem;counter-reset:k}
@media(max-width:900px){.k-steps{grid-template-columns:1fr 1fr}}@media(max-width:560px){.k-steps{grid-template-columns:1fr}}
.k-steps li{counter-increment:k;background:var(--k-surface);border:1px solid var(--k-line);border-radius:var(--k-radius);padding:1.5rem}
.k-steps li::before{content:counter(k,decimal-leading-zero);display:block;font-family:var(--k-head);font-size:1.8rem;color:var(--k-accent);margin-bottom:.4rem}
.k-steps h3{font-size:1.1rem;margin-bottom:.3rem}.k-steps p{margin:0;color:var(--k-muted);font-size:.95rem}

/* Gallery */
.k-gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}
.k-gallery figure{margin:0;position:relative;overflow:hidden;border-radius:var(--k-radius);background:var(--k-alt)}
.k-gallery img{width:100%;height:100%;aspect-ratio:4/3;object-fit:cover;transition:transform .6s}
.k-gallery figure:hover img{transform:scale(1.04)}
.k-gallery figcaption{position:absolute;left:0;right:0;bottom:0;padding:2rem 1rem .8rem;color:#fff;font:600 .9rem var(--k-ui);background:linear-gradient(transparent,rgba(0,0,0,.7))}
.k-gallery .wide{grid-column:span 2}
@media(max-width:800px){.k-gallery{grid-template-columns:1fr 1fr}}@media(max-width:520px){.k-gallery{grid-template-columns:1fr}.k-gallery .wide{grid-column:auto}}

/* Team */
.k-person img{width:100%;height:auto;aspect-ratio:1/1;object-fit:cover;border-radius:var(--k-radius);margin-bottom:1rem}
.k-person h3{margin:0 0 .15rem;font-size:1.25rem}.k-person .role{font:700 .78rem var(--k-ui);letter-spacing:.08em;text-transform:uppercase;color:var(--k-accent);margin:0 0 .6rem}
.k-person p{color:var(--k-muted);font-size:.97rem}
.k-bio{display:grid;grid-template-columns:320px 1fr;gap:clamp(1.5rem,4vw,3.5rem);align-items:start;padding:2.5rem 0;border-top:1px solid var(--k-line)}
.k-bio:first-of-type{border-top:0}
.k-bio img{width:100%;aspect-ratio:1/1;object-fit:cover;border-radius:var(--k-radius)}
@media(max-width:760px){.k-bio{grid-template-columns:1fr}.k-bio img{max-width:320px}}
.k-bio dl{display:grid;grid-template-columns:auto 1fr;gap:.35rem 1rem;font-size:.95rem;margin:1.2rem 0 0}.k-bio dt{font-weight:700}.k-bio dd{margin:0;color:var(--k-muted)}

/* Reviews */
.k-rating{display:flex;align-items:center;gap:1.2rem;flex-wrap:wrap;margin-bottom:2rem}
.k-rating b{font-family:var(--k-head);font-size:3rem;line-height:1}
.k-stars{color:#f5a623;letter-spacing:.12em;font-size:1.1rem}
.k-review{background:var(--k-surface);border:1px solid var(--k-line);border-radius:var(--k-radius);padding:1.5rem;margin:0;display:flex;flex-direction:column;gap:.7rem}
.k-review p{margin:0;font-size:1rem;color:var(--k-ink)}
.k-review footer{font:600 .85rem var(--k-ui);color:var(--k-muted);margin-top:auto}
.k-sec.dark .k-review{background:color-mix(in srgb,var(--k-dark) 85%,#fff 15%);border-color:transparent}.k-sec.dark .k-review p{color:var(--k-dark-ink)}

/* FAQ */
.k-faq details{border-bottom:1px solid var(--k-line);padding:1.1rem 0}
.k-faq summary{cursor:pointer;font-weight:700;font-size:1.08rem;list-style:none;display:flex;justify-content:space-between;gap:1rem}
.k-faq summary::-webkit-details-marker{display:none}
.k-faq summary::after{content:"+";color:var(--k-accent);font-size:1.4rem;line-height:1}
.k-faq details[open] summary::after{content:"\2212"}
.k-faq details p{margin:.7rem 0 0;color:var(--k-muted);max-width:48rem}

/* Prose / article */
.k-prose{max-width:46rem;font-size:1.06rem;line-height:1.75}
.k-prose h2{font-size:clamp(1.5rem,3vw,2rem);margin:2.2rem 0 .7rem}.k-prose h3{margin:1.6rem 0 .5rem}
.k-prose p,.k-prose ul,.k-prose ol{margin:0 0 1.1rem}.k-prose li{margin:.35rem 0}
.k-prose img{width:100%;border-radius:var(--k-radius);margin:1.2rem 0}
.k-prose blockquote{margin:1.6rem 0;padding:.4rem 0 .4rem 1.2rem;border-left:4px solid var(--k-accent);font-size:1.15rem}
.k-answer{background:var(--k-alt);border-left:4px solid var(--k-accent);border-radius:0 var(--k-radius) var(--k-radius) 0;padding:1.1rem 1.3rem;margin:0 0 1.6rem}
.k-byline{display:flex;align-items:center;gap:.8rem;font:500 .9rem var(--k-ui);color:var(--k-muted);margin:0 0 1.6rem}
.k-byline img{width:44px;height:44px;border-radius:50%;object-fit:cover}
.k-side{position:sticky;top:110px;display:grid;gap:1.2rem}
@media(max-width:900px){.k-side{position:static}}
.k-box{background:var(--k-alt);border:1px solid var(--k-line);border-radius:var(--k-radius);padding:1.5rem}
.k-box h3{font-size:1.1rem;margin:0 0 .6rem}.k-box ul{padding-left:1.1rem;margin:.4rem 0}
.k-box.accent{background:var(--k-accent);color:var(--k-accent-ink);border:0}.k-box.accent h3,.k-box.accent p{color:var(--k-accent-ink)}
.k-box.accent .k-btn{background:var(--k-accent-ink);color:var(--k-accent);border-color:var(--k-accent-ink)}

/* Tables */
.k-table{overflow-x:auto;border:1px solid var(--k-line);border-radius:var(--k-radius);background:var(--k-surface)}
.k-table table{width:100%;border-collapse:collapse;min-width:560px}
.k-table th,.k-table td{padding:.9rem 1.1rem;text-align:left;border-bottom:1px solid var(--k-line);vertical-align:top}
.k-table th{font:700 .75rem var(--k-ui);letter-spacing:.1em;text-transform:uppercase;color:var(--k-muted);background:var(--k-alt)}
.k-table tr:last-child td{border-bottom:0}
.k-sec.dark .k-table{background:transparent;border-color:color-mix(in srgb,var(--k-dark) 70%,#fff 30%)}.k-sec.dark .k-table th{background:transparent;color:var(--k-accent)}.k-sec.dark .k-table td{border-color:color-mix(in srgb,var(--k-dark) 70%,#fff 30%)}

/* Pricing */
.k-price{background:var(--k-surface);border:1px solid var(--k-line);border-radius:var(--k-radius);padding:2rem;display:flex;flex-direction:column;position:relative}
.k-price .amt{font-family:var(--k-head);font-size:3rem;line-height:1;margin:.5rem 0}.k-price .amt small{font:500 1rem var(--k-ui);color:var(--k-muted)}
.k-price ul{flex:1}.k-price.feat{border:2px solid var(--k-accent)}
.k-price .flag{position:absolute;top:-12px;left:1.5rem;background:var(--k-accent);color:var(--k-accent-ink);font:800 .7rem var(--k-ui);letter-spacing:.12em;text-transform:uppercase;padding:.3rem .7rem;border-radius:99px}
.k-sec.dark .k-price{background:color-mix(in srgb,var(--k-dark) 85%,#fff 15%);border-color:transparent;color:var(--k-dark-ink)}.k-sec.dark .k-price.feat{border-color:var(--k-accent)}

/* Forms */
.k-form{background:var(--k-surface);border:1px solid var(--k-line);border-radius:var(--k-radius);padding:clamp(1.3rem,3vw,2.2rem);display:grid;grid-template-columns:1fr 1fr;gap:1rem;color:var(--k-ink)}
.k-form .full{grid-column:1/-1}.k-form button{grid-column:1/-1}
.k-form textarea{min-height:120px}
@media(max-width:600px){.k-form{grid-template-columns:1fr}}
.k-form .note{grid-column:1/-1;font-size:.82rem;color:var(--k-muted);margin:0}

/* Contact / map */
.k-map{position:relative;border-radius:var(--k-radius);overflow:hidden;min-height:300px;background:
  linear-gradient(90deg,transparent 49.5%,rgba(255,255,255,.9) 49.5% 50.5%,transparent 50.5%) 0 0/120px 120px,
  linear-gradient(0deg,transparent 49.5%,rgba(255,255,255,.9) 49.5% 50.5%,transparent 50.5%) 0 0/120px 120px,
  linear-gradient(30deg,transparent 48%,rgba(255,255,255,.95) 48% 52%,transparent 52%) 0 0/100% 100%,
  #e7ecef;border:1px solid var(--k-line)}
.k-map .park{position:absolute;left:12%;top:18%;width:22%;height:26%;background:#cfe3c5;border-radius:8px}
.k-map .water{position:absolute;right:-5%;bottom:-10%;width:40%;height:45%;background:#c7dbe8;border-radius:50%}
.k-map .pin{position:absolute;left:52%;top:46%;transform:translate(-50%,-100%);width:34px;height:34px;background:var(--k-accent);border-radius:50% 50% 50% 0;rotate:-45deg;box-shadow:0 6px 14px rgba(0,0,0,.35)}
.k-map .pin::after{content:"";position:absolute;inset:10px;border-radius:50%;background:#fff}
.k-map .label{position:absolute;left:52%;top:52%;transform:translateX(-50%);background:#fff;color:#111;font:700 .8rem var(--k-ui);padding:.4rem .7rem;border-radius:6px;box-shadow:0 4px 12px rgba(0,0,0,.2);white-space:nowrap}
.k-hours{width:100%;border-collapse:collapse;font-size:.97rem}.k-hours td{padding:.45rem 0;border-bottom:1px dashed var(--k-line)}.k-hours td:last-child{text-align:right;font-weight:600}
.k-contact-list{list-style:none;padding:0;margin:0;display:grid;gap:1rem}.k-contact-list b{display:block;font:700 .75rem var(--k-ui);letter-spacing:.12em;text-transform:uppercase;color:var(--k-accent)}

/* Trust badges & logos */
.k-badges{display:flex;flex-wrap:wrap;gap:.7rem}
.k-badge{display:inline-flex;align-items:center;gap:.5rem;border:1px solid var(--k-line);background:var(--k-surface);border-radius:99px;padding:.55rem 1rem;font:700 .82rem var(--k-ui);color:var(--k-ink)}
.k-badge::before{content:"";width:.6rem;height:.6rem;border-radius:50%;background:var(--k-accent)}
.k-chips{display:flex;flex-wrap:wrap;gap:.5rem;list-style:none;padding:0;margin:0}.k-chips li{background:var(--k-alt);border:1px solid var(--k-line);border-radius:99px;padding:.45rem .9rem;font-size:.9rem;font-weight:600}

/* CTA band */
.k-cta{background:var(--k-accent);color:var(--k-accent-ink);padding:clamp(2.6rem,6vw,4rem) 0}
.k-cta .container{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1.5rem}
.k-cta h2{margin:0;font-family:var(--k-head);text-transform:var(--k-upper);font-size:clamp(1.6rem,3.4vw,2.4rem);color:var(--k-accent-ink);line-height:1.1;font-weight:var(--k-head-weight)}
.k-cta p{margin:.4rem 0 0;opacity:.9}
.k-cta .k-btn{background:var(--k-accent-ink);color:var(--k-accent);border-color:var(--k-accent-ink)}
.k-cta .k-btn.ghost{background:transparent;color:var(--k-accent-ink);border-color:var(--k-accent-ink)}

/* Footer */
.k-foot{background:var(--k-dark);color:color-mix(in srgb,var(--k-dark-ink) 80%,transparent);padding:4rem 0 1.4rem;font:400 .95rem/1.6 var(--k-ui)}
.k-foot-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1.2fr;gap:2.4rem}
@media(max-width:900px){.k-foot-grid{grid-template-columns:1fr 1fr}}@media(max-width:560px){.k-foot-grid{grid-template-columns:1fr}}
.k-foot .brand{font-family:var(--k-head);font-size:1.5rem;color:var(--k-dark-ink);margin:0 0 .6rem;text-transform:var(--k-upper);font-weight:var(--k-head-weight)}
.k-foot h4{font:800 .74rem var(--k-ui);letter-spacing:.16em;text-transform:uppercase;color:var(--k-accent-2,var(--k-accent));margin:0 0 1rem}
.k-foot ul{list-style:none;padding:0;margin:0;display:grid;gap:.5rem}
.k-foot a{color:inherit;text-decoration:none}.k-foot a:hover{color:var(--k-dark-ink);text-decoration:underline}
.k-social{display:flex;gap:.6rem;margin-top:1.2rem}
.k-social a{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;border:1px solid color-mix(in srgb,var(--k-dark-ink) 30%,transparent)}
.k-social svg{width:18px;height:18px;fill:currentColor}
.k-legal{display:flex;flex-wrap:wrap;justify-content:space-between;gap:1rem;margin-top:3rem;padding-top:1.3rem;border-top:1px solid color-mix(in srgb,var(--k-dark-ink) 18%,transparent);font-size:.82rem}
.k-legal nav{display:flex;gap:1.2rem;flex-wrap:wrap}

/* Product detail */
.k-pdp{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(2rem,5vw,4rem);align-items:start}
@media(max-width:860px){.k-pdp{grid-template-columns:1fr}}
.k-pdp-main img{width:100%;aspect-ratio:1/1;object-fit:cover;border-radius:var(--k-radius)}
.k-thumbs{display:grid;grid-template-columns:repeat(4,1fr);gap:.6rem;margin-top:.6rem}
.k-thumbs button{padding:0;border:2px solid transparent;border-radius:calc(var(--k-radius) - 4px);overflow:hidden;cursor:pointer;background:none}
.k-thumbs button[aria-pressed=true]{border-color:var(--k-accent)}
.k-thumbs img{width:100%;aspect-ratio:1/1;object-fit:cover;display:block}
.k-pdp .price{font-family:var(--k-head);font-size:2rem;margin:.3rem 0 1rem}
.k-qty{display:flex;align-items:center;border:1.5px solid var(--k-line);border-radius:99px;width:max-content}
.k-qty button{background:none;border:0;width:42px;height:44px;font-size:1.2rem;cursor:pointer;color:inherit}.k-qty input{width:44px;text-align:center;border:0;min-height:0;padding:0;background:transparent}
.k-buy{display:flex;gap:.8rem;align-items:center;flex-wrap:wrap;margin:1.4rem 0}
.k-swatches{display:flex;gap:.6rem;margin:.6rem 0 1rem}.k-swatches button{width:34px;height:34px;border-radius:50%;border:2px solid #fff;outline:2px solid var(--k-line);cursor:pointer}.k-swatches button[aria-pressed=true]{outline-color:var(--k-accent)}
.sw-moss{background:#2b3a22}.sw-cream{background:#efe3c9}.sw-clay{background:#c1693a}
.k-acc details{border-top:1px solid var(--k-line);padding:1rem 0}.k-acc summary{cursor:pointer;font-weight:700}.k-acc p{margin:.6rem 0 0;color:var(--k-muted)}

/* Cart */
.k-cart-row{display:grid;grid-template-columns:96px 1fr auto;gap:1rem;align-items:center;padding:1.1rem 0;border-bottom:1px solid var(--k-line)}
.k-cart-row img{width:96px;height:96px;object-fit:cover;border-radius:10px}
.k-summary{display:grid;gap:.6rem}.k-summary div{display:flex;justify-content:space-between}.k-summary .tot{font-size:1.2rem;font-weight:800;border-top:1px solid var(--k-line);padding-top:.8rem}
.k-pay{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:1rem}.k-pay span{border:1px solid var(--k-line);border-radius:6px;padding:.3rem .6rem;font:800 .72rem var(--k-ui);background:#fff;color:#222}

/* Schedule filter */
.k-filter{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.4rem}
.k-filter button{background:transparent;border:1.5px solid currentColor;color:inherit;border-radius:99px;padding:.5rem 1rem;font:700 .82rem var(--k-ui);cursor:pointer}
.k-filter button[aria-pressed=true]{background:var(--k-accent);border-color:var(--k-accent);color:var(--k-accent-ink)}
tr[hidden]{display:none}
.k-cols>*,.k-split>*,.k-grid>*{min-width:0}
.k-prose blockquote{background:none;color:inherit;border-radius:0}.k-prose blockquote p{color:inherit}
.k-hours{min-width:0!important;width:100%}.k-hours td,.k-hours th{padding:.45rem 0;border-left:0;border-right:0}

/* ===== Concept-site interactions (modals, booking, confirmations, tools). Inherit each site's --k-* tokens. ===== */
.hdr{transition:box-shadow .25s,background-color .25s}
.hdr.k-scrolled{box-shadow:0 10px 30px -18px rgba(0,0,0,.45)}
body.k-noscroll{overflow:hidden}
.k-overlay{position:fixed;inset:0;z-index:500;background:rgba(10,12,16,.62);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);display:grid;place-items:center;padding:1rem;animation:k-fade .2s ease}
.k-modal{background:var(--k-surface);color:var(--k-ink);width:min(520px,100%);max-height:calc(100vh - 2rem);overflow:auto;border-radius:var(--k-radius);box-shadow:0 40px 90px -30px rgba(0,0,0,.6);animation:k-pop .25s cubic-bezier(.2,.8,.2,1)}
.k-modal.wide{width:min(680px,100%)}
.k-modal-head{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1.1rem 1.4rem;border-bottom:1px solid var(--k-line);position:sticky;top:0;background:var(--k-surface);z-index:1}
.k-modal-head h2{margin:0;font-size:1.25rem;font-family:var(--k-head);font-weight:var(--k-head-weight)}
.k-modal-body{padding:1.4rem}
.k-modal-body .k-form{border:0;padding:0;background:none}
.k-x{background:none;border:0;font-size:1.8rem;line-height:1;cursor:pointer;color:var(--k-muted);padding:.2rem .5rem;border-radius:6px}
.k-x:hover{color:var(--k-ink);background:var(--k-alt)}
@keyframes k-fade{from{opacity:0}}@keyframes k-pop{from{opacity:0;transform:translateY(12px) scale(.98)}}
.k-toast{position:fixed;left:50%;bottom:1.5rem;transform:translate(-50%,150%);background:#111;color:#fff;padding:.8rem 1.2rem;border-radius:10px;font:600 .92rem var(--k-ui);z-index:600;transition:transform .3s;box-shadow:0 12px 30px rgba(0,0,0,.35)}
.k-toast.show{transform:translate(-50%,0)}
.k-success{text-align:center;padding:1.6rem 1rem;background:var(--k-surface);color:var(--k-ink);border-radius:var(--k-radius);border:1px solid var(--k-line)}
.k-modal .k-success{border:0;padding:.4rem 0}
.k-success h3{font-family:var(--k-head);font-weight:var(--k-head-weight);font-size:1.45rem;margin:.6rem 0 .5rem}
.k-success p{margin:.4rem auto;max-width:34rem;color:var(--k-muted)}
.k-check{width:64px;height:64px;border-radius:50%;margin:0 auto;display:grid;place-items:center;font-size:2rem;font-weight:800;background:var(--k-accent);color:var(--k-accent-ink);animation:k-pop .35s cubic-bezier(.2,.8,.2,1)}
.k-success .k-btns{justify-content:center;margin-top:1rem}
.k-concept{font-size:.74rem!important;opacity:.7;margin-top:1.2rem!important}
.k-sum{display:grid;grid-template-columns:max-content 1fr;gap:.45rem 1.2rem;text-align:left;max-width:30rem;margin:1.2rem auto 0;padding:1rem 1.2rem;background:var(--k-alt);border-radius:calc(var(--k-radius) - 2px);font-size:.95rem}
.k-sum dt{font-weight:700;color:var(--k-ink)}.k-sum dd{margin:0;color:var(--k-muted)}
.k-err{display:block;color:#c62828;font-size:.82rem;font-weight:600;margin-top:.3rem}
[aria-invalid=true]{border-color:#c62828!important;box-shadow:0 0 0 3px rgba(198,40,40,.15)}
.k-linkbtn{background:none;border:0;padding:0;color:inherit;font:inherit;font-weight:700;text-decoration:underline;cursor:pointer}
.k-btn.wide{width:100%;justify-content:center}
.k-btn:disabled{opacity:.5;cursor:not-allowed;transform:none}
.k-agree{display:flex!important;gap:.6rem;align-items:flex-start;font-weight:500!important}
.k-agree input{width:auto;min-height:0;margin-top:.25rem}
.k-scrollbox{max-height:140px;overflow:auto;padding:.8rem 1rem;background:var(--k-alt);border-radius:8px;font-size:.88rem}
.k-total{display:flex;justify-content:space-between;align-items:center;padding:.8rem 1rem;background:var(--k-alt);border-radius:8px;font-size:1.05rem}
.k-chips-sel{display:flex;flex-wrap:wrap;gap:.5rem}
.k-chips-sel button{flex:1;min-width:70px;padding:.7rem .9rem;border-radius:var(--k-btn-radius);border:1.5px solid var(--k-line);background:var(--k-surface);color:var(--k-ink);font:700 1rem var(--k-ui);cursor:pointer}
.k-chips-sel button[aria-pressed=true]{border-color:var(--k-accent);background:var(--k-accent);color:var(--k-accent-ink)}
/* booking */
.k-booker{background:var(--k-surface);color:var(--k-ink);border:1px solid var(--k-line);border-radius:var(--k-radius);padding:clamp(1.2rem,3vw,2rem);box-shadow:0 30px 60px -40px rgba(0,0,0,.45);scroll-margin-top:100px}
.k-modal .k-booker{border:0;padding:0;box-shadow:none}
.k-bk-top h3{font-family:var(--k-head);font-weight:var(--k-head-weight);font-size:1.4rem;margin:0 0 .2rem}
.k-bk-top p{margin:0 0 1.1rem}
.k-bk-opts{display:grid;grid-template-columns:1fr 1fr;gap:.9rem;margin-bottom:1rem}
@media(max-width:560px){.k-bk-opts{grid-template-columns:1fr}}
.k-bk-label{font-weight:700;font-size:.9rem;margin:1rem 0 .5rem}
.k-days{display:flex;gap:.5rem;overflow-x:auto;padding:.2rem .1rem .6rem;scroll-snap-type:x mandatory}
.k-day{flex:0 0 66px;scroll-snap-align:start;display:grid;justify-items:center;gap:.05rem;padding:.6rem .3rem;border-radius:calc(var(--k-radius) - 2px);border:1.5px solid var(--k-line);background:var(--k-surface);color:var(--k-ink);cursor:pointer;font-family:var(--k-ui)}
.k-day b{font-size:1.3rem;line-height:1.2}.k-day small{font-size:.72rem;opacity:.75}
.k-day:hover:not(:disabled){border-color:var(--k-accent)}
.k-day[aria-pressed=true]{background:var(--k-accent);border-color:var(--k-accent);color:var(--k-accent-ink)}
.k-day:disabled{opacity:.35;cursor:not-allowed;text-decoration:line-through}
.k-slots{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:.5rem;margin-bottom:1.2rem;min-height:2.6rem}
.k-slots p{grid-column:1/-1;margin:.3rem 0}
.k-slot{padding:.6rem .4rem;border-radius:var(--k-btn-radius);border:1.5px solid var(--k-line);background:var(--k-surface);color:var(--k-ink);font:600 .9rem var(--k-ui);cursor:pointer}
.k-slot:hover:not(:disabled){border-color:var(--k-accent)}
.k-slot[aria-pressed=true]{background:var(--k-accent);color:var(--k-accent-ink);border-color:var(--k-accent)}
.k-slot:disabled{opacity:.35;cursor:not-allowed;text-decoration:line-through}
.k-bk-form{border:0!important;padding:0!important;background:none!important}
.k-bk-pick{display:flex;flex-wrap:wrap;gap:.3rem 1rem;align-items:baseline;padding:.9rem 1rem;border-radius:calc(var(--k-radius) - 2px);background:var(--k-alt)}
.k-bk-pick b{font-size:1.02rem}.k-bk-pick span{color:var(--k-muted);flex:1}
/* social + reviews */
.k-profile{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem}
.k-profile div{display:grid}
.k-feed{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;border-radius:8px;overflow:hidden}
.k-feed img{width:100%;aspect-ratio:1;object-fit:cover}
.k-rate{display:flex;gap:.2rem;margin:.6rem 0 .9rem}
.k-rate button{background:none;border:0;font-size:2.2rem;line-height:1;color:#c9c9c9;cursor:pointer;padding:0 .1rem}
.k-rate button.on,.k-rate button:hover{color:#f5b400}
.k-review-form{display:grid;gap:.7rem}
/* dental insurance */
.k-ins{display:grid;gap:.5rem;max-width:520px;margin-top:1.2rem}
.k-ins label{font-weight:700}
.k-ins-out p{margin:.4rem 0 0;padding:.8rem 1rem;border-radius:8px;font-weight:600}
.k-ins-out .ok{background:#e4f6ee;color:#0b5c3c}.k-ins-out .info{background:var(--k-alt);color:var(--k-ink)}
/* roofing estimator + zip */
.k-est{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem;background:var(--k-surface);color:var(--k-ink);border:1px solid var(--k-line);border-radius:var(--k-radius);padding:clamp(1.2rem,3vw,2rem)}
.k-est .full{grid-column:1/-1}
@media(max-width:600px){.k-est{grid-template-columns:1fr}}
.k-est input[type=range]{padding:0;min-height:0;accent-color:var(--k-accent);border:0}
.k-est output{font-weight:800}
.k-est-out{display:grid;gap:.4rem;padding:1.2rem;border-radius:calc(var(--k-radius) - 2px);background:var(--k-dark);color:var(--k-dark-ink)}
.k-est-out b{font:var(--k-head-weight) clamp(1.7rem,4vw,2.4rem)/1.1 var(--k-head);color:var(--k-accent)}
.k-est-out small{opacity:.85}.k-est-out .k-btn{justify-self:start;margin-top:.5rem}
.k-zip{display:grid;gap:.5rem;max-width:460px}
.k-zip label{font-weight:700}
.k-zip-row{display:flex;gap:.5rem}.k-zip-row input{flex:1}
.k-zip-out{margin:.2rem 0 0;font-weight:600;min-height:1.4em}
.k-zip-out.good{color:#0b7a4b}.k-zip-out.bad{color:#c62828}.k-zip-out.info{color:var(--k-muted)}
/* gym schedule cells become buttons */
.sched .cl[role=button]{cursor:pointer;transition:transform .12s,filter .12s}
.sched .cl[role=button]:hover,.sched .cl[role=button]:focus-visible{filter:brightness(1.25);transform:translateY(-1px)}
.k-dim{opacity:.3}
/* newsletter */
.k-news{display:flex;gap:.5rem;margin-top:1rem;max-width:360px}
.k-news input{flex:1;min-height:42px;padding:.55rem .8rem}
.k-news button{white-space:nowrap}
.k-news-ok{margin-top:1rem;font-weight:700}
.k-credit{font-size:.78rem;opacity:.65}
.k-credit a{color:inherit}
/* mobile action bar */
.k-actionbar{display:none}
@media(max-width:760px){
  .k-actionbar{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:.5rem;position:fixed;left:0;right:0;bottom:0;z-index:400;padding:.6rem .75rem calc(.6rem + env(safe-area-inset-bottom));background:var(--k-surface);box-shadow:0 -10px 30px -12px rgba(0,0,0,.35)}
  .k-actionbar a{display:flex;align-items:center;justify-content:center;min-height:46px;border-radius:var(--k-btn-radius);font:700 1rem var(--k-ui);text-decoration:none}
  .k-ab-call{border:2px solid var(--k-ink);color:var(--k-ink)}
  .k-ab-book{background:var(--k-accent);color:var(--k-accent-ink)}
  body.k-has-ab{padding-bottom:76px}
  .k-toast{bottom:5.5rem}
}
/* polish */
.k-card{transition:transform .25s,box-shadow .25s}
a.k-card:hover{transform:translateY(-4px);box-shadow:0 24px 40px -26px rgba(0,0,0,.45)}
.k-gallery figure{overflow:hidden}
.k-gallery img{transition:transform .6s}
.k-gallery figure:hover img{transform:scale(1.04)}
@media(prefers-reduced-motion:reduce){.k-overlay,.k-modal,.k-check{animation:none}}
/* store checkout */
.k-checkout{align-content:start}
.k-checkout .k-h3{margin:.8rem 0 0;font-size:1.15rem}
.k-radios{border:0;padding:0;margin:0;display:grid;gap:.5rem}
.k-radios label{display:flex;align-items:center;gap:.8rem;padding:.85rem 1rem;border:1.5px solid var(--k-line);border-radius:calc(var(--k-radius) - 2px);cursor:pointer;font-weight:500}
.k-radios label:has(input:checked){border-color:var(--k-accent);background:var(--k-alt)}
.k-radios input{width:auto;min-height:0;accent-color:var(--k-accent)}
.k-radios span{flex:1}.k-radios em{font-style:normal;font-weight:700}
.k-paybox{padding:1rem 1.1rem;border-radius:calc(var(--k-radius) - 2px);background:var(--k-alt);font-size:.92rem}
.k-paybox p{margin:0 0 .6rem}
.k-paylogos{display:flex;flex-wrap:wrap;gap:.4rem}.k-paylogos span{font:800 .7rem var(--k-ui);padding:.3rem .55rem;border-radius:5px;background:var(--k-surface);border:1px solid var(--k-line);letter-spacing:.02em}
.k-co-line{display:grid;grid-template-columns:auto 1fr auto;gap:.8rem;align-items:center;padding:.5rem 0}
.k-co-done-items .k-co-line{grid-template-columns:1fr auto;border-bottom:1px solid var(--k-line);max-width:30rem;margin:0 auto;text-align:left}
.k-co-done-items .k-co-line.tot{font-weight:800;border:0}
.k-co-thumb{position:relative}.k-co-thumb img{width:56px;height:56px;object-fit:cover;border-radius:8px;border:1px solid var(--k-line)}
.k-co-thumb i{position:absolute;top:-7px;right:-7px;background:var(--k-ink);color:var(--k-surface);font:700 .72rem/20px var(--k-ui);min-width:20px;height:20px;border-radius:10px;text-align:center;font-style:normal}
.k-pay{text-align:center}.k-pay-amt{font:800 2.2rem var(--k-ui);margin:.2rem 0 1.2rem}
.k-pay-methods{display:grid;gap:.6rem}
.k-paybtn{min-height:50px;border-radius:10px;border:0;font:700 1.02rem var(--k-ui);cursor:pointer}
.k-paybtn.apple{background:#000;color:#fff}.k-paybtn.google{background:#fff;color:#3c4043;border:1.5px solid #dadce0}.k-paybtn.card{background:var(--k-accent);color:var(--k-accent-ink)}
.k-paybtn:disabled{opacity:.6;cursor:wait}
/* restaurant dietary filters */
.k-diet{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:1.4rem}
.k-diet span{font-weight:600;opacity:.8}
.k-diet button{padding:.5rem .9rem;border-radius:99px;border:1.5px solid currentColor;background:transparent;color:inherit;font:600 .88rem var(--k-ui);cursor:pointer;opacity:.8}
.k-diet button[aria-pressed=true]{background:var(--k-accent);border-color:var(--k-accent);color:var(--k-accent-ink);opacity:1}
.dt{display:inline-block;font:800 .62rem/1 var(--k-ui);padding:.22rem .35rem;border-radius:4px;margin-left:.3rem;vertical-align:middle;text-decoration:none;border:1px solid currentColor;opacity:.75}
.mlist>div{transition:opacity .25s}
/* roofing service-area panel */
.k-zipwrap{display:grid;grid-template-columns:1fr 1fr;gap:2rem;align-items:center}
.k-zipwrap h2{margin:0 0 .3rem}
@media(max-width:760px){.k-zipwrap{grid-template-columns:1fr}}
.k-bk-sec .container{max-width:860px}
.k-booker .k-success{border:0;padding:.4rem 0}

/* ===================== 2026 refresh: modern type, spacing, depth ===================== */
:root{--k-shadow:0 1px 2px rgba(16,24,40,.05),0 14px 34px -16px rgba(16,24,40,.22);--k-shadow-lg:0 34px 70px -34px rgba(16,24,40,.45);--k-ease:cubic-bezier(.2,.7,.2,1)}
body{font-feature-settings:"kern","liga","calt"}
.k-sec{padding:clamp(4rem,8vw,6.75rem) 0}
.k-sec h2{font-size:clamp(2rem,4.4vw,3.25rem);letter-spacing:calc(var(--k-track) - .015em);line-height:1.04;text-wrap:balance}
.k-sec h3{text-wrap:balance}
.k-head{margin-bottom:clamp(2rem,4vw,3rem)}
.k-lede{line-height:1.6;text-wrap:pretty}
.k-eyebrow{font:600 .88rem/1.2 var(--k-ui);letter-spacing:.01em;text-transform:none;display:inline-flex;align-items:center;gap:.65rem;margin-bottom:1.1rem}
.k-eyebrow::before{content:"";width:24px;height:2px;border-radius:2px;background:currentColor;opacity:.8}
.k-btn{padding:.92rem 1.45rem;font:600 .97rem/1.1 var(--k-ui);letter-spacing:-.005em;box-shadow:0 1px 2px rgba(0,0,0,.1),0 8px 18px -10px color-mix(in srgb,var(--k-accent) 70%,transparent);transition:transform .2s var(--k-ease),box-shadow .2s,filter .2s,background-color .2s,color .2s}
.k-btn:hover{transform:translateY(-2px);box-shadow:0 2px 4px rgba(0,0,0,.1),0 16px 26px -12px color-mix(in srgb,var(--k-accent) 75%,transparent)}
.k-btn.ghost{box-shadow:none;border-width:1.5px}
.k-btn.ghost:hover{background:color-mix(in srgb,currentColor 8%,transparent);box-shadow:none}
.k-link{display:inline-flex;align-items:center;gap:.35rem}
/* inner-page hero */
.k-hero{min-height:min(64vh,580px);display:flex;align-items:flex-end;padding:clamp(7rem,14vw,10rem) 0 clamp(3rem,6vw,4.75rem)}
.k-hero>.container{width:min(1160px,100% - 2rem)}
.k-hero>img{opacity:1;transform:scale(1.02)}
.k-hero::after{background:linear-gradient(180deg,rgba(6,8,12,.05) 0%,rgba(6,8,12,.25) 38%,rgba(6,8,12,.78) 100%),linear-gradient(90deg,rgba(6,8,12,.55),rgba(6,8,12,0) 68%)}
.k-hero h1{font-size:clamp(2.6rem,6.4vw,5rem);letter-spacing:calc(var(--k-track) - .02em);line-height:1;max-width:16ch;text-wrap:balance}
.k-hero p{line-height:1.55;text-wrap:pretty}
.k-hero .k-crumbs{opacity:.9}
.k-hero.plain{min-height:0;align-items:center;padding:clamp(3.25rem,7vw,5rem) 0 clamp(2.5rem,5vw,3.75rem);background:radial-gradient(90% 120% at 100% 0%,color-mix(in srgb,var(--k-accent) 14%,transparent),transparent 60%),var(--k-alt);border-bottom:1px solid var(--k-line)}
.k-hero.plain h1{font-size:clamp(2.3rem,5vw,3.9rem)}
/* media + cards */
.k-split img,.k-media{border-radius:calc(var(--k-radius) + 6px);box-shadow:var(--k-shadow-lg)}
.k-card{border-color:color-mix(in srgb,var(--k-line) 75%,transparent);box-shadow:var(--k-shadow);border-radius:calc(var(--k-radius) + 4px)}
.k-card img{transition:transform .7s var(--k-ease)}
a.k-card:hover{transform:translateY(-6px);box-shadow:var(--k-shadow-lg)}
a.k-card:hover img{transform:scale(1.045)}
.k-card .k-body{padding:1.5rem 1.6rem 1.75rem;gap:.5rem}
.k-card h3{font-size:1.24rem;letter-spacing:-.01em}
.k-card .k-meta{letter-spacing:.02em;text-transform:none;font-size:.82rem;font-weight:600}
.k-card .k-more{transition:gap .2s}a.k-card:hover .k-more{text-decoration:underline;text-underline-offset:3px}
.k-person img,.k-bio img{border-radius:calc(var(--k-radius) + 6px);box-shadow:var(--k-shadow)}
.k-person .role{letter-spacing:.02em;text-transform:none;font-size:.88rem;font-weight:600}
.k-review{box-shadow:var(--k-shadow);border-color:transparent;border-radius:calc(var(--k-radius) + 4px);padding:1.75rem}
.k-review p{font-size:1.05rem;line-height:1.6}
.k-steps li{box-shadow:var(--k-shadow);border-color:transparent;border-radius:calc(var(--k-radius) + 4px);padding:1.75rem}
.k-price{box-shadow:var(--k-shadow);border-radius:calc(var(--k-radius) + 6px)}
.k-price.feat{box-shadow:var(--k-shadow-lg);transform:translateY(-6px)}
.k-price .flag{letter-spacing:.04em;text-transform:none;font-size:.78rem}
.k-stats b{letter-spacing:-.03em;font-size:clamp(2.2rem,4.6vw,3.2rem)}
.k-stats span{font-weight:500;opacity:.8}
.k-box{border-radius:calc(var(--k-radius) + 4px);background:var(--k-surface);box-shadow:var(--k-shadow);border-color:transparent}
.k-form{box-shadow:var(--k-shadow);border-color:transparent;border-radius:calc(var(--k-radius) + 6px)}
.k-faq details{padding:1.3rem 0}
.k-faq summary{font-size:1.1rem;letter-spacing:-.01em}
.k-faq summary::after{transition:transform .2s}
.k-table{box-shadow:var(--k-shadow);border-color:transparent}
.k-table th{letter-spacing:.03em;text-transform:none;font-size:.82rem}
.k-badge{box-shadow:var(--k-shadow);border-color:transparent}
.k-badge::before{width:.5rem;height:.5rem}
.k-gallery figure{border-radius:calc(var(--k-radius) + 4px)}
.k-cta{position:relative;overflow:hidden}
.k-cta::before{content:"";position:absolute;inset:0;background:radial-gradient(60% 140% at 100% 0%,rgba(255,255,255,.16),transparent 60%);pointer-events:none}
.k-cta .container{position:relative}
.k-cta h2{letter-spacing:-.02em;text-wrap:balance}
/* forms */
input,select,textarea{border:1.5px solid color-mix(in srgb,var(--k-ink) 16%,transparent);border-radius:12px;transition:border-color .15s,box-shadow .15s}
input:hover,select:hover,textarea:hover{border-color:color-mix(in srgb,var(--k-ink) 30%,transparent)}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--k-accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--k-accent) 20%,transparent)}
label{font-weight:600;letter-spacing:-.005em}
/* footer */
.k-foot{padding:clamp(4rem,7vw,5.5rem) 0 1.6rem;font-family:var(--k-ui)}
.k-foot h4{letter-spacing:.02em;text-transform:none;font-size:.9rem;font-weight:700}
.k-foot ul{gap:.6rem}
.k-social a{transition:background-color .2s,color .2s,border-color .2s}
.k-social a:hover{background:var(--k-dark-ink);color:var(--k-dark);border-color:var(--k-dark-ink)}
/* header (shared .hdr from each site) */
.hdr{transition:box-shadow .3s,background-color .3s}
.hdr.k-scrolled{box-shadow:0 1px 0 rgba(0,0,0,.06),0 14px 30px -20px rgba(0,0,0,.4)}
#dnav a{transition:color .15s,opacity .15s}
@media(prefers-reduced-motion:reduce){.k-btn:hover,a.k-card:hover,.k-price.feat{transform:none}a.k-card:hover img{transform:none}}
