/* Shared responsive guards. No form-state or navigation reloads on resize. */
main,.container,.request-layout,.tool-work,.tool-guide,.request-grid>*,.request-choices>*,.tool-fields>*,.service-card,.contact-card,.guide-card{min-width:0}
h1,h2,h3,.button,.header-cta,.home-tabs a,.request-layout legend,.request-layout label,.tool-work legend,.tool-work label{overflow-wrap:anywhere}
.request-layout fieldset,.tool-work fieldset{min-width:0;max-width:100%}
.request-layout legend,.tool-work legend{max-width:100%;white-space:normal}
input,textarea,select{min-width:0;max-width:100%;scroll-margin-block:2rem}
@media(max-width:1350px){.site-header nav.open{max-height:calc(100vh - 8rem);max-height:calc(100dvh - 8rem);overflow-y:auto;overscroll-behavior:contain;scroll-padding-block:1rem}}
@media(max-width:360px){.container{width:calc(100% - 1.5rem)}.header-inner{gap:.5rem}.site-header .header-cta{display:none}.request-choices{grid-template-columns:minmax(0,1fr)}.request-layout fieldset{padding:16px 12px}.request-layout legend{font-size:1rem}.request-layout .choice{overflow-wrap:anywhere}.tool-work fieldset{padding:14px}.tool-progress{flex-wrap:wrap}.button{max-width:100%;white-space:normal}.hero h1,.page-hero h1{font-size:clamp(1.8rem,10vw,2.5rem)}}
@media(max-height:480px){.site-header nav.open{max-height:calc(100vh - 6rem);max-height:calc(100dvh - 6rem)}}
@media(horizontal-viewport-segments:2),(vertical-viewport-segments:2){.request-layout,.tool-layout{width:calc(env(viewport-segment-width 0 0,100vw) - 1.5rem);max-width:calc(env(viewport-segment-width 0 0,100vw) - 1.5rem);margin-left:calc(env(viewport-segment-left 0 0,0px) + .75rem);margin-right:0}.request-grid,.request-choices,.tool-fields,.tool-layout{grid-template-columns:minmax(0,1fr)}}

/* Match short values to compact controls and keep prose comfortable to read. */
main form input:where(:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]):not([type="file"])){max-width:48ch;min-height:48px;font-size:1rem}
main form input:is([type="tel"],[name="phone"]){max-width:26ch}
main form input:is([type="email"],[name="email"]){max-width:44ch}
main form input:is([name="postcode"],[autocomplete="postal-code"]){max-width:12ch}
main form input:is([type="number"],[name="building_count"]){max-width:18ch}
main form input:is([name="address"],[name="area"],[name="work_area"],[name="availability_note"]){max-width:64ch}
main form select{max-width:48ch;min-height:48px;font-size:1rem}
main form textarea:not([data-fixed-size]){--field-lines:3;max-width:72ch;min-height:calc(var(--field-lines) * 1.5em + 1.5rem + 2px);height:auto;max-height:28rem;line-height:1.5;font-size:1rem;field-sizing:content;overflow-y:auto;resize:vertical}
main form textarea[rows="2"]{--field-lines:2}
main form textarea[rows="4"]{--field-lines:4}
main form textarea[rows="5"]{--field-lines:5}
main form textarea[rows="6"]{--field-lines:6}
