:root{--bg-deep: #0d0810;--bg-deeper: #06030a;--gold: #d4af37;--moonwhite: #e0e7ff;--vermilion: #ef4444;--ochre: #d97706;--jade: #2dd4bf;--rouge: #be185d;--indigo: #a78bfa;--paper: #f4ecd8;--paper-dark: #e8dcc0;--ink: #2a2018;--text-soft: #c9bfa8;--text-dim: #8a8070;--font-title: "Ma Shan Zheng", "STKaiti", "KaiTi", cursive;--font-body: "ZCOOL XiaoWei", "STSong", "SimSun", serif}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{width:100%;height:100%;overflow:hidden;background:var(--bg-deeper);font-family:var(--font-body);color:var(--text-soft);-webkit-font-smoothing:antialiased}canvas{display:block;touch-action:none}.app{position:relative;width:100vw;height:100vh;background:radial-gradient(ellipse at center,#15101e,#0d0810 55%,#06030a)}.brand{position:fixed;top:18px;left:24px;z-index:20;pointer-events:none;-webkit-user-select:none;user-select:none}.brand .title{font-size:30px;font-weight:700;letter-spacing:8px;color:var(--gold);text-shadow:0 0 18px rgba(212,175,55,.55);font-family:var(--font-title)}.brand .subtitle{font-size:12px;letter-spacing:4px;color:var(--text-dim);margin-top:2px}.search-wrap{position:fixed;top:18px;left:50%;transform:translate(-50%);z-index:20;width:min(440px,80vw)}.search-box{display:flex;align-items:center;gap:10px;background:#140e1cb8;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(212,175,55,.32);border-radius:999px;padding:10px 18px;box-shadow:0 4px 24px #0006,inset 0 0 12px #d4af370f}.search-box .icon{color:var(--gold);font-size:16px;flex-shrink:0}.search-box input{flex:1;background:transparent;border:none;outline:none;color:var(--text-soft);font-family:inherit;font-size:15px;letter-spacing:1px}.search-box input::placeholder{color:var(--text-dim)}.search-results{margin-top:8px;background:#120c1aeb;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid rgba(212,175,55,.22);border-radius:14px;overflow:hidden;max-height:60vh;overflow-y:auto}.search-results .group-label{padding:8px 16px 4px;font-size:11px;letter-spacing:3px;color:var(--text-dim);text-transform:uppercase}.search-results .item{display:flex;align-items:baseline;gap:10px;padding:9px 16px;cursor:pointer;border-bottom:1px solid rgba(255,255,255,.04);transition:background .15s}.search-results .item:hover,.search-results .item.active{background:#d4af371a}.search-results .item .name{color:var(--paper);font-size:15px}.search-results .item .meta{color:var(--text-dim);font-size:12px}.search-results .item .tag{font-size:10px;padding:1px 7px;border-radius:999px;border:1px solid currentColor}.search-empty{padding:16px;text-align:center;color:var(--text-dim);font-size:13px}.legend{position:fixed;left:24px;bottom:24px;z-index:20;background:#120c1aad;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid rgba(212,175,55,.2);border-radius:14px;padding:12px 14px}.legend .label{font-size:11px;letter-spacing:3px;color:var(--text-dim);margin-bottom:8px}.legend .galaxy-group{margin-bottom:10px}.legend .galaxy-name{font-size:15px;font-weight:600;cursor:pointer;-webkit-user-select:none;user-select:none;letter-spacing:2px;margin-bottom:4px;font-family:var(--font-title)}.legend .galaxy-name:hover{opacity:.85}.legend .items{display:flex;flex-direction:column;gap:4px;padding-left:6px}.legend .item{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:13px;color:var(--text-soft);opacity:.55;transition:opacity .15s;-webkit-user-select:none;user-select:none}.legend .item:hover{opacity:.85}.legend .item.active{opacity:1}.legend .item .dot{width:8px;height:8px;border-radius:50%;box-shadow:0 0 6px currentColor}.legend .hint{font-size:10px;color:var(--text-dim);margin-top:8px;letter-spacing:1px}.hints{position:fixed;right:24px;bottom:24px;z-index:20;font-size:11px;letter-spacing:1px;color:var(--text-dim);text-align:right;line-height:1.9;pointer-events:none}.hints kbd{background:#d4af371f;border:1px solid rgba(212,175,55,.25);border-radius:4px;padding:1px 6px;color:var(--text-soft);font-family:inherit}.detail{position:fixed;top:0;right:0;z-index:25;width:min(440px,92vw);height:100vh;padding:24px 28px 40px;overflow-y:auto;background:radial-gradient(circle at 20% 0%,rgba(212,175,55,.08),transparent 40%),linear-gradient(180deg,#f4ecd8f7,#e8dcc0f7);background-blend-mode:multiply;box-shadow:-20px 0 50px #00000080;color:var(--ink);transform:translate(100%);transition:transform .42s cubic-bezier(.2,.8,.2,1)}.detail.open{transform:translate(0)}.detail:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:.06;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>")}.detail .close{position:absolute;top:16px;right:18px;background:none;border:none;cursor:pointer;font-size:22px;color:var(--text-dim);line-height:1}.detail .close:hover{color:var(--ink)}.detail .genre-tag{display:inline-block;font-size:11px;letter-spacing:3px;padding:2px 10px;border-radius:999px;border:1px solid var(--gold);color:var(--gold)}.detail h1{font-size:34px;margin:12px 0 6px;color:var(--ink);letter-spacing:2px;font-family:var(--font-title)}.detail .author-line{font-size:15px;color:#5a4a35;margin-bottom:4px}.detail .author-line .dyn{color:var(--vermilion);margin-right:8px}.detail .intro{font-size:13px;color:#6b5a44;font-style:italic;margin:8px 0 18px;line-height:1.7}.detail .divider{height:1px;background:linear-gradient(90deg,transparent,var(--gold),transparent);opacity:.5;margin:16px 0}.detail .poem-body{font-size:17px;line-height:2.1;letter-spacing:1px;color:#322619;white-space:pre-wrap;text-align:center;font-family:var(--font-body)}.detail .section-title{font-size:13px;letter-spacing:3px;color:#8a6f3a;margin:26px 0 12px}.detail .related{display:flex;flex-direction:column;gap:8px}.detail .related-item{display:flex;align-items:center;gap:10px;padding:10px 12px;cursor:pointer;background:#d4af3714;border:1px solid rgba(212,175,55,.2);border-radius:10px;transition:background .15s,transform .15s}.detail .related-item:hover{background:#d4af372e;transform:translate(-3px)}.detail .related-item .dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.detail .related-item .t-name{font-size:15px;color:var(--ink)}.detail .related-item .t-meta{font-size:12px;color:#7a6648;margin-left:auto}.detail::-webkit-scrollbar{width:6px}.detail::-webkit-scrollbar-thumb{background:#8a6f3a66;border-radius:3px}.detail .novel-intro{font-size:14px;line-height:1.8;color:#5a4a35;text-align:left;margin-bottom:16px;padding:12px;background:#8a6f3a0f;border-radius:8px;border-left:3px solid var(--gold)}.detail .chapter-list{display:flex;flex-direction:column;gap:6px}.detail .chapter-item{display:flex;align-items:center;gap:10px;padding:10px 14px;cursor:pointer;background:#d4af370f;border:1px solid rgba(212,175,55,.15);border-radius:8px;transition:background .15s,transform .15s}.detail .chapter-item:hover{background:#d4af3729;transform:translate(-3px)}.detail .chapter-idx{font-size:11px;color:#8a6f3a;background:#8a6f3a1f;padding:2px 8px;border-radius:4px;font-variant-numeric:tabular-nums}.detail .chapter-name{font-size:14px;color:var(--ink);font-family:var(--font-body)}.detail .chapter-nav{margin-bottom:12px}.detail .chapter-back{background:none;border:1px solid rgba(138,111,58,.3);color:#5a4a35;padding:4px 14px;border-radius:6px;cursor:pointer;font-family:inherit;font-size:13px}.detail .chapter-back:hover{background:#d4af371f}.detail .chapter-title{font-size:20px;color:var(--ink);margin:10px 0 16px;font-family:var(--font-title);letter-spacing:2px}.detail .chapter-text{text-align:left;font-size:15px;line-height:2;letter-spacing:.5px}.loader{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;align-items:center;justify-content:center;background:var(--bg-deeper);color:var(--gold);font-size:14px;letter-spacing:6px}
