/* Terra 3D: additive, home-only enhancement. */
.to-desk-story { position:relative; height:210svh; }
.to-desk-footer { display:contents; }
.to-desk-story > .to-hero { position:sticky; top:92px; height:calc(100svh - 112px); min-height:620px; padding:0; overflow:hidden; isolation:isolate; background:radial-gradient(ellipse at 70% 34%,#f5f1eb 0%,#eee6db 78%); border:1px solid #fff9; border-radius:22px; box-shadow:inset 0 1px 0 #fff9,0 14px 45px -30px #60432b40; backdrop-filter:none; }
.to-desk-active .to-top { box-shadow:none; border:1px solid #fff8; background:#f5f1ebeb; }
.to-desk-active .to-rail { box-shadow:none; background:#f5f1ebaa; }
.to-desk-active .to-menu--primary a .to-ico { box-shadow:none; background:transparent; border-color:transparent; }
.to-desk-active .to-pill--accent,.to-desk-active .to-lang a[aria-current] { box-shadow:0 3px 12px #9c5a3c19; }
.to-desk-active .to-hero__grid { position:relative; display:block; height:100%; padding:clamp(34px,3.8vw,64px); z-index:2; pointer-events:none; }
.to-desk-active .to-hero__text { position:relative; width:36%; max-width:520px; top:49%; transform:translateY(-50%); pointer-events:auto; }
.to-desk-active .to-hero__text h1 { font-size:clamp(38px,4vw,66px); line-height:1.06; letter-spacing:-.045em; }
.to-desk-active .to-hero__text .to-lead { font-size:clamp(13px,1.03vw,16px); line-height:1.75; max-width:32em; margin-top:24px; }
.to-desk-active .to-hero__text .to-btn { font-size:10px; letter-spacing:.10em; padding:20px 24px; background:#9c5a3c; box-shadow:0 8px 22px #9c5a3c25; border-color:#9c5a3c !important; text-shadow:none; }
.to-desk-active .to-hero__media { display:none; }
.to-desk-active .to-hero h1,.to-desk-active .to-hero h1 .to-w > span,.to-desk-active .to-hero .to-eyebrow,.to-desk-active .to-hero .to-lead,.to-desk-active .to-hero .to-btns { opacity:1; animation:none; transform:none; }
.to-desk-active .to-hero__text .to-eyebrow { font-size:10px; letter-spacing:.18em; line-height:1.5; }
.to-desk-active .to-hero::before,.to-desk-active .to-hero::after { display:none; }
.to-desk-scene { position:absolute; top:0; right:-3%; width:65%; height:100%; z-index:1; }
.to-desk-phases { position:absolute; left:46%; top:28px; right:30px; display:flex; align-items:center; gap:24px; z-index:3; pointer-events:none; }
.to-desk-phases span { position:relative; color:#8e8175; font:400 11px/1.4 var(--to-sans); letter-spacing:.06em; padding-bottom:8px; transition:color .3s; white-space:nowrap; }
.to-desk-phases span::before { content:attr(data-index); margin-right:7px; font-size:8px; opacity:.65; }
.to-desk-phases span::after { content:''; position:absolute; left:0; right:0; bottom:0; height:1px; transform:scaleX(0); transform-origin:left; transition:transform .45s; background:#9c5a3c; }
.to-desk-phases span.is-current { color:#9c5a3c; }
.to-desk-phases span.is-current::after { transform:scaleX(1); }
.to-desk-hover { position:absolute; z-index:5; padding:10px 15px; color:#f5f1eb; background:#382a23ec; backdrop-filter:blur(10px); border-radius:5px; font:400 10px/1.4 var(--to-sans); box-shadow:0 5px 20px #231d1920; pointer-events:none; opacity:0; transform:translateY(6px); transition:opacity .16s,transform .16s; }
.to-desk-hover.is-visible { opacity:1; transform:none; }
.to-desk-offer { position:absolute; left:clamp(34px,3.8vw,64px); top:50%; transform:translateY(-50%); width:33%; z-index:3; opacity:0; }
.to-desk-offer[inert] { pointer-events:none; }
.to-desk-offer h2 { font-size:clamp(34px,3.7vw,58px); letter-spacing:-.03em; margin-bottom:30px; }
.to-desk-offer-link { display:block; position:relative; padding:20px 0; border-top:1px solid #231d1925; text-decoration:none; }
.to-desk-offer-link .to-model__no { display:block; font:400 9px/1.4 var(--to-sans); letter-spacing:.1em; padding:0; margin:0 0 9px; }
.to-desk-offer-link h3 { font-size:28px; margin:0 0 9px; }
.to-desk-offer-link p { font-size:13px; line-height:1.6; color:#6e645b; margin:0; max-width:28em; }
.to-desk-offer-link::after { content:'↗'; position:absolute; right:0; top:19px; color:#9c5a3c; }
.to-desk-offer-link:hover h3 { color:#9c5a3c; }
.to-desk-modal-open { overflow:hidden; }
.to-desk-type-preview { font:500 44px/1.1 var(--to-serif); background:#9c5a3c; color:#f5f1eb; width:100%; height:100%; display:grid; place-content:center; padding:35px; }
.to-desk-scene canvas { display:block; width:100%; height:100%; cursor:grab; touch-action:pan-y; outline:none; }
.to-desk-scene canvas:active { cursor:grabbing; }
.to-desk-scene canvas:focus-visible { outline:2px solid #9c5a3c; outline-offset:-6px; }
.to-desk-scene canvas[data-input=pointer]:focus-visible { outline:none; }
.to-desk-tools { position:absolute; bottom:25px; right:28px; display:flex; align-items:center; gap:7px; z-index:4; }
.to-desk-tool { appearance:none; width:36px; height:36px; display:grid; place-items:center; padding:0; border:1px solid #231d1920; background:#f5f1ebc9; color:#6e645b; border-radius:50%; cursor:pointer; backdrop-filter:blur(8px); font:16px/1 var(--to-sans); transition:background .2s,transform .2s; }
.to-desk-tool:hover { background:#fff; transform:translateY(-2px); }
.to-desk-tool:focus-visible,.to-desk-card-control:focus-visible { outline:2px solid #9c5a3c; outline-offset:4px; }
.to-desk-instruction { position:absolute; bottom:36px; left:45%; z-index:3; font:400 9px/1.4 var(--to-sans); letter-spacing:.06em; color:#6e645b; pointer-events:none; }
.to-desk-scroll { position:absolute; bottom:36px; left:clamp(34px,4.2vw,68px); height:32px; width:18px; border:1px solid #9c5a3c60; border-radius:14px; }
.to-desk-scroll::before { content:''; position:absolute; top:7px; left:7px; width:2px; height:6px; background:#9c5a3c; animation:desk-scroll 1.8s ease-in-out infinite; }
@keyframes desk-scroll { 0%,100% { transform:translateY(0); opacity:.4 } 60% { transform:translateY(8px); opacity:1 } }
.to-desk-progress { position:absolute; left:0; right:0; bottom:0; height:2px; transform:scaleX(var(--desk-progress,0)); transform-origin:left; background:#9c5a3c; z-index:5; }
.to-desk-card-controls { position:absolute; right:30px; top:74px; display:flex; gap:4px; padding:4px; border:1px solid #fff8; background:#f5f1ebbb; border-radius:30px; z-index:4; backdrop-filter:blur(12px); }
.to-desk-card-control { position:relative; width:26px; height:26px; border:0; border-radius:50%; background:transparent; padding:0; font:400 9px/1 var(--to-sans); color:#6e645b; cursor:pointer; transition:background .2s,color .2s; }
.to-desk-card-control[aria-pressed=true] { background:#382a23; color:#f5f1eb; }
.to-desk-dialog { position:fixed; border:0; padding:0; background:transparent; color:#231d19; max-width:calc(100vw - 40px); width:1050px; max-height:90svh; overflow:visible; }
.to-desk-dialog::backdrop { background:#231d19b8; backdrop-filter:blur(16px); }
.to-desk-dialog[open] { animation:desk-dialog .26s cubic-bezier(.16,1,.3,1); }
@keyframes desk-dialog { from { opacity:0; transform:translateY(16px) scale(.97); } to { opacity:1; transform:none; } }
.to-photo-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:18px; padding-top:40px; }
.to-photo-item { display:block; min-width:0; padding:0; border:0; border-radius:14px; overflow:hidden; background:#e6dccf; cursor:zoom-in; box-shadow:0 12px 32px #231d190b; }
.to-photo-item img { display:block; width:100%; height:100%; object-fit:contain; transition:filter .25s; }
.to-photo-item:hover img { filter:brightness(1.04); }
.to-photo-item:focus-visible { outline:3px solid #9c5a3c; outline-offset:5px; }
.to-photo-item:nth-child(1) { grid-column:1 / 3; aspect-ratio:1672 / 941; }
.to-photo-item:nth-child(2),.to-photo-item:nth-child(3) { aspect-ratio:1672 / 941; }
.to-photo-item:nth-child(4) { grid-column:3; grid-row:1 / 3; }
.to-photo-dialog .to-desk-dialog-shell { display:flex; flex-direction:column; }
.to-photo-dialog .to-desk-dialog-media { height:auto; min-height:0; display:block; }
.to-photo-dialog .to-desk-dialog-media img { height:auto; max-height:76svh; }
.to-photo-caption { margin:0; padding:18px 26px; font-size:24px; }
body[data-photos] .to-about__img img { aspect-ratio:1055 / 1491; object-fit:contain; height:auto; }
body[data-photos] .to-model__img { aspect-ratio:1672 / 941; }
body[data-photos] .to-model__img img { object-fit:contain; }
@media (max-width:760px) {
  .to-photo-grid { grid-template-columns:1fr; gap:16px; padding-top:24px; }
  .to-photo-item:nth-child(n) { grid-column:auto; grid-row:auto; }
  .to-photo-item:nth-child(4) { aspect-ratio:941 / 1672; }
  .to-photo-dialog .to-desk-dialog-media { height:auto; }
}
.to-desk-dialog-shell { display:grid; grid-template-columns:minmax(0,1.2fr) minmax(260px,.8fr); background:#f5f1eb; border-radius:10px; box-shadow:0 40px 120px #0005; overflow:hidden; }
.to-desk-dialog-media { min-height:300px; height:min(76svh,780px); background:#e6dccf; display:grid; place-items:center; }
.to-desk-dialog-media img,.to-desk-dialog-media video { width:100%; height:100%; min-height:0; object-fit:contain; border:0; border-radius:0; }
.to-desk-dialog-copy { padding:60px 36px 40px; align-self:center; }
.to-desk-dialog-copy h2 { font-size:clamp(30px,4vw,48px); }
.to-desk-dialog-copy p,.to-desk-dialog-copy li { font-size:14px; line-height:1.7; color:#6e645b; }
.to-desk-dialog-copy ul { padding-left:18px; }
.to-desk-dialog-close { position:absolute; right:16px; top:16px; z-index:2; background:#f5f1eb; color:#231d19; }
.to-desk-active .to-hero .to-fx-spot::after { display:none; }
@media (min-width:1600px) { .to-desk-active .to-hero__text { width:36%; } }
@media (max-width:1100px) and (min-width:761px) {
  .to-desk-active .to-hero__text { width:38%; }
  .to-desk-active .to-hero__text h1 { font-size:42px; }
  .to-desk-scene { right:-1%; width:59%; }
  .to-desk-instruction { left:52%; max-width:180px; }
}
@media (max-width:760px) {
  .to-desk-story { height: auto; }
  .to-desk-story > .to-hero { position:relative; top:0; height:auto; min-height:0; padding-bottom:420px; border-radius:20px; }
  .to-desk-active .to-hero__grid { padding:34px 24px 12px; height:auto; }
  .to-desk-active .to-hero__text { width:100%; max-width:540px; top:0; transform:none; }
  .to-desk-active .to-hero__text h1 { font-size:clamp(37px,8vw,56px); }
  .to-desk-active .to-hero__text .to-lead { font-size:14px; margin-top:16px; }
  .to-desk-active .to-hero__text .to-btns { margin-top:20px; }
  .to-desk-active .to-hero__text .to-btn { padding:17px; font-size:9px; }
  .to-desk-scene { top:auto; bottom:15px; right:0; width:100%; height:405px; }
  .to-desk-instruction { bottom:20px; left:24px; max-width:210px; font-size:9px; }
  .to-desk-tools { right:18px; bottom:14px; }
  .to-desk-card-controls { top:auto; right:22px; bottom:371px; }
  .to-desk-card-control { width:40px; height:40px; font-size:10px; }
  .to-desk-phases { display:none; }
  .to-desk-scroll { display:none; }
  .to-desk-offer { display:none; }
  .to-desk-dialog-shell { grid-template-columns:1fr; max-height:88svh; overflow:auto; }
  .to-desk-dialog-media { height:48svh; min-height:0; }
  .to-desk-dialog-copy { padding:26px; }
}
@media (prefers-reduced-motion:reduce) {
  .to-desk-story { height:auto; }
  .to-desk-story > .to-hero { position:relative; top:0; }
  .to-desk-scroll::before { animation:none; }
  .to-desk-tool { transition:none; }
  .to-desk-dialog[open] { animation:none; }
}

/* Terra vector family: optical weight stays consistent at navigation and tool sizes. */
.to-icon .to-icon-tint { fill:currentColor; fill-opacity:.085; stroke:none; }
.to-icon .to-icon-accent { stroke:#9c5a3c; }
.to-icon .to-icon-seal { fill:#9c5a3c; stroke:#f5f1eb; stroke-width:1.5; }
.to-icons-ready .to-menu--primary a .to-icon { width:46px; height:46px; padding:7px; color:#73513f; border-radius:15px; background:#c9a78d12; }
.to-icons-ready .to-menu--primary a:hover .to-icon { background:#9c5a3c12; color:#9c5a3c; transform:translateY(-2px); }
.to-icons-ready .to-menu--primary a:focus-visible { outline:2px solid #9c5a3c; outline-offset:2px; }
.to-icons-ready .to-pill .to-icon { width:22px; height:22px; }
.to-desk-tool .to-icon { width:22px; height:22px; padding:0; pointer-events:none; }
.to-desk-tool { min-width:44px; width:44px; height:44px; }
.to-desk-dialog-close { background:#f5f1ebf5; box-shadow:0 3px 14px #231d191a; }

@media (max-width:860px) {
  html { scroll-padding-top:82px; scroll-padding-bottom:110px; }
  .to-icons-ready { --gap:10px; }
  .to-icons-ready .to-app { padding-bottom:calc(108px + env(safe-area-inset-bottom)); }
  .to-icons-ready .to-top { top:8px; min-height:62px; padding:7px 9px 7px 17px; gap:8px; border-radius:20px; background:#f7f3eef5; box-shadow:0 5px 20px #231d1907; }
  .to-icons-ready .to-logo { font-size:23px; letter-spacing:-.035em; white-space:nowrap; }
  .to-icons-ready .to-top__right { gap:6px; }
  .to-icons-ready .to-lang ul { padding:2px; background:transparent; border:0; }
  .to-icons-ready .to-lang a { min-width:36px; min-height:44px; display:grid; place-items:center; padding:0 8px; font-size:10px; letter-spacing:.04em; border-radius:14px; }
  .to-icons-ready .to-top .to-pill { width:44px; height:44px; padding:10px; justify-content:center; border-radius:15px; flex:none; }
  .to-icons-ready .to-rail { left:10px; right:10px; bottom:calc(8px + env(safe-area-inset-bottom)); padding:5px; border-radius:23px; background:#faf6f0f5; border:1px solid #fff; box-shadow:0 8px 32px #382a2326,inset 0 1px 0 #fff; backdrop-filter:blur(18px); }
  .to-icons-ready .to-menu--primary { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:1px; }
  .to-icons-ready .to-menu--primary a { min-height:68px; padding:3px 1px; gap:3px; border-radius:17px; color:#54483f; }
  .to-icons-ready .to-menu--primary a .to-icon { width:36px; height:34px; padding:2px 3px; border:0; border-radius:11px; background:transparent; box-shadow:none; }
  .to-icons-ready .to-menu--primary a:hover,.to-icons-ready .to-menu--primary a:focus-visible { background:#9c5a3c0d; }
  .to-icons-ready .to-menu__label { display:block; font-size:10px; font-weight:450; line-height:1.15; letter-spacing:0; min-height:23px; max-width:100%; overflow:visible; overflow-wrap:normal; }
  .to-icons-ready .to-menu--primary .current-menu-item > a { background:#9c5a3c12; color:#7d452c; }
  .to-icons-ready .to-menu--primary .current-menu-item > a .to-icon { color:#9c5a3c; background:transparent; animation:none; }

  .to-desk-story { height:auto; }
  .to-desk-story > .to-hero { position:relative; top:0; height:auto; min-height:0; padding:0; display:flex; flex-direction:column; border-radius:22px; }
  .to-desk-active .to-hero__grid { order:0; height:auto; width:100%; max-width:560px; padding:26px 22px 18px; }
  .to-desk-active .to-hero__text { width:100%; max-width:none; top:0; transform:none; }
  .to-desk-active .to-hero__text h1 { font-size:clamp(32px,8.8vw,46px); line-height:1.055; letter-spacing:-.035em; text-wrap:balance; margin-bottom:0; }
  .to-desk-active .to-hero__text .to-eyebrow { font-size:8px; letter-spacing:.16em; margin-bottom:16px; gap:8px; }
  .to-desk-active .to-hero__text .to-lead { font-size:14px; line-height:1.6; margin:17px 0; max-width:none; }
  .to-desk-active .to-hero__text .to-btns { margin:0; }
  .to-desk-active .to-hero__text .to-btn { min-height:48px; padding:14px 18px; font-size:9px; line-height:1.35; letter-spacing:.07em; }
  .to-desk-card-controls { position:relative; inset:auto; order:1; align-self:center; width:min(320px,calc(100% - 24px)); margin:0 12px; padding:3px; display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:0; border:1px solid #9c5a3c16; background:#fcf9f3; border-radius:18px; box-shadow:0 5px 16px #231d1908; }
  .to-desk-card-control { width:100%; height:44px; font-size:11px; border-radius:14px; }
  .to-desk-card-control[aria-pressed=true] { background:#9c5a3c; box-shadow:0 3px 8px #9c5a3c25; }
  .to-desk-scene { order:2; position:relative; inset:auto; width:100%; height:clamp(320px,95vw,440px); flex:none; }
  .to-desk-footer { display:flex; order:3; justify-content:space-between; align-items:center; gap:10px; padding:0 15px 15px; }
  .to-desk-instruction { position:static; max-width:190px; font-size:10px; line-height:1.5; letter-spacing:.025em; }
  .to-desk-tools { position:static; flex:none; gap:6px; }
  .to-desk-tool { background:#fcf9f3; border-color:#9c5a3c24; color:#7d452c; }
  .to-desk-phases,.to-desk-scroll,.to-desk-offer { display:none; }
  .to-desk-dialog { max-width:calc(100vw - 24px); max-height:calc(100dvh - 28px); }
  .to-desk-dialog-shell { grid-template-columns:1fr; max-height:calc(100dvh - 28px); overflow:auto; border-radius:18px; }
  .to-desk-dialog-media { height:46svh; min-height:0; }
  .to-desk-dialog-copy { padding:24px; }
  .to-desk-dialog-copy h2 { font-size:32px; }
  .to-desk-dialog-close { right:10px; top:10px; }
  .to-photo-dialog .to-desk-dialog-media { height:auto; }
  .to-photo-dialog .to-desk-dialog-media img { max-height:calc(100dvh - 110px); }
  .to-photo-caption { padding:17px 20px; font-size:23px; }
  .to-icons-ready .to-filter { flex-wrap:wrap; }
  .to-icons-ready .to-filter button { min-height:44px; padding:10px 12px; }
  .to-icons-ready .to-stat { padding:18px; }
  .to-icons-ready .to-stat__num { line-height:1.05; }
  .to-icons-ready .to-io { opacity:1; transform:none; filter:none; transition:none; }
}
@media (max-width:350px) {
  .to-icons-ready .to-logo { font-size:20px; }
  .to-icons-ready .to-top { padding-left:12px; gap:4px; }
  .to-icons-ready .to-top__right { gap:2px; }
  .to-icons-ready .to-lang a { min-width:32px; }
  .to-icons-ready .to-menu__label { font-size:9px; }
  .to-desk-active .to-hero__grid { padding-inline:18px; }
  .to-desk-active .to-hero__text .to-lead { font-size:13px; }
  .to-desk-footer { padding-inline:12px; }
  .to-desk-instruction { max-width:154px; font-size:9px; }
}
@media (prefers-reduced-motion:reduce) {
  .to-icon,.to-icons-ready .to-menu--primary a,.to-photo-item img { transition:none!important; }
}

/* Direct card interaction is primary; retain a keyboard/screen-reader path. */
.to-desk-card-controls:not(:focus-within) {
  position:absolute; width:1px; height:1px; padding:0; margin:0;
  overflow:hidden; clip-path:inset(50%); white-space:nowrap; border:0;
}
