/* =====================================================================
   ASUCSC CTF — poster / editorial theme (CTFd 3.8, theme "asucsc")
   Loads after main.css (Bootstrap 4) and core.css, so equal-specificity
   rules here win. Keep asucsc-theme.css and asucsc-theme.min.css
   identical, and bump ?v= in base.html whenever this file changes.
   ===================================================================== */

/* ---------- 1. tokens ---------- */
:root,body{
  --bg:#F3F6FC;--surface:#FFFFFF;--surface-2:#EEF2FA;--surface-3:#E3E9F6;
  --ink:#010E1B;--ink-2:#3d4756;--ink-3:#6b6870;
  --line:#D5DCEC;--line-2:#E6EBF5;
  --field:#FFFFFF;--field-line:#C9D3EC;
  --accent:#91A5FF;--accent-2:#5E76E0;--accent-ink:#010E1B;--accent-text:#4a5fd0;
  --ok:#1f8a4c;--warn:#a86f12;--danger:#c62828;
  --dots:rgba(1,14,27,.07);
  --hover-bg:#010E1B;--hover-ink:#F3F6FC;
  --shadow-lg:0 30px 80px -20px rgba(1,14,27,.35);
}
/* dark is the default; the sidebar and the auth poster are always dark */
body.dark,.cr-sidebar,.cr-auth-brand{
  --bg:#010E1B;--surface:#041426;--surface-2:#071b31;--surface-3:#0b233d;
  --ink:#EBE2D7;--ink-2:#b4aea8;--ink-3:#878488;
  --line:#28345C;--line-2:rgba(235,226,215,.07);
  --field:#010a14;--field-line:#28345C;
  --accent:#91A5FF;--accent-2:#AFC0FF;--accent-ink:#010E1B;--accent-text:#91A5FF;
  --ok:#3fcf7a;--warn:#e0b04a;--danger:#ff6b6b;
  --dots:rgba(235,226,215,.05);
  --hover-bg:#EBE2D7;--hover-ink:#010E1B;
  --shadow-lg:0 30px 80px -20px rgba(0,0,0,.7);
  color-scheme:dark;
}
/* aliases used by older markup — redeclared wherever the tokens change */
:root,body,.cr-sidebar,.cr-auth-brand{
  --paper:var(--bg);
  --maroon:var(--accent-text);--maroon-deep:var(--accent-2);--maroon-bright:var(--accent);
  --gold:var(--accent-text);--gold-bright:var(--accent);--gold-soft:color-mix(in srgb,var(--accent) 16%,transparent);
  --info:var(--accent-text);--radius:0;--radius-sm:0;
}
:root{
  --font-display:"Russo One","Chakra Petch",system-ui,sans-serif;
  --font-body:"Chakra Petch","Segoe UI",system-ui,sans-serif;
  --font-mono:"Share Tech Mono","SF Mono",ui-monospace,Menlo,Consolas,monospace;
  --nav-w:248px;--topbar-h:68px;--gutter:clamp(18px,4vw,52px);
}

/* ---------- 2. base ---------- */
html{scrollbar-color:#C9D3EC #F3F6FC;scrollbar-gutter:stable;}
html:has(body.dark){color-scheme:dark;scrollbar-color:#28345C #010E1B;}
html,body{margin:0;padding:0!important;min-height:100%;height:auto!important;overflow:visible!important;}
html:has(body.modal-open){overflow:hidden!important;}
/* the reserved scrollbar gutter sits outside the backdrop; paint it the dimmed page colour */
html:has(body.modal-open){background:#2d3844;}
html:has(body.modal-open.dark){background:#010E1B;}
html,body,.container{font-family:var(--font-body);}
body{font-size:15px;line-height:1.55;color:var(--ink);background-color:var(--bg);
  background-image:radial-gradient(var(--dots) 1px,transparent 1px);background-size:24px 24px;
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}
[hidden]{display:none!important;}
h1,h2,h3,.h1,.h2,.h3{font-family:var(--font-display);font-weight:400;letter-spacing:0;}
h4,h5,h6,.h4,.h5,.h6{font-family:var(--font-body);font-weight:600;letter-spacing:0;}
a{color:var(--accent-text);text-decoration:none;transition:color .15s;}
a:hover{color:var(--ink);text-decoration:none;}
::selection{background:var(--accent);color:#010E1B;}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
:focus:not(:focus-visible){outline:none;}
.text-muted{color:var(--ink-3)!important;}
.text-success{color:var(--ok)!important;}
.text-danger{color:var(--danger)!important;}
.text-warning{color:var(--warn)!important;}
.text-primary,.text-info{color:var(--accent-text)!important;}
.text-secondary{color:var(--ink-2)!important;}
.text-dark{color:var(--ink)!important;}
code,kbd,pre,samp{font-family:var(--font-mono);}
code{padding:.1em .4em;font-size:.9em;color:var(--accent-text);background:color-mix(in srgb,var(--accent) 12%,transparent);overflow-wrap:anywhere;}
a > code{color:inherit;}
pre{padding:14px 16px;font-size:13px;line-height:1.6;color:var(--ink);background:var(--field);border:1px solid var(--line);}
pre code{padding:0;font-size:inherit;color:inherit;background:none;}
kbd{font-size:.85em;color:var(--ink);background:var(--surface-2);border:1px solid var(--line);border-radius:0;box-shadow:none;}
hr{margin:24px 0;border:0;border-top:1px solid var(--line);}
blockquote{margin:0;padding:0;border:0;}
.spinner{color:var(--accent-text);}
.fa-spin.spinner{opacity:.9;}
i.spinner{font-size:24px;}
/* utilities */
.cr-display{font-family:var(--font-display);font-weight:400;letter-spacing:0;}
.cr-mono,.text-mono{font-family:var(--font-mono);}
.cr-eyebrow,.cr-eyebrow-maroon,.cr-k{font-family:var(--font-mono);font-size:11px;font-weight:400;line-height:1.4;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-3);}
.cr-eyebrow-maroon{color:var(--accent-text);}
.cr-narrow{max-width:480px;}
.asu-r{color:#91A5FF;}
/* viewfinder corners — the brand's framing motif */
.cr-vf,.cr-auth-brand,#challenges-board .challenge-button,#challenge-window .modal-content{position:relative;}
.cr-vf::before,.cr-auth-brand::before,#challenges-board .challenge-button::before,#challenge-window .modal-content::before{
  content:"";position:absolute;inset:var(--vf-inset,-1px);z-index:1;pointer-events:none;
  --vf:var(--vf-c,var(--accent));
  background:
    linear-gradient(var(--vf),var(--vf)) left top/var(--vf-l,14px) var(--vf-w,2px),
    linear-gradient(var(--vf),var(--vf)) left top/var(--vf-w,2px) var(--vf-l,14px),
    linear-gradient(var(--vf),var(--vf)) right top/var(--vf-l,14px) var(--vf-w,2px),
    linear-gradient(var(--vf),var(--vf)) right top/var(--vf-w,2px) var(--vf-l,14px),
    linear-gradient(var(--vf),var(--vf)) left bottom/var(--vf-l,14px) var(--vf-w,2px),
    linear-gradient(var(--vf),var(--vf)) left bottom/var(--vf-w,2px) var(--vf-l,14px),
    linear-gradient(var(--vf),var(--vf)) right bottom/var(--vf-l,14px) var(--vf-w,2px),
    linear-gradient(var(--vf),var(--vf)) right bottom/var(--vf-w,2px) var(--vf-l,14px);
  background-repeat:no-repeat;
}

/* ---------- 3. shell ---------- */
.cr-app{min-height:100vh;}
.cr-main{margin-left:var(--nav-w);min-width:0;display:flex;flex-direction:column;}
/* core CTFd reserves 100px under <main> for its footer, which this theme hides */
main[role="main"]{margin-bottom:0;padding-top:var(--topbar-h);min-height:100vh;}
.cr-view{width:100%;max-width:1320px;margin:0 auto;padding:36px var(--gutter) 88px;}
.cr-view .container{max-width:100%;padding-left:0;padding-right:0;}
.footer,.cr-sep,.cr-scrim{display:none;}

/* ---------- 4. sidebar (always dark) ---------- */
.cr-sidebar{position:fixed;left:0;top:0;z-index:200;width:var(--nav-w);height:100vh;height:100dvh;
  display:flex;flex-direction:column;overflow-y:auto;overscroll-behavior:contain;
  color:var(--ink);background:#010E1B;border-right:1px solid #28345C;scrollbar-width:thin;scrollbar-color:#28345C transparent;}
.cr-brand{flex:none;height:var(--topbar-h);display:flex;align-items:center;gap:12px;padding:0 20px;
  color:#EBE2D7;border-bottom:1px solid #28345C;text-decoration:none!important;}
.cr-brand:hover{color:#EBE2D7;}
.cr-brand img{width:34px;height:34px;flex:none;object-fit:contain;}
.cr-brand .bn{font-family:var(--font-display);font-size:19px;line-height:1;letter-spacing:.02em;white-space:nowrap;}
.cr-brand .bn small{display:block;margin-top:6px;font-family:var(--font-mono);font-size:9.5px;letter-spacing:.24em;color:#878488;}
.cr-nav{flex:1;display:flex;flex-direction:column;gap:2px;padding:8px 12px 16px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#28345C transparent;}
.cr-label{padding:18px 13px 8px;font-family:var(--font-mono);font-size:10.5px;letter-spacing:.22em;text-transform:uppercase;color:#878488;}
.cr-item{position:relative;display:flex;align-items:center;gap:12px;padding:10px 13px;
  font-size:14.5px;font-weight:500;line-height:1.3;color:rgba(235,226,215,.72);text-decoration:none!important;cursor:pointer;
  transition:background-color .15s,color .15s;}
.cr-item i{width:18px;flex:none;text-align:center;font-size:14px;color:#878488;transition:color .15s;}
.cr-item:hover{color:#EBE2D7;background:rgba(235,226,215,.05);}
.cr-item:hover i{color:#EBE2D7;}
.cr-item.active{color:#EBE2D7;background:rgba(145,165,255,.08);}
.cr-item.active::before{content:"";position:absolute;left:-12px;top:0;bottom:0;width:2px;background:#91A5FF;}
.cr-item.active i{color:#91A5FF;}
.cr-item .xt{width:auto;margin-left:auto;font-size:10px;opacity:.7;}
.cr-item .badge-notification{min-width:20px;margin-left:auto;padding:3px 6px;border-radius:0;
  font-family:var(--font-mono);font-size:10.5px;font-weight:400;line-height:1.2;letter-spacing:0;text-align:center;vertical-align:middle;
  color:#010E1B;background:#91A5FF;}
.cr-foot{flex:none;padding:12px;border-top:1px solid #28345C;}
.cr-user{display:flex;align-items:center;gap:6px;}
.cr-me{flex:1;min-width:0;display:flex;align-items:center;gap:12px;padding:6px;color:#EBE2D7;text-decoration:none!important;transition:background-color .15s;}
.cr-me:hover{color:#EBE2D7;background:rgba(235,226,215,.05);}
.cr-me .av{width:36px;height:36px;flex:none;display:grid;place-items:center;font-family:var(--font-display);font-size:14px;line-height:1;color:#010E1B;background:#91A5FF;}
.cr-me .who{min-width:0;display:flex;flex-direction:column;gap:5px;}
.cr-me .nm{font-size:14px;font-weight:600;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.cr-me .rk{font-family:var(--font-mono);font-size:10px;line-height:1;letter-spacing:.2em;text-transform:uppercase;color:#878488;}
.cr-logout{width:36px;height:36px;flex:none;display:grid;place-items:center;color:#878488;border:1px solid #28345C;transition:color .15s,border-color .15s;}
.cr-logout:hover{color:#ff6b6b;border-color:rgba(255,107,107,.5);}
.cr-foot-auth{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
.cr-foot-auth .btn{padding:10px 8px;}
.cr-foot-auth .btn:only-child{grid-column:1/-1;}

/* ---------- 5. topbar ---------- */
.cr-topbar{position:fixed;top:0;left:var(--nav-w);right:0;z-index:100;height:var(--topbar-h);
  display:flex;align-items:center;gap:10px;padding:0 var(--gutter);background:var(--bg);border-bottom:1px solid var(--line);}
.cr-tb-title{min-width:0;margin:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;
  font-family:var(--font-mono);font-size:12px;font-weight:400;line-height:1;letter-spacing:.24em;text-transform:uppercase;color:var(--ink-2);}
.cr-tb-title::before{content:"";display:inline-block;width:6px;height:6px;margin-right:12px;vertical-align:2px;background:var(--accent);}
.cr-tb-spacer{flex:1;}
.cr-icon-btn{position:relative;width:40px;height:40px;flex:none;display:grid;place-items:center;padding:0;cursor:pointer;
  font-size:14px;color:var(--ink-2);background:transparent;border:1px solid var(--line);border-radius:0;transition:color .15s,border-color .15s;}
.cr-icon-btn:hover{color:var(--accent-text);border-color:var(--accent);}
.cr-menu-btn{display:none;}
.btn-cross{height:40px;display:inline-flex;align-items:center;gap:10px;padding:0 14px;white-space:nowrap;
  font-family:var(--font-mono);font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-2);
  border:1px solid var(--line);text-decoration:none!important;transition:color .15s,border-color .15s;}
.btn-cross:hover{color:var(--accent-text);border-color:var(--accent);}
.btn-cross .lead{margin:0;font-size:14px;font-weight:900;}
.btn-cross .xt{font-size:10px;opacity:.7;}
/* homepage: the bar floats over the dark poster */
.cr-main:has(.cr-home) .cr-topbar{--ink:#EBE2D7;--ink-2:#b4aea8;--line:#28345C;--accent-text:#91A5FF;color-scheme:dark;
  background:transparent;border-bottom:0;pointer-events:none;}
.cr-main:has(.cr-home) .cr-topbar > *{pointer-events:auto;}
.cr-main:has(.cr-home) .cr-tb-title{display:none;}
main[role="main"]:has(.cr-home){padding-top:0;}

/* ---------- 6. page header ---------- */
.jumbotron{margin:0 0 32px;padding:4px 0 24px;text-align:left!important;color:var(--ink);background:transparent;border-radius:0;border-bottom:1px solid var(--line);}
.jumbotron .container{padding:0;}
.jumbotron h1{margin:0;font-family:var(--font-display);font-size:clamp(40px,6vw,84px);font-weight:400;line-height:.92;letter-spacing:-.005em;
  text-transform:uppercase;color:var(--ink);overflow-wrap:anywhere;}
.jumbotron h1::after{content:"";display:inline-block;width:.16em;height:.16em;margin-left:.1em;background:var(--accent);}

/* ---------- 7. buttons ---------- */
.btn{padding:12px 20px;font-family:var(--font-mono);font-size:12.5px;font-weight:400;line-height:1.3;letter-spacing:.16em;text-transform:uppercase;
  border:1.5px solid transparent;border-radius:0;transition:background-color .15s,border-color .15s,color .15s;}
.btn,.btn:focus,.btn.focus,.btn:active:focus,.btn.active:focus{box-shadow:none!important;}
.btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
.btn-primary,.btn-info,.btn-gold,.btn-success,.btn-warning{color:var(--accent-ink)!important;background:var(--accent)!important;border-color:var(--accent)!important;}
.btn-primary:hover,.btn-info:hover,.btn-gold:hover,.btn-success:hover,.btn-warning:hover{color:var(--hover-ink)!important;background:var(--hover-bg)!important;border-color:var(--hover-bg)!important;}
.btn-secondary,.btn-light,.btn-dark,.btn-default,.btn-outline-primary,.btn-outline-secondary,.btn-outline-info,.btn-outline-success,.btn-outline-warning,.btn-outline-light,.btn-outline-dark{
  color:var(--ink)!important;background:transparent!important;border-color:var(--line)!important;}
.btn-secondary:hover,.btn-light:hover,.btn-dark:hover,.btn-default:hover,.btn-outline-primary:hover,.btn-outline-secondary:hover,.btn-outline-info:hover,.btn-outline-success:hover,.btn-outline-warning:hover,.btn-outline-light:hover,.btn-outline-dark:hover{
  color:var(--accent-text)!important;border-color:var(--accent)!important;}
.btn-danger,.btn-outline-danger{color:var(--danger)!important;background:transparent!important;border-color:color-mix(in srgb,var(--danger) 55%,transparent)!important;}
.btn-danger:hover,.btn-outline-danger:hover{color:var(--bg)!important;background:var(--danger)!important;border-color:var(--danger)!important;}
.btn.btn-lg{padding:15px 24px;font-size:13px;}
.btn.btn-sm{padding:7px 12px;font-size:11px;letter-spacing:.14em;}
.btn-block{display:block;width:100%;}
.btn:disabled,.btn.disabled{opacity:.45;cursor:not-allowed;}
.btn.btn-outlined{border-width:1.5px;border-style:solid;}
.btn-fa{color:var(--ink-3);transition:color .15s;}
.btn-fa:hover{color:var(--danger);}

/* ---------- 8. forms ---------- */
.form-group{margin-bottom:18px;}
.form-control,.custom-select,select.form-control{height:auto!important;padding:12px 14px!important;
  font-family:var(--font-body);font-size:15px;font-weight:400;line-height:1.4;color:var(--ink);
  background-color:var(--field);border:1px solid var(--field-line);border-radius:0;box-shadow:none;
  transition:border-color .15s,box-shadow .15s;}
.form-control::placeholder{color:var(--ink-3);opacity:1;}
textarea.form-control{min-height:96px;resize:vertical;}
.form-control.input-filled-valid{background-color:var(--field)!important;border-color:var(--field-line)!important;box-shadow:none!important;}
.form-control:focus,.form-control.input-filled-valid:focus{outline:0;color:var(--ink);background-color:var(--field)!important;border-color:var(--accent)!important;box-shadow:0 0 0 1px var(--accent)!important;}
.form-control.input-filled-invalid{border-color:var(--danger)!important;box-shadow:0 0 0 1px var(--danger)!important;}
.form-control:disabled,.form-control[readonly]{color:var(--ink-2);background-color:var(--surface-2)!important;}
.form-control:-webkit-autofill{-webkit-text-fill-color:var(--ink);caret-color:var(--ink);box-shadow:0 0 0 1000px var(--field) inset!important;}
.form-control:-webkit-autofill:focus{box-shadow:0 0 0 1px var(--accent),0 0 0 1000px var(--field) inset!important;}
/* selects: core.css paints .custom-select with an !important background */
select.form-control,.custom-select,.page-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:38px!important;cursor:pointer;
  background-color:var(--field)!important;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 10'%3E%3Cpath d='M1 3l4 4 4-4' fill='none' stroke='%236b6870' stroke-width='1.5' stroke-linecap='square'/%3E%3C/svg%3E")!important;
  background-repeat:no-repeat!important;background-position:right 14px center!important;background-size:10px 10px!important;}
body.dark select.form-control,body.dark .custom-select,body.dark .page-select{
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 10'%3E%3Cpath d='M1 3l4 4 4-4' fill='none' stroke='%23878488' stroke-width='1.5' stroke-linecap='square'/%3E%3C/svg%3E")!important;}
select.form-control option,.custom-select option,.page-select option{color:var(--ink);background:var(--surface);}
/* labels: CTFd renders <b><label>…</label></b> */
.form-group > label:not(.form-check-label),.form-group > b,.cr-label-row > b{display:block;margin-bottom:8px;
  font-family:var(--font-mono);font-size:11px;font-weight:400;line-height:1.4;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-2);}
.form-group > b label,.cr-label-row > b label{display:inline;margin:0;}
.cr-label-row{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:8px;}
.cr-label-row > b{margin:0;}
.cr-label-row a{font-family:var(--font-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;}
.form-group:has(> small.float-right){display:flex;flex-wrap:wrap;align-items:baseline;column-gap:12px;}
.form-group:has(> small.float-right) > *{flex:0 0 100%;}
.form-group:has(> small.float-right) > b{flex:1 1 auto;}
.form-group > small.float-right{flex:0 0 auto!important;float:none!important;margin:0 0 8px;font-family:var(--font-mono);font-size:10.5px;line-height:1.4;letter-spacing:.14em;text-transform:uppercase;}
.form-text{margin-top:6px;font-size:12.5px;color:var(--ink-3);}
.form-check-label{font-size:14.5px;color:var(--ink-2);}
input[type="checkbox"],input[type="radio"]{accent-color:var(--accent-text);}
.form-control-file{font-size:13px;color:var(--ink-2);}
.form-control-file::file-selector-button{margin-right:12px;padding:9px 14px;font-family:var(--font-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--ink);background:transparent;border:1px solid var(--line);border-radius:0;cursor:pointer;}
.input-group > .form-control{min-width:0;}
.input-group-append .btn,.input-group-prepend .btn{border-color:var(--field-line)!important;}
.input-group-append .btn{margin-left:-1px;}
.nav-pills .nav-link{border-radius:0;color:var(--ink-2);}
.nav-pills .nav-link.active,.nav-pills .show > .nav-link{color:var(--accent-ink);background:var(--accent);}

/* ---------- 9. cards · tables · alerts · badges ---------- */
.card{color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:0!important;}
.card-body{padding:22px 24px;}
.card-header,.card-footer{background:var(--surface-2);border-color:var(--line);}
.table{margin-bottom:0;color:inherit;}
.table thead td,.table thead th{padding:12px 16px;vertical-align:bottom;white-space:nowrap;border-top:0;border-bottom:1px solid var(--line);
  font-family:var(--font-mono);font-size:11px;font-weight:400;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-3);}
.table thead b{font-weight:400;}
.table td,.table th{padding:14px 16px;vertical-align:middle;border-top:1px solid var(--line-2);}
.table tbody tr:first-child > td,.table tbody tr:first-child > th{border-top:0;}
.table-striped tbody tr:nth-of-type(odd){background:transparent;}
.table tbody tr{transition:background-color .12s;}
.table tbody tr:hover{background:var(--surface-2);}
.table a{font-weight:600;}
.table-responsive{min-width:0;}
.alert{--c:var(--accent-text);position:relative;padding:14px 44px 14px 16px;font-size:14.5px;text-align:left!important;color:var(--ink);
  background:color-mix(in srgb,var(--c) 9%,var(--surface));border:0;border-left:3px solid var(--c);border-radius:0!important;}
.alert-success{--c:var(--ok);}
.alert-danger{--c:var(--danger);}
.alert-warning{--c:var(--warn);}
.alert-info,.alert-primary,.alert-secondary{--c:var(--accent-text);}
.alert a{color:inherit;text-decoration:underline;text-underline-offset:3px;}
.alert .close{position:absolute;top:50%;right:8px;width:32px;height:32px;display:grid;place-items:center;margin:0;padding:0;font-size:20px;line-height:1;transform:translateY(-50%);}
.close{font-weight:400;color:var(--ink-3);text-shadow:none;opacity:1;transition:color .15s,border-color .15s;}
.close:hover,.close:not(:disabled):not(.disabled):hover,.close:not(:disabled):not(.disabled):focus{color:var(--ink);opacity:1;}
.badge{padding:4px 8px;font-family:var(--font-mono);font-size:10.5px;font-weight:400;line-height:1.3;letter-spacing:.12em;text-transform:uppercase;vertical-align:middle;border-radius:0;}
.badge-primary,.badge-info,.badge-secondary,.badge-light,.badge-dark{color:var(--accent-text)!important;background:color-mix(in srgb,var(--accent) 16%,transparent)!important;}
.badge-success{color:var(--ok);background:color-mix(in srgb,var(--ok) 14%,transparent);}
.badge-danger{color:var(--danger);background:color-mix(in srgb,var(--danger) 14%,transparent);}
.badge-warning{color:var(--warn);background:color-mix(in srgb,var(--warn) 16%,transparent);}
.award-icon{color:var(--accent-text);}

/* ---------- 10. challenge board ---------- */
#challenges-board{counter-reset:cat;}
#challenges-board > [id$="-row"]{counter-increment:cat;margin:0 0 40px;padding:0!important;}
#challenges-board .category-header{margin:0 0 16px!important;padding:0!important;}
#challenges-board .category-header h3{display:flex;align-items:center;gap:14px;margin:0;font-family:var(--font-display);font-size:22px;line-height:1.1;
  letter-spacing:.01em;text-transform:uppercase;color:var(--ink);}
#challenges-board .category-header h3::before{content:counter(cat,decimal-leading-zero);font-family:var(--font-mono);font-size:12px;letter-spacing:.2em;color:var(--accent-text);}
#challenges-board .category-header h3::after{content:"";flex:1;height:1px;background:var(--line);}
#challenges-board .category-challenges,#challenges-board .challenges-row{margin:0;padding:0!important;}
.challenges-row{display:grid!important;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;padding:0;}
.challenges-row > [class*="col-"]{width:auto;max-width:100%;flex:none;padding:0;display:block!important;}
#challenges-board .challenge-button{display:flex;flex-direction:column;justify-content:space-between;gap:14px;width:100%;min-height:128px;
  margin:0!important;padding:18px!important;overflow:visible;white-space:normal!important;text-align:left;
  font-family:var(--font-body);letter-spacing:0;text-transform:none;color:var(--ink)!important;
  background:var(--surface)!important;border:1px solid var(--line)!important;box-shadow:none!important;transform:none;
  transition:background-color .15s,border-color .15s;}
#challenges-board .challenge-button::before{opacity:0;transition:opacity .15s;}
#challenges-board .challenge-button:hover,#challenges-board .challenge-button:focus-visible{background:var(--surface-2)!important;border-color:color-mix(in srgb,var(--accent) 55%,var(--line))!important;}
#challenges-board .challenge-button:hover::before,#challenges-board .challenge-button:focus-visible::before{opacity:1;}
#challenges-board .challenge-button span{order:1;font-family:var(--font-display);font-size:28px;line-height:1;color:var(--accent-text);}
#challenges-board .challenge-button span::after{content:" PTS";font-family:var(--font-mono);font-size:11px;letter-spacing:.18em;color:var(--ink-3);}
#challenges-board .challenge-button p{order:2;margin:0;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
  font-family:var(--font-display);font-size:15px;line-height:1.25;letter-spacing:.01em;text-transform:uppercase;overflow-wrap:anywhere;color:var(--ink);}
#challenges-board .challenge-button.solved-challenge{opacity:1!important;background:color-mix(in srgb,var(--accent) 7%,var(--surface))!important;
  border-color:color-mix(in srgb,var(--accent) 35%,var(--line))!important;}
#challenges-board .challenge-button.solved-challenge p{color:var(--ink-2);}
#challenges-board .corner-button-check{position:absolute;top:0;right:0;z-index:2;width:24px;height:24px;display:grid;place-items:center;margin:0!important;
  font-size:11px;color:var(--accent-ink);background:var(--accent);}
#challenges-board .corner-button-check ~ .corner-button-check{display:none;}

/* ---------- 11. challenge window ---------- */
.modal-backdrop{background:#010E1B;}
.modal-backdrop.show{opacity:.82;}
#challenge-window .modal-dialog:not(.modal-sm):not(.modal-lg):not(.modal-xl){max-width:720px;}
#challenge-window .modal-body{padding:28px 32px 30px;}
#challenge-window .modal-body > .close{float:right;position:relative;z-index:2;width:36px;height:36px;display:grid;place-items:center;
  margin:-6px -8px 0 16px;padding:0;font-size:20px;line-height:1;color:var(--ink-3);border:1px solid var(--line);}
#challenge-window .modal-body > .close:hover{color:var(--accent-text);border-color:var(--accent);}
#challenge-window .nav-tabs{display:flex;gap:22px;margin:0 0 26px;padding:0;border-bottom:1px solid var(--line);}
#challenge-window .nav-tabs .nav-item{margin-bottom:-1px;}
#challenge-window .nav-tabs .nav-link{margin:0;padding:0 0 12px;font-family:var(--font-mono);font-size:12px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--ink-3);background:transparent;border:0;border-bottom:2px solid transparent;border-radius:0;}
#challenge-window .nav-tabs .nav-link:hover,#challenge-window .nav-tabs .nav-link:focus{color:var(--ink);border-color:transparent;}
#challenge-window .nav-tabs .nav-link.active{color:var(--ink);background:transparent;border-color:transparent;border-bottom-color:var(--accent);}
#challenge-window .challenge-name{margin:0;padding-top:0!important;font-family:var(--font-display);font-size:clamp(26px,4vw,38px);line-height:1;
  text-align:left!important;text-transform:uppercase;overflow-wrap:anywhere;color:var(--ink);}
#challenge-window .challenge-value{margin:10px 0 0;font-family:var(--font-mono);font-size:13px;letter-spacing:.18em;text-align:left!important;color:var(--accent-text);}
#challenge-window .challenge-value::after{content:" PTS";}
#challenge-window .challenge-tags{display:flex;flex-wrap:wrap;gap:6px;margin:0;text-align:left!important;}
#challenge-window .challenge-tags:has(.challenge-tag){margin-top:14px;}
#challenge-window .challenge-desc{display:block;margin:22px 0 0;padding:22px 0 0;font-size:15px;line-height:1.65;color:var(--ink-2);
  border-top:1px solid var(--line-2);overflow-wrap:anywhere;}
#challenge-window .challenge-desc > :last-child,#challenge-window .challenge-desc p:last-child{margin-bottom:0;}
#challenge-window .challenge-desc a{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;}
#challenge-window .challenge-desc img{max-width:100%;height:auto;}
#challenge-window .challenge-desc h1,#challenge-window .challenge-desc h2,#challenge-window .challenge-desc h3{font-size:18px;text-transform:uppercase;color:var(--ink);margin:20px 0 8px;}
#challenge-window .challenge-connection-info{display:block;}
#challenge-window .challenge-connection-info code{display:inline-block;margin-top:18px;padding:10px 14px;font-size:13.5px;color:var(--ink);background:var(--field);border:1px solid var(--line);}
#challenge-window .challenge-connection-info code::before{content:"› ";color:var(--accent-text);}
#challenge-window .challenge-connection-info a{word-break:break-all;}
#challenge-window .challenge-hints{display:grid;gap:8px;margin:0;}
#challenge-window .challenge-hints:has(.load-hint){margin-top:22px;}
#challenge-window a.load-hint{display:flex;align-items:center;gap:14px;padding:12px 14px;color:var(--ink);background:var(--surface-2);
  border:1px solid var(--line);text-decoration:none;transition:border-color .15s;}
#challenge-window a.load-hint:hover{color:var(--ink);border-color:var(--accent);}
#challenge-window .hint-ico{width:34px;height:34px;flex:none;display:grid;place-items:center;font-size:13px;color:var(--accent-text);
  background:color-mix(in srgb,var(--accent) 16%,transparent);}
#challenge-window .hint-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px;}
#challenge-window .hint-label{font-size:14.5px;font-weight:600;line-height:1.2;}
#challenge-window .hint-cost{font-family:var(--font-mono);font-size:11px;line-height:1.2;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);}
#challenge-window .hint-arrow{font-size:11px;color:var(--ink-3);transition:transform .15s,color .15s;}
#challenge-window a.load-hint:hover .hint-arrow{color:var(--accent-text);transform:translateX(3px);}
#challenge-window .challenge-files{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0!important;text-align:left!important;}
#challenge-window .challenge-files:has(.btn-file){margin-top:22px;}
#challenge-window .file-button-wrapper{flex:none;width:auto;max-width:100%;padding:0;}
#challenge-window .btn-file{display:inline-flex!important;align-items:center;gap:10px;width:auto!important;max-width:100%;margin:0!important;padding:10px 14px!important;
  font-size:13px;letter-spacing:.02em;text-transform:none;color:var(--ink)!important;background:transparent!important;border:1px solid var(--line)!important;}
#challenge-window .btn-file:hover{color:var(--accent-text)!important;border-color:var(--accent)!important;}
#challenge-window .btn-file i{color:var(--accent-text);}
#challenge-window .btn-file small{min-width:0;overflow:hidden;font-size:inherit;white-space:nowrap;text-overflow:ellipsis;}
#challenge-window .challenge-attempts{margin:18px 0 0;text-align:left!important;}
#challenge-window .challenge-attempts [class*="col-"]{padding:0;}
#challenge-window .challenge-attempts p{margin:0;font-family:var(--font-mono);font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);}
#challenge-window .submit-row{display:flex;flex-wrap:nowrap;gap:10px;margin:26px 0 0;}
#challenge-window .submit-row > [class*="col-"]{flex:1 1 auto;width:auto;max-width:none;margin:0;padding:0!important;}
#challenge-window .submit-row > .key-submit{flex:0 0 auto;}
#challenge-input{display:block;width:100%;height:52px;padding:0 16px;font-family:var(--font-mono);font-size:15px;letter-spacing:.02em;color:var(--ink);
  background:var(--field);border:1px solid var(--field-line);border-radius:0;outline:none;transition:border-color .15s,box-shadow .15s;}
#challenge-input::placeholder{color:var(--ink-3);}
#challenge-input:focus{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent);}
#challenge-input.wrong{border-color:var(--danger);box-shadow:0 0 0 1px var(--danger);animation:crShake .4s cubic-bezier(.36,.07,.19,.97);}
#challenge-input.correct{border-color:var(--ok);box-shadow:0 0 0 1px var(--ok);}
#challenge-input.too-fast{border-color:var(--warn);box-shadow:0 0 0 1px var(--warn);}
@keyframes crShake{10%,90%{transform:translateX(-1px);}20%,80%{transform:translateX(2px);}30%,50%,70%{transform:translateX(-4px);}40%,60%{transform:translateX(4px);}}
#challenge-submit{height:52px;padding:0 26px;cursor:pointer;white-space:nowrap;font-family:var(--font-mono);font-size:12.5px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--accent-ink);background:var(--accent);border:1.5px solid var(--accent);border-radius:0;transition:background-color .15s,border-color .15s,color .15s;}
#challenge-submit:hover{color:var(--hover-ink);background:var(--hover-bg);border-color:var(--hover-bg);}
#challenge-submit.disabled-button,#challenge-submit:disabled{opacity:.5;cursor:wait;}
#challenge-window .notification-row{margin:14px 0 0;}
#challenge-window .notification-row [class*="col-"]{padding:0;}
#challenge-window #result-notification{margin:0;}
#challenge-window #solves .row{margin:0;}
#challenge-window #solves [class*="col-"]{padding:0;}
#challenge-window #solves .table{text-align:left!important;}
#challenge-window #solves td:last-child{font-family:var(--font-mono);font-size:12.5px;color:var(--ink-3);white-space:nowrap;}

/* ---------- 12. other modals · toasts · tooltips ---------- */
.modal-content{color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:0!important;box-shadow:var(--shadow-lg);}
.modal-header{align-items:center;gap:16px;padding:20px 24px;border-bottom:1px solid var(--line);}
.modal-header .close{width:32px;height:32px;flex:none;display:grid;place-items:center;margin:-4px -6px -4px auto;padding:0;font-size:22px;line-height:1;}
.modal-title,.modal-header .modal-action{margin:0;font-family:var(--font-display);font-size:20px;font-weight:400;line-height:1.15;letter-spacing:.01em;
  text-align:left!important;text-transform:uppercase;color:var(--ink);}
.modal-body{padding:22px 24px;}
.modal-footer{gap:8px;padding:16px 24px;border-top:1px solid var(--line);}
.modal-footer > *{margin:0;}
.toast-container{z-index:1080!important;}
.toast{max-width:380px;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:0;
  box-shadow:var(--shadow-lg);-webkit-backdrop-filter:none;backdrop-filter:none;}
.toast-header{padding:10px 10px 10px 14px;font-family:var(--font-mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink);
  background:transparent;border-bottom:1px solid var(--line-2);}
.toast-header strong{font-weight:400;}
.toast-header .close{margin:0 0 0 8px!important;font-size:18px;}
.toast-body{padding:12px 14px;font-size:14.5px;color:var(--ink-2);}
.tooltip{font-family:var(--font-mono);}
.tooltip-inner{max-width:260px;padding:6px 10px;font-size:11.5px;letter-spacing:.04em;color:#EBE2D7;background:#010E1B;border:1px solid #28345C;border-radius:0;}
.bs-tooltip-top .arrow::before,.bs-tooltip-auto[x-placement^="top"] .arrow::before{border-top-color:#28345C;}
.bs-tooltip-bottom .arrow::before,.bs-tooltip-auto[x-placement^="bottom"] .arrow::before{border-bottom-color:#28345C;}
.bs-tooltip-left .arrow::before,.bs-tooltip-auto[x-placement^="left"] .arrow::before{border-left-color:#28345C;}
.bs-tooltip-right .arrow::before,.bs-tooltip-auto[x-placement^="right"] .arrow::before{border-right-color:#28345C;}
.dropdown-menu{color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:0;box-shadow:var(--shadow-lg);}
.dropdown-item{color:var(--ink);}
.dropdown-item:hover,.dropdown-item:focus{color:var(--ink);background:var(--surface-2);}
.progress{height:6px;background:var(--surface-3);border-radius:0;}
.progress-bar{background:var(--accent);}

/* ---------- 13. charts · scoreboard ---------- */
.cr-chart{margin:0 0 24px;padding:18px 16px 10px;background:var(--surface);border:1px solid var(--line);}
.cr-chart > .cr-k{margin:0 0 4px 4px;}
.cr-chart #score-graph,.cr-chart #keys-pie-graph,.cr-chart #categories-pie-graph{height:260px;min-height:0!important;margin:0;}
.cr-chart-lg #score-graph{height:360px;}
#score-graph:has(> h3){height:auto!important;padding:48px 20px;}
#score-graph > h3{margin:0;font-family:var(--font-mono);font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-3);opacity:1!important;}
.cr-charts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:0 0 8px;}
.cr-charts .cr-chart{margin:0;}
.cr-charts .cr-chart-wide{grid-column:1/-1;}
.cr-two-col{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:24px;align-items:start;}
#scoreboard{margin:0;overflow-x:auto;}
#scoreboard tbody th{width:64px;font-family:var(--font-mono);font-size:13px;font-weight:400;text-align:center;color:var(--ink-3);}
#scoreboard tbody tr:nth-child(-n+3) th{color:var(--ink);}
#scoreboard tbody tr:first-child th{color:var(--accent-text);box-shadow:inset 3px 0 0 var(--accent);}
#scoreboard td:nth-child(2) a{color:var(--ink);}
#scoreboard td:nth-child(2) a:hover{color:var(--accent-text);}
#scoreboard td:nth-child(2) .badge{margin-left:8px;}
#scoreboard thead td:last-child,#scoreboard tbody td:last-child{text-align:right;}
#scoreboard tbody td:last-child{font-family:var(--font-display);font-size:17px;}
.cr-standing{position:sticky;top:calc(var(--topbar-h) + 24px);padding:22px;background:var(--surface);border:1px solid var(--line);}
.cr-standing .place{margin:14px 0 8px;font-family:var(--font-display);font-size:64px;line-height:.9;color:var(--ink);}
.cr-standing .place.none{font-size:34px;line-height:1;color:var(--ink-3);}
.cr-standing .pts{font-family:var(--font-mono);font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent-text);}
.cr-standing .nm{margin-top:18px;padding-top:16px;overflow:hidden;font-weight:600;white-space:nowrap;text-overflow:ellipsis;border-top:1px solid var(--line-2);}
.cr-standing .acts{display:grid;gap:8px;margin-top:16px;}

/* ---------- 14. profiles · teams ---------- */
.cr-hero{display:flex;flex-wrap:wrap;align-items:flex-end;gap:24px 32px;margin:0 0 28px;padding:0 0 28px;border-bottom:1px solid var(--line);}
.cr-hero-id{flex:1 1 380px;min-width:0;display:flex;align-items:center;gap:20px;}
.cr-hero-av{width:72px;height:72px;flex:none;display:grid;place-items:center;font-family:var(--font-display);font-size:26px;line-height:1;color:var(--accent-ink);background:var(--accent);}
.cr-hero-name{margin:0;font-family:var(--font-display);font-size:clamp(30px,4.6vw,56px);font-weight:400;line-height:.95;text-transform:uppercase;overflow-wrap:anywhere;color:var(--ink);}
.cr-hero-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px;}
.cr-hero-tag{display:inline-flex;align-items:center;gap:7px;padding:5px 9px;font-family:var(--font-mono);font-size:11px;line-height:1.3;letter-spacing:.1em;
  color:var(--ink-2);border:1px solid var(--line);text-decoration:none!important;}
a.cr-hero-tag:hover{color:var(--accent-text);border-color:var(--accent);}
.cr-hero-tag.gold{color:var(--accent-text);background:color-mix(in srgb,var(--accent) 8%,transparent);border-color:color-mix(in srgb,var(--accent) 45%,var(--line));}
.cr-hero-stats{display:flex;}
.cr-hero-stat{padding:0 26px;}
.cr-hero-stat:first-child{padding-left:0;}
.cr-hero-stat:last-child{padding-right:0;}
.cr-hero-stat + .cr-hero-stat{border-left:1px solid var(--line);}
.cr-hero-stat .v{font-family:var(--font-display);font-size:34px;line-height:1;color:var(--ink);}
.cr-hero-stat .v.gold{color:var(--accent-text);}
.cr-hero-stat .l{margin-top:8px;font-family:var(--font-mono);font-size:10.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--ink-3);}
.cr-hero-actions{flex-basis:100%;display:flex;flex-wrap:wrap;gap:8px;}
.cr-act{display:inline-flex;align-items:center;gap:9px;padding:9px 14px;cursor:pointer;
  font-family:var(--font-mono);font-size:11.5px;line-height:1.3;letter-spacing:.14em;text-transform:uppercase;color:var(--ink);
  background:transparent;border:1px solid var(--line);border-radius:0;text-decoration:none!important;transition:color .15s,border-color .15s;}
.cr-act i{color:var(--accent-text);transition:color .15s;}
.cr-act:hover{color:var(--accent-text);border-color:var(--accent);}
.cr-act.danger:hover,.cr-act.danger:hover i{color:var(--danger);border-color:var(--danger);}
.cr-act.disabled{opacity:.4;pointer-events:none;}
.cr-sec{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:36px 0 14px;}
.cr-sec .t{margin:0;font-family:var(--font-display);font-size:20px;font-weight:400;line-height:1.1;text-transform:uppercase;color:var(--ink);}
.cr-sec .n{font-family:var(--font-mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-3);}
.cr-empty{padding:48px 24px;text-align:center;color:var(--ink-3);border:1px dashed var(--line);}
.cr-empty .t{margin:0 0 6px;font-family:var(--font-display);font-size:20px;line-height:1.1;text-transform:uppercase;color:var(--ink);}
.cr-empty p{margin:0;}
.cr-empty .btn{margin-top:20px;}
.cr-table-card{overflow:hidden;}
.cr-table-card .table{margin:0;}
.cr-pts{font-family:var(--font-display);color:var(--gold);}
.cr-chip{display:inline-block;padding:3px 8px;font-family:var(--font-mono);font-size:10.5px;line-height:1.4;letter-spacing:.12em;text-transform:uppercase;white-space:nowrap;
  color:var(--ink-2);border:1px solid var(--line);}
.cr-chip-gold{color:var(--accent-text);background:color-mix(in srgb,var(--accent) 8%,transparent);border-color:color-mix(in srgb,var(--accent) 45%,var(--line));}
.cr-stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;}
.cr-stat{flex-direction:row;align-items:center;gap:14px;margin:0;padding:16px 18px;}
.cr-stat-ico{width:40px;height:40px;flex:none;display:grid;place-items:center;font-size:16px;color:var(--accent-text);background:color-mix(in srgb,var(--accent) 14%,transparent);}
.cr-stat-val{font-size:15px;font-weight:600;line-height:1.25;}
.cr-stat-lbl{margin-top:3px;font-family:var(--font-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);}
.solve-time{font-family:var(--font-mono);font-size:12.5px;white-space:nowrap;}
/* on phones the long-form timestamp breaks after the date instead of starving the challenge column */
@media(max-width:767px){.solve-time{font-size:11.5px;white-space:normal;}.solve-time span{display:inline-block;max-width:14ch;}}

/* ---------- 15. settings · notifications ---------- */
.cr-settings{display:grid;grid-template-columns:200px minmax(0,1fr);gap:32px;align-items:start;}
.cr-settings-nav{position:sticky;top:calc(var(--topbar-h) + 24px);display:flex;flex-direction:column;gap:2px;}
.cr-settings-nav .nav-link{display:flex;align-items:center;gap:12px;padding:11px 14px;font-family:var(--font-mono);font-size:12px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--ink-3);background:transparent;border-left:2px solid var(--line);border-radius:0;}
.cr-settings-nav .nav-link:hover{color:var(--ink);}
.cr-settings-nav .nav-link.active{color:var(--accent-text)!important;background:var(--surface-2)!important;border-left-color:var(--accent);}
.cr-settings-nav .nav-link i{width:16px;text-align:center;}
.cr-settings .tab-content{padding:28px 30px;}
.cr-settings .cr-k{margin:0 0 16px;}
.cr-settings hr{margin:28px 0;}
.cr-settings .delete-token{cursor:pointer;}
.cr-tokens td.cr-ext{width:1%;text-align:right;}
.cr-tokens .delete-token{display:inline-block;padding:4px 6px;color:var(--ink-3);transition:color .15s;}
.cr-tokens .delete-token:hover{color:var(--danger,#e34948);}
.cr-tokens .cr-tok-desc{overflow-wrap:anywhere;}
/* the jumbotron rule already opens the list */
.cr-notifs{margin-top:-32px;}
.cr-notif{display:grid;grid-template-columns:150px minmax(0,1fr);gap:24px;padding:24px 0;border-bottom:1px solid var(--line);}
.cr-notif .when{padding-top:5px;font-family:var(--font-mono);font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);}
.cr-notif .t{margin:0 0 8px;font-family:var(--font-display);font-size:20px;line-height:1.15;text-transform:uppercase;color:var(--ink);}
.cr-notif .b{color:var(--ink-2);overflow-wrap:anywhere;}
.cr-notif .b > :last-child{margin-bottom:0;}

/* ---------- 16. auth ---------- */
.cr-auth{display:grid;grid-template-columns:1.05fr .95fr;align-items:stretch;height:100vh;height:100dvh;margin:0;overflow:hidden;}
.cr-auth-brand{display:flex;flex-direction:column;justify-content:space-between;gap:40px;overflow:hidden;isolation:isolate;
  padding:clamp(40px,5.5vw,72px);color:var(--ink);background-color:#010E1B;
  background-image:radial-gradient(rgba(235,226,215,.06) 1px,transparent 1px);background-size:24px 24px;border-right:1px solid #28345C;
  --vf-inset:16px;--vf-l:28px;--vf-w:3px;}
.cr-auth-mark{position:absolute;z-index:-1;top:50%;right:-22%;width:min(78%,620px);opacity:.07;pointer-events:none;transform:translateY(-50%);}
.cr-auth-logo{display:flex;align-items:center;gap:14px;color:var(--ink);text-decoration:none!important;}
.cr-auth-logo:hover{color:var(--ink);}
.cr-auth-logo img{width:46px;height:46px;flex:none;object-fit:contain;}
.cr-auth-logo .t{font-family:var(--font-display);font-size:20px;line-height:1;}
.cr-auth-logo .s{margin-top:6px;font-family:var(--font-mono);font-size:10px;letter-spacing:.24em;color:var(--ink-3);}
.cr-auth-h{margin:0;text-wrap:balance;font-family:var(--font-display);font-size:clamp(40px,min(6.6vw,10.5vh),112px);font-weight:400;line-height:.9;letter-spacing:-.01em;text-transform:uppercase;color:#EBE2D7;}
.cr-auth-h em{font-style:normal;color:#91A5FF;}
.cr-auth-copy{display:flex;flex-direction:column;gap:26px;}
.cr-auth-p{max-width:460px;margin:0;font-size:16px;line-height:1.6;color:var(--ink-2);}
.cr-auth-feats{max-width:460px;border-top:1px solid var(--line);}
.cr-auth-feat{display:flex;align-items:center;gap:14px;padding:13px 0;border-bottom:1px solid var(--line);
  font-family:var(--font-mono);font-size:12px;line-height:1.3;letter-spacing:.16em;text-transform:uppercase;color:var(--ink);}
.cr-auth-feat i{width:16px;flex:none;text-align:center;font-size:13px;color:var(--accent);}
/* short laptop screens: tighten the poster so it never spills past its frame */
@media(min-width:901px) and (max-height:820px){
  .cr-auth-brand{gap:24px;padding-block:44px;}
  .cr-auth-copy{gap:18px;}
  .cr-auth-p{font-size:15px;line-height:1.55;}
  .cr-auth-feat{padding:10px 0;}
}
.cr-auth-form{display:flex;align-items:center;justify-content:center;padding:clamp(28px,4vw,56px);overflow-y:auto;background:var(--bg);}
.cr-auth-card{width:100%;max-width:400px;}
.cr-auth-card .cr-auth-logo{display:none;margin-bottom:40px;}
.cr-auth-card .cr-eyebrow-maroon{margin-bottom:12px;}
.cr-auth-title{margin:0 0 28px;font-family:var(--font-display);font-size:30px;font-weight:400;line-height:1;text-transform:uppercase;color:var(--ink);}
.cr-auth-card .btn-lg{margin-top:8px;}
.cr-auth-lede{margin:-14px 0 24px;font-size:15px;line-height:1.6;color:var(--ink-2);}
.cr-auth-lede + .cr-auth-lede{margin-top:-12px;}
.cr-auth-or{display:flex;align-items:center;gap:12px;margin:20px 0;font-family:var(--font-mono);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-3);}
.cr-auth-or::before,.cr-auth-or::after{content:"";flex:1;height:1px;background:var(--line);}
.cr-auth-alt{margin:24px 0 0;text-align:center;font-family:var(--font-mono);font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);}
.cr-auth-alt a{margin-left:6px;}
.cr-auth-legal{margin:16px 0 0;text-align:center;font-size:12.5px;color:var(--ink-3);}
.cr-app:has(.cr-auth) .cr-sidebar{display:none!important;}
.cr-main:has(.cr-auth){margin-left:0!important;}
main[role="main"]:has(.cr-auth){padding-top:0;}
.cr-view:has(.cr-auth){max-width:none;margin:0;padding:0;}
html:has(.cr-auth),body:has(.cr-auth){height:100dvh!important;overflow:hidden!important;}
.cr-main:has(.cr-auth) .cr-topbar{position:absolute;left:0;background:transparent;border-bottom:0;pointer-events:none;z-index:20;}
.cr-main:has(.cr-auth) .cr-topbar > *{pointer-events:auto;}
.cr-main:has(.cr-auth) .cr-tb-title,.cr-main:has(.cr-auth) .cr-menu-btn{display:none;}

/* ---------- 17. errors · lists ---------- */
.cr-error{max-width:720px;margin:0 auto;padding:clamp(32px,9vh,110px) 0 40px;}
.cr-error .code{font-family:var(--font-display);font-size:clamp(96px,18vw,220px);line-height:.82;letter-spacing:-.02em;color:var(--accent-text);}
.cr-error h1{margin:22px 0 10px;font-family:var(--font-display);font-size:clamp(28px,4vw,44px);line-height:1;text-transform:uppercase;color:var(--ink);}
.cr-error p{max-width:520px;margin:0 0 28px;font-size:16px;color:var(--ink-2);}
.cr-error > .cr-eyebrow-maroon{margin:0 0 18px;}
.cr-error p.cr-error-detail{margin:0 0 10px;font-family:var(--font-mono);font-size:13px;letter-spacing:.06em;color:var(--ink);}
.cr-error .btn + .btn{margin-left:8px;}
.cr-search{display:grid;grid-template-columns:180px minmax(0,1fr) auto;gap:8px;margin:0 0 24px;}
.cr-search .btn{padding:0 22px;}
.cr-results{margin:-8px 0 20px;font-family:var(--font-mono);font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);}
.cr-results b{font-weight:400;color:var(--ink);}
.cr-pager{display:flex;align-items:center;justify-content:center;gap:8px;margin:28px 0 0;}
.cr-pager a{width:44px;height:44px;display:grid;place-items:center;color:var(--ink);border:1px solid var(--line);}
.cr-pager a:hover{color:var(--accent-text);border-color:var(--accent);}
.cr-pager .page-select{height:44px;padding:0 38px 0 14px;font-family:var(--font-mono);font-size:13px;color:var(--ink);border:1px solid var(--field-line);border-radius:0;}
.cr-pager .of{padding:0 6px;font-family:var(--font-mono);font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);}
.cr-list td .badge{margin-left:8px;}
.cr-list td.cr-ext{width:1%;white-space:nowrap;}
.cr-list td.cr-ext a{color:var(--ink-3);}
.cr-list td.cr-ext a:hover{color:var(--accent-text);}

/* ---------- 18. responsive · motion ---------- */
@media(max-width:980px){
  .cr-main{margin-left:0;}
  .cr-topbar{left:0;}
  .cr-sidebar{transform:translateX(-100%);transition:transform .3s cubic-bezier(.2,.7,.2,1);}
  .cr-sidebar.open{transform:none;box-shadow:var(--shadow-lg);}
  .cr-scrim.show{display:block;position:fixed;inset:0;z-index:190;background:rgba(1,14,27,.6);}
  html:has(.cr-sidebar.open){overflow:hidden!important;}
  .cr-menu-btn{display:grid;}
}
@media(max-width:900px){
  .cr-two-col{grid-template-columns:minmax(0,1fr);}
  .cr-two-col > .cr-rail{order:-1;}
  .cr-standing{position:static;display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:18px;align-items:center;padding:18px;}
  .cr-standing .cr-k{grid-column:1 / -1;margin-bottom:12px;}
  .cr-standing .place{grid-row:2 / 4;margin:0;font-size:48px;}
  .cr-standing .place.none{font-size:22px;}
  .cr-standing .pts{font-size:11px;}
  .cr-standing .nm{margin:4px 0 0;padding:0;border:0;}
  .cr-standing .acts{display:none;}
  .cr-auth{grid-template-columns:1fr;}
  .cr-auth-brand{display:none;}
  .cr-auth-card .cr-auth-logo{display:flex;}
}
@media(max-width:767px){
  .cr-charts{grid-template-columns:minmax(0,1fr);}
  .cr-charts .cr-chart-pie{display:none;}
  .cr-settings{grid-template-columns:minmax(0,1fr);gap:20px;}
  .cr-settings-nav{position:static;flex-direction:row;gap:20px;border-bottom:1px solid var(--line);}
  .cr-settings-nav .nav-link{margin-bottom:-1px;padding:0 0 12px;background:transparent!important;border-left:0;border-bottom:2px solid transparent;}
  .cr-settings-nav .nav-link.active{border-bottom-color:var(--accent);}
  .cr-settings .tab-content{padding:22px 18px;}
  .cr-tokens td{font-size:13.5px;}
}
@media(max-width:760px){
  .cr-hero{align-items:flex-start;}
  .cr-hero-id{flex-basis:100%;gap:16px;}
  .cr-hero-av{width:56px;height:56px;font-size:20px;}
  .cr-hero-stats{width:100%;}
  .cr-hero-stat{flex:1;padding:0 16px;}
  .cr-hero-stat .v{font-size:28px;}
}
@media(max-width:640px){
  .cr-notif{grid-template-columns:minmax(0,1fr);gap:6px;}
  .cr-search{grid-template-columns:minmax(0,1fr) auto;}
  .cr-search > :first-child{grid-column:1/-1;}
}
@media(max-width:575px){
  #challenge-window .modal-body{padding:22px 18px 24px;}
  #challenge-window .submit-row #challenge-submit{padding:0 18px;}
  .card-body{padding:18px;}
}
@media(max-width:560px){
  :root{--gutter:16px;}
  .cr-topbar{gap:8px;}
  .cr-view{padding-top:24px;padding-bottom:56px;}
  .btn-cross{width:40px;justify-content:center;padding:0;}
  .btn-cross .cl,.btn-cross .xt{display:none;}
  .challenges-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;}
  #challenges-board .challenge-button{min-height:112px;padding:14px!important;}
  #challenges-board .challenge-button span{font-size:24px;}
  #challenges-board .challenge-button p{font-size:13.5px;}
  .table td,.table th{padding:12px 10px;}
  .table thead td,.table thead th{padding:10px;}
  #scoreboard tbody th{width:44px;}
}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-delay:0s!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important;}
}
