/* 作品星系样稿 v2：一片连续星空（开场 → 代表作 → 职业轨道 → 双鱼座），最后纸面盖上来放全部作品 */
.gx-hidden{display:none!important}

/* ---------- 同一片星空：固定在最底层，开场和各屏都透明，不再有接缝 ---------- */
body[data-page="portfolio"]{background:transparent}
#gxSpace{position:fixed;inset:0;z-index:-1;overflow:hidden;background:#05060d}
#gxSpace #gxMap{opacity:.5;filter:none}
#gxSpace .neb{position:absolute;inset:-8% -4%;background-size:cover;background-position:center;will-change:transform;animation:gxNeb 16s ease-in-out infinite alternate}
@keyframes gxNeb{from{opacity:.16}to{opacity:.34}}
#gxSpace .dim{position:absolute;inset:0;background:#05060d;opacity:0}
#gxSpace .neb{background-image:url(/assets/home/tex/nebula_carina_2k.webp);-webkit-mask-image:radial-gradient(60% 60% at 18% 78%,#000,transparent 72%);mask-image:radial-gradient(60% 60% at 18% 78%,#000,transparent 72%)}
#gxSpace canvas{position:absolute;inset:0;width:100%;height:100%}
#gxSpace .neb{contain:strict}
#gxSpace::after{content:"";position:absolute;inset:0;background:radial-gradient(80% 70% at 50% 45%,transparent 40%,rgba(5,6,13,.62))}
body[data-page="portfolio"] .page-head{background:none;padding-bottom:40px;overflow-x:clip;overflow-y:visible;z-index:1}
body[data-page="portfolio"] .page-head::after,body[data-page="portfolio"] .page-head .sky{display:none}
.page-head .planet{scale:var(--ps,1);opacity:var(--po,1)}
body.gxdark header.top.solid{background:transparent;color:#f4f2ed;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}
body[data-page="portfolio"] footer.foot{margin-top:0;border-radius:0}

.gx-bleed{margin-inline:calc(50% - 50vw)}
.gx-eyebrow{font:500 14px var(--f-mono);letter-spacing:.1em;color:var(--acc-ink);margin:0 0 12px}
.gx-dark .gx-eyebrow,.st-head .gx-eyebrow{text-shadow:0 0 16px rgba(5,6,13,.9),0 1px 2px rgba(5,6,13,.8)}
.gx-dark .gx-sub{text-shadow:0 1px 8px rgba(5,6,13,.85)}
.gx-title{font:900 clamp(28px,3.6vw,44px)/1.15 var(--f-cn);letter-spacing:-.01em;margin:0 0 10px}
.gx-sub{color:var(--muted);max-width:56ch;margin:0}
.gx-sec{max-width:var(--wrap);margin:0 auto;padding:0 var(--gx) 96px}
.gx-dark{--fg:#f4f2ed;--muted:rgba(244,242,237,.76);--faint:rgba(244,242,237,.56);--line:rgba(244,242,237,.15);--acc-ink:#ffd27a;color:#f4f2ed;padding-top:120px;position:relative}

/* ---------- 文字逐步出现：和首页同一种，逐字升起；段落随滚动逐字点亮 ---------- */
.x{display:inline-block;white-space:pre}
.xt{perspective:600px}
.xt .x{transition:transform 1.1s var(--e-out),opacity .9s var(--e-out);transition-delay:min(calc(var(--c,0) * 34ms),1s)}
.xt.wait .x{transform:translateY(100%) rotate(5deg);opacity:0}
.xp .x{opacity:.16;transition:opacity .35s linear}
.xp .x.on{opacity:1}
.rise{transition:opacity .9s var(--e-out),transform .9s var(--e-out);transition-delay:calc(var(--i,0) * 70ms)}
.rise.wait{opacity:0;transform:perspective(900px) translateY(46px) rotateX(16deg)}

/* ---------- 第二屏：代表作舞台 ---------- */
.stage{position:relative;height:340vh;color:#f4f2ed}
.st-sticky{position:sticky;top:0;height:100vh;height:100svh;overflow:hidden}
.st-ring{position:absolute;left:var(--pvx);top:50%;width:calc(var(--R) * 2);height:calc(var(--R) * 2);margin:calc(var(--R) * -1) 0 0 calc(var(--R) * -1);border-radius:50%;border:1px solid rgba(244,242,237,.16);pointer-events:none}
.st-ring::before{content:"";position:absolute;inset:-46px;border-radius:50%;border:1px dashed rgba(244,242,237,.08)}
.st-sat{position:absolute;left:0;top:0;width:12px;height:12px;margin:-6px;border-radius:50%;background:var(--accent);box-shadow:0 0 14px 4px rgba(255,192,74,.55);will-change:transform}
.st-wheel{--pvx:150vw;--R:84vw;position:absolute;inset:0}
.st-card{position:absolute;left:var(--pvx);top:50%;width:min(50vw,720px);aspect-ratio:16/10;margin:calc(min(50vw,720px) * -.3125) 0 0 calc(min(50vw,720px) * -.5);border-radius:18px;overflow:hidden;cursor:pointer;box-shadow:0 24px 50px -24px rgba(0,0,0,.85),0 0 0 1px rgba(244,242,237,.14);will-change:transform,opacity;background:#11131f;backface-visibility:hidden}
.st-card img{width:100%;height:100%;object-fit:cover;object-position:top}
.st-copy{position:absolute;left:max(var(--gx),calc(50vw - 590px));top:50%;width:min(34vw,420px);height:0}
.st-txt{position:absolute;left:0;right:0;top:0;transform:translateY(-50%);pointer-events:none;visibility:hidden;transition:visibility 0s .5s}
.st-txt.on{pointer-events:auto;visibility:visible;transition-delay:0s}
.st-no{font:500 13px var(--f-mono);letter-spacing:.1em;color:#ffd27a;margin:0 0 14px}
.st-txt h3{font:900 clamp(30px,3.5vw,46px)/1.16 var(--f-cn);margin:0 0 12px}
.st-role{font-size:14px;color:rgba(244,242,237,.6);margin:0 0 12px}
.st-sum{color:rgba(244,242,237,.8);margin:0 0 22px;font-size:16px}
.st-txt .xt .x{transition:transform .6s var(--e-out),opacity .45s;transition-delay:calc(var(--c,0) * 26ms);filter:none}
.st-txt .xt.wait .x{filter:none;transform:translateY(70%)}
.st-txt:not(.on) .xt .x{transition-delay:0s;transition-duration:.2s}
.st-no,.st-role,.st-sum{opacity:0;transform:translateY(12px);transition:opacity .2s,transform .2s}
.st-txt.on .st-no,.st-txt.on .st-role,.st-txt.on .st-sum{opacity:1;transform:none;transition:opacity .5s .08s,transform .7s var(--e-out) .08s}
.st-txt.on .st-sum{transition-delay:.18s}
.st-go{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:9px 20px;border-radius:99px;background:var(--accent);color:var(--accent-ink);font-weight:500;font-size:14px;opacity:0;transform:translateY(12px);transition:opacity .5s .3s,transform .6s var(--e-out) .3s}
.st-txt.on .st-go{opacity:1;transform:none}
.st-go:hover{translate:4px 0}
.st-head{position:absolute;left:max(var(--gx),calc(50vw - 590px));top:calc(84px + env(safe-area-inset-top,0px));color:#ffd27a}
.st-head .gx-eyebrow{margin:0;color:#ffd27a}
.st-dots{position:absolute;right:max(var(--gxr),calc(50vw - 590px));bottom:30px;display:flex;gap:8px;align-items:center}
.st-dots i{width:26px;height:2px;background:rgba(244,242,237,.2);border-radius:2px;overflow:hidden;position:relative}
.st-dots i b{position:absolute;inset:0;background:var(--accent);transform:scaleX(0);transform-origin:left;will-change:transform}
.st-mobile{display:none}

/* ---------- 第三屏：职业轨道 · 彗星掠过五颗星 ---------- */
.orb{position:relative;margin-top:26px}
.orb-svg{display:block;width:100%;height:auto;overflow:visible}
.orb-dust circle{fill:#f4f2ed}
.orb-track{fill:none;stroke:rgba(244,242,237,.12);stroke-width:1;stroke-dasharray:2 8}
.orb-done{fill:none;stroke:rgba(255,210,122,.42);stroke-width:1.3}
.orb-tail{fill:none;stroke:#ffd27a;stroke-width:3;stroke-linecap:round;filter:blur(1.4px);opacity:.9}
.orb-tail2{fill:none;stroke:#ffe9c2;stroke-width:1.4;stroke-linecap:round}
.orb-sat{fill:#fff;filter:drop-shadow(0 0 10px #ffc04a) drop-shadow(0 0 22px #ffc04a)}
.os .core{fill:rgba(244,242,237,.42);transition:fill .5s,r .6s var(--e-out)}
.os .spike{fill:#ffe2b0;opacity:0;transform:scale(.2);transform-box:fill-box;transform-origin:center;transition:opacity .6s,transform .9s cubic-bezier(.34,1.6,.5,1)}
.os .pulse{fill:none;stroke:#ffc04a;opacity:0;transform-box:fill-box;transform-origin:center}
.os.on .core{fill:#fff;r:4}
.os.on .spike{opacity:1;transform:scale(1)}
.os.on .pulse{animation:gxPulse 1.4s var(--e-out) 1}
.os.on .spike{animation:gxTw 3.6s 1s ease-in-out infinite}
@keyframes gxPulse{0%{opacity:.9;transform:scale(.3)}100%{opacity:0;transform:scale(2.6)}}
@keyframes gxTw{0%,100%{opacity:1}50%{opacity:.62}}
.orb-year{font:500 12px var(--f-mono);fill:rgba(244,242,237,.62);text-anchor:middle;transition:fill .5s}
.orb-year.on{fill:#ffd27a}
.orb-list{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin-top:8px}
.orb-item{padding:16px 15px 15px;border-radius:16px;background:rgba(12,14,27,.82);border:1px solid rgba(244,242,237,.12);opacity:.34;transform:translateY(14px);transition:opacity .8s var(--e-out),transform .8s var(--e-out),border-color .5s}
.orb-item.on{opacity:1;transform:none;border-color:rgba(255,210,122,.3)}
.orb-item .y{font:500 12px var(--f-mono);color:#ffd27a;margin:0 0 8px}
.orb-item h3{font-size:16px;line-height:1.35;margin:0 0 2px}
.orb-item .r{font-size:12px;color:var(--faint);margin:0 0 8px}
.orb-item .l{font-size:13px;line-height:1.6;color:var(--muted);margin:0 0 10px}
.orb-links{display:flex;flex-wrap:wrap;gap:6px}
.orb-links :is(button,a){font-size:12px;line-height:1.3;padding:5px 9px;border-radius:99px;background:rgba(244,242,237,.1);color:#f4f2ed;transition:background .3s,color .3s}
.orb-links :is(button,a):hover{background:var(--accent);color:var(--accent-ink)}
.orb-rail{display:none}

/* ---------- 第四屏：双鱼座。点星放大，进入这颗星的作品系 ---------- */
.pisc{position:relative;margin-top:14px;min-height:min(62vw,560px)}
.pis-svg{display:block;width:100%;height:auto;overflow:visible;transition:transform 1s cubic-bezier(.7,0,.2,1),opacity .7s .25s}
.pisc.focus .pis-svg{transform:scale(7);opacity:0;pointer-events:none}
.pisc{will-change:transform,opacity;transform-origin:50% 40%}
.pis-line{fill:none;stroke:rgba(244,242,237,.42);stroke-width:1.1;stroke-dasharray:1;stroke-dashoffset:1}
.pis-s{fill:#f4f2ed;opacity:0;transition:opacity .45s}
.pis-a{cursor:pointer;opacity:0;transition:opacity .9s 1s}
.pisc.in .pis-a{opacity:1}
.pis-a .hit{fill:transparent}
.pis-a .gl{fill:rgba(255,192,74,.2);transform-box:fill-box;transform-origin:center;animation:gxBr 3.2s ease-in-out infinite}
.pis-a:nth-of-type(2n) .gl{animation-delay:1.1s}
.pis-a .c{fill:#fff;transition:r .4s var(--e-out),fill .3s}
.pis-a text{font:500 16px var(--f-cn);fill:#f4f2ed;text-anchor:middle}
.pis-a .n{font:500 11px var(--f-mono);fill:rgba(244,242,237,.62)}
.pis-a:hover .c,.pis-a:focus .c{fill:var(--accent);r:7}
.pis-a:hover text{fill:#ffd27a}
.pis-a:focus{outline:none}
@keyframes gxBr{0%,100%{transform:scale(.8);opacity:.6}50%{transform:scale(1.25);opacity:1}}
.pis-cap{position:absolute;right:0;bottom:6px;margin:0;font:12px var(--f-mono);color:rgba(244,242,237,.6)}
.fo{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .5s}
.pisc.focus .fo{opacity:1;pointer-events:auto;transition-delay:.6s}
.fo-core{position:relative;z-index:2;width:150px;height:150px;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;background:radial-gradient(closest-side,#fff8e8 0,#ffd27a 22%,rgba(255,170,60,.34) 48%,transparent 72%);color:#241600;font-weight:700}
.fo-core span{font-size:15px}
.fo-ring{position:absolute;left:50%;top:50%;width:min(86%,820px);height:430px;transform:translate(-50%,-50%);border:1px dashed rgba(244,242,237,.16);border-radius:50%}
.fo-w{position:absolute;left:calc(50% + var(--x));top:calc(50% + var(--y));width:118px;margin:-46px 0 0 -59px;text-align:center;color:#f4f2ed;opacity:0;scale:var(--dp,1);transform:scale(.3);transition:opacity .6s,transform .9s var(--e-out);transition-delay:0s}
.pisc.focus .fo-w{opacity:var(--do,1);transform:none;transition-delay:calc(.75s + var(--i) * 60ms)}
.fo-core::after{content:"";position:absolute;inset:-34px;border-radius:50%;background:radial-gradient(closest-side,rgba(255,192,74,.26),transparent);animation:gxBr 4s ease-in-out infinite;z-index:-1}
.fo-w .t{display:block;width:62px;height:62px;margin:0 auto 7px;border-radius:50%;overflow:hidden;background:radial-gradient(circle at 32% 28%,var(--c),#0c0e1b 76%);box-shadow:0 0 0 1px rgba(244,242,237,.2),0 0 22px rgba(255,192,74,.18);transition:transform .45s var(--e-out),box-shadow .3s}
.fo-w .t img{width:100%;height:100%;object-fit:cover;object-position:top}
.fo-w b{display:block;font-size:12.5px;font-weight:500;line-height:1.35}
.fo-w:hover .t{transform:scale(1.14);box-shadow:0 0 0 2px var(--accent),0 0 26px rgba(255,192,74,.5)}
.fo-back{position:absolute;left:0;top:0;z-index:3;padding:8px 14px;border-radius:99px;background:rgba(244,242,237,.12);color:#f4f2ed;font-size:13px;transition:background .3s}
.fo-back:hover{background:var(--accent);color:var(--accent-ink)}

/* ---------- 纸面：全部作品 ---------- */
.gx-horizon{position:relative;z-index:1;height:0;opacity:0;pointer-events:none}
.gx-horizon::before{content:"";position:absolute;left:0;right:0;bottom:0;height:260px;background:radial-gradient(60% 100% at 50% 100%,rgba(255,196,110,.5),rgba(255,160,70,.14) 46%,transparent 74%)}
.gx-paper{position:relative;z-index:2;background:var(--paper);border-radius:34px 34px 0 0;padding:84px calc(50vw - 50%) 30px;will-change:transform;transform-origin:50% 0}
.all-bar{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:6px}
.all-state{font-size:14px;color:var(--muted);margin:6px 0 0;min-height:1.6em}
.all-state button{color:var(--acc-ink);text-decoration:underline;text-underline-offset:3px;margin-left:8px}
.fbar{position:sticky;top:0;z-index:6;display:flex;align-items:center;gap:8px;padding:12px 0;margin-bottom:12px;background:var(--paper)}
.fcats{display:flex;gap:6px;flex:1;min-width:0;overflow-x:auto;scrollbar-width:none}
.fcats::-webkit-scrollbar{display:none}
.fcats button{flex:none;padding:7px 13px;border-radius:99px;font-size:13px;color:var(--muted);background:var(--paper-2);transition:background .3s,color .3s}
.fcats button b{font:500 11px var(--f-mono);margin-left:5px;opacity:.6}
.fcats button[aria-pressed="true"]{background:var(--ink);color:var(--paper)}
.fsearch{flex:0 0 170px;height:34px;padding:0 13px;border:1px solid var(--line);border-radius:99px;background:var(--paper-3);font:13px var(--f-cn);color:var(--fg)}
.fsearch:focus{outline:2px solid var(--accent);outline-offset:1px}
.gx-seg{flex:none;display:inline-flex;padding:3px;background:var(--paper-2);border-radius:99px}
.gx-seg button{padding:6px 13px;border-radius:99px;font-size:13px;color:var(--muted);transition:background .3s,color .3s}
.gx-seg button[aria-pressed="true"]{background:var(--ink);color:var(--paper)}
.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:26px 20px}
.grid.hide{display:none}
.gc{cursor:pointer;min-width:0}
.gc:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:16px}
/* 统一封面模板：分类色 + 星轨 + 同一位置的窗口，截图和文字都装进窗口 */
.cov{position:relative;aspect-ratio:16/10;border-radius:16px;overflow:hidden;background:radial-gradient(120% 120% at 88% 0%,color-mix(in oklab,var(--c) 72%,#10121f) 0,#0b0d19 74%);isolation:isolate;transition:box-shadow .4s}
.cov::after{content:"";position:absolute;inset:0;z-index:3;background:radial-gradient(240px circle at var(--mx,50%) var(--my,0%),rgba(255,255,255,.14),transparent 70%);opacity:0;transition:opacity .35s;pointer-events:none}
.gc:hover .cov::after{opacity:1}
.gc:hover .cov{box-shadow:0 24px 44px -26px rgba(20,20,27,.75)}
.cov .rings{position:absolute;right:-16%;top:-30%;width:78%;fill:none;stroke:rgba(244,242,237,.16);transition:transform 1.5s var(--e-out)}
.cov .rings .p{fill:#ffd27a;stroke:none}
.gc:hover .rings{transform:rotate(50deg)}
.cov .win{position:absolute;left:11%;right:11%;top:19%;bottom:-8%;border-radius:10px 10px 0 0;overflow:hidden;background:#f7f5f1;box-shadow:0 18px 38px -12px rgba(0,0,0,.65),0 0 0 1px rgba(255,255,255,.14);transition:transform .8s var(--e-out)}
.gc:hover .win{transform:translateY(-3%)}
.cov .win::before{content:"";display:block;height:14px;background:#e8e5de;background-image:radial-gradient(circle at 10px 7px,#c9c5bc 2.5px,transparent 3px),radial-gradient(circle at 20px 7px,#c9c5bc 2.5px,transparent 3px),radial-gradient(circle at 30px 7px,#c9c5bc 2.5px,transparent 3px)}
.cov .win img{width:100%;height:calc(100% - 14px);object-fit:cover;object-position:top}
.cov .win .ty{display:flex;height:calc(100% - 14px);align-items:center;justify-content:center;padding:0 18px 8%;text-align:center;color:color-mix(in oklab,var(--c) 70%,#14141b)}
.cov .win .ty{flex-direction:column;gap:9px}
.cov .win .ty b{font:900 clamp(19px,2.15vw,29px)/1.22 var(--f-cn);letter-spacing:-.01em}
.cov .win .ty span{font:500 12.5px/1.45 var(--f-cn);color:#6b6a72;max-width:26ch}
.gc:hover .win .ty b{color:color-mix(in oklab,var(--c) 88%,#14141b)}
.gc .win .ty b{transition:color .35s}
.gc .m{font:11px var(--f-mono);color:var(--acc-ink);margin:12px 0 3px}
.gc h3{font-size:16px;line-height:1.35;margin:0}
.gc .s{font-size:14px;line-height:1.55;color:var(--muted);margin:3px 0 0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.dir{display:none}
.dir.show{display:block}
.dr{display:grid;grid-template-columns:44px minmax(0,1fr) 110px 84px 20px;gap:14px;align-items:center;padding:15px 10px;border-bottom:1px solid var(--line);cursor:pointer;transition:padding .45s var(--e-out),background .3s}
.dr:hover{padding-left:20px;background:var(--paper-3)}
.dr .n,.dr .y{font:12px var(--f-mono);color:var(--faint)}
.dr h3{font-size:16px;font-weight:500;margin:0;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dr .c{font-size:13px;color:var(--muted)}
.dr-pre{position:fixed;left:0;top:0;z-index:45;width:300px;aspect-ratio:16/10;border-radius:14px;overflow:hidden;pointer-events:none;opacity:0;transition:opacity .25s;box-shadow:0 26px 60px -20px rgba(5,6,13,.65);background:#10121d}
.dr-pre.on{opacity:1}
.dr-pre img{width:100%;height:100%;object-fit:cover;object-position:top}
.empty{display:none;padding:40px 0;text-align:center;color:var(--muted)}
.empty.show{display:block}

/* ---------- 页尾两个入口 ---------- */
.ends{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.end{position:relative;min-height:220px;padding:24px;border-radius:22px;overflow:hidden;background:var(--paper-3);border:1px solid var(--line);display:flex;flex-direction:column;justify-content:flex-end}
.end:hover{translate:0 -4px}
.end{transition:translate .6s var(--e-out),opacity .9s var(--e-out),transform .9s var(--e-out),filter .9s var(--e-out)}
.end h3{font-size:21px;line-height:1.3;margin:0 0 6px}
.end p{color:var(--muted);font-size:14px;margin:0}
.end .tag{position:absolute;left:24px;top:22px;padding:0;background:none;border:0;font:11px var(--f-mono);color:var(--acc-ink)}
.end.vault{background:#0b0d1a;color:#f4f2ed;border-color:transparent}
.end.vault p{color:rgba(244,242,237,.68)}
.end.vault .tag{color:#ffd27a}
.lock{position:absolute;right:26px;top:24px;width:78px;height:78px}
.lock circle{fill:none;stroke:rgba(244,242,237,.2);stroke-width:1.4}
.lock .r1{transform-origin:center;transition:transform 1.2s var(--e-out);stroke:var(--accent);stroke-dasharray:44 170}
.lock .r2{transform-origin:center;transition:transform 1.2s var(--e-out);stroke:#8fd0ff;stroke-dasharray:24 110}
.lock .sh{fill:none;stroke:#f4f2ed;stroke-width:2;stroke-linecap:round;transition:transform .55s var(--e-out)}
.lock rect{fill:#f4f2ed}
.end.vault:hover .r1{transform:rotate(190deg)}
.end.vault:hover .r2{transform:rotate(-160deg)}
.end.vault:hover .sh{transform:translateY(-3.5px) rotate(14deg);transform-origin:47px 34px}

/* 手机和“减少动态效果”：不固定画面 */
@media (max-width:820px),(prefers-reduced-motion:reduce){
  .stage{height:auto;padding:24px 0 10px}
  .st-sticky{position:relative;height:auto;overflow:visible}
  .st-wheel,.st-copy,.st-dots{display:none}
  .st-head{position:static;padding:0 var(--gx) 16px}
  .st-mobile{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;padding:0 var(--gx) 12px;scrollbar-width:none}
  .st-mobile::-webkit-scrollbar{display:none}
  .sm{flex:0 0 84%;max-width:440px;scroll-snap-align:center;border-radius:18px;overflow:hidden;background:rgba(14,16,30,.8);border:1px solid rgba(244,242,237,.12);cursor:pointer}
  .sm img{width:100%;aspect-ratio:16/10;object-fit:cover;object-position:top}
  .sm div{padding:14px 16px 16px}
  .sm h3{font-size:19px;line-height:1.3;margin:0 0 6px}
  .sm p{font-size:14px;line-height:1.6;color:rgba(244,242,237,.74);margin:0}
}
@media (max-width:820px){
  .gx-dark{padding-top:64px}
  .gx-sec{padding-bottom:60px}
  .gx-paper{padding-top:54px}
  .orb{padding-left:26px}
  .orb-svg{display:none}
  .orb-rail{display:block;position:absolute;left:7px;top:10px;bottom:10px;width:2px;background:rgba(244,242,237,.14);border-radius:2px}
  .orb-rail i{position:absolute;left:0;top:0;width:100%;height:calc(var(--p,0) * 100%);background:linear-gradient(transparent,#ffd27a)}
  .orb-rail b{position:absolute;left:50%;top:calc(var(--p,0) * 100%);width:12px;height:12px;margin:-6px;border-radius:50%;background:#fff;box-shadow:0 0 12px 4px rgba(255,192,74,.8)}
  .orb-list{grid-template-columns:minmax(0,1fr);margin-top:0}
  .pisc{min-height:0}
  .fo-w{animation:gxFloat 5s ease-in-out infinite alternate;animation-delay:calc(var(--i) * -.7s)}
  .pis-a text{font-size:34px}
  .pis-a .n{display:none}
  .pis-a .c{r:9}
  .pis-a .gl{r:30}
  .pisc.focus{min-height:560px}
  .pisc.focus .pis-svg{position:absolute;inset:0;}
  .fo{align-items:flex-start;padding-top:48px}
  .fo-ring{display:none}
  .fo-core{position:absolute;left:50%;top:44px;margin-left:-55px;width:110px;height:110px}
  .fo-core span{font-size:13px}
  .fo-list{position:absolute;left:0;right:0;top:170px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px 8px}
  .fo-w{position:static;width:auto;margin:0;transform:scale(.5)}
  .pis-cap{position:static;margin-top:8px;text-align:right}
  .fbar{flex-wrap:wrap}
  .fcats{flex:0 0 100%;margin-inline:calc(-1 * var(--gx));padding-inline:var(--gx);max-width:100vw}
  .fsearch{flex:1 1 auto;min-width:0}
  .grid{grid-template-columns:minmax(0,1fr);gap:22px}
  .dr{grid-template-columns:30px minmax(0,1fr) 16px}
  .dr .c,.dr .y{display:none}
  .ends{grid-template-columns:minmax(0,1fr)}
  .dr-pre{display:none}
}
@media (min-width:821px) and (max-width:1100px){.grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (prefers-reduced-motion:reduce){
  .orb-item,.rise.wait{opacity:1;transform:none;filter:none}
  .xt.wait .x{transform:none;opacity:1;filter:none}
  .xp .x{opacity:1}
  .pis-a .gl,.os.on .spike{animation:none}
}
@keyframes gxFloat{from{translate:0 -3px}to{translate:0 4px}}
@media (prefers-reduced-motion:reduce){#gxSpace .neb{animation:none}}
/* 地球完整留在屏幕内：比导航低一点、略小；滚动放大时顶部不动，往舞台方向长 */
@media (min-width:821px){
  body[data-page="portfolio"] .page-head{min-height:100vh;min-height:100svh}
  body[data-page="portfolio"] .page-head .planet{top:calc(50% + 36px);width:clamp(240px,29vw,400px);transform-origin:50% 0}
}

/* v5：去掉转盘后的代表作大图、快捷入口、悬停截图、低性能模式 */
.stage{display:block}
html:not(.gx-js) .stage{height:auto;padding:24px 0 40px}
html:not(.gx-js) .st-sticky{position:relative;height:auto;overflow:visible}
html:not(.gx-js) .st-head{position:static;padding:0 var(--gx) 16px}
html:not(.gx-js) .st-mobile{display:flex;gap:12px;overflow-x:auto;padding:0 var(--gx) 12px}
html:not(.gx-js) .sm{flex:0 0 min(84%,440px);color:#f4f2ed}
.gx-js:not(:has(body.gx-wheel)) .stage{height:auto}
.sm{color:#f4f2ed}
.gx-jump{display:flex;flex-wrap:wrap;gap:10px;margin-top:22px}
.gx-jump a{display:inline-flex;align-items:center;min-height:42px;padding:8px 18px;border-radius:99px;font-size:14px;font-weight:500;border:1px solid rgba(244,242,237,.3);color:#f4f2ed;transition:background .3s,color .3s,border-color .3s}
.gx-jump a:first-child{background:var(--accent);color:var(--accent-ink);border-color:transparent}
.gx-jump a:hover{background:#f4f2ed;color:#14141b;border-color:transparent}
.gx-fab{position:fixed;right:18px;bottom:16px;z-index:44;padding:9px 15px;border-radius:99px;background:rgba(244,242,237,.14);color:#f4f2ed;font-size:13px;border:1px solid rgba(244,242,237,.22);opacity:0;pointer-events:none;translate:0 10px;transition:opacity .35s,translate .45s var(--e-out),background .3s}
.gx-fab.on{opacity:1;pointer-events:auto;translate:0 0}
.gx-fab:hover{background:var(--accent);color:var(--accent-ink)}
.gc,.pk,.dr{display:block;color:inherit}
.dr{display:grid}
#selected,#all{scroll-margin-top:24px}
.picks{display:grid;grid-template-columns:1.5fr 1fr;grid-template-rows:auto auto;gap:22px 20px;margin-top:18px}
.pk{cursor:pointer;min-width:0}
.pk:first-child{grid-row:span 2}
.pk-i{display:block;aspect-ratio:16/10;border-radius:16px;overflow:hidden;background:#11131f;box-shadow:0 22px 44px -28px rgba(20,20,27,.7)}
.pk-i img{width:100%;height:100%;object-fit:cover;object-position:top;transition:transform 1.1s var(--e-out)}
.pk:hover .pk-i img{transform:scale(1.04)}
.pk .m{font:500 12px var(--f-mono);color:var(--acc-ink);margin:12px 0 3px}
.pk h3{font-size:19px;line-height:1.3;margin:0 0 3px}
.pk:first-child h3{font-size:25px}
.pk .s{font-size:14px;line-height:1.55;color:var(--muted);margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.cov .win .hv{position:absolute;left:0;right:0;top:14px;width:100%;height:calc(100% - 14px);object-fit:cover;object-position:top;opacity:0;transition:opacity .4s}
.gc:hover .win .hv.on{opacity:1}
.gx-low #gxSpace .neb,.gx-low .pis-a .gl,.gx-low .os.on .spike{animation:none}
@media (max-width:820px){
  .picks{grid-template-columns:minmax(0,1fr)}
  .pk:first-child{grid-row:auto}
  .pk:first-child h3{font-size:19px}
  .gx-fab{right:12px;bottom:12px}
}

/* 目录：沿用线上排版（序号、缩略图、标题、摘要、状态、分类、年份），缩略图换成纯文字封面 */
.dr{grid-template-columns:34px 132px minmax(0,1fr) 92px 56px 20px;gap:18px;padding:16px 10px;border-radius:14px;align-items:center}
.dr .th{display:flex;align-items:center;justify-content:center;height:82px;padding:12px 8px 0;border-radius:10px;overflow:hidden;background:radial-gradient(120% 120% at 88% 0%,color-mix(in oklab,var(--c) 72%,#10121f) 0,#0b0d19 74%)}
.dr .th i{display:flex;align-items:center;justify-content:center;width:100%;height:100%;padding:0 7px;border-radius:7px 7px 0 0;background:#f7f5f1;font:800 13px/1.3 var(--f-cn);font-style:normal;text-align:center;color:color-mix(in oklab,var(--c) 70%,#14141b);overflow:hidden}
.dr .tt{display:block;min-width:0}
.dr .tt h3{font-size:16.5px;font-weight:700;line-height:1.4;margin:0 0 2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dr .tt p{font-size:14px;line-height:1.5;color:var(--muted);margin:0 0 7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dr .st{display:flex;align-items:center;flex-wrap:wrap;gap:8px 10px;font-size:12.5px;color:var(--muted)}
.dr .st em{padding:2px 9px;border:1px solid rgba(20,20,27,.42);border-radius:99px;font-style:normal;color:var(--fg)}
.dr .st b{font-weight:400}
.dr .ar{transition:translate .4s var(--e-out)}
.dr:hover .ar{translate:5px 0}
@media (max-width:820px){
  .dr{grid-template-columns:86px minmax(0,1fr);gap:12px;padding:13px 2px;align-items:start}
  .dr .n,.dr .c,.dr .y,.dr .ar{display:none}
  .dr .th{height:64px;padding:9px 6px 0}
  .dr .th i{font-size:11px}
  .dr .tt h3,.dr .tt p{white-space:normal}
  .dr .tt p{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
}

/* 预渲染结构：增强内容只在轮盘模式显示；无脚本仍可读完整案例。 */
body:not(.gx-wheel) .st-wheel,body:not(.gx-wheel) .st-copy,body:not(.gx-wheel) .st-dots{display:none}
html:not(.gx-js) .gx-dark .xt{opacity:1;transform:none;filter:none}
html:not(.gx-js) .orb-item{opacity:1;transform:none}
html:not(.gx-js) .gx-static-cases{background:var(--paper);color:#14141b}
.gx-static-cases article{scroll-margin-top:72px}.gx-static-back,.gx-static-cases nav{display:block;padding:20px;color:#876224}

html:not(.gx-js) body[data-page="portfolio"]{background:#05060d}

/* 用户确认：仅阻止透明放大星图造成整页横向滚动，不裁切纸面内容。 */
html:has(body[data-page="portfolio"]),body[data-page="portfolio"]{overflow-x:clip}

/* 用户确认：吸附栏避开主站固定导航，布局与动效保持样稿参数。 */
body[data-page="portfolio"] .fbar{top:calc(70px + env(safe-area-inset-top,0px))}
@media(max-width:520px){body[data-page="portfolio"] .fbar{top:calc(66px + env(safe-area-inset-top,0px))}}
body[data-page="portfolio"].nav-hidden .fbar{top:env(safe-area-inset-top,0px)}
