/* Exhibition inside the established midnight/gold universe; sky data and project layout are separate. */
.real-sky{position:fixed!important;inset:0!important;z-index:0!important;pointer-events:none;opacity:1!important;background:#060a13}.real-sky canvas{position:absolute;inset:0;width:100%;height:100%;opacity:.95}.sky-nebula{position:absolute;inset:-15%;background:radial-gradient(ellipse at 64% 38%,#22365766 0,transparent 43%),radial-gradient(ellipse at 45% 65%,#47375238 0,transparent 33%),radial-gradient(ellipse at 72% 67%,#594b332b 0,transparent 25%);transform:rotate(-19deg);filter:blur(18px)}.cosmos-body .universe-shade{background:linear-gradient(90deg,#060a1377,transparent 65%)}.cosmos-body .site-header,.cosmos-body main,.cosmos-body .site-footer{position:relative;z-index:1}.creation-galaxy-page .site-header{min-height:88px;border-color:#ffffff0c}.creation-galaxy{display:grid;grid-template-columns:155px minmax(0,1fr);gap:44px;padding-block:40px 50px;min-height:75vh}.galaxy-categories{position:sticky;top:30px;align-self:start;padding-top:16px}.galaxy-categories h2{font:500 12px var(--sans);letter-spacing:.12em;color:#a6b5c7;margin:0 0 22px 12px}.galaxy-categories button{display:flex;justify-content:space-between;align-items:center;gap:12px;width:100%;min-height:43px;padding:10px 12px;text-align:left;border:0;border-radius:4px;background:transparent;color:#acb9cb;font:12px var(--sans);cursor:pointer}.galaxy-categories small{font-size:10px;color:#93a5bc}.galaxy-categories button:hover{color:#f0d6a8;background:#ffffff04}.galaxy-categories button[aria-pressed=true]{color:#efd6a4;background:linear-gradient(90deg,#b3945830,transparent)}.galaxy-gallery{min-width:0}.gallery-heading{display:flex;justify-content:space-between;align-items:center;gap:20px}.gallery-heading h1{font:500 34px/1.4 var(--serif);letter-spacing:.035em;margin:0}.gallery-heading p{font-size:12px;color:#aab9cb;margin-top:9px}.galaxy-search{display:flex;align-items:center;gap:8px;width:220px;border-bottom:1px solid #61708866}.galaxy-search input{width:100%;min-width:0;border:0;background:transparent;color:#ece4d4;padding:12px 0;font:12px var(--sans);outline-offset:4px}.galaxy-search button{background:transparent;border:0;color:#d7c296;min-height:36px;font:11px var(--sans)}.gallery-meta{display:flex;justify-content:space-between;color:#95a7bc;font-size:10px;margin:26px 0 10px}.galaxy-exhibits{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px 24px;align-items:center;padding:14px 0 34px}.galaxy-project{position:relative;min-width:0;animation:exhibit-float calc(8s + var(--slot)*2s) ease-in-out infinite;animation-delay:calc(var(--order)*-.7s);margin-block:calc(var(--slot)*5px) 0}.project-open{position:relative;display:flex;align-items:flex-start;gap:12px;width:100%;min-height:118px;padding:18px 8px 14px;text-align:left;border:0;border-radius:8px;background:radial-gradient(ellipse at 18% 38%,#7a91b00a,transparent 70%);color:#eae6df;font-family:var(--sans);cursor:pointer;transition:background .25s,color .25s}.project-open>img{flex-shrink:0;width:40px;height:40px;border-radius:10px;box-shadow:0 6px 20px #0004}.project-symbol{display:grid;place-items:center;flex-shrink:0;width:40px;height:40px;border-radius:10px;background:#354155;color:#e6cea5;font-size:13px}.project-caption{display:flex;flex-direction:column;gap:8px;min-width:0}.project-caption>strong{font-size:15px;line-height:1.5;font-weight:500;letter-spacing:.01em}.project-caption>span{font-size:11px;line-height:1.8;color:#afbdcc;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.project-caption>small{font-size:9px;line-height:1.7;color:#8fabc2}.project-caption>small>span{padding-inline:4px}.project-arrow{position:absolute;right:4px;top:18px;color:#ddbf88;opacity:0;font-size:14px}.project-open:hover,.galaxy-project.selected .project-open{background:radial-gradient(ellipse at 25% 30%,#7085a522,transparent 80%)}.project-open:hover .project-arrow,.galaxy-project.selected .project-arrow{opacity:1}.galaxy-project:hover,.galaxy-project:focus-within,.galaxy-project.selected{animation-play-state:paused}.galaxy-project:nth-child(3n+2){opacity:.88}.galaxy-project.selected{opacity:1}.galaxy-project::after{content:'';position:absolute;left:10%;top:50%;height:1px;width:75%;background:linear-gradient(90deg,transparent,#c1d9f899,transparent);pointer-events:none;opacity:0;transform:rotate(-18deg);transform-origin:right}.galaxy-project.arriving::after{animation:meteor-trace .65s ease-out both}.creation-detail{position:fixed;z-index:12;right:26px;top:115px;bottom:110px;width:340px;overflow:auto;padding:26px;background:#0a1322f7;border:1px solid #a6b4c12b;border-radius:12px;box-shadow:0 16px 60px #0008}.creation-detail #detail-close{display:block;margin-left:auto;min-height:36px;border:0;background:transparent;color:#c3cfe0;font:12px var(--sans);cursor:pointer}.creation-detail img{border-radius:12px}.detail-status{font-size:10px;color:#cdb687;margin-top:20px}.creation-detail h2{font:500 25px/1.5 var(--serif);margin:10px 0 16px}.detail-intro{font-size:13px;color:#dddcd8;line-height:1.9}.detail-copy{font-size:12px;line-height:1.9;color:#aebfd4;margin-top:20px}.detail-tags{display:flex;gap:8px;flex-wrap:wrap;margin-top:20px;color:#abc0d6;font-size:11px}.detail-tags span{padding:3px 7px;border:1px solid #3b4b61;border-radius:4px}.detail-enter{display:inline-flex;align-items:center;min-height:44px;margin-top:24px;color:#f2d29c;text-decoration:underline;text-underline-offset:7px;font-size:13px}.detail-qr{display:block;margin-top:18px;max-width:100%;height:auto}.detail-notice{font-size:12px;color:#b7c4d5;line-height:1.8;margin-top:24px}.sky-credit{position:relative;max-width:500px;color:#99afc4;font-size:10px}.sky-credit summary{cursor:pointer;min-height:28px;display:flex;align-items:center}.sky-credit p{font-size:11px;line-height:1.8;margin:8px 0}.sky-credit a{font-size:10px}.sky-toggle{border:0;background:transparent;color:#b7c8dc;font:11px var(--sans);min-height:36px;cursor:pointer}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.creation-galaxy-page :focus-visible{outline:2px solid #e3c38e;outline-offset:4px}.creation-galaxy-page [hidden]{display:none!important}.creation-galaxy-page #empty-results{padding:70px 20px;color:#b9c7d8}.creation-galaxy-page #empty-results h2{font:22px var(--serif);margin-bottom:14px}.creation-galaxy-page #empty-results button{margin-top:18px;background:transparent;color:#e5c18b;border:1px solid #655844;padding:10px 16px}.creation-galaxy-page .site-footer{border-color:#ffffff0b}.creation-galaxy-page .site-footer>p{display:none}@keyframes exhibit-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes meteor-trace{0%{opacity:0;translate:-30px 10px;scale:1.2}25%{opacity:.5}100%{opacity:0;translate:24px -8px;scale:.1}}
@media(max-width:1100px){.creation-galaxy{grid-template-columns:135px minmax(0,1fr);gap:24px}.galaxy-exhibits{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 20px}.gallery-heading h1{font-size:29px}.galaxy-search{width:175px}.creation-detail{right:20px;width:320px}}
@media(max-width:760px){.creation-galaxy-page .site-header{min-height:76px}.creation-galaxy-page .site-header nav{gap:12px}.creation-galaxy{display:flex;flex-direction:column;gap:24px;padding-top:24px}.galaxy-categories{position:static;display:flex;overflow-x:auto;width:100%;gap:4px;padding:0 0 6px;align-items:center}.galaxy-categories h2{flex-shrink:0;font-size:10px;margin:0 10px 0 0;letter-spacing:0}.galaxy-categories button{flex-shrink:0;width:auto;padding:8px;gap:8px;font-size:11px;min-height:36px}.gallery-heading{align-items:start;gap:16px}.gallery-heading h1{font-size:29px;white-space:nowrap}.gallery-heading p{font-size:10px;max-width:18em;line-height:1.8}.galaxy-search{width:135px}.gallery-meta{margin-top:22px}.galaxy-exhibits{grid-template-columns:1fr;gap:12px;padding-top:12px}.galaxy-project{margin:0}.galaxy-project:nth-child(even){margin-left:24px}.project-open{min-height:106px;padding:16px 12px}.project-open>img,.project-symbol{width:42px;height:42px}.project-caption>strong{font-size:16px}.project-caption>span{font-size:12px}.project-caption>small{font-size:10px}.creation-detail{top:auto;bottom:92px;left:12px;right:12px;width:auto;max-height:65dvh;padding:20px}.creation-detail h2{font-size:22px}.creation-galaxy-page .site-footer{gap:8px 12px}.sky-credit{flex-basis:100%;order:5}.sky-toggle{font-size:10px}.creation-galaxy-page .brand small{font-size:11px}}
@media(prefers-reduced-motion:reduce){.galaxy-project,.galaxy-project.arriving::after{animation:none!important}.project-open{transition:none}}

.sky-note{font:10px var(--sans);color:#a3b5c9}.cosmos-body[data-star-state=unavailable] .sky-note::after{content:" · 星表暂未载入"}.cosmos-body .real-sky{pointer-events:none}.cosmos-body .universe-hero{background:transparent}

@media(min-width:1101px){.galaxy-project:nth-child(3n+2){translate:0 21px;scale:.95}.galaxy-project:nth-child(3n){translate:0 -7px;scale:.98}.galaxy-project.selected{scale:1}}

/* Spatial gallery v2: independent floating exhibits; no rigid visual grid. */
.milky-panorama{position:absolute;inset:-22%;background:url('/assets/portfolio/stars/milky-way-eso.jpg') center/cover no-repeat;opacity:.25;transform:scale(1.25) rotate(-24deg);transition:opacity 1.6s,scale 2.2s;will-change:translate}
body[data-cosmic-scene=exhibition] .milky-panorama{opacity:.8;scale:1}
body[data-cosmic-scene=home] .milky-panorama{opacity:.24;scale:1.12}
.sky-nebula{opacity:.4}.real-sky canvas{opacity:.55}.sky-photo-credit{position:fixed;bottom:12px;left:20px;z-index:3;color:#c2cad5;font:10px var(--sans);text-shadow:0 2px 6px #000;background:#060a1380;padding:5px 8px;border-radius:4px}
.galaxy-exhibits{display:block;position:relative;padding:0;perspective:1100px;isolation:isolate;transition:height .65s ease}
.galaxy-project{position:absolute;margin:0!important;translate:none!important;scale:none!important;animation:none;opacity:1!important;transition:top .7s cubic-bezier(.16,1,.3,1),left .7s cubic-bezier(.16,1,.3,1);z-index:1}
.project-open{min-height:138px;padding:23px 19px;border-radius:25px;border:1px solid #b3cef926;background:linear-gradient(135deg,#17283bdd,#09121be8);box-shadow:0 18px 45px #0005,inset 0 1px #d1eaff12;transform:translate3d(calc(var(--px,0px)*var(--slot,1)*.6),calc(var(--py,0px)*var(--slot,1)*.6),0) scale(var(--depth,1));animation:bubble-drift calc(7s + var(--slot)*2s) ease-in-out infinite;animation-delay:calc(var(--order)*-.8s);transition:background .3s,box-shadow .3s;will-change:translate}
.project-open>img,.project-symbol{width:43px;height:43px;border-radius:13px}.project-caption>strong{font-size:16px;color:#fff5df}.project-caption>span{font-size:12px;color:#c4d0df}.project-caption>small{font-size:10px;color:#afc4dc}.project-arrow{right:12px;top:12px}
.galaxy-project:hover,.galaxy-project:focus-within,.galaxy-project.selected{z-index:5}.galaxy-project:hover .project-open,.galaxy-project:focus-within .project-open,.galaxy-project.selected .project-open{animation-play-state:paused;background:linear-gradient(135deg,#23364bef,#0b1725f5);box-shadow:0 24px 52px #0007,inset 0 1px #e1f3ff38}
.galaxy-project.selected .project-open{border-radius:25px 25px 0 0;border-bottom-color:transparent;transform:none;translate:none;animation:none}
.galaxy-project .creation-detail{position:relative;inset:auto;width:100%;max-height:none;overflow:visible;border-radius:0 0 25px 25px;margin-top:-1px;padding:18px 22px 26px;background:#0b1725f5;box-shadow:0 28px 50px #0007;border-color:#b3cef926;border-top:0}
.creation-detail h2{font-size:23px}.creation-detail img{max-width:100%}.detail-copy{margin-top:12px}.detail-status{margin-top:10px}
.galaxy-project::after{left:auto;right:75%;top:60%;width:170px;transform:rotate(32deg);background:linear-gradient(90deg,transparent,#bcdfffbb);box-shadow:0 2px 9px #a7d0ff66}
.galaxy-project.arriving::after{animation:arrival-tail 1.05s var(--arrival-delay,0ms) both}
@keyframes arrival-tail{0%{opacity:0;translate:90px 65px;scale:.2}20%{opacity:.9;scale:1}75%,100%{opacity:0;translate:-20px -20px;scale:.15}}
@keyframes bubble-drift{0%,100%{translate:0 0;rotate:-.35deg}50%{translate:0 -11px;rotate:.35deg}}
@media(max-width:760px){.milky-panorama{inset:-12% -60%;background-size:cover}.sky-photo-credit{left:12px;bottom:4px;font-size:9px;max-width:calc(100% - 24px)}.galaxy-exhibits{display:flex;flex-direction:column;gap:30px;padding:25px 0 60px;height:auto!important}.galaxy-project{position:relative!important;left:auto!important;top:auto!important;width:calc(100% - 24px)!important;transition:none}.galaxy-project:nth-child(even){align-self:flex-end}.project-open{padding:22px 18px;min-height:133px;transform:none}.creation-detail h2{font-size:22px}.galaxy-project .creation-detail{max-height:none}.gallery-heading{flex-wrap:wrap}.galaxy-search{width:100%}.gallery-meta{margin-top:18px}.creation-galaxy{gap:16px}}
@media(prefers-reduced-motion:reduce){.project-open{animation:none;transform:none}.milky-panorama,.galaxy-project,.galaxy-exhibits{transition:none}.galaxy-project::after{display:none}}

@media(max-width:760px){.sky-photo-credit{position:absolute;top:80px;bottom:auto;left:20px;background:#060a13b3}.creation-galaxy{padding-top:44px}}

.project-open{filter:brightness(calc(var(--depth,1)*1.5 - .5))}.galaxy-project:hover .project-open,.galaxy-project:focus-within .project-open,.galaxy-project.selected .project-open{filter:brightness(1)}

/* Compact moving project labels; content opens only on demand. */
.project-open{min-height:68px;padding:13px 14px;gap:10px;border-radius:22px;background:linear-gradient(135deg,#182b40c9,#0b1421c9);animation:project-roam calc(10s + var(--slot)*2s) ease-in-out infinite;animation-delay:calc(var(--order)*-1.7s)}
.project-open>img,.project-symbol{width:30px;height:30px;border-radius:9px;font-size:10px}.project-caption{align-self:center;gap:0}.project-caption>strong{font-size:13px;line-height:1.5}.project-caption>span,.project-caption>small{display:none}.project-arrow{font-size:11px;top:10px;right:8px}
.galaxy-project .creation-detail{min-width:260px;width:320px;max-width:calc(100vw - 40px);border-radius:18px;padding:18px;box-shadow:0 20px 65px #000b}.galaxy-project.selected{z-index:10}.galaxy-project.selected .project-open{border-radius:22px;border-bottom-color:#b3cef926}.galaxy-project:nth-child(4n) .creation-detail{margin-left:calc(100% - 320px)}
@keyframes project-roam{0%,100%{translate:-13px 6px;rotate:-1deg}25%{translate:4px -14px;rotate:0deg}50%{translate:17px -3px;rotate:1deg}75%{translate:0 13px;rotate:0deg}}
.sky-photo-credit,.milky-panorama{display:none!important}.real-sky canvas{opacity:1}.sky-nebula{opacity:.6;background:radial-gradient(ellipse at 65% 50%,#172f554d,transparent 65%)}
.sky-switcher{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:18px 0 8px;color:#b7c9df;font:11px var(--sans)}.sky-switcher label{display:flex;gap:8px;align-items:center}.sky-switcher select{background:#0c1729;color:#dceafa;border:1px solid #50627c;border-radius:6px;padding:7px 9px;font:11px var(--sans)}.sky-switcher a{color:#b5cbe4;text-decoration:underline;text-underline-offset:3px}.sky-status{font-size:10px;color:#a5b9d2;flex-basis:100%;line-height:1.7}.sky-switcher button{color:#d4e2f2;background:#102039;border:1px solid #435570;border-radius:6px;min-height:30px;padding:4px 9px}
@media(max-width:1150px) and (min-width:761px){.galaxy-project:nth-child(3n) .creation-detail{margin-left:calc(100% - 300px);width:300px}}
@media(max-width:760px){.galaxy-exhibits{gap:23px;padding-top:18px}.galaxy-project{width:72%!important;max-width:265px}.project-open{min-height:66px;padding:13px 15px}.project-caption>strong{font-size:14px}.galaxy-project .creation-detail{width:100%;min-width:0;margin-left:0!important;max-width:100%;padding:16px}.galaxy-project.selected{width:100%!important;max-width:none}.sky-switcher{gap:8px}.creation-galaxy{padding-top:24px}.gallery-meta{margin-top:15px}}
@media(prefers-reduced-motion:reduce){.project-open{animation:none!important}}

/* Labels travel between independent locations, instead of orbiting one anchor. */
@media(min-width:761px){.galaxy-project{translate:var(--travel-x,0px) var(--travel-y,0px)!important}.project-open{animation:none;translate:none;rotate:none}.galaxy-project.selected{translate:none!important}}
.sky-status:empty{display:none}.sky-switcher{margin-bottom:16px}.sky-attribution{font:10px var(--sans);color:#99aec7}

.sky-camera{display:inline-flex;gap:5px}.sky-camera button{min-width:30px}.sky-dragging,.sky-dragging *{cursor:grabbing!important;user-select:none}.sky-dragging .galaxy-project{pointer-events:none}

.atlas-attribution{display:block;color:#a6b9ce;font:10px/1.6 var(--sans);max-width:680px;margin:-5px 0 14px;text-decoration:none}.atlas-attribution:hover{text-decoration:underline}@media(max-width:760px){.atlas-attribution{font-size:9px}}

.sky-camera{flex-wrap:wrap}.sky-gesture-hint{flex-basis:100%;color:#b7c9df;font:11px/1.5 var(--sans)}
@media(max-width:760px){.sky-gesture-hint{display:none}.sky-camera button{min-height:40px;min-width:40px}}

/* Release12: one baseline for desktop sky controls, restrained contrast polish. */
.sky-gesture-hint{flex:0 0 auto;white-space:nowrap;color:#c2cfe0;font-weight:500}
.sky-switcher{align-items:center}.sky-switcher label,.sky-switcher button{font-weight:500}
.universe-bottom .sky-switcher{margin:0;gap:8px}
.universe-bottom .sky-note,.universe-scroll{color:#c2cfe0;font-weight:500;white-space:nowrap}
.gallery-heading p,.gallery-meta,.galaxy-categories button{color:#bdcadd}
.project-caption>strong{font-weight:600;color:#f2eadb}
.galaxy-categories button[aria-pressed=true]{color:#f0d296;font-weight:600;background:rgba(202,165,91,.17)}
.sky-switcher button:hover,.sky-switcher button:focus-visible{color:#d9f4f5;border-color:#83b9c6;background:#173046}
.sky-switcher select:focus-visible,.galaxy-categories button:focus-visible{outline:2px solid #cba765;outline-offset:3px}
@media(min-width:1100px){.universe-bottom{gap:16px}.universe-bottom .sky-switcher{flex-wrap:nowrap}.universe-bottom .sky-camera{flex-wrap:nowrap}}
@media(max-width:1099px) and (min-width:761px){.universe-bottom{flex-wrap:wrap}.universe-bottom .sky-switcher{flex-basis:100%}}
@media(max-width:760px){.sky-gesture-hint{display:none}}
