/* Kettle UI components: sections, service cards, pricing, booking form. Uses the --km-* tokens from each page. */
.km-sec-pad{padding-top:clamp(48px,7vw,88px);padding-bottom:clamp(48px,7vw,88px)}
.km-sec-tint{background:var(--km-tint);border-top:1px solid var(--km-line);border-bottom:1px solid var(--km-line)}
.km-sec-head{display:flex;flex-direction:column;gap:14px;max-width:680px;margin-bottom:clamp(24px,3.5vw,40px)}
.km-lede{margin:0;font-size:18px;line-height:1.55;color:var(--km-body)}
.km-h1{margin:0;font-family:'Fraunces',Georgia,serif;font-weight:600;font-size:clamp(34px,6vw,52px);line-height:1.08;letter-spacing:-.5px}

/* buttons and links */
.km-btn{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:14px 24px;border-radius:8px;font:inherit;font-weight:700;font-size:16px;text-decoration:none;cursor:pointer;border:none;transition:background-color var(--km-fast,.2s) ease,transform var(--km-fast,.2s) ease}
.km-btn-primary{background:#A8471F;color:#FFFFFF}
.km-btn-primary:hover{background:#9A3F1A;color:#FFFFFF}
.km-btn:focus-visible,.km-link:focus-visible,.km-form a:focus-visible{outline:3px solid #E8875A;outline-offset:3px}
.km-btn[disabled]{opacity:.7;cursor:progress}
.km-link{display:inline-flex;align-items:center;min-height:44px;font-weight:700;color:var(--km-accent);text-decoration:none}
.km-link:hover{text-decoration:underline}
.km-theme{width:44px;height:44px}

/* service cards */
.km-svc-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.km-svc-card{background:var(--km-card);border:1px solid var(--km-line);border-radius:16px;padding:clamp(22px,3vw,30px);display:flex;flex-direction:column;gap:14px;min-width:0}
.km-svc-card:hover{border-color:var(--km-line3)}
.km-svc-top{display:flex;align-items:center;gap:12px}
.km-svc-top h3{margin:0;font-size:22px;font-weight:700}
.km-svc-promise{margin:0;font-size:16px;line-height:1.55;color:var(--km-body)}
.km-svc-price{margin:0;display:flex;align-items:baseline;gap:6px;flex-wrap:wrap}
.km-svc-price strong{font-family:'Fraunces',Georgia,serif;font-weight:600;font-size:40px;line-height:1;color:var(--km-ink)}
.km-svc-price small{font-size:14px;font-weight:600;color:var(--km-muted)}
.km-svc-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px;font-size:15.5px;line-height:1.45}
.km-svc-list li{display:flex;gap:10px;align-items:flex-start}
.km-svc-list svg{flex:none;margin-top:2px}
.km-svc-sub{margin:0;padding-top:12px;border-top:1px dashed var(--km-line2);font-size:14px;font-weight:600;color:var(--km-muted)}
.km-svc-actions{margin-top:auto;padding-top:6px;display:flex;flex-wrap:wrap;align-items:center;gap:8px 18px}
@media (max-width:1024px) and (min-width:700px){.km-svc-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.km-svc-card:last-child{grid-column:1 / -1}}
@media (max-width:699px){.km-svc-grid{grid-template-columns:1fr}}

/* pricing */
.km-pricing{display:flex;flex-wrap:wrap;gap:clamp(28px,4vw,56px);align-items:flex-start}
.km-pricing-copy{flex:1 1 320px;min-width:0;display:flex;flex-direction:column;gap:14px;align-items:flex-start}
.km-pricing-copy .km-btn{margin-top:8px}
.km-price-card{flex:1 1 440px;min-width:0;background:var(--km-card);border:1px solid var(--km-line);border-radius:16px;padding:8px clamp(18px,4vw,32px) 12px}
.km-price-group h3{margin:18px 0 2px;font-size:13px;font-weight:800;letter-spacing:2px;text-transform:uppercase;color:var(--km-muted)}
.km-price-row{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding:14px 0;border-bottom:1px solid var(--km-line)}
.km-price-group:last-child .km-price-row:last-child{border-bottom:none}
.km-price-name{font-size:17px;font-weight:600;min-width:0}
.km-price-name small{display:block;font-size:14px;font-weight:500;color:var(--km-muted);margin-top:2px}
.km-price-val{font-family:'Fraunces',Georgia,serif;font-size:clamp(22px,2.6vw,28px);font-weight:600;white-space:nowrap}

/* contact + booking */
.km-contact{display:flex;flex-wrap:wrap;gap:clamp(32px,5vw,56px);align-items:flex-start}
.km-contact-copy{flex:1 1 300px;min-width:0;display:flex;flex-direction:column;gap:16px}
.km-form-wrap{flex:999 1 520px;min-width:0}
.km-contact-list{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:12px;font-size:16px}
.km-contact-list li{display:flex;flex-direction:column;gap:2px}
.km-contact-list span{font-size:13px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--km-muted)}
.km-contact-list a{font-weight:700;color:var(--km-accent);text-decoration:none;min-height:32px;display:inline-flex;align-items:center}
.km-next{margin:4px 0 0;padding-left:22px;display:flex;flex-direction:column;gap:10px;font-size:16px;line-height:1.5;color:var(--km-body)}
.km-next strong{color:var(--km-ink)}
.km-crumbs{font-size:14px;color:var(--km-muted)}
.km-crumbs a{color:var(--km-muted)}

.km-form{position:relative;background:var(--km-card);border:1px solid var(--km-line);border-radius:16px;padding:clamp(20px,4vw,32px);display:flex;flex-direction:column;gap:22px}
.km-fs{border:none;margin:0;padding:0;min-width:0}
.km-fs>legend{display:flex;align-items:center;gap:10px;padding:0;margin-bottom:14px;font-size:17px;font-weight:800;color:var(--km-ink)}
.km-fs-n{width:26px;height:26px;border-radius:50%;background:var(--km-ink);color:var(--km-bg);font-size:13px;font-weight:800;display:inline-flex;align-items:center;justify-content:center}
.km-fs+.km-fs{padding-top:22px;border-top:1px solid var(--km-line)}
.km-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 18px}
.km-field{display:flex;flex-direction:column;gap:7px;min-width:0;border:none;margin:0;padding:0}
.km-field-wide{grid-column:1 / -1}
.km-field>label,.km-radios>legend{font-size:15px;font-weight:700;color:var(--km-ink);padding:0}
.km-opt{font-weight:500;color:var(--km-muted)}
.km-form input:not([type=radio]),.km-form select,.km-form textarea{font:inherit;font-size:16px;font-weight:400;width:100%;min-height:48px;padding:12px 14px;border:1px solid var(--km-line3);border-radius:8px;background:var(--km-card);color:var(--km-ink);box-sizing:border-box}
.km-form textarea{resize:vertical;min-height:110px}
.km-form select{appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='18' height='18' fill='none' stroke='%235E636A' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:40px}
.km-form input:focus,.km-form select:focus,.km-form textarea:focus{outline:none;border-color:#A8471F;box-shadow:0 0 0 3px rgba(168,71,31,.22)}
.km-form [aria-invalid=true]{border-color:#C0392B;box-shadow:0 0 0 3px rgba(192,57,43,.15)}
.km-hint{margin:0;font-size:13px;color:var(--km-muted)}
.km-err{margin:0;font-size:14px;font-weight:600;color:#C0392B}
[data-theme="dark"] .km-err,[data-theme="dark"] .km-form-error{color:#FF8A7A}
.km-radio-row{display:flex;flex-wrap:wrap;gap:10px}
.km-radio{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 16px;border:1px solid var(--km-line3);border-radius:999px;font-weight:600;cursor:pointer;background:var(--km-card)}
.km-radio input{width:18px;height:18px;margin:0;accent-color:#A8471F}
.km-radio:has(input:checked){border-color:#A8471F;background:rgba(168,71,31,.08)}
.km-radio:has(input:focus-visible){outline:3px solid #E8875A;outline-offset:2px}
.km-form-foot{display:flex;flex-wrap:wrap;align-items:center;gap:12px 18px}
.km-fine{margin:0;flex:1 1 240px;font-size:14px;line-height:1.5;color:var(--km-muted)}
.km-fine a{color:var(--km-muted)}
.km-form-error{margin:0;padding:12px 14px;border-radius:8px;background:rgba(192,57,43,.08);color:#C0392B;font-weight:600;font-size:15px}
.km-form-error a{color:inherit}
.km-hp{position:absolute!important;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}
.km-form-done{background:var(--km-card);border:1px solid var(--km-line);border-radius:16px;padding:clamp(24px,4vw,36px);display:flex;flex-direction:column;gap:10px;font-size:17px;line-height:1.55}
.km-form-done:focus{outline:none}
.km-form-done p{margin:0}
.km-done-h{font-family:'Fraunces',Georgia,serif;font-size:clamp(24px,3vw,30px);font-weight:600;line-height:1.2;color:var(--km-ink)}
.km-form-done a{color:var(--km-accent);font-weight:700}
.km-thanks{max-width:760px;display:flex;flex-direction:column;gap:18px}
.km-thanks .km-lede a{color:var(--km-accent);font-weight:700}
@media (max-width:640px){.km-grid{grid-template-columns:1fr}.km-form-foot .km-btn{width:100%}}
button.km-theme{width:44px;height:44px}
header a[href="#top"],header a[href="/"]:has(svg){min-height:44px}
.km-filter{min-height:44px}
.km-form-done[hidden],.km-form[hidden],.km-err[hidden],.km-form-error[hidden]{display:none}
.km-contact-copy{flex:1 1 320px}
.km-form-wrap{flex:2 1 520px}

/* Spacing pass */
.km-h1,.km-h2,.km-sec-head h2,.km-done-h,footer p{text-wrap:balance}
.km-lede,.km-svc-promise{text-wrap:pretty}
.km-hero-inner{padding-bottom:clamp(8px,2vw,24px)}
.km-hero-full+.km-band{margin-top:clamp(16px,3vw,40px)}
.km-fs>legend{float:left;width:100%;margin-bottom:16px}
.km-fs>legend+*{clear:both}
.km-fs+.km-fs{padding-top:24px}
.km-svc-sub{margin-top:auto}
.km-svc-actions{margin-top:0}
.km-steps li{min-width:0}
@media (min-width:900px){.km-pricing-copy{position:sticky;top:32px}}

/* footer: brand beside the link columns on wide screens; areas list in two columns on mid-size screens */
@media (min-width: 480px) and (max-width: 959px){footer nav[aria-label="Areas"] ul{columns:2;column-gap:28px}footer nav[aria-label="Areas"] li{break-inside:avoid}}
@media (min-width: 960px){
.km-foot-navs{display:flex !important;flex-wrap:nowrap !important;justify-content:space-between;gap:24px !important;flex:1 1 100%}
.km-foot-navs nav{min-width:0 !important}
.km-foot-navs a{white-space:nowrap}
}
@media (min-width: 1180px){
.km-foot-top{display:grid !important;grid-template-columns:minmax(200px,250px) minmax(0,1fr);align-items:start}
.km-foot-navs{flex:initial}
}

/* homepage hero spacing: less dead space above the headline, phone sized so the buttons sit above the fold */
.km-hero-inner{padding-top:clamp(32px,5vw,64px)}
.km-hero-inner h1{text-wrap:balance}
@media (min-width: 900px){.km-hero-inner .km-phoneframe{width:min(280px,74vw)}}
