/* Shape UI v1. Shared components; editorial page composition remains in style.css. */
:root{--ui-ink:#171717;--ui-muted:#626262;--ui-line:#d6d6d6;--ui-surface:#f5f5f5;--ui-hover:#ebebeb;--ui-accent:#00bbdc;--ui-white:#fff;--ui-radius:4px;--ui-control:48px;--ui-fast:140ms;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-6:24px;--space-8:32px;--space-12:48px;--space-16:64px;--space-24:96px;--ui-gutter:clamp(20px,4vw,64px);--ui-max:1320px;--ui-reading:65ch;--type-display:clamp(2.75rem,6vw,5.5rem);--type-h1:clamp(2.25rem,4vw,4rem);--type-h2:clamp(1.75rem,2.7vw,2.5rem);--type-h3:1.25rem;--type-large:1.125rem;--type-body:1rem;--type-small:.875rem;--type-label:.875rem;--type-price:clamp(1.75rem,3vw,2.25rem)}
:where(a,button,input,select,summary):focus-visible{outline:2px solid var(--ui-ink);outline-offset:3px;box-shadow:0 0 0 5px var(--ui-accent)}
.button,.navcta,.secondary,.ui-button{min-height:var(--ui-control);padding:12px 24px;border:1px solid transparent;border-radius:2px;font:500 var(--type-label)/1.4 Poppins,Arial,sans-serif;letter-spacing:0;display:inline-flex;align-items:center;justify-content:center;gap:16px;white-space:normal;text-align:center;transition:background var(--ui-fast),border-color var(--ui-fast);text-decoration:none;background:var(--ui-ink);color:white;box-shadow:none}
.button span,.navcta span{margin:0;font-size:1em}.button:hover,.navcta:hover,.ui-button:hover{background:#353535;color:white}.button:active,.navcta:active,.ui-button:active{background:#050505}.secondary{background:var(--ui-surface);color:var(--ui-ink)}.secondary:hover{background:var(--ui-hover)}.secondary:active{background:#ddd}
button:disabled,.ui-button[aria-disabled=true]{background:#e9e9e9!important;color:#767676!important;border-color:transparent!important;cursor:not-allowed;box-shadow:none}.ui-button[aria-busy=true]{cursor:wait}.ui-spinner{width:16px;height:16px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:ui-spin .8s linear infinite}@keyframes ui-spin{to{transform:rotate(360deg)}}
.phase-link,.view-intro a,.ui-link,.remove-space{font:500 var(--type-small)/1.5 Poppins,Arial,sans-serif;min-height:44px;display:inline-flex;align-items:center;padding:10px 0;color:var(--ui-ink);text-decoration:underline;text-underline-offset:4px;background:none;border:0}.phase-link:hover,.view-intro a:hover,.ui-link:hover,.remove-space:hover{color:var(--ui-ink);text-decoration-color:var(--ui-accent);text-decoration-thickness:3px}
header nav{gap:8px;width:auto;flex-wrap:nowrap}header nav>a:not(.navcta){display:inline-flex;min-height:44px;align-items:center;padding:10px 16px;border-radius:4px;font-size:14px;font-weight:500}header nav>a:not(.navcta):hover{background:var(--ui-surface)}header nav>a[aria-current=page]{text-decoration:underline;text-decoration-color:var(--ui-ink);text-underline-offset:8px}header nav>.navcta[aria-current=page]{text-decoration:none;box-shadow:inset 0 -3px var(--ui-accent)}.mobile-menu{min-width:48px;min-height:48px;border:0;border-radius:4px;background:var(--ui-surface);padding:12px 16px;font:500 14px Poppins}
.ui-field{display:grid;gap:8px;max-width:480px}.ui-field label,.space-card>label{font-size:14px;font-weight:500}.ui-input,input[type=number],select,.area-picker-trigger{min-height:48px;width:100%;padding:12px 16px;border:1px solid #929292;border-radius:4px;background:var(--ui-surface);color:var(--ui-ink);font:400 16px/1.5 Poppins,Arial,sans-serif;margin-top:0}.ui-input:hover,input[type=number]:hover,select:hover,.area-picker-trigger:hover{background:var(--ui-hover);border-color:#626262}.ui-input:focus-visible,input[type=number]:focus-visible,select:focus-visible{border-color:var(--ui-ink);outline:2px solid var(--ui-ink);outline-offset:3px;box-shadow:0 0 0 5px var(--ui-accent)}.ui-input:disabled{background:#eee;color:#767676;cursor:not-allowed;border-color:#ddd}.ui-input[aria-invalid=true]{border:2px solid var(--ui-ink)}.ui-help,.module-help,.space-note,.summary>p,.option small,.program-choices small,.window,.tool-demo figcaption{font-size:14px!important;line-height:1.6;color:var(--ui-muted)}.ui-help{margin:0}.ui-message{padding:16px 20px;border-left:3px solid var(--ui-ink);background:var(--ui-surface);font-size:14px}.ui-message strong{display:block;color:var(--ui-ink)}
.area-picker-trigger{padding-right:48px;text-align:left}.area-picker-trigger:after{top:17px}.area-picker-trigger[aria-expanded=true]{border-color:var(--ui-ink)}.area-picker-trigger[aria-expanded=true]:after{top:22px}.area-picker-panel{border:1px solid #929292;border-radius:4px;box-shadow:0 8px 24px #00000014;padding:8px 0}.area-picker-heading{font-size:14px;color:var(--ui-ink);padding:8px 0 16px}.area-picker-option{font-size:16px;min-height:48px;padding:12px 48px 12px 20px;color:var(--ui-ink)}.area-picker-option[aria-selected=true]{background:#e9e9e9}.area-picker-option:focus-visible{outline:2px solid var(--ui-ink);outline-offset:-3px;box-shadow:inset 5px 0 var(--ui-accent)}.area-picker-list{max-height:min(320px,45vh)}
.option,.program-choices label,.ui-option{border:1px solid #929292;border-radius:4px;padding:20px;min-height:64px;background:white;box-shadow:none;cursor:pointer}.option:hover,.program-choices label:hover,.ui-option:hover{background:var(--ui-surface)}.option:has(input:checked),.program-choices label:has(input:checked),.ui-option:has(input:checked){border-color:var(--ui-ink);box-shadow:inset 0 0 0 1px var(--ui-ink)}.program-choices label:has(input:focus-visible),.option:has(input:focus-visible),.ui-option:has(input:focus-visible){outline:2px solid var(--ui-ink);outline-offset:3px;box-shadow:0 0 0 5px var(--ui-accent)}input[type=radio],input[type=checkbox]{accent-color:var(--ui-ink);width:20px;height:20px;flex-shrink:0}.option input{width:48px;height:44px;right:20px}.switch{width:44px;height:26px;background:#777;margin-left:20px}.option input:checked+.switch{background:var(--ui-ink);box-shadow:inset 0 -2px var(--ui-accent)}.option:has(input:disabled),.ui-option:has(input:disabled){opacity:.55;cursor:not-allowed}.ui-check{display:flex;gap:12px;align-items:center;min-height:48px;cursor:pointer}.ui-option{display:flex;gap:12px;align-items:center}.ui-option small{display:block;color:var(--ui-muted)}
.space-card{border:0;border-top:1px solid var(--ui-line);border-radius:0;padding:24px 0;background:white}.space-top{align-items:center}.space-price,.price-row{font-size:16px;line-height:1.5;gap:24px}.space-fee,.price-row b,.subtotal strong,.ui-price{font-variant-numeric:tabular-nums lining-nums;white-space:normal;text-align:right;letter-spacing:-.02em}.subtotal strong{font-size:var(--type-price)}.summary{border:0;border-radius:4px;background:var(--ui-surface);padding:32px;box-shadow:none}.summary .price-row{min-height:56px}.subtotal{min-height:88px}.ui-price{font-size:var(--type-price);font-weight:500}.ui-region{background:var(--ui-surface);padding:24px;border-radius:4px}.ui-border{border:1px solid var(--ui-line);padding:24px;border-radius:4px}.ui-divider{border:0;border-top:1px solid var(--ui-line);margin:32px 0}.step,.why-number{color:var(--ui-muted);font-size:14px;font-variant-numeric:tabular-nums}.ui-progress{display:flex;flex-wrap:wrap;gap:8px 24px;list-style:none;padding:0}.ui-progress li{padding:12px 0;border-bottom:2px solid transparent;font-size:14px}.ui-progress [aria-current=step]{border-color:var(--ui-ink);font-weight:600}.ui-tag,h3 small{font-size:14px;line-height:1.4;padding:4px 8px;background:var(--ui-surface);border:0;border-radius:3px;color:var(--ui-muted)}dialog{border:0;border-radius:4px;padding:32px;max-width:560px;box-shadow:0 20px 80px #0003}dialog::backdrop{background:#0006;backdrop-filter:none}dialog .close{min-width:44px;min-height:44px;font-size:24px;right:8px;top:8px}dialog h2{font-size:28px;padding-right:32px}.ui-accordion{border-top:1px solid var(--ui-line);margin:0}.ui-accordion summary{min-height:48px;padding:16px 0;font-size:16px}
@media(max-width:850px){header nav{width:100%;gap:8px;align-items:stretch}header nav>a:not(.navcta){display:flex;min-height:48px;padding:12px 16px}header nav .navcta{width:100%}.summary{padding:24px}.program-choices label,.option{padding:16px}.area-picker-option{font-size:16px}.ui-progress{gap:8px 16px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
/* No current-page indicator: the nav is small enough that people know where they are. */
header nav>a:not(.navcta)[aria-current=page]{text-decoration:none;background:none;box-shadow:none}
header nav>.navcta[aria-current=page]{text-decoration:none;box-shadow:none}
#configure .option input:checked+.switch{background:var(--ui-ink);box-shadow:none}
#configure :where(a,button,input,select,summary):focus-visible{outline:2px solid var(--ui-ink);outline-offset:3px;box-shadow:none}
#configure .program-choices label:has(input:focus-visible),#configure .option:has(input:focus-visible){outline:2px solid var(--ui-ink);outline-offset:3px;box-shadow:none}
#configure .program-choices input:focus-visible,#configure .option input:focus-visible{outline:none;box-shadow:none}
#configure .area-picker-option:focus-visible{outline:2px solid var(--ui-ink);outline-offset:-3px;box-shadow:none}

.quote-contact{display:grid;gap:8px;margin:24px 0}.quote-contact label{font-size:14px}.quote-contact input{width:100%;margin-bottom:8px}#sendNelson:disabled{opacity:.6;cursor:wait}

/* Quiet, visible keyboard focus for modal close controls. */
dialog .close{border-radius:2px}
dialog .close:focus-visible{outline:2px solid var(--ui-ink);outline-offset:2px;box-shadow:none}

/* Shared corner treatment for interactive surfaces, including hover/focus states.
   Segmented controls retain square internal joins inside their rounded container. */
button, .button, .navcta, .secondary, .ui-button,
header nav a, .tools-menu a, input[type="submit"], input[type="button"],
.area-picker-trigger, #configure-view .space-select {
 border-radius:2px !important;
}
#configure-view .seg button, .area-picker-option {border-radius:0 !important}

/* Keep footer navigation and year on one row. */
footer{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:nowrap}
footer>span{white-space:nowrap}
