/* Hidden Investigations CTFd Theme v10 · @sakibulalikhan */

:root{--hi-dark:#08080a;--hi-surface:#0e0e11;--hi-surface-alt:#151518;--hi-panel:#12110d;--hi-gold:#f0c530;--hi-gold-bright:#ffe066;--hi-gold-dim:#a88a1a;--hi-gold-muted:#7a6a14;--hi-border:rgba(240,197,48,.12);--hi-border-strong:rgba(240,197,48,.28);--hi-glow:rgba(240,197,48,.06);--hi-text:#d8d4cb;--hi-text-muted:#777;--primary-font:"DM Sans",system-ui,-apple-system,sans-serif;--mono-font:"JetBrains Mono",ui-monospace,monospace;--hi-green:#40cb6f;--hi-green-glow:rgba(84,255,151,.12)}
:root,[data-bs-theme=light],[data-bs-theme=dark]{color-scheme:dark;--bs-body-bg:#08080a;--bs-body-color:#d8d4cb;--bs-dark:#08080a;--bs-link-color:#f0c530;--bs-link-hover-color:#ffe066;--bs-code-color:#ffd54f;--bs-primary:#c9a200;--bs-primary-rgb:201,162,0;--bs-emphasis-color:#fff;--bs-secondary-bg:#1c1c1f;--bs-tertiary-bg:#141416;--bs-border-color:#2a2a2d;--bs-border-color-translucent:rgba(255,255,255,.08)}
::selection{background:#f0c530;color:#000}
html,body,.container{font-family:var(--primary-font)}
body{background:var(--hi-dark)!important;color:var(--hi-text)!important;overflow-x:hidden;font-size:16px;line-height:1.6}
body::before{content:"";position:fixed;inset:0;z-index:-2;pointer-events:none;background-image:linear-gradient(rgba(240,197,48,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(240,197,48,.025) 1px,transparent 1px);background-size:56px 56px;mask-image:radial-gradient(ellipse 80% 55% at 50% 35%,black 15%,transparent 72%);-webkit-mask-image:radial-gradient(ellipse 80% 55% at 50% 35%,black 15%,transparent 72%)}
body::after{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(700px circle at 12% 20%,rgba(240,197,48,.035),transparent 55%),radial-gradient(600px circle at 88% 72%,rgba(240,197,48,.025),transparent 55%)}
a{color:var(--hi-gold);transition:color .15s}a:hover{color:var(--hi-gold-bright)}
h1,h2,h3,h4,h5,h6{color:#fff}
.text-muted,small.text-muted{color:var(--hi-text-muted)!important}.text-secondary{color:var(--hi-text-muted)!important}.text-dark,.text-body{color:var(--hi-text)!important}
hr{border-color:var(--hi-border);opacity:.4}
code{color:#ffd54f;font-family:var(--mono-font);font-size:.92em}
pre:has(>code){background:var(--hi-surface);border-radius:8px;border:1px solid var(--hi-border)}
@keyframes fadeSlideUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@keyframes toastIn{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
@keyframes livePulse{0%,100%{opacity:1}50%{opacity:.3}}
.slide-up{animation:fadeSlideUp .35s ease-out both}
body>footer{display:none}
@media(min-width:992px){body>div.modal-backdrop.fade.show{display:none}}

/* ── Navbar ────────────────────────────────────────────────── */
nav.navbar{user-select:none;background:rgba(12,12,14,.88)!important;backdrop-filter:blur(20px);width:fit-content;margin:auto;top:unset;bottom:14px;padding:0 28px;border-radius:16px;border:1px solid var(--hi-border);box-shadow:0 4px 40px rgba(0,0,0,.5),0 0 24px var(--hi-glow)}
.navbar-brand{color:var(--hi-gold)!important;font-weight:700;letter-spacing:.3px}
.navbar .nav-link{color:var(--hi-text)!important;transition:color .15s;font-size:1rem}
.navbar .nav-link:hover,.navbar .nav-link.active{color:var(--hi-gold)!important}
.navbar-toggler{border-color:var(--hi-border)}.navbar-toggler-icon{filter:invert(.8) sepia(1) saturate(3) hue-rotate(10deg)}
nav.navbar .nav-item:has(.fa-sun),nav.navbar .nav-item:has(.fa-moon),nav.navbar .nav-item:has(.theme-switch){display:none}
nav.navbar .nav-item:has(.fa-language) .dropdown-toggle::after{display:none}
nav.navbar .nav-item:has(.fa-language) .dropdown-menu,nav.navbar form[x-data="LanguageForm"] ul.dropdown-menu{top:auto!important;bottom:100%!important;margin-bottom:8px!important;background:rgba(12,12,14,.94)!important;backdrop-filter:blur(16px);border:1px solid var(--hi-border)!important;border-radius:14px!important;max-height:50vh;overflow-y:auto}
nav.navbar form[x-data="LanguageForm"] span.dropdown-item.bg-primary{background:#c9a200!important}
@media(min-width:576px)and(max-width:991px){nav.navbar .nav-item .d-sm-inline{font-size:0}nav.navbar .nav-item .d-sm-inline i{font-size:16px}}
body>nav>.container>.navbar-brand:hover::before{content:"Powered by CTFd / Theme by @sakibulalikhan";position:absolute;pointer-events:none;top:-26px;left:0;font-size:11px;color:var(--hi-gold-dim);white-space:nowrap}
body:has(>nav:hover) .bs-tooltip-auto{display:none}

/* ── Main ──────────────────────────────────────────────────── */
main{padding-top:0;background:transparent}
main>div.container{container-type:inline-size}
.jumbotron{padding:0;margin:28px 0;background:transparent!important}
.jumbotron h1,main .jumbotron h1{font-size:32px;color:var(--hi-gold)!important;font-weight:800;text-transform:uppercase;letter-spacing:1.5px}
.jumbotron h2{color:var(--hi-gold)}
main>div.container:not(:has(>div[x-data="ChallengeBoard"]))>.row>div{border-radius:14px;background:rgba(18,17,13,.88);backdrop-filter:blur(6px);border:1px solid var(--hi-border);box-shadow:0 0 20px var(--hi-glow);padding:28px;animation:fadeSlideUp .35s ease-out both}
main:not(:has(>.jumbotron))>.container{min-height:80vh;display:flex;flex-direction:column;justify-content:center}

/* ── Forms ──────────────────────────────────────────────────── */
.form-control,.form-select,input[type="text"],input[type="password"],input[type="url"],input[type="email"],input[type="date"],input[type="number"],input[type="search"],textarea.form-control{background-color:var(--hi-surface-alt)!important;color:var(--hi-text)!important;border:1px solid var(--hi-border)!important;transition:border-color .2s,box-shadow .2s;font-size:1rem}
.form-control:focus,.form-select:focus,input:focus,textarea:focus{box-shadow:0 0 0 3px rgba(240,197,48,.14)!important;border-color:var(--hi-gold)!important;background-color:var(--hi-surface)!important}
.form-control::placeholder,input::placeholder,textarea::placeholder{color:#4a4a4a!important}
.form-label,label{color:var(--hi-text);font-weight:500}
.form-select{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23f0c530' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e")!important}

/* ── Buttons ───────────────────────────────────────────────── */
.btn{transition:all .18s ease;font-weight:500}
.btn.btn-primary,.btn-primary{background:linear-gradient(135deg,#c9a200,#dbb520)!important;border-color:var(--hi-border-strong)!important;color:#000!important;font-weight:600}
.btn.btn-primary:hover,.btn-primary:hover{background:linear-gradient(135deg,#dbb520,#f0c530)!important;transform:translateY(-1px);box-shadow:0 4px 18px rgba(240,197,48,.28)}
.btn-outline-primary{color:var(--hi-gold)!important;border-color:var(--hi-gold)!important}.btn-outline-primary:hover{background:var(--hi-gold)!important;color:#000!important}
.btn-outline-secondary{color:var(--hi-text);border-color:#3a3a3d}.btn-outline-secondary:hover{background:#2a2a2d;color:#fff}
.btn-dark{background-color:var(--hi-surface-alt)!important;border-color:var(--hi-border)!important;color:var(--hi-text)!important}
.btn-info{background-color:var(--hi-gold-muted)!important;border-color:var(--hi-border-strong)!important;color:var(--hi-gold)!important}
.submit-row #challenge-submit{border-color:var(--hi-gold)!important;color:var(--hi-gold)!important;background:transparent!important}
.submit-row #challenge-submit:hover{background:var(--hi-gold)!important;color:#000!important;font-weight:600}

/* ── Tables ────────────────────────────────────────────────── */
.table{--bs-table-bg:transparent;--bs-table-border-color:transparent;color:var(--hi-text);border-radius:8px;outline:1px solid var(--hi-border)}
.table>:not(caption)>*>*{background-color:transparent;color:var(--hi-text);border-bottom-color:rgba(240,197,48,.05)}
.table thead th{color:var(--hi-gold);border-bottom-color:var(--hi-border-strong);font-weight:600;text-transform:uppercase;font-size:.8rem;letter-spacing:.8px}
#score-graph{background:var(--hi-surface-alt)!important;border-radius:14px 14px 0 0;box-shadow:0 0 24px var(--hi-glow);position:static!important;padding-top:14px}
div[x-data="TeamGraphs"] #score-graph{border-radius:8px;box-shadow:none}

/* ================================================================
 * FIXED RIGHT SIDEBAR — Progress + Live Activity
 * Hides when challenge description pane is open (desktop)
 * ================================================================ */
.hi-aside{
  position:fixed;right:20px;top:90px;width:280px;z-index:10;
  max-height:calc(100vh - 140px);overflow-y:auto;
}
/* Sidebar always visible — challenge-window width accounts for it */
.hi-aside-card{
  background:rgba(18,17,13,.92);backdrop-filter:blur(8px);
  border:1px solid var(--hi-border);border-radius:14px;
  overflow:hidden;margin-bottom:14px;
}
.hi-aside-header{
  display:flex;align-items:center;gap:8px;
  padding:14px 16px;font-size:13px;font-weight:700;
  text-transform:uppercase;letter-spacing:1.2px;
  color:var(--hi-gold);border-bottom:1px solid var(--hi-border);
}
.hi-aside-header i{font-size:14px}
.hi-aside-body{padding:16px}

/* Stats row */
.hi-aside-stats{display:flex;gap:8px;margin-bottom:14px}
.hi-aside-stat{
  flex:1;text-align:center;padding:10px 6px;
  background:rgba(255,255,255,.025);border:1px solid rgba(255,255,255,.05);
  border-radius:10px;transition:border-color .2s;
}
.hi-aside-stat:hover{border-color:rgba(240,197,48,.15)}
.hi-aside-stat-val{font-family:var(--mono-font);font-weight:700;font-size:18px;color:#fff;line-height:1.2}
.hi-aside-stat-lbl{font-size:10px;color:var(--hi-text-muted);text-transform:uppercase;letter-spacing:.6px;margin-top:4px}

/* Progress bar */
.hi-aside-bar{height:7px;border-radius:4px;background:rgba(255,255,255,.05);overflow:hidden;margin-bottom:6px}
.hi-aside-bar-fill{height:100%;border-radius:4px;background:linear-gradient(90deg,var(--hi-gold-dim),var(--hi-gold));transition:width .8s cubic-bezier(.4,0,.2,1)}
.hi-aside-bar-label{text-align:right;font-size:13px;color:var(--hi-text-muted)}
.hi-aside-bar-label span{font-family:var(--mono-font);font-weight:600;color:var(--hi-gold)}

/* Live dot */
.hi-aside-live-dot{width:7px;height:7px;border-radius:50%;background:var(--hi-green);margin-left:auto;box-shadow:0 0 6px rgba(64,203,111,.5);animation:livePulse 2s ease-in-out infinite}

/* Activity feed */
.hi-aside-feed{padding:12px 16px;max-height:300px;overflow-y:auto}
.hi-feed-row{
  display:flex;align-items:flex-start;gap:10px;
  padding:10px 0;border-bottom:1px solid rgba(255,255,255,.04);
}
.hi-feed-row:last-child{border-bottom:none}
.hi-feed-icon{color:var(--hi-green);font-size:12px;margin-top:3px;flex-shrink:0}
.hi-feed-info{flex:1;min-width:0}
.hi-feed-who{font-weight:600;font-size:14px;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hi-feed-what{font-size:13px;color:var(--hi-text-muted)}
.hi-feed-what strong{color:var(--hi-text);font-weight:500}
.hi-feed-when{font-size:11px;color:#555;margin-top:2px}
.hi-feed-pts{font-family:var(--mono-font);font-size:14px;color:var(--hi-green);font-weight:600;flex-shrink:0}

/* ================================================================
 * CHALLENGE BOARD — Lingonberry list (DESKTOP ≥992px)
 * ================================================================ */
div[x-data="ChallengeBoard"]{width:fit-content;border-radius:14px;background:rgba(18,17,13,.9);backdrop-filter:blur(6px);border:1px solid var(--hi-border);box-shadow:0 0 24px var(--hi-glow);margin:0 calc(50% - 180px);transition:margin .35s ease;position:relative}
div[x-data="ChallengeBoard"]:not(:has(div[x-show="loaded"]>div)){opacity:.5;margin:auto}
div[x-data="ChallengeBoard"] .category-header{margin:0!important}
div[x-data="ChallengeBoard"] .category-header h3{font-size:12px;font-weight:700;text-transform:uppercase;color:var(--hi-gold)!important;letter-spacing:1.8px}
div[x-data="ChallengeBoard"] .fa-spin.spinner{color:var(--hi-gold)!important;opacity:1}
div[x-data="ChallengeBoard"]>div[x-show="loaded"]{padding:22px}
div[x-data="ChallengeBoard"]>div[x-show="loaded"]>div.pt-5{padding:0!important}
div[x-data="ChallengeBoard"]>div[x-show="loaded"]>div.pt-5:not(:last-child){margin-bottom:8px}
div[x-data="ChallengeBoard"] .challenges-row{flex-direction:column;gap:5px}
div[x-data="ChallengeBoard"] .challenges-row>div{margin:0!important;min-width:fit-content;width:320px}
div[x-data="ChallengeBoard"] .challenges-row .challenge-inner{font-weight:400;display:flex;justify-content:space-between;margin:0!important}
div[x-data="ChallengeBoard"] .challenges-row .challenge-inner p{margin-bottom:0;font-size:1rem}
div[x-data="ChallengeBoard"] .challenges-row .challenge-inner span{scale:.88;font-family:var(--mono-font);font-size:14px;color:var(--hi-gold-dim)}
div[x-data="ChallengeBoard"] .challenges-row .challenge-button{box-shadow:none}
.challenges-row .challenge-button,#challenge-window .nav-item{transition:all .15s ease;border-radius:8px;background:rgba(255,255,255,.02);border:1px solid rgba(255,255,255,.04)}
.challenges-row .challenge-button:hover,#challenge-window .nav-item:hover{background:rgba(240,197,48,.07);border-color:rgba(240,197,48,.14);transform:translateX(2px)}
.challenges-row .challenge-button.challenge-solved{background:rgba(64,203,111,.16)}
.challenges-row .challenge-button.challenge-solved:hover{background:rgba(84,255,142,.22);border-color:rgba(0,255,149,.1)}
body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]{margin:0}

/* ── Challenge window — DESKTOP side-pane ──────────────────── */
#challenge-window{
  width:calc(100cqw - 370px - 320px - 20px);max-height:78vh;
  position:absolute;top:8px;left:calc(370px + 32px);
  border-radius:14px;background:rgba(18,17,13,.92);backdrop-filter:blur(10px);
  border:1px solid var(--hi-border);box-shadow:0 8px 40px rgba(0,0,0,.4),0 0 20px var(--hi-glow);
  overflow:clip;
}
@media(min-width:992px){#challenge-window,#challenge-window .modal-dialog,#challenge-window .modal-content{max-height:78vh;height:fit-content}}
#challenge-window .modal-dialog{margin:0;max-width:unset;height:100%;transform:none}
#challenge-window .modal-content{background:none;border:none;overflow:auto;height:100%}
#challenge-window .modal-content .btn-close{filter:var(--bs-btn-close-white-filter);opacity:.9}
#challenge-window .modal-body>div:first-child{display:flex;justify-content:space-between;flex-direction:row-reverse;align-items:center}
#challenge-window .nav.nav-tabs{gap:6px;border:none}
#challenge-window .nav.nav-tabs .nav-link{color:var(--hi-text);border:none;background:none;font-size:.95rem}
#challenge-window .nav.nav-tabs .nav-link.active{border:none;background:none}
#challenge-window .nav.nav-tabs .nav-item:has(.active){background:rgba(240,197,48,.1);border:1px solid rgba(240,197,48,.18);border-radius:6px}

/* ================================================================
 * MOBILE CHALLENGE WINDOW — Reset ALL Lingonberry to Bootstrap defaults
 * ================================================================ */
@media(max-width:991px){
  #challenge-window{
    position:fixed!important;top:0!important;left:0!important;right:auto!important;bottom:auto!important;
    width:100%!important;height:100%!important;max-height:none!important;max-width:none!important;
    margin:0!important;border-radius:0!important;border:none!important;box-shadow:none!important;
    overflow-x:hidden!important;overflow-y:auto!important;z-index:1055!important;background:var(--hi-panel)!important;
  }
  #challenge-window .modal-dialog{margin:.5rem!important;max-width:500px!important;height:auto!important;margin-right:auto!important;margin-left:auto!important}
  #challenge-window .modal-content{background:var(--hi-panel)!important;border:1px solid var(--hi-border)!important;border-radius:12px!important;overflow:visible!important;height:auto!important;max-height:none!important}
  body>div.modal-backdrop.fade.show{display:block!important}
  body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]{margin:auto!important}
  div[x-data="ChallengeBoard"]{width:100%!important;margin:0!important}
  /* Sidebar becomes inline on mobile */
  .hi-aside{position:static!important;width:100%!important;max-height:none;overflow:visible;margin-top:20px;opacity:1!important;pointer-events:auto!important;transform:none!important;display:flex;flex-wrap:wrap;gap:12px}
  .hi-aside-card{flex:1;min-width:280px}
}
@media(max-width:575px){
  #challenge-window .modal-dialog{margin:0!important;max-width:100%!important}
  #challenge-window .modal-content{border-radius:0!important;border:none!important;min-height:100vh}
  .hi-aside{flex-direction:column}
  .hi-aside-card{min-width:100%}
}

/* ── Notification/Review ───────────────────────────────────── */
#challenge .notification-row{margin-top:8px}
#challenge .notification-row .alert{border-radius:12px;backdrop-filter:blur(8px);box-shadow:0 4px 20px rgba(0,0,0,.3);animation:toastIn .3s ease-out}
#challenge .notification-row .alert hr{border-color:rgba(255,255,255,.1)}
#challenge .notification-row .rating-star{cursor:pointer;transition:transform .1s}
#challenge .notification-row .rating-star:hover{transform:scale(1.15)}
#challenge .notification-row textarea.form-control{background:rgba(255,255,255,.06)!important;border:1px solid rgba(255,255,255,.1)!important;border-radius:10px}
#challenge .notification-row .btn-info{background:rgba(240,197,48,.15)!important;border-color:var(--hi-border-strong)!important;color:var(--hi-gold)!important;border-radius:8px}
#challenge .notification-row .btn-group .btn{border-color:rgba(255,255,255,.12)!important;color:var(--hi-text)!important}
.alert-success,#challenge .alert-success{color:#fff!important;border-color:#0f5132!important;background:rgba(57,193,131,.65)!important}
.alert-danger,#challenge .alert-danger{color:#fff!important;border-color:#842029!important;background:rgba(181,67,77,.65)!important}
.alert-info,#challenge .alert-info{color:var(--hi-gold)!important;border-color:#554400!important;background:rgba(240,197,48,.15)!important}
.alert-warning,#challenge .alert-warning{color:#ffda6a!important;border-color:#664d03!important;background:rgba(255,193,7,.15)!important}

/* ── Challenge highlight (0-99) ────────────────────────────── */
body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"] [x-init^="id = "]{transition:box-shadow 2s;box-shadow:none}
body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 0;"]) .challenge-button[value="0"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 1;"]) .challenge-button[value="1"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 2;"]) .challenge-button[value="2"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 3;"]) .challenge-button[value="3"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 4;"]) .challenge-button[value="4"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 5;"]) .challenge-button[value="5"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 6;"]) .challenge-button[value="6"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 7;"]) .challenge-button[value="7"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 8;"]) .challenge-button[value="8"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 9;"]) .challenge-button[value="9"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 10;"]) .challenge-button[value="10"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 11;"]) .challenge-button[value="11"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 12;"]) .challenge-button[value="12"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 13;"]) .challenge-button[value="13"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 14;"]) .challenge-button[value="14"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 15;"]) .challenge-button[value="15"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 16;"]) .challenge-button[value="16"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 17;"]) .challenge-button[value="17"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 18;"]) .challenge-button[value="18"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 19;"]) .challenge-button[value="19"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 20;"]) .challenge-button[value="20"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 21;"]) .challenge-button[value="21"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 22;"]) .challenge-button[value="22"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 23;"]) .challenge-button[value="23"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 24;"]) .challenge-button[value="24"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 25;"]) .challenge-button[value="25"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 26;"]) .challenge-button[value="26"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 27;"]) .challenge-button[value="27"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 28;"]) .challenge-button[value="28"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 29;"]) .challenge-button[value="29"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 30;"]) .challenge-button[value="30"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 31;"]) .challenge-button[value="31"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 32;"]) .challenge-button[value="32"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 33;"]) .challenge-button[value="33"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 34;"]) .challenge-button[value="34"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 35;"]) .challenge-button[value="35"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 36;"]) .challenge-button[value="36"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 37;"]) .challenge-button[value="37"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 38;"]) .challenge-button[value="38"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 39;"]) .challenge-button[value="39"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 40;"]) .challenge-button[value="40"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 41;"]) .challenge-button[value="41"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 42;"]) .challenge-button[value="42"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 43;"]) .challenge-button[value="43"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 44;"]) .challenge-button[value="44"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 45;"]) .challenge-button[value="45"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 46;"]) .challenge-button[value="46"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 47;"]) .challenge-button[value="47"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 48;"]) .challenge-button[value="48"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 49;"]) .challenge-button[value="49"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 50;"]) .challenge-button[value="50"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 51;"]) .challenge-button[value="51"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 52;"]) .challenge-button[value="52"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 53;"]) .challenge-button[value="53"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 54;"]) .challenge-button[value="54"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 55;"]) .challenge-button[value="55"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 56;"]) .challenge-button[value="56"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 57;"]) .challenge-button[value="57"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 58;"]) .challenge-button[value="58"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 59;"]) .challenge-button[value="59"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 60;"]) .challenge-button[value="60"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 61;"]) .challenge-button[value="61"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 62;"]) .challenge-button[value="62"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 63;"]) .challenge-button[value="63"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 64;"]) .challenge-button[value="64"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 65;"]) .challenge-button[value="65"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 66;"]) .challenge-button[value="66"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 67;"]) .challenge-button[value="67"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 68;"]) .challenge-button[value="68"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 69;"]) .challenge-button[value="69"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 70;"]) .challenge-button[value="70"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 71;"]) .challenge-button[value="71"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 72;"]) .challenge-button[value="72"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 73;"]) .challenge-button[value="73"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 74;"]) .challenge-button[value="74"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 75;"]) .challenge-button[value="75"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 76;"]) .challenge-button[value="76"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 77;"]) .challenge-button[value="77"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 78;"]) .challenge-button[value="78"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 79;"]) .challenge-button[value="79"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 80;"]) .challenge-button[value="80"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 81;"]) .challenge-button[value="81"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 82;"]) .challenge-button[value="82"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 83;"]) .challenge-button[value="83"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 84;"]) .challenge-button[value="84"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 85;"]) .challenge-button[value="85"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 86;"]) .challenge-button[value="86"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 87;"]) .challenge-button[value="87"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 88;"]) .challenge-button[value="88"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 89;"]) .challenge-button[value="89"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 90;"]) .challenge-button[value="90"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 91;"]) .challenge-button[value="91"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 92;"]) .challenge-button[value="92"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 93;"]) .challenge-button[value="93"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 94;"]) .challenge-button[value="94"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 95;"]) .challenge-button[value="95"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 96;"]) .challenge-button[value="96"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 97;"]) .challenge-button[value="97"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 98;"]) .challenge-button[value="98"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has([x-init^="id = 99;"]) .challenge-button[value="99"]{background:rgba(240,197,48,.1)!important;border:1px solid rgba(240,197,48,.22)!important}
body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has(.challenge-solved[value="0"]) [x-init^="id = 0;"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has(.challenge-solved[value="1"]) [x-init^="id = 1;"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has(.challenge-solved[value="2"]) [x-init^="id = 2;"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has(.challenge-solved[value="3"]) [x-init^="id = 3;"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has(.challenge-solved[value="4"]) [x-init^="id = 4;"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has(.challenge-solved[value="5"]) [x-init^="id = 5;"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has(.challenge-solved[value="6"]) [x-init^="id = 6;"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has(.challenge-solved[value="7"]) [x-init^="id = 7;"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has(.challenge-solved[value="8"]) [x-init^="id = 8;"],body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has(.challenge-solved[value="9"]) [x-init^="id = 9;"]{box-shadow:inset 0 0 160px var(--hi-green-glow)}
body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has(.challenge-solved[value="0"]) [x-init^="id = 0;"] #challenge-submit,body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has(.challenge-solved[value="1"]) [x-init^="id = 1;"] #challenge-submit,body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has(.challenge-solved[value="2"]) [x-init^="id = 2;"] #challenge-submit,body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has(.challenge-solved[value="3"]) [x-init^="id = 3;"] #challenge-submit,body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has(.challenge-solved[value="4"]) [x-init^="id = 4;"] #challenge-submit,body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has(.challenge-solved[value="5"]) [x-init^="id = 5;"] #challenge-submit,body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has(.challenge-solved[value="6"]) [x-init^="id = 6;"] #challenge-submit,body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has(.challenge-solved[value="7"]) [x-init^="id = 7;"] #challenge-submit,body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has(.challenge-solved[value="8"]) [x-init^="id = 8;"] #challenge-submit,body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has(.challenge-solved[value="9"]) [x-init^="id = 9;"] #challenge-submit{font-size:0!important;background:rgba(84,255,142,.28)!important;border-color:rgba(203,255,200,.18)!important}
body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has(.challenge-solved[value="0"]) [x-init^="id = 0;"] #challenge-submit::after,body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has(.challenge-solved[value="1"]) [x-init^="id = 1;"] #challenge-submit::after,body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has(.challenge-solved[value="2"]) [x-init^="id = 2;"] #challenge-submit::after,body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has(.challenge-solved[value="3"]) [x-init^="id = 3;"] #challenge-submit::after,body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has(.challenge-solved[value="4"]) [x-init^="id = 4;"] #challenge-submit::after,body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has(.challenge-solved[value="5"]) [x-init^="id = 5;"] #challenge-submit::after,body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has(.challenge-solved[value="6"]) [x-init^="id = 6;"] #challenge-submit::after,body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has(.challenge-solved[value="7"]) [x-init^="id = 7;"] #challenge-submit::after,body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has(.challenge-solved[value="8"]) [x-init^="id = 8;"] #challenge-submit::after,body:has(>div.modal-backdrop.fade.show) div[x-data="ChallengeBoard"]:has(.challenge-solved[value="9"]) [x-init^="id = 9;"] #challenge-submit::after{font-size:16px;content:"✓ Solved"}

/* File buttons */
a.btn-file{background:var(--hi-gold-muted)!important;border-color:var(--hi-border-strong)!important;color:var(--hi-gold)!important;display:inline-flex!important;flex-direction:column;justify-content:center}a.btn-file:hover{background:var(--hi-gold-dim)!important;transform:translateY(-2px)}a.btn-file i{font-size:32px}a.btn-file i::before{content:"\f15b"}a.btn-file[title$="zip"]>i::before,a.btn-file[title$="rar"]>i::before,a.btn-file[title$="gz"]>i::before,a.btn-file[title$="tar"]>i::before{content:"\f1c6"}a.btn-file[title$="png"]>i::before,a.btn-file[title$="jpg"]>i::before,a.btn-file[title$="bmp"]>i::before,a.btn-file[title$="gif"]>i::before{content:"\f03e"}a.btn-file[title$="php"]>i::before,a.btn-file[title$="py"]>i::before,a.btn-file[title$="js"]>i::before,a.btn-file[title$=".c"]>i::before{content:"\f1c9"}a.btn-file[title$="pdf"]>i::before{content:"\f1c1"}a.btn-file[title$="txt"]>i::before{content:"\f15c"}

/* Bootstrap overrides */
.card{background-color:rgba(18,17,13,.88)!important;border-color:var(--hi-border)!important;color:var(--hi-text)}.card-header{background-color:rgba(240,197,48,.04)!important;border-bottom-color:var(--hi-border)!important}.modal-content{background-color:var(--hi-panel)!important;border-color:var(--hi-border)!important;color:var(--hi-text)}.modal-header{border-bottom-color:var(--hi-border)!important}.modal-footer{border-top-color:var(--hi-border)!important}.dropdown-menu{background-color:rgba(14,14,17,.94)!important;border-color:var(--hi-border)!important;backdrop-filter:blur(12px);border-radius:10px!important}.dropdown-item{color:var(--hi-text)!important}.dropdown-item:hover,.dropdown-item:focus{background-color:rgba(240,197,48,.08)!important;color:var(--hi-gold)!important}.dropdown-item.active,.dropdown-item:active{background-color:#c9a200!important;color:#000!important}.page-link{background-color:var(--hi-surface-alt);border-color:var(--hi-border);color:var(--hi-gold)}.page-link:hover{background-color:rgba(240,197,48,.1)}.page-item.active .page-link{background-color:#c9a200;border-color:#c9a200;color:#000}.nav-pills{--bs-nav-pills-link-active-bg:#c9a200}.nav-pills .nav-link.active{color:#000;font-weight:600}.nav-pills .nav-link{color:var(--hi-text)}.badge.bg-primary{background-color:#c9a200!important;color:#000!important}.badge.bg-info{background-color:rgba(240,197,48,.14)!important;color:var(--hi-gold)!important}.badge.bg-secondary{background-color:#2a2a2d!important}.progress{background-color:var(--hi-surface);border-radius:6px}.progress-bar{background:linear-gradient(90deg,var(--hi-gold-dim),var(--hi-gold));color:#000}.list-group-item{background-color:var(--hi-surface-alt);border-color:var(--hi-border);color:var(--hi-text)}.bg-body,.bg-light{background-color:var(--hi-surface)!important}.bg-dark{background-color:#0d0d0d!important}.border{border-color:var(--hi-border)!important}.accordion-button{background-color:var(--hi-surface-alt)!important;color:var(--hi-text)!important}.accordion-button:not(.collapsed){background-color:rgba(240,197,48,.07)!important;color:var(--hi-gold)!important}.tooltip-inner{background-color:#0d0d0d;color:var(--hi-gold)}.snackbar{background-color:var(--hi-panel)!important;border:1px solid var(--hi-border)}

/* Scoreboard */
.hi-rank-badge{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:50%;font-weight:700;font-size:13px}.hi-rank-1{background:linear-gradient(135deg,#f0c530,#ffd700);color:#000;box-shadow:0 0 10px rgba(240,197,48,.35)}.hi-rank-2{background:linear-gradient(135deg,#9a9a9a,#ccc);color:#000}.hi-rank-3{background:linear-gradient(135deg,#cd7f32,#e8a85c);color:#000}.hi-rank-other{background:var(--hi-surface-alt);color:var(--hi-text-muted);border:1px solid var(--hi-border)}.hi-score-bar{height:4px;border-radius:2px;background:var(--hi-surface);overflow:hidden;margin-top:3px}.hi-score-bar-fill{height:100%;border-radius:2px;background:linear-gradient(90deg,var(--hi-gold-dim),var(--hi-gold));transition:width .7s ease}.hi-podium-card{background:rgba(18,17,13,.88);border:1px solid var(--hi-border);border-radius:14px;padding:14px 16px;text-align:center;transition:transform .2s;min-width:100px}.hi-podium-card:hover{transform:translateY(-3px)}.hi-podium-first{transform:translateY(-10px);border-color:rgba(240,197,48,.25);box-shadow:0 0 18px var(--hi-glow);min-width:110px}.hi-podium-card .hi-podium-name{font-weight:700;color:#fff;max-width:90px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin:0 auto;font-size:.9rem}.hi-podium-card .hi-podium-score{color:var(--hi-gold);font-weight:600;font-size:13px;font-family:var(--mono-font)}.hi-scoreboard-row{transition:background .12s}.hi-scoreboard-row:hover{background:rgba(240,197,48,.025)!important}

/* ── MOBILE (general) ──────────────────────────────────────── */
@media(max-width:991px){div[x-data="ChallengeBoard"] .challenges-row{flex-direction:row;flex-wrap:wrap}div[x-data="ChallengeBoard"] .challenges-row>div{width:50%}}
@media(max-width:767px){.jumbotron{margin:16px 0 10px}.jumbotron h1{font-size:22px!important}.jumbotron p{font-size:14px!important}div[x-data="ChallengeBoard"]{border-radius:10px}div[x-data="ChallengeBoard"]>div[x-show="loaded"]{padding:14px}div[x-data="ChallengeBoard"] .challenges-row>div{width:100%!important}main>div.container:not(:has(>div[x-data="ChallengeBoard"]))>.row>div{padding:18px;border-radius:10px}.hi-podium-card{display:none}}
@media(max-width:575.98px){nav.navbar{position:fixed!important;bottom:0!important;top:auto!important;left:0!important;right:0!important;width:100%!important;margin:0!important;border-radius:0!important;padding:6px 12px!important;z-index:1030;border-top:1px solid var(--hi-border);border-left:none;border-right:none;border-bottom:none}.navbar-toggler{width:auto;margin:0;padding:4px 8px}.navbar-brand{margin:0 auto 0 0;font-size:.95rem}nav.navbar .collapse.navbar-collapse{position:absolute;bottom:100%;left:0;right:0;background:rgba(12,12,14,.96);backdrop-filter:blur(16px);border:1px solid var(--hi-border);border-bottom:none;border-radius:12px 12px 0 0;padding:12px 16px;max-height:70vh;overflow-y:auto}nav.navbar .navbar-nav{flex-direction:column}nav.navbar .nav-link{padding:10px 0!important;font-size:1rem!important}body{padding-bottom:56px!important}main{padding-top:0!important}.jumbotron h1{font-size:20px!important}}

::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:var(--hi-dark)}::-webkit-scrollbar-thumb{background:rgba(240,197,48,.2);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:rgba(240,197,48,.35)}
