:root{--ink:#302937;--muted:#62576d;--bg:#eeeaf2;--surface:250,247,253;--glass:rgba(var(--surface),.55);--edge:rgba(255,255,255,.82);--control:#6f54a2;--control-ink:#fff;--accent:#6f54a2;--photo-filter:brightness(.64);color-scheme:light}
:root[data-theme=dark]{--ink:#f5eefc;--muted:#c8bdd5;--bg:#211b29;--surface:40,31,51;--edge:rgba(225,210,247,.3);--control:#9475c8;--accent:#c7aae9;--photo-filter:brightness(.56);color-scheme:dark}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:140px}body{margin:0;background:var(--bg);color:var(--ink);font:17px/1.65 'Helvetica Neue',Arial,sans-serif}button,input,textarea,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}a{color:inherit;text-underline-offset:5px}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--accent);outline-offset:5px}button:disabled{cursor:wait;opacity:.5}h1,h2,p{margin:0}h1,h2,dt{font-family:Georgia,'Times New Roman',serif;font-weight:400;line-height:1.05;letter-spacing:-.04em}h1{font-size:clamp(48px,6.6vw,90px)}h2{font-size:clamp(36px,4vw,60px)}.eyebrow{font-size:11px;letter-spacing:.2em;font-weight:600;margin-bottom:24px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;flex:none;vertical-align:middle}a svg{margin-left:8px}.skip{position:fixed;top:-100px;left:20px;z-index:100;background:var(--bg);padding:10px}.skip:focus{top:10px}
.scene{position:fixed;inset:0 0 auto;height:100vh;height:100lvh;z-index:-1;pointer-events:none;overflow:hidden;background:var(--bg)}.scene::before{content:'';position:absolute;inset:0;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='180' viewBox='0 0 160 180'%3E%3Cpath fill='none' stroke='%239475ab' stroke-opacity='.17' d='M20 150V45h85v55H65v25h20M140 20H90v20h25v20M130 150H110v-25H85'/%3E%3C/svg%3E");opacity:1}.scene.scene-ready::before{opacity:0}.scene canvas{display:block;width:100%;height:100%;opacity:0;transition:none}.scene canvas.ready{opacity:1}
.glass{position:relative;isolation:isolate;background:var(--glass);backdrop-filter:blur(2.5px);-webkit-backdrop-filter:blur(2.5px);border:1px solid var(--edge);box-shadow:0 12px 40px #00000014,inset 0 1px 0 #ffffff24;border-radius:6px}.glint{position:absolute;inset:-1px;border-radius:inherit;padding:1px;background:conic-gradient(from var(--angle,0deg),transparent 0deg 270deg,#ffffff78 302deg,transparent 328deg);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask-composite:exclude;pointer-events:none;z-index:3}.scroll-glass{background:rgba(var(--surface),var(--glass-tint,.45));backdrop-filter:blur(var(--glass-blur,2.5px));-webkit-backdrop-filter:blur(var(--glass-blur,2.5px));box-shadow:0 16px 32px rgba(0,0,0,var(--glass-shadow,.08)),inset 0 1px 0 #ffffff18;scale:var(--glass-scale,1);transform-origin:center;transition:scale .22s ease-out}.surface-sheen{position:absolute;inset:0;pointer-events:none;border-radius:inherit;z-index:-1;opacity:.3;background:linear-gradient(110deg,transparent 35%,#ffffff38 50%,transparent 65%);background-size:250% 100%;background-position:var(--sheen-x,50%) center;mask-image:repeating-linear-gradient(0deg,transparent 0 35px,#000 36px 37px,transparent 38px 50px)}.scroll-glass:not(.glass-near){backdrop-filter:none;-webkit-backdrop-filter:none;scale:1;box-shadow:none}.glass:not(.glass-near)>.glint,.glass:not(.glass-near)>.surface-sheen{visibility:hidden}
.nav{position:fixed;z-index:20;top:24px;left:50%;transform:translateX(-50%);width:min(1100px,92%);display:flex;align-items:center;gap:24px;padding:10px 18px;border-radius:18px;background-image:repeating-linear-gradient(115deg,transparent 0 4px,#ffffff04 4px 5px)}.wordmark{background:#6f54a2;padding:8px 13px;border-radius:10px;line-height:0;display:block;flex:none}.wordmark img{display:block;width:100px;height:auto}.nav>nav{display:flex;gap:24px;align-items:center;margin-left:auto}.nav nav a{font-size:14px;text-decoration:none;display:flex;align-items:center;min-height:44px}.nav nav a:hover{text-decoration:underline}.menu-toggle{display:flex;align-items:center;justify-content:center;gap:7px;margin-left:auto;background:none;border:0;color:var(--ink);padding:10px;min-width:44px;min-height:44px;font-size:13px;border-radius:8px}.menu-toggle[aria-expanded=true]{background:rgba(var(--surface),.5)}.menu-panel{position:absolute;right:0;top:calc(100% + 12px);width:300px;max-width:92vw;max-height:calc(100dvh - 140px);overflow:auto;padding:20px;border:1px solid var(--edge);border-radius:14px;background:var(--glass);backdrop-filter:blur(3.5px);-webkit-backdrop-filter:blur(3.5px);box-shadow:0 12px 40px #0003}.menu-panel[hidden]{display:none}.menu-panel nav{display:flex;flex-direction:column;gap:0}.menu-panel nav a{padding:5px 8px}.utility{display:flex;gap:8px;flex-wrap:wrap;border-top:1px solid var(--edge);padding-top:15px;margin-top:12px}.utility button{background:none;border:1px solid var(--edge);color:var(--ink);padding:8px 12px;font-size:12px;min-height:44px;border-radius:6px}.utility button:hover{background:rgba(var(--surface),.65)}
.opening{position:relative;isolation:isolate;padding:205px 8% 90px;min-height:760px;display:flex;align-items:flex-start}.home-hero{max-width:970px;position:relative;z-index:1;color:#fff;text-shadow:0 2px 25px #0009;pointer-events:none}.home-hero h1{font-size:clamp(48px,6vw,86px)}.home-hero .intro{font-size:20px;margin:30px 0}.hero-photo{position:absolute;inset:0;z-index:-1;overflow:hidden;background:#302b35}.hero-photo::before,.hero-photo::after{content:'';position:absolute;inset:0;background-image:var(--photo-a,url('assets/enhanced/homepage/east-longmeadow-modern-4k.jpg'));background-size:cover;background-position:center;filter:var(--photo-filter)}.hero-photo::after{background-image:var(--photo-b,url('assets/enhanced/homepage/east-longmeadow-modern-4k.jpg'));opacity:var(--photo-mix,0);transition:opacity 2s ease}.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--control);color:var(--control-ink);padding:14px 25px;border:1px solid var(--edge);border-radius:6px;text-decoration:none;font-size:15px;min-height:48px;line-height:1.25;transition:filter .2s,box-shadow .2s}.button:hover{filter:brightness(1.1);box-shadow:0 5px 18px #0002}.button svg{margin:0}.photo-action{position:absolute;left:8%;bottom:125px;z-index:2;background:#ffffff25;color:white;backdrop-filter:blur(2.5px);-webkit-backdrop-filter:blur(2.5px);border:1px solid #ffffff70;border-radius:50px;font-size:14px;padding:14px 20px;box-shadow:0 3px 18px #0003}.photo-action:hover{background:#ffffff38}
.entry-section{display:grid;grid-template-columns:1fr 1fr;gap:28px;padding:0 8%;margin-top:-38px;position:relative}.entry-card{padding:38px;text-decoration:none}.entry-card .eyebrow{display:block}.entry-card h2{display:flex;justify-content:space-between;align-items:center}.entry-card h2 svg{width:27px;height:27px}.entry-card p{margin-top:22px;max-width:400px}.services{display:grid;grid-template-columns:1.3fr 1fr;gap:45px;padding:100px 8%;align-items:center}.reading{max-width:730px;padding:48px}.reading>p:not(.eyebrow){margin:26px 0;max-width:560px}dl{margin:35px 0}dl>div{display:grid;grid-template-columns:130px 1fr;gap:24px;border-top:1px solid var(--edge);padding:20px 0}dt{font-size:28px}dd{margin:0;color:var(--muted);font-size:16px}.text-link{font-size:15px}.text-link svg{width:16px;height:16px}.scene-window{min-height:540px;border:1px solid var(--edge);border-radius:80px 12px 80px 12px;background:#9475eb09;box-shadow:inset 0 0 70px #9475eb12;display:flex;align-items:end;padding:30px}.scene-window span{font-size:10px;letter-spacing:.22em;color:var(--muted)}.featured{padding:25px 8% 50px}.featured>div{margin-bottom:30px}.featured>a{display:block;padding:22px;text-decoration:none}.featured img{height:auto;max-height:600px;object-fit:cover}.featured a>span{display:flex;align-items:center;padding:16px 0 0}.final-section{padding:80px 8% 100px}.actions{display:flex;align-items:center;gap:25px;flex-wrap:wrap}footer{padding:50px 8% 100px;display:flex;align-items:center;justify-content:space-between;gap:35px;border-radius:0!important}footer p,footer a:not(.wordmark){font-size:14px}footer p{margin-top:20px}footer>div:nth-child(2) a{display:block;margin:12px 0}.demo-note{color:var(--muted);max-width:330px}
.gallery-main{max-width:1400px;margin:auto;padding:200px 6% 80px;overflow-x:clip}.gallery-intro{max-width:880px;margin-bottom:65px}.gallery-intro>p:last-child{font-size:20px;margin-top:25px;color:var(--muted)}.gallery-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:48px 34px;overflow-anchor:none}.project{padding:24px;min-width:0;scroll-margin-top:140px}.project-open{padding:0;width:100%;color:inherit;background:none;border:0;text-align:left;border-radius:4px}.image-frame{padding:14px;background:#ffffff14;border:1px solid var(--edge);border-radius:4px}.image-frame img{display:block;width:100%;height:330px;object-fit:cover;border-radius:2px}.project-label{padding:20px 0 10px;display:flex;align-items:center;justify-content:space-between;gap:18px}.project h2{font-size:28px;line-height:1.2;letter-spacing:-.025em}.project-label span{font-size:12px;white-space:nowrap}.original{font-size:12px;color:var(--muted);display:inline-block;margin-top:8px}.project.is-open{grid-column:1/-1}.project.is-open .image-frame img{height:auto;max-height:650px;object-fit:contain;background:#9475eb08}.project-description{max-width:860px;margin:22px auto 5px;padding:20px 8px 8px;border-top:1px solid var(--edge)}.project-description p{font-size:20px;line-height:1.7}.project-collapse{margin-top:25px;background:none;border:0;color:var(--ink);padding:10px 0;text-decoration:underline;text-underline-offset:5px;min-height:44px}.write-word{display:inline-block;white-space:nowrap}.write-glyph{display:inline-block}.gallery-end{padding:50px;margin-top:75px;display:flex;align-items:center;justify-content:space-between;gap:30px}.gallery-end h2{font-size:42px}
.chat-launch{position:fixed;z-index:25;bottom:max(18px,env(safe-area-inset-bottom));right:4%;padding:14px 22px;color:var(--ink);font-size:14px;display:flex;gap:10px;align-items:center;border-radius:50px;min-height:48px}.chat-launch svg{width:19px;height:19px}.chat-launch[hidden]{display:none}.chat{position:fixed;z-index:40;right:4%;bottom:calc(22px + var(--keyboard-offset,0px));width:min(440px,92vw);height:min(650px,calc(var(--available-height,100dvh) - 44px));max-height:calc(var(--available-height,100dvh) - 44px);display:flex;flex-direction:column;padding:14px;border-radius:18px;background:rgba(var(--surface),.95);box-shadow:0 24px 75px #0004;overflow:hidden}.chat[hidden]{display:none}.chat.expanded{width:min(900px,92vw);height:calc(var(--available-height,100dvh) - 44px)}.chat-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:1px 4px 12px;border-bottom:1px solid var(--edge);flex:none}.chat-head strong{font-size:15px}.chat-head p{font-size:11px;color:var(--muted);line-height:1.4;margin-top:2px}.chat-actions{display:flex;gap:2px}.chat-actions button{display:flex;align-items:center;justify-content:center;background:none;border:0;color:var(--ink);width:44px;height:44px;border-radius:8px}.chat-actions button:hover{background:rgba(var(--surface),.8)}.messages{min-height:0;flex:1;overflow-y:auto;overscroll-behavior:contain;padding:16px 3px;scrollbar-width:thin}.chat-message{position:relative;isolation:isolate;margin-bottom:14px;padding:14px 16px;font-size:15px;line-height:1.65;white-space:pre-wrap;overflow-wrap:anywhere;border-radius:10px}.chat-message.assistant{border:1px solid var(--edge);background:rgba(var(--surface),.7)}.chat-message.user{background:#6f54a21b;margin-left:24px;border:1px solid #9475eb30}.chat-message.notice{color:var(--accent);border-color:#9475ab70}.chat-message a{color:var(--accent);text-decoration:underline}.message-build{position:absolute;inset:-1px;z-index:-1;pointer-events:none;border:1px solid var(--edge);border-radius:inherit;background:rgba(var(--surface),.95)}.widget-status{font-size:12px;min-height:20px;color:var(--muted);padding:0 6px 5px}.chat-form{display:flex;gap:8px;align-items:flex-end;margin:0;padding:8px;background:rgba(var(--surface),.6);border:1px solid var(--edge);border-radius:10px;flex:none}.chat-form textarea{resize:none;width:100%;min-width:0;min-height:46px;max-height:120px;border:0;background:none;color:var(--ink);padding:11px 7px;font-size:16px;line-height:24px}.send{width:46px;height:46px;display:flex;align-items:center;justify-content:center;flex:none;border:0;background:var(--control);color:white;border-radius:8px}.chat-terms{font-size:10px;color:var(--muted);text-align:center;padding:8px 3px 0;line-height:1.4;flex:none}.chat-terms a{white-space:nowrap}.wa-audio{margin-top:8px;flex:none}.chat .wa-voice-hint{font-size:11px}
@media(max-width:1100px){.nav{gap:18px}.nav>nav{gap:16px}.image-frame img{height:250px}.project{padding:18px}}
@media(max-width:800px){.nav{top:12px;padding:9px 12px;gap:8px;flex-wrap:nowrap;width:94%;border-radius:14px}.nav .wordmark{padding:7px 8px;border-radius:8px}.nav .wordmark img{width:66px}.nav>nav{display:flex;gap:14px;margin-left:auto}.nav>nav a{font-size:12px}.nav>nav a:not(.nav-primary){display:none}.menu-toggle{margin-left:0;padding:8px}.menu-toggle span{display:none}.menu-panel{width:300px;max-height:calc(100dvh - 110px)}.opening{display:block;min-height:0;padding:135px 6% 0;background:none}.home-hero{color:var(--ink);text-shadow:none;pointer-events:auto;max-width:660px;margin:0 auto;padding-bottom:30px}.home-hero h1{font-size:clamp(42px,7vw,60px)}.home-hero .intro{font-size:18px;margin:24px 0 0}.hero-photo{position:relative;z-index:0;inset:auto;margin:0 -6.82%;height:auto;aspect-ratio:1.25;max-height:540px}.hero-photo::before,.hero-photo::after{filter:brightness(.87);background-size:cover;background-position:center}.photo-action{left:6%;bottom:24px;font-size:13px;padding:12px 17px;min-height:44px;background:#24202d59}.photo-action:hover{background:#24202d75}.entry-section{padding:28px 6% 0;gap:18px;grid-template-columns:1fr;margin-top:0}.entry-card{padding:28px}.entry-card h2{font-size:38px}.services{display:block;padding:55px 6%}.reading{padding:30px}.scene-window{min-height:270px;margin-top:30px;border-radius:50px 10px}.featured{padding:10px 6% 30px}.featured>a{padding:14px}.final-section{padding:45px 6% 70px}dl>div{grid-template-columns:1fr;gap:10px}.gallery-main{padding:135px 6% 70px}.gallery-grid{grid-template-columns:1fr;gap:30px}.image-frame img{height:auto;aspect-ratio:3/2}.project-label{align-items:flex-start}.project h2{font-size:26px}.project.is-open .image-frame img{max-height:520px;aspect-ratio:auto}.project-description p{font-size:18px}.project{scroll-margin-top:105px}.gallery-end{flex-direction:column;align-items:flex-start;padding:30px}footer{align-items:flex-start;flex-direction:column;padding:40px 6% 100px;gap:22px}.chat{right:3%;bottom:calc(max(12px,env(safe-area-inset-bottom)) + var(--keyboard-offset,0px));width:94vw;height:min(650px,calc(var(--available-height,100dvh) - 100px));max-height:calc(var(--available-height,100dvh) - 28px);padding:12px}.chat.expanded{width:94vw;height:calc(var(--available-height,100dvh) - 28px)}.chat-launch{right:4%;font-size:13px;padding:13px 18px}.chat-message{font-size:15px}.chat-head strong{font-size:14px}}
@media(max-width:380px){.nav{gap:5px;padding:8px}.nav .wordmark img{width:57px}.nav>nav{gap:9px}.nav>nav a{font-size:11px}.menu-toggle{padding:8px;min-width:40px}.home-hero h1{font-size:42px}.home-hero .intro{font-size:17px}.chat-head p{font-size:10px}.project-label span{white-space:normal;min-width:60px}.project h2{font-size:25px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important}.glint{background:none}.scroll-glass{scale:1}}body.motion-paused .glint{background:none}body.motion-paused .surface-sheen{background-position:50% center}
@media print{.nav,.chat,.chat-launch,.scene,.glint,.surface-sheen{display:none}.project-description[hidden]{display:block}.glass{background:white;color:black;box-shadow:none;scale:1}.hero-photo{position:relative;aspect-ratio:3/2}.home-hero{color:black}.opening{min-height:0;padding:20px}}

.image-frame{transform-origin:top left}
@media(max-width:800px){.project.is-open{scale:1}.project.is-open .image-frame{width:100vw;max-width:none;margin-left:calc(50% - 50vw);padding:4px;border-radius:0;background:rgba(var(--surface),.3);border:1px solid var(--edge);box-shadow:0 12px 28px #0002}.project.is-open .image-frame img{width:100%;height:auto;max-height:none;object-fit:cover;border-radius:0}.project.is-open .project-label{padding-top:25px}}
@media(max-width:800px){.hero-photo{width:calc(100% + 13.64%)}}

.menu-icon path{transform-origin:12px 12px;transition:transform .24s ease,opacity .16s ease}.menu-top{transform:translateY(-5px)}.menu-bottom{transform:translateY(5px)}.menu-toggle[aria-expanded=true] .menu-top{transform:rotate(45deg)}.menu-toggle[aria-expanded=true] .menu-bottom{transform:rotate(-45deg)}.menu-toggle[aria-expanded=true] .menu-middle{opacity:0}
.gallery-main{padding-inline:min(6vw,84px)}
body.motion-paused .hero-photo::after{transition:none}

/* Shared source-backed content and unlisted review routes. */
.page-content{padding:175px min(6vw,84px) 90px;max-width:1600px;margin:auto}.page-heading{max-width:1000px;margin:20px 0 65px}.page-heading .intro{font-size:20px;max-width:760px;margin-top:28px;color:var(--muted)}.page-heading h1{font-size:clamp(44px,6vw,80px)}.content-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px}.content-stack{display:grid;gap:28px}.content-card{padding:clamp(25px,4vw,54px);min-width:0}.content-card h2{font-size:clamp(30px,3.5vw,48px);margin-bottom:24px}.content-card h3{font-size:26px;line-height:1.3;font-family:Georgia,serif;font-weight:400;margin:0 0 24px}.content-card p+p{margin-top:22px}.content-card p{max-width:76ch}.content-card ul{padding-left:22px}.content-card li{margin:8px 0}.brand-card ul{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:8px 24px}.brand-card a{display:inline-block;padding:9px 0;min-height:44px}.narrative-split{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(220px,1fr);gap:30px;margin-bottom:45px}.tall-window{height:auto;min-height:80vh;align-self:stretch;position:relative}.page-photo{margin:0 0 50px;padding:6px}.page-photo img{width:100%;display:block;aspect-ratio:2.1;object-fit:cover}.detail-photo{padding:6px;margin-bottom:35px}.detail-photo img{display:block;width:100%;height:auto}.video-wrap{aspect-ratio:16/9;margin:25px 0;overflow:hidden;border-radius:4px}.video-wrap iframe,.visualizer-wrap iframe,.map-wrap iframe{width:100%;height:100%;border:0;display:block}.visualizer-wrap{height:min(800px,80vh);min-height:480px;margin:25px 0}.map-wrap{height:340px;margin:25px 0}.review-directory{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 28px}.review-directory a{padding:14px 0;border-bottom:1px solid var(--edge);text-decoration:none}.review-directory a:hover{text-decoration:underline}.studio-door{font-size:11px;opacity:.65;text-decoration:none;align-self:end;padding:12px;min-height:44px}.project-pager{display:flex;justify-content:space-between;gap:15px;align-items:center;margin-top:40px;flex-wrap:wrap}.preview-notice{font-size:14px;color:var(--muted);margin-bottom:25px}#preview-contact{display:grid;gap:20px;margin:25px 0}#preview-contact label{display:grid;gap:6px}#preview-contact input,#preview-contact textarea{width:100%;background:rgba(var(--surface),.35);color:var(--ink);border:1px solid var(--edge);border-radius:6px;padding:12px;min-height:48px}#contact-status{white-space:pre-wrap}.content-card .text-link{margin-top:20px;display:inline-block}
@media(max-width:800px){.page-content{padding:140px 6% 55px}.page-heading{margin-bottom:35px}.page-heading .intro{font-size:18px}.content-grid,.narrative-split{grid-template-columns:1fr}.narrative-split{gap:25px}.tall-window{min-height:240px}.review-directory{grid-template-columns:1fr}.detail-photo{width:100vw;margin-left:calc(50% - 50vw);border-radius:0;padding:4px}.content-card{padding:25px}.visualizer-wrap{min-height:500px}.studio-door{grid-column:1/-1}.project-pager{gap:18px}}
.detail-photo{scale:1}.detail-photo img{aspect-ratio:auto;max-height:none;object-fit:contain}.content-card h2{overflow-wrap:break-word}

/* Navigation's blur lives on its own pane, so the dropdown can blur the page independently. */
.nav{background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none}.nav::before{content:'';position:absolute;inset:0;border-radius:inherit;z-index:-1;background:rgba(var(--surface),.55);backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px);pointer-events:none}.menu-panel{background:rgba(var(--surface),.60);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}#theme{display:flex;align-items:center;justify-content:center;width:44px;height:44px;padding:10px}.footer-motion{background:rgba(var(--surface),.35);color:var(--ink);border:1px solid var(--edge);border-radius:8px;min-height:44px;padding:10px 15px;font-size:12px;flex:none}

.chat .wa-audio{margin-bottom:0}.chat:has(.wa-audio[data-open=true]) .chat-form{border-top-left-radius:0;border-top-right-radius:0}

/* One-time first-paint arrivals; scroll/expansion own transform on cards separately.
   Release the nav opacity animation after arrival: a retained opacity animation
   isolates the pane/dropdown backdrop and prevents them blurring the page. */
@keyframes curio-page-arrival{from{opacity:0;translate:0 12px}to{opacity:1;translate:0 0}}
@keyframes curio-nav-arrival{from{opacity:0;translate:0 -6px}to{opacity:1;translate:0 0}}
@media(prefers-reduced-motion:no-preference){body :is(.page-heading,.gallery-intro,.home-hero){animation:curio-page-arrival 650ms cubic-bezier(.22,.61,.36,1) both}body .nav{animation:curio-nav-arrival 500ms cubic-bezier(.22,.61,.36,1) backwards}}
.nav nav a{position:relative}.nav nav a[aria-current=page]{color:var(--accent)}.nav nav a::after{content:'';position:absolute;left:0;right:0;bottom:6px;height:1px;background:currentColor;scale:0 1;transform-origin:left;transition:scale 220ms ease}.nav nav a:is(:hover,:focus-visible,[aria-current=page])::after{scale:1 1}.nav nav a:hover{text-decoration:none}.button,.footer-motion,.chat-launch{transition:translate 220ms ease,box-shadow 220ms ease,background 220ms ease}.button:is(:hover,:focus-visible),.footer-motion:is(:hover,:focus-visible),.chat-launch:is(:hover,:focus-visible){translate:0 -2px;box-shadow:0 8px 20px #00000018}.button:active,.footer-motion:active,.chat-launch:active{translate:0 0}.text-link{transition:color 180ms ease}.text-link:is(:hover,:focus-visible){color:var(--accent)}.project-open .project-label span{transition:color 180ms ease}.project-open:is(:hover,:focus-visible) .project-label span{color:var(--accent)}
@media(prefers-reduced-motion:reduce){.button,.footer-motion,.chat-launch{translate:none!important}}body.motion-paused :is(.page-heading,.gallery-intro,.home-hero,.nav){animation-duration:0s}body.motion-paused :is(.button,.footer-motion,.chat-launch){translate:none!important;transition:none}
/* Shared route arrival: content and footer fade together on each navigation. */
@keyframes curio-route-arrival{from{opacity:0}to{opacity:1}}
@media(prefers-reduced-motion:no-preference){body>main,body>footer{animation:curio-route-arrival 700ms cubic-bezier(.22,.61,.36,1) both}body :is(.page-heading,.gallery-intro,.home-hero){animation:none}}
body.motion-paused>main,body.motion-paused>footer{animation-duration:0s}

/* Fit navigation from measured text widths rather than device breakpoints. */
.nav{gap:clamp(5px,1vw,16px)}.nav>nav:not(.nav-measure){flex:1;min-width:0;margin-left:0;gap:clamp(9px,1vw,20px);justify-content:flex-end}.nav>nav a{flex:none;white-space:nowrap}.nav>nav a:not(.nav-primary){display:flex}.nav .theme-icon{width:36px!important;min-width:36px;height:44px!important;border:0;background:transparent;color:var(--ink);flex:none;cursor:pointer}.nav .menu-toggle{margin-left:0;flex:none;min-width:44px}.nav .menu-toggle span{display:none}.nav .menu-toggle[hidden]{display:none!important}.nav>nav.nav-measure{position:absolute;top:-10000px;left:0;visibility:hidden;pointer-events:none;width:max-content;max-width:none;display:flex;gap:clamp(9px,1vw,20px);margin:0}.nav-measure a{display:flex!important}.nav-measure a::after{display:none}
.nav nav a{font-size:clamp(11px,1.1vw,14px)}.nav .wordmark img{width:clamp(57px,8vw,100px)}.nav .wordmark{padding:clamp(7px,.8vw,13px)}

/* Footer consumes the same low-blur scroll material as reading cards. */
footer.scroll-glass{scale:1}

.scene::before{opacity:0;transition:opacity 450ms ease}.scene.scene-fallback::before{opacity:1}.scene.scene-ready::before{opacity:0}@media(prefers-reduced-motion:reduce){.scene::before{transition:none}}

/* Equal spaces between logo, visible links and theme control. */
.nav{column-gap:0}.nav>nav:not(.nav-measure){justify-content:space-evenly;column-gap:0}
/* Light appearance echoes Curio's original white / gray / solid-purple palette. */
:root[data-theme=light]{--ink:#313131;--muted:#55545a;--bg:#e5e5e7;--surface:255,255,255;--edge:rgba(255,255,255,.82);--control:#6f54a2;--accent:#6f54a2}
:root[data-theme=light] .nav{--ink:#fff;--muted:#eee8f6;--surface:111,84,162;--accent:#fff;--edge:rgba(255,255,255,.38);color:var(--ink)}
:root[data-theme=light] .nav::before{background:rgba(111,84,162,.90)}
:root[data-theme=light] .menu-panel{background:rgba(111,84,162,.86)}
:root[data-theme=light] :is(.entry-card:nth-child(even),.content-grid>.content-card:nth-child(even),.content-stack>.content-card:nth-child(even),.project:nth-child(even)){--surface:218,218,222;--edge:rgba(255,255,255,.66)}
:root[data-theme=light] footer.curio-footer{--surface:40,31,51;--ink:#f5eefc;--muted:#c8bdd5;--edge:rgba(225,210,247,.3);--accent:#c7aae9;--control:#9475c8;--control-ink:#fff;color:var(--ink);background-color:rgba(var(--surface),calc(.82 + var(--glass-tint,.45)*.24))}

/* Set before the first image paint; decode then supplies one uninterrupted fade. */
.js-media:not(.media-fallback) main img:not([data-media-ready]),.js-media:not(.media-fallback) .hero-photo:not([data-media-ready]){opacity:0}

/* Expanded project-local slideshow; same full-width frame, native swipe and snap. */
.slide-track{display:flex;width:100%;aspect-ratio:var(--project-ratio);max-height:650px;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scrollbar-width:none;overscroll-behavior-x:contain;touch-action:pan-x pan-y;scroll-behavior:smooth}.slide-track::-webkit-scrollbar{display:none}.slide-view{flex:0 0 100%;min-width:0;min-height:0;grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(0,1fr);height:100%;scroll-snap-align:start;scroll-snap-stop:always;display:grid;place-items:center;background:rgba(var(--surface),.18)}.project.is-open .slide-view img{min-width:0;min-height:0;width:100%;height:100%;max-height:none;aspect-ratio:auto;object-fit:contain}.slide-controls{display:flex;align-items:center;justify-content:center;gap:14px;padding:8px 0;margin-top:10px}.slide-controls[hidden]{display:none}.slide-controls button{min-height:44px;min-width:44px;background:rgba(var(--surface),.35);color:var(--ink);border:1px solid var(--edge);border-radius:8px;padding:8px 12px}.slide-count{font-size:12px;min-width:40px;text-align:center}.slide-pause{font-size:12px;margin-left:6px}.slide-controls button:hover{background:rgba(var(--surface),.65)}@media(prefers-reduced-motion:reduce){.slide-track{scroll-behavior:auto}}body.motion-paused .slide-track{scroll-behavior:auto}

/* Below-fold frames are pending before paint; initially visible cards use only the page fade. */
@media(prefers-reduced-motion:no-preference){.js-media:not(.motion-fallback) main :is(.project,.content-card,.entry-card,.reading,.featured>a,.page-photo,.detail-photo):not([data-arrived]){opacity:0}}

/* Quiet directional shading with low-amplitude grain to soften gradient bands. */
.glass,.menu-panel,.chat .wa-drawer,.chat .chat-form{background-image:linear-gradient(135deg,rgba(255,255,255,.075),rgba(255,255,255,.012) 45%,rgba(0,0,0,.035)),url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' opacity='.018' filter='url(%23n)'/%3E%3C/svg%3E");background-size:auto,160px 160px}.nav{background-image:none}.nav::before{background-image:linear-gradient(135deg,#ffffff10,#ffffff02 45%,#00000009)}

/* Transition live colors so backdrop blur stays attached to the real scene. */
@property --ink{syntax:"<color>";inherits:true;initial-value:#302937}
@property --muted{syntax:"<color>";inherits:true;initial-value:#62576d}
@property --bg{syntax:"<color>";inherits:true;initial-value:#eeeaf2}
@property --edge{syntax:"<color>";inherits:true;initial-value:rgba(255,255,255,.82)}
@property --control{syntax:"<color>";inherits:true;initial-value:#6f54a2}
@property --control-ink{syntax:"<color>";inherits:true;initial-value:#fff}
@property --accent{syntax:"<color>";inherits:true;initial-value:#6f54a2}
:root.theme-changing{transition:--ink 500ms ease-in-out,--muted 500ms ease-in-out,--bg 500ms ease-in-out,--edge 500ms ease-in-out,--control 500ms ease-in-out,--control-ink 500ms ease-in-out,--accent 500ms ease-in-out}
.theme-changing :is(.glass,.menu-panel,.chat-form,.wa-drawer),.theme-changing .nav::before{transition-property:background-color,box-shadow;transition-duration:500ms;transition-timing-function:ease-in-out}
.theme-changing .hero-photo::before,.theme-changing .hero-photo::after{transition:filter 500ms ease-in-out,opacity 2s ease}
@media(prefers-reduced-motion:reduce){:root.theme-changing,.theme-changing body,.theme-changing body *,.theme-changing body *::before,.theme-changing body *::after{transition:none!important}}

@media(prefers-reduced-motion:no-preference){.js-media:not(.motion-fallback) :is(main h1,main h2,main h3,main p,main li,main .button,main figcaption,footer p,footer a):not([data-text-arrived]):not(.project-description *):not(.chat *){opacity:0}}

.process-card .step-number,.process-card>.eyebrow{color:var(--accent)}

/* Mobile launcher sits near the usable bottom edge, not a full pill height above it. */
@media(max-width:800px){.chat-launch{bottom:max(8px,calc(env(safe-area-inset-bottom,0px)*.5))}}

.image-comparison{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:24px}.image-comparison figure{margin:0;min-width:0}.image-comparison img{display:block;width:100%;height:auto}.image-comparison figcaption{font-size:13px;color:var(--muted);margin-top:8px}@media(max-width:600px){.image-comparison{grid-template-columns:1fr}}

/* Light navigation already supplies Curio purple behind the transparent artwork. */
:root:not([data-theme=dark]) .nav .wordmark{background:transparent;box-shadow:none;border-color:transparent}

/* Source-aligned footer: complete information with compact, responsive groups. */
footer.curio-footer{display:block;padding:44px 6% 76px}.footer-layout{display:grid;grid-template-columns:1.25fr .8fr .9fr 1.5fr .75fr;gap:28px}.curio-footer h2{font:600 12px/1.4 'Helvetica Neue',Arial,sans-serif;letter-spacing:.12em;text-transform:uppercase;margin:0 0 16px}.curio-footer .footer-layout a{display:block;font-size:14px;margin:0;padding:5px 0;min-height:34px}.curio-footer .footer-identity .wordmark{display:inline-block;padding:8px 13px}.curio-footer .footer-identity p{margin:18px 0 8px}.curio-footer .footer-identity .text-link{margin-top:10px}.footer-awards ul{list-style:none;padding:0;margin:0;display:grid;gap:18px;font-size:clamp(17px,1.45vw,19px);font-weight:500;line-height:1.45;color:#fff;text-shadow:0 2px 8px #0005}.footer-bottom{display:flex;justify-content:space-between;align-items:end;gap:24px;border-top:1px solid var(--edge);margin-top:30px;padding-top:18px}.curio-footer .footer-bottom p{margin:0;max-width:none;font-size:12px}.footer-tools{display:flex;align-items:center;gap:18px}.curio-footer .footer-tools .studio-door{margin:0}.curio-footer .footer-layout nav a{min-height:40px}
@media(max-width:1000px){.footer-layout{grid-template-columns:1.2fr 1fr 1fr}.footer-awards{grid-column:span 2}}
@media(max-width:600px){.footer-layout{grid-template-columns:1fr 1fr;gap:26px 20px}.footer-identity,.footer-awards{grid-column:1/-1}.footer-bottom{align-items:start;flex-direction:column}.curio-footer{padding-bottom:100px!important}.footer-tools{justify-content:space-between;width:100%}}

.footer-awards ul{gap:24px}.award-lead{display:block;color:var(--accent);font-family:Georgia,'Times New Roman',serif;font-size:clamp(30px,2.7vw,38px);line-height:1.08;letter-spacing:-.035em;font-weight:400;margin-bottom:7px;text-shadow:0 2px 12px #0006}.award-detail{display:block;font-size:17px;line-height:1.4;font-weight:500;color:#fff}

/* Dark purple outlines remain visible against the light Illuminator surfaces. */
:root:not([data-theme=dark]) :is(.chat,.chat-launch){--edge:rgba(64,38,89,.60);border-color:var(--edge)}
:root:not([data-theme=dark]) .chat :is(.wa-disclosure,.wa-drawer,.wa-row button,.wa-row select){border-color:rgba(64,38,89,.60)!important}
:root:not([data-theme=dark]) .chat-message.user{border-color:rgba(64,38,89,.60)}
/* Manufacturer deck: transparent glass with theme-aware artwork compositing. */
.brand-card .brand-deck{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;list-style:none;padding:0;margin:24px 0 0}
.brand-card .brand-deck li{margin:0;min-width:0}
.brand-card .brand-logo{display:flex;align-items:center;justify-content:center;min-height:112px;padding:20px;border:1px solid #c9c1d0;border-radius:12px;background:linear-gradient(135deg,#f5f3f7,#ece8f0);color:#302839;text-decoration:none;box-shadow:inset 0 1px 0 #ffffff70;transition:box-shadow .25s ease,border-color .25s ease}
.brand-logo img{display:block;width:100%;max-width:190px;height:65px;object-fit:contain}
.brand-logo span{font-size:18px;text-align:center;font-weight:600}
/* SVG masks remove only border-connected artboard margins.
   One fixed light tile and artwork treatment is shared by both themes. */
.brand-logo img{filter:none;transition:filter .5s ease}
.brand-logo-dark img{filter:invert(1) hue-rotate(180deg)}
@media(prefers-reduced-motion:reduce){.brand-logo img{transition:none}}
.brand-logo:hover,.brand-logo:focus-visible{border-color:#8b6bb4;box-shadow:0 8px 22px rgba(49,26,75,.15)}
@media(max-width:450px){.brand-card .brand-deck{grid-template-columns:repeat(2,minmax(0,1fr))}.brand-card .brand-logo{padding:16px 12px;min-height:104px}}

@media(max-width:450px){.brand-deck li:has(.brand-wide){grid-column:1/-1}}

.curio-footer nav[aria-label="Connect"] a{display:flex;align-items:center;gap:8px}
.curio-footer .footer-social-icon{width:16px;height:16px;flex:0 0 16px;margin:0;fill:currentColor;stroke:none}

.entry-card h2 .entry-category-icon{display:block;width:48px;height:48px;object-fit:contain;margin:0;flex:none;transform:scale(1.65);transform-origin:center}
:root[data-theme=dark] .entry-category-icon{filter:brightness(0) invert(1)}

/* Native YouTube playback behind crisp local preview posters. */
.youtube-poster{position:relative;display:block;width:100%;height:100%;background:#211c2a;color:#fff;overflow:hidden}
.youtube-poster>img{display:block;width:100%;height:100%;object-fit:cover}
.youtube-poster-play{position:absolute;inset:50% auto auto 50%;transform:translate(-50%,-50%);width:64px;height:48px;display:grid;place-items:center;background:#18131ee8;border:1px solid #ffffffaa;border-radius:12px;transition:background .2s}
.youtube-poster-play svg{display:block;width:27px;height:27px;margin:0;fill:currentColor}
.youtube-poster:focus-visible{outline:3px solid var(--accent);outline-offset:-4px}
@media(hover:hover){.youtube-poster:hover .youtube-poster-play{background:#663e88}}
@media(prefers-reduced-motion:reduce){.youtube-poster-play{transition:none}}

/* Audio overlays the thread; the tab bottom joins the native composer divider. */
#floating-chat .wa-audio{position:relative;z-index:3;display:flex;flex-direction:column;justify-content:flex-end;align-items:stretch;flex:0 0 0;height:0;min-height:0;padding:0;margin:0;border:0;background:transparent;overflow:visible}
#floating-chat .wa-disclosure{flex-shrink:0;align-self:center;position:relative;z-index:1;background:rgb(var(--surface))!important;border-bottom:1px solid var(--edge)!important}
#floating-chat .wa-drawer{flex-shrink:0;width:100%;background:rgb(var(--surface))!important;border-radius:0;border-inline:0;box-shadow:0 -8px 20px #20182e15}
#floating-chat .messages{padding-bottom:32px;scroll-padding-bottom:32px}
#floating-chat .chat-form{align-items:center;gap:6px;padding:4px;border-radius:0 0 8px 8px}
#floating-chat .chat-form textarea{box-sizing:border-box;min-height:38px;height:38px;max-height:88px;padding:7px;font-size:16px;line-height:24px}
#floating-chat .chat-form .send,#floating-chat .chat-form .campaign-mic{height:44px;min-height:44px}
/* Gallery swipes stay uncluttered; full project pages own visible controls. */
.slide-view img,.detail-photo .slide-view img{display:block;min-width:0;min-height:0;width:100%;height:100%;max-height:none;aspect-ratio:auto;object-fit:contain}
.project:not(.is-open) .slide-view img{object-fit:cover}
.slide-track{cursor:grab}.slide-track:active{cursor:grabbing}
.slide-track:focus-visible{outline:2px solid var(--accent);outline-offset:4px}
.slide-controls svg{display:block;width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.7;margin:0}
.project:not(.is-open) .slide-track{height:330px}
@media(max-width:1100px){.project:not(.is-open) .slide-track{height:250px}}
@media(max-width:800px){.project:not(.is-open) .slide-track{height:auto;aspect-ratio:3/2}}
