:root{--paper:#f7edf2;--ink:#372823;--accent:#7d382f;--panel:#f0ddd2;--on-accent:#ffffff}@font-face{font-family:Display;src:url("fonts/display.ttf") format("truetype");font-weight:100 900;font-display:swap}@font-face{font-family:Body;src:url("fonts/body.ttf") format("truetype");font-display:swap}*{box-sizing:border-box}html{scroll-behavior:smooth;scrollbar-color:var(--accent) var(--paper)}body{margin:0;background:var(--paper);color:var(--ink);font:1rem/1.65 Body,sans-serif}::selection{background:var(--accent);color:var(--paper)}a{color:inherit;text-underline-offset:.22em;min-height:24px;display:inline-flex;align-items:center}a:hover{color:var(--accent)}a:focus-visible,summary:focus-visible{outline:3px solid var(--accent);outline-offset:4px}h1,h2,h3{font-family:Display,serif;line-height:1.08;text-wrap:balance;font-weight:600}h1{font-size:clamp(2.6rem,5vw,5rem);max-width:16ch;margin:0 0 1.5rem;letter-spacing:-.025em}h2{font-size:clamp(1.8rem,3vw,2.8rem);margin:0 0 1rem}h3{font-size:1.5rem}p{max-width:70ch;margin:.6rem 0 1rem}main{max-width:1180px;margin:auto;padding:0 2rem 3rem}img{max-width:100%;height:auto;display:block}figure{margin:0}figcaption{font-size:.9rem;padding:.7rem 0}address{font-style:normal;line-height:1.8}.j102-mast{max-width:1280px;margin:auto;padding:1.4rem 3rem;display:flex;align-items:center;justify-content:space-between;gap:2rem;border-bottom:1px solid var(--ink)}.j102-mast nav{display:flex;flex-wrap:wrap;gap:.3rem 1.3rem}.j102-brand{font:1.8rem/1.2 Display,serif;text-decoration:none}.j102-mast p{font-size:.9rem;margin:.4rem 0 0}.j102-mast [aria-current=page]{font-weight:bold;text-decoration-thickness:3px}.j102-header-phone{margin-top:.5rem}.j102-skip{position:absolute;left:1rem;top:-6rem;background:var(--paper);padding:.7rem 1rem;z-index:10}.j102-skip:focus{top:1rem}.j102-action{display:inline-flex;padding:.85rem 1.4rem;min-height:48px;background:var(--accent);color:var(--on-accent);font-weight:bold;text-decoration:none;align-self:start}.j102-action:hover{color:var(--on-accent);text-decoration:underline}.j102-owner{display:grid;grid-template-columns:.7fr 1.3fr;gap:3rem;align-items:center;padding:3rem 0;margin-top:3rem;border-top:1px solid}.j102-owner img{max-height:20rem;object-fit:cover;width:100%}.j102-credentials{padding:2rem;background:var(--panel);margin:3rem 0;overflow-wrap:anywhere}.j102-credentials p{margin:.6rem 0}.j102-reviews{padding:3rem 0}.j102-reviews article{border-top:1px solid;border-bottom:1px solid;padding:1.5rem 0;margin:1.4rem 0}.j102-reviews a{margin-top:.6rem}.j102-work{margin:3rem 0}.j102-work img{width:100%;max-height:25rem;object-fit:cover}.j102-service-directory{padding:3rem 0}.j102-service-directory dl{margin:0}.j102-service-directory dl div{display:grid;grid-template-columns:1fr 1.4fr;gap:2rem;padding:1.4rem 0;border-bottom:1px solid}.j102-service-directory dt{font:1.5rem Display,serif}.j102-service-directory dd{margin:0}.j102-service-directory a{display:flex}.j102-trade-notes{padding:2rem 0;border-top:1px solid}.j102-site-foot{display:grid;grid-template-columns:1.4fr 1fr;gap:3rem;padding:3rem max(2rem,calc((100vw - 1116px)/2));background:var(--panel);border-top:1px solid}.j102-site-foot>div{display:flex;flex-direction:column;align-items:start;gap:.65rem}.j102-inside{padding-top:3rem}.j102-contact-options{display:flex;flex-wrap:wrap;gap:1rem;margin:2rem 0}.j102-contact-options a{padding:.8rem 1rem;border:1px solid}.j102-questions{max-width:54rem;margin:3rem 0}.j102-questions details{border-top:1px solid;padding:1rem 0}.j102-questions summary{cursor:pointer;min-height:44px;display:flex;justify-content:space-between;gap:1.5rem;align-items:center;font-weight:bold}.j102-questions summary::after{content:'+';font-size:1.6rem}.j102-questions details[open] summary::after{content:'−'}.j102-questions details p{padding:1rem 0;margin:0}.j102-closing{display:flex;align-items:center;justify-content:space-between;gap:2rem;padding:2rem;background:var(--panel);margin:3rem 0}.j102-opening{animation:arrive .5s ease-out}@keyframes arrive{from{filter:blur(1px)}to{filter:blur(0)}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.j102-opening{animation:none}}.j102-laundry-symptoms{display:grid;grid-template-columns:.9fr 1.1fr;gap:5rem;align-items:start;padding:4rem 0}.j102-laundry-symptoms>div{background:var(--panel);padding:2rem}.j102-laundry-symptoms details{border-top:1px solid;padding:1rem 0}.j102-laundry-symptoms summary{font:1.4rem Display,serif}@media(max-width:760px){.j102-laundry-symptoms{display:flex;flex-direction:column}.j102-laundry-symptoms>article{order:-1}}@media(max-width:760px){main{padding:0 1.2rem 2rem}.j102-mast{padding:1.2rem;display:block}.j102-mast nav{gap:.15rem 1rem;margin-top:.8rem}.j102-mast nav a{min-height:44px}.j102-mast p{max-width:100%}a{min-height:44px;overflow-wrap:anywhere}.j102-brand{min-height:44px}h1{font-size:2.7rem;max-width:18ch}h2{font-size:1.9rem}.j102-opening{padding:0}.j102-opening>*{width:100%;max-width:100%;margin-left:0;margin-right:0;float:none}.j102-opening section,.j102-opening header,.j102-opening article,.j102-opening aside,.j102-opening div{grid-template-columns:minmax(0,1fr);gap:1rem}.j102-opening>section,.j102-opening>header,.j102-opening>div{padding:2rem 0;margin-top:0;margin-bottom:0}.j102-opening .j102-action{width:auto;padding:.8rem 1.2rem}.j102-opening dl,.j102-opening ol{display:block}.j102-opening dl div,.j102-opening ol li{margin:.7rem 0;padding:1.1rem}.j102-opening div div{grid-column:auto;grid-row:auto}.j102-opening section>h2,.j102-opening section>a,.j102-opening dl div{grid-column:auto}.j102-opening table{font-size:.9rem}.j102-opening th,.j102-opening td{padding:.7rem}.j102-opening aside{border-radius:0;padding:1.2rem}.j102-opening p{max-width:100%}.j102-opening strong{font-size:1.6rem}.j102-owner,.j102-site-foot{display:block}.j102-owner{gap:0}.j102-owner>div{padding-top:2rem}.j102-site-foot>div{margin-top:2rem;gap:.2rem}.j102-service-directory dl div{display:block}.j102-service-directory dd{margin:.5rem 0}.j102-credentials{padding:1.2rem}.j102-closing{display:block;padding:1.2rem}.j102-closing a{margin-top:1rem}.j102-contact-options{display:grid;grid-template-columns:1fr 1fr}.j102-opening .j102-material-title,.j102-opening .j102-booking,.j102-opening .j102-surface-head,.j102-opening .j102-counter-title,.j102-opening .j102-vent-booking,.j102-opening .j102-handover-call,.j102-opening .j102-inspection-evidence aside,.j102-opening .j102-sweep-report footer{display:block}.j102-opening .j102-tall-mirror{min-height:12rem;border-radius:5rem 5rem 0 0}.j102-opening .j102-room-plan{padding:1rem}.j102-opening .j102-room-plan a{min-height:8rem;padding:1.2rem}.j102-opening .j102-stoop a{width:100%;font-size:1.5rem;padding:1rem;display:block}.j102-opening .j102-care-tags dl,.j102-opening .j102-airflow ol,.j102-opening .j102-handover dl,.j102-opening .j102-access-ticket dl,.j102-opening .j102-inspection-evidence ol{display:block}.j102-opening .j102-vent-route>div{flex-direction:column;align-items:stretch}.j102-opening .j102-sweep-report>div{display:block}.j102-opening .j102-cut-sheet,.j102-opening .j102-gutter-ledger,.j102-opening .j102-fence-options{width:100%;padding:1rem}.j102-opening .j102-boundary .j102-yard{display:block}.j102-opening .j102-yard>a{display:block;padding:1rem}.j102-opening .j102-bond{display:block}.j102-opening .j102-bond p{margin:.7rem 0}.j102-opening .j102-downpipe{margin-left:35%;width:65%;padding:1rem}.j102-opening .j102-gate{gap:1.5rem}.j102-opening .j102-cable-path{display:flex;flex-direction:column}.j102-opening .j102-cable-path>article{order:-1}.j102-opening .j102-room-list{padding:1rem}.j102-opening .j102-room-list a{grid-column:auto;min-height:6rem}.j102-opening .j102-flue{margin:0;padding:1.3rem}.j102-opening .j102-flue-copy{width:100%;padding:2rem 0}.j102-opening .j102-view{padding:1rem}.j102-opening .j102-response-order{padding:1.2rem}.j102-opening .j102-moisture-map{padding:1rem}.j102-opening .j102-room-search{padding:1rem}.j102-opening .j102-airflow,.j102-opening .j102-wash-zones,.j102-opening .j102-method-board,.j102-opening .j102-joint-notes,.j102-opening .j102-flue,.j102-opening .j102-sweep-report,.j102-opening .j102-coverage-plan,.j102-opening .j102-handover,.j102-opening .j102-cut-sheet,.j102-opening .j102-measure-counter,.j102-opening .j102-dry-record,.j102-opening .j102-vent-route,.j102-opening .j102-access-ticket,.j102-opening .j102-inspection-evidence,.j102-opening .j102-room-search,.j102-opening .j102-response-order{padding:1.2rem}.j102-opening .j102-stoop span{display:block}.j102-opening .j102-pour{padding:0}.j102-opening .j102-pour .j102-pour-call,.j102-opening .j102-pour article{padding:1.5rem}.j102-opening .j102-team-pair{padding:1rem}.j102-opening .j102-dry-record{padding:1rem}}
