:root{--paper:#f2eee6;--ink:#453429;--mute:#948575;--line:rgba(70,53,40,.20)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:Arial,Helvetica,sans-serif;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}img{max-width:100%}
.header{height:82px;margin:0;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 5vw}.brand img{display:block;width:148px;height:auto}.header-tag{font:10px Arial,sans-serif;letter-spacing:.10em;color:var(--ink)}
.collection{width:100%;overflow:hidden;padding:57px 0 38px}.intro,.collection-foot{margin:0 5vw}.intro{display:flex;align-items:end;justify-content:space-between;gap:20px}.eyebrow{font-size:10px;letter-spacing:.14em;color:var(--mute)}.editorial h1{margin:20px 0 0;font:normal clamp(42px,5.3vw,82px)/1.03 Georgia,'Times New Roman',serif;letter-spacing:-.066em}.editorial h1 i{font-weight:normal}.gesture-prompt{display:flex;align-items:end;gap:14px;margin:0 0 9px;font-size:9px;letter-spacing:.11em;line-height:1.7;text-align:right;color:var(--mute)}.thin-arrows{font:normal 25px Georgia,serif;white-space:nowrap}
/* This is a single continuous physical chain, NOT a card carousel or page slider. */
.object-viewport{height:min(62vw,690px);min-height:500px;position:relative;overflow:hidden;touch-action:pan-y;cursor:grab;user-select:none;-webkit-user-select:none;outline:none;isolation:isolate}.object-viewport.is-dragging{cursor:grabbing}.object-viewport:focus-visible{outline:1px solid rgba(68,52,40,.24);outline-offset:-4px}
.ghost-track{position:absolute;left:0;right:0;top:51.4%;height:1px;opacity:0;pointer-events:none}
.object-node{position:absolute;left:50%;top:0;width:min(57vw,710px);height:100%;transform:translate3d(-50%,0,0);will-change:transform,opacity;display:flex;align-items:center;flex-direction:column;justify-content:flex-start;outline:0;cursor:grab;touch-action:pan-y;z-index:1;user-select:none;-webkit-user-select:none;pointer-events:auto}.object-viewport.is-dragging .object-node{cursor:grabbing}.object-node:focus-visible .object-visual{outline:1px solid rgba(95,72,51,.40);outline-offset:-12px}.object-node canvas{display:block;width:100%;height:100%;position:relative;z-index:1;pointer-events:none}
.object-visual{position:relative;width:100%;height:76%;transform:translateY(var(--lift,0px)) rotate(var(--tilt,0deg)) scale(var(--focus-scale,1));transform-origin:center 52%;will-change:transform;display:grid;place-items:center;pointer-events:auto}
.object-node .ground-shadow{position:absolute;bottom:5%;width:47%;height:8%;background:radial-gradient(ellipse,rgba(58,45,30,.18),rgba(58,45,30,.045) 47%,transparent 76%);filter:blur(16px);border-radius:50%;pointer-events:none}.object-node .ground-shadow--gull{opacity:.26;width:37%}.object-fallback{position:absolute;inset:0;display:grid;place-items:center;z-index:2;pointer-events:none}.object-fallback[hidden]{display:none}.object-fallback img{width:100%;height:100%;object-fit:contain;mix-blend-mode:multiply;pointer-events:none;-webkit-user-drag:none;user-select:none}
.object-label{height:24%;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;text-align:center;white-space:nowrap;pointer-events:none;transform:translateY(var(--label-y,0px));will-change:opacity,transform}.object-label .ordinal{font:10px Arial,sans-serif;color:var(--mute);letter-spacing:.14em;margin-bottom:10px}.object-label strong{font:normal clamp(46px,4.8vw,78px)/.98 Georgia,serif;letter-spacing:-.07em}.object-label small{font:13px Arial,sans-serif;margin-top:7px;color:var(--mute)}
.collection-foot{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);padding-top:20px;font-size:10px;letter-spacing:.12em;color:var(--mute);gap:20px}.touch-glyph{font-size:19px;vertical-align:-2px;letter-spacing:normal;margin-right:7px}.pagination{display:flex;align-items:center;gap:13px;color:var(--ink);font:11px Arial,sans-serif;letter-spacing:.07em}.pagination-line{display:inline-block;width:90px;height:1px;background:#d0c6b8;position:relative}.pagination-line i{display:block;height:1px;width:50%;background:var(--ink);transition:transform .25s ease;transform:translateX(var(--page-shift,0))}.future{font-size:9px;white-space:nowrap}footer{border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:31px 5vw 38px;gap:20px;color:var(--mute);font-size:10px;letter-spacing:.05em}
@media(max-width:850px){.object-viewport{height:69vw;min-height:510px}.object-node{width:min(77vw,670px)}.object-visual{height:75%}.object-label{height:25%}.collection-foot .future{display:none}.gesture-prompt{font-size:8px}.editorial h1{font-size:clamp(45px,6vw,66px)}}
@media(max-width:600px){.header{height:68px;padding:0 5vw}.brand img{width:116px}.header-tag{font-size:9px}.collection{padding:42px 0 25px}.intro{align-items:end}.eyebrow{font-size:9px}.editorial h1{margin-top:13px;font-size:clamp(38px,10.1vw,52px)}.gesture-prompt{max-width:105px;font-size:7px;line-height:1.55;display:block;text-align:right;margin-bottom:5px}.thin-arrows{display:block;font-size:17px;line-height:1.2}.object-viewport{height:510px;min-height:0;margin-top:4px}.object-node{width:86vw}.object-visual{height:76%}.object-label{height:24%}.object-label strong{font-size:clamp(49px,12vw,64px)}.object-label .ordinal{font-size:9px}.collection-foot{font-size:8px;gap:8px}.hint{max-width:225px;line-height:1.9}.pagination-line{width:42px}.touch-glyph{font-size:13px}.pagination{font-size:9px;gap:8px}footer{font-size:9px;padding:28px 5vw}}
@media(max-width:370px){.object-viewport{height:460px}.object-node{width:88vw}.editorial h1{font-size:36px}.object-label strong{font-size:46px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.object-visual,.object-node{transition:none!important}}

/* Real GLB model is rendered by model-viewer / WebGL, not the old canvas or photo. */
#shanghaiModel{display:block;width:100%;height:100%;background:transparent;--poster-color:transparent;pointer-events:none;position:relative;z-index:1;touch-action:pan-y;}
.model-status{position:absolute;bottom:10%;left:50%;transform:translateX(-50%);font-size:10px;letter-spacing:.12em;text-align:center;color:#917b64;white-space:nowrap;pointer-events:none;z-index:3}
.model-status.is-error{color:#a3473b;max-width:85%;white-space:normal;font-size:11px;letter-spacing:.02em}
