:root{--bg:#f0ede7;--surface:#e8e2ea;--ink:#241536;--muted:#5e5470;--line:#cbc2d2;--draw:#9c8cb0;--hivis:#3f1b5c;--on-hivis:#fff;--brown:#6e4a2c;--band:#3f1b5c;--on-band:#f0ede7;box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#1b1225;--surface:#241832;--ink:#eee8f2;--muted:#b4a8c2;--line:#3e2f4e;--draw:#6c5b82;--hivis:#b99ad8;--on-hivis:#1b1225;--brown:#c99d6e;--band:#2c1b3e;--on-band:#eee8f2}}:root[data-theme=dark]{--bg:#1b1225;--surface:#241832;--ink:#eee8f2;--muted:#b4a8c2;--line:#3e2f4e;--draw:#6c5b82;--hivis:#b99ad8;--on-hivis:#1b1225;--brown:#c99d6e;--band:#2c1b3e;--on-band:#eee8f2}*,:before,:after{box-sizing:inherit}html{scroll-padding-top:env(safe-area-inset-top,0px);scroll-behavior:smooth}body{background:var(--bg);color:var(--ink);font-variation-settings:"wdth" 100;margin:0;font-family:Archivo,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:1.0625rem;line-height:1.6}a{color:inherit}:focus-visible{outline:3px solid var(--brown);outline-offset:3px;border-radius:2px}.wrap{max-width:1180px;margin:0 auto;padding:0 clamp(1.25rem,4vw,2.5rem)}header{z-index:3;background:var(--bg);position:relative}.bar{justify-content:space-between;align-items:center;gap:1rem;padding:1.25rem 0;display:flex}.logo{border-radius:6px;line-height:0;display:block}.logo img{width:auto;height:clamp(40px,6vw,54px);display:block}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .logo{background:#f0ede7;padding:6px 10px}}:root[data-theme=dark] .logo{background:#f0ede7;padding:6px 10px}nav ul{gap:1.75rem;margin:0;padding:0;list-style:none;display:flex}nav a{color:var(--muted);font-size:.95rem;text-decoration:none}nav a:hover{color:var(--ink)}@media (width<=640px){nav .hide-sm{display:none}}.hero{isolation:isolate;--sheet-fade:linear-gradient(97deg,transparent 0 11%,#0000001a 23%,#00000038 38%, #00000061 53%,#000000c2 70%,#000 86%);align-items:center;min-height:min(86vh,720px);display:flex;position:relative;overflow:hidden}.hero svg{z-index:0;width:100%;height:100%;-webkit-mask-image:var(--sheet-fade);mask-image:var(--sheet-fade);position:absolute;inset:0}.hero-scrim{z-index:1;pointer-events:none;background:linear-gradient(97deg,var(--bg) 0 8%,color-mix(in srgb,var(--bg) 62%,transparent) 22%, color-mix(in srgb,var(--bg) 30%,transparent) 44%,transparent 60%);position:absolute;inset:0}.hero .wrap{width:100%}.hero-copy{z-index:2;max-width:36rem;padding:4rem 0 5rem;position:relative}#plan .g-fine{fill:none;stroke:var(--line);stroke-width:.5px;opacity:.4}#plan .g-coarse{fill:none;stroke:var(--line);stroke-width:1px;opacity:.55}#plan .ln{fill:none;stroke:var(--draw);stroke-width:1.7px;stroke-linecap:square;stroke-linejoin:miter}#plan .ln.heavy{stroke-width:3px}#plan .ln.thin{stroke-width:1.2px}#plan .ln.hatch{stroke-width:1.05px;opacity:.7}#plan .ln.dash{stroke-width:1.2px;stroke-dasharray:8 6;opacity:.75}#plan .cl{fill:none;stroke:var(--muted);stroke-width:1.1px;stroke-dasharray:26 6 3 6;opacity:.6}#plan .cut{fill:none;stroke:var(--brown);stroke-width:1.9px;stroke-dasharray:24 9;opacity:.55}#plan .dim,#plan .lead{fill:none;stroke:var(--muted);stroke-width:1.1px;opacity:.8}#plan .sym{fill:none;stroke:var(--muted);stroke-width:1.3px;opacity:.8}#plan .sym-fill{fill:var(--muted);stroke:none;opacity:.8}#plan .lbl{fill:var(--muted);letter-spacing:.06em;opacity:.85;font-family:ui-monospace,Cascadia Mono,Consolas,SFMono-Regular,monospace;font-size:15px}#plan .lbl.mid{text-anchor:middle}#plan .lbl.end{text-anchor:end}#plan .lbl.dimmed{opacity:.55}#plan .lbl.sm{font-size:12.5px}#plan .tb .ln{stroke:var(--muted);opacity:.65}#plan .sheet{opacity:0;transition:opacity .9s}#plan .sheet.on{opacity:1}#p-wipe-rect{transform-box:view-box;transform-origin:0 0;animation:1.5s cubic-bezier(.2,.7,.2,1) .15s forwards sheet-wipe;transform:scaleX(0)}@keyframes sheet-wipe{to{transform:scaleX(1)}}#plan .l-note{opacity:0;animation:.7s 1.2s forwards note-in}@keyframes note-in{to{opacity:1}}#plan .lens{opacity:0;transition:opacity .22s}#plan .lens.on{opacity:1}#plan .lens-bg{fill:var(--bg);opacity:.94}#plan .lens-ring{fill:none;stroke:var(--brown);stroke-width:1.6px;opacity:.8}#plan .lens-lead{fill:none;stroke:var(--brown);stroke-width:1.2px;opacity:.7}#plan #p-lens-tag .lbl{fill:var(--brown);opacity:.9}h1{letter-spacing:-.025em;font-variation-settings:"wdth" 118;margin:0 0 1.5rem;font-size:clamp(2.6rem,7vw,5.2rem);font-weight:800;line-height:.98}.lede{color:var(--muted);max-width:34rem;margin:0 0 2.25rem;font-size:clamp(1.1rem,2vw,1.3rem)}.actions{flex-wrap:wrap;gap:.75rem;display:flex}.btn{border:2px solid var(--ink);padding:.9rem 1.4rem;font-weight:600;text-decoration:none;display:inline-block}.btn.primary{background:var(--hivis);border-color:var(--hivis);color:var(--on-hivis);border-color:var(--hivis)}.btn.primary:hover{filter:brightness(1.15)}.btn.ghost:hover{background:var(--ink);color:var(--bg)}@media (width<=760px){.hero svg{opacity:.5;-webkit-mask-image:linear-gradient(#0000 0 30%,#00000059 58%,#000 88%);mask-image:linear-gradient(#0000 0 30%,#00000059 58%,#000 88%)}.hero-scrim{background:linear-gradient(to bottom,var(--bg) 0 26%,transparent 62%)}.hero-copy{padding:2.5rem 0 8rem}}section{padding:clamp(4rem,9vw,7rem) 0}h2{letter-spacing:-.02em;font-variation-settings:"wdth" 112;margin:0 0 1rem;font-size:clamp(1.9rem,4vw,2.8rem);font-weight:750;line-height:1.05}.intro{color:var(--muted);max-width:36rem;margin:0 0 3rem}.services{background:var(--surface)}.svc{border-top:1px solid var(--line);grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);gap:1rem 3rem;padding:2rem 0;display:grid}.svc:last-child{border-bottom:1px solid var(--line)}.svc h3{margin:0;font-size:1.35rem;font-weight:700;line-height:1.2}.svc p{color:var(--muted);margin:0 0 .75rem}.svc ul{flex-wrap:wrap;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.svc li{border:1px solid var(--line);padding:.3rem .7rem;font-size:.9rem}@media (width<=760px){.svc{grid-template-columns:1fr}}.projects-list{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:2.5rem;display:grid}.proj{border-left:4px solid var(--brown);padding-left:1.25rem}.proj h3{margin:0 0 .5rem;font-size:1.2rem;line-height:1.3}.proj p{color:var(--muted);margin:0 0 1rem}.proj dl{grid-template-columns:auto 1fr;gap:.2rem 1rem;margin:0;font-size:.92rem;display:grid}.proj dt{color:var(--muted)}.proj dd{margin:0}.note{color:var(--muted);margin-top:2.5rem;font-size:.9rem}.about{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:3rem;display:grid}.about p{max-width:34rem;margin:0 0 1rem}.facts{margin:0;padding:0;list-style:none}.facts li{border-top:1px solid var(--line);padding:1rem 0}.facts strong{font-size:1.1rem;display:block}.facts span{color:var(--muted);font-size:.95rem}@media (width<=760px){.about{grid-template-columns:1fr}}.contact{background:var(--band);color:var(--on-band)}.contact h2{max-width:22ch}.contact p{color:color-mix(in srgb,var(--on-band) 78%,transparent);max-width:34rem;margin:0 0 2rem}.contact .btn.primary{background:var(--on-band);border-color:var(--on-band);color:var(--band)}.contact .details{flex-wrap:wrap;gap:2.5rem;margin-top:2.5rem;font-size:.95rem;display:flex}.contact .details a{border-bottom:1px solid;text-decoration:none}.area{background:var(--surface)}.area.has-map .area-grid{grid-template-columns:minmax(0,1fr) minmax(0,1.25fr)}.area-map{width:100%;height:auto;display:block;overflow:visible}#area-map .land{fill:var(--bg);stroke:var(--draw);stroke-width:2px;stroke-linejoin:round}#area-map .lake{fill:var(--surface);stroke:var(--draw);stroke-width:1.4px}#area-map .ring{fill:none;stroke:var(--brown);stroke-width:1.6px}#area-map .ring.inner{fill:color-mix(in srgb,var(--brown) 16%,transparent)}#area-map .ring.outer{stroke-dasharray:11 8;opacity:.8}#area-map .dot{fill:var(--muted)}#area-map .city-mark{fill:var(--brown)}#area-map .lead,#area-map .dim{fill:none;stroke:var(--muted);stroke-width:1.2px}#area-map .sym{fill:none;stroke:var(--muted);stroke-width:1.4px}#area-map .sym-fill{fill:var(--muted)}#area-map .lbl{fill:var(--muted);font-family:ui-monospace,Cascadia Mono,Consolas,SFMono-Regular,monospace;font-size:15px}#area-map .lbl.mid{text-anchor:middle}#area-map .lbl.end{text-anchor:end}#area-map .lbl.dimmed{opacity:.6}#area-map .lbl.water{fill:var(--draw);letter-spacing:.16em;opacity:.85;font-size:14px}#area-map .lbl.key{fill:var(--brown);letter-spacing:.08em;font-size:15px}@media (width<=860px){.area.has-map .area-grid{grid-template-columns:1fr}}.area-grid{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);align-items:center;gap:3rem;display:grid}.area p{max-width:36rem;margin:0 0 1rem}.rings{gap:.75rem;margin:0;padding:0;list-style:none;display:grid}.rings li{border:1px solid var(--line);background:var(--bg);padding:1rem 1.25rem}.rings li:first-child{border-left:4px solid var(--hivis)}.rings li:nth-child(2){margin-left:1.25rem}.rings li:nth-child(3){opacity:.85;margin-left:2.5rem}.rings strong{display:block}.rings span{color:var(--muted);font-size:.93rem}@media (width<=760px){.area-grid{grid-template-columns:1fr}}footer{color:var(--muted);padding:2rem 0;font-size:.88rem}footer .wrap{flex-wrap:wrap;justify-content:space-between;gap:1rem;display:flex}footer a{color:var(--muted)}.page-head{padding:clamp(2.5rem,6vw,4.5rem) 0 0}.page-head h1{margin-bottom:1rem;font-size:clamp(2.2rem,5.5vw,3.8rem)}.page-head .lede{margin-bottom:0}.page-head.has-image{isolation:isolate;color:var(--on-band);padding:clamp(4rem,10vw,7rem) 0 clamp(3rem,7vw,5rem);position:relative;overflow:hidden}.page-head-img{object-fit:cover;z-index:0;width:100%;height:100%;position:absolute;inset:0}.page-head-scrim{z-index:1;background:linear-gradient(100deg,var(--band) 0 20%,color-mix(in srgb,var(--band) 84%,transparent) 50%,color-mix(in srgb,var(--band) 42%,transparent) 100%);position:absolute;inset:0}.page-head.has-image .wrap{z-index:2;position:relative}.page-head.has-image .lede{color:color-mix(in srgb,var(--on-band) 82%,transparent)}@media (width<=760px){.page-head-scrim{background:linear-gradient(170deg,color-mix(in srgb,var(--band) 88%,transparent) 0 55%,color-mix(in srgb,var(--band) 70%,transparent) 100%)}}.more{margin:2.5rem 0 0;font-weight:600}.more a{border-bottom:2px solid var(--brown);padding-bottom:.15rem;text-decoration:none}.more a:hover{color:var(--brown)}.svc h3 a,.proj h3 a{text-decoration:none}.svc h3 a:hover,.proj h3 a:hover{color:var(--brown)}nav a[aria-current=page]{color:var(--ink);border-bottom:2px solid var(--brown);padding-bottom:.2rem}.detail-nav-wrap{padding:2rem 0 0}.detail-nav ol{counter-reset:dn;flex-wrap:wrap;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.detail-nav li{counter-increment:dn}.detail-nav a{border:1px solid var(--line);color:var(--muted);padding:.4rem .8rem;font-size:.9rem;text-decoration:none;display:inline-block}.detail-nav a:before{content:counter(dn,decimal-leading-zero) " ";color:var(--draw)}.detail-nav a:hover{border-color:var(--brown);color:var(--ink)}.detail-grid{grid-template-columns:minmax(0,1fr) minmax(0,1.85fr);align-items:start;gap:1.5rem 3.5rem;display:grid}.detail-aside h2{margin:0 0 1rem;font-size:clamp(1.6rem,3vw,2.2rem)}.detail-aside{position:sticky;top:2rem}.service-detail.alt{background:var(--surface)}.service-detail,.project-detail{border-top:1px solid var(--line)}.tags{flex-wrap:wrap;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.tags li{border:1px solid var(--line);color:var(--muted);padding:.25rem .6rem;font-size:.85rem}@media (width<=860px){.detail-grid{grid-template-columns:1fr}.detail-aside{position:static}}.prose{max-width:42rem}.prose p{margin:0 0 1.1rem}.prose p:last-child{margin-bottom:0}.prose strong{font-variation-settings:"wdth" 108;font-weight:700}.prose h3{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:0 0 .75rem;font-size:1.05rem}.prose code{background:var(--surface);padding:.1rem .35rem;font-family:ui-monospace,Consolas,monospace;font-size:.9em}.meta{grid-template-columns:auto 1fr;gap:.3rem 1rem;margin:0 0 1.5rem;font-size:.92rem;display:grid}.meta dt{color:var(--muted)}.meta dd{margin:0}.cols{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:2rem;margin-top:2rem;display:grid}.ticks{margin:0;padding:0;list-style:none}.ticks li{border-top:1px solid var(--line);padding:.4rem 0 .4rem 1.4rem;font-size:.95rem;position:relative}.ticks li:before{content:"";border-left:2px solid var(--brown);border-bottom:2px solid var(--brown);width:.6rem;height:.6rem;position:absolute;top:1.05rem;left:0}.gallery{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.5rem;margin-top:3rem;display:grid}.gallery figure{margin:0}.gallery img{border:1px solid var(--line);width:100%;height:auto;display:block}.gallery figcaption{color:var(--muted);margin-top:.6rem;font-size:.88rem}.photo-pending{aspect-ratio:4/3;border:1px dashed var(--draw);background:var(--surface);justify-content:center;align-items:center;display:flex}.photo-pending span{letter-spacing:.1em;text-transform:uppercase;color:var(--draw);font-family:ui-monospace,Consolas,monospace;font-size:.8rem}.note.banner{border-left:4px solid var(--brown);background:var(--surface);margin:0 0 1rem;padding:.75rem 1rem}.placeholder-inline{color:var(--brown);border-left:3px solid var(--brown);padding-left:1rem;font-size:.95rem}.about-story{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);align-items:start;gap:3.5rem;display:grid}.about-story h2{margin:2.5rem 0 1rem;font-size:clamp(1.5rem,3vw,2rem)}.about-story h2:first-child{margin-top:0}.values{border-top:2px solid var(--ink);padding-top:1.5rem}.values h2{letter-spacing:.06em;text-transform:uppercase;margin:0 0 1rem;font-size:1.15rem}.values dl{margin:0}.values dt{margin-top:1.25rem;font-weight:700}.values dd{color:var(--muted);margin:.25rem 0 0;font-size:.95rem}@media (width<=860px){.about-story{grid-template-columns:1fr;gap:2.5rem}}.team{gap:2.5rem;display:grid}.member{border-top:1px solid var(--line);grid-template-columns:200px minmax(0,1fr);align-items:start;gap:2rem;padding-top:2rem;display:grid}.member h3{margin:0;font-size:1.4rem}.member .role{color:var(--muted);margin:.25rem 0 1rem}.member .creds{color:var(--draw)}.member-photo{border:1px solid var(--line);width:100%;height:auto;display:block}.member-photo.pending{aspect-ratio:4/5;border:1px dashed var(--draw);background:var(--surface)}@media (width<=640px){.member{grid-template-columns:1fr}.member-photo{max-width:200px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}#p-wipe-rect{animation:none;transform:none}#plan .l-note{opacity:1;animation:none}#plan .sheet{transition:none}#plan .lens{display:none}}
