*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}

:root{
    --bg:#f0fdf4;
    --bg-deep:#e0f2e9;
    --surface:#ffffff;
    --surface-hover:#f7fef9;
    --text:#1a2e1a;
    --text-secondary:#4a6b4a;
    --text-muted:#7a9a7a;
    --border:rgba(34,197,94,0.15);
    --border-strong:rgba(34,197,94,0.3);
    --accent:#22c55e;
    --accent-soft:rgba(34,197,94,0.1);
    --accent-glow:rgba(34,197,94,0.25);
    --mint:#6ee7b7;
    --glacier:#7dd3fc;
    --glacier-soft:rgba(125,211,252,0.12);
    --warning:#f59e0b;
    --danger:#ef4444;
    --shadow-sm:0 1px 3px rgba(0,0,0,0.06);
    --shadow-md:0 4px 16px rgba(0,0,0,0.08);
    --shadow-lg:0 8px 32px rgba(0,0,0,0.1);
    --radius-sm:8px;
    --radius-md:14px;
    --radius-lg:20px;
    --radius-xl:28px;
    --topbar-h:60px;
    --transition:0.35s cubic-bezier(0.4,0,0.2,1);
}

body.night-mode{
    --bg:#1c1525;
    --bg-deep:#15101e;
    --surface:#241d30;
    --surface-hover:#2d2540;
    --text:#f5e6d3;
    --text-secondary:#d4bfa6;
    --text-muted:#9a8a7a;
    --border:rgba(253,186,116,0.12);
    --border-strong:rgba(253,186,116,0.25);
    --accent:#fbbf24;
    --accent-soft:rgba(251,191,36,0.1);
    --accent-glow:rgba(251,191,36,0.2);
    --mint:#f9a8d4;
    --glacier:#c4b5fd;
    --glacier-soft:rgba(196,181,253,0.1);
    --warning:#fb923c;
    --danger:#f87171;
    --shadow-sm:0 1px 3px rgba(0,0,0,0.2);
    --shadow-md:0 4px 16px rgba(0,0,0,0.25);
    --shadow-lg:0 8px 32px rgba(0,0,0,0.35);
}

html{scroll-behavior:smooth}

body{
    font-family:-apple-system,BlinkMacSystemFont,'Segoe UI','PingFang SC','Hiragino Sans GB','Microsoft YaHei',sans-serif;
    background:var(--bg);
    color:var(--text);
    line-height:1.6;
    min-height:100vh;
    transition:background var(--transition),color var(--transition);
    overflow-x:hidden;
}

body::before{
    content:'';
    position:fixed;
    inset:0;
    background:
        radial-gradient(ellipse 80% 60% at 20% 10%,var(--accent-glow),transparent),
        radial-gradient(ellipse 60% 50% at 80% 80%,var(--glacier-soft),transparent);
    pointer-events:none;
    z-index:0;
    transition:opacity var(--transition);
}

a{color:var(--accent);text-decoration:none;transition:color var(--transition)}
a:hover{color:var(--mint);text-decoration:underline}

code{
    background:var(--accent-soft);
    padding:2px 8px;
    border-radius:4px;
    font-size:0.9em;
    color:var(--accent)
}

.inline-icon{width:16px;height:16px;display:inline-block;vertical-align:middle;margin-right:4px}

.top-bar{
    position:fixed;
    top:0;left:0;right:0;
    height:var(--topbar-h);
    background:var(--surface);
    border-bottom:1px solid var(--border);
    backdrop-filter:blur(20px);
    -webkit-backdrop-filter:blur(20px);
    z-index:100;
    transition:background var(--transition),border-color var(--transition);
}

.top-bar-inner{
    max-width:1200px;
    margin:0 auto;
    height:100%;
    display:flex;
    align-items:center;
    padding:0 24px;
    gap:16px;
}

.brand{
    display:flex;
    align-items:center;
    gap:8px;
    font-weight:700;
    font-size:1.05em;
    cursor:pointer;
    white-space:nowrap;
    color:var(--text);
    transition:color var(--transition);
}

.brand:hover{color:var(--accent)}

.brand-icon{width:22px;height:22px;color:var(--accent)}

.top-nav{
    display:flex;
    align-items:center;
    gap:4px;
    flex:1;
    overflow-x:auto;
    scrollbar-width:none;
}

.top-nav::-webkit-scrollbar{display:none}

.nav-link{
    display:flex;
    align-items:center;
    gap:5px;
    padding:6px 14px;
    border-radius:var(--radius-sm);
    font-size:0.88em;
    color:var(--text-secondary);
    cursor:pointer;
    white-space:nowrap;
    transition:all var(--transition);
    text-decoration:none;
    user-select:none;
}

.nav-link svg{width:15px;height:15px}

.nav-link:hover{
    color:var(--accent);
    background:var(--accent-soft)
}

.nav-link.active{
    color:var(--accent);
    background:var(--accent-soft);
    font-weight:600
}

.top-actions{display:flex;gap:6px;align-items:center}

.mobile-top-actions{display:none;gap:6px;align-items:center}

.icon-btn{
    width:36px;height:36px;
    border-radius:var(--radius-sm);
    border:1px solid var(--border);
    background:var(--surface);
    color:var(--text-secondary);
    cursor:pointer;
    display:flex;align-items:center;justify-content:center;
    transition:all var(--transition);
}

.icon-btn svg{width:16px;height:16px}

.icon-btn:hover{
    background:var(--accent-soft);
    color:var(--accent);
    border-color:var(--accent)
}

.mobile-menu-btn{
    display:none;
    width:36px;height:36px;
    border-radius:var(--radius-sm);
    border:1px solid var(--border);
    background:var(--surface);
    color:var(--text-secondary);
    cursor:pointer;
    align-items:center;justify-content:center;
    transition:all var(--transition);
}

.mobile-menu-btn svg{width:18px;height:18px}

.mobile-nav-overlay{
    display:none;
    position:fixed;inset:0;
    background:rgba(0,0,0,0.5);
    z-index:150;
    opacity:0;
    transition:opacity var(--transition);
}

.mobile-nav-overlay.show{display:block;opacity:1}

.mobile-nav{
    position:fixed;
    top:0;right:-300px;
    width:280px;height:100vh;
    background:var(--surface);
    z-index:200;
    padding:20px;
    display:flex;flex-direction:column;gap:4px;
    transition:right var(--transition),background var(--transition);
    box-shadow:var(--shadow-lg);
}

.mobile-nav.open{right:0}

.mobile-nav-header{
    display:flex;align-items:center;justify-content:space-between;
    margin-bottom:16px;padding-bottom:16px;
    border-bottom:1px solid var(--border)
}

.mobile-nav-link{
    display:flex;align-items:center;gap:10px;
    padding:12px 14px;
    border-radius:var(--radius-sm);
    color:var(--text-secondary);
    cursor:pointer;
    transition:all var(--transition);
    text-decoration:none;
    font-size:0.95em;
}

.mobile-nav-link svg{width:18px;height:18px}

.mobile-nav-link:hover,.mobile-nav-link.active{
    background:var(--accent-soft);
    color:var(--accent)
}

.main-wrap{
    position:relative;
    z-index:1;
    max-width:1200px;
    margin:0 auto;
    padding:calc(var(--topbar-h) + 24px) 24px 60px;
    min-height:100vh;
}

.page{display:none}
.page.active{display:block}

.page-back{
    display:inline-flex;align-items:center;gap:6px;
    color:var(--text-muted);
    font-size:0.9em;
    cursor:pointer;
    margin-bottom:16px;
    padding:6px 12px;
    border-radius:var(--radius-sm);
    transition:all var(--transition);
}

.page-back svg{width:16px;height:16px}

.page-back:hover{
    color:var(--accent);
    background:var(--accent-soft)
}

.page-title{
    font-size:1.6em;
    font-weight:700;
    margin-bottom:24px;
    display:flex;align-items:center;gap:10px;
    color:var(--text)
}

.page-title svg{width:28px;height:28px;color:var(--accent)}

.hero{
    text-align:center;
    padding:48px 20px 32px;
    position:relative;
}

.hero-badge{
    display:inline-flex;align-items:center;gap:6px;
    background:var(--accent-soft);
    color:var(--accent);
    padding:6px 16px;
    border-radius:20px;
    font-size:0.85em;
    font-weight:600;
    margin-bottom:16px;
}

.hero-title{
    font-size:2.4em;
    font-weight:800;
    background:linear-gradient(135deg,var(--accent),var(--glacier),var(--mint));
    -webkit-background-clip:text;
    -webkit-text-fill-color:transparent;
    background-clip:text;
    margin-bottom:10px;
    line-height:1.2;
}

.hero-sub{
    color:var(--text-muted);
    font-size:1em;
    max-width:500px;
    margin:0 auto 24px;
}

.hero-stats{
    display:flex;
    justify-content:center;
    flex-wrap:wrap;
    gap:10px;
}

.stat-chip{
    display:inline-flex;align-items:center;gap:6px;
    background:var(--surface);
    border:1px solid var(--border);
    padding:8px 16px;
    border-radius:var(--radius-xl);
    font-size:0.88em;
    color:var(--text-secondary);
    transition:all var(--transition);
    box-shadow:var(--shadow-sm);
}

.stat-chip.clickable{cursor:pointer}
.stat-chip.clickable:hover{
    border-color:var(--accent);
    box-shadow:var(--shadow-md)
}

.chip-icon{width:14px;height:14px;color:var(--accent)}

.status-dot{
    width:8px;height:8px;
    border-radius:50%;
    background:var(--accent);
    display:inline-block;
    box-shadow:0 0 8px var(--accent-glow);
    animation:pulse 2s ease-in-out infinite;
}

.status-dot.offline{
    background:var(--danger);
    box-shadow:0 0 8px rgba(239,68,68,0.3);
    animation:none
}

@keyframes pulse{
    0%,100%{opacity:1}
    50%{opacity:0.5}
}

.quick-nav{
    display:grid;
    grid-template-columns:repeat(6,1fr);
    gap:12px;
    margin-bottom:32px;
}

.quick-card{
    position:relative;
    display:flex;flex-direction:column;align-items:center;
    gap:8px;
    padding:20px 12px;
    background:var(--surface);
    border:1px solid var(--border);
    border-radius:var(--radius-md);
    cursor:pointer;
    overflow:hidden;
    transition:all var(--transition);
    box-shadow:var(--shadow-sm);
}

.quick-card-glow{
    position:absolute;
    top:-50%;left:-50%;
    width:200%;height:200%;
    background:radial-gradient(circle,var(--accent-glow) 0%,transparent 70%);
    opacity:0;
    transition:opacity var(--transition);
    pointer-events:none;
}

.quick-card:hover{
    border-color:var(--accent);
    transform:translateY(-3px);
    box-shadow:var(--shadow-md)
}

.quick-card:hover .quick-card-glow{opacity:1}

.quick-card-icon{width:28px;height:28px;color:var(--accent);position:relative;z-index:1}
.quick-card-label{font-size:0.85em;font-weight:600;color:var(--text-secondary);position:relative;z-index:1}

.home-grid{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:20px;
}

.panel{
    background:var(--surface);
    border:1px solid var(--border);
    border-radius:var(--radius-lg);
    padding:24px;
    transition:all var(--transition);
    box-shadow:var(--shadow-sm);
}

.panel:hover{box-shadow:var(--shadow-md)}

.panel-header{
    display:flex;align-items:center;gap:8px;
    margin-bottom:18px;
}

.panel-header svg{width:20px;height:20px;color:var(--accent)}
.panel-header h2{font-size:1.1em;font-weight:700}

.intro-list{display:flex;flex-direction:column;gap:10px}

.intro-item{
    display:flex;align-items:flex-start;gap:10px;
    padding:12px 14px;
    border-radius:var(--radius-sm);
    border-left:3px solid var(--accent,var(--accent));
    background:var(--accent-soft);
    font-size:0.92em;
    line-height:1.6;
    transition:all var(--transition);
}

.intro-item svg{width:16px;height:16px;color:var(--accent);flex-shrink:0;margin-top:3px}

.intro-item:hover{
    transform:translateX(4px);
    box-shadow:var(--shadow-sm)
}

.ip-grid{
    display:grid;
    grid-template-columns:repeat(2,1fr);
    gap:8px;
}

.ip-chip{
    display:flex;flex-direction:column;align-items:center;
    padding:12px 8px;
    background:var(--accent-soft);
    border:1px solid var(--border);
    border-radius:var(--radius-sm);
    cursor:pointer;
    transition:all var(--transition);
}

.ip-chip:hover{
    border-color:var(--accent);
    background:var(--accent-soft);
    transform:translateY(-2px);
    box-shadow:var(--shadow-sm)
}

.ip-region{font-size:0.82em;color:var(--text-muted);font-weight:600}
.ip-addr{font-size:0.82em;color:var(--accent);font-weight:500;word-break:break-all;text-align:center}

.leaderboard-list{display:flex;flex-direction:column;gap:6px}

.lb-item{
    display:flex;align-items:center;gap:10px;
    padding:10px 14px;
    border-radius:var(--radius-sm);
    transition:all var(--transition);
}

.lb-item:hover{background:var(--accent-soft)}

.rank{
    width:28px;height:28px;
    display:flex;align-items:center;justify-content:center;
    border-radius:50%;
    font-size:0.82em;
    font-weight:700;
    background:var(--accent-soft);
    color:var(--text-muted);
    flex-shrink:0;
}

.rank svg{width:16px;height:16px}

.rank-1{background:linear-gradient(135deg,#fbbf24,#f59e0b);color:#fff}
.rank-2{background:linear-gradient(135deg,#94a3b8,#64748b);color:#fff}
.rank-3{background:linear-gradient(135deg,#d97706,#b45309);color:#fff}

.player-name{flex:1;font-weight:500;font-size:0.92em}
.playtime{color:var(--text-muted);font-size:0.88em;font-variant-numeric:tabular-nums}

.content-list{display:flex;flex-direction:column;gap:8px}

.content-item{
    display:flex;align-items:flex-start;gap:8px;
    padding:12px 16px;
    border-radius:var(--radius-sm);
    border-left:3px solid var(--accent,var(--accent));
    background:var(--accent-soft);
    font-size:0.92em;
    line-height:1.6;
    transition:all var(--transition);
}

.content-item:hover{
    transform:translateX(4px);
    box-shadow:var(--shadow-sm)
}

.download-cards{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:16px;
    margin-bottom:24px;
}

.dl-card{
    display:flex;flex-direction:column;align-items:center;
    gap:10px;
    padding:28px 20px;
    background:var(--surface);
    border:1px solid var(--border);
    border-radius:var(--radius-lg);
    cursor:pointer;
    transition:all var(--transition);
    box-shadow:var(--shadow-sm);
}

.dl-card:hover{
    border-color:var(--accent);
    transform:translateY(-3px);
    box-shadow:var(--shadow-md)
}

.dl-card-icon{width:36px;height:36px;color:var(--accent)}
.dl-card-title{font-weight:700;font-size:1.05em}
.dl-card-desc{color:var(--text-muted);font-size:0.88em}

.donate-btn{
    background:linear-gradient(135deg,var(--accent),var(--glacier));
    color:#fff;
    border:none;
    padding:14px 44px;
    font-size:1.15em;
    font-weight:700;
    border-radius:var(--radius-xl);
    cursor:pointer;
    transition:all var(--transition);
    box-shadow:0 4px 20px var(--accent-glow);
}

.donate-btn:hover{
    transform:translateY(-3px);
    box-shadow:0 8px 30px var(--accent-glow)
}

.donation-grid{
    display:grid;
    grid-template-columns:repeat(4,1fr);
    gap:12px;
}

.donation-card{
    background:var(--accent-soft);
    border:1px solid var(--border);
    border-radius:var(--radius-sm);
    padding:14px;
    text-align:center;
    transition:all var(--transition);
    cursor:pointer;
}

.donation-card:hover{
    border-color:var(--accent);
    transform:translateY(-2px);
    box-shadow:var(--shadow-sm)
}

.donation-name{font-weight:700;font-size:0.95em;margin-bottom:4px}
.donation-info{color:var(--text-muted);font-size:0.82em;margin-bottom:4px}
.donation-amount{color:var(--accent);font-weight:700;font-size:1.05em}

.loading-placeholder{
    text-align:center;
    padding:24px;
    color:var(--text-muted);
    font-size:0.9em
}

.announcement-item{
    padding:12px 16px;
    border-left:3px solid var(--accent);
    background:var(--accent-soft);
    border-radius:0 var(--radius-sm) var(--radius-sm) 0;
    margin-bottom:8px;
    transition:all var(--transition);
}

.announcement-item:hover{transform:translateX(4px)}

.announcement-date{
    font-size:0.82em;
    color:var(--text-muted);
    margin-bottom:4px
}

.announcement-text{
    font-size:0.92em;
    line-height:1.6
}

#toggleBtn{
    text-align:center;
    padding:10px;
    cursor:pointer;
    color:var(--accent);
    font-size:0.88em;
    user-select:none;
    transition:all var(--transition);
    border-radius:var(--radius-sm);
}

#toggleBtn:hover{background:var(--accent-soft)}

.announce-btn-row{
    display:none;
    gap:10px;
    margin-top:8px;
}

.announce-action-btn{
    flex:1;
    text-align:center;
    padding:10px;
    cursor:pointer;
    font-size:0.88em;
    user-select:none;
    border-radius:var(--radius-sm);
    border:1px solid var(--border);
    background:var(--surface);
    color:var(--text-secondary);
    transition:all var(--transition);
}

.announce-action-btn:hover{
    background:var(--accent-soft);
    color:var(--accent);
    border-color:var(--accent)
}

.announce-action-btn.accent{
    background:var(--accent);
    color:#fff;
    border-color:var(--accent)
}

.announce-action-btn.accent:hover{
    opacity:0.85
}

#oldAnnouncements{
    display:grid;
    grid-template-rows:0fr;
    transition:grid-template-rows 0.5s ease
}

#oldAnnouncements.expanded{grid-template-rows:1fr}

#oldAnnouncements>div{overflow:hidden}

.modpack-item{
    display:flex;align-items:center;justify-content:space-between;
    padding:14px 16px;
    background:var(--accent-soft);
    border:1px solid var(--border);
    border-radius:var(--radius-sm);
    margin-bottom:8px;
    cursor:pointer;
    transition:all var(--transition);
}

.modpack-item:hover{
    border-color:var(--accent);
    transform:translateX(4px);
    box-shadow:var(--shadow-sm)
}

.modpack-name{font-weight:700;font-size:0.95em}
.modpack-tag{
    display:inline-block;
    background:linear-gradient(135deg,var(--accent),var(--mint));
    color:#fff;
    padding:2px 10px;
    border-radius:12px;
    font-size:0.78em;
    font-weight:700;
    margin-left:8px
}

.modpack-dl{color:var(--text-muted);font-size:0.85em}

.copy-toast{
    position:fixed;
    bottom:30px;left:50%;
    transform:translateX(-50%) translateY(20px);
    background:var(--surface);
    color:var(--text);
    border:1px solid var(--border);
    padding:12px 24px;
    border-radius:var(--radius-xl);
    box-shadow:var(--shadow-lg);
    font-size:0.9em;
    opacity:0;
    pointer-events:none;
    transition:all 0.3s ease;
    z-index:9999;
    white-space:nowrap;
}

.copy-toast.show{
    opacity:1;
    transform:translateX(-50%) translateY(0)
}

.site-footer{
    position:relative;
    z-index:1;
    text-align:center;
    padding:20px;
    border-top:1px solid var(--border);
    transition:border-color var(--transition)
}

.footer-link{
    background:none;border:none;
    color:var(--text-muted);
    cursor:pointer;
    font-size:0.88em;
    display:inline-flex;align-items:center;gap:5px;
    padding:6px 14px;
    border-radius:var(--radius-sm);
    transition:all var(--transition);
}

.footer-link svg{width:14px;height:14px}

.footer-link:hover{
    color:var(--accent);
    background:var(--accent-soft)
}

@media(max-width:900px){
    .quick-nav{grid-template-columns:repeat(3,1fr)}
    .home-grid{grid-template-columns:1fr}
    .donation-grid{grid-template-columns:repeat(2,1fr)}
    .download-cards{grid-template-columns:1fr}
}

@media(max-width:768px){
    .top-nav{display:none}
    .top-actions{display:none}
    .mobile-top-actions{display:flex}
    .mobile-menu-btn{display:flex}
    .hero-title{font-size:1.8em}
    .hero{padding:32px 12px 24px}
    .main-wrap{padding:calc(var(--topbar-h) + 16px) 16px 48px}
    .panel{padding:18px}
    .quick-nav{grid-template-columns:repeat(3,1fr);gap:8px}
    .quick-card{padding:14px 8px}
    .quick-card-icon{width:22px;height:22px}
    .quick-card-label{font-size:0.78em}
    .ip-grid{grid-template-columns:1fr 1fr}
    .donation-grid{grid-template-columns:repeat(2,1fr)}
}

@media(max-width:480px){
    .quick-nav{grid-template-columns:repeat(2,1fr)}
    .hero-title{font-size:1.5em}
    .hero-stats{gap:6px}
    .stat-chip{padding:6px 10px;font-size:0.82em}
    .donation-grid{grid-template-columns:1fr 1fr}
    .page-title{font-size:1.3em}
}
