*,*::before,*::after{margin:0;padding:0;box-sizing:border-box} :root{ --font-sans:'Inter','Noto Sans SC',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; --font-mono:'JetBrains Mono','Fira Code','Consolas',monospace; --radius-sm:8px;--radius-md:12px;--radius-lg:20px;--radius-xl:28px; --transition:0.3s cubic-bezier(0.4,0,0.2,1); --bg-image:url('https://t.alcy.cc/moez'); } [data-theme="light"]{ --bg-primary:rgba(255,255,255,0.75);--bg-secondary:rgba(255,255,255,0.85); --bg-tertiary:rgba(248,250,252,0.9);--bg-card:rgba(255,255,255,0.8); --bg-hover:rgba(0,0,0,0.04);--bg-input:rgba(255,255,255,0.9); --text-primary:#1a1a2e;--text-secondary:#4a4a6a;--text-muted:#8888a0; --border-color:rgba(0,0,0,0.08);--border-strong:rgba(0,0,0,0.12); --accent:#6c5ce7;--accent-light:#a29bfe;--accent-bg:rgba(108,92,231,0.1); --success:#00b894;--success-bg:rgba(0,184,148,0.1); --warning:#fdcb6e;--warning-bg:rgba(253,203,110,0.15); --danger:#e17055;--danger-bg:rgba(225,112,85,0.1); --shadow-sm:0 2px 8px rgba(0,0,0,0.06);--shadow-md:0 4px 20px rgba(0,0,0,0.08); --shadow-lg:0 8px 40px rgba(0,0,0,0.12); --glass-blur:blur(20px);--text-on-accent:#fff; --tag-lx-bg:rgba(108,92,231,0.12);--tag-lx-text:#6c5ce7; --tag-qzv2-bg:rgba(0,184,148,0.12);--tag-qzv2-text:#00b894; --tag-musicfree-bg:rgba(253,121,168,0.12);--tag-musicfree-text:#e84393; --tag-unknown-bg:rgba(100,100,120,0.12);--tag-unknown-text:#646478; --log-bg:rgba(20,22,34,0.92);--log-text:#e8e8f0;--log-muted:#7878a0; } [data-theme="dark"]{ --bg-primary:rgba(20,22,34,0.8);--bg-secondary:rgba(28,30,44,0.85); --bg-tertiary:rgba(35,38,54,0.9);--bg-card:rgba(30,32,48,0.75); --bg-hover:rgba(255,255,255,0.06);--bg-input:rgba(20,22,34,0.9); --text-primary:#e8e8f0;--text-secondary:#b0b0c8;--text-muted:#7878a0; --border-color:rgba(255,255,255,0.08);--border-strong:rgba(255,255,255,0.15); --accent:#a29bfe;--accent-light:#6c5ce7;--accent-bg:rgba(162,155,254,0.15); --success:#55efc4;--success-bg:rgba(85,239,196,0.12); --warning:#ffeaa7;--warning-bg:rgba(255,234,167,0.12); --danger:#fab1a0;--danger-bg:rgba(250,177,160,0.12); --shadow-sm:0 2px 8px rgba(0,0,0,0.3);--shadow-md:0 4px 20px rgba(0,0,0,0.4); --shadow-lg:0 8px 40px rgba(0,0,0,0.5); --glass-blur:blur(20px);--text-on-accent:#1a1a2e; --tag-lx-bg:rgba(162,155,254,0.18);--tag-lx-text:#a29bfe; --tag-qzv2-bg:rgba(85,239,196,0.18);--tag-qzv2-text:#55efc4; --tag-musicfree-bg:rgba(255,121,168,0.18);--tag-musicfree-text:#ff7eb6; --tag-unknown-bg:rgba(150,150,170,0.18);--tag-unknown-text:#a0a0b8; --log-bg:rgba(10,12,20,0.95);--log-text:#e8e8f0;--log-muted:#585870; } [data-theme="sakura"]{ --bg-primary:rgba(255,240,245,0.75);--bg-secondary:rgba(255,245,248,0.85); --bg-tertiary:rgba(252,235,240,0.9);--bg-card:rgba(255,245,248,0.8); --bg-hover:rgba(255,182,193,0.08);--bg-input:rgba(255,250,252,0.9); --text-primary:#5a2a3a;--text-secondary:#8a4a5a;--text-muted:#b08090; --border-color:rgba(220,100,130,0.12);--border-strong:rgba(220,100,130,0.2); --accent:#ff6b9d;--accent-light:#ffa3c4;--accent-bg:rgba(255,107,157,0.1); --success:#2ecc71;--success-bg:rgba(46,204,113,0.1); --warning:#f39c12;--warning-bg:rgba(243,156,18,0.12); --danger:#e74c3c;--danger-bg:rgba(231,76,60,0.1); --shadow-sm:0 2px 8px rgba(220,100,130,0.1);--shadow-md:0 4px 20px rgba(220,100,130,0.12); --shadow-lg:0 8px 40px rgba(220,100,130,0.18); --glass-blur:blur(20px);--text-on-accent:#fff; --tag-lx-bg:rgba(255,107,157,0.12);--tag-lx-text:#ff6b9d; --tag-qzv2-bg:rgba(46,204,113,0.12);--tag-qzv2-text:#2ecc71; --tag-musicfree-bg:rgba(155,89,182,0.12);--tag-musicfree-text:#9b59b6; --tag-unknown-bg:rgba(100,100,120,0.12);--tag-unknown-text:#646478; --log-bg:rgba(40,20,30,0.95);--log-text:#f0d8e0;--log-muted:#9a6a7a; } [data-theme="ocean"]{ --bg-primary:rgba(230,245,255,0.75);--bg-secondary:rgba(240,249,255,0.85); --bg-tertiary:rgba(220,240,255,0.9);--bg-card:rgba(240,249,255,0.8); --bg-hover:rgba(0,150,200,0.06);--bg-input:rgba(250,253,255,0.9); --text-primary:#0a3d5c;--text-secondary:#1a5d7c;--text-muted:#508da0; --border-color:rgba(0,120,180,0.1);--border-strong:rgba(0,120,180,0.18); --accent:#0984e3;--accent-light:#74b9ff;--accent-bg:rgba(9,132,227,0.1); --success:#00cec9;--success-bg:rgba(0,206,201,0.1); --warning:#fdcb6e;--warning-bg:rgba(253,203,110,0.12); --danger:#ff7675;--danger-bg:rgba(255,118,117,0.1); --shadow-sm:0 2px 8px rgba(0,120,180,0.1);--shadow-md:0 4px 20px rgba(0,120,180,0.12); --shadow-lg:0 8px 40px rgba(0,120,180,0.18); --glass-blur:blur(20px);--text-on-accent:#fff; --tag-lx-bg:rgba(9,132,227,0.12);--tag-lx-text:#0984e3; --tag-qzv2-bg:rgba(0,206,201,0.12);--tag-qzv2-text:#00cec9; --tag-musicfree-bg:rgba(0,184,148,0.12);--tag-musicfree-text:#00b894; --tag-unknown-bg:rgba(100,100,120,0.12);--tag-unknown-text:#646478; --log-bg:rgba(5,20,35,0.95);--log-text:#d0e8ff;--log-muted:#5080a0; } [data-theme="forest"]{ --bg-primary:rgba(235,248,235,0.75);--bg-secondary:rgba(245,255,245,0.85); --bg-tertiary:rgba(225,245,225,0.9);--bg-card:rgba(245,255,245,0.8); --bg-hover:rgba(34,139,34,0.06);--bg-input:rgba(250,255,250,0.9); --text-primary:#1a3d1a;--text-secondary:#2d5d2d;--text-muted:#608060; --border-color:rgba(34,139,34,0.1);--border-strong:rgba(34,139,34,0.18); --accent:#00b894;--accent-light:#55efc4;--accent-bg:rgba(0,184,148,0.1); --success:#2ecc71;--success-bg:rgba(46,204,113,0.1); --warning:#fdcb6e;--warning-bg:rgba(253,203,110,0.12); --danger:#e17055;--danger-bg:rgba(225,112,85,0.1); --shadow-sm:0 2px 8px rgba(34,139,34,0.1);--shadow-md:0 4px 20px rgba(34,139,34,0.12); --shadow-lg:0 8px 40px rgba(34,139,34,0.18); --glass-blur:blur(20px);--text-on-accent:#fff; --tag-lx-bg:rgba(0,184,148,0.12);--tag-lx-text:#00b894; --tag-qzv2-bg:rgba(46,204,113,0.12);--tag-qzv2-text:#2ecc71; --tag-musicfree-bg:rgba(155,89,182,0.12);--tag-musicfree-text:#9b59b6; --tag-unknown-bg:rgba(100,100,120,0.12);--tag-unknown-text:#646478; --log-bg:rgba(15,30,15,0.95);--log-text:#d0f0d0;--log-muted:#508050; } [data-theme="midnight"]{ --bg-primary:rgba(25,20,40,0.8);--bg-secondary:rgba(35,28,55,0.85); --bg-tertiary:rgba(45,35,65,0.9);--bg-card:rgba(38,30,58,0.75); --bg-hover:rgba(255,255,255,0.06);--bg-input:rgba(25,20,40,0.9); --text-primary:#e0d8f0;--text-secondary:#b0a0c8;--text-muted:#7a6a90; --border-color:rgba(180,160,220,0.08);--border-strong:rgba(180,160,220,0.15); --accent:#bf6cff;--accent-light:#d4a3ff;--accent-bg:rgba(191,108,255,0.15); --success:#00d2a0;--success-bg:rgba(0,210,160,0.12); --warning:#ffce5c;--warning-bg:rgba(255,206,92,0.12); --danger:#ff6b8a;--danger-bg:rgba(255,107,138,0.12); --shadow-sm:0 2px 8px rgba(0,0,0,0.4);--shadow-md:0 4px 20px rgba(0,0,0,0.5); --shadow-lg:0 8px 40px rgba(0,0,0,0.6); --glass-blur:blur(20px);--text-on-accent:#fff; --tag-lx-bg:rgba(191,108,255,0.18);--tag-lx-text:#bf6cff; --tag-qzv2-bg:rgba(0,210,160,0.18);--tag-qzv2-text:#00d2a0; --tag-musicfree-bg:rgba(255,107,138,0.18);--tag-musicfree-text:#ff6b8a; --tag-unknown-bg:rgba(150,150,170,0.18);--tag-unknown-text:#a0a0b8; --log-bg:rgba(10,8,18,0.95);--log-text:#e0d8f0;--log-muted:#6a5a80; } [data-theme="sunset"]{ --bg-primary:rgba(255,242,230,0.75);--bg-secondary:rgba(255,248,240,0.85); --bg-tertiary:rgba(255,235,218,0.9);--bg-card:rgba(255,248,240,0.8); --bg-hover:rgba(255,140,80,0.06);--bg-input:rgba(255,252,248,0.9); --text-primary:#5a2a0a;--text-secondary:#8a4a1a;--text-muted:#b08060; --border-color:rgba(220,100,30,0.1);--border-strong:rgba(220,100,30,0.18); --accent:#ff7f50;--accent-light:#ffb088;--accent-bg:rgba(255,127,80,0.1); --success:#2ecc71;--success-bg:rgba(46,204,113,0.1); --warning:#f39c12;--warning-bg:rgba(243,156,18,0.12); --danger:#e74c3c;--danger-bg:rgba(231,76,60,0.1); --shadow-sm:0 2px 8px rgba(220,100,30,0.1);--shadow-md:0 4px 20px rgba(220,100,30,0.12); --shadow-lg:0 8px 40px rgba(220,100,30,0.18); --glass-blur:blur(20px);--text-on-accent:#fff; --tag-lx-bg:rgba(255,127,80,0.12);--tag-lx-text:#ff7f50; --tag-qzv2-bg:rgba(46,204,113,0.12);--tag-qzv2-text:#2ecc71; --tag-musicfree-bg:rgba(155,89,182,0.12);--tag-musicfree-text:#9b59b6; --tag-unknown-bg:rgba(100,100,120,0.12);--tag-unknown-text:#646478; --log-bg:rgba(30,15,5,0.95);--log-text:#f0d8c0;--log-muted:#9a7050; } body{font-family:var(--font-sans);color:var(--text-primary);min-height:100vh;background-image:var(--bg-image);background-size:cover;background-position:center;background-attachment:fixed;background-repeat:no-repeat;transition:color var(--transition);position:relative} body::before{content:'';position:fixed;inset:0;background:var(--bg-primary);z-index:-1;transition:background var(--transition)} ::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent} ::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:4px} ::-webkit-scrollbar-thumb:hover{background:var(--accent)} .container{max-width:1200px;margin:0 auto;padding:24px 20px 60px} .navbar{position:sticky;top:0;z-index:100;background:var(--bg-secondary);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border-bottom:1px solid var(--border-color);padding:0 20px;transition:background var(--transition),border-color var(--transition)} .navbar-inner{max-width:1200px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;height:64px} .navbar-brand{display:flex;align-items:center;gap:12px;font-size:18px;font-weight:700;color:var(--text-primary);text-decoration:none} .navbar-brand .brand-icon{width:36px;height:36px;background:linear-gradient(135deg,var(--accent),var(--accent-light));border-radius:10px;display:flex;align-items:center;justify-content:center;color:var(--text-on-accent);flex-shrink:0} .navbar-brand .brand-icon svg{width:20px;height:20px} .navbar-brand .brand-subtitle{font-size:12px;font-weight:400;color:var(--text-muted);margin-top:2px} .navbar-actions{display:flex;align-items:center;gap:8px} .theme-selector{position:relative} .theme-dropdown-btn{display:flex;align-items:center;gap:6px;padding:8px 14px;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;font-size:13px;font-family:var(--font-sans);transition:all var(--transition)} .theme-dropdown-btn:hover{border-color:var(--accent);color:var(--accent)} .theme-dropdown-btn svg{width:16px;height:16px} .theme-dropdown{position:absolute;top:calc(100% + 8px);right:0;background:var(--bg-secondary);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);padding:8px;min-width:180px;display:none;z-index:200} .theme-dropdown.show{display:block} .theme-option{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--radius-sm);cursor:pointer;color:var(--text-secondary);font-size:14px;transition:all 0.2s} .theme-option:hover{background:var(--bg-hover);color:var(--text-primary)} .theme-option.active{background:var(--accent-bg);color:var(--accent)} .theme-option .theme-swatch{width:20px;height:20px;border-radius:50%;border:2px solid var(--border-strong);flex-shrink:0} .theme-option .theme-check{margin-left:auto;width:16px;height:16px;opacity:0} .theme-option.active .theme-check{opacity:1} .hero{text-align:center;padding:48px 20px 32px} .hero h1{font-size:36px;font-weight:800;background:linear-gradient(135deg,var(--accent),var(--accent-light));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:12px;letter-spacing:-0.5px} .hero p{font-size:16px;color:var(--text-secondary);max-width:600px;margin:0 auto;line-height:1.6} .hero-badges{display:flex;justify-content:center;gap:12px;margin-top:20px;flex-wrap:wrap} .hero-badge{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;background:var(--bg-card);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--border-color);border-radius:100px;font-size:13px;color:var(--text-secondary)} .hero-badge svg{width:14px;height:14px} .card{background:var(--bg-card);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:24px;box-shadow:var(--shadow-md);transition:all var(--transition);margin-bottom:20px} .card-header{display:flex;align-items:center;gap:10px;margin-bottom:16px} .card-header svg{width:20px;height:20px;color:var(--accent)} .card-header h2{font-size:17px;font-weight:600;color:var(--text-primary)} /* 平台展示 */ .platforms-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px} .platform-info-card{background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:16px;transition:all var(--transition)} .platform-info-card:hover{border-color:var(--accent);box-shadow:var(--shadow-sm)} .platform-info-header{display:flex;align-items:center;gap:10px;margin-bottom:12px} .platform-info-icon{width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0} .platform-info-icon svg{width:20px;height:20px} .platform-info-icon.lx{background:var(--tag-lx-bg);color:var(--tag-lx-text)} .platform-info-icon.qzv2{background:var(--tag-qzv2-bg);color:var(--tag-qzv2-text)} .platform-info-icon.musicfree{background:var(--tag-musicfree-bg);color:var(--tag-musicfree-text)} .platform-info-name{font-size:15px;font-weight:600;color:var(--text-primary)} .platform-info-format{font-size:12px;color:var(--text-muted)} .platform-info-section{margin-bottom:8px} .platform-info-label{font-size:11px;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.5px;margin-bottom:4px} .platform-info-tags{display:flex;flex-wrap:wrap;gap:4px} .platform-info-tag{padding:2px 8px;border-radius:4px;font-size:11px;background:var(--bg-card);color:var(--text-secondary);border:1px solid var(--border-color)} .input-tabs{display:flex;gap:4px;margin-bottom:16px;background:var(--bg-tertiary);border-radius:var(--radius-sm);padding:4px} .input-tab{flex:1;padding:10px 16px;border:none;background:transparent;color:var(--text-secondary);font-size:14px;font-family:var(--font-sans);border-radius:6px;cursor:pointer;transition:all 0.2s;display:flex;align-items:center;justify-content:center;gap:6px} .input-tab svg{width:16px;height:16px} .input-tab.active{background:var(--bg-card);color:var(--accent);box-shadow:var(--shadow-sm)} .input-tab:hover:not(.active){color:var(--text-primary)} .url-input-wrap{position:relative} .url-textarea{width:100%;min-height:140px;padding:16px;background:var(--bg-input);border:1px solid var(--border-color);border-radius:var(--radius-md);color:var(--text-primary);font-size:14px;font-family:var(--font-mono);line-height:1.6;resize:vertical;transition:border-color var(--transition)} .url-textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-bg)} .url-textarea::placeholder{color:var(--text-muted)} .url-count{position:absolute;bottom:12px;right:16px;font-size:12px;color:var(--text-muted);background:var(--bg-secondary);padding:2px 8px;border-radius:100px} .file-upload-area{border:2px dashed var(--border-strong);border-radius:var(--radius-md);padding:40px 20px;text-align:center;cursor:pointer;transition:all var(--transition);background:var(--bg-input)} .file-upload-area:hover,.file-upload-area.dragover{border-color:var(--accent);background:var(--accent-bg)} .file-upload-area svg{width:40px;height:40px;color:var(--text-muted);margin-bottom:12px} .file-upload-area p{color:var(--text-secondary);font-size:14px} .file-upload-area .file-types{font-size:12px;color:var(--text-muted);margin-top:6px} /* 上传进度 */ .upload-progress{margin-top:12px;padding:12px 16px;background:var(--bg-tertiary);border-radius:var(--radius-sm);border:1px solid var(--border-color)} .upload-progress-header{display:flex;justify-content:space-between;margin-bottom:8px;font-size:13px;color:var(--text-secondary)} .upload-progress-bar{height:6px;background:var(--bg-hover);border-radius:3px;overflow:hidden} .upload-progress-fill{height:100%;background:linear-gradient(90deg,var(--accent),var(--accent-light));border-radius:3px;transition:width 0.3s ease;width:0%} .file-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px} .file-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;background:var(--accent-bg);border-radius:100px;font-size:13px;color:var(--accent)} .file-chip svg{width:14px;height:14px} .file-chip .remove-file{cursor:pointer;opacity:0.6;transition:opacity 0.2s} .file-chip .remove-file:hover{opacity:1} .btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 24px;border:none;border-radius:var(--radius-sm);font-size:14px;font-family:var(--font-sans);font-weight:600;cursor:pointer;transition:all var(--transition);text-decoration:none;white-space:nowrap} .btn svg{width:18px;height:18px} .btn-primary{background:linear-gradient(135deg,var(--accent),var(--accent-light));color:var(--text-on-accent);box-shadow:var(--shadow-sm)} .btn-primary:hover{transform:translateY(-1px);box-shadow:var(--shadow-md)} .btn-primary:active{transform:translateY(0)} .btn-primary:disabled{opacity:0.5;cursor:not-allowed;transform:none} .btn-secondary{background:var(--bg-tertiary);color:var(--text-secondary);border:1px solid var(--border-color)} .btn-secondary:hover{border-color:var(--accent);color:var(--accent)} .btn-ghost{background:transparent;color:var(--text-secondary);padding:8px 14px} .btn-ghost:hover{background:var(--bg-hover);color:var(--text-primary)} .actions-bar{display:flex;justify-content:space-between;align-items:center;margin-top:16px;gap:12px;flex-wrap:wrap} .actions-left{display:flex;gap:8px;align-items:center} .actions-right{display:flex;gap:8px} .progress-bar{width:100%;height:4px;background:var(--bg-tertiary);border-radius:2px;overflow:hidden;margin-top:16px;display:none} .progress-bar.show{display:block} .progress-fill{height:100%;background:linear-gradient(90deg,var(--accent),var(--accent-light));border-radius:2px;transition:width 0.3s ease;width:0%} /* === 日志面板 === */ .log-panel-card{padding:0;overflow:hidden} .log-panel-card .card-header{padding:16px 20px;margin-bottom:0;border-bottom:1px solid var(--border-color);background:var(--bg-tertiary)} .log-pulse{width:8px;height:8px;border-radius:50%;background:var(--success);animation:pulse 1.5s infinite} .log-pulse.idle{background:var(--text-muted);animation:none} @keyframes pulse{0%,100%{opacity:1}50%{opacity:0.3}} .log-panel{background:var(--log-bg);font-family:var(--font-mono);font-size:13px;line-height:1.6;color:var(--log-text);padding:16px;max-height:400px;overflow-y:auto;} .log-entry{display:flex;gap:8px;padding:2px 0;animation:logIn 0.2s ease} .log-time{color:var(--log-muted);flex-shrink:0;font-size:12px;min-width:65px} .log-level{flex-shrink:0;font-weight:600;min-width:55px;font-size:12px} .log-level.info{color:#74b9ff} .log-level.success{color:var(--success)} .log-level.warn{color:var(--warning)} .log-level.error{color:var(--danger)} .log-message{flex:1;word-break:break-word} .log-entry.plugin-header{border-top:1px solid rgba(255,255,255,0.05);margin-top:6px;padding-top:6px} .log-entry.plugin-header .log-message{font-weight:600;color:var(--accent-light)} @keyframes logIn{from{opacity:0;transform:translateX(-8px)}to{opacity:1;transform:translateX(0)}} /* 结果卡片 */ .results-section{margin-top:32px} .results-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px} .results-header h2{font-size:20px;font-weight:700;color:var(--text-primary);display:flex;align-items:center;gap:8px} .results-header h2 svg{width:22px;height:22px;color:var(--accent)} .results-actions{display:flex;gap:8px} .results-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(380px,1fr));gap:16px} .result-card{background:var(--bg-card);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:20px;box-shadow:var(--shadow-md);transition:all var(--transition);position:relative;overflow:hidden;animation:cardIn 0.3s ease} @keyframes cardIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}} .result-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg);border-color:var(--border-strong)} .result-card.status-passed{border-left:4px solid var(--success)} .result-card.status-warning{border-left:4px solid var(--warning)} .result-card.status-failed{border-left:4px solid var(--danger)} .result-card.status-pending{border-left:4px solid var(--text-muted)} .result-card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:14px;gap:10px} .result-card-title{flex:1;min-width:0} .result-name{font-size:16px;font-weight:600;color:var(--text-primary);margin-bottom:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap} .result-url{font-size:12px;color:var(--text-muted);font-family:var(--font-mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap} .score-badge{width:56px;height:56px;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;flex-shrink:0;font-weight:700} .score-badge .score-num{font-size:20px;line-height:1} .score-badge .score-grade{font-size:10px;opacity:0.8;margin-top:2px} .score-badge.grade-S{background:var(--success-bg);color:var(--success)} .score-badge.grade-A{background:var(--success-bg);color:var(--success)} .score-badge.grade-B{background:var(--warning-bg);color:var(--warning)} .score-badge.grade-C{background:var(--warning-bg);color:var(--warning)} .score-badge.grade-D{background:var(--danger-bg);color:var(--danger)} .platform-tags{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px} .platform-tag{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:100px;font-size:12px;font-weight:500} .platform-tag svg{width:12px;height:12px} .platform-tag.tag-lx{background:var(--tag-lx-bg);color:var(--tag-lx-text)} .platform-tag.tag-qzv2{background:var(--tag-qzv2-bg);color:var(--tag-qzv2-text)} .platform-tag.tag-musicfree{background:var(--tag-musicfree-bg);color:var(--tag-musicfree-text)} .platform-tag.tag-unknown{background:var(--tag-unknown-bg);color:var(--tag-unknown-text)} .info-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px 16px;margin-bottom:14px} .info-item{display:flex;flex-direction:column;gap:2px} .info-label{font-size:11px;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.5px} .info-value{font-size:13px;color:var(--text-primary);font-weight:500} .latency-bar{display:flex;align-items:center;gap:8px;margin-bottom:6px} .latency-bar-label{font-size:12px;color:var(--text-secondary);min-width:50px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap} .latency-bar-track{flex:1;height:6px;background:var(--bg-tertiary);border-radius:3px;overflow:hidden} .latency-bar-fill{height:100%;border-radius:3px;transition:width 0.5s ease} .latency-bar-fill.good{background:var(--success)} .latency-bar-fill.ok{background:var(--warning)} .latency-bar-fill.bad{background:var(--danger)} .latency-bar-value{font-size:12px;font-weight:600;min-width:55px;text-align:right} .latency-bar-value.good{color:var(--success)} .latency-bar-value.ok{color:var(--warning)} .latency-bar-value.bad{color:var(--danger)} .quality-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:8px} .quality-tag{padding:3px 8px;border-radius:4px;font-size:11px;font-weight:500;background:var(--bg-tertiary);color:var(--text-secondary);border:1px solid var(--border-color);display:inline-flex;align-items:center;gap:2px} .quality-tag.declared{background:var(--success-bg);color:var(--success);border-color:transparent} .quality-tag.qpass{background:rgba(0,184,148,0.15);color:var(--success);border-color:rgba(0,184,148,0.3)} .quality-tag.qfail{background:rgba(225,112,85,0.15);color:var(--danger);border-color:rgba(225,112,85,0.3)} .quality-tag.untested{opacity:0.6} .quality-tag svg{width:10px;height:10px} .modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.5);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);z-index:1000;display:none;align-items:center;justify-content:center;padding:20px} .modal-overlay.show{display:flex} .modal{background:var(--bg-secondary);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);max-width:800px;width:100%;max-height:85vh;overflow:hidden;display:flex;flex-direction:column} .modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid var(--border-color)} .modal-header h3{font-size:18px;font-weight:600;color:var(--text-primary);display:flex;align-items:center;gap:8px} .modal-header h3 svg{width:20px;height:20px;color:var(--accent)} .modal-close{background:none;border:none;color:var(--text-muted);cursor:pointer;padding:4px;border-radius:6px;transition:all 0.2s} .modal-close:hover{background:var(--bg-hover);color:var(--text-primary)} .modal-close svg{width:20px;height:20px} .modal-body{padding:24px;overflow-y:auto;flex:1} .md-preview{background:var(--bg-input);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:20px;font-size:14px;line-height:1.7;color:var(--text-primary);white-space:pre-wrap;font-family:var(--font-mono);max-height:500px;overflow-y:auto} .poster-container{display:flex;justify-content:center;padding:20px 0} #poster-canvas{max-width:100%;border-radius:var(--radius-md);box-shadow:var(--shadow-lg)} .toast-container{position:fixed;bottom:24px;right:24px;z-index:2000;display:flex;flex-direction:column;gap:8px} .toast{display:flex;align-items:center;gap:10px;padding:12px 20px;background:var(--bg-secondary);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--border-color);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);color:var(--text-primary);font-size:14px;animation:toastIn 0.3s ease;max-width:380px} .toast svg{width:18px;height:18px;flex-shrink:0} .toast.success{border-left:3px solid var(--success)}.toast.success svg{color:var(--success)} .toast.error{border-left:3px solid var(--danger)}.toast.error svg{color:var(--danger)} .toast.info{border-left:3px solid var(--accent)}.toast.info svg{color:var(--accent)} @keyframes toastIn{from{opacity:0;transform:translateX(40px)}to{opacity:1;transform:translateX(0)}} .spinner{width:18px;height:18px;border:2px solid transparent;border-top-color:currentColor;border-radius:50%;animation:spin 0.8s linear infinite} @keyframes spin{to{transform:rotate(360deg)}} .empty-state{text-align:center;padding:60px 20px;color:var(--text-muted)} .empty-state svg{width:48px;height:48px;margin-bottom:16px;opacity:0.5} .empty-state p{font-size:15px} .skeleton-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:20px;height:200px;position:relative;overflow:hidden} .skeleton-card::after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,transparent,var(--bg-hover),transparent);animation:shimmer 1.5s infinite} @keyframes shimmer{to{transform:translateX(100%)}} @media(max-width:768px){ .hero h1{font-size:26px}.hero p{font-size:14px} .results-grid{grid-template-columns:1fr}.info-grid{grid-template-columns:1fr} .navbar-brand .brand-subtitle{display:none} .actions-bar{flex-direction:column;align-items:stretch} .actions-left,.actions-right{justify-content:stretch} .actions-left .btn,.actions-right .btn{flex:1;justify-content:center} .container{padding:16px 12px 40px}.card{padding:16px} .theme-dropdown-btn span{display:none} .platforms-grid{grid-template-columns:1fr} } .footer{text-align:center;padding:40px 20px 20px;color:var(--text-muted);font-size:13px} .footer a{color:var(--accent);text-decoration:none}