*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:system-ui;color:#fff;background:#02030b}body{background-image:radial-gradient(circle at 15% 20%,#ffffff 0 1px,transparent 2px),radial-gradient(circle at 80% 35%,#8ac7ff 0 1px,transparent 2px),radial-gradient(circle at 55% 80%,#9b8cff 0 1px,transparent 2px),radial-gradient(ellipse at 50% 35%,#17215f 0,#06071d 35%,#010107 75%);background-size:170px 150px,230px 190px,310px 270px,100% 100%;background-attachment:fixed}header{text-align:center;padding:35px 20px 25px;background:#0004;backdrop-filter:blur(4px)}h1{font-size:clamp(32px,6vw,64px);margin:0;letter-spacing:.14em;text-shadow:0 0 20px #79c}header p{opacity:.8}.upload{display:inline-block;padding:12px 20px;border:1px solid #ffffff44;border-radius:12px;background:#ffffff12;cursor:pointer}.upload input{display:none}main{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:28px;padding:30px;max-width:1600px;margin:auto}.card{background:#ffffff0d;border:1px solid #ffffff18;border-radius:18px;overflow:hidden;box-shadow:0 12px 35px #0008;cursor:pointer;transition:.2s}.card:hover{transform:translateY(-4px);border-color:#9df}.thumb{height:230px;width:100%;display:flex;align-items:center;justify-content:center;background:#0008;overflow:hidden}.thumb img,.thumb video{width:100%;height:100%;object-fit:cover}.icon{font-size:72px}.name{padding:16px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.viewer{position:fixed;inset:0;background:#000e;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:5}.hidden{display:none}.viewer img,.viewer video,.viewer iframe{max-width:92vw;max-height:78vh;width:min(1200px,92vw);border:0;border-radius:10px;background:#000}.viewer iframe{height:78vh}.viewer button{background:#ffffff18;color:#fff;border:1px solid #fff4;border-radius:10px;padding:8px 14px;font-size:24px}.viewer>#close{position:absolute;right:25px;top:20px}.nav{display:flex;align-items:center;gap:25px;margin-top:15px}.nav button{cursor:pointer}