:root{--bg-primary:#0f1923;--bg-secondary:#1a2332;--bg-panel:#1a2332d9;--text-primary:#fff;--text-secondary:#a0aec0;--text-muted:#718096;--accent:#00bcd4;--accent-hover:#00acc1;--border-color:#ffffff1a;--glass-shadow:0 8px 32px 0 #0000005e;--font-family:"Noto Sans SC", system-ui, -apple-system, sans-serif}body.light-theme{--bg-primary:#f5f7fa;--bg-secondary:#fff;--bg-panel:#ffffffe6;--text-primary:#1a202c;--text-secondary:#4a5568;--text-muted:#a0aec0;--accent:#0097a7;--accent-hover:#00838f;--border-color:#0000001a;--glass-shadow:0 4px 16px 0 #0000001a}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-family);background-color:var(--bg-primary);color:var(--text-primary);-webkit-font-smoothing:antialiased;overflow:hidden}#root{flex-direction:column;width:100vw;height:100vh;display:flex}.custom-marker{color:#fff;cursor:pointer;text-shadow:0 1px 2px #000c;border-radius:50%;justify-content:center;align-items:center;width:30px;height:30px;font-size:14px;font-weight:700;transition:transform .2s,z-index;display:flex;position:relative;box-shadow:0 4px 6px #0000004d,inset 0 0 0 2px #ffffff4d}@media (hover:hover){.custom-marker:hover{z-index:999!important;transform:scale(1.5)!important}}.marker-tooltip{background:var(--bg-secondary);color:var(--text-primary);white-space:nowrap;opacity:0;pointer-events:none;box-shadow:var(--glass-shadow);border:1px solid var(--border-color);z-index:1000;letter-spacing:.5px;text-shadow:none;border-radius:6px;padding:5px 10px;font-size:11px;font-weight:500;transition:opacity .2s cubic-bezier(.4,0,.2,1),transform .2s cubic-bezier(.4,0,.2,1);position:absolute;bottom:36px;left:50%;transform:translate(-50%)scale(.67)}.marker-tooltip:after{content:"";border-style:solid;border-width:4px;border-color:var(--bg-secondary) transparent transparent transparent;position:absolute;top:100%;left:50%;transform:translate(-50%)}@media (hover:hover){.custom-marker:hover .marker-tooltip{opacity:1;transform:translate(-50%)scale(.85)}}@media (width<=768px){.marker-tooltip{display:none!important}}.glass-panel{background:var(--bg-panel);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border-color);box-shadow:var(--glass-shadow)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.amap-sug-result{color:#fff!important;-webkit-backdrop-filter:blur(12px)!important;background:#1a2332eb!important;border:1px solid #ffffff1a!important;border-radius:8px!important;padding:4px 0!important;box-shadow:0 4px 16px #00000080!important}.auto-item{transition:background .2s;color:#fff!important;padding:8px 12px!important}.auto-item:hover{color:var(--accent)!important;background:#ffffff1a!important}.auto-item .auto-item-span{color:#a0aec0!important}body.light-theme .amap-sug-result{color:#1a202c!important;background:#fffffff2!important;border:1px solid #0000001f!important;box-shadow:0 4px 16px #00000026!important}body.light-theme .auto-item{color:#1a202c!important}body.light-theme .auto-item:hover{color:#0097a7!important;background:#0000000f!important}body.light-theme .auto-item .auto-item-span{color:#718096!important}.map-container{flex:1;width:100%;height:100%;position:relative}.amap-container{width:100%;height:100%}.amap-logo,.amap-copyright{display:none!important}.user-loc-marker{width:24px;height:24px;position:relative}.user-loc-core{z-index:2;background:#ff3d00;border:2px solid #fff;border-radius:50%;width:16px;height:16px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 0 4px #00000080}.user-loc-pulse{z-index:1;background:#ff3d0066;border-radius:50%;width:48px;height:48px;animation:1.5s infinite pulse;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}@media (width<=768px){.amap-toolbar{bottom:140px!important;right:10px!important}.amap-scalecontrol{bottom:130px!important;left:10px!important}.custom-marker{width:26px;height:26px;font-size:12px}}.search-bar{width:100%;position:relative}.search-input{border:1px solid var(--border-color);width:100%;color:var(--text-primary);background:#ffffff0d;border-radius:8px;outline:none;padding:10px 14px 10px 36px;font-size:14px;transition:all .2s}.search-input:focus{border-color:var(--accent);background:#ffffff1a;box-shadow:0 0 0 2px #00bcd433}.search-icon{color:var(--text-muted);pointer-events:none;position:absolute;top:50%;left:12px;transform:translateY(-50%)}.clear-btn{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;padding:4px;display:flex;position:absolute;top:50%;right:12px;transform:translateY(-50%)}.clear-btn:hover{color:var(--text-primary);background:#ffffff1a}@media (width<=768px){.search-input{padding:12px 14px 12px 38px;font-size:16px}}.sidebar{border-right:1px solid var(--border-color);background:var(--bg-primary);flex-direction:column;flex:1;width:100%;min-height:0;display:flex}.sidebar-header{border-bottom:1px solid var(--border-color);background:var(--bg-secondary);flex-shrink:0;padding:20px}.sidebar-header h1{color:var(--accent);align-items:center;gap:8px;margin-bottom:12px;font-size:1.2rem;font-weight:600;display:flex}.school-list{-webkit-overflow-scrolling:touch;flex:1;padding:10px;overflow-y:auto}.school-item{cursor:pointer;background:#ffffff08;border:1px solid #0000;border-radius:6px;align-items:center;margin-bottom:4px;padding:8px 12px;transition:all .2s;display:flex}.school-item:hover{background:#ffffff14}.school-item.selected{border-color:var(--accent);background:#00bcd41a}.school-rank-badge{color:#fff;border-radius:6px;justify-content:center;align-items:center;min-width:28px;height:28px;margin-right:10px;font-size:13px;font-weight:700;display:flex;box-shadow:0 2px 4px #0003}.school-info{flex:1;min-width:0}.school-name{text-overflow:ellipsis;white-space:nowrap;margin-bottom:2px;font-size:13px;font-weight:500;overflow:hidden}.school-meta{color:var(--text-muted);gap:6px;font-size:11px;display:flex}.school-grade{border-radius:4px;padding:1px 5px;font-size:10px;font-weight:500;line-height:1.2;display:inline-block}.school-grade.grade-aplus{color:#ff5252;background:#ff52521f;border:1px solid #ff525233}.school-grade.grade-atop{color:#ff9100;background:#ff91001f;border:1px solid #ff910040}.school-grade.grade-amid{color:gold;background:#ffd7001a;border:1px solid #ffd70033}.school-grade.grade-abot{color:#00e676;background:#00e6761a;border:1px solid #00e67633}.school-grade.grade-bplus{color:#40c4ff;background:#40c4ff1a;border:1px solid #40c4ff33}.school-grade.grade-b{color:#e040fb;background:#e040fb1a;border:1px solid #e040fb33}.school-grade.grade-new{color:#ff6e40;background:#ff6e4024;border:1px solid #ff6e4040;font-weight:700}.school-grade.grade-other{color:#b0bec5;background:#b0bec514;border:1px solid #b0bec526}body.light-theme .school-grade.grade-aplus{color:#d32f2f;background:#d32f2f0f;border-color:#d32f2f26}body.light-theme .school-grade.grade-atop{color:#e65100;background:#e651000f;border-color:#e6510026}body.light-theme .school-grade.grade-amid{color:#f57f17;background:#f57f170f;border-color:#f57f1726}body.light-theme .school-grade.grade-abot{color:#2e7d32;background:#2e7d320f;border-color:#2e7d3226}body.light-theme .school-grade.grade-bplus{color:#0288d1;background:#0288d10f;border-color:#0288d126}body.light-theme .school-grade.grade-b{color:#7b1fa2;background:#7b1fa20f;border-color:#7b1fa226}body.light-theme .school-grade.grade-new{color:#e64a19;background:#e64a190f;border-color:#e64a1926}body.light-theme .school-grade.grade-other{color:#546e7a;background:#546e7a0f;border-color:#546e7a26}@media (width<=768px){.sidebar{border-right:none}.sidebar-header{padding:12px 16px}.sidebar-header h1{margin-bottom:8px;font-size:1rem}.school-list{padding:6px 10px}.school-item{min-height:44px;margin-bottom:2px;padding:10px 12px}.school-name{font-size:14px}.school-meta{font-size:12px}}.info-panel-wrapper{pointer-events:none;z-index:20;justify-content:center;width:100%;padding:20px;display:flex;position:absolute;bottom:0;left:0}.info-panel{pointer-events:auto;width:100%;max-width:600px;box-shadow:var(--glass-shadow), 0 20px 40px #0003;border-radius:16px;flex-direction:column;transition:transform .45s cubic-bezier(.16,1,.3,1),max-height .4s cubic-bezier(.16,1,.3,1);display:flex;overflow:hidden;transform:translateY(150%)}.info-panel.visible{transform:translateY(0)}.info-panel.is-collapsed{cursor:pointer;max-height:125px;transition:transform .45s cubic-bezier(.16,1,.3,1),max-height .4s cubic-bezier(.16,1,.3,1),background-color .2s,box-shadow .2s}.info-panel.is-collapsed:hover{box-shadow:var(--glass-shadow), 0 8px 24px #00bcd426;background:#1e293bf2}body.light-theme .info-panel.is-collapsed:hover{box-shadow:var(--glass-shadow), 0 8px 20px #0097a71f;background:#fffffffa}.info-panel.is-expanded{height:80vh;max-height:80vh}.info-header{background:#00000040;border-bottom:1px solid #0000;flex-shrink:0;justify-content:space-between;align-items:center;padding:14px 20px 10px;transition:border-color .3s;display:flex}.info-panel.is-expanded .info-header{border-bottom:1px solid var(--border-color)}body.light-theme .info-header{background:#00000008}.info-title{flex:1;align-items:center;gap:10px;min-width:0;display:flex}.info-title h2{text-overflow:ellipsis;white-space:nowrap;letter-spacing:.3px;margin:0;font-size:1.15rem;font-weight:700;overflow:hidden}.info-grade{color:#fff;border-radius:20px;flex-shrink:0;padding:3px 8px;font-size:11px;font-weight:600;box-shadow:0 2px 4px #00000026}.rank-badge{background:var(--text-muted)}.grade-badge{background:var(--accent)}.grade-badge-new{animation:2.5s ease-in-out infinite pulse-glow-new;color:#fff!important;background:linear-gradient(135deg,#ff3d00,#ff9100)!important;padding:3px 10px!important;font-weight:800!important;box-shadow:0 0 10px #ff3d00a6,inset 0 0 0 1px #fff6!important}@keyframes pulse-glow-new{0%,to{transform:scale(1);box-shadow:0 0 6px #ff3d008c}50%{transform:scale(1.06);box-shadow:0 0 14px #ff3d00f2}}.info-header-actions{align-items:center;gap:6px;display:flex}.comment-jump-btn{background:linear-gradient(135deg, var(--accent,#00bcd4), #00838f);color:#fff;cursor:pointer;border:none;border-radius:14px;align-items:center;gap:4px;margin-right:4px;padding:4px 10px;font-size:11.5px;font-weight:700;transition:all .2s cubic-bezier(.16,1,.3,1);display:flex;box-shadow:0 2px 6px #00bcd44d}.comment-jump-btn:hover{transform:translateY(-1px)scale(1.04);box-shadow:0 4px 12px #00bcd473}.expand-toggle-btn{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;padding:6px;transition:all .3s cubic-bezier(.4,0,.2,1);display:flex}.expand-toggle-btn:hover{color:var(--text-primary);background:#ffffff14}body.light-theme .expand-toggle-btn:hover{background:#0000000d}.expand-toggle-btn svg{transition:transform .4s cubic-bezier(.16,1,.3,1)}.expand-toggle-btn.expanded svg{transform:rotate(180deg)}.close-btn{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;padding:6px;transition:all .2s cubic-bezier(.4,0,.2,1);display:flex}.close-btn:hover{color:var(--text-primary);background:#ffffff14;transform:rotate(90deg)}body.light-theme .close-btn:hover{background:#0000000d}.info-peek-summary{opacity:1;align-items:center;gap:16px;max-height:55px;padding:8px 20px 16px;transition:opacity .3s,max-height .3s,padding .3s;display:flex;overflow:hidden}.info-panel.is-expanded .info-peek-summary{opacity:0;pointer-events:none;max-height:0;padding-top:0;padding-bottom:0}.peek-stat-pill{border:1px solid var(--border-color);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#ffffff08;border-radius:20px;align-items:center;gap:8px;padding:4px 12px;font-size:11.5px;font-weight:500;transition:background-color .2s;display:flex;box-shadow:0 2px 6px #0000001a}.info-panel.is-collapsed:hover .peek-stat-pill{background:#ffffff0f}body.light-theme .peek-stat-pill{background:#00000005}body.light-theme .info-panel.is-collapsed:hover .peek-stat-pill{background:#0000000a}.peek-label{color:var(--text-secondary)}.peek-value{font-weight:700}.peek-expand-hint{color:var(--accent);opacity:.8;align-items:center;gap:6px;margin-left:auto;font-size:11px;font-weight:600;animation:2s ease-in-out infinite hintPulse;display:flex}.hint-arrow-svg{animation:2s ease-in-out infinite bounceUpDown;transform:rotate(180deg)}@keyframes hintPulse{0%,to{opacity:.65}50%{opacity:1}}@keyframes bounceUpDown{0%,to{transform:translateY(0)rotate(180deg)}50%{transform:translateY(-3px)rotate(180deg)}}.info-content{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;opacity:1;flex-direction:column;flex:1;gap:10px;min-height:0;padding:12px 14px;transition:opacity .3s,transform .3s;display:flex;overflow-y:auto}.info-panel.is-collapsed .info-content{opacity:0;pointer-events:none;max-height:0;padding:0;transform:translateY(10px)}.info-content::-webkit-scrollbar{width:5px}.info-content::-webkit-scrollbar-track{background:0 0}.info-content::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:4px}.info-content::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.info-section{border:1px solid var(--border-color);background:#ffffff05;border-radius:10px;flex-direction:column;gap:8px;padding:10px 12px;transition:border-color .25s,background-color .25s;display:flex}body.light-theme .info-section{background:#00000005}.section-title{color:var(--accent);text-transform:uppercase;letter-spacing:.8px;margin:0;font-size:10.5px;font-weight:700}.info-grid{grid-template-columns:repeat(2,1fr);gap:6px 14px;display:grid}.info-stat{flex-direction:column;gap:1px;display:flex}.info-stat .label{color:var(--text-muted);font-size:10.5px;font-weight:500}.info-stat .value{color:var(--text-primary);font-size:13px;font-weight:600}.font-accent{color:var(--accent)!important}.full-width{grid-column:span 2}.sub-ratio{color:var(--text-secondary);font-size:11.5px;font-weight:400}.prev-year-badge{border:1px solid var(--border-color);color:var(--text-secondary);vertical-align:middle;background:#ffffff14;border-radius:4px;margin-left:8px;padding:1px 6px;font-size:10px;font-weight:500;display:inline-block}body.light-theme .prev-year-badge{background:#0000000a}.qq-section{position:relative}.section-header-row{justify-content:space-between;align-items:center;display:flex}.group-count-badge{color:var(--accent);background:#00bcd426;border-radius:20px;padding:2px 7px;font-size:10px;font-weight:600}body.light-theme .group-count-badge{background:#0097a71f}.qq-groups-container{grid-template-columns:repeat(2,1fr);gap:8px;display:grid}.qq-group-pill{border:1px solid var(--border-color);cursor:pointer;-webkit-user-select:none;user-select:none;background:#ffffff08;border-radius:10px;justify-content:space-between;align-items:center;padding:8px 12px;transition:all .25s cubic-bezier(.16,1,.3,1);display:flex}body.light-theme .qq-group-pill{background:#00000004}.qq-group-pill:hover{border-color:var(--accent);background:#00bcd414;transform:translateY(-2px);box-shadow:0 4px 12px #00bcd41f}.qq-group-pill.copied{background:#4caf501a!important;border-color:#4caf50!important;box-shadow:0 4px 12px #4caf5026!important}.qq-pill-content{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.qq-num{color:var(--text-primary);letter-spacing:.5px;font-family:Consolas,Courier New,monospace;font-size:13.5px;font-weight:700}.qq-lbl{color:var(--accent);white-space:nowrap;text-overflow:ellipsis;margin-top:1px;font-size:10px;font-weight:600;overflow:hidden}.qq-copy-btn{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;margin-left:8px;padding:5px;transition:all .2s;display:flex}.qq-group-pill:hover .qq-copy-btn{color:var(--accent)}.qq-copy-btn:hover{background:#ffffff14;color:var(--text-primary)!important}body.light-theme .qq-copy-btn:hover{background:#0000000d}.copied-toast{color:#4caf50;font-size:10px;font-weight:700;animation:.25s cubic-bezier(.16,1,.3,1) fadeInToast}@keyframes fadeInToast{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}.route-section{background:#00bcd40f!important;border:1px solid #00bcd433!important}body.light-theme .route-section{background:#0097a70d!important;border:1px solid #0097a726!important}.route-label{color:var(--accent)!important}.route-value{color:var(--text-primary);font-size:12.5px;font-weight:600}.info-note{border:1px solid var(--border-color);color:var(--text-secondary);background:#ffffff05;border-radius:10px;padding:10px 14px;font-size:11.5px;line-height:1.5}body.light-theme .info-note{background:#00000003}.school-tags-container{flex-wrap:wrap;gap:8px;padding:2px 0 6px;display:flex}.school-highlight-tag{-webkit-user-select:none;user-select:none;border-radius:20px;align-items:center;gap:4px;padding:4px 10px;font-size:11px;font-weight:600;transition:all .25s cubic-bezier(.16,1,.3,1);display:inline-flex}.school-highlight-tag:hover{transform:translateY(-1.5px)}.school-highlight-tag.tag-food{color:#f59e0b;background:#f59e0b14;border:1px solid #f59e0b40;box-shadow:0 2px 6px #f59e0b0d}.school-highlight-tag.tag-food:hover{background:#f59e0b29;border-color:#f59e0b;box-shadow:0 4px 12px #f59e0b2e}body.light-theme .school-highlight-tag.tag-food{color:#b45309;background:#d977060f;border-color:#d9770633}body.light-theme .school-highlight-tag.tag-food:hover{background:#d977061f;border-color:#b45309}.school-highlight-tag.tag-dorm{color:#10b981;background:#10b98114;border:1px solid #10b98140;box-shadow:0 2px 6px #10b9810d}.school-highlight-tag.tag-dorm:hover{background:#10b98129;border-color:#10b981;box-shadow:0 4px 12px #10b9812e}body.light-theme .school-highlight-tag.tag-dorm{color:#047857;background:#0596690f;border-color:#05966933}body.light-theme .school-highlight-tag.tag-dorm:hover{background:#0596691f;border-color:#047857}.school-highlight-tag.tag-env{color:#06b6d4;background:#06b6d414;border:1px solid #06b6d440;box-shadow:0 2px 6px #06b6d40d}.school-highlight-tag.tag-env:hover{background:#06b6d429;border-color:#06b6d4;box-shadow:0 4px 12px #06b6d42e}body.light-theme .school-highlight-tag.tag-env{color:#0f766e;background:#0d94880f;border-color:#0d948833}body.light-theme .school-highlight-tag.tag-env:hover{background:#0d94881f;border-color:#0f766e}.school-highlight-tag.tag-academic{color:#818cf8;background:#6366f114;border:1px solid #6366f140;box-shadow:0 2px 6px #6366f10d}.school-highlight-tag.tag-academic:hover{background:#6366f129;border-color:#818cf8;box-shadow:0 4px 12px #6366f12e}body.light-theme .school-highlight-tag.tag-academic{color:#4338ca;background:#4f46e50f;border-color:#4f46e533}body.light-theme .school-highlight-tag.tag-academic:hover{background:#4f46e51f;border-color:#4338ca}.school-highlight-tag.tag-activity{color:#ec4899;background:#ec489914;border:1px solid #ec489940;box-shadow:0 2px 6px #ec48990d}.school-highlight-tag.tag-activity:hover{background:#ec489929;border-color:#ec4899;box-shadow:0 4px 12px #ec48992e}body.light-theme .school-highlight-tag.tag-activity{color:#be185d;background:#db27770f;border-color:#db277733}body.light-theme .school-highlight-tag.tag-activity:hover{background:#db27771f;border-color:#be185d}.school-highlight-tag.tag-default{color:var(--accent);background:#00bcd414;border:1px solid #00bcd440;box-shadow:0 2px 6px #00bcd40d}.school-highlight-tag.tag-default:hover{border-color:var(--accent);background:#00bcd429;box-shadow:0 4px 12px #00bcd42e}body.light-theme .school-highlight-tag.tag-default{color:var(--accent);background:#0097a70f;border-color:#0097a72e}body.light-theme .school-highlight-tag.tag-default:hover{border-color:var(--accent);background:#0097a71f}@media (width<=768px){.info-panel-wrapper{z-index:150;padding:10px;bottom:120px}.info-panel{border-radius:14px;max-width:100%}.info-panel.is-collapsed{max-height:102px}.info-panel.is-expanded{height:70vh;max-height:70vh}.info-header{padding:10px 16px 8px}.info-title h2{font-size:1rem}.info-peek-summary{gap:10px;max-height:48px;padding:4px 16px 12px}.peek-stat-pill{gap:6px;padding:3px 10px;font-size:10.5px}.desktop-only-pill{display:none}.peek-expand-hint{gap:4px;font-size:10.5px}.info-content{gap:10px;padding:10px 12px}.info-panel.is-collapsed .info-content{max-height:0;padding:0}.info-section{gap:8px;padding:10px 12px}.info-grid{gap:8px 12px}.info-stat .value{font-size:12px}.qq-groups-container{gap:6px}.qq-group-pill{border-radius:8px;padding:6px 10px}.qq-num{font-size:12.5px}.info-note{padding:8px 12px;font-size:11px}}@media (width<=480px){.qq-groups-container{grid-template-columns:1fr}}.comment-section{border:1px solid var(--border-color,#ffffff1a);background:#0003;border-radius:14px;margin-top:16px;overflow:hidden;box-shadow:0 4px 16px #00000026}body.light-theme .comment-section{background:#00000005;border-color:#00000014}.comment-section-header{cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;padding:12px 16px;transition:background .2s;display:flex}.comment-section-header:hover{background:#ffffff0d}body.light-theme .comment-section-header:hover{background:#0000000a}.comment-section-title{align-items:center;gap:8px;display:flex}.comment-section-title .comment-icon{font-size:1.1em}.comment-section-title h3{color:var(--text-primary,#fff);letter-spacing:.3px;margin:0;font-size:.95rem;font-weight:700}.comment-count-badge{background:linear-gradient(135deg, var(--accent,#00bcd4), #00838f);color:#fff;text-align:center;border-radius:10px;min-width:20px;padding:2px 8px;font-size:.72rem;font-weight:700;box-shadow:0 2px 6px #00bcd440}.comment-expand-arrow{color:var(--text-muted,#718096);transition:transform .3s cubic-bezier(.4,0,.2,1)}.comment-expand-arrow.rotated{transform:rotate(180deg)}.comment-section-body{border-top:1px solid var(--border-color,#ffffff14);padding:12px 16px 16px;animation:.25s commentFadeIn}@keyframes commentFadeIn{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.comment-controls{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px;display:flex}.comment-sort-group{background:#0000004d;border:1px solid #ffffff1f;border-radius:10px;gap:4px;padding:3px;display:flex}body.light-theme .comment-sort-group{background:#0000000d;border-color:#0000001f}.sort-btn{color:#e2e8f0;cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:7px;padding:6px 12px;font-size:.8rem;font-weight:500;transition:all .2s}body.light-theme .sort-btn{color:#4a5568}.sort-btn:hover{color:#fff;background:#ffffff1a}body.light-theme .sort-btn:hover{color:#1a202c;background:#00000014}.sort-btn.active{font-weight:700;box-shadow:0 2px 8px #00bcd44d;background:linear-gradient(135deg, var(--accent,#00bcd4), #00838f)!important;color:#fff!important}.write-comment-btn{background:linear-gradient(135deg, var(--accent,#00bcd4), #00838f);color:#fff;cursor:pointer;white-space:nowrap;border:none;border-radius:10px;padding:7px 16px;font-size:.8rem;font-weight:600;transition:all .25s;box-shadow:0 2px 8px #00bcd440}.write-comment-btn:hover{transform:translateY(-1px);box-shadow:0 4px 14px #00bcd466}.write-comment-btn.active{color:var(--text-secondary,#a0aec0);box-shadow:none;background:#ffffff1f}body.light-theme .write-comment-btn.active{color:#4a5568;background:#00000014}.comment-form-container{margin-bottom:16px;animation:.25s commentFadeIn}.comment-form{border:1px solid var(--border-color,#ffffff1f);background:#00000040;border-radius:14px;padding:16px}body.light-theme .comment-form{background:#fff;border-color:#0000001f;box-shadow:0 4px 12px #0000000d}.comment-form-reply{background:#0003;border-radius:10px;margin-top:10px;padding:12px}.comment-form-title{color:var(--text-primary,#fff);margin:0 0 12px;font-size:.92rem;font-weight:700}.comment-form-row{gap:10px;margin-bottom:10px;display:flex}.comment-input-group{flex:1}.comment-input{color:#fff;box-sizing:border-box;background:#00000059;border:1px solid #ffffff26;border-radius:10px;width:100%;padding:9px 14px;font-size:.85rem;transition:all .2s}body.light-theme .comment-input{color:#1e293b;background:#f8fafc;border-color:#cbd5e1}.comment-input::placeholder{color:#ffffff73}body.light-theme .comment-input::placeholder{color:#94a3b8}.comment-input:focus{border-color:var(--accent,#00bcd4);outline:none;box-shadow:0 0 0 3px #00bcd433}.comment-toolbar{justify-content:space-between;align-items:center;gap:6px;margin-bottom:6px;padding:4px 0;display:flex}.toolbar-left{flex-wrap:wrap;align-items:center;gap:2px;display:flex}.toolbar-btn{color:var(--text-secondary,#a0aec0);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:7px;justify-content:center;align-items:center;width:30px;height:30px;font-size:.82rem;transition:all .15s;display:flex}.toolbar-btn:hover{color:var(--text-primary,#fff);background:#ffffff1a;border-color:#ffffff26}body.light-theme .toolbar-btn:hover{color:#1a202c;background:#0000000f;border-color:#0000001a}.toolbar-btn.active{color:var(--accent,#00bcd4);background:#00bcd433;border-color:#00bcd466}.toolbar-divider{background:var(--border-color,#ffffff1a);width:1px;height:18px;margin:0 4px}.preview-toggle{width:auto;padding:0 10px;font-size:.75rem}.emoji-panel{border:1px solid var(--border-color,#ffffff26);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#0f1923f5;border-radius:12px;max-height:220px;margin-bottom:8px;padding:10px;animation:.2s commentFadeIn;overflow-y:auto}body.light-theme .emoji-panel{background:#fffffffa;border-color:#00000026;box-shadow:0 8px 24px #00000026}.emoji-categories{gap:4px;margin-bottom:8px;padding-bottom:6px;display:flex;overflow-x:auto}.emoji-cat-btn{color:var(--text-muted,#718096);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:6px;padding:4px 8px;font-size:.72rem;transition:all .15s}.emoji-cat-btn:hover{background:#ffffff14}.emoji-cat-btn.active{color:var(--accent,#00bcd4);background:#00bcd433;font-weight:700}.emoji-grid{grid-template-columns:repeat(auto-fill,minmax(32px,1fr));gap:2px;display:grid}.emoji-btn{cursor:pointer;background:0 0;border:none;border-radius:6px;padding:4px;font-size:1.2rem;line-height:1;transition:all .12s}.emoji-btn:hover{background:#ffffff1f;transform:scale(1.2)}.comment-textarea-wrapper{background:#00000059;border:1px solid #ffffff26;border-radius:10px;flex-direction:column;transition:all .2s;display:flex;overflow:hidden}body.light-theme .comment-textarea-wrapper{background:#fff;border-color:#cbd5e1}.comment-textarea-wrapper:focus-within{border-color:var(--accent,#00bcd4);box-shadow:0 0 0 3px #00bcd433}.comment-textarea{width:100%;color:var(--text-primary,#fff);resize:vertical;box-sizing:border-box;background:0 0;border:none;border-radius:0;min-height:80px;padding:12px 14px 8px;font-family:inherit;font-size:.88rem;line-height:1.6}body.light-theme .comment-textarea{color:#1e293b}.comment-textarea::placeholder{color:#ffffff73}body.light-theme .comment-textarea::placeholder{color:#94a3b8}.comment-textarea:focus{box-shadow:none;border-color:#0000;outline:none}.comment-textarea-footer{color:var(--text-muted,#718096);-webkit-user-select:none;user-select:none;border-top:1px dashed #ffffff14;justify-content:space-between;align-items:center;padding:6px 14px 8px;font-size:.72rem;display:flex}body.light-theme .comment-textarea-footer{border-top-color:#0000000f}.comment-textarea-hint{opacity:.8}.comment-char-count{font-weight:500}.comment-preview{border:1px solid var(--border-color,#ffffff1a);min-height:80px;color:var(--text-primary,#fff);background:#0003;border-radius:10px;padding:12px 14px;font-size:.85rem;line-height:1.7}body.light-theme .comment-preview{color:#1e293b;background:#f8fafc;border-color:#cbd5e1}.preview-placeholder{color:var(--text-muted,#718096);font-style:italic}.comment-form-footer{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:12px;display:flex}.captcha-wrapper{border:1px solid var(--border-color,#ffffff1a);background:#0003;border-radius:10px;flex-shrink:0;align-items:center;gap:10px;max-width:100%;padding:4px 8px 4px 12px;display:flex}body.light-theme .captcha-wrapper{background:#f1f5f9;border-color:#cbd5e1}.captcha-question-container{color:var(--text-primary,#fff);-webkit-user-select:none;user-select:none;align-items:center;gap:6px;font-size:.82rem;font-weight:500;display:flex}body.light-theme .captcha-question-container{color:#1e293b}.captcha-question{cursor:pointer;letter-spacing:.5px;color:var(--accent,#00bcd4);background:#ffffff14;border:1px dashed #fff3;border-radius:4px;padding:2px 6px;font-family:monospace;font-weight:700;transition:all .2s}.captcha-question:hover{border-color:var(--accent,#00bcd4);background:#ffffff26}body.light-theme .captcha-question{color:#00838f;background:#0000000a;border-color:#00000026}body.light-theme .captcha-question:hover{background:#00000012}.captcha-refresh-btn{cursor:pointer;opacity:.7;background:0 0;border:none;justify-content:center;align-items:center;padding:2px;font-size:.85rem;transition:transform .25s;display:flex}.captcha-refresh-btn:hover{opacity:1;transform:rotate(180deg)}.captcha-input{text-align:center;border-radius:6px!important;width:75px!important;padding:6px 10px!important;font-size:.85rem!important}.comment-form-actions{align-items:center;gap:8px;margin-left:auto;display:flex}.comment-cancel-btn{color:var(--text-secondary,#a0aec0);cursor:pointer;background:#ffffff14;border:1px solid #ffffff1f;border-radius:10px;padding:8px 16px;font-size:.82rem;transition:all .2s}body.light-theme .comment-cancel-btn{color:#4a5568;background:#0000000d;border-color:#0000001a}.comment-cancel-btn:hover{color:var(--text-primary,#fff);background:#ffffff26}.comment-submit-btn{background:linear-gradient(135deg, var(--accent,#00bcd4), #00838f);color:#fff;cursor:pointer;border:none;border-radius:10px;padding:9px 22px;font-size:.88rem;font-weight:700;transition:all .25s;box-shadow:0 4px 12px #00bcd44d}.comment-submit-btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 6px 16px #00bcd473}.comment-submit-btn:disabled{opacity:.5;cursor:not-allowed}.comment-msg{border-radius:8px;margin-top:10px;padding:8px 14px;font-size:.82rem;animation:.25s commentFadeIn}.comment-msg-error{color:#fca5a5;background:#ef444426;border:1px solid #ef44444d}.comment-msg-success{color:#86efac;background:#22c55e26;border:1px solid #22c55e4d}.comment-list{flex-direction:column;gap:6px;display:flex}.comment-empty{text-align:center;color:var(--text-muted,#718096);padding:24px 16px}.comment-empty .empty-icon{margin-bottom:6px;font-size:1.8rem;display:block}.comment-empty p{margin:0;font-size:.85rem}.comment-loading{color:var(--text-secondary,#a0aec0);justify-content:center;align-items:center;gap:10px;padding:24px;font-size:.85rem;display:flex}.loading-spinner{border:2px solid #ffffff26;border-top-color:var(--accent,#00bcd4);border-radius:50%;width:20px;height:20px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.comment-error{color:#fca5a5;background:#ef44441a;border:1px solid #ef444433;border-radius:10px;justify-content:space-between;align-items:center;margin-bottom:12px;padding:10px 14px;font-size:.82rem;display:flex}.comment-item{position:relative}.comment-item.depth-1{padding-left:20px}.comment-item.depth-2{padding-left:36px}.comment-item.depth-3{padding-left:48px}.comment-thread-line{background:linear-gradient(#00bcd459,#00bcd40d);border-radius:1px;width:2px;position:absolute;top:0;bottom:0;left:10px}.comment-item.depth-2 .comment-thread-line{left:26px}.comment-item.depth-3 .comment-thread-line{left:38px}.comment-body{border:1px solid var(--border-color,#ffffff14);background:#0003;border-radius:12px;margin:4px 0;padding:12px 14px;transition:all .2s}body.light-theme .comment-body{background:#fffc;border-color:#00000014}.comment-body:hover{background:#0000004d;border-color:#00bcd44d}body.light-theme .comment-body:hover{background:#fff;border-color:#0097a74d}.comment-header{align-items:center;gap:10px;margin-bottom:8px;display:flex}.comment-avatar{background:linear-gradient(135deg, var(--accent,#00bcd4), #00838f);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;font-size:.8rem;font-weight:700;display:flex;overflow:hidden;box-shadow:0 2px 6px #00bcd440}.comment-avatar-img{object-fit:cover;border-radius:50%;width:100%;height:100%}.comment-avatar-text{justify-content:center;align-items:center;width:100%;height:100%;display:flex}.comment-meta{flex-wrap:wrap;flex:1;align-items:center;gap:8px;min-width:0;display:flex}.comment-username{color:var(--text-primary,#fff);font-size:.88rem;font-weight:700}.comment-pinned-badge{color:#fcd34d;background:linear-gradient(135deg,#fbbf2440,#f59e0b40);border:1px solid #fbbf244d;border-radius:6px;padding:1px 8px;font-size:.7rem;font-weight:700}.comment-time{color:var(--text-muted,#718096);font-size:.75rem}.comment-collapse-btn{color:var(--text-secondary,#a0aec0);cursor:pointer;background:#ffffff14;border:none;border-radius:6px;padding:3px 8px;font-size:.72rem;transition:all .15s}.comment-content{color:var(--text-primary,#fff);word-break:break-word;font-size:.86rem;line-height:1.65}.markdown-body p{margin:0 0 6px}.markdown-body p:last-child{margin-bottom:0}.markdown-body code{color:var(--accent,#00bcd4);background:#00bcd426;border-radius:4px;padding:1px 5px;font-size:.82em}.markdown-body a{color:var(--accent,#00bcd4);text-decoration:none}.markdown-body a:hover{text-decoration:underline}.comment-actions{align-items:center;gap:8px;margin-top:8px;display:flex}.vote-btn{color:var(--text-secondary,#a0aec0);cursor:pointer;background:#ffffff0f;border:1px solid #ffffff1a;border-radius:8px;align-items:center;gap:4px;padding:4px 10px;font-size:.78rem;transition:all .2s;display:flex}body.light-theme .vote-btn{color:#4a5568;background:#0000000a;border-color:#00000014}.vote-btn:hover:not(:disabled){color:var(--accent,#00bcd4);background:#00bcd426}.vote-btn.active.vote-up{color:#4ade80;background:#22c55e33;border-color:#22c55e66}.vote-btn.active.vote-down{color:#f87171;background:#ef444433;border-color:#ef444466}.vote-count{min-width:8px;font-weight:700}.reply-btn{color:var(--text-muted,#718096);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:4px 8px;font-size:.78rem;transition:all .15s}.reply-btn:hover{color:var(--accent,#00bcd4);background:#00bcd41a}.comment-load-more{text-align:center;margin-top:12px}.load-more-btn{color:var(--accent,#00bcd4);cursor:pointer;background:#00bcd41a;border:1px solid #00bcd440;border-radius:10px;padding:8px 24px;font-size:.82rem;font-weight:600;transition:all .2s}.load-more-btn:hover:not(:disabled){background:#00bcd433}.comment-footer{text-align:center;border-top:1px solid var(--border-color,#ffffff14);color:var(--text-muted,#718096);margin-top:12px;padding-top:10px;font-size:.72rem}@media (width<=768px){.comment-form-row{flex-direction:column;gap:8px}.comment-form-footer{flex-direction:column;align-items:stretch}.comment-form-actions{justify-content:flex-end;margin-left:0}.comment-controls{flex-direction:column;align-items:stretch}.comment-sort-group{justify-content:center}.write-comment-btn{text-align:center}.comment-item.depth-1{padding-left:14px}.comment-item.depth-2{padding-left:24px}.comment-item.depth-3{padding-left:32px}}.admin-panel{color:#f8fafc;min-height:100dvh;font-family:var(--font-family);box-sizing:border-box;background:linear-gradient(135deg,#0f1923,#152232,#0d151f);padding:24px}body.light-theme .admin-panel{color:#0f172a;background:linear-gradient(135deg,#f1f5f9,#e2e8f0,#cbd5e1)}.admin-login-card{max-width:420px;margin:0 auto;padding-top:12vh}.admin-login-header{text-align:center;margin-bottom:28px}.admin-lock-icon{margin-bottom:12px;font-size:2.8rem;display:block}.admin-login-header h2{background:linear-gradient(135deg, var(--accent,#00bcd4), #00e5ff);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;margin:0 0 6px;font-size:1.5rem;font-weight:800}.admin-login-header p{color:#ffffff73;margin:0;font-size:.85rem}body.light-theme .admin-login-header p{color:#64748b}.admin-login-form{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#ffffff08;border:1px solid #ffffff14;border-radius:16px;padding:30px;box-shadow:0 20px 40px #0000004d}body.light-theme .admin-login-form{background:#ffffffb3;border-color:#00000014;box-shadow:0 10px 30px #0000000f}.admin-input-group{margin-bottom:18px}.admin-input-group label{color:#fff9;margin-bottom:6px;font-size:.82rem;font-weight:600;display:block}body.light-theme .admin-input-group label{color:#475569}.admin-input-group input[type=text],.admin-input-group input[type=password]{color:#fff;box-sizing:border-box;background:#00000040;border:1px solid #ffffff1f;border-radius:10px;width:100%;padding:11px 14px;font-size:.9rem;transition:all .2s}body.light-theme .admin-input-group input[type=text],body.light-theme .admin-input-group input[type=password]{color:#0f172a;background:#fff;border-color:#cbd5e1}.admin-input-group input:focus{border-color:var(--accent,#00bcd4);outline:none;box-shadow:0 0 0 3px #00bcd433}.admin-error{color:#fca5a5;background:#ef44441f;border:1px solid #ef444433;border-radius:8px;margin-bottom:14px;padding:8px 14px;font-size:.82rem}.admin-login-btn{background:linear-gradient(135deg, var(--accent,#00bcd4), #00838f);color:#fff;cursor:pointer;border:none;border-radius:10px;width:100%;padding:12px;font-size:.95rem;font-weight:700;transition:all .25s;box-shadow:0 4px 12px #00bcd44d}.admin-login-btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 6px 18px #00bcd473}.admin-login-btn:disabled{opacity:.6;cursor:not-allowed}.admin-init-toggle{color:#ffffff73;cursor:pointer;align-items:center;gap:8px;margin-top:14px;font-size:.78rem;display:flex}body.light-theme .admin-init-toggle{color:#64748b}.admin-init-toggle input[type=checkbox]{accent-color:var(--accent,#00bcd4)}.admin-topbar{background:#ffffff05;border:1px solid #ffffff0f;border-radius:12px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;padding:16px 20px;display:flex}body.light-theme .admin-topbar{background:#fff;border-color:#0000000f;box-shadow:0 4px 12px #00000008}.admin-topbar-left{align-items:center;gap:12px;display:flex}.admin-topbar-left h2{margin:0;font-size:1.15rem;font-weight:800}.admin-user-badge{color:var(--accent,#00bcd4);background:#00bcd426;border-radius:8px;padding:4px 12px;font-size:.78rem;font-weight:600}.admin-topbar-right{flex-wrap:wrap;gap:8px;display:flex}.admin-btn{cursor:pointer;white-space:nowrap;border:none;border-radius:8px;padding:7px 14px;font-size:.8rem;font-weight:600;transition:all .2s}.admin-btn-outline{color:#fffc;background:#ffffff0f;border:1px solid #ffffff1f}body.light-theme .admin-btn-outline{color:#334155;background:#f1f5f9;border-color:#cbd5e1}.admin-btn-outline:hover{color:#fff;background:#ffffff1f}body.light-theme .admin-btn-outline:hover{color:#0f172a;background:#e2e8f0}.admin-btn-success{color:#4ade80;background:#22c55e26;border:1px solid #22c55e4d}.admin-btn-success:hover:not(:disabled){background:#22c55e40}.admin-btn-warning{color:#fcd34d;background:#f59e0b26;border:1px solid #f59e0b4d}.admin-btn-warning:hover:not(:disabled){background:#f59e0b40}.admin-btn-danger{color:#fca5a5;background:#ef444426;border:1px solid #ef44444d}.admin-btn-danger:hover:not(:disabled){background:#ef444440}.admin-btn:disabled{opacity:.4;cursor:not-allowed}.admin-message{cursor:pointer;background:#00bcd41a;border:1px solid #00bcd433;border-radius:8px;margin-bottom:16px;padding:10px 16px;font-size:.85rem;font-weight:600;animation:.2s commentFadeIn}.admin-filters{background:#ffffff03;border:1px solid #ffffff0d;border-radius:12px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;padding:12px 16px;display:flex}body.light-theme .admin-filters{background:#fff;border-color:#0000000d}.admin-status-tabs{gap:4px;display:flex}.status-tab{color:#ffffff8c;cursor:pointer;background:0 0;border:none;border-radius:8px;padding:6px 14px;font-size:.82rem;font-weight:600;transition:all .2s}body.light-theme .status-tab{color:#64748b}.status-tab:hover{color:#fff;background:#ffffff0f}body.light-theme .status-tab:hover{color:#0f172a;background:#f1f5f9}.status-tab.active{box-shadow:0 2px 6px #00bcd440;background:linear-gradient(135deg, var(--accent,#00bcd4), #0097a7)!important;color:#fff!important}.admin-school-filter{color:#fff;background:#0000004d;border:1px solid #ffffff1a;border-radius:8px;width:120px;padding:6px 12px;font-size:.82rem}body.light-theme .admin-school-filter{color:#0f172a;background:#fff;border-color:#cbd5e1}.admin-school-filter:focus{border-color:var(--accent,#00bcd4);outline:none}.admin-batch-bar{background:#ffffff05;border:1px solid #ffffff0a;border-radius:10px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:16px;padding:10px 16px;display:flex}body.light-theme .admin-batch-bar{background:#f8fafc;border-color:#cbd5e1}.admin-select-all{color:#fff9;cursor:pointer;align-items:center;gap:8px;font-size:.82rem;font-weight:600;display:flex}body.light-theme .admin-select-all{color:#475569}.admin-select-all input{accent-color:var(--accent,#00bcd4)}.admin-batch-actions{gap:6px;display:flex}.admin-comments-list{flex-direction:column;gap:10px;display:flex}.admin-comment-card{background:#ffffff05;border:1px solid #ffffff0f;border-radius:12px;gap:14px;padding:14px;transition:all .2s;display:flex}body.light-theme .admin-comment-card{background:#fff;border-color:#0000000f;box-shadow:0 4px 10px #00000005}.admin-comment-card:hover{background:#ffffff0a;border-color:#00bcd433}body.light-theme .admin-comment-card:hover{background:#f8fafc;border-color:#0097a726}.admin-comment-card.selected{background:#00bcd40f;border-color:#00bcd466}.admin-comment-select{align-items:flex-start;padding-top:3px;display:flex}.admin-comment-select input{accent-color:var(--accent,#00bcd4)}.admin-comment-main{flex:1;min-width:0}.admin-comment-header{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:6px;display:flex}.admin-comment-id{color:#ffffff59;font-family:monospace;font-size:.72rem}body.light-theme .admin-comment-id{color:#94a3b8}.admin-comment-school{color:var(--accent,#00bcd4);background:#00bcd426;border-radius:5px;padding:1px 8px;font-size:.72rem;font-weight:600}.admin-comment-author{color:#fffc;font-size:.8rem;font-weight:700}body.light-theme .admin-comment-author{color:#334155}.admin-comment-status{border-radius:5px;padding:1px 8px;font-size:.72rem;font-weight:600}.admin-comment-status.status-pending{color:#fcd34d;background:#f59e0b26}.admin-comment-status.status-approved{color:#4ade80;background:#22c55e26}.admin-comment-status.status-rejected{color:#f87171;background:#ef444426}.admin-comment-pinned{color:#fcd34d;background:#fbbf2426;border-radius:5px;padding:1px 8px;font-size:.72rem;font-weight:600}.admin-comment-reply{color:var(--text-muted,#718096);font-size:.72rem}.admin-comment-content{color:#ffffffd9;word-break:break-word;white-space:pre-wrap;max-height:120px;margin-bottom:8px;font-size:.85rem;line-height:1.6;overflow-y:auto}body.light-theme .admin-comment-content{color:#334155}.admin-comment-footer{color:var(--text-muted,#718096);flex-wrap:wrap;gap:14px;font-size:.72rem;display:flex}.admin-comment-actions{flex-direction:column;flex-shrink:0;justify-content:center;gap:6px;display:flex}.admin-act-btn{cursor:pointer;background:#ffffff0a;border:1px solid #ffffff14;border-radius:8px;justify-content:center;align-items:center;width:32px;height:32px;font-size:.9rem;transition:all .15s;display:flex}body.light-theme .admin-act-btn{background:#f1f5f9;border-color:#cbd5e1}.admin-act-btn:hover{background:#ffffff1f;transform:scale(1.08)}body.light-theme .admin-act-btn:hover{background:#cbd5e1}.admin-act-btn.act-pin.active{background:#fbbf2426;border-color:#fbbf244d}.admin-act-btn.act-delete:hover{background:#ef444433;border-color:#ef444466}.admin-pagination-wrapper{border-top:1px solid #ffffff14;flex-direction:column;gap:16px;margin-top:24px;padding-top:18px;display:flex}body.light-theme .admin-pagination-wrapper{border-top-color:#00000014}.admin-pagination-info{color:#ffffffa6;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;font-size:.85rem;display:flex}body.light-theme .admin-pagination-info{color:#475569}.admin-page-size-selector{align-items:center;gap:8px;display:flex}.admin-select{color:#fff;cursor:pointer;background:#0000004d;border:1px solid #ffffff1f;border-radius:8px;padding:5px 10px;font-size:.82rem}body.light-theme .admin-select{color:#0f172a;background:#fff;border-color:#cbd5e1}.admin-select:focus{border-color:var(--accent,#00bcd4);outline:none}.admin-pagination{flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;display:flex}.admin-page-numbers{align-items:center;gap:4px;display:flex}.admin-page-num{color:#fffc;cursor:pointer;background:#ffffff08;border:1px solid #ffffff1a;border-radius:8px;min-width:32px;height:32px;padding:0 6px;font-size:.82rem;font-weight:600;transition:all .2s}body.light-theme .admin-page-num{color:#334155;background:#f1f5f9;border-color:#cbd5e1}.admin-page-num:hover{border-color:var(--accent,#00bcd4);color:#fff;background:#ffffff1a}body.light-theme .admin-page-num:hover{color:#0f172a;background:#e2e8f0}.admin-page-num.active{box-shadow:0 2px 8px #00bcd44d;background:linear-gradient(135deg, var(--accent,#00bcd4), #0097a7)!important;color:#fff!important;border-color:#0000!important}.admin-page-ellipsis{color:#fff6;padding:0 4px;font-weight:700}body.light-theme .admin-page-ellipsis{color:#94a3b8}.admin-page-jump{color:#fff9;align-items:center;gap:6px;margin-left:8px;font-size:.82rem;display:flex}body.light-theme .admin-page-jump{color:#475569}.admin-page-jump-input{text-align:center;color:#fff;background:#0000004d;border:1px solid #ffffff1f;border-radius:8px;width:50px;height:32px;font-size:.82rem}body.light-theme .admin-page-jump-input{color:#0f172a;background:#fff;border-color:#cbd5e1}.admin-page-jump-input:focus{border-color:var(--accent,#00bcd4);outline:none}.transport-mode{background:#ffffff0d;border-radius:8px;gap:8px;margin-top:12px;padding:4px;display:flex}.mode-btn{color:var(--text-muted);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:6px;flex:1;justify-content:center;align-items:center;padding:8px;font-size:13px;transition:all .2s;display:flex}.mode-btn:hover{color:var(--text-primary);background:#ffffff1a}.mode-btn.active{background:var(--accent);color:#fff}@media (width<=768px){.transport-mode{gap:4px;margin-top:8px}.mode-btn{min-height:36px;padding:8px 4px;font-size:12px}}.my-location{border-top:1px solid var(--border-color);background:#0000001a;flex-shrink:0;padding:16px}.my-loc-btn{border:1px dashed var(--accent);width:100%;color:var(--accent);cursor:pointer;background:#00bcd41a;border-radius:8px;justify-content:center;align-items:center;gap:8px;padding:10px;font-weight:500;transition:all .2s;display:flex}.my-loc-btn:hover{background:#00bcd433}.my-loc-info{background:#ffffff0d;border-radius:8px;justify-content:space-between;align-items:center;gap:8px;padding:12px;display:flex}.my-loc-info span{color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:6px;min-width:0;font-size:13px;display:flex;overflow:hidden}.remove-loc-btn{color:#ef4444;cursor:pointer;background:0 0;border:none;border-radius:4px;flex-shrink:0;padding:4px 8px}.remove-loc-btn:hover{background:#ef44441a}.user-marker{background-color:var(--accent);border:3px solid #fff;border-radius:50%;width:24px;height:24px;animation:2s infinite pulse;box-shadow:0 0 10px #00bcd499,0 4px 6px #0000004d}@keyframes pulse{0%{box-shadow:0 0 #00bcd466}70%{box-shadow:0 0 0 10px #00bcd400}to{box-shadow:0 0 #00bcd400}}@media (width<=768px){.my-location{padding:10px 16px}.my-loc-info{padding:10px}.my-loc-info span{font-size:12px}}.app-wrapper{flex-direction:column;width:100vw;height:100dvh;display:flex;overflow:hidden}.watermark-banner{color:var(--text-muted);z-index:100;pointer-events:none;background:rgba(var(--bg-panel-rgb), .5);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);letter-spacing:.5px;text-shadow:1px 1px 0 var(--bg-primary), -1px -1px 0 var(--bg-primary), 1px -1px 0 var(--bg-primary), -1px 1px 0 var(--bg-primary);opacity:.8;border-radius:8px;padding:6px 12px;font-size:18px;font-weight:500;position:absolute;top:16px;left:50%;transform:translate(-50%)}.app-container{flex:1;width:100%;display:flex;position:relative;overflow:hidden}.left-panel{z-index:10;background:var(--bg-primary);flex-direction:column;width:280px;height:100%;transition:width .3s cubic-bezier(.4,0,.2,1),box-shadow .3s cubic-bezier(.4,0,.2,1);display:flex;box-shadow:4px 0 16px #0003}@media (width>=769px){.left-panel.collapsed{overflow:hidden;width:0!important;box-shadow:none!important;border-right:none!important}.sidebar-toggle-btn{background:var(--bg-secondary);border:1px solid var(--border-color);width:24px;height:56px;color:var(--text-primary);cursor:pointer;z-index:150;-webkit-backdrop-filter:blur(8px);border-left:none;border-radius:0 8px 8px 0;outline:none;justify-content:center;align-items:center;padding:0;transition:left .3s cubic-bezier(.4,0,.2,1),background .2s,color .2s,box-shadow .2s;display:flex;position:absolute;top:50%;left:280px;transform:translate(-50%,-50%);box-shadow:4px 0 16px #00000026}.sidebar-toggle-btn:hover{background:var(--accent);color:#fff;box-shadow:0 0 12px var(--accent)}.sidebar-toggle-btn.collapsed{border-left:1px solid var(--border-color);left:0}.sidebar-toggle-btn .toggle-icon{font-size:18px;font-weight:700;line-height:1;transition:transform .2s}.sidebar-toggle-btn:active .toggle-icon{transform:scale(.8)}}.main-content{flex:1;height:100%;position:relative}@media (width<=768px){.app-container{flex-direction:column;position:relative}.main-content{z-index:1;width:100%;height:100%;position:absolute;top:0;left:0}.watermark-banner{padding:4px 10px;font-size:13px;top:10px}.left-panel.drawer{z-index:200;border-radius:16px 16px 0 0;width:100%;transition:height .35s cubic-bezier(.32,.72,0,1);position:fixed;bottom:0;left:0;overflow:hidden;box-shadow:0 -4px 24px #00000059}.left-panel.drawer-collapsed{height:120px}.left-panel.drawer-half{height:50dvh}.left-panel.drawer-full{height:85dvh}.drawer-handle{cursor:grab;touch-action:none;flex-shrink:0;justify-content:center;align-items:center;padding:10px 0 6px;display:flex}.drawer-handle-bar{background:var(--text-muted);opacity:.5;border-radius:3px;width:40px;height:5px;transition:opacity .2s}.drawer-handle:active .drawer-handle-bar{opacity:.9}}@media (width>=769px){.drawer-handle{display:none}}
