:root[data-theme=nova][data-color-mode=light]{color-scheme:light;--pf-bg:#f8f7f1;--pf-section-soft:#eeeee5;--pf-panel:#fffef9;--pf-project-bg:#e4e9dc;--pf-project-panel:#f8f7f1;--pf-map-bg:#e2e9ee;--pf-chart-secondary:#9eb1c0;--pf-text:#18251f;--pf-muted:#4b5c51;--pf-border:#d9ded2;--pf-border-strong:#b8c5b7;--pf-accent:#315c45;--pf-accent-soft:#e0eadc;--pf-accent-ink:#fff;--pf-hover:#e8eee2;--pf-header-bg:#f8f7f1f2;--pf-footer-bg:#eeeee5;--pf-contact-bg:#e4ebde;--pf-contact-text:#18251f;--pf-contact-muted:#4b5c51;--color-brand-dark:var(--pf-text);--color-brand-light:var(--pf-bg);--color-brand-cream:var(--pf-section-soft);--color-brand-primary:var(--pf-accent);--color-brand-accent:var(--pf-accent);--color-surface:var(--pf-panel);--ui-bg-page:var(--pf-bg);--ui-bg-base:var(--pf-section-soft);--ui-bg-surface:var(--pf-panel);--ui-bg-accent:var(--pf-accent);--ui-text-on-light:var(--pf-text);--ui-text-on-light-subtle:var(--pf-muted);--ui-text-on-dark:#f6f8f5;--ui-text-on-dark-subtle:#c2cdc5}:root[data-theme=nova][data-color-mode=dark]{color-scheme:dark;--pf-bg:#101416;--pf-section-soft:#151b1d;--pf-panel:#192123;--pf-project-bg:#151c1e;--pf-project-panel:#1a2224;--pf-map-bg:#202a2b;--pf-chart-secondary:#788887;--pf-text:#f1f4ee;--pf-muted:#aab5ad;--pf-border:#293435;--pf-border-strong:#3c4a48;--pf-accent:#b8e36e;--pf-accent-soft:#25311f;--pf-accent-ink:#151a12;--pf-hover:#202a2b;--pf-header-bg:#101416;--pf-footer-bg:#0c1011;--pf-contact-bg:#1b2422;--pf-contact-text:#f1f4ee;--pf-contact-muted:#c1cbc2;--color-brand-dark:var(--pf-text);--color-brand-light:var(--pf-panel);--color-brand-cream:var(--pf-section-soft);--color-brand-primary:var(--pf-accent);--color-brand-accent:var(--pf-accent);--color-surface:var(--pf-panel);--ui-bg-page:var(--pf-bg);--ui-bg-base:var(--pf-section-soft);--ui-bg-surface:var(--pf-panel);--ui-bg-accent:var(--pf-accent);--ui-text-on-light:var(--pf-text);--ui-text-on-light-subtle:var(--pf-muted);--ui-text-on-dark:#f6f8f5;--ui-text-on-dark-subtle:#c2cdc5}:root[data-theme=nova] body{background:var(--pf-bg);color:var(--pf-text)}:root[data-theme=nova] ::selection{background:var(--pf-accent);color:var(--pf-accent-ink)}:root[data-theme=nova] :focus-visible{outline-color:var(--pf-accent)}.portfolio-card-nav{width:min(24rem,32vw);margin-inline:auto;display:none}.has-js .portfolio-card-nav{display:block}.has-js .portfolio-nav{display:none!important}.portfolio-star-cta{white-space:nowrap;gap:.6rem;min-height:3.1rem;text-decoration:none;box-shadow:0 8px 24px #192b361a;color:var(--pf-text)!important;font:700 .92rem/1.2 var(--font-sans)!important;border-radius:.75rem!important;padding:.85rem 1.1rem!important}.portfolio-star-cta span{color:var(--pf-accent)}.portfolio-star-cta:focus-visible{outline:2px solid var(--pf-accent);outline-offset:4px}.portfolio-hero-art__topography{opacity:.34;pointer-events:none;position:absolute;inset:-1.6rem -1.7rem -1rem;mask-image:linear-gradient(135deg,#000 0%,#0000 94%)}.portfolio-topography-canvas{position:absolute;inset:0}.portfolio-topography-canvas canvas{width:100%;height:100%;display:block}.portfolio-scroll-expand{border-radius:1rem;width:100%;height:min(78vh,50rem);min-height:27rem;overflow:visible!important}.portfolio-project__tilt{width:100%!important;height:18rem!important}.portfolio-magic-bento{font-family:var(--font-sans)}@media (width<=980px){.portfolio-card-nav{display:none}}@media (width<=520px){.portfolio-star-cta{min-height:2.9rem;padding:.78rem .88rem!important;font-size:.84rem!important}}@media (prefers-reduced-motion:reduce){.portfolio-star-cta{transition:none!important}}.quote-page{min-height:calc(100vh - 4.6rem);padding-block:clamp(3rem,7vw,6rem)}.quote-page__container{width:min(100% - 2rem,54rem)}.quote-page__intro{max-width:42rem;margin-bottom:clamp(2rem,5vw,3.6rem)}.quote-page__intro h1{max-width:12ch;margin:0}.quote-page__intro p{max-width:58ch;color:var(--pf-muted);margin:1rem 0 0}.quote-wizard{--quote-line:var(--pf-border);--quote-choice-border:var(--pf-border-strong);color:var(--pf-text)}.quote-wizard__top{border-bottom:1px solid var(--pf-border);grid-template-columns:1fr minmax(5rem,10rem);align-items:center;gap:1.5rem;padding-bottom:1.15rem;display:grid}.quote-wizard__eyebrow{color:var(--pf-accent);font:700 .7rem/1.2 var(--font-sans);letter-spacing:.08em;text-transform:uppercase;margin:0 0 .7rem}.quote-wizard__progress{gap:1.2rem;margin:0;padding:0;list-style:none;display:flex}.quote-wizard__progress li{color:var(--pf-muted);font-size:.78rem}.quote-wizard__progress li.is-active{color:var(--pf-text);font-weight:700}.quote-wizard__progress-bar{background:var(--pf-border);border-radius:4px;height:3px;overflow:hidden}.quote-wizard__progress-bar span{background:var(--pf-accent);height:100%;transition:width .3s;display:block}.quote-wizard__step{min-height:22rem;padding-block:2rem 1.2rem}.quote-wizard__step--enter{animation:.32s cubic-bezier(.22,1,.36,1) both quote-step-enter}@keyframes quote-step-enter{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.quote-choice-fieldset{border:0;min-width:0;margin:0;padding:0}.quote-choice-fieldset legend,.quote-contact-fields h3{font:700 clamp(1.25rem, 3vw, 1.65rem)/1.2 var(--font-heading);letter-spacing:-.025em;margin:0 0 1rem}.quote-choice-list{gap:.65rem;display:grid}.quote-choice{border:1px solid var(--quote-choice-border);background:var(--pf-panel);width:100%;min-height:3.5rem;color:var(--pf-text);text-align:start;font:600 .95rem/1.4 var(--font-sans);cursor:pointer;border-radius:.65rem;justify-content:space-between;align-items:center;gap:1rem;padding:.85rem 1rem;transition:border-color .18s,background .18s;display:flex}.quote-choice:hover,.quote-feature:hover{border-color:var(--pf-accent)}.quote-choice.is-selected,.quote-feature.is-selected{border-color:var(--pf-accent);background:var(--pf-accent-soft)}.quote-choice__check{border:1px solid var(--pf-border-strong);width:1.25rem;height:1.25rem;color:var(--pf-accent);border-radius:50%;place-items:center;font-size:.75rem;display:grid}.quote-choice.is-selected .quote-choice__check{border-color:var(--pf-accent)}.quote-feature-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem;display:grid}.quote-feature{border:1px solid var(--quote-choice-border);background:var(--pf-panel);min-height:3.25rem;color:var(--pf-text);text-align:start;font:500 .85rem/1.4 var(--font-sans);cursor:pointer;border-radius:.6rem;align-items:center;gap:.65rem;padding:.7rem .8rem;transition:border-color .18s,background .18s;display:flex}.quote-feature__box{border:1px solid var(--pf-border-strong);width:1.05rem;height:1.05rem;color:var(--pf-accent-ink);border-radius:.25rem;flex:0 0 1.05rem;place-items:center;font-size:.7rem;display:grid}.quote-feature.is-selected .quote-feature__box{border-color:var(--pf-accent);background:var(--pf-accent)}.quote-field{color:var(--pf-text);gap:.45rem;font-size:.82rem;font-weight:650;display:grid}.quote-field small{color:var(--pf-muted);font-weight:400}.quote-field input,.quote-field textarea,.quote-field select{border:1px solid var(--pf-border-strong);background:var(--pf-panel);width:100%;min-height:2.9rem;color:var(--pf-text);font:400 .95rem/1.45 var(--font-sans);border-radius:.55rem;padding:.7rem .8rem}.quote-field textarea{resize:vertical}.quote-field input:focus,.quote-field textarea:focus,.quote-field select:focus{outline:2px solid var(--pf-accent);outline-offset:2px}.quote-field--details{margin-top:1.3rem}.quote-scope-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin-top:1.25rem;display:grid}.quote-wizard__fallback{color:var(--pf-muted);margin:1.3rem 0 0;font-size:.84rem}.quote-wizard__fallback a{color:var(--pf-accent);text-underline-offset:.2em;font-weight:700}.quote-review{grid-template-columns:1fr 1fr;gap:1.2rem;display:grid}.quote-summary,.quote-contact-fields{border:1px solid var(--pf-border);background:var(--pf-panel);border-radius:.7rem;padding:1.15rem}.quote-summary h3,.quote-contact-fields h3{margin:0 0 1rem;font-size:1.05rem}.quote-summary dl{margin:0}.quote-summary dl div{border-top:1px solid var(--pf-border);padding-block:.55rem}.quote-summary dt{color:var(--pf-muted);font-size:.72rem}.quote-summary dd{margin:.2rem 0 0;font-size:.88rem;line-height:1.5}.quote-summary>p,.quote-privacy{color:var(--pf-muted);margin:.8rem 0 0;font-size:.75rem;line-height:1.5}.quote-contact-fields{align-content:start;gap:.8rem;display:grid}.quote-contact-fields .quote-field{gap:.35rem}.quote-contact-fields .quote-field input{min-height:2.5rem}.quote-submit{background:var(--pf-accent);min-height:3rem;color:var(--pf-accent-ink);font:700 .9rem/1.3 var(--font-sans);cursor:pointer;border:0;border-radius:.6rem;grid-column:1/-1;justify-content:space-between;align-items:center;gap:1rem;padding:.8rem 1rem;display:flex}.quote-submit:disabled{opacity:.58;cursor:wait}.quote-wizard__actions{border-top:1px solid var(--pf-border);justify-content:space-between;align-items:center;gap:1rem;padding-top:1.1rem;display:flex}.quote-back,.quote-next{min-height:2.8rem;font:700 .85rem/1.3 var(--font-sans);cursor:pointer;border-radius:.55rem;padding:.65rem .9rem}.quote-back{border:1px solid var(--pf-border-strong);color:var(--pf-text);background:0 0}.quote-next{border:1px solid var(--pf-accent);background:var(--pf-accent);color:var(--pf-accent-ink);align-items:center;gap:1rem;margin-inline-start:auto;display:flex}.quote-error{color:#c13b31;margin:1rem 0 0;font-size:.85rem}.quote-success{align-content:center;justify-items:start;gap:.9rem;min-height:17rem;display:grid}.quote-success__mark{border:1px solid var(--pf-accent);width:2.5rem;height:2.5rem;color:var(--pf-accent);border-radius:50%;place-items:center;display:grid}.quote-success p{max-width:45ch;margin:0;font-size:1.1rem;line-height:1.6}.quote-wizard button:focus-visible{outline:2px solid var(--pf-accent);outline-offset:3px}@media (width<=650px){.quote-wizard__top{grid-template-columns:1fr;gap:.8rem}.quote-wizard__progress{justify-content:space-between;gap:.65rem}.quote-wizard__progress li{font-size:.7rem}.quote-feature-list,.quote-review,.quote-scope-fields{grid-template-columns:1fr}.quote-submit{grid-column:auto}.quote-wizard__step{min-height:auto}}@media (prefers-reduced-motion:reduce){.quote-wizard__step--enter{animation:none}.quote-wizard__progress-bar span,.quote-choice,.quote-feature{transition:none}}
/*$vite$:1*/