/* ===========================
   MINESITE — mods.css
   =========================== */

@import url('https://fonts.googleapis.com/css2?family=Press+Start+2P&family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;0,9..40,500;0,9..40,600;1,9..40,400&family=DM+Mono:wght@400;500&display=swap');

:root {
  --bg:#060b06;--bg-2:#0d160d;--bg-3:#131f13;--bg-card:#0f1a0f;
  --bg-elevated:#172417;
  --border:#1f3320;--border-2:#2e5030;--border-focus:#4ade80;
  --green:#4ade80;--green-dim:#34c265;--green-muted:#2a9e52;
  --green-glow:rgba(74,222,128,0.18);--green-soft:rgba(74,222,128,0.08);
  --gold:#f59e0b;--gold-soft:rgba(245,158,11,0.1);
  --cyan:#06b6d4;--cyan-soft:rgba(6,182,212,0.08);
  --amber:#fb923c;
  --java-color:#06b6d4;--bedrock-color:#f59e0b;
  --text:#e2f0e2;--text-2:#9dbe9d;--text-3:#5e7e5e;--text-inv:#060b06;
  --danger:#f87171;--success:#4ade80;--warning:#f59e0b;
  --sans:'DM Sans',system-ui,-apple-system,sans-serif;
  --mono:'DM Mono','Courier New',monospace;
  --pixel:'Press Start 2P',cursive;
  --radius:6px;--radius-lg:12px;--radius-xl:18px;
  --dur-fast:0.15s;--dur-base:0.22s;--dur-slow:0.4s;
  --ease:cubic-bezier(0.22,1,0.36,1);
  --transition:all var(--dur-base) var(--ease);
  --sidebar-w:272px;
}
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box;}
html{scroll-behavior:smooth;overflow-x:hidden;}
body{font-family:var(--sans);background:var(--bg);color:var(--text);line-height:1.7;min-height:100vh;display:flex;flex-direction:column;overflow-x:hidden;background-image:linear-gradient(rgba(74,222,128,0.018) 1px,transparent 1px),linear-gradient(90deg,rgba(74,222,128,0.018) 1px,transparent 1px);background-size:32px 32px;-webkit-font-smoothing:antialiased;}
.pixel{font-family:var(--pixel);letter-spacing:0.05em;}
.container{max-width:1280px;margin:0 auto;padding:0 1.5rem;width:100%;}
.skip-link{position:absolute;top:-40px;left:0;background:var(--green);color:var(--bg);padding:8px 16px;font-weight:700;text-decoration:none;z-index:300;}
.skip-link:focus{top:0;}
/* ============================================================
   HEADER — matches index / style.css
   ============================================================ */
.site-header {
  position: sticky; top: 0; z-index: 200;
  background: rgba(6, 11, 6, 0.9);
  backdrop-filter: blur(20px) saturate(1.4);
  border-bottom: 1px solid var(--border);
}
.nav-container {
  display: flex; align-items: center;
  justify-content: space-between;
  height: 68px; gap: 1rem;
}

/* Logo */
.logo {
  display: flex; align-items: center; gap: 0.7rem;
  text-decoration: none; flex-shrink: 0;
  transition: var(--transition);
}
.logo-icon-svg {
  width: 34px; height: 34px; flex-shrink: 0;
  border-radius: 8px; border: 1px solid var(--border-2);
}
.logo-text {
  font-family: var(--pixel); font-size: 0.65rem;
  color: var(--green); letter-spacing: 0.1em;
  text-shadow: 0 0 16px rgba(74, 222, 128, 0.55);
  transition: color var(--dur-base) var(--ease);
}
.logo:hover .logo-text { color: #b9f5d0; }

/* Nav links */
.main-nav ul  { display: flex; gap: 1.5rem; list-style: none; align-items: center; }
.main-nav a {
  font-family: var(--sans); font-size: 0.875rem;
  font-weight: 500; color: var(--text-2);
  text-decoration: none; letter-spacing: 0.01em;
  transition: color var(--dur-base) var(--ease);
  position: relative; padding-bottom: 2px;
}
.main-nav a::after {
  content: ''; position: absolute; bottom: 0; left: 0;
  width: 0; height: 2px;
  background: var(--green); border-radius: 1px;
  transition: width var(--dur-base) var(--ease);
}
.main-nav a:hover        { color: var(--text); }
.main-nav a:hover::after { width: 100%; }
.main-nav a.active       { color: var(--green); }
.main-nav a.active::after { width: 100%; }

/* Download CTA */
.nav-cta {
  background: var(--green-soft) !important;
  border: 1px solid var(--border-2) !important;
  border-radius: 999px !important;
  padding: 0.42rem 1.1rem !important;
  color: var(--green) !important;
  font-size: 0.82rem !important;
  font-weight: 600 !important;
  letter-spacing: 0 !important;
}
.nav-cta:hover {
  background: rgba(74, 222, 128, 0.14) !important;
  border-color: var(--green-muted) !important;
  color: #b9f5d0 !important;
}
.nav-cta::after { display: none !important; }

/* Hamburger */
.mobile-menu-toggle {
  display: none; flex-direction: column; gap: 5px;
  background: none; border: 1px solid transparent; cursor: pointer;
  padding: 0.5rem; border-radius: var(--radius);
  transition: border-color var(--dur-base) var(--ease);
}
.mobile-menu-toggle:hover { border-color: var(--border-2); }
.burger-line {
  display: block; width: 22px; height: 2px;
  background: var(--text-2); border-radius: 2px;
  transition: var(--transition);
}

/* EDITION SWITCHER */
.edition-bar{background:var(--bg-2);border-bottom:1px solid var(--border);padding:0.85rem 0;position:sticky;top:64px;z-index:90;}
.edition-bar-inner{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;}
.edition-explain{font-size:0.7rem;color:var(--text-3);max-width:480px;line-height:1.6;}
.edition-toggle{display:flex;gap:0;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;flex-shrink:0;}
.edition-toggle-btn{display:flex;align-items:center;gap:0.5rem;padding:0.65rem 1.25rem;background:transparent;border:none;color:var(--text-3);font-family:var(--pixel);font-size:0.45rem;cursor:pointer;transition:var(--transition);letter-spacing:0.07em;border-right:1px solid var(--border);white-space:nowrap;}
.edition-toggle-btn:last-child{border-right:none;}
.edition-toggle-btn:hover{color:var(--text-2);background:var(--bg-3);}
.edition-toggle-btn.active[data-edition="java"]{background:rgba(34,211,238,0.08);color:var(--java-color);border-bottom:2px solid var(--java-color);}
.edition-toggle-btn.active[data-edition="bedrock"]{background:rgba(251,191,36,0.08);color:var(--bedrock-color);border-bottom:2px solid var(--bedrock-color);}

/* LAYOUT */
.layout{display:flex;flex:1;}
.sidebar{width:var(--sidebar-w);min-width:var(--sidebar-w);background:var(--bg-2);border-right:1px solid var(--border);padding:2rem 1.5rem;position:sticky;top:111px;height:calc(100vh - 111px);overflow-y:auto;display:flex;flex-direction:column;gap:1.5rem;}
.sidebar::-webkit-scrollbar{width:4px;}
.sidebar::-webkit-scrollbar-thumb{background:var(--border-2);border-radius:2px;}
.sidebar-title{font-family:var(--pixel);font-size:0.5rem;color:var(--text-3);letter-spacing:0.2em;text-transform:uppercase;padding-bottom:1rem;border-bottom:1px solid var(--border);}
.search-box{position:relative;}
.search-box svg{position:absolute;left:0.75rem;top:50%;transform:translateY(-50%);color:var(--text-3);pointer-events:none;}
.search-input{width:100%;padding:0.7rem 0.75rem 0.7rem 2.25rem;background:var(--bg-3);border:1px solid var(--border);color:var(--text);border-radius:var(--radius);font-family:var(--mono);font-size:0.8rem;transition:var(--transition);}
.search-input:focus{outline:none;border-color:var(--green-dim);box-shadow:0 0 0 3px var(--green-glow);}
.search-input::placeholder{color:var(--text-3);}
.filter-section-label{font-size:0.55rem;font-family:var(--pixel);color:var(--text-3);letter-spacing:0.15em;text-transform:uppercase;margin-bottom:0.75rem;}
.cat-filters{display:flex;flex-direction:column;gap:0.3rem;}
.cat-btn{padding:0.5rem 0.75rem;background:transparent;border:1px solid var(--border);color:var(--text-2);font-family:var(--mono);font-size:0.72rem;cursor:pointer;border-radius:var(--radius);transition:var(--transition);text-align:left;}
.cat-btn:hover{border-color:var(--border-2);color:var(--text);}
.cat-btn.active{border-color:var(--green-dim);color:var(--green);background:rgba(74,222,128,0.06);}
.filter-group{display:flex;flex-direction:column;gap:0.25rem;}
.filter-label{display:flex;align-items:center;gap:0.65rem;padding:0.45rem 0.5rem;cursor:pointer;border-radius:var(--radius);transition:var(--transition);font-size:0.78rem;color:var(--text-2);}
.filter-label:hover{background:var(--bg-3);color:var(--text);}
.filter-checkbox{appearance:none;width:16px;height:16px;border:1px solid var(--border-2);background:var(--bg);border-radius:2px;cursor:pointer;flex-shrink:0;transition:var(--transition);position:relative;}
.filter-checkbox:checked{background:var(--green-dim);border-color:var(--green-dim);}
.filter-checkbox:checked::after{content:'✓';position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:var(--bg);font-size:10px;font-weight:700;}
.sidebar-footer{margin-top:auto;}
.reset-btn{width:100%;padding:0.65rem;background:transparent;border:1px solid var(--border);color:var(--text-3);font-family:var(--mono);font-size:0.75rem;cursor:pointer;border-radius:var(--radius);transition:var(--transition);}
.reset-btn:hover{border-color:var(--green-dim);color:var(--green);}

/* MAIN */
.main{flex:1;padding:2.5rem 2.5rem 3rem;display:flex;flex-direction:column;min-width:0;}
.page-header{margin-bottom:2rem;padding-bottom:1.5rem;border-bottom:1px solid var(--border);}
.page-header-top{display:flex;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;gap:1rem;}
.page-title{font-family:var(--pixel);font-size:clamp(0.7rem,2vw,1rem);line-height:1.6;color:var(--text);}
.page-subtitle{font-size:0.78rem;color:var(--text-2);margin-top:0.3rem;margin-bottom:0.25rem;}
.page-count{font-size:0.75rem;color:var(--text-3);margin-top:0.2rem;}
.page-count span{color:var(--green);}
.sort-bar{display:flex;align-items:center;gap:0.75rem;margin-bottom:1.5rem;flex-wrap:wrap;}
.sort-label{font-size:0.65rem;color:var(--text-3);}
.sort-select{padding:0.4rem 0.75rem;background:var(--bg-2);border:1px solid var(--border);color:var(--text-2);border-radius:var(--radius);font-family:var(--mono);font-size:0.75rem;cursor:pointer;transition:var(--transition);}
.sort-select:focus{outline:none;border-color:var(--green-dim);}

/* Filter button in sort bar — hidden on desktop, shown on mobile via media query */
.filter-sort-btn { display: none; cursor: pointer; }

/* Close button inside sidebar — hidden on desktop */
.close-mobile-btn {
  display: none;
  background: rgba(248,113,113,0.08);
  border-color: rgba(248,113,113,0.3);
  color: #f87171;
}
.close-mobile-btn:hover {
  background: rgba(248,113,113,0.15) !important;
  border-color: #f87171 !important;
  color: #f87171 !important;
}

/* MOD GRID & CARDS */
.mod-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.25rem;flex:1;}
.mod-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;display:flex;flex-direction:column;transition:var(--transition);position:relative;}
.mod-card::before{content:'';position:absolute;inset:0;opacity:0;transition:opacity 0.3s;pointer-events:none;border-radius:var(--radius-lg);}
.mod-card:hover{border-color:var(--border-2);transform:translateY(-3px);box-shadow:0 10px 36px rgba(0,0,0,0.5);}
.mod-card:hover::before{opacity:1;}
body.java-mode .mod-card::before{background:linear-gradient(135deg,rgba(34,211,238,0.04) 0%,transparent 60%);}
body.java-mode .mod-card:hover{box-shadow:0 10px 36px rgba(0,0,0,0.5),0 0 0 1px rgba(34,211,238,0.08);}
body.bedrock-mode .mod-card::before{background:linear-gradient(135deg,rgba(251,191,36,0.04) 0%,transparent 60%);}
body.bedrock-mode .mod-card:hover{box-shadow:0 10px 36px rgba(0,0,0,0.5),0 0 0 1px rgba(251,191,36,0.08);}
.mod-card-header{padding:1.25rem 1.25rem 0;display:flex;align-items:flex-start;gap:1rem;}
.mod-icon{width:52px;height:52px;border-radius:var(--radius-lg);object-fit:cover;flex-shrink:0;border:1px solid var(--border-2);background:var(--bg-3);}
.mod-icon-placeholder{width:52px;height:52px;border-radius:var(--radius-lg);background:var(--bg-3);border:1px solid var(--border-2);display:flex;align-items:center;justify-content:center;font-size:1.4rem;flex-shrink:0;}
.mod-header-info{flex:1;min-width:0;}
.mod-title{font-family:var(--pixel);font-size:0.52rem;line-height:1.7;color:var(--text);margin-bottom:0.3rem;}
.mod-author{font-size:0.65rem;color:var(--text-3);}
.mod-card-body{padding:0.9rem 1.25rem 1.25rem;display:flex;flex-direction:column;gap:0.65rem;flex:1;}
.mod-desc{font-size:0.75rem;color:var(--text-2);line-height:1.7;flex:1;}
.mod-meta{display:flex;flex-wrap:wrap;gap:0.4rem;}
.mod-badge{font-size:0.55rem;padding:0.2rem 0.55rem;border-radius:2px;text-transform:uppercase;letter-spacing:0.07em;border:1px solid;}
.badge-cat{color:var(--purple);border-color:rgba(192,132,252,0.3);background:rgba(192,132,252,0.06);}
.badge-loader{color:var(--gold);border-color:rgba(251,191,36,0.3);background:rgba(251,191,36,0.06);}
.badge-version{color:var(--text-3);border-color:var(--border-2);}
.badge-bedrock{color:var(--bedrock-color);border-color:rgba(251,191,36,0.35);background:rgba(251,191,36,0.07);}
.badge-java-tag{color:var(--java-color);border-color:rgba(34,211,238,0.35);background:rgba(34,211,238,0.07);}
.mod-card-footer{padding:0 1.25rem 1.25rem;display:flex;gap:0.5rem;}
.mod-download-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:0.5rem;padding:0.65rem;background:transparent;border:1px solid var(--green-dim);color:var(--green);font-family:var(--pixel);font-size:0.45rem;letter-spacing:0.08em;text-decoration:none;border-radius:var(--radius);transition:var(--transition);cursor:pointer;}
.mod-download-btn:hover{background:var(--green);color:var(--bg);box-shadow:0 0 16px rgba(74,222,128,0.3);}
.mod-source-btn{padding:0.65rem 0.9rem;background:transparent;border:1px solid var(--border);color:var(--text-3);font-family:var(--mono);font-size:0.7rem;text-decoration:none;border-radius:var(--radius);transition:var(--transition);display:flex;align-items:center;gap:0.35rem;}
.mod-source-btn:hover{border-color:var(--border-2);color:var(--text-2);}
.source-modrinth{color:#1bd96a;}
.source-curseforge{color:#f16436;}
.source-mcpedl{color:var(--gold);}
.state-msg{grid-column:1/-1;padding:3rem;text-align:center;color:var(--text-3);font-size:0.8rem;border:1px dashed var(--border-2);border-radius:var(--radius-lg);}
.state-msg .state-icon{font-size:2rem;display:block;margin-bottom:1rem;}
.pagination{display:flex;justify-content:center;align-items:center;gap:1rem;margin-top:2.5rem;padding-top:2rem;border-top:1px solid var(--border);}
.page-btn{background:transparent;border:1px solid var(--border);color:var(--text-2);padding:0.6rem 1.1rem;font-family:var(--mono);font-size:0.75rem;cursor:pointer;border-radius:var(--radius);transition:var(--transition);}
.page-btn:hover:not(:disabled){border-color:var(--green-dim);color:var(--green);}
.page-btn:disabled{opacity:0.3;cursor:not-allowed;}
.page-info{font-size:0.7rem;color:var(--text-3);}
.page-info span{color:var(--text-2);}
.mobile-filter-btn{display:none;position:fixed;bottom:1.5rem;right:1.5rem;background:var(--green);color:var(--bg);border:none;padding:0.75rem 1.25rem;font-family:var(--pixel);font-size:0.5rem;border-radius:40px;cursor:pointer;z-index:90;box-shadow:0 4px 16px rgba(74,222,128,0.4);}
/* ============================================================
   FOOTER — matches index / style.css
   ============================================================ */
.site-footer {
  margin-top: auto;
  background: var(--bg-2);
  border-top: 1px solid var(--border);
}
.footer-inner-grid {
  display: grid;
  grid-template-columns: 1.8fr 1fr 1fr;
  gap: 3rem;
  padding: 3.5rem 0 3rem;
}
.footer-brand { display: flex; flex-direction: column; gap: 1rem; }
.footer-logo {
  font-family: var(--pixel); font-size: 0.7rem;
  color: var(--green); letter-spacing: 0.1em;
  text-shadow: 0 0 12px rgba(74,222,128,0.4);
}
.footer-brand p {
  font-size: 0.85rem; color: var(--text-3);
  line-height: 1.7; max-width: 280px;
}
.footer-col h4 {
  font-family: var(--pixel); font-size: 0.5rem;
  color: var(--text-2); letter-spacing: 0.12em;
  text-transform: uppercase; margin-bottom: 1rem;
}
.footer-col ul { list-style: none; display: flex; flex-direction: column; gap: 0.55rem; }
.footer-col a {
  font-size: 0.85rem; color: var(--text-3);
  text-decoration: none; transition: color var(--dur-base) var(--ease);
}
.footer-col a:hover { color: var(--green); }
.footer-bottom-bar {
  border-top: 1px solid var(--border);
  padding: 1rem 0;
  background: rgba(6,11,6,0.6);
}
.footer-bottom-inner {
  display: flex; align-items: center;
  justify-content: space-between; gap: 1rem;
}
.footer-bottom-inner small { font-size: 0.78rem; color: var(--text-3); }
@media(max-width:960px){
  .mobile-menu-toggle{display:flex;}
  .main-nav{
    position:fixed;top:68px;left:0;right:0;
    background:rgba(6,11,6,0.98);backdrop-filter:blur(20px);
    padding:1.5rem;visibility: hidden; opacity: 0; pointer-events: none;
    transition: opacity var(--dur-base) var(--ease), visibility var(--dur-base) var(--ease);
    border-bottom:1px solid var(--border);z-index:199;
  }
  .main-nav.open{visibility: visible; opacity: 1; pointer-events: auto;}
  .main-nav ul{flex-direction:column;gap:1.2rem;align-items:stretch;}
  .main-nav a{display:block;text-align:center;padding:0.5rem 0;}
  .nav-cta{text-align:center;}
  .edition-bar{position:static;}
  .edition-bar-inner{flex-direction:column;align-items:flex-start;}
  .edition-explain{display:none;}
  .sidebar{position:fixed;left:-100%;top:68px;height:calc(100vh - 68px);z-index:80;transition:left 0.3s ease;box-shadow:4px 0 24px rgba(0,0,0,0.5);}
  .sidebar.open{left:0;}
  /* Hide floating FAB, use sort-bar button instead */
  .mobile-filter-btn{display:none;}
  .filter-sort-btn{display:inline-flex;align-items:center;gap:0.4rem;}
  /* Show close button inside sidebar */
  .close-mobile-btn{display:block;margin-top:0.35rem;}
  .main{padding:1.5rem;}
  .mod-grid{grid-template-columns:1fr;}
  /* Footer */
  .footer-inner-grid{grid-template-columns:1fr;gap:2rem;text-align:center;}
  .footer-brand{align-items:center;}
  .footer-brand p{max-width:100%;margin:0 auto;}
  .footer-col ul{align-items:center;}
  .footer-bottom-inner{flex-direction:column;text-align:center;}
}
@media(max-width:480px){
  .edition-toggle{flex-direction:column;}
  .edition-toggle-btn{border-right:none;border-bottom:1px solid var(--border);}
  .edition-toggle-btn:last-child{border-bottom:none;}
}

@media (max-width: 768px) {
  .footer-inner-grid { grid-template-columns: 1fr; gap: 2rem; text-align: center; }
  .footer-brand { align-items: center; }
  .footer-brand p { max-width: 100%; }
  .footer-col ul { align-items: center; }
  .footer-bottom-inner { flex-direction: column; text-align: center; }
}

/* Prevent body scroll when mobile menu is open */
body.menu-open { overflow: hidden; }

/* ═══════════════════════════════════════════════════
   MOBILE OVERFLOW — FINAL GUARD
═══════════════════════════════════════════════════ */
@media (max-width: 768px) {
  html, body {
    overflow-x: hidden !important;
    max-width: 100vw !important;
  }
  .container {
    width: 100% !important;
    max-width: 100% !important;
    padding-left: 1rem !important;
    padding-right: 1rem !important;
  }
  img, video, iframe, canvas {
    max-width: 100% !important;
  }
}
