@font-face{font-family:"Opening Serif";font-style:normal;font-weight:400;font-display:swap;src:url("fonts/instrument-serif-regular.ttf") format("truetype")}
/* Full-viewport opening; gallery content has its own independent manifest. */
.opening{position:fixed;inset:0;z-index:30;overflow:clip;background:var(--studio-paper);color:var(--studio-ink);isolation:isolate;touch-action:none}
body.opening-active{overflow:hidden}
body.opening-active>.site-header,body.opening-active>main,body.opening-active>.dock-wrap,body.opening-active>footer{visibility:hidden}
.opening-wheel{position:absolute;inset:0;overflow:clip;cursor:grab;mask-image:radial-gradient(ellipse at center,#000 42%,#000b 64%,transparent 84%);-webkit-mask-image:radial-gradient(ellipse at center,#000 42%,#000b 64%,transparent 84%)}
.opening-wheel.is-dragging{cursor:grabbing}
.opening-card{position:absolute;left:50%;top:50%;width:var(--image-width);aspect-ratio:var(--image-ratio);margin:0;will-change:transform}
.opening-card img{display:block;width:100%;height:100%;object-fit:cover;object-position:var(--image-position);border-radius:6px;box-shadow:0 5px 6px #20272c0b,0 16px 24px #20272c16;user-select:none;-webkit-user-drag:none;transition:scale .3s ease,box-shadow .3s ease}
.opening-card:hover{z-index:2}
.opening-card:hover img{scale:1.09;box-shadow:0 7px 8px #20272c10,0 20px 30px #20272c24}
.opening-copy{position:absolute;left:50%;top:50%;translate:-50% -50%;z-index:3;width:max-content;max-width:calc(100% - 32px);text-align:center;user-select:none}
.opening-signature{margin:0 0 17px;color:#696e68;font:400 10px/1.5 -apple-system,BlinkMacSystemFont,"PingFang SC",sans-serif;letter-spacing:.16em}
.opening-signature span{margin:0 9px;color:#888c85}
.opening-title{margin:0;font:400 clamp(42px,4.2vw,60px)/1.05 "Opening Serif",Georgia,serif;letter-spacing:-.02em}
.opening-title a{display:block;padding:6px 10px;color:#111;text-decoration:none;transition:color .2s ease}
.opening-title a>span{display:block;white-space:nowrap}
/* A short invitation after 1.5s, followed by a quiet interval. */
.opening:not([hidden]) .opening-title a{animation:opening-title-nudge 5s 1.5s infinite;transform-origin:center}
.opening.title-paused .opening-title a,.opening.is-leaving .opening-title a{animation-play-state:paused}
@keyframes opening-title-nudge{0%,20%,100%{transform:scale(1);animation-timing-function:cubic-bezier(.4,0,.2,1)}8%{transform:scale(1.05);animation-timing-function:cubic-bezier(.16,1,.3,1)}}
.opening-title a:hover{color:#111;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:7px}
.opening-title a:focus-visible,.opening-pause:focus-visible{outline:2px solid var(--studio-blue);outline-offset:8px}
.opening-title a:active{color:#111}
.opening-hint{margin:18px 0 0;color:#696e68;font:400 11px/1.8 -apple-system,BlinkMacSystemFont,"PingFang SC",sans-serif;letter-spacing:.025em}
.opening-hint span{margin:0 5px}
.opening-pause{position:absolute;right:26px;bottom:22px;z-index:4;width:44px;height:44px;display:grid;place-items:center;border:0;background:transparent;color:var(--studio-muted);cursor:pointer;opacity:.85;transition:opacity .2s ease}
.opening-pause:hover,.opening-pause:focus-visible{opacity:1}
.opening-pause svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.5}
.opening.is-leaving{pointer-events:none}
.opening.is-leaving .opening-wheel{opacity:0;transition:opacity .18s ease}
.opening.is-leaving .opening-copy{opacity:0;transition:opacity .15s ease}
body:not(.opening-active) .studio-home .work-section,body.opening-flight .studio-home .work-section{padding-top:150px}
.opening-editor{position:fixed;left:24px;bottom:22px;z-index:35;width:330px;max-height:65vh;overflow:auto;padding:20px;background:#fffffff5;border:1px solid var(--studio-line);border-radius:5px;color:var(--studio-ink);font:13px/1.7 -apple-system,BlinkMacSystemFont,"PingFang SC",sans-serif;box-shadow:var(--studio-shadow)}
.opening-editor summary{cursor:pointer;font-weight:600}
.opening-editor p{margin:12px 0;color:var(--studio-muted)}
.opening-editor input{max-width:100%;margin:8px 0}
.opening-editor button,.opening-editor a{display:inline-block;border:1px solid var(--studio-line);background:transparent;padding:8px 12px;margin:6px 6px 0 0;border-radius:3px;color:inherit;text-decoration:none;cursor:pointer}
.opening-editor button:hover,.opening-editor a:hover{border-color:var(--studio-ink)}
.opening-editor :focus-visible{outline:2px solid var(--studio-blue);outline-offset:3px}
.opening-editor button:disabled{cursor:default;opacity:.4}
.opening-editor output{display:block;margin-top:10px;overflow-wrap:anywhere}
@media(max-width:600px){.opening-title{font-size:clamp(34px,8vw,46px)}.opening-signature{font-size:9px;margin-bottom:12px}.opening-hint{font-size:10px;max-width:240px;margin:14px auto 0}.opening-pause{right:12px;bottom:12px}.opening-editor{left:12px;bottom:12px;width:min(330px,calc(100vw - 24px))}body:not(.opening-active) .studio-home .work-section{padding-top:110px}}
@media(prefers-reduced-motion:reduce){.opening *{transition:none!important;animation:none!important}.opening-card{will-change:auto}.opening.is-leaving{animation:none}.opening-pause{display:none}}

/* Six real title glyphs become the header wordmark. */
.opening-letter{display:inline-block;color:#fff;-webkit-text-stroke:1.25px #37434a;paint-order:stroke fill;line-height:1}
.identity-wordmark{display:block;width:max-content;font:400 46px/1 "Opening Serif",Georgia,serif;letter-spacing:-.02em;color:#fff;-webkit-text-stroke:1.25px #37434a;paint-order:stroke fill}
.identity-letter{display:inline-block}
.identity-wordmark+.identity-caption{margin-top:3px}
body.opening-flight .identity-wordmark{visibility:hidden}
body.opening-flight .opening-letter{visibility:hidden}
.opening-flight-layer{position:fixed;inset:0;z-index:50;pointer-events:none;overflow:clip}
.opening-flight-letter{position:absolute;margin:0;font-family:"Opening Serif",Georgia,serif;font-weight:400;line-height:1;letter-spacing:-.02em;color:#fff;-webkit-text-stroke:1.25px #37434a;paint-order:stroke fill;transform-origin:top left;will-change:transform}
.opening.is-leaving .opening-pause{opacity:0;transition:opacity .2s}
@media(max-width:600px){.identity-wordmark{font-size:34px}body.opening-flight .studio-home .work-section{padding-top:110px}}
