/* SANDMAN WORKS / INTENT INTO MOTION */
:root { --scene-lime:#d5fa49; --scene-violet:#a48aff; }
.hero-scroll { position:relative; }
.hero { isolation:isolate; }
.hero-universe,.hero-fallback-sand { position:absolute;inset:0;z-index:3;pointer-events:none;opacity:0; }
.hero-universe canvas,.hero-fallback-sand canvas { display:block;width:100%;height:100%; }
.hero-universe { transition:opacity .3s ease; }
.hero.hero-3d-ready .hero-universe { opacity:1; }
.hero.hero-3d-ready .sigil-stage { opacity:0; }
.hero-transition { position:absolute;left:8%;right:8%;top:35%;z-index:5;pointer-events:none;opacity:0; }
.scene-label { display:block;font:11px/1.6 var(--mono);letter-spacing:.12em;color:#b6bda9; }
.hero-transition>p { font-size:clamp(54px,6.7vw,100px);font-weight:500;line-height:1.05;letter-spacing:-.055em;color:var(--text);margin:28px 0; }
.hero-transition em { color:var(--lime);font-style:normal; }
.scene-caption { font:13px/1.7 var(--mono);color:#b0b9a3; }
.hero-motion-hint { position:absolute;right:1%;bottom:12%;z-index:5;font:9px/1.6 var(--mono);letter-spacing:.09em;color:#b0b99c; }
body.cinematic-scroll .hero-scroll { height:190svh; }
body.cinematic-scroll .hero-scroll>.hero { position:sticky;top:var(--header-space,102px);height:calc(100svh - var(--header-space,102px));min-height:0;max-height:1100px;padding-top:50px; }
body.experience-ready .hero-bottom { z-index:5; }
.hero-art { background:radial-gradient(ellipse at 65% 50%,#59427624,transparent 64%); }
.hero-universe canvas { filter:drop-shadow(0 23px 20px #0007); }
.hero-fallback-sand.is-active { opacity:1; }
.cred-strip { position:relative;z-index:5; }
.project-card { --pointer-x:50%;--pointer-y:50%; }
.project-open { transform-style:preserve-3d; }
.project-art { position:relative; }
.project-art:after { content:'';position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at var(--pointer-x) var(--pointer-y),#f1f2e91c,transparent 55%);opacity:0;transition:opacity .3s; }
.project-open:hover .project-art:after { opacity:1; }
.project-title .circle-arrow { transition:transform .3s,background .3s; }
.project-open:hover .circle-arrow { transform:rotate(45deg);background:var(--lime);color:var(--bg); }
.case-dialog { width:min(1220px,calc(100% - 48px));max-height:calc(100svh - 48px);background:#151713;border:1px solid #49503d; }
.case-dialog::backdrop { background:#070907dc;backdrop-filter:blur(12px); }
.case-dialog .dialog-header { position:sticky;top:0;z-index:6;background:#151713ed;backdrop-filter:blur(12px); }
.case-dialog .case-visual { margin:0 0 35px;overflow:hidden;border:1px solid #38402e;background:#111210; }
.case-dialog .case-visual img { width:100%;height:auto;display:block; }
.case-dialog .case-visual figcaption { padding:12px 17px; }
.case-dialog .case-main { padding-top:28px; }
.case-gallery-link { margin:15px 0 22px; }
.method-section { overflow-x:clip;position:relative;background:radial-gradient(ellipse at 82% 45%,#50416c22,transparent 50%),#141610;border-top:1px solid #35392f;border-bottom:1px solid #35392f; }
.method-section>.section { padding-bottom:80px; }
.method-heading { margin-bottom:42px; }
.assembly-scroll { position:relative; }
.assembly-stage { display:grid;grid-template-columns:.72fr 1.65fr;gap:48px;align-items:center;position:relative;min-height:650px; }
.assembly-copy { position:relative;z-index:4;padding-block:30px; }
.assembly-copy>.scene-label { color:var(--violet);margin-bottom:32px; }
.assembly-phases { display:flex;flex-direction:column;align-items:stretch;gap:0;margin-bottom:22px; }
.assembly-phases button { display:flex;align-items:center;gap:15px;text-align:left;padding:15px 0;border:0;border-bottom:1px solid #4248377a;background:transparent;color:#99a38d;font:500 26px/1.2 var(--sans);letter-spacing:-.035em;cursor:pointer;transition:color .2s,padding .2s; }
.assembly-phases button span { font:11px var(--mono);letter-spacing:0;color:#8a957a; }
.assembly-phases button[aria-pressed=true] { color:var(--lime);padding-left:9px; }
.assembly-phases button[aria-pressed=true] span { color:var(--lime); }
.assembly-description { min-height:94px;font-size:16px;line-height:1.75;color:#c2cbb5; }
.xray-toggle { display:flex;align-items:center;justify-content:space-between;gap:22px;font:12px var(--mono);color:var(--lime);background:#d5fa4908;border:1px solid #748745;padding:14px 17px;margin-top:24px;cursor:pointer; }
.xray-toggle[aria-pressed=true] { background:var(--lime);color:#151b0b; }
.assembly-note { margin-top:22px;font:11px/1.8 var(--mono);color:#909d80; }
.assembly-visual { position:relative;perspective:1100px;min-width:0;aspect-ratio:1.27;isolation:isolate; }
.assembly-visual:before { content:'';position:absolute;inset:4% -10%;border-radius:50%;background:radial-gradient(ellipse,#6d5a8d28,transparent 68%); }
.build-perspective { position:absolute;inset:12% 9% 16%;transform-style:preserve-3d; }
.build-layer { position:absolute;inset:0;transform-style:preserve-3d;will-change:transform,opacity; }
.layer-label { position:absolute;left:0;top:-29px;color:#bac6aa;font:10px/1.5 var(--mono);letter-spacing:.1em;white-space:nowrap; }
.build-structure { background:#152015bd;border:1px solid #96ac5770;transform:translate3d(-18px,-20px,-55px) rotateY(-8deg) rotateX(9deg); }
.build-structure>svg { width:100%;height:100%;stroke:#b9d37a;stroke-width:1; }
.build-systems { background:#181324e8;border:1px solid #ac8ae27a;transform:translate3d(23px,30px,-30px) rotateY(-8deg) rotateX(9deg); }
.build-systems>.layer-label { color:var(--violet); }
.build-systems>svg { position:absolute;inset:0;width:100%;height:100%;fill:none;stroke:#a48aff;stroke-width:1; }
.system-node { position:absolute;display:flex;flex-direction:column;gap:8px;background:#221e2d;border:1px solid #66557c;padding:15px 17px;max-width:48%; }
.system-node>i { width:5px;height:5px;background:var(--violet);box-shadow:0 0 10px #a48aff99; }
.system-node>span { font:9px/1.5 var(--mono);color:var(--violet);letter-spacing:.06em; }
.system-node>strong { font:400 14px/1.5 var(--sans);color:#ded8ea; }
.system-data { left:5%;top:16%; }
.system-scene { right:5%;top:35%; }
.system-contact { bottom:10%;left:25%; }
.build-design { transform:translate3d(0,0,15px) rotateY(-8deg) rotateX(9deg); }
.build-browser { background:#111210;border:1px solid #738153;box-shadow:0 20px 55px #0009;overflow:hidden;height:100%; }
.build-browser-bar { height:29px;display:flex;align-items:center;gap:5px;padding:0 12px;background:#25291f;border-bottom:1px solid #414b32; }
.build-browser-bar>i { width:4px;height:4px;background:#7e896d;border-radius:50%; }
.build-browser-bar>span { font:8px var(--mono);color:#9ba78a;margin-left:auto; }
.build-page { padding:18px 23px 22px; }
.build-mini-nav { display:flex;align-items:center;gap:4px;font:600 11px var(--sans);color:#f1f2e9; }
.build-mini-nav em { font-style:normal;color:var(--lime); }
.build-mini-nav>span { margin-left:auto;font:7px var(--mono);color:#bcc4b0; }
.build-mini-hero { display:grid;grid-template-columns:1.2fr .9fr;align-items:center;gap:10px;padding:30px 0 20px; }
.mini-eyebrow { display:block;font:6px/1.8 var(--mono);color:#b4bda6;letter-spacing:.06em;margin-bottom:13px; }
.build-mini-hero strong { display:block;font:500 clamp(23px,2.65vw,40px)/1.08 var(--sans);letter-spacing:-.045em;color:#f1f2e9; }
.build-mini-hero strong em { font-style:normal;color:var(--lime); }
.build-mini-hero p { font:8px/1.6 var(--sans);color:#b9c2ad;margin-top:14px;margin-bottom:14px; }
.mini-button { display:inline-block;background:var(--lime);color:#17200b;padding:9px 11px;font:7px var(--sans); }
.build-mini-hero>svg { width:95%;height:auto;fill:var(--lime);filter:drop-shadow(9px 12px 0 #7b5daf);transform:rotate(-16deg); }
.build-mini-projects { display:grid;grid-template-columns:1fr 1fr 1fr;gap:11px;border-top:1px solid #3f4733;padding-top:17px; }
.build-mini-projects img { width:100%;height:100%;aspect-ratio:1.8;object-fit:cover;border:1px solid #3d4434; }
.assembly-resolved { position:absolute;right:2%;bottom:2%;z-index:5;font:500 clamp(36px,4.5vw,65px)/1 var(--sans);letter-spacing:-.055em;color:var(--lime);background:#141610df;padding:15px 22px;border-left:2px solid var(--lime);opacity:0; }
.assembly-resolved>span { display:block;font:9px/1.5 var(--mono);letter-spacing:.1em;margin-top:13px;color:#abb99a; }
.assembly-progress { height:2px;background:#5968423d;position:absolute;left:0;right:0;bottom:0; }
.assembly-progress>span { display:block;transform-origin:left;transform:scaleX(0);height:100%;background:var(--lime); }
.method-details { border-top:1px solid #414a34;margin-top:45px; }
.method-details>summary { display:flex;justify-content:space-between;align-items:center;list-style:none;cursor:pointer;color:#b7c6a4;font:13px/1.5 var(--mono);padding:25px 0; }
.method-details>summary::-webkit-details-marker { display:none; }
.method-details>summary>span { color:var(--lime);font-size:22px; }
.method-details[open]>summary>span { transform:rotate(45deg); }
.method-details .flow-console { margin-top:0; }
body.cinematic-scroll .assembly-scroll { height:240svh; }
body.cinematic-scroll .assembly-stage { position:sticky;top:5svh;min-height:0;height:85svh;max-height:900px; }
.photography-section { padding-top:110px;padding-bottom:110px; }
.photography-heading>div:last-child { max-width:385px;align-self:end; }
.photography-heading>div:last-child>p { color:#b5bcae;font-size:19px;line-height:1.7; }
.photography-heading .text-link { margin-top:20px; }
.photo-feature { display:grid;grid-template-columns:1.05fr 1.6fr;gap:24px;margin-top:45px; }
.photo-feature button { position:relative;display:block;width:100%;height:100%;border:0;padding:0;background:#191c17;overflow:hidden;text-align:left;cursor:pointer;color:var(--text); }
.photo-feature-main { min-height:610px; }
.photo-feature img { width:100%;height:100%;object-fit:cover;display:block;transition:transform .75s cubic-bezier(.2,.7,.2,1); }
.photo-feature button:hover img { transform:scale(1.035); }
.photo-feature-main>img { position:absolute;inset:0; }
.photo-feature-main:after { content:'';position:absolute;inset:40% 0 0;background:linear-gradient(transparent,#080a07d9);pointer-events:none; }
.photo-feature-label { position:absolute;z-index:2;left:28px;right:28px;bottom:27px;display:block; }
.photo-feature-label>span { display:block;font:10px/1.8 var(--mono);color:#cac0dd;letter-spacing:.12em; }
.photo-feature-label>strong { display:block;font:500 34px/1.15 var(--sans);letter-spacing:-.035em;margin-top:10px; }
.photo-feature-label>i { position:absolute;right:0;bottom:0;font-style:normal;font-size:30px;color:var(--lime); }
.photo-feature-side { display:grid;grid-template-rows:1fr 1fr;gap:24px;min-width:0; }
.photo-feature-side>button { min-height:290px; }
.photo-feature-side>button>img { position:absolute;inset:0; }
.photo-feature-side>button>span { position:absolute;z-index:2;bottom:0;left:0;right:0;background:linear-gradient(transparent,#080b07c4);padding:35px 24px 22px;font:500 21px/1.3 var(--sans); }
.photo-gallery-toolbar { margin-top:48px;display:flex;justify-content:space-between;gap:24px;align-items:center;border-top:1px solid var(--line);padding-top:25px; }
.photo-filters { display:flex;flex-wrap:wrap;gap:8px; }
.photo-filters>button { font:12px/1.4 var(--mono);padding:10px 13px;border:1px solid #404736;background:transparent;color:#b3bea5;cursor:pointer; }
.photo-filters>button[aria-pressed=true] { color:#172008;background:var(--lime);border-color:var(--lime); }
.photo-count { font:11px/1.5 var(--mono);color:#a7b09a;white-space:nowrap; }
.photo-grid { display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px 22px;margin-top:28px; }
.photo-tile { display:block;padding:0;text-align:left;background:transparent;color:var(--text);border:0;cursor:pointer;min-width:0; }
.photo-tile-image { overflow:hidden;position:relative;background:#1b1f17;aspect-ratio:1.4; }
.photo-tile-image:after { content:'↗';position:absolute;right:12px;bottom:12px;display:grid;place-items:center;width:32px;height:32px;background:#111210cc;color:var(--lime);border:1px solid #8c9d5870;opacity:0;transform:translateY(5px);transition:opacity .25s,transform .25s; }
.photo-tile:hover .photo-tile-image:after,.photo-tile:focus-visible .photo-tile-image:after { opacity:1;transform:none; }
.photo-tile img { display:block;width:100%;height:100%;object-fit:cover;transition:transform .7s cubic-bezier(.2,.7,.2,1); }
.photo-tile:hover img { transform:scale(1.04); }
.photo-tile-caption { display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding-top:13px;font:400 15px/1.5 var(--sans); }
.photo-tile-caption>span:last-child { font:10px/1.5 var(--mono);color:#929e84;text-transform:uppercase;letter-spacing:.04em; }
.photo-gallery-more { display:flex;justify-content:space-between;align-items:center;gap:25px;margin-top:42px; }
.photo-gallery-more>span { font:11px/1.8 var(--mono);color:#9da991; }
.photo-dialog { width:calc(100% - 40px);height:calc(100svh - 40px);max-width:1800px;max-height:none;padding:0;border:1px solid #596044;background:#0e100d;color:var(--text);overflow:hidden; }
.photo-dialog::backdrop { background:#050703ed;backdrop-filter:blur(15px); }
.photo-dialog[open] { display:grid;grid-template-rows:58px minmax(0,1fr) auto; }
.photo-dialog-toolbar { display:flex;justify-content:space-between;align-items:center;gap:20px;padding:0 22px;border-bottom:1px solid #333b28; }
.photo-position { font:11px var(--mono);color:#a6b197; }
.photo-dialog-close { display:flex;align-items:center;gap:25px;color:var(--text);padding:5px 0;border:0;background:transparent;font:12px var(--mono);cursor:pointer; }
.photo-dialog-close>span { font:27px var(--sans);color:var(--lime); }
.photo-dialog-stage { position:relative;min-height:0;display:flex;align-items:center;justify-content:center;overflow:hidden;padding:20px 70px; }
.photo-full { display:block;max-width:100%;max-height:100%;object-fit:contain;opacity:1;transition:opacity .15s; }
.photo-dialog-stage.is-loading .photo-full { opacity:.25; }
.photo-loading { position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font:11px var(--mono);color:#d5dccd;display:none; }
.is-loading .photo-loading { display:block; }
.photo-prev,.photo-next { position:absolute;z-index:3;top:50%;transform:translateY(-50%);width:44px;height:50px;background:#181e12cc;border:1px solid #4e5b3d;color:var(--lime);font:24px var(--sans);cursor:pointer; }
.photo-prev { left:13px; }.photo-next { right:13px; }
.photo-dialog-caption { display:flex;justify-content:space-between;align-items:center;gap:25px;padding:18px 25px;border-top:1px solid #333b28; }
.photo-dialog-caption h2 { font:500 23px/1.2 var(--sans);letter-spacing:-.025em;margin:7px 0 0; }
.photo-dialog-caption .scene-label { font-size:9px;color:#9daa8d; }
.photo-category { font:11px var(--mono);color:#abb799;text-transform:uppercase; }
.signature-section { padding-top:70px;background:radial-gradient(ellipse at 22% 55%,#52415e1c,transparent 58%),#11140d;border-top:1px solid #4b5737;overflow:hidden; }
.signature-heading { display:grid;grid-template-columns:1fr 1fr;align-items:end;gap:22px; }
.signature-heading>.eyebrow { grid-column:1/-1;color:#9ca98b;margin:0; }
.signature-heading>p:not(.eyebrow) { font:500 clamp(32px,4vw,57px)/1.12 var(--sans);letter-spacing:-.045em;color:var(--text);margin:0; }
.signature-heading>p em { font-style:normal;color:var(--lime); }
.signature-heading>.text-link { justify-self:end;align-self:end; }
.signature-field { position:relative;max-width:1600px;margin:15px auto 0;height:clamp(300px,43vw,650px); }
.signature-canvas { position:absolute;inset:0;width:100%;height:100%;touch-action:pan-y; }
.signature-fallback { position:absolute;left:5%;right:5%;top:50%;transform:translateY(-50%);text-align:center;font:600 clamp(70px,14vw,215px)/.84 var(--sans);letter-spacing:-.075em;color:var(--lime);margin:0;pointer-events:none; }
.signature-field.particles-ready .signature-fallback { visibility:hidden; }
.signature-hint { position:absolute;bottom:18px;left:20px;right:20px;text-align:center;font:9px/1.6 var(--mono);letter-spacing:.11em;color:#98a883;pointer-events:none; }
.signature-end { display:flex;justify-content:space-between;gap:22px;border-top:1px solid #4a563438;padding-top:21px;padding-bottom:22px;font:10px/1.5 var(--mono);color:#9eac8d; }
.signature-end a { color:var(--lime); }
.site-footer { padding-top:35px;background:#111210; }
@media (min-width:1600px) { .assembly-stage { gap:75px; }.build-mini-hero strong { font-size:42px; } }
@media (max-width:1100px) {
  .assembly-stage { gap:27px;grid-template-columns:.8fr 1.5fr; }
  .assembly-phases button { font-size:23px; }.assembly-description { font-size:15px; }
  .build-page { padding:14px 17px; }.build-mini-hero { padding-top:25px; }
  .photo-feature-main { min-height:540px; }.photo-feature-side>button { min-height:250px; }
  .photo-gallery-toolbar { flex-wrap:wrap; }.photo-count { margin-left:auto; }
}
@media (max-width:900px) {
  body.cinematic-scroll .hero-scroll { height:auto; }
  body.cinematic-scroll .hero-scroll>.hero { position:relative;top:auto;height:auto;max-height:none;min-height:760px;padding-top:60px; }
  .hero-transition,.hero-motion-hint { display:none; }
  body.cinematic-scroll .assembly-scroll { height:auto; }
  body.cinematic-scroll .assembly-stage { position:relative;top:auto;height:auto;min-height:0;max-height:none; }
  .assembly-stage { grid-template-columns:1fr;gap:35px; }
  .assembly-copy { padding-bottom:0; }.assembly-copy>.scene-label { margin-bottom:20px; }
  .assembly-phases { flex-direction:row;gap:20px; }.assembly-phases button { padding:12px 0;flex:1;font-size:18px;gap:9px; }
  .assembly-phases button[aria-pressed=true] { padding-left:0; }
  .assembly-description { min-height:0;max-width:600px;margin-bottom:20px; }
  .xray-toggle { margin-top:0;display:inline-flex; }.assembly-note { display:none; }
  .assembly-visual { aspect-ratio:1.45;max-width:720px;width:100%;margin:auto; }
  .build-mini-hero strong { font-size:clamp(25px,4.8vw,38px); }
  .build-browser-bar { height:28px; }.build-page { padding:18px 22px; }.build-mini-hero { padding-top:25px; }
  .assembly-resolved { bottom:4%;font-size:48px; }.assembly-progress { display:none; }
  .photo-feature { gap:18px; }.photo-feature-main { min-height:470px; }.photo-feature-side { gap:18px; }.photo-feature-side>button { min-height:220px; }
  .photo-grid { gap:25px 17px; }.photo-tile-caption { display:block; }.photo-tile-caption>span:last-child { display:block;margin-top:5px; }
  .photo-filters>button { font-size:11px; }
}
@media (max-width:640px) {
  body.cinematic-scroll .hero-scroll>.hero { min-height:0;padding-top:42px; }
  .hero-universe,.hero-fallback-sand { z-index:1; }.hero-copy,.hero-bottom { z-index:2; }
  .case-dialog { width:calc(100% - 18px);max-height:calc(100svh - 20px); }.case-dialog .case-main { padding-top:22px; }
  .method-section>.section { padding-bottom:50px; }.method-heading { margin-bottom:25px; }
  .assembly-copy>.scene-label { font-size:9px; }.assembly-phases { gap:8px;margin-bottom:20px; }
  .assembly-phases button { font-size:15px;display:block;letter-spacing:-.025em; }.assembly-phases button>span { display:block;margin-bottom:8px;font-size:9px; }
  .assembly-description { font-size:15px;line-height:1.7;min-height:77px; }.xray-toggle { font-size:11px;padding:12px 14px; }
  .assembly-visual { aspect-ratio:1.23;margin-top:0; }.build-perspective { inset:9% 1% 12%; }
  .layer-label { top:-21px;font-size:7px; }.build-browser-bar { height:20px;padding-inline:8px; }.build-browser-bar>span { font-size:6px; }.build-browser-bar>i { width:3px;height:3px; }
  .build-page { padding:11px 12px; }.build-mini-nav { font-size:8px; }.build-mini-nav>span { font-size:4px; }
  .build-mini-hero { padding:18px 0 14px; }.build-mini-hero strong { font-size:clamp(21px,5.6vw,32px); }
  .mini-eyebrow { font-size:4px;margin-bottom:8px; }.build-mini-hero p { font-size:6px;margin:9px 0; }.mini-button { font-size:5px;padding:6px 8px; }
  .build-mini-projects { gap:7px;padding-top:10px; }.system-node { gap:4px;padding:9px 10px; }.system-node>strong { font-size:9px; }.system-node>span { font-size:6px; }.system-node>i { width:4px;height:4px; }
  .assembly-resolved { font-size:34px;padding:11px 15px;bottom:0; }.assembly-resolved>span { font-size:6px;margin-top:8px; }
  .method-details { margin-top:35px; }.method-details>summary { font-size:11px; }
  .photography-section { padding-top:65px;padding-bottom:65px; }.photography-heading>div:last-child { max-width:none;margin-top:25px; }
  .photography-heading>div:last-child>p { font-size:17px;line-height:1.65; }.photography-heading .text-link { margin-top:15px;font-size:13px; }
  .photo-feature { grid-template-columns:1fr;gap:15px;margin-top:28px; }.photo-feature-main { min-height:480px;max-height:650px;aspect-ratio:.78; }
  .photo-feature-label { left:22px;right:22px;bottom:22px; }.photo-feature-label>strong { font-size:29px; }
  .photo-feature-side { grid-template-columns:1fr 1fr;grid-template-rows:1fr;gap:15px; }.photo-feature-side>button { min-height:220px; }.photo-feature-side>button>span { padding:30px 13px 15px;font-size:16px; }
  .photo-gallery-toolbar { margin-top:35px;gap:16px;padding-top:22px; }.photo-filters { gap:7px; }.photo-filters>button { padding:9px 10px;font-size:10px; }
  .photo-count { margin-left:0;font-size:10px; }.photo-grid { grid-template-columns:repeat(2,minmax(0,1fr));gap:23px 14px;margin-top:22px; }
  .photo-tile-image { aspect-ratio:1; }.photo-tile-caption { font-size:13px;padding-top:11px; }.photo-tile-caption>span:last-child { font-size:8px; }
  .photo-tile-image:after { opacity:1;transform:none;right:8px;bottom:8px;width:26px;height:26px;font-size:15px; }
  .photo-gallery-more { flex-direction:column;align-items:flex-start;gap:18px;margin-top:32px; }.photo-gallery-more>.button { font-size:13px; }.photo-gallery-more>span { font-size:10px; }
  .photo-dialog { width:100%;height:100svh;border:0; }.photo-dialog[open] { grid-template-rows:55px minmax(0,1fr) auto; }
  .photo-dialog-stage { padding:12px 8px 60px; }.photo-prev,.photo-next { top:auto;bottom:8px;transform:none;width:46px;height:42px; }.photo-prev { left:calc(50% - 56px); }.photo-next { right:calc(50% - 56px); }
  .photo-dialog-toolbar { padding-inline:17px; }.photo-dialog-caption { padding:17px;gap:15px;align-items:end; }.photo-dialog-caption h2 { font-size:21px; }.photo-dialog-caption .scene-label { font-size:8px; }.photo-category { font-size:9px; }
  .signature-section { padding-top:45px; }.signature-heading { display:block; }.signature-heading>.eyebrow { font-size:9px;margin-bottom:25px; }.signature-heading>p:not(.eyebrow) { font-size:38px; }.signature-heading>.text-link { display:inline-flex;margin-top:25px;font-size:13px; }
  .signature-field { height:300px;margin-top:25px; }.signature-fallback { font-size:17vw; }.signature-hint { bottom:17px;font-size:7px;letter-spacing:.06em; }
  .signature-end { font-size:8px;gap:15px;flex-wrap:wrap; }.signature-end>span:nth-child(2) { display:none; }
}
@media (prefers-reduced-motion:reduce) {
  body.cinematic-scroll .hero-scroll,body.cinematic-scroll .assembly-scroll { height:auto; }
  body.cinematic-scroll .hero-scroll>.hero { position:relative;height:auto;min-height:760px; }
  body.cinematic-scroll .assembly-stage { position:relative;height:auto;min-height:650px; }
  .hero-motion-hint { display:none; }.hero-transition { display:none; }
  .photo-feature img,.photo-tile img,.project-art:after { transition:none; }
  .photo-feature button:hover img,.photo-tile:hover img { transform:none; }
}
@media (prefers-reduced-motion:reduce) and (max-width:900px) {
  body.cinematic-scroll .hero-scroll>.hero { min-height:0; }
  body.cinematic-scroll .assembly-stage { min-height:0; }
}
@media print { .hero-scroll { height:auto!important; }.hero-universe,.hero-fallback-sand,.hero-transition,.hero-motion-hint,.assembly-scroll,.signature-section,.photo-dialog,.photo-gallery-toolbar,.photo-gallery-more { display:none!important; }.photo-grid { grid-template-columns:repeat(3,1fr); }.photo-feature { max-height:400px; }.photo-feature-main { min-height:300px; }.photo-feature-side>button { min-height:140px; } }

.photo-feature-side>button:first-child>img { object-position:center 6%; }
/* Frame capture and grains share the page background. */
.hero-art { background:none; }
.hero-universe { transition:none; }
.hero-universe canvas { filter:none; background:transparent; }
.hero.hero-particle-active .hero-copy,
.hero.hero-particle-active .hero-art,
.hero.hero-particle-active .hero-bottom,
.hero.hero-particle-active .hero-motion-hint { opacity:0;pointer-events:none; }
body.cinematic-scroll .hero-scroll { height:270svh; }
.hero-transition { visibility:hidden; }
/* Geometry remains measurable while its text is drawn by the particle renderer. */
.case-dialog { overflow-x:hidden; }
.case-dialog .case-main,.case-dialog .case-visual { min-width:0;max-width:100%; }
.case-dialog .case-visual img { max-width:100%;transform:none; }
body.cinematic-scroll .assembly-scroll { height:auto; }
body.cinematic-scroll .assembly-stage { position:relative;top:auto;height:auto;min-height:680px;max-height:none; }
.assembly-visual { aspect-ratio:1.1; }
.assembly-visual .build-perspective { inset:20% 9% 24%; }
.assembly-note { max-width:300px; }
.build-layer { transition:none; }
.photo-teaser-link { margin-top:35px;display:flex;justify-content:space-between;align-items:center;gap:24px; }
.photo-teaser-link>span { color:#a7b29a;font:11px/1.7 var(--mono); }
.gallery-page .photography-section { padding-top:70px; }
.gallery-page .photography-heading h1 { font:500 clamp(48px,7vw,100px)/1 var(--sans);letter-spacing:-.055em;margin:25px 0; }
.gallery-page .photo-grid { margin-bottom:60px; }
.gallery-back { margin-bottom:35px;display:inline-flex; }
@media(max-width:900px){body.cinematic-scroll .assembly-stage{min-height:0}.assembly-visual{aspect-ratio:1.25}.assembly-visual .build-perspective{inset:20% 8% 22%}}
@media(max-width:640px){.assembly-visual{aspect-ratio:1.04}.assembly-visual .build-perspective{inset:21% 5% 24%}.photo-teaser-link{align-items:flex-start;flex-direction:column}.gallery-page .photography-section{padding-top:40px}}
/* At the exact settled target, hand the lettering back to native text for
   crisp small type. This is an endpoint swap, with no opacity crossfade. */
.hero.hero-particle-finished .hero-transition { visibility:visible;opacity:1; }
.hero.hero-particle-finished .hero-universe { visibility:hidden; }

.build-structure{background:#152015}.build-systems{background:#181324}.build-layer{transform-style:flat}
/* The hero keeps its content grid; the transparent particle layer spans the viewport. */
.hero-universe { left:50%;right:auto;transform:translateX(-50%);width:calc(100vw - var(--scene-scrollbar,0px));height:100%; }
body.cinematic-scroll .hero-scroll>.hero { max-height:none; }
/* Four selectable stages, each with a dedicated animated composition. */
.build-lab { margin-top:45px; }
.build-controls { display:flex;justify-content:space-between;align-items:center;gap:24px;margin-bottom:16px; }
.build-controls>.scene-label { color:var(--violet); }
.build-select-hint { color:#b8c3a9;font:12px/1.5 var(--mono); }
.build-select-hint>span { color:var(--lime);margin-left:13px; }
.build-tabs { display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;position:sticky;top:calc(var(--header-space,100px) + 6px);z-index:7;background:#141610;padding-block:10px 14px; }
.build-tabs>button { display:flex;justify-content:space-between;align-items:center;gap:12px;padding:21px 22px;border:1px solid #52623b;background:#1a2115;color:#cbd4c0;font:500 24px/1.2 var(--sans);letter-spacing:-.035em;text-align:left;cursor:pointer;transition:background .2s,color .2s,border-color .2s; }
.build-tabs>button>i { color:var(--lime);font-size:23px;font-style:normal; }
.build-tabs>button:hover { border-color:var(--lime);background:#28341b;color:#f0f4e9; }
.build-tabs>button[aria-selected=true] { color:#1a230e;background:var(--lime);border-color:var(--lime); }
.build-tabs>button[aria-selected=true]>i { color:#1a230e;transform:rotate(90deg); }
.stage-panel { border:1px solid #3c4930;background:radial-gradient(ellipse at 80% 20%,#56437613,transparent 60%),#13170f; }
.stage-frame { position:relative;height:clamp(430px,54vw,650px);overflow:hidden; }
.build-canvas { display:block;width:100%;height:100%;touch-action:pan-y; }
.deliver-cue { position:absolute;right:28px;bottom:25px;color:#a5b494;font:10px/1.5 var(--mono);letter-spacing:.06em;pointer-events:none; }
.stage-caption { min-height:125px;border-top:1px solid #3c4930;padding:26px 32px;display:grid;grid-template-columns:1.1fr 1fr;gap:32px;align-items:center; }
.stage-caption>strong { color:var(--lime);font:500 24px/1.35 var(--sans);letter-spacing:-.035em; }
.stage-caption>p { margin:0;color:#b8c3ac;font-size:16px;line-height:1.65; }
.closing-cta { padding:65px 0 0;background:#12160e;border-top:1px solid #455335; }
.closing-cta .eyebrow { color:#a6b597;margin-bottom:25px; }
.closing-line { display:flex;justify-content:space-between;align-items:end;gap:25px;padding-bottom:55px; }
.closing-line>p { font:500 clamp(45px,6vw,84px)/1 var(--sans);letter-spacing:-.055em;margin:0; }
.closing-line em { font-style:normal;color:var(--lime); }
.closing-line>.text-link { font-size:18px;white-space:nowrap; }
.closing-meta { display:flex;justify-content:space-between;gap:20px;border-top:1px solid #3c4a30;padding-block:22px;color:#a0ad91;font:10px/1.5 var(--mono); }
.closing-meta>a { color:var(--lime); }
@media(max-width:900px){.build-tabs>button{font-size:20px;padding:17px 16px}.stage-caption{grid-template-columns:1fr;gap:10px}.stage-caption>strong{font-size:23px}.stage-caption>p{font-size:16px}}
@media(max-width:800px){.stage-frame{height:auto;aspect-ratio:640/810}.stage-caption{padding:22px 25px;min-height:155px}.deliver-cue{font-size:8px;right:20px;bottom:18px}.build-tabs{position:relative;top:auto}}
@media(max-width:640px){.build-lab{margin-top:32px}.build-controls{align-items:start;gap:12px}.build-controls>.scene-label{font-size:8px}.build-select-hint{font-size:10px;white-space:nowrap}.build-select-hint>span{margin-left:5px}.build-tabs{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;padding-top:0;padding-bottom:12px}.build-tabs>button{font-size:18px;padding:16px 17px}.build-tabs>button>i{font-size:19px}.stage-caption{padding:22px 20px;min-height:170px}.stage-caption>strong{font-size:22px}.stage-caption>p{font-size:15px}.closing-cta{padding-top:45px}.closing-line{display:block;padding-bottom:35px}.closing-line>p{font-size:54px}.closing-line>.text-link{display:inline-flex;font-size:16px;margin-top:30px}.closing-meta{font-size:8px;flex-wrap:wrap;gap:14px}.closing-meta>span:nth-child(2){display:none}}
@media(prefers-reduced-motion:reduce){.build-tabs>button{transition:none}}
@media print{.build-lab,.closing-cta{display:none!important}}
.capability .cap-body { padding-left:0; }
.closing-main { display:flex;align-items:end;justify-content:space-between;gap:25px;width:100%;color:var(--text);font:500 clamp(45px,6vw,84px)/1.04 var(--sans);letter-spacing:-.055em; }
.closing-main>i { font-size:1.1em;font-style:normal;color:var(--lime);transition:transform .25s; }
.closing-main:hover>i { transform:translate(5px,-5px); }
@media(max-width:640px){.closing-main{font-size:44px;gap:16px}.closing-main>span{max-width:240px}.closing-main>i{font-size:44px}}
.case-scope,.case-examples { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:18px 0 28px; }
.case-scope>div,.case-examples>article { min-width:0;background:#1c2417;border:1px solid #414e34;padding:21px 23px; }
.case-scope h4,.case-examples h4 { font:500 21px/1.3 var(--sans);letter-spacing:-.025em;color:var(--lime);margin:0 0 12px; }
.case-scope p,.case-examples p { margin:0;font-size:16px;line-height:1.7; }
.case-examples .button { margin-top:18px;font-size:12px;padding:11px 13px; }
.case-related { margin:30px 0;padding:22px 24px;border-left:2px solid var(--violet);background:#211a2e; }
.case-related>.eyebrow { color:#bca2ee;margin:0 0 16px; }
.case-related .button { text-align:left;white-space:normal;line-height:1.5; }
.case-back { display:block;padding:0 0 20px;border:0;background:none;text-align:left;color:#c0a9eb;font:12px/1.6 var(--mono);cursor:pointer; }
.case-back:hover { color:var(--lime); }
@media(max-width:640px){.case-scope,.case-examples{grid-template-columns:1fr;gap:12px}.case-scope>div,.case-examples>article{padding:20px}.case-scope h4,.case-examples h4{font-size:20px}.case-scope p,.case-examples p{font-size:15px}.case-related{padding:20px}.case-related .button{font-size:13px;padding:12px 15px}.case-back{font-size:11px}}
