:root{
  --bg:#f5f3ea; --ink:#111; --accent:#7c3aed; --accent2:#facc15;
  --accent3:#22c55e; --pink:#ec4899; --red:#ef4444;
  --border:3px solid #111; --shadow:6px 6px 0 #111; --shadow-sm:4px 4px 0 #111;
  --font-pixel:'Press Start 2P', monospace;
  --font-main:'Space Grotesk', sans-serif;
}
body.dark{
  --bg:#0f0f14; --ink:#f5f3ea; --border:3px solid #f5f3ea;
  --shadow:6px 6px 0 #f5f3ea; --shadow-sm:4px 4px 0 #f5f3ea;
}
*{box-sizing:border-box;margin:0;padding:0;}
html,body{background:var(--bg);color:var(--ink);font-family:var(--font-main);transition:.3s;scroll-behavior:smooth;}
img{max-width:100%;display:block;}
a{color:inherit;}

.neo-header{display:flex;justify-content:space-between;align-items:center;padding:18px 24px;background:var(--accent2);border-bottom:var(--border);position:sticky;top:0;z-index:50;flex-wrap:wrap;gap:12px;}
.logo{display:flex;align-items:center;gap:10px;}
.logo h1{font-family:var(--font-pixel);font-size:18px;letter-spacing:1px;color:#111;}
.logo h1 span{color:var(--pink);}
.pixel-block{width:26px;height:26px;background:var(--accent);border:var(--border);box-shadow:3px 3px 0 #111;image-rendering:pixelated;}
.header-actions{display:flex;gap:10px;align-items:center;}

.neo-btn{background:var(--accent);color:#fff;border:var(--border);padding:12px 18px;font-weight:700;cursor:pointer;box-shadow:var(--shadow-sm);font-family:var(--font-main);transition:transform .1s, box-shadow .1s;text-transform:uppercase;letter-spacing:.5px;}
.neo-btn:hover{transform:translate(-2px,-2px);box-shadow:6px 6px 0 #111;}
.neo-btn:active{transform:translate(2px,2px);box-shadow:2px 2px 0 #111;}
.neo-btn:disabled{opacity:.5;cursor:not-allowed;transform:none;}
.neo-btn.small{padding:8px 12px;font-size:12px;}
.neo-btn.wide{width:100%;margin-top:24px;padding:16px;font-size:16px;}

.neo-select{border:var(--border);background:var(--bg);color:var(--ink);padding:10px;font-family:var(--font-main);font-weight:700;box-shadow:var(--shadow-sm);cursor:pointer;}
.neo-card{background:var(--bg);border:var(--border);box-shadow:var(--shadow);padding:18px;}

.hero{padding:48px 24px;text-align:center;}
.hero h2{font-family:var(--font-pixel);font-size:clamp(16px,4vw,32px);margin-bottom:20px;line-height:1.5;}
.hero p{max-width:640px;margin:0 auto 28px;font-size:16px;opacity:.85;}
.search-bar{display:flex;gap:12px;max-width:680px;margin:0 auto;background:var(--accent2);padding:14px;}
.search-bar input{flex:1;border:var(--border);padding:12px 14px;font-size:16px;font-family:var(--font-main);background:var(--bg);color:var(--ink);outline:none;min-width:0;}
.filter-row{display:flex;gap:12px;justify-content:center;margin-top:18px;flex-wrap:wrap;}

.categories{padding:32px 24px;}
.categories h3,.results h3{font-family:var(--font-pixel);font-size:14px;margin-bottom:20px;}
.cat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px;}
.cat-item{border:var(--border);background:var(--accent3);color:#fff;padding:14px;text-align:center;cursor:pointer;font-weight:700;box-shadow:var(--shadow-sm);transition:transform .1s;text-transform:uppercase;font-size:12px;user-select:none;}
.cat-item:nth-child(3n){background:var(--accent);}
.cat-item:nth-child(3n+1){background:var(--pink);}
.cat-item:hover{transform:translate(-2px,-2px);box-shadow:6px 6px 0 #111;}
.cat-item.active{background:var(--ink);color:var(--bg);}

.results{padding:32px 24px 80px;}
.results-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;}
.badge{background:var(--accent);color:#fff;border:var(--border);padding:6px 12px;font-weight:700;box-shadow:var(--shadow-sm);font-size:12px;}
.mod-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:20px;}
.mod-card{border:var(--border);background:var(--bg);padding:14px;box-shadow:var(--shadow-sm);cursor:pointer;transition:transform .15s, box-shadow .15s;display:flex;flex-direction:column;}
.mod-card:hover{transform:translate(-3px,-3px);box-shadow:8px 8px 0 #111;}
.mod-thumb{width:100%;height:140px;object-fit:cover;border:var(--border);margin-bottom:12px;background:#ddd;}
.mod-name{font-weight:700;font-size:14px;margin-bottom:6px;line-height:1.3;}
.mod-author{font-size:12px;opacity:.7;margin-bottom:6px;}
.mod-desc{font-size:12px;opacity:.85;margin-bottom:10px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.mod-stats{display:flex;gap:6px;font-size:11px;margin-top:auto;flex-wrap:wrap;}
.mod-stats span{background:var(--accent2);border:2px solid #111;padding:3px 7px;font-weight:700;color:#111;}

.empty{text-align:center;padding:60px 20px;font-weight:700;opacity:.6;}

.loader{display:flex;flex-direction:column;align-items:center;gap:16px;padding:48px;}
.pixel-spinner{width:40px;height:40px;background:var(--accent);border:var(--border);animation:pixel-spin 1s steps(4) infinite;}
@keyframes pixel-spin{0%{transform:rotate(0deg);background:var(--accent);}25%{transform:rotate(90deg);background:var(--pink);}50%{transform:rotate(180deg);background:var(--accent3);}75%{transform:rotate(270deg);background:var(--accent2);}100%{transform:rotate(360deg);background:var(--accent);}}
.hidden{display:none !important;}

.popup-overlay{position:fixed;inset:0;background:rgba(0,0,0,.7);display:flex;align-items:center;justify-content:center;z-index:200;padding:20px;animation:fadeIn .2s;}
@keyframes fadeIn{from{opacity:0;}to{opacity:1;}}
.popup-box{max-width:680px;width:100%;max-height:90vh;overflow-y:auto;position:relative;animation:popIn .25s;background:var(--bg);}
@keyframes popIn{from{transform:scale(.9) rotate(-2deg);opacity:0;}to{transform:scale(1) rotate(0);opacity:1;}}
.popup-close{position:absolute;top:12px;right:12px;background:var(--pink);color:#fff;border:var(--border);width:36px;height:36px;font-weight:700;cursor:pointer;box-shadow:3px 3px 0 #111;font-size:16px;z-index:2;}
.popup-close:hover{transform:translate(-2px,-2px);box-shadow:5px 5px 0 #111;}

.toast{position:fixed;bottom:30px;left:50%;transform:translateX(-50%);background:var(--accent);color:#fff;border:var(--border);padding:14px 24px;font-weight:700;box-shadow:var(--shadow);z-index:300;animation:slideUp .3s;max-width:90vw;text-align:center;}
@keyframes slideUp{from{transform:translate(-50%,40px);opacity:0;}to{transform:translate(-50%,0);opacity:1;}}

.neo-footer{padding:24px;text-align:center;background:var(--ink);color:var(--bg);border-top:var(--border);font-size:13px;}

.mod-detail-header{display:flex;gap:16px;margin-bottom:20px;flex-wrap:wrap;}
.mod-detail-header img{width:120px;height:120px;object-fit:cover;border:var(--border);}
.mod-detail-info{flex:1;min-width:200px;}
.mod-detail-info h2{font-family:var(--font-pixel);font-size:14px;margin-bottom:10px;line-height:1.5;}
.mod-detail-info p{font-size:13px;opacity:.85;margin-bottom:10px;}
.mod-detail-links{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px;}
.mod-detail-links a{background:var(--accent2);color:#111;border:2px solid #111;padding:6px 10px;font-weight:700;text-decoration:none;font-size:11px;box-shadow:3px 3px 0 #111;}
.mod-detail-links a:hover{transform:translate(-2px,-2px);box-shadow:5px 5px 0 #111;}

.file-list{margin-top:20px;}
.file-list h4{font-family:var(--font-pixel);font-size:12px;margin-bottom:14px;}
.file-item{display:flex;justify-content:space-between;align-items:center;border:var(--border);padding:12px;margin-bottom:10px;background:var(--accent2);color:#111;gap:10px;flex-wrap:wrap;}
.file-item .fname{font-weight:700;font-size:13px;word-break:break-all;flex:1;min-width:150px;}
.file-item .fmeta{font-size:11px;opacity:.8;display:flex;gap:8px;flex-wrap:wrap;}
.file-item .fmeta b{background:#111;color:#facc15;padding:2px 6px;border-radius:2px;}
.dl-btn{background:var(--accent3);color:#fff;border:var(--border);padding:8px 14px;font-weight:700;cursor:pointer;box-shadow:3px 3px 0 #111;font-size:12px;font-family:var(--font-main);text-decoration:none;display:inline-block;}
.dl-btn:hover{transform:translate(-2px,-2px);box-shadow:5px 5px 0 #111;}
.dl-btn.red{background:var(--red);}

@media(max-width:600px){
  .neo-header{flex-direction:column;}
  .hero{padding:32px 16px;}
  .categories,.results{padding:24px 16px;}
  .search-bar{flex-direction:column;}
  .search-bar .neo-btn{width:100%;}
}