.al-hdr { text-align:center; padding:40px 24px 16px; } .al-hdr h1 { font-size:clamp(24px,4vw,36px); font-weight:700; background:linear-gradient(135deg,#e9e9f5,#a09fb1); -webkit-background-clip:text; -webkit-text-fill-color:transparent; background-clip:text; margin-bottom:4px; } .al-sub { color:var(--noir-text-tertiary); font-size:13px; margin-bottom:8px; } .al-bar { max-width:1024px; margin:0 auto 12px; padding:0 24px; display:flex; gap:10px; flex-wrap:wrap; align-items:center; } .al-tabs { max-width:1024px; margin:0 auto 12px; padding:0 24px; display:flex; gap:6px; flex-wrap:wrap; } .al-tab { padding:6px 16px; border-radius:9999px; font-size:12px; font-weight:500; background:var(--noir-bg-tertiary); border:1px solid var(--noir-border-light); color:var(--noir-text-secondary); cursor:pointer; transition:all .2s; white-space:nowrap; } .al-tab:hover { border-color:var(--noir-border-medium); color:var(--noir-text-primary); } .al-tab.active { background:var(--noir-accent); color:var(--noir-text-inverse); border-color:var(--noir-accent); } .al-btn { padding:6px 16px; border-radius:9999px; font-size:12px; font-weight:500; background:linear-gradient(135deg,rgba(91,135,49,0.4),rgba(124,175,78,0.3)); border:1px solid color-mix(in srgb, var(--text-primary) 12%, transparent); color:var(--noir-text-primary); cursor:pointer; transition:all .2s; display:inline-flex; align-items:center; gap:4px; white-space:nowrap; } .al-btn:hover { background:linear-gradient(135deg,rgba(91,135,49,0.6),rgba(124,175,78,0.5)); } .al-grid { max-width:1024px; margin:0 auto; padding:0 24px 48px; display:grid; grid-template-columns:repeat(auto-fill,minmax(160px,1fr)); gap:10px; } .al-photo { position:relative; border-radius:10px; overflow:hidden; background:var(--noir-bg-elevated); border:1px solid var(--noir-border-light); cursor:pointer; aspect-ratio:1; } .al-photo img, .al-photo video { width:100%; height:100%; object-fit:cover; transition:transform .3s; } .al-photo:hover img, .al-photo:hover video { transform:scale(1.06); } .al-photo .ov { position:absolute; bottom:0; left:0; right:0; padding:8px; background:linear-gradient(transparent,rgba(0,0,0,.8)); color:#fff; font-size:11px; opacity:0; transition:opacity .2s; pointer-events:none; } .al-photo:hover .ov { opacity:1; } .al-photo .play-icon { position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); width:40px; height:40px; background:rgba(0,0,0,0.6); border-radius:50%; display:flex; align-items:center; justify-content:center; } .al-empty { grid-column:1/-1; text-align:center; padding:60px 24px; color:var(--noir-text-tertiary); } .lb { position:fixed; inset:0; z-index:2000; background:rgba(0,0,0,.92); display:none; align-items:center; justify-content:center; padding:20px; cursor:zoom-out; } .lb.open { display:flex; } .lb img, .lb video { max-width:90vw; max-height:85vh; border-radius:8px; object-fit:contain; } .lb video { max-height:80vh; } .lb .lb-info { position:fixed; bottom:30px; left:50%; transform:translateX(-50%); color:#fff; font-size:12px; opacity:.7; text-align:center; } .home-btn { position:fixed; top:16px; left:16px; z-index:100; width:36px; height:36px; border-radius:50%; background:var(--noir-bg-elevated); backdrop-filter:blur(20px); border:1px solid var(--noir-border-light); display:flex; align-items:center; justify-content:center; color:var(--noir-text-primary); text-decoration:none; transition:all .2s; box-shadow:var(--noir-shadow-xs); } .home-btn:hover { box-shadow:var(--noir-shadow-md); transform:scale(1.08); } /* ---- 上传对话框 ---- */ .up-overlay { position:fixed; inset:0; z-index:1999; background:rgba(0,0,0,.65); backdrop-filter:blur(6px); display:none; align-items:center; justify-content:center; padding:20px; } .up-overlay.open { display:flex; } .up-box { background:var(--noir-bg-elevated); border:1px solid var(--noir-border-light); border-radius:16px; padding:24px; width:100%; max-width:400px; box-shadow:var(--noir-shadow-lg); } .up-box h3 { font-size:16px; font-weight:600; margin:0 0 16px; color:var(--noir-text-primary); } .up-preview { display:flex; align-items:center; gap:12px; padding:10px 14px; border-radius:10px; background:var(--noir-bg-tertiary); margin-bottom:14px; } .up-preview img, .up-preview .up-icon { width:40px; height:40px; border-radius:6px; object-fit:cover; flex-shrink:0; } .up-preview .up-icon { display:flex; align-items:center; justify-content:center; background:var(--noir-bg-secondary); color:var(--noir-text-tertiary); font-size:18px; } .up-preview .up-fname { font-size:13px; color:var(--noir-text-primary); word-break:break-all; line-height:1.3; } .up-preview .up-fsize { font-size:11px; color:var(--noir-text-tertiary); } .up-note { width:100%; box-sizing:border-box; padding:10px 14px; border-radius:10px; border:1px solid var(--noir-border-light); background:var(--noir-bg-tertiary); color:var(--noir-text-primary); font-size:13px; outline:none; transition:border-color .2s; margin-bottom:14px; } .up-note:focus { border-color:var(--noir-accent); } .up-note::placeholder { color:var(--noir-text-tertiary); } .up-progress { margin-bottom:14px; display:none; } .up-progress.show { display:block; } .up-progress .up-bar-track { height:6px; border-radius:3px; background:var(--noir-bg-tertiary); overflow:hidden; } .up-progress .up-bar-fill { height:100%; width:0%; border-radius:3px; background:linear-gradient(90deg,#6c63ff,#a78bfa); transition:width .3s; } .up-progress .up-bar-text { display:flex; justify-content:space-between; font-size:11px; color:var(--noir-text-tertiary); margin-top:4px; } .up-actions { display:flex; gap:8px; justify-content:flex-end; } .up-btn { padding:8px 20px; border-radius:9999px; font-size:13px; font-weight:500; border:1px solid var(--noir-border-light); cursor:pointer; transition:all .2s; } .up-btn:hover { border-color:var(--noir-border-medium); } .up-btn.primary { background:var(--noir-accent); color:var(--noir-text-inverse); border-color:var(--noir-accent); } .up-btn.primary:hover { filter:brightness(1.12); } .up-btn.primary:disabled { opacity:.5; cursor:not-allowed; filter:none; } .up-btn.cancel { background:transparent; color:var(--noir-text-secondary); } .up-btn.cancel:hover { color:var(--noir-text-primary); } @media(max-width:640px){ .al-grid { grid-template-columns:repeat(2,1fr); gap:8px; padding:0 12px 32px; } .lb img, .lb video { max-width:100vw; max-height:70vh; } }