:root{--bg: #0b0d10;--bg-soft: #101317;--elev: rgba(23, 27, 33, .72);--elev-solid: #171b21;--line: rgba(255, 255, 255, .08);--line-strong: rgba(255, 255, 255, .16);--text: #e9e7e3;--text-dim: #a3a9b2;--text-faint: #6d747e;--gold: #d8b25f;--gold-2: #f0d493;--gold-soft: rgba(216, 178, 95, .14);--danger: #e2685f;--radius: 14px;--radius-sm: 10px;--shadow: 0 18px 48px rgba(0, 0, 0, .45);--topbar-h: 62px;--rail-w: 252px;--panel-w: 348px;--ease: cubic-bezier(.22, .61, .36, 1)}*{box-sizing:border-box}[hidden]{display:none!important}html,body{height:100%;margin:0;background:var(--bg);color:var(--text);font-family:PingFang SC,Microsoft YaHei,Hiragino Sans GB,system-ui,-apple-system,Segoe UI,sans-serif;font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased;overscroll-behavior:none;-webkit-text-size-adjust:100%;text-size-adjust:100%}body{overflow:hidden}.app{height:100dvh;display:grid;grid-template-columns:var(--rail-w) minmax(0,1fr) var(--panel-w);grid-template-rows:var(--topbar-h) minmax(0,1fr);grid-template-areas:"top top top" "rail stage panel";gap:0}.topbar{grid-area:top;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 18px;border-bottom:1px solid var(--line);background:linear-gradient(180deg,#14181ee6,#0d1014e6);backdrop-filter:blur(12px);z-index:40}.brand{display:flex;align-items:center;gap:11px;min-width:0}.brand-mark{width:34px;height:34px;flex:none;display:grid;place-items:center;border-radius:9px;background:linear-gradient(145deg,var(--gold-2),#a9803a);color:#1b1508;font-family:Songti SC,STSong,"Source Han Serif SC","Noto Serif SC",SimSun,Georgia,serif;font-weight:700;font-size:17px;box-shadow:0 4px 14px #d8b25f47}.brand-text{display:flex;flex-direction:column;line-height:1.25;min-width:0}.brand-text strong{font-family:Songti SC,STSong,"Source Han Serif SC","Noto Serif SC",SimSun,Georgia,serif;font-size:15px;letter-spacing:.06em}.brand-text span{font-size:11px;color:var(--text-faint);letter-spacing:.14em}.topbar-actions{display:flex;align-items:center;gap:8px}.btn{display:inline-flex;align-items:center;gap:7px;height:34px;padding:0 13px;border:1px solid var(--line);border-radius:9px;background:#ffffff09;color:var(--text);font-size:13px;font-family:inherit;cursor:pointer;transition:background .18s var(--ease),border-color .18s var(--ease),transform .12s var(--ease)}.btn:hover{background:#ffffff14;border-color:var(--line-strong)}.btn:active{transform:translateY(1px)}.btn.icon-only{padding:0;width:34px;justify-content:center}.btn.primary{background:linear-gradient(145deg,#d8b25feb,#a8803aeb);border-color:#f0d49380;color:#1b1508;font-weight:600}.btn.primary:hover{filter:brightness(1.08)}.btn[disabled]{opacity:.4;pointer-events:none}.ico{width:16px;height:16px;flex:none;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.ico.big{width:30px;height:30px;stroke-width:1.4}.rail{grid-area:rail;border-right:1px solid var(--line);background:var(--bg-soft);display:flex;flex-direction:column;min-height:0;z-index:20}.rail-head{display:flex;align-items:baseline;justify-content:space-between;padding:16px 16px 10px}.rail-head h2{margin:0;font-size:12px;letter-spacing:.2em;color:var(--text-dim);font-weight:600}.count{font-size:11px;color:var(--text-faint);font-variant-numeric:tabular-nums}.rail-list{flex:1;overflow-y:auto;padding:0 10px 10px;display:flex;flex-direction:column;gap:6px}.rail-foot{padding:11px 16px 14px;border-top:1px solid var(--line);color:var(--text-faint);font-size:11px}.rail-foot p{margin:0}.rail-foot code{background:#ffffff0f;padding:1px 5px;border-radius:4px;font-size:10.5px;color:var(--gold)}.card{display:flex;align-items:center;gap:11px;padding:8px;border-radius:var(--radius-sm);border:1px solid transparent;background:transparent;cursor:pointer;text-align:left;width:100%;color:inherit;font-family:inherit;transition:background .18s var(--ease),border-color .18s var(--ease)}.card:hover{background:#ffffff0b}.card.active{background:var(--gold-soft);border-color:#d8b25f52}.card-thumb{width:52px;height:52px;flex:none;border-radius:8px;overflow:hidden;border:1px solid var(--line);background:radial-gradient(120% 90% at 30% 20%,rgba(216,178,95,.16),transparent 60%),linear-gradient(150deg,#1e232a,#12151a);display:grid;place-items:center;position:relative}.card-thumb img{width:100%;height:100%;object-fit:cover;display:block}.card-thumb .ph{font-family:Songti SC,STSong,"Source Han Serif SC","Noto Serif SC",SimSun,Georgia,serif;font-size:17px;color:#d8b25f8c}.card-meta{min-width:0;flex:1}.card-name{font-size:13.5px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card-sub{font-size:11px;color:var(--text-faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;gap:6px}.card-sub.badge-local{color:var(--gold)}.stage-wrap{grid-area:stage;display:flex;flex-direction:column;min-width:0;min-height:0;background:var(--bg)}.stage{position:relative;flex:1;min-height:0;overflow:hidden;touch-action:none}.stage canvas{display:block;width:100%;height:100%;outline:none;touch-action:none}.stage.bg-showroom{background:radial-gradient(90% 70% at 50% 18%,rgba(216,178,95,.1),transparent 62%),radial-gradient(120% 100% at 50% 110%,#1b2028,#0b0d10 58%,#070809)}.stage.bg-studio{background:radial-gradient(120% 100% at 50% 40%,#2c313a,#1a1e24 55%,#101318)}.stage.bg-paper{background:radial-gradient(90% 80% at 50% 30%,#efe9dd,#ddd5c6 55%,#c8bfae)}.stage.bg-paper .hud-title,.stage.bg-paper .hud-tip{color:#4a4438}.stage.bg-paper .hud-tip{opacity:.62}.stage.bg-paper .stage-hud{background:linear-gradient(180deg,rgba(255,255,255,.5),transparent)}.stage-hud{position:absolute;inset:0 0 auto;padding:18px 20px 28px;pointer-events:none;background:linear-gradient(180deg,rgba(0,0,0,.34),transparent);transition:color .2s}.hud-title{font-family:Songti SC,STSong,"Source Han Serif SC","Noto Serif SC",SimSun,Georgia,serif;font-size:19px;letter-spacing:.05em;text-shadow:0 2px 12px rgba(0,0,0,.55)}.hud-tip{font-size:11.5px;color:var(--text-dim);opacity:.75;margin-top:2px}.hotspot-layer{position:absolute;inset:0;pointer-events:none}.hot{position:absolute;transform:translate(-50%,-50%);pointer-events:auto;cursor:pointer;z-index:6}.hot-dot{width:22px;height:22px;border-radius:50%;border:1.5px solid rgba(255,255,255,.85);background:#d8b25fe6;box-shadow:0 0 0 4px #d8b25f29,0 4px 14px #00000073;display:grid;place-items:center;transition:transform .18s var(--ease),box-shadow .18s var(--ease)}.hot-dot:after{content:"";width:6px;height:6px;border-radius:50%;background:#1b1508}.hot:hover .hot-dot,.hot.open .hot-dot{transform:scale(1.18);box-shadow:0 0 0 7px #d8b25f33,0 6px 18px #00000080}.hot.occluded{opacity:.28}.hot.behind{display:none}.hot-card{position:absolute;left:50%;bottom:calc(100% + 12px);transform:translate(-50%);width:214px;padding:11px 13px;border-radius:11px;background:#12151af0;border:1px solid var(--line-strong);box-shadow:var(--shadow);backdrop-filter:blur(10px);opacity:0;visibility:hidden;transition:opacity .18s var(--ease),transform .18s var(--ease)}.hot.open .hot-card{opacity:1;visibility:visible;transform:translate(-50%) translateY(0)}.hot.flip .hot-card{bottom:auto;top:calc(100% + 12px)}.hot-card h4{margin:0 0 4px;font-size:13px;color:var(--gold-2);font-family:Songti SC,STSong,"Source Han Serif SC","Noto Serif SC",SimSun,Georgia,serif;letter-spacing:.04em}.hot-card p{margin:0;font-size:12px;color:var(--text-dim);line-height:1.62}.loading{position:absolute;inset:0;display:grid;place-items:center;background:#090b0e8c;backdrop-filter:blur(3px);z-index:12}.loading-card{display:flex;flex-direction:column;align-items:center;gap:13px;width:216px}.spinner{width:26px;height:26px;border-radius:50%;border:2px solid rgba(255,255,255,.14);border-top-color:var(--gold);animation:spin .85s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-text{font-size:12.5px;color:var(--text-dim);letter-spacing:.06em}.loading-bar{width:100%;height:3px;border-radius:3px;background:#ffffff1a;overflow:hidden}.loading-bar i{display:block;height:100%;width:0%;background:linear-gradient(90deg,var(--gold),var(--gold-2));transition:width .22s var(--ease)}.loading-bar.indet i{width:35%!important;animation:slide 1.15s ease-in-out infinite}@keyframes slide{0%{margin-left:-35%}to{margin-left:100%}}.dropzone{position:absolute;inset:10px;border:1.5px dashed rgba(216,178,95,.6);border-radius:18px;background:#d8b25f14;display:none;place-items:center;z-index:14;pointer-events:none}.dropzone.on{display:grid}.dropzone-inner{text-align:center;color:var(--gold-2)}.dropzone-inner p{margin:8px 0 0;font-size:13px;letter-spacing:.08em}.fatal{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);max-width:78%;padding:14px 18px;border-radius:12px;background:#3c1816eb;border:1px solid rgba(226,104,95,.45);color:#ffd9d5;font-size:13px;text-align:center;z-index:16}.toolbar{border-top:1px solid var(--line);background:#101317eb;padding:9px 14px;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.tool-group{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.chip{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 11px;border-radius:999px;border:1px solid var(--line);background:#ffffff09;color:var(--text-dim);font-size:12.5px;font-family:inherit;cursor:pointer;transition:all .18s var(--ease)}.chip:hover{color:var(--text);border-color:var(--line-strong)}.chip.active{color:#1b1508;background:linear-gradient(145deg,var(--gold-2),#c39b4c);border-color:transparent;font-weight:600}.seg{display:inline-flex;padding:2px;border-radius:999px;border:1px solid var(--line);background:#ffffff08}.seg-btn{border:0;background:transparent;color:var(--text-faint);font-size:12px;font-family:inherit;padding:5px 12px;border-radius:999px;cursor:pointer;transition:all .18s var(--ease)}.seg-btn:hover{color:var(--text)}.seg-btn.active{background:#ffffff1a;color:var(--text)}.panel{grid-area:panel;border-left:1px solid var(--line);background:var(--bg-soft);display:flex;flex-direction:column;min-height:0;z-index:20}.panel-scroll{flex:1;overflow-y:auto;padding:20px 20px 40px}.sheet-handle{display:none}.pd-cat{display:inline-block;padding:3px 10px;border-radius:999px;background:var(--gold-soft);color:var(--gold-2);font-size:11px;letter-spacing:.1em;margin-bottom:10px}.pd-name{margin:0 0 6px;font-family:Songti SC,STSong,"Source Han Serif SC","Noto Serif SC",SimSun,Georgia,serif;font-size:24px;font-weight:700;line-height:1.32;letter-spacing:.03em}.pd-origin{color:var(--text-faint);font-size:12px;margin-bottom:18px}.pd-story{font-size:13.5px;color:var(--text-dim);line-height:1.85;margin:0 0 20px;padding-left:12px;border-left:2px solid rgba(216,178,95,.34)}.pd-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:20px}.pd-cell{padding:10px 12px;border-radius:var(--radius-sm);background:#ffffff09;border:1px solid var(--line)}.pd-cell dt{font-size:11px;color:var(--text-faint);letter-spacing:.08em;margin-bottom:3px}.pd-cell dd{margin:0;font-size:13px;color:var(--text);overflow:hidden;text-overflow:ellipsis}.pd-cell.wide{grid-column:1 / -1}.pd-sec-title{font-size:11.5px;letter-spacing:.2em;color:var(--text-faint);margin:0 0 10px;font-weight:600}.hot-list{display:flex;flex-direction:column;gap:7px;margin-bottom:22px}.hot-item{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border-radius:var(--radius-sm);border:1px solid var(--line);background:#ffffff07;cursor:pointer;text-align:left;width:100%;color:inherit;font-family:inherit;transition:all .18s var(--ease)}.hot-item:hover{border-color:#d8b25f66;background:var(--gold-soft)}.hot-item.active{border-color:#d8b25f8c;background:var(--gold-soft)}.hot-idx{width:20px;height:20px;flex:none;border-radius:50%;display:grid;place-items:center;background:#d8b25f2e;color:var(--gold-2);font-size:11px;font-variant-numeric:tabular-nums}.hot-item-t{font-size:12.8px;font-weight:500}.hot-item-d{font-size:11.5px;color:var(--text-faint);line-height:1.6}.pd-actions{display:flex;gap:8px;flex-wrap:wrap}.pd-actions .btn{flex:1;justify-content:center;min-width:96px}.empty{color:var(--text-faint);font-size:13px;text-align:center;padding:40px 0}.dim-layer{position:absolute;inset:0;pointer-events:none}.dim-label{position:absolute;transform:translate(-50%,-50%);padding:3px 8px;border-radius:6px;background:#0b0d10db;border:1px solid rgba(216,178,95,.34);color:var(--gold-2);font-size:11px;font-variant-numeric:tabular-nums;white-space:nowrap}.gallery-strip{display:none}@media (max-width: 1360px){:root{--rail-w: 216px;--panel-w: 312px}}@media (max-width: 1120px){.app{grid-template-columns:minmax(0,1fr);grid-template-rows:var(--topbar-h) minmax(0,1fr) auto auto;grid-template-areas:"top" "stage" "strip" "panel"}body{overflow:auto}.app{height:auto;min-height:100dvh}.rail{display:none}.stage-wrap,.stage{min-height:58vh}.gallery-strip{display:flex;gap:8px;overflow-x:auto;overflow-y:hidden;padding:12px 14px;border-top:1px solid var(--line);background:var(--bg-soft);scrollbar-width:thin}.strip-card{flex:none;width:108px;border:1px solid var(--line);border-radius:var(--radius-sm);background:#ffffff08;overflow:hidden;cursor:pointer;color:inherit;font-family:inherit;padding:0;transition:all .18s var(--ease)}.strip-card.active{border-color:#d8b25f8c;background:var(--gold-soft)}.strip-thumb{height:66px;background:radial-gradient(120% 90% at 30% 20%,rgba(216,178,95,.16),transparent 60%),linear-gradient(150deg,#1e232a,#12151a);display:grid;place-items:center;overflow:hidden}.strip-thumb img{width:100%;height:100%;object-fit:cover;display:block}.strip-thumb .ph{font-family:"Noto Serif SC",Georgia,serif;font-size:15px;color:#d8b25f8c}.strip-name{padding:6px 8px;font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center}.panel{border-left:0;border-top:1px solid var(--line);max-height:none}.panel-scroll{padding:22px 20px 48px}.pd-name{font-size:22px}}@media (max-width: 720px){:root{--topbar-h: calc(56px + env(safe-area-inset-top)) }.topbar{padding:env(safe-area-inset-top) 12px 0;gap:10px}.brand-text span,.btn span{display:none}.btn{padding:0 10px}.btn.primary span{display:inline}.btn.primary{padding:0 12px}.stage-wrap{min-height:0}.stage{min-height:52vh}.hud-title{font-size:17px}.hud-tip{display:none}.toolbar{padding:8px 10px max(8px,env(safe-area-inset-bottom));gap:8px;justify-content:flex-start;flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.toolbar::-webkit-scrollbar{display:none}.toolbar .tool-group{gap:6px;flex:none}.chip span{display:none}.chip{padding:0 10px}.seg-btn{padding:5px 10px;font-size:11.5px}.panel{position:fixed;left:0;right:0;bottom:0;height:78dvh;transform:translateY(calc(78dvh - 128px));transition:transform .32s var(--ease);border-top:1px solid var(--line-strong);border-radius:18px 18px 0 0;box-shadow:0 -18px 44px #00000080;z-index:30}.panel.open{transform:translateY(0)}.sheet-handle{display:block;width:100%;height:30px;border:0;background:transparent;cursor:pointer;padding:calc(8px + env(safe-area-inset-top)) 0 6px;flex:none}.sheet-handle i{display:block;width:42px;height:4px;margin:0 auto;border-radius:4px;background:#ffffff3d}.panel-scroll{padding:6px 18px calc(60px + env(safe-area-inset-bottom));-webkit-overflow-scrolling:touch}.pd-name{font-size:20px}.pd-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.pd-actions .btn{min-width:0}.hot-card{width:178px}.stage-hud{padding:14px 14px 24px}.gallery-strip{padding-bottom:calc(140px + env(safe-area-inset-bottom))}}@media (prefers-reduced-motion: reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}.guide-tip{position:absolute;left:50%;bottom:calc(16px + env(safe-area-inset-bottom));transform:translate(-50%);background:#0b0d10eb;border:1px solid rgba(216,178,95,.34);color:var(--gold-2);font-size:12.5px;letter-spacing:.02em;padding:9px 16px;border-radius:999px;pointer-events:none;z-index:26;white-space:nowrap;box-shadow:0 8px 24px #00000073;transition:opacity .5s ease,transform .5s ease}.guide-tip.hide{opacity:0;transform:translate(-50%) translateY(8px)}@media (min-width: 721px){.guide-tip{display:none}}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:#ffffff1f;border-radius:8px}::-webkit-scrollbar-thumb:hover{background:#fff3}::-webkit-scrollbar-track{background:transparent}
