:root{
    --purple:#7c4dff;
    --purple-dim:#5a2dca;
    --blue:#4d7cff;
    --green:#00e676;
    --warn:#ffab40;
    --danger:#ff5252;
    --bg:#050505;
    --glass:rgba(20,20,25,.82);
    --border:rgba(124,77,255,.28);
    --border-soft:rgba(255,255,255,.08);
    --text:#e8e8f0;
    --muted:#8888aa;
    --radius:15px;
}

*{margin:0;padding:0;box-sizing:border-box;}

body{
    background:var(--bg);
    color:var(--text);
    font-family:'Inter','Segoe UI',system-ui,sans-serif;
    overflow-x:hidden;
    display:flex;
    flex-direction:column;
    min-height:100vh;
    font-size:15px;
    line-height:1.6;
}

.background{
    position:fixed;inset:0;z-index:-2;
    background:
    radial-gradient(circle at top,var(--purple),transparent 30%),
    radial-gradient(circle at bottom,var(--blue),transparent 30%),
    #050505;
}

.grid{
    position:fixed;inset:0;z-index:-1;
    background:
    linear-gradient(rgba(255,255,255,.07) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.07) 1px, transparent 1px);
    background-size:50px 50px;
}

.particles{position:fixed;inset:0;overflow:hidden;z-index:-1;}

.particles span{
    position:absolute;width:2px;height:100px;
    background:linear-gradient(transparent,var(--purple));
    animation: rain linear forwards;
    opacity:.5;--start: -200px;top: var(--start);
}

@keyframes rain{0%{top:var(--start);}100%{top:120vh;}}

nav{
    position:sticky;top:0;z-index:999;
    backdrop-filter:blur(12px);
    background:rgba(0,0,0,.6);
    border-bottom:1px solid rgba(255,255,255,.1);
}

.nav-container{
    display:flex;justify-content:center;align-items:center;
    gap:50px;padding:20px;flex-wrap:wrap;
}

.nav-container a{color:white;text-decoration:none;transition:.3s;}
.nav-container a:hover{color:var(--purple);}

.nav-right{
    display:flex;gap:30px;align-items:center;
    border-left:1px solid rgba(255,255,255,0.3);
    padding-left:30px;margin-left:10px;
}

.hunter-name{color:var(--blue);font-weight:bold;margin-right:0;}

.rank-color[data-rank="S+ Mythic"]{color:#e9422c;}
.rank-color[data-rank="S-Rank Hero"]{color:#FFD700;}
.rank-color[data-rank="A-Rank Hunter"]{color:#cb6bff;}
.rank-color[data-rank="B-Rank Defender"]{color:#4779f7;}
.rank-color[data-rank="C-Rank Savant"]{color:#45d15f;}
.rank-color[data-rank="E-Rank Novice"]{color:#AAAAAA;}

.rank-color[data-rank="S+ Mythic"],
.rank-color[data-rank="S-Rank Hero"],
.rank-color[data-rank="A-Rank Hunter"],
.rank-color[data-rank="B-Rank Defender"]{
    background:linear-gradient(90deg,var(--rank-color),var(--rank-shine),var(--rank-color));
    background-size:200% 100%;
    -webkit-background-clip:text;background-clip:text;
    -webkit-text-fill-color:transparent;
    animation:shine 2.5s linear infinite;
}

.rank-color[data-rank="S+ Mythic"]{--rank-color:#e9422c;--rank-shine:#ff7a5a;}
.rank-color[data-rank="S-Rank Hero"]{--rank-color:#FFD700;--rank-shine:#ffe88a;}
.rank-color[data-rank="A-Rank Hunter"]{--rank-color:#cb6bff;--rank-shine:#e6b3ff;}
.rank-color[data-rank="B-Rank Defender"]{--rank-color:#4779f7;--rank-shine:#8aadff;}
.rank-color[data-rank="Bastion Officer"]{color:#fad903;}
.rank-color[data-rank="Bastion Officer"]{--rank-color:#484848;--rank-shine:#0b0d2f;}
.rank-color[data-rank="Admin"]{color:#857cff;}
.rank-color[data-rank="Admin"]{--rank-color:#286cff;--rank-shine:#0c2ccf;}
.rank-color[data-rank="Maker"]{color:#fd2f9d;}
.rank-color[data-rank="Maker"]{--rank-color:#ff289e;--rank-shine:#c40f36;}

@keyframes shine{0%{background-position:200% 0;}100%{background-position:-200% 0;}}

.lb-rank-display{min-width:120px;text-align:center;}
.rank-color{font-weight:bold;text-shadow:0 0 10px var(--rank-color,transparent);}
#editUsernameBtn:hover{color:#b088ff !important;text-shadow:0 0 10px #7c4dff;}

.hero{text-align:center;padding:80px 20px;}

.logo{
    display:block;margin:0 auto 25px;width:260px;max-width:70%;
    filter:drop-shadow(0 0 24px rgba(124,77,255,.5));
}

.title{
    font-family:'Orbitron',sans-serif;
    font-size:clamp(2rem,5vw,4rem);
    font-weight:800;letter-spacing:4px;
    text-shadow:0 0 30px var(--purple);color:#fff;
}

.subtitle{margin-top:15px;color:var(--muted);font-size:1.1rem;}

.container{flex:1 0 auto;width:90%;max-width:1500px;margin:0 auto;position:relative;z-index:1;}

.panel{
    background:var(--glass);
    border:1px solid var(--border);
    border-radius:20px;padding:25px;
    backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
    box-shadow:0 0 28px rgba(124,77,255,.12);
}

.section-title{
    margin-bottom:20px;color:var(--purple);
    font-family:'Orbitron',sans-serif;font-size:1.5rem;font-weight:700;
}

.dashboard{display:grid;grid-template-columns:1fr 2fr 1fr;gap:20px;margin-bottom:30px;}
.side{display:flex;flex-direction:column;gap:20px;}
.vuln-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px;}

.vuln-card{
    background:rgba(255,255,255,.04);
    border:1px solid var(--border-soft);
    border-radius:var(--radius);padding:20px;
    cursor:pointer;
    transition:transform .22s ease, border-color .22s ease, box-shadow .22s ease;
    text-decoration:none;color:var(--text);display:block;
    position:relative;overflow:hidden;
}

.vuln-card::before{
    content:'';position:absolute;inset:0;
    background:linear-gradient(135deg,rgba(124,77,255,.06),transparent);
    opacity:0;transition:opacity .22s ease;
}

.vuln-card:hover{transform:translateY(-4px);border-color:var(--purple);box-shadow:0 0 24px rgba(124,77,255,.35);}
.vuln-card:hover::before{opacity:1;}
.vuln-name{font-size:1rem;font-weight:700;margin-bottom:8px;color:#fff;}
.rank{color:var(--muted);font-size:.85rem;display:flex;align-items:center;gap:6px;}

.diff-easy{color:var(--green);}
.diff-medium{color:var(--warn);}
.diff-hard{color:#ff7043;}
.diff-insane{color:var(--danger);}

.reward{color:var(--blue);margin-top:10px;font-size:.88rem;font-weight:600;}

.cat-chip{
    display:inline-block;
    background:rgba(124,77,255,.15);
    border:1px solid rgba(124,77,255,.3);
    border-radius:20px;padding:2px 10px;
    font-size:.75rem;font-weight:700;color:var(--purple);
    margin-bottom:8px;text-transform:uppercase;letter-spacing:.06em;
}

.stat{margin-bottom:12px;font-size:.93rem;color:var(--muted);}
.stat strong,.stat .stat-val{color:var(--text);font-weight:600;}

.progress{height:15px;background:#111;border-radius:50px;overflow:hidden;}
.progress-bar{height:100%;background:linear-gradient(90deg,var(--purple),var(--blue));transition:width 0.3s ease;}

.flags{list-style:none;}
.flags li{padding:10px 0;border-bottom:1px solid rgba(255,255,255,.08);}

.faq{margin-top:40px;}
details:not(.cat-section){margin-bottom:15px;background:var(--glass);padding:20px;border-radius:12px;}
summary{cursor:pointer;font-weight:600;}

.leaderboard-list{display:flex;flex-direction:column;gap:8px;}
.lb-entry{
    display:flex;justify-content:space-between;align-items:center;
    padding:10px 16px;background:rgba(255,255,255,.03);
    border-radius:10px;border-left:3px solid var(--purple);
    font-size:.9rem;transition:background .2s;
}
.lb-entry:hover{background:rgba(124,77,255,.08);}

.footer{flex-shrink:0;margin-top:auto;padding:40px 0;width:100%;}
.footer .panel{max-width:1500px;margin:0 auto;}
.socials{display:flex;gap:20px;margin-top:15px;flex-wrap:wrap;}
.socials a{color:white;text-decoration:none;}
.socials a:hover{color:var(--purple);}

.auth-container{min-height:70vh;display:flex;align-items:center;justify-content:center;padding:2rem;}

.auth-card{
    background:var(--glass);border:1px solid rgba(124,77,255,.3);
    border-radius:20px;padding:2.5rem;width:100%;max-width:400px;
    backdrop-filter:blur(15px);box-shadow:0 0 30px rgba(124,77,255,.15);
}

.auth-card h1{
    text-align:center;font-size:2rem;margin-bottom:0.5rem;
    background:linear-gradient(135deg,var(--purple),var(--blue));
    -webkit-background-clip:text;-webkit-text-fill-color:transparent;
}

.auth-card h2{text-align:center;margin-bottom:1.5rem;font-weight:300;color:#ccc;}
.form-group{margin-bottom:1.5rem;}
.form-group label{display:block;margin-bottom:0.3rem;color:#aaa;}
.form-group input{width:100%;padding:0.8rem;border:1px solid #333;border-radius:8px;background:rgba(0,0,0,.4);color:#fff;transition:.3s;}
.form-group input:focus{border-color:var(--purple);box-shadow:0 0 15px rgba(124,77,255,.3);outline:none;}
.auth-card .btn-primary{width:100%;margin-top:0.5rem;}

.btn-primary,.btn-secondary{
    display:inline-flex;align-items:center;gap:7px;
    padding:0.7rem 1.8rem;border-radius:30px;
    font-weight:600;font-size:.9rem;text-decoration:none;
    transition:all .22s ease;border:2px solid transparent;
    cursor:pointer;white-space:nowrap;
}

.btn-primary{background:var(--purple);color:#fff;box-shadow:0 0 20px rgba(124,77,255,.45);}
.btn-primary:hover{background:var(--purple-dim);box-shadow:0 0 36px rgba(124,77,255,.7);transform:scale(1.04);color:#fff;}
.btn-secondary{border-color:var(--blue);color:var(--blue);background:transparent;}
.btn-secondary:hover{background:var(--blue);color:#fff;box-shadow:0 0 24px rgba(77,124,255,.5);}

.auth-card p{text-align:center;margin-top:1.5rem;color:#aaa;}
.auth-card a{color:var(--purple);text-decoration:none;}

.flash-container{max-width:600px;margin:80px auto 0;margin-bottom:0px;padding:0 1rem;}
.flash{padding:0.8rem;border-radius:8px;margin-bottom:0.5rem;}
.flash-warning{background:rgba(42,142,235,0.2);border:1px solid #368bf4;}
.flash-success{background:rgba(76,175,80,.2);border:1px solid #4CAF50;}
.flash-danger{background:rgba(244,67,54,.2);border:1px solid #F44336;}
.flash-info{background:rgba(77,124,255,.2);border:1px solid #4d7cff;}

.btn-danger{
    background:#dc3545;color:white;border:none;
    border-radius:20px;cursor:pointer;padding:0.3rem 1rem;font-size:0.8rem;
}
.btn-danger:hover{background:#c82333;}

@media(max-width:1200px){.dashboard{grid-template-columns:1fr;}.title{font-size:2.4rem;}}
@media(max-width:900px){.vuln-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));}}
@media(max-width:600px){
    .nav-container{gap:20px;padding:14px 16px;}
    .auth-card{padding:1.5rem;}
    .panel{padding:18px;}
    .vuln-grid{grid-template-columns:1fr 1fr;}
}

/* ── Dashboard layout ── */
.dash-wrap{padding:28px 0 80px;display:flex;flex-direction:column;gap:28px;}

.dash-header{
    display:flex;justify-content:space-between;align-items:center;
    gap:24px;flex-wrap:wrap;
    background:var(--glass);border:1px solid var(--border-soft);
    border-radius:20px;padding:20px 28px;
    backdrop-filter:blur(16px);
}
.dash-header-left{flex:1 1 auto;}
.dash-logo-row{display:flex;align-items:center;gap:14px;}
.dash-logo{width:44px;height:44px;object-fit:contain;filter:drop-shadow(0 0 8px rgba(124,77,255,.5));}
.dash-title{font-family:'Orbitron',sans-serif;font-size:1.5rem;font-weight:800;color:#fff;letter-spacing:2px;line-height:1.2;}
.dash-sub{color:var(--muted);font-size:.82rem;margin-top:2px;}

.dash-stat-row{display:flex;align-items:center;gap:20px;}
.dash-stat{display:flex;flex-direction:column;align-items:center;gap:2px;}
.dash-stat-val{font-family:'Orbitron',sans-serif;font-size:1.5rem;font-weight:700;color:var(--purple);line-height:1;}
.dash-stat-lbl{font-size:.7rem;color:var(--muted);letter-spacing:.08em;font-weight:600;}
.dash-stat-divider{width:1px;height:36px;background:rgba(255,255,255,.1);}

.dash-main-grid{
    display:grid;
    grid-template-columns:1fr 300px;
    gap:24px;
    align-items:start;
}
@media(max-width:900px){.dash-main-grid{grid-template-columns:1fr;}}

.dash-section-head{
    display:flex;justify-content:space-between;align-items:center;
    margin-bottom:14px;
}
.dash-view-all{
    color:var(--purple);font-size:.82rem;font-weight:600;
    text-decoration:none;white-space:nowrap;
    transition:color .2s;
}
.dash-view-all:hover{color:#a580ff;}

/* mini leaderboard table */
.lb-mini-table{width:100%;border-collapse:collapse;}
.lb-mini-table tr{border-bottom:1px solid rgba(255,255,255,.04);}
.lb-mini-table tr:last-child{border-bottom:none;}
.lb-mini-pos{padding:10px 14px;font-size:.9rem;width:36px;}
.lb-mini-name{padding:10px 8px;font-size:.88rem;font-weight:600;color:#fff;}
.lb-mini-xp{padding:10px 14px;text-align:right;font-family:'Orbitron',sans-serif;font-size:.8rem;color:var(--purple);}

/* quick links */
.ql-row{
    display:flex;align-items:center;gap:10px;
    padding:10px 6px;color:var(--muted);
    text-decoration:none;font-size:.88rem;font-weight:500;
    border-radius:8px;transition:color .18s,background .18s;
}
.ql-row i{width:16px;text-align:center;color:var(--purple);flex-shrink:0;}
.ql-row:hover{color:#fff;background:rgba(124,77,255,.08);}

/* cat footer link */
.cat-footer-link{
    padding:11px 24px;border-top:1px solid rgba(255,255,255,.05);
}
.cat-footer-link a{
    color:var(--purple);font-size:.82rem;font-weight:600;
    text-decoration:none;transition:color .2s;
}
.cat-footer-link a:hover{color:#a580ff;}

/* FAQ two-column grid */
.faq-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
@media(max-width:700px){.faq-grid{grid-template-columns:1fr;}}

.faq-item{
    background:var(--glass);border:1px solid var(--border-soft);
    border-radius:14px;padding:0;overflow:hidden;
    transition:border-color .2s;
}
.faq-item[open]{border-color:var(--border);}
.faq-summary{
    list-style:none;display:flex;justify-content:space-between;align-items:center;
    padding:15px 20px;cursor:pointer;font-weight:600;color:#fff;
    font-size:.92rem;gap:12px;
}
.faq-summary::-webkit-details-marker{display:none;}
.faq-chevron{color:var(--muted);font-size:.72rem;flex-shrink:0;transition:transform .2s;}
.faq-item[open] .faq-chevron{transform:rotate(180deg);}
.faq-answer{padding:0 20px 16px;color:var(--muted);font-size:.87rem;line-height:1.75;}

/* ── Category accordion panel ── */
.cat-section{
    border-bottom:1px solid rgba(255,255,255,.06);
    background:transparent;padding:0;border-radius:0;margin:0;
}
.cat-section:last-child{border-bottom:none;}
.cat-section[open] .cat-chevron{transform:rotate(180deg);}

.cat-summary{
    list-style:none;display:flex;justify-content:space-between;align-items:center;
    padding:18px 24px;cursor:pointer;gap:16px;
    transition:background .18s;
}
.cat-summary::-webkit-details-marker{display:none;}
.cat-summary:hover{background:rgba(124,77,255,.06);}

.cat-summary-left{display:flex;align-items:center;gap:12px;min-width:0;}
.cat-icon{font-size:1.3rem;flex-shrink:0;}
.cat-summary-name{font-weight:700;font-size:1rem;color:#fff;}
.cat-summary-desc{color:var(--muted);font-size:.82rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:300px;}

.cat-summary-right{display:flex;align-items:center;gap:12px;flex-shrink:0;}
.cat-chevron{color:var(--muted);font-size:.75rem;transition:transform .2s ease;}

.cat-body{border-top:1px solid rgba(255,255,255,.05);}

.cat-chal-list{display:flex;flex-direction:column;}
.cat-chal-row{
    display:flex;justify-content:space-between;align-items:center;
    padding:12px 24px;text-decoration:none;color:var(--text);
    border-bottom:1px solid rgba(255,255,255,.04);
    transition:background .18s;gap:12px;
}
.cat-chal-row:last-child{border-bottom:none;}
.cat-chal-row:hover{background:rgba(124,77,255,.07);}
.cat-chal-name{font-size:.92rem;font-weight:600;color:#fff;}
.cat-chal-meta{display:flex;align-items:center;gap:10px;flex-shrink:0;}
.cat-chal-pts{color:var(--muted);font-size:.8rem;font-weight:600;}

.diff-badge{
    display:inline-block;border-radius:20px;padding:2px 9px;
    font-size:.72rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;
}
.diff-easy{background:rgba(0,230,118,.12);border:1px solid rgba(0,230,118,.3);color:var(--green);}
.diff-medium{background:rgba(255,171,64,.12);border:1px solid rgba(255,171,64,.3);color:var(--warn);}
.diff-hard{background:rgba(255,112,67,.12);border:1px solid rgba(255,112,67,.3);color:#ff7043;}
.diff-insane{background:rgba(255,82,82,.12);border:1px solid rgba(255,82,82,.3);color:var(--danger);}

/* ── Challenge detail ── */
.challenge-info p{margin-bottom:10px;color:var(--muted);font-size:.93rem;}
.challenge-info p strong{color:var(--text);}
.challenge-action{margin:24px 0;}

.netcat-box{background:rgba(0,0,0,.4);border:1px solid var(--border);padding:16px 20px;border-radius:10px;margin:10px 0;}
.netcat-box code{color:var(--purple);font-size:1rem;font-family:'Courier New',monospace;word-break:break-all;}

.flag-submit{margin-top:28px;border-top:1px solid var(--border-soft);padding-top:22px;}
.text-muted{color:var(--muted);}

.form-control{
    width:100%;padding:.75rem 1rem;
    background:rgba(0,0,0,.5);border:1px solid #333;
    border-radius:8px;color:#fff;font-size:.95rem;
    transition:border-color .2s,box-shadow .2s;
}
.form-control:focus{outline:none;border-color:var(--purple);box-shadow:0 0 14px rgba(124,77,255,.3);}

.flags li{padding:9px 0;border-bottom:1px solid var(--border-soft);font-size:.9rem;color:var(--muted);display:flex;align-items:center;gap:8px;}
.flags li i{color:var(--purple);flex-shrink:0;}

details:not(.cat-section){margin-bottom:12px;background:var(--glass);border:1px solid var(--border-soft);padding:16px 20px;border-radius:12px;transition:border-color .2s;}
details:not(.cat-section)[open]{border-color:var(--border);}
details:not(.cat-section) summary{cursor:pointer;font-weight:600;color:var(--text);list-style:none;display:flex;justify-content:space-between;align-items:center;}
details:not(.cat-section) summary::after{content:'\f078';font-family:'Font Awesome 6 Free';font-weight:900;color:var(--muted);font-size:.75rem;transition:transform .2s;}
details:not(.cat-section)[open] summary::after{transform:rotate(180deg);}
details:not(.cat-section) p{margin-top:12px;color:var(--muted);font-size:.92rem;line-height:1.7;}

.instance-panel{max-width:820px;margin:0 auto;}
.instance-url-btn{
    display:inline-flex;align-items:center;gap:8px;
    padding:8px 18px;background:rgba(77,124,255,.12);
    border:1px solid rgba(77,124,255,.35);border-radius:8px;
    color:var(--blue);text-decoration:none;font-size:.9rem;
    transition:background .2s;font-family:'Courier New',monospace;word-break:break-all;
}
.instance-url-btn:hover{background:rgba(77,124,255,.22);}

.timer-bar-high{background:linear-gradient(90deg,#00e676,#69f0ae);}
.timer-bar-medium{background:linear-gradient(90deg,var(--warn),#ffd54f);}
.timer-bar-low{background:linear-gradient(90deg,var(--danger),#ff867c);}

input[type="text"],input[type="password"],input[type="email"],textarea,select{
    background:rgba(0,0,0,0.7) !important;color:#fff !important;border:1px solid #444 !important;
}
input[type="text"]:focus,input[type="password"]:focus,input[type="email"]:focus,textarea:focus,select:focus{
    background:rgba(0,0,0,0.9) !important;border-color:var(--purple) !important;outline:none;
}

#loading-overlay{
    position:fixed;inset:0;z-index:9999;background:rgba(0,0,0,0.85);
    display:none;justify-content:center;align-items:center;flex-direction:column;backdrop-filter:blur(5px);
}
#loading-overlay.show{display:flex;}

.loader{
    width:60px;height:60px;
    border:4px solid rgba(124,77,255,0.2);
    border-top:4px solid #7c4dff;
    border-radius:50%;animation:spin 1s linear infinite;
}
@keyframes spin{0%{transform:rotate(0deg);}100%{transform:rotate(360deg);}}

/* ══════════════════════════════════════════════════
   CHALLENGE DETAIL PAGE
══════════════════════════════════════════════════ */
.chal-detail-wrap{display:flex;flex-direction:column;gap:16px;}

.chal-header{position:relative;overflow:hidden;}
.chal-header::before{content:'';position:absolute;inset:0;background:linear-gradient(135deg,rgba(124,77,255,.07) 0%,transparent 60%);pointer-events:none;}

.chal-header-top{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px;}

.cat-chip-alt{background:rgba(77,124,255,.12);border-color:rgba(77,124,255,.3);color:var(--blue);}

.chal-title{font-family:'Orbitron',sans-serif;font-size:clamp(1.3rem,3vw,2rem);font-weight:700;color:#fff;letter-spacing:1px;margin-bottom:12px;}
.chal-meta-row{display:flex;gap:18px;flex-wrap:wrap;}
.chal-meta-item{font-size:.88rem;font-weight:600;display:flex;align-items:center;gap:5px;}

.chal-body-grid{display:grid;grid-template-columns:1fr 340px;gap:16px;align-items:start;}
@media(max-width:860px){.chal-body-grid{grid-template-columns:1fr;}.chal-flag-panel{order:-1;}}

.chal-desc-panel{min-width:0;}
.chal-description{color:var(--muted);font-size:.95rem;line-height:1.75;margin-bottom:24px;white-space:pre-wrap;}
.chal-action-area{padding-top:20px;border-top:1px solid var(--border-soft);}
.chal-launch-btn{display:inline-flex;margin-bottom:10px;}
.chal-instance-hint{color:var(--muted);font-size:.83rem;margin-top:6px;}
.chal-flag-panel{position:sticky;top:76px;}

/* ══════════════════════════════════════════════════
   LAUNCH PAGE
══════════════════════════════════════════════════ */
.launch-wrap{display:flex;justify-content:center;padding:20px 0 40px;}
.launch-card{width:100%;max-width:580px;text-align:center;}

.launch-back-link{display:inline-flex;align-items:center;gap:6px;color:var(--muted);text-decoration:none;font-size:.85rem;margin-bottom:20px;transition:color .2s;}
.launch-back-link:hover{color:var(--text);}

.launch-icon-row{display:flex;justify-content:center;margin-bottom:16px;}
.launch-icon-bg{width:64px;height:64px;background:rgba(124,77,255,.15);border:1px solid rgba(124,77,255,.35);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.6rem;color:var(--purple);}
.launch-subtitle{color:var(--muted);font-size:.95rem;margin-bottom:28px;}

.launch-specs{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:24px;}
@media(max-width:500px){.launch-specs{grid-template-columns:repeat(2,1fr);}}

.launch-spec{background:rgba(255,255,255,.04);border:1px solid var(--border-soft);border-radius:12px;padding:14px 8px;display:flex;flex-direction:column;align-items:center;gap:4px;font-size:.8rem;}
.launch-spec-val{font-weight:700;font-size:1rem;color:var(--text);}
.launch-spec-lbl{color:var(--muted);font-size:.75rem;}

.launch-notice{display:flex;align-items:flex-start;gap:10px;background:rgba(77,124,255,.07);border:1px solid rgba(77,124,255,.2);border-radius:10px;padding:14px 16px;margin-bottom:24px;text-align:left;color:var(--muted);font-size:.88rem;line-height:1.6;}
.launch-notice i{color:var(--blue);margin-top:2px;flex-shrink:0;}
.launch-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;}
.launch-confirm-btn{min-width:200px;justify-content:center;}

/* ══════════════════════════════════════════════════
   INSTANCE DETAIL PAGE
══════════════════════════════════════════════════ */
.instance-wrap{display:flex;flex-direction:column;gap:16px;}

.instance-header{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;flex-wrap:wrap;}
.instance-header-left{flex:1 1 auto;}
.instance-header-right{flex-shrink:0;padding-top:4px;}

.inst-status-badge{display:inline-flex;align-items:center;gap:5px;border-radius:20px;padding:3px 10px;font-size:.78rem;font-weight:600;}
.inst-status-running{background:rgba(0,230,118,.12);border:1px solid rgba(0,230,118,.3);color:var(--green);}
.inst-status-warn{background:rgba(255,171,64,.12);border:1px solid rgba(255,171,64,.3);color:var(--warn);}

.instance-body-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px;align-items:start;}
@media(max-width:900px){.instance-body-grid{grid-template-columns:1fr 1fr;}}
@media(max-width:580px){.instance-body-grid{grid-template-columns:1fr;}.instance-header{flex-direction:column;}}

.instance-card-title{font-family:'Orbitron',sans-serif;font-size:.85rem;font-weight:700;color:var(--muted);letter-spacing:.04em;margin-bottom:16px;display:flex;align-items:center;gap:7px;}

.instance-timer-display{font-family:'Orbitron',sans-serif;font-size:2.2rem;font-weight:700;color:#fff;margin-bottom:12px;display:flex;align-items:baseline;gap:6px;}
.instance-timer-unit{font-size:.85rem;color:var(--muted);font-family:'Inter',sans-serif;}

.instance-progress-track{height:8px;background:rgba(255,255,255,.08);border-radius:50px;overflow:hidden;margin-bottom:10px;}
.instance-progress-fill{height:100%;border-radius:50px;transition:width .5s ease;}
.instance-expire-note{color:var(--muted);font-size:.82rem;}

.instance-controls{display:flex;flex-direction:column;gap:0;}
.instance-extend-btn{width:100%;justify-content:center;}
.instance-stop-btn{width:100%;border-radius:30px;padding:.65rem 1.4rem;}
.instance-ext-note{color:var(--muted);font-size:.82rem;margin-top:6px;margin-bottom:4px;}

.instance-detail-table{width:100%;border-collapse:collapse;font-size:.88rem;margin-bottom:16px;}
.instance-detail-table td{padding:7px 0;border-bottom:1px solid var(--border-soft);color:var(--muted);}
.instance-detail-table td:first-child{width:110px;font-weight:600;color:var(--text);}
.instance-detail-table td code{color:var(--purple);font-family:'Courier New',monospace;font-size:.85rem;}

.instance-links{display:flex;flex-direction:column;gap:8px;}
.instance-link-item{display:inline-flex;align-items:center;gap:7px;color:var(--muted);text-decoration:none;font-size:.88rem;transition:color .2s;}
.instance-link-item:hover{color:var(--blue);}

/* ══════════════════════════════════════════════════
   MY INSTANCES PAGE
══════════════════════════════════════════════════ */
.my-instances-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;}

.my-instance-card{background:rgba(255,255,255,.04);border:1px solid var(--border-soft);border-radius:var(--radius);padding:20px;transition:border-color .22s,box-shadow .22s;}
.my-instance-card:hover{border-color:var(--purple);box-shadow:0 0 20px rgba(124,77,255,.18);}
.my-instance-card-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;}
.my-instance-title{font-weight:700;font-size:1rem;color:#fff;margin-bottom:10px;line-height:1.4;}
.my-instance-timer{display:flex;align-items:baseline;gap:6px;margin-bottom:10px;}
.my-instance-time{font-family:'Orbitron',sans-serif;font-size:1.1rem;font-weight:700;}
.my-time-ok{color:var(--green);}
.my-time-mid{color:var(--warn);}
.my-time-low{color:var(--danger);}
.my-instance-meta{display:flex;gap:14px;color:var(--muted);font-size:.82rem;margin-bottom:16px;flex-wrap:wrap;}
.my-instance-meta code{color:var(--purple);font-size:.8rem;}
.my-instance-actions{display:flex;gap:10px;flex-wrap:wrap;}

.my-instances-empty{text-align:center;padding:60px 20px;color:var(--muted);}
.my-instances-empty-icon{font-size:3rem;margin-bottom:16px;display:block;color:rgba(124,77,255,.35);}
.my-instances-empty h3{font-family:'Orbitron',sans-serif;font-size:1.1rem;color:var(--text);margin-bottom:8px;}

/* ── Challenge row (index + profile) ── */
.chal-row{
    display:flex;justify-content:space-between;align-items:center;
    padding:13px 20px;text-decoration:none;color:var(--text);
    border-bottom:1px solid rgba(255,255,255,.04);
    transition:background .18s;gap:12px;
}
.chal-row:last-child{border-bottom:none;}
.chal-row:hover{background:rgba(124,77,255,.07);}
.chal-row-left{display:flex;flex-direction:column;gap:2px;min-width:0;}
.chal-row-name{font-size:.92rem;font-weight:600;color:#fff;}
.chal-row-cat{font-size:.75rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;}
.chal-row-right{display:flex;align-items:center;gap:10px;flex-shrink:0;}
.chal-row-pts{font-size:.8rem;color:var(--muted);font-weight:600;}

/* ── Leaderboard full table ── */
.lb-table{width:100%;border-collapse:collapse;}
.lb-thead-row{border-bottom:1px solid rgba(255,255,255,.08);}
.lb-th{padding:11px 16px;color:var(--muted);font-size:.75rem;font-weight:600;text-align:left;}
.lb-row{border-bottom:1px solid rgba(255,255,255,.03);transition:background .15s;}
.lb-row:last-child{border-bottom:none;}
.lb-row:hover{background:rgba(124,77,255,.06);}
.lb-row-you{background:rgba(124,77,255,.1);}
.lb-row-you:hover{background:rgba(124,77,255,.14);}
.lb-pos{padding:12px 16px;font-size:.9rem;width:48px;}
.lb-name{padding:12px 16px;font-size:.9rem;font-weight:600;color:#fff;}
.lb-you-badge{display:inline-block;margin-left:8px;padding:1px 7px;background:rgba(124,77,255,.2);border:1px solid rgba(124,77,255,.4);border-radius:20px;font-size:.68rem;color:var(--purple);font-weight:700;vertical-align:middle;}
.lb-rank-cell{padding:12px 16px;}
.lb-rank-text{font-size:.82rem;font-weight:600;}
.lb-solves{padding:12px 16px;font-size:.85rem;color:var(--muted);text-align:center;}
.lb-xp{padding:12px 16px;text-align:right;font-family:'Orbitron',sans-serif;font-size:.85rem;color:#fff;font-weight:700;}

/* ── Dashboard sidebar hunter cards ── */
.lb-card{
    display:flex;justify-content:space-between;align-items:center;
    padding:12px 14px;
    background:rgba(255,255,255,.03);
    border:1px solid rgba(255,255,255,.06);
    border-radius:12px;transition:border-color .2s;
}
.lb-card:hover{border-color:var(--border);}
.lb-card-you{background:rgba(124,77,255,.08);border-color:rgba(124,77,255,.3);}
.lb-card-left{display:flex;align-items:center;gap:10px;}
.lb-medal{font-size:1.3rem;flex-shrink:0;}
.lb-card-name{font-size:.9rem;font-weight:700;color:#fff;}
.lb-card-rank{font-size:.75rem;font-weight:600;margin-top:1px;}
.lb-card-xp{font-family:'Orbitron',sans-serif;font-size:1.1rem;font-weight:700;color:var(--purple);display:flex;align-items:baseline;gap:3px;}
.lb-card-xp-lbl{font-size:.65rem;color:var(--muted);font-family:'Inter',sans-serif;font-weight:600;}

/* ── Profile page ── */
.profile-header{
    display:flex;align-items:center;gap:24px;flex-wrap:wrap;
    padding:28px 32px;
}
.profile-avatar{
    width:72px;height:72px;flex-shrink:0;
    background:rgba(124,77,255,.15);border:2px solid rgba(124,77,255,.4);
    border-radius:50%;display:flex;align-items:center;justify-content:center;
    font-size:1.8rem;color:var(--purple);
}
.profile-info{flex:1 1 auto;}
.profile-username{font-family:'Orbitron',sans-serif;font-size:1.4rem;font-weight:800;color:#fff;margin-bottom:4px;}
.profile-rank{font-size:.9rem;font-weight:700;margin-bottom:8px;}
.profile-meta{display:flex;align-items:center;gap:14px;color:var(--muted);font-size:.82rem;flex-wrap:wrap;}
.profile-meta i{color:var(--purple);}
.profile-role-badge{padding:2px 10px;border-radius:20px;font-size:.72rem;font-weight:700;letter-spacing:.05em;}
.role-admin{background:rgba(124,77,255,.2);border:1px solid rgba(124,77,255,.4);color:var(--purple);}
.role-maker{background:rgba(255,45,157,.12);border:1px solid rgba(255,45,157,.3);color:#fd2f9d;}
.profile-stats-row{display:flex;align-items:center;gap:20px;flex-shrink:0;}
.profile-stat{display:flex;flex-direction:column;align-items:center;gap:3px;}
.profile-stat-val{font-family:'Orbitron',sans-serif;font-size:1.6rem;font-weight:700;color:var(--purple);line-height:1;}
.profile-stat-lbl{font-size:.7rem;color:var(--muted);letter-spacing:.08em;font-weight:600;text-transform:uppercase;}
.profile-stat-div{width:1px;height:40px;background:rgba(255,255,255,.1);}
@media(max-width:600px){.profile-header{flex-direction:column;align-items:flex-start;}.profile-stats-row{width:100%;justify-content:space-around;}}

/* ── hunter-name as link ── */
a.hunter-name{text-decoration:none;}
a.hunter-name:hover{color:var(--purple);}
