/* 01 · 星图是页面主体：标题在上方横排，下方以完整宽度展示星轨和三个入口。 */
.gallery-map{max-width:1400px;padding:12px 5% 28px;color:#45647f}.map-layout{display:block}.map-intro{text-align:center;position:relative;z-index:3;padding:10px 0 6px}.map-eyebrow{font:9px Georgia,serif;letter-spacing:2.2px;color:#a18a60}.map-heading h1{font-weight:400;font-size:clamp(30px,3.2vw,46px);line-height:1.5;letter-spacing:3px;margin:12px 0;color:#355676;white-space:nowrap}.map-heading h1>span{color:#b39961}.map-heading p{font-size:12px;letter-spacing:2px;line-height:2;color:#6e8394;margin:0}
/* 02 · 星图不是背景图片：两层 SVG、三件入口画稿分别可维护，远层比近层移动小。 */
.map-canvas{position:relative;width:100%;max-width:1120px;margin:10px auto 0;height:clamp(520px,calc(100svh - 260px),720px);min-width:0;isolation:isolate;--chart-x:0px;--chart-y:0px}.chart-layer{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;transition:transform .55s cubic-bezier(.2,.7,.2,1)}.chart-far{transform:translate(calc(var(--chart-x)*.35),calc(var(--chart-y)*.35))}.chart-near{transform:translate(var(--chart-x),var(--chart-y))}.chart-washes{fill:#aec3cd;opacity:.1}.chart-orbit{fill:none;stroke:#b49966;stroke-width:1;stroke-linecap:round}.chart-orbit.rear,.chart-orbit.front{stroke:#b49966;opacity:1}.chart-constellations{fill:none;stroke:#6c849b;stroke-width:1;opacity:.55}.chart-star.blue{fill:#567491;opacity:.72}.chart-star.gold{fill:#b39355;opacity:.65}.chart-caption{position:absolute;left:53%;bottom:0;transform:translateX(-50%);font-size:10px;letter-spacing:2px;color:#a2a393;white-space:nowrap}
/* 03 · 命中框不跟着视差移动；指南针、画纸和蓝布画册承担三个展区的材质提示。 */
.map-portal{position:absolute;left:var(--portal-x);top:var(--portal-y);transform:translate(-50%,-50%);width:190px;display:flex;flex-direction:column;align-items:center;text-decoration:none;text-align:center;z-index:2;color:#526d86;padding:8px 0;border-radius:8px;-webkit-tap-highlight-color:#d9e3e955}.portal-hit{position:relative;display:block;width:150px;height:150px}.star-object{display:block;width:100%;height:100%;fill:none;stroke:#a39271;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(2px 5px 3px #635e4424);transition:transform .45s,filter .45s}.star-object text{fill:#82929b;stroke:none;font:9px Georgia,serif;text-anchor:middle}.chart-paper{fill:var(--map-paper,#fcf4e3);stroke:#b7a582}.chart-pin{fill:#b7985f}.needle-gold{fill:#c3a068;stroke:#a2854e}.needle-blue{fill:#a1b5c1;stroke:#7e96a7}.paper-back{fill:#ebe1cb;stroke:#baa98a}.paper-sketch{stroke:#829db1;opacity:.5}.clip-gold{fill:#c0a572;stroke:#9b8051}.object-02{transform:rotate(-7deg)}.object-03{transform:rotate(7deg)}.book-pages{fill:#efe6d0;stroke:#b6a988}.book-cloth{fill:#93b0bf;stroke:#6e92a6}.book-seam{stroke:#c1d0d0;stroke-width:.8}.bookmark-gold{fill:#d1b475;stroke:#b69b63}.cover-star{fill:#e8d49f;stroke:none}.portal-label{display:flex;position:relative;flex-direction:column;gap:7px;padding:4px 0}.portal-label>span{font-size:10px;color:#89969b;white-space:nowrap}.map-portal:hover .star-object,.map-portal:focus-visible .star-object,.map-portal.guide-near .star-object{transform:translateY(-4px) rotate(0);filter:drop-shadow(2px 8px 5px #a187543c)}.map-portal:focus-visible{outline:1px dashed #809fb4;outline-offset:3px}.map-portal.guide-near .portal-label>span:first-child{color:#997841}.map-portal .portal-drag-hint{display:none;position:absolute;top:100%;left:0;width:100%;color:#997841;letter-spacing:1px}.map-portal.guide-near .portal-drag-hint{display:block}
/* 04 · 角色使用原来的拖拽锚点，靠近检测继续使用实际视口坐标。 */
/* 角色停在星图左下留白，锚点属于星图，不跟随装饰层的运动。 */
.map-start{position:absolute;left:1%;bottom:5%;width:180px;height:155px;margin:0;z-index:3}.map-guide-anchor{position:absolute;left:0;top:0;width:110px;height:110px}.start-caption{position:absolute;left:0;top:137px;font-size:9px;color:#8f999e;letter-spacing:1px;white-space:nowrap}body[data-gallery-mode="map"] .guide.gallery{position:absolute;z-index:4;pointer-events:auto}body[data-gallery-mode="map"] .ginkgo-canopy{display:none}body[data-gallery-mode="map"] .guide-chat{bottom:30px}body[data-gallery-mode="map"] .site-footer{padding-top:8px}.map-legend{display:flex;justify-content:space-between;gap:16px;border-top:1px solid #c9b99244;padding-top:16px;font-size:10px;color:#9b9789;line-height:1.8}.map-note{color:#82949e}.map-portal-status{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.map-return{display:flex;align-items:center;gap:8px;color:#55718b;text-decoration:none;font-size:14px;border-right:1px solid #c9b99266;padding-right:18px;margin-right:18px;white-space:nowrap}.map-return[hidden]{display:none}.map-return svg{width:24px;height:24px;fill:none;stroke:#a58e5b;stroke-width:1.2;stroke-linejoin:round}.map-return small{display:block;color:#a4a89b;font-size:9px;margin-top:2px}.site-header:has(.map-return:not([hidden])) .brand{margin-right:auto}
/* 展区浏览较长时，左上角地图入口依然可见，不要求先滚回页面顶部。 */
body[data-gallery-mode="category"] .site-header{position:sticky;top:0;z-index:20;background:#fffdf7f5;border-bottom:1px solid #c9b99222}
/* 05 · 分类展区先提供静态作品纸页，后续作品布局可在这里独立迭代。 */
.category-page{max-width:1100px;padding:48px 5% 70px}.category-heading{margin-bottom:42px}.category-exhibit{display:grid;grid-template-columns:1.5fr 1fr;gap:70px;align-items:center}.map-study{border:0;background:none;padding:0;text-align:left;color:#536d87;width:100%}.study-frame{display:block;border:1px solid #b7a782;padding:10px;background:#f1e9d7;box-shadow:3px 4px 0 #d5c4a329;transform:rotate(-1deg)}.study-frame .art{aspect-ratio:1.35;width:100%;border:0;border-radius:0}.study-caption{display:flex;flex-direction:column;gap:10px;margin-top:24px}.study-caption small{color:#a58f6c;font-size:10px;letter-spacing:1px}.study-caption strong{font-weight:400;font-size:24px}.study-caption>span{font-size:13px;color:#929ca3}.map-study:hover .study-frame{box-shadow:4px 8px 0 #d5c4a344}.category-letter{border-top:1px solid #c9b99266;border-bottom:1px solid #c9b99266;padding:30px 0}.category-letter>span{font-size:28px;color:#baa16a}.category-letter h2{font-size:22px;font-weight:400;margin:18px 0}.category-letter p{color:#909ba2;font-size:13px;line-height:2.2}.category-letter a{font-size:13px;color:#a18c5f;display:inline-block;padding:12px 0}

/* 小屏维持同一构图，横排标题适应窄屏；入口仍有足够的点击范围。 */
@media(max-width:700px){.gallery-map{padding:10px 6% 26px}.map-intro{padding:4px 0 8px}.map-eyebrow{font-size:8px;letter-spacing:1px}.map-heading h1{font-size:clamp(25px,6.7vw,34px);letter-spacing:1px;margin:12px 0}.map-heading p{font-size:10px;letter-spacing:1px}.map-canvas{height:580px;margin-top:8px}.chart-layer{overflow:hidden}.map-portal{width:140px}.portal-hit{width:112px;height:112px}.portal-label>span{font-size:9px}.map-portal:nth-of-type(1){left:72%;top:21%}.map-portal:nth-of-type(2){left:27%;top:49%}.map-portal:nth-of-type(3){left:71%;top:79%}.chart-caption{bottom:2%;font-size:9px;letter-spacing:1px}.map-start{left:0;top:3%;bottom:auto;width:100px;height:125px}.map-guide-anchor{width:84px;height:90px}.start-caption{top:111px;font-size:8px;width:100px;white-space:normal;line-height:1.8}.map-legend{flex-direction:column;gap:5px;font-size:9px}.category-page{padding:32px 6% 100px}.category-heading h1{font-size:30px;letter-spacing:1px}.category-heading p{font-size:11px;line-height:1.8}.category-exhibit{grid-template-columns:1fr;gap:40px}.category-heading{margin-bottom:30px}.category-letter{padding:20px 0}.category-letter h2{font-size:20px}.map-return{gap:5px;padding-right:10px;margin-right:10px;font-size:12px}.map-return svg{width:20px}.map-return small{display:none}.site-header:has(.map-return:not([hidden])) .brand{font-size:14px}.site-header:has(.map-return:not([hidden])) nav{gap:8px}}
/* 减少动画时入口仍有焦点提示，视差与画稿悬浮均立即停止。 */
.reduce-motion .gallery-map .chart-layer,.reduce-motion .gallery-map .star-object{transition:none;transform:none}
@media(prefers-reduced-motion:reduce){.gallery-map .chart-layer,.gallery-map .star-object{transition:none;transform:none}}

body[data-gallery-mode="map"] .guide-caption{display:none}
/* 06 · 公转的远近半圈共用同一条三维轨道，远侧淡、近侧实，不转动分类入口。 */ .chart-orbit .orbit-distant{opacity:.23;stroke-width:.8;vector-effect:non-scaling-stroke}.chart-orbit .orbit-close{opacity:.70;stroke-width:1.15;vector-effect:non-scaling-stroke}

/* 07 · 装饰沿用淡金干笔：星芒为空心细线，小点轻填色，不添加闪烁或发光。 */ .orbit-mark{stroke:#b49966;stroke-width:.85;stroke-dasharray:none;pointer-events:none}.orbit-mark path,.orbit-mark circle{vector-effect:non-scaling-stroke}.mark-star{fill:#faf2de;stroke-linejoin:round}.mark-dot{fill:#b49966;stroke:none}.mark-tick{fill:none}
/* 08 · 三圈共享一层视差，公转参数仍各自独立；中圈略淡，交织处保留阅读层次。 */ .chart-orbits{transform:translate(calc(var(--chart-x)*.7),calc(var(--chart-y)*.7))}.chart-orbit.middle .orbit-close{opacity:.62}



/* 09 · 大标题复用同一打字引擎；完整原文占位，逐字层与光标不推动布局。 */
.gallery-title .page-title-line{position:relative;display:inline-block;color:inherit;max-width:100%;vertical-align:top}.page-title-space{visibility:hidden;white-space:pre}.page-title-typing{position:absolute;left:0;top:0;white-space:pre}.gallery-title .typewriter-text{color:inherit}.gallery-title.typewriter-finished .typewriter-caret{visibility:hidden;animation:none}
/* 手机长标题不加额外占位光标宽度，避免原本贴近窗口的整行标题横向溢出。 */
@media(max-width:700px){.gallery-title .page-title-line{letter-spacing:0}.gallery-title .page-title-space{font-size:inherit}.gallery-title .typewriter-caret{margin-left:0}}

/* 10 · 桌面星轨仪：画布绘制真实厚度与光影，链接投影到模型上方，纸面仍透出。 */
.instrument-canvas,.instrument-toolbar{display:none}
.star-chart[data-instrument=ready] .instrument-canvas{display:block;position:absolute;inset:0;width:100%;height:100%;z-index:0;touch-action:pan-y;cursor:grab;outline-offset:-4px}
.star-chart[data-instrument=ready]>.chart-layer{visibility:hidden}
.star-chart[data-instrument=ready] .map-portal{width:145px;padding:0;border-radius:50%;z-index:2}
.star-chart[data-instrument=ready] .portal-hit{width:110px;height:100px}
.star-chart[data-instrument=ready] .portal-hit .star-object{visibility:hidden}
.star-chart[data-instrument=ready] .portal-label{padding:4px 12px;background:#fff9e9e8;border:1px solid #c3af7b55;border-radius:3px;box-shadow:0 3px 12px #7764400b;white-space:nowrap;pointer-events:none}
.star-chart[data-instrument=ready] .portal-label>span:first-child{color:#5b7180;font-size:13px}
.star-chart[data-instrument=ready] .map-portal:is(:hover,:focus-visible,.guide-near,.instrument-hover) .portal-label{border-color:#ae8e4f;color:#665232;background:#fff9e9}
.star-chart[data-instrument=ready] .instrument-toolbar{position:absolute;top:8px;right:12px;display:flex;align-items:center;gap:18px;z-index:4;white-space:nowrap;color:#81909a;font-size:12px}
.instrument-toolbar>div{display:flex;gap:4px}.instrument-toolbar button{border:1px solid #c5b48360;background:#fffbf1d9;color:#61788a;padding:7px 10px;font:inherit;min-height:36px;cursor:pointer;border-radius:3px}.instrument-toolbar button:hover{background:#f0e5cd}.instrument-toolbar button:focus-visible{outline:1px solid #8c794f;outline-offset:3px}
.star-chart[data-instrument=ready] .chart-caption{display:none}
.star-chart[data-instrument=ready] .map-start{pointer-events:none}
.star-chart[data-instrument=ready] .start-caption{display:none}
.star-chart[data-instrument=ready] .author-entry{z-index:3}
@media(max-width:700px){.star-chart[data-instrument=ready] .map-portal{width:112px}.star-chart[data-instrument=ready] .portal-hit{width:85px;height:82px}.star-chart[data-instrument=ready] .portal-label{padding:3px 7px}.star-chart[data-instrument=ready] .portal-label>span:first-child{font-size:12px}.star-chart[data-instrument=ready] .instrument-toolbar{left:50%;right:auto;transform:translateX(-50%);gap:8px;font-size:11px}.instrument-toolbar button{padding:6px 8px}}
/* 手机仍以完整底座宽度构图，但缩短空舞台，减少标题与模型之间的无效留白。 */
@media(max-width:700px){body[data-gallery-mode=map] .gallery-map .star-chart[data-instrument=ready]{height:460px}}
