*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;background:#0a0a0f;color:#fff;overflow:hidden;height:100vh}.loading-page{position:fixed;top:0;left:0;width:100%;height:100%;background:linear-gradient(135deg,#0a0a1a,#1a1a2e,#0a0a1a);display:flex;align-items:center;justify-content:center;z-index:9999;transition:opacity .8s ease,visibility .8s ease}.loading-page.hidden{opacity:0;visibility:hidden}.loading-content{text-align:center;position:relative}.loading-title{font-size:48px;font-weight:700;margin-bottom:20px;letter-spacing:20px}.loading-char{display:inline-block;opacity:0;animation:charFadeIn .8s ease forwards;background:linear-gradient(135deg,#f59e0b,#ef4444);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;text-shadow:0 0 30px rgba(245,158,11,.5)}.loading-char:nth-child(1){animation-delay:.2s}.loading-char:nth-child(2){animation-delay:.4s}.loading-char:nth-child(3){animation-delay:.6s}.loading-char:nth-child(4){animation-delay:.8s}@keyframes charFadeIn{0%{opacity:0;transform:translateY(-20px) rotate(-10deg)}to{opacity:1;transform:translateY(0) rotate(0)}}.loading-subtitle{font-size:16px;color:#fff9;margin-bottom:40px;letter-spacing:4px;opacity:0;animation:fadeIn 1s ease 1s forwards}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.loading-verse{margin-bottom:50px;opacity:0;animation:fadeIn 1s ease 1.2s forwards}.verse-line{font-size:24px;font-weight:300;color:#fffc;margin:8px 0;letter-spacing:8px;font-family:KaiTi,STKaiti,serif}.loading-progress{width:300px;margin:0 auto;opacity:0;animation:fadeIn 1s ease 1.4s forwards}.progress-bar{width:100%;height:3px;background:#ffffff1a;border-radius:2px;overflow:hidden;position:relative}.progress-fill{height:100%;background:linear-gradient(90deg,#f59e0b,#ef4444,#f59e0b);background-size:200% 100%;animation:progressGradient 2s linear infinite;width:0%;transition:width .3s ease;border-radius:2px;box-shadow:0 0 10px #f59e0b80}@keyframes progressGradient{0%{background-position:0% 50%}to{background-position:200% 50%}}.progress-text{margin-top:15px;font-size:12px;color:#ffffff80;letter-spacing:2px}.loading-stars{position:absolute;width:100%;height:100%;top:0;left:0;pointer-events:none}.star{position:absolute;width:4px;height:4px;background:#fff;border-radius:50%;animation:twinkle 2s ease-in-out infinite;box-shadow:0 0 6px #fffc}.star:nth-child(1){top:20%;left:20%;animation-delay:0s}.star:nth-child(2){top:30%;right:25%;animation-delay:.5s}.star:nth-child(3){top:60%;left:15%;animation-delay:1s}.star:nth-child(4){bottom:25%;right:20%;animation-delay:1.5s}.star:nth-child(5){bottom:35%;left:30%;animation-delay:.8s}@keyframes twinkle{0%,to{opacity:.3;transform:scale(1)}50%{opacity:1;transform:scale(1.5)}}@media (max-width: 768px){.loading-title{font-size:32px;letter-spacing:12px}.verse-line{font-size:18px;letter-spacing:4px}.loading-progress{width:200px}.header{flex-direction:column;gap:15px;top:10px}.logo{padding:8px 16px}.logo-text{font-size:16px}.search-input{min-width:150px;font-size:12px}.poet-sidebar{top:150px;left:10px;width:160px}.poet-item{padding:8px 6px;font-size:11px}.poet-name{font-size:11px}.poet-count{font-size:9px}.control-panel{bottom:100px;left:50%;transform:translate(-50%);gap:10px}.control-btn{padding:6px 12px;font-size:12px}.sidebar-panel{width:280px}.detail-page{width:100%;margin-right:0}}@media (max-width: 480px){.loading-title{font-size:24px;letter-spacing:8px}.loading-subtitle{font-size:14px;letter-spacing:2px}.verse-line{font-size:16px;letter-spacing:2px}.loading-progress{width:160px}.header{gap:10px}.search-input{min-width:120px}.tab-btn{padding:6px 12px;font-size:12px}.poet-sidebar{top:140px;width:140px}.poet-item{padding:6px 4px}.poet-name{font-size:10px}.star{animation:none}.loading-char,.loading-subtitle,.loading-verse,.loading-progress{animation:none;opacity:1}}#app{width:100%;height:100%;position:relative}#starCanvas{position:absolute;top:0;left:0;width:100%;height:100%}.header{position:absolute;top:20px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:30px;z-index:10}.tabs{display:flex;gap:10px;background:#0009;padding:5px;border-radius:25px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.1)}.tab-btn{background:transparent;border:none;border-radius:20px;color:#ffffffb3;padding:8px 20px;font-size:14px;font-weight:600;cursor:pointer;transition:all .3s ease}.tab-btn:hover{color:#ffffffe6;background:#ffffff1a}.tab-btn.active{background:linear-gradient(135deg,#f59e0b,#d97706);color:#fff;box-shadow:0 0 15px #f59e0b4d}.search-bar{display:flex;align-items:center;background:#0009;border-radius:25px;padding:5px 15px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.1);box-shadow:0 0 20px #f59e0b1a}.search-input{background:transparent;border:none;outline:none;color:#ffffffe6;font-size:14px;padding:8px 10px;min-width:200px}.search-input::placeholder{color:#ffffff80}.search-btn{background:linear-gradient(135deg,#f59e0b,#d97706);border:none;border-radius:20px;color:#fff;padding:6px 16px;font-size:12px;font-weight:600;cursor:pointer;transition:all .3s ease;box-shadow:0 0 15px #f59e0b4d}.search-btn:hover{transform:translateY(-2px);box-shadow:0 0 25px #f59e0b80}.logo{background:#0009;padding:10px 20px;border-radius:12px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.1);animation:glow 3s ease-in-out infinite}@keyframes glow{0%,to{box-shadow:0 0 20px #f59e0b4d}50%{box-shadow:0 0 40px #f59e0b99}}.logo-text{font-size:18px;font-weight:600;letter-spacing:2px;background:linear-gradient(90deg,#f59e0b,#ec4899,#8b5cf6,#f59e0b);background-size:300% 100%;-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;animation:gradient-shift 4s ease infinite}@keyframes gradient-shift{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}.tabs{display:flex;background:#0009;padding:4px;border-radius:10px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.1)}.tab-btn{padding:8px 20px;border:none;background:transparent;color:#ffffffb3;font-size:14px;cursor:pointer;border-radius:6px;transition:all .3s ease}.tab-btn:hover{color:#ffffffe6;transform:translateY(-2px)}.tab-btn.active{background:linear-gradient(135deg,#f59e0b,#d97706);color:#fff;box-shadow:0 0 20px #f59e0b80}.poet-sidebar{position:fixed;top:100px;left:20px;width:200px;max-height:calc(100vh - 200px);background:#0a0a14e6;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-radius:16px;border:1px solid rgba(255,255,255,.1);z-index:100;overflow:hidden;transition:all .3s ease}.poet-sidebar.collapsed{width:50px;height:50px;max-height:50px}.poet-sidebar-header{display:flex;justify-content:space-between;align-items:center;padding:15px 18px;border-bottom:1px solid rgba(255,255,255,.1);background:#0000004d}.poet-sidebar-header h4{color:#fff;font-size:14px;font-weight:600;margin:0}.toggle-btn{background:#ffffff1a;border:none;color:#fffc;width:24px;height:24px;border-radius:6px;cursor:pointer;font-size:16px;line-height:1;display:flex;align-items:center;justify-content:center;transition:all .3s}.toggle-btn:hover{background:#fff3;color:#fff}.poet-sidebar.collapsed .poet-sidebar-header h4,.poet-sidebar.collapsed .poet-sidebar-body{display:none}.poet-sidebar-body{padding:15px;overflow-y:auto;max-height:calc(100vh - 280px)}.poet-list{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.poet-item{display:flex;flex-direction:column;align-items:center;gap:6px;padding:12px 8px;background:#ffffff0d;border-radius:10px;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);border:1px solid rgba(255,255,255,.08);cursor:pointer;transition:all .3s ease;font-size:12px;text-align:center}.poet-item:hover{background:#ffffff1f;border-color:#f59e0b66;transform:translateY(-2px);box-shadow:0 4px 15px #f59e0b33}.poet-dot{width:10px;height:10px;border-radius:50%;animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.7;transform:scale(1.2)}}.poet-name{font-size:12px;color:#fff;font-weight:500}.poet-count{color:#ffffff80;font-size:10px}.poet-sidebar-body::-webkit-scrollbar{width:4px}.poet-sidebar-body::-webkit-scrollbar-track{background:#ffffff08}.poet-sidebar-body::-webkit-scrollbar-thumb{background:#ffffff26;border-radius:2px}.poet-sidebar-body::-webkit-scrollbar-thumb:hover{background:#ffffff40}.legend{display:flex;gap:15px;padding:10px 15px;background:#00000080;border-radius:10px;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);border:1px solid rgba(255,255,255,.1)}.legend-item{display:flex;align-items:center;gap:6px;font-size:11px;color:#ffffffb3}.legend-line{width:20px;height:2px;border-radius:1px;animation:flow 2s linear infinite}@keyframes flow{0%{opacity:.5}50%{opacity:1}to{opacity:.5}}.tooltip{position:absolute;background:#000000e6;padding:15px;border-radius:10px;border:1px solid rgba(255,255,255,.2);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);pointer-events:none;opacity:0;transition:all .3s ease;z-index:100;max-width:280px;transform:translateY(10px)}.tooltip.visible{opacity:1;transform:translateY(0)}.tooltip-name{font-size:16px;font-weight:600;margin-bottom:5px;background:linear-gradient(90deg,#f59e0b,#ec4899);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.tooltip-role{font-size:12px;color:#fff9;margin-bottom:10px}.tooltip-desc{font-size:13px;line-height:1.6;color:#fffc}.footer-bar{position:absolute;bottom:20px;left:0;right:0;display:flex;align-items:center;justify-content:center;gap:30px;z-index:10;padding:0 20px}.icp{background:#000c;padding:8px 20px;border-radius:20px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(245,158,11,.5);display:flex;align-items:center;gap:8px;animation:icp-glow 3s ease-in-out infinite;box-shadow:0 0 15px #f59e0b4d;height:40px;box-sizing:border-box}.control-panel{position:absolute;bottom:120px;right:20px;left:auto;transform:none;display:flex;flex-direction:column;gap:15px;z-index:10}.control-btn{background:#0009;border:1px solid rgba(255,255,255,.2);border-radius:20px;color:#ffffffe6;padding:10px 20px;font-size:14px;cursor:pointer;transition:all .3s ease;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.control-btn:hover{background:#f59e0b4d;border-color:#f59e0b80;transform:translateY(-2px)}.control-btn.active{background:#f59e0b80;border-color:#f59e0b;box-shadow:0 0 15px #f59e0b4d}.icp{background:#000c;padding:12px 25px;border-radius:25px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:2px solid rgba(245,158,11,.5);display:flex;align-items:center;gap:10px;animation:icp-glow 3s ease-in-out infinite;box-shadow:0 0 20px #f59e0b4d}@keyframes icp-glow{0%,to{box-shadow:0 0 20px #f59e0b4d;border-color:#f59e0b80}50%{box-shadow:0 0 30px #f59e0b99;border-color:#f59e0bcc}}.icp-icon{font-size:18px;animation:icon-bounce 2s ease-in-out infinite}@keyframes icon-bounce{0%,to{transform:scale(1)}50%{transform:scale(1.2)}}.icp-text{color:#ffffffe6;font-size:14px;font-weight:600;letter-spacing:1px}.police-beian{background:#000c;padding:8px 20px;border-radius:20px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(59,130,246,.5);display:flex;align-items:center;gap:8px;animation:police-glow 3s ease-in-out infinite;box-shadow:0 0 15px #3b82f64d;height:40px;box-sizing:border-box}@keyframes police-glow{0%,to{box-shadow:0 0 20px #3b82f64d;border-color:#3b82f680}50%{box-shadow:0 0 30px #3b82f680;border-color:#3b82f6cc}}.police-icon-img{width:20px;height:20px;object-fit:contain;flex-shrink:0}.police-text{color:#ffffffe6;font-size:14px;font-weight:600;letter-spacing:1px}.copyright{background:#0009;padding:8px 20px;border-radius:20px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.1);display:flex;align-items:center;justify-content:center;height:40px;box-sizing:border-box}.copyright-text{color:#ffffffb3;font-size:12px;letter-spacing:1px}@media (max-width: 768px){.footer-bar{flex-direction:column;gap:10px;bottom:10px}.icp{padding:6px 12px}.icp-text{font-size:11px}.police-beian{padding:6px 12px}.police-text{font-size:11px}.copyright{padding:6px 12px}.copyright-text{font-size:10px}}.sidebar-panel{position:fixed;top:0;right:0;width:380px;height:100%;background:#0a0a14f2;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-left:1px solid rgba(255,255,255,.1);z-index:2000;transform:translate(100%);transition:transform .4s cubic-bezier(.4,0,.2,1);display:flex;flex-direction:column}.sidebar-panel.visible{transform:translate(0)}.sidebar-header{display:flex;justify-content:space-between;align-items:center;padding:20px 25px;border-bottom:1px solid rgba(255,255,255,.1);background:#0000004d}.sidebar-header h3{color:#fff;font-size:18px;font-weight:600;background:linear-gradient(90deg,#f59e0b,#ec4899);background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent}.close-btn{background:none;border:none;color:#fff9;font-size:24px;cursor:pointer;transition:color .3s;width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:50%}.close-btn:hover{color:#fff;background:#ffffff1a}.sidebar-body{flex:1;overflow-y:auto;padding:20px 25px}.poet-bio{background:#ffffff0d;border-radius:12px;padding:20px;margin-bottom:20px;border:1px solid rgba(255,255,255,.08)}.poet-bio h4{color:#f59e0b;font-size:14px;margin-bottom:10px;font-weight:600}.poet-bio p{color:#fffc;font-size:13px;line-height:1.6}.works-list-title{color:#fff9;font-size:12px;text-transform:uppercase;letter-spacing:1px;margin-bottom:15px}.works-list{display:flex;flex-direction:column;gap:10px}.work-item{background:#ffffff08;border-radius:10px;padding:16px 20px;border:1px solid rgba(255,255,255,.05);cursor:pointer;transition:all .3s ease}.work-item:hover{background:#ffffff14;border-color:#f59e0b4d;transform:translate(5px)}.work-title{color:#fff;font-size:15px;font-weight:500;margin:0}.work-preview{color:#ffffff80;font-size:12px;margin-top:8px;line-height:1.4;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;box-orient:vertical}.sidebar-body::-webkit-scrollbar{width:4px}.sidebar-body::-webkit-scrollbar-track{background:#ffffff08}.sidebar-body::-webkit-scrollbar-thumb{background:#ffffff26;border-radius:2px}.sidebar-body::-webkit-scrollbar-thumb:hover{background:#ffffff40}.detail-page{position:fixed;top:0;left:0;width:100%;height:100%;background:#05050afa;z-index:3000;transform:translate(100%);transition:transform .4s cubic-bezier(.4,0,.2,1);display:flex;flex-direction:column}.detail-page.visible{transform:translate(0)}.detail-header{display:flex;align-items:center;gap:20px;padding:20px 30px;border-bottom:1px solid rgba(255,255,255,.1);background:#0000004d}.back-btn{background:#ffffff1a;border:none;color:#fffc;padding:10px 20px;border-radius:8px;cursor:pointer;font-size:14px;transition:all .3s}.back-btn:hover{background:#fff3;color:#fff}.detail-header h3{color:#fff;font-size:18px;font-weight:600;flex:1}.detail-body{flex:1;overflow-y:auto;padding:40px;max-width:800px;margin:0 auto;width:100%}.detail-poet-name{color:#fff9;font-size:14px;margin-bottom:10px}.detail-work-title{color:#fff;font-size:32px;font-weight:600;margin-bottom:30px;background:linear-gradient(90deg,#f59e0b,#ec4899);background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent}.detail-work-content{color:#ffffffe6;font-size:20px;line-height:2;font-family:SimSun,STSong,serif;white-space:pre-wrap}.search-message{position:fixed;top:100px;left:50%;transform:translate(-50%);background:linear-gradient(135deg,#ef4444e6,#dc2626e6);color:#fff;padding:16px 32px;border-radius:12px;font-size:16px;font-weight:500;box-shadow:0 8px 32px #ef444466;z-index:10000;animation:slideDown .3s ease}.search-message.fade-out{opacity:0;transform:translate(-50%) translateY(-20px);transition:all .5s ease}@keyframes slideDown{0%{opacity:0;transform:translate(-50%) translateY(-20px)}to{opacity:1;transform:translate(-50%) translateY(0)}}
