@font-face{font-family:"Roboto Mono";font-style:normal;font-weight:100 900;font-display:swap;src:url("/plugins/glasscastle_theme/assets/roboto-mono.ttf") format("truetype")}
:root,[data-bs-theme="light"]{--gc-bg:#eef5f2;--gc-panel:#fff;--gc-ink:#132b25;--gc-muted:#4f6860;--gc-line:#b9cec5;--gc-purple:#17643f;--gc-soft:#dcefe5;--gc-violet:#7246b3;--bs-body-bg:var(--gc-bg);--bs-body-color:var(--gc-ink);--bs-border-color:var(--gc-line);--bs-link-color:var(--gc-purple);--bs-link-hover-color:#10482d}
[data-bs-theme="dark"]{color-scheme:dark;--gc-bg:#020405;--gc-panel:#081014;--gc-ink:#eaf8f3;--gc-muted:#a0b5ae;--gc-line:#28483f;--gc-purple:#35ff95;--gc-soft:#112c24;--gc-violet:#9a6cff;--bs-body-bg:var(--gc-bg);--bs-body-color:var(--gc-ink);--bs-border-color:var(--gc-line);--bs-link-color:var(--gc-purple);--bs-link-hover-color:#9affc9}
body{background:radial-gradient(ellipse at 15% 0,#35ff950d,transparent 35rem),radial-gradient(ellipse at 85% 0,#9a6cff12,transparent 38rem),var(--gc-bg);color:var(--gc-ink);font:1rem/1.65 "Roboto Mono",ui-monospace,monospace}
body::before{content:"";position:fixed;inset:0;pointer-events:none;z-index:-1;background-image:linear-gradient(#35ff9506 1px,transparent 1px),linear-gradient(90deg,#9a6cff06 1px,transparent 1px);background-size:42px 42px}
h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:700;letter-spacing:-.035em}
a{color:var(--gc-purple)}a:hover{color:var(--bs-link-hover-color,var(--gc-purple))}
.navbar{background:#020405f5!important;border-bottom:1px solid #28483f;backdrop-filter:blur(12px)}
.navbar-brand{font-size:1rem;font-weight:700;letter-spacing:.025em;color:#35ff95!important}
.navbar .nav-link{font-size:.875rem;color:#c1d4cc!important}.navbar .nav-link:hover,.navbar .nav-link:focus{color:#35ff95!important}
.navbar-toggler{border-color:#45665a!important}.navbar-toggler-icon{filter:none}
.jumbotron{background:linear-gradient(110deg,#35ff9509,#9a6cff09),var(--gc-panel)!important;color:var(--gc-ink);border-bottom:1px solid var(--gc-line);padding:2.5rem 1rem!important;border-radius:0}
.jumbotron h1{font-size:clamp(2rem,5vw,3.2rem)}
.btn{font:600 .9375rem/1.5 "Roboto Mono",monospace;border-radius:3px;padding:.65rem 1rem;transition:background-color .15s,border-color .15s}
.btn-primary{background:#35ff95;border-color:#35ff95;color:#04130b}
.btn-primary:hover,.btn-primary:focus{background:#90ffc5;border-color:#90ffc5;color:#04130b}
.btn-outline-secondary{color:var(--gc-ink);border-color:var(--gc-line)}
.btn-outline-secondary:hover{background:var(--gc-soft);border-color:var(--gc-purple);color:var(--gc-ink)}
.form-control,.form-select,.custom-select,.input-group-text{background-color:var(--gc-panel);color:var(--gc-ink);border-color:var(--gc-line);border-radius:3px;min-height:2.75rem}
.form-control:focus,.form-select:focus,.custom-select:focus{background:var(--gc-panel);color:var(--gc-ink);border-color:var(--gc-purple);box-shadow:0 0 0 .2rem #35ff951f}
.form-control::placeholder{color:var(--gc-muted);opacity:1}
.card,.modal-content,.dropdown-menu,.list-group-item{background:var(--gc-panel);color:var(--gc-ink);border:1px solid var(--gc-line);border-radius:4px}
.card-header,.card-footer,.modal-header,.modal-footer{border-color:var(--gc-line);background:transparent}
.dropdown-item{color:var(--gc-ink)}.dropdown-item:hover,.dropdown-item:focus{background:var(--gc-soft);color:var(--gc-ink)}
.text-muted,.text-secondary{color:var(--gc-muted)!important}
.table{--bs-table-bg:var(--gc-panel);--bs-table-color:var(--gc-ink);--bs-table-border-color:var(--gc-line);--bs-table-striped-bg:var(--gc-soft);--bs-table-striped-color:var(--gc-ink);--bs-table-hover-bg:var(--gc-soft);--bs-table-hover-color:var(--gc-ink);color:var(--gc-ink)}
.table td,.table th{border-color:var(--gc-line)}
.challenge-button.btn-dark{background:var(--gc-panel);color:var(--gc-ink);border:1px solid var(--gc-line);border-top:2px solid var(--gc-violet);text-align:left;box-shadow:none}
.challenge-button.btn-dark:hover{background:var(--gc-soft);border-color:var(--gc-purple)}
.challenge-inner p{font-size:1.05rem;font-weight:700}.challenge-inner span{color:var(--gc-purple)}
.challenge-button.challenge-solved{border-top-color:var(--gc-purple);background:var(--gc-soft)}
.category-header h3{font-size:1.35rem}
.nav-tabs{border-color:var(--gc-line)}.nav-tabs .nav-link{color:var(--gc-muted)}.nav-tabs .nav-link.active{background:var(--gc-panel);color:var(--gc-ink);border-color:var(--gc-line)}
.gc-home{max-width:1000px;margin:clamp(2rem,8vh,6rem) auto;padding:clamp(1.25rem,4vw,3rem);background:linear-gradient(135deg,#35ff9507,#9a6cff0b),var(--gc-panel);border:1px solid var(--gc-line);border-top:2px solid var(--gc-purple);border-radius:4px;position:relative}
.gc-label{font:600 .875rem/1.6 "Roboto Mono",monospace;letter-spacing:.12em;color:var(--gc-purple);text-transform:uppercase}
.gc-home h1{font-size:clamp(2.2rem,5.5vw,4rem);line-height:1.08;margin:1rem 0 1.5rem;max-width:850px;text-transform:uppercase}
.gc-home p:not(.gc-label){font-size:1.0625rem;color:var(--gc-muted);max-width:45rem}
.gc-actions{display:flex;gap:.8rem;flex-wrap:wrap;margin-top:1.8rem}
.footer{background:transparent;border-top:1px solid var(--gc-line);margin-top:3rem}
code{color:var(--gc-violet)}pre{border:1px solid var(--gc-line);border-radius:3px;padding:1rem}
:focus-visible{outline:3px solid var(--gc-purple)!important;outline-offset:3px}
@media(max-width:576px){.jumbotron{padding:1.75rem .5rem!important}.gc-home{margin:2rem 0}.gc-actions .btn{flex:1 1 100%}.modal-dialog{margin:.5rem}.navbar-brand{font-size:.875rem}.gc-home h1{overflow-wrap:anywhere}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;scroll-behavior:auto!important}}

/* CTFd assigns Lato directly to containers; keep typography consistent. */
.container,.container-fluid,.jumbotron .container{font-family:inherit}
@media(min-width:768px){.navbar-expand-md{flex-wrap:wrap}.navbar-expand-md .navbar-collapse{flex-wrap:wrap}.navbar-expand-md .navbar-nav{flex-wrap:wrap}}

@media(max-width:1399.98px){.navbar-expand-xxl .navbar-collapse{max-height:75vh;overflow-y:auto}}
