:root {
  color-scheme: dark;
  --bg: #0a111d;
  --panel: #101a29;
  --side: #0d1623;
  --line: #25354a;
  --text: #edf4f8;
  --muted: #a1b2c4;
  --mint: #84f4d3;
  --peach: #ffcc9f;
  --blue: #a5bcff;
  --mono: ui-monospace, SFMono-Regular, Consolas, monospace;
}
* { box-sizing: border-box; }
[hidden] { display: none !important; }
body { margin: 0; background: var(--bg); color: var(--text); font: 15px/1.6 system-ui, sans-serif; }
h1, h2, h3, p { margin: 0; }
a { color: inherit; text-decoration: none; }
button, input, select, textarea { font: inherit; }
button { cursor: pointer; }
button:disabled { cursor: default; opacity: .66; }
svg { width: 20px; height: 20px; flex: none; }
:focus-visible { outline: 2px solid var(--mint); outline-offset: 4px; }
.skip { position: fixed; z-index: 3; top: 8px; left: 8px; padding: 8px 12px; background: var(--panel); transform: translateY(-150%); }
.skip:focus { transform: none; }
.layout { display: grid; grid-template-columns: 232px minmax(0, 1fr); min-height: 100vh; }
.sidebar { height: 100dvh; position: sticky; top: 0; display: flex; flex-direction: column; overflow: auto; padding: 28px 16px 20px; background: var(--side); border-right: 1px solid var(--line); }
.brand { display: flex; align-items: center; gap: 11px; padding: 0 7px; }
.brand strong { display: block; font-size: 19px; letter-spacing: -.04em; line-height: 1.2; }
.brand small { display: block; margin-top: 5px; color: var(--muted); font: 9px var(--mono); letter-spacing: .13em; }
.tile { display: inline-grid; place-items: center; width: 40px; height: 40px; border: 1px solid #305957; border-radius: 10px; background: #142d33; color: var(--mint); flex: none; }
.nav-label { margin: 47px 12px 10px; color: var(--muted); font: 10px var(--mono); letter-spacing: .16em; }
nav { display: grid; gap: 5px; }
nav a { display: flex; align-items: center; gap: 11px; min-height: 45px; padding: 8px 11px; border: 1px solid transparent; border-radius: 8px; color: var(--muted); font-size: 14px; }
nav a:hover { background: #172539; color: var(--text); }
nav a[aria-current="page"] { color: var(--mint); border-color: #2b5958; background: #163136; }
.sidebar-bottom { margin-top: auto; padding: 18px 10px 0; }
.sidebar-bottom p { color: var(--muted); font-size: 12px; margin-top: 5px; }
.local-label { font: 11px var(--mono); color: var(--mint); }
i { display: inline-block; height: 7px; width: 7px; border-radius: 50%; background: var(--mint); margin-right: 5px; vertical-align: 1px; }
.shell { display: flex; flex-direction: column; min-width: 0; }
.top { display: flex; align-items: center; gap: 13px; min-height: 65px; padding: 8px clamp(20px, 4vw, 56px); border-bottom: 1px solid var(--line); background: #0e1724; }
.breadcrumbs { color: var(--muted); font-size: 13px; }
.breadcrumbs > span { margin: 0 7px; color: #6c8297; }
.breadcrumbs b { color: var(--text); font-weight: 600; }
.top-progress { display: flex; gap: 8px; align-items: center; margin-left: auto; white-space: nowrap; color: var(--mint); font: 12px var(--mono); }
.top-progress svg { width: 17px; height: 17px; }
.menu { display: none; }
main { width: 100%; max-width: 1480px; margin: 0 auto; padding: 28px clamp(20px, 4vw, 56px) 48px; flex: 1; }
main:focus { outline: none; }
.actions { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-top: 20px; }
.button { display: inline-flex; align-items: center; justify-content: center; gap: 8px; border: 1px solid transparent; border-radius: 8px; min-height: 42px; padding: 8px 14px; font-weight: 680; font-size: 13px; }
.button svg { width: 17px; height: 17px; }
.primary { background: var(--mint); color: #082b29; }
.primary:hover:not(:disabled) { background: #b1ffe9; }
.secondary { background: #152334; color: var(--text); border-color: #33465d; }
.secondary:hover:not(:disabled) { background: #20344c; }
.eyebrow, .index { color: var(--mint); font: 11px var(--mono); letter-spacing: .10em; text-transform: uppercase; }
.index { color: var(--muted); font-size: 10px; white-space: nowrap; }
.text-link, .back { display: inline-flex; gap: 8px; align-items: center; color: var(--mint); font-weight: 650; font-size: 13px; }
.text-link:hover, .back:hover { text-decoration: underline; }
.text-link svg { width: 16px; height: 16px; }
.grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 13px; }
.card { display: block; min-width: 0; background: var(--panel); border: 1px solid var(--line); border-radius: 11px; padding: 17px; overflow-wrap: anywhere; }
a.card:hover { background: #152235; border-color: #49766f; }
.lesson-card { display: flex; flex-direction: column; min-height: 206px; }
.card-top, .card-foot { display: flex; align-items: center; justify-content: space-between; gap: 9px; }
.card h3 { margin: 13px 0 5px; font-size: 18px; letter-spacing: -.02em; line-height: 1.3; }
.card p { font-size: 14px; }
.tile-1 { background: #302525; color: var(--peach); border-color: #62463a; }
.tile-2 { background: #20294a; color: var(--blue); border-color: #394970; }
.card-foot { color: var(--muted); font-size: 11px; margin-top: auto; padding-top: 14px; }
.card-foot svg { color: var(--mint); width: 17px; height: 17px; }
.page-title { margin: 12px 0 24px; }
.page-title h1 { font-size: clamp(32px, 5.2vw, 57px); letter-spacing: -.055em; line-height: 1.05; margin: 7px 0 11px; }
.page-title p { max-width: 780px; }
.filters { display: flex; gap: 8px; flex-wrap: wrap; margin: 0 0 16px; }
.filters button, .icon-button { border: 1px solid var(--line); color: var(--muted); background: var(--panel); border-radius: 8px; padding: 7px 12px; }
.filters button[aria-pressed="true"] { color: var(--mint); border-color: #42786b; background: #193737; }
.filters button:hover { color: var(--text); border-color: #699486; }
.reading { display: grid; gap: 12px; max-width: 900px; }
.topic { display: flex; align-items: flex-start; gap: 14px; }
.topic .tile { font: 13px var(--mono); }
.topic h2, .task h2 { font-size: 20px; line-height: 1.3; margin-bottom: 7px; }
.task { padding: clamp(16px, 3vw, 25px); }
.task .eyebrow + h2 { margin-top: 7px; }
pre { white-space: pre-wrap; overflow-wrap: anywhere; background: #0a1422; border: 1px solid var(--line); border-radius: 8px; padding: 13px; color: var(--mint); font: 13px/1.7 var(--mono); }
details { margin-top: 12px; }
summary { cursor: pointer; color: var(--mint); font-size: 14px; }
details p { padding-top: 7px; }
fieldset { border: none; padding: 0; margin: 0 0 16px; }
legend { margin-bottom: 8px; font-weight: 680; }
.option { display: flex; align-items: center; gap: 8px; padding: 9px; margin: 6px 0; border: 1px solid var(--line); border-radius: 8px; }
.option:has(input:checked) { border-color: #539184; background: #193138; }
input[type="radio"], progress { accent-color: var(--mint); }
.feedback:not(:empty) { margin-top: 10px; color: var(--mint); }
.feedback[data-result="incorrect"] { color: var(--peach); }
.journal-grid, .progress-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; align-items: start; }
#journal-form label { display: grid; gap: 6px; margin: 11px 0; color: var(--muted); }
#journal-form input, textarea, select { width: 100%; padding: 9px 10px; border: 1px solid #34495f; border-radius: 7px; color: var(--text); background: #0a1422; }
textarea { resize: vertical; }
.journal-head { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 14px; margin-bottom: 15px; }
.journal-head h2 { margin: 0; }
.note { border-top: 1px solid var(--line); padding: 9px 0; }
.note h3 { margin: 3px 0; }
.note small { color: var(--mint); }
.note p { white-space: pre-wrap; }
progress { width: 100%; }
.progress-list { padding: 0; list-style: none; }
.progress-list li { display: flex; justify-content: space-between; gap: 12px; align-items: baseline; padding: 9px 0; border-top: 1px solid var(--line); }
.progress-list li span { color: var(--muted); font-size: 12px; white-space: nowrap; }
.progress-list a:hover { color: var(--mint); }
.task h2 small { color: var(--mint); font: 13px var(--mono); }
footer { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 6px 14px; padding: 16px clamp(20px, 4vw, 56px); border-top: 1px solid var(--line); color: var(--muted); font: 11px var(--mono); }
@media (max-width: 1080px) {
  .layout { grid-template-columns: 196px minmax(0, 1fr); }
  .grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 760px) {
  .layout { display: block; }
  .sidebar { display: none; position: static; height: auto; border-bottom: 1px solid var(--line); border-right: 0; padding: 18px; }
  .menu-open .sidebar { display: flex; }
  .sidebar .nav-label { margin-top: 20px; }
  .menu { display: inline-flex; padding: 6px; }
  .top { min-height: 54px; }
  main { padding-top: 17px; }
  .journal-grid, .progress-grid { grid-template-columns: 1fr; }
}
@media (max-width: 485px) {
  main, .top, footer { padding-left: 13px; padding-right: 13px; }
  .grid { grid-template-columns: 1fr; }
  .lesson-card { min-height: 170px; }
  .breadcrumbs { font-size: 11px; }
}

/* Cyber Terminal dashboard */
:root {
  --bg: #0a111a;
  --panel: #0e1b26;
  --side: #0b121b;
  --line: #293b48;
  --mint: #b0ff2e;
  --muted: #b9c9d8;
}
.layout { grid-template-columns: clamp(210px, 15.3vw, 290px) minmax(0, 1fr); }
.sidebar {
  position: sticky;
  isolation: isolate;
  background: linear-gradient(165deg, #0c121b 40%, #0c1820);
}
.sidebar { overflow-x: hidden; }
.sidebar::after {
  content: "";
  position: absolute;
  z-index: -1;
  inset: auto 10% 6% -25%;
  height: 48%;
  pointer-events: none;
  transform: rotate(-10deg);
  background: linear-gradient(133deg, transparent 49%, #8eff2730 50%, #b0ff2e90 51%, #90ff2420 52%, transparent 54%);
}
.brand { padding: 0 6px; gap: 9px; }
.brand strong { font-size: clamp(15px, 1.48vw, 25px); white-space: nowrap; }
.brand-mark { width: 35px; height: 35px; color: var(--mint); }
.nav-label { margin-top: 35px; }
nav { gap: 10px; }
nav a { min-height: 58px; padding-inline: 12px; color: var(--text); font-size: clamp(14px, 1.12vw, 20px); }
nav a[aria-current="page"] {
  color: #122008;
  background: linear-gradient(155deg, #cdff70, #a4fc23 72%);
  border-color: #ccff7b;
  font-weight: 750;
  box-shadow: inset 0 2px 9px #e2ff9f75;
  clip-path: polygon(0 0, 100% 0, 92% 100%, 0 100%);
}
nav svg { width: 23px; height: 23px; }
.primary { background: linear-gradient(#c4ff5c, #95ef13); color: #101b06; border-color: #d1ff7a; }
.primary:hover:not(:disabled) { background: #d3ff79; }
body[data-page="home"] main { max-width: 1920px; padding: clamp(18px, 1.6vw, 30px); }
.dashboard { display: grid; grid-template-columns: minmax(0, 2.2fr) minmax(245px, 1fr); gap: clamp(13px, 1.12vw, 22px); align-items: start; }
.dashboard-title { position: relative; padding: 5px 0 0 39px; margin-bottom: 18px; }
.dashboard-title::before { content: ""; position: absolute; top: 9px; left: 10px; width: 9px; height: 42px; background: var(--mint); border-radius: 5px; transform: skew(-14deg); box-shadow: 0 0 18px #a9ff2360; }
.dashboard-title h1 { font-size: clamp(27px, 2.36vw, 46px); line-height: 1.12; letter-spacing: -.045em; }
.dashboard-title p { color: #cfdfef; margin-top: 4px; font-size: clamp(13px, 1.14vw, 21px); }
.dashboard-cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(11px, 1vw, 19px); }
.cyan { --accent: #21ddec; }
.violet { --accent: #bc72ff; }
.gold { --accent: #ffca55; }
.green { --accent: #68fa6b; }
.blue { --accent: #27cfff; }
.pink { --accent: #fa62ce; }
.orange { --accent: #ff9a6e; }
.neon-card {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 17px;
  min-height: clamp(166px, 12.3vw, 236px);
  padding: clamp(12px, 1vw, 20px);
  border: 1px solid color-mix(in srgb, var(--accent) 65%, #293844);
  border-radius: clamp(13px, 1.2vw, 23px);
  background: radial-gradient(ellipse at 100% 54%, color-mix(in srgb, var(--accent) 17%, #0c1722), #101824 74%);
  box-shadow: inset 0 1px 4px #ffffff12;
}
.neon-card::before, .neon-card::after {
  content: "";
  position: absolute;
  z-index: -1;
  width: 107%;
  height: 125%;
  top: 28%;
  right: -41%;
  border-radius: 50%;
  border: 2px solid color-mix(in srgb, var(--accent) 55%, transparent);
  transform: rotate(-24deg);
  pointer-events: none;
}
.neon-card::after { right: -57%; border-width: 1px; }
.neon-card:hover { box-shadow: inset 0 0 24px color-mix(in srgb, var(--accent) 21%, transparent); border-color: var(--accent); }
.neon-card-main { display: flex; align-items: center; gap: clamp(9px, .85vw, 17px); min-width: 0; }
.neon-icon {
  flex: none;
  display: grid;
  place-items: center;
  width: clamp(43px, 4.25vw, 82px);
  height: clamp(48px, 4.75vw, 91px);
  color: var(--accent);
  border: 1px solid var(--accent);
  border-radius: clamp(11px, 1.15vw, 21px);
  background: radial-gradient(ellipse, #0b1320 34%, color-mix(in srgb, var(--accent) 29%, #0b1320));
  box-shadow: inset 0 0 13px color-mix(in srgb, var(--accent) 51%, transparent), 0 0 18px color-mix(in srgb, var(--accent) 18%, transparent);
}
.neon-icon svg { width: 62%; height: 62%; filter: drop-shadow(0 0 5px color-mix(in srgb, var(--accent) 53%, transparent)); }
.neon-card h3 { font-size: clamp(16px, 1.47vw, 28px); line-height: 1.13; letter-spacing: -.035em; overflow-wrap: anywhere; }
.neon-card p { font-size: clamp(11px, .84vw, 15px); line-height: 1.43; margin-top: 7px; color: #dbe5ee; }
.neon-card-foot { display: flex; align-items: center; gap: 7px; min-height: 34px; padding: 5px 10px; border: 1px solid color-mix(in srgb, var(--accent) 38%, #132632); border-radius: 40px; background: #0d1f2ae8; font-size: clamp(10px, .78vw, 14px); }
.neon-card-foot svg { color: var(--accent); width: 15px; height: 15px; }
.neon-card-foot svg:last-child { margin-left: auto; color: var(--mint); }
.journal-card { grid-column: span 2; display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); align-content: center; }
.journal-card .neon-card-foot { grid-row: 2; }
.journal-aside { grid-column: 2; grid-row: 1 / 3; align-self: stretch; display: flex; flex-direction: column; justify-content: center; padding-left: clamp(12px, 1.15vw, 23px); border-left: 1px solid #756688; }
.journal-aside strong { font-size: clamp(13px, .99vw, 18px); }
.dashboard-widgets { display: grid; gap: clamp(12px, 1vw, 19px); }
.dash-widget { padding: clamp(14px, 1.2vw, 24px); min-width: 0; border: 1px solid #617f91; border-radius: clamp(14px, 1.2vw, 23px); background: linear-gradient(135deg, #0e1d27, #0b1720); box-shadow: inset 0 1px 5px #b9e8ff16; }
.dash-widget h2 { display: flex; gap: 9px; align-items: center; font-size: clamp(17px, 1.32vw, 25px); letter-spacing: -.03em; line-height: 1.2; }
.dash-widget h2 > svg { color: var(--mint); width: clamp(21px, 1.8vw, 35px); height: clamp(21px, 1.8vw, 35px); filter: drop-shadow(0 0 7px #a9ff2c55); }
.arena { position: relative; isolation: isolate; overflow: hidden; background: radial-gradient(ellipse at 55% 88%, #124132, #0b1e23 72%); }
.arena::before { content: ""; position: absolute; inset: 30% 0 0; z-index: -1; opacity: .37; background: radial-gradient(circle, #53ff885d 1px, transparent 2px) 0 0 / 10px 10px; mask-image: linear-gradient(transparent, black 65%); }
.arena-decoration { position: absolute; z-index: -1; top: -20px; right: -18px; transform: rotate(-14deg); color: #34e8c9; opacity: .18; }
.arena-decoration svg { width: 123px; height: 123px; }
.arena h2 { font-size: clamp(23px, 1.8vw, 34px); }
.arena > p { display: flex; align-items: center; gap: 8px; margin-top: 12px; font-size: 13px; }
.arena > p svg, .arena-tag svg { width: 15px; height: 15px; }
.arena-tag { display: flex; gap: 7px; align-items: center; justify-content: center; width: fit-content; max-width: 100%; margin: 15px auto 11px; padding: 4px 10px; border: 1px solid #7ed82c; border-radius: 30px; color: var(--mint); background: #112b24; font-size: 12px; }
.arena-steps { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; text-align: center; }
.arena-steps strong { display: block; padding: 6px 2px; background: linear-gradient(#194234, #0b2528); border: 1px solid #387865; border-radius: 13px; font-size: clamp(19px, 1.92vw, 37px); line-height: 1.2; }
.arena-steps small { display: block; color: var(--muted); font-size: clamp(9px, .76vw, 13px); margin-top: 3px; }
.arena-action { display: flex; width: 100%; margin-top: 14px; min-height: clamp(41px, 3vw, 56px); box-shadow: 0 0 20px #9af72a40; font-size: clamp(14px, 1.2vw, 22px); }
.widget-label { display: inline-flex; gap: 3px; align-items: center; margin-left: auto; padding: 3px 7px; color: var(--mint); border: 1px solid #517933; border-radius: 30px; font-size: 10px; letter-spacing: 0; }
.widget-label svg { width: 11px; height: 11px; }
.result-list, .activity-days { list-style: none; margin: 12px 0 0; padding: 0; }
.result-list a { display: flex; align-items: center; gap: 9px; padding: 8px 0; border-top: 1px solid #304653; font-size: clamp(11px, .86vw, 15px); }
.result-list strong { color: var(--mint); margin-left: auto; white-space: nowrap; }
.result-icon { display: grid; place-items: center; flex: none; width: 28px; height: 28px; border: 1px solid #5e8f50; border-radius: 50%; color: var(--mint); background: #183025; }
.result-icon svg { width: 14px; height: 14px; }
.activity-days { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 4px; text-align: center; margin-top: 17px; }
.activity-days li { display: grid; justify-items: center; gap: 4px; color: var(--muted); font-size: 11px; }
.day-dot { display: grid; place-items: center; width: clamp(21px, 1.8vw, 35px); aspect-ratio: 1; border: 1px solid #466073; border-radius: 50%; background: #101f2b; color: #bfd1da; font-weight: 750; }
.day-dot svg { width: 68%; height: 68%; }
.done .day-dot { color: #122407; border-color: #c3ff77; background: linear-gradient(#d8ff9c, #9df045); box-shadow: 0 0 14px #a9ff2c5c; }
.activity-caption { margin-top: 8px; color: var(--muted); font-size: 11px; }
@media (min-width: 761px) {
  body[data-page="home"] .top { display: none; }
}
@media (max-width: 1250px) {
  .dashboard-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .journal-card { grid-column: auto; display: flex; }
  .journal-aside { display: none; }
}
@media (max-width: 1020px) {
  .dashboard { grid-template-columns: 1fr; }
  .dashboard-widgets { grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; }
  .arena { grid-row: span 2; }
}
@media (max-width: 760px) {
  .brand strong { font-size: 19px; }
  .dashboard-title { padding-left: 28px; }
  .dashboard-title::before { left: 5px; height: 35px; }
  nav a { min-height: 44px; }
}
@media (max-width: 510px) {
  .dashboard-widgets { grid-template-columns: 1fr; }
  .arena { grid-row: auto; }
  .neon-card { gap: 10px; min-height: 176px; }
  .neon-card-main { flex-direction: column; align-items: flex-start; }
  .neon-card-foot { margin-top: auto; }
  .neon-icon { width: 40px; height: 43px; }
}

.field-form label, .catalog-search { display: grid; gap: 6px; margin: 11px 0; color: var(--muted); }
.field-form input:not([type="radio"]), .catalog-search input {
  width: 100%; padding: 9px 10px; border: 1px solid #34495f;
  border-radius: 7px; color: var(--text); background: #0a1422;
}
.workbench > p { color: var(--muted); margin: 4px 0 14px; }
.workbench .card h3 { margin-top: 0; }
.workbench output {
  display: block; white-space: pre-wrap; overflow-wrap: anywhere;
  margin-top: 12px; padding: 10px; border-radius: 7px; border: 1px solid var(--line);
  background: #0a1422; color: var(--mint); font: 12px/1.6 var(--mono);
}
.workbench .actions, #journal-form .actions { margin-top: 10px; }
.catalog-title { margin-top: 25px; }
.catalog-search { max-width: 440px; }
#catalog-empty { color: var(--muted); }
#lab-journal, .note button { margin-top: 9px; }
.progress-actions { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 15px; }
