@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap";/**
* Copyright (c) 2014 The xterm.js authors. All rights reserved.
* Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)
* https://github.com/chjj/term.js
* @license MIT
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
* Originally forked from (with the author's permission):
*   Fabrice Bellard's javascript vt100 for jslinux:
*   http://bellard.org/jslinux/
*   Copyright (c) 2011 Fabrice Bellard
*   The original design remains. The terminal itself
*   has been extended to include xterm CSI codes, among
*   other features.
*/.xterm{cursor:text;position:relative;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;right:0;left:0;top:0;bottom:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm .xterm-scroll-area{visibility:hidden}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{position:absolute;left:0;top:0;bottom:0;right:0;z-index:10;color:transparent;pointer-events:none}.xterm .xterm-accessibility-tree:not(.debug) *::selection{color:transparent}.xterm .xterm-accessibility-tree{-webkit-user-select:text;user-select:text;white-space:pre}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{text-decoration:double underline}.xterm-underline-3{text-decoration:wavy underline}.xterm-underline-4{text-decoration:dotted underline}.xterm-underline-5{text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{text-decoration:overline double underline}.xterm-overline.xterm-underline-3{text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;position:absolute;top:0;right:0;pointer-events:none}.xterm-decoration-top{z-index:2;position:relative}:root{--bg: #0F172A;--surface: #1E293B;--surface-2: #243044;--border: #2E3A4D;--border-strong: #3B4A63;--fg-1: #E2E8F0;--fg-2: #94A3B8;--fg-3: #64748B;--aws: #FF9900;--aws-soft: rgba(255,153,0,.12);--k8s: #326CE5;--k8s-soft: rgba(50,108,229,.14);--primary: #6366F1;--primary-hover: #5558E3;--success: #10B981;--danger: #EF4444;--warn: #F59E0B;--radius: 12px;--radius-sm: 8px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--space-16: 64px;--space-20: 80px;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, system-ui, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, Menlo, monospace}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--fg-1);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;font-size:15px;line-height:1.5}a{color:inherit;text-decoration:none}.container{max-width:1100px;margin:0 auto;padding:0 var(--space-8)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-family:inherit;font-weight:600;font-size:14px;padding:12px 22px;border-radius:var(--radius-sm);border:1px solid transparent;cursor:pointer;transition:all .18s cubic-bezier(.2,0,0,1)}.btn-lg{padding:14px 28px;font-size:15px}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-hover)}.btn-ghost{background:transparent;color:var(--fg-1);border-color:var(--border-strong)}.btn-ghost:hover{background:var(--surface)}.btn-aws{background:var(--aws);color:#0f172a}.btn-k8s{background:var(--k8s);color:#fff}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-8)}.muted{color:var(--fg-2)}.small{font-size:13px}h1,h2,h3{letter-spacing:-.01em;margin:0}h1{font-size:44px;font-weight:700;line-height:1.1;letter-spacing:-.02em}h2{font-size:28px;font-weight:700}h3{font-size:18px;font-weight:600}.page{min-height:100vh;display:flex;flex-direction:column}nav{border-bottom:1px solid var(--border);background:var(--bg);position:sticky;top:0;z-index:50}.nav-inner{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:14px 32px}.nav-links{display:flex;align-items:center;gap:20px}.nav-links a{color:var(--fg-2);text-decoration:none}.nav-links a:hover{color:var(--fg-1)}.logo{display:flex;align-items:center;gap:10px;font-weight:700;font-size:17px;color:var(--fg-1);-webkit-user-select:none;user-select:none}.logo-mark{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:8px;background:var(--primary);color:#fff;font-weight:800;font-size:15px;flex-shrink:0}.dot{display:inline-block;width:7px;height:7px;border-radius:50%;flex-shrink:0}.cka-wait{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:70vh;text-align:center;gap:.75rem;padding:2rem}.cka-wait .big{font-size:2.5rem;font-weight:700;color:var(--accent,#58a6ff)}.cka-wait .muted{max-width:34rem;color:#8b949e;line-height:1.6}.spinner{width:38px;height:38px;border:3px solid #30363d;border-top-color:#58a6ff;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.cka-exam{display:flex;flex-direction:column;height:100vh;background:#010409}.cka-bar{display:flex;align-items:center;gap:1rem;padding:.6rem 1rem;background:#161b22;border-bottom:1px solid #30363d}.cka-progress{display:flex;gap:4px;flex:1;flex-wrap:wrap}.pip{width:26px;height:6px;border:0;border-radius:3px;background:#30363d;cursor:pointer;padding:0}.pip.on{background:#58a6ff}.pip.flag{background:#d29922}.cka-timer{font:600 1.15rem ui-monospace,Menlo,monospace;color:#c9d1d9;padding:.25rem .7rem;border:1px solid #30363d;border-radius:6px}.cka-timer.low{color:#f85149;border-color:#f85149;animation:pulse 1s infinite}@keyframes pulse{50%{opacity:.55}}.cka-split{display:grid;grid-template-columns:minmax(320px,38%) 1fr;flex:1;min-height:0}.cka-task{overflow-y:auto;padding:1.25rem;background:#0d1117;border-right:1px solid #30363d;color:#c9d1d9}.task-head{display:flex;justify-content:space-between;font-size:.8rem;color:#8b949e;margin-bottom:.5rem}.section-tag{display:inline-block;background:#bb6b1e;color:#fff;font-size:.7rem;font-weight:700;letter-spacing:.06em;padding:.25rem .6rem;border-radius:4px;margin-bottom:.75rem}.ssh-hint{font-size:.85rem;color:#8b949e;margin-bottom:1rem}.ssh-hint code{background:#161b22;padding:.15rem .4rem;border-radius:4px;color:#79c0ff}.task-body p{margin:.5rem 0;line-height:1.65}.task-body code{background:#161b22;padding:.1rem .35rem;border-radius:3px;color:#79c0ff}.task-nav{display:flex;gap:.5rem;margin-top:1.5rem}.task-nav button{flex:1;padding:.5rem;background:#21262d;color:#c9d1d9;border:1px solid #30363d;border-radius:6px;cursor:pointer}.task-nav button:disabled{opacity:.4;cursor:default}.task-nav button.flagged{background:#d29922;color:#000;border-color:#d29922}.cka-term{display:flex;flex-direction:column;min-width:0;background:#0d1117}.term-head{display:flex;justify-content:space-between;align-items:center;padding:.4rem .8rem;background:#161b22;border-bottom:1px solid #30363d;font-size:.78rem;color:#8b949e}.term-head button{background:#21262d;color:#c9d1d9;border:1px solid #30363d;border-radius:4px;padding:.15rem .5rem;cursor:pointer;font-size:.75rem}.term-host{flex:1;min-height:0;padding:.4rem}.cka-results{max-width:60rem;margin:0 auto;padding:2rem 1.25rem}.score-card{text-align:center;padding:2rem;border-radius:12px;margin-bottom:1.5rem;border:2px solid}.score-card.pass{background:#0d2818;border-color:#2ea043}.score-card.fail{background:#2d1214;border-color:#f85149}.score-num{font-size:3.5rem;font-weight:800;line-height:1}.score-label{font-size:1.1rem;font-weight:700;letter-spacing:.08em;margin:.4rem 0}.score-meta{font-size:.85rem;opacity:.75}.section-bars{display:flex;flex-direction:column;gap:.6rem;margin-bottom:2rem}.section-row{display:grid;grid-template-columns:9rem 1fr 3rem;align-items:center;gap:.75rem}.sec-name{text-transform:capitalize;font-size:.9rem}.bar{height:9px;background:#21262d;border-radius:5px;overflow:hidden}.bar-fill{height:100%;background:linear-gradient(90deg,#1f6feb,#2ea043)}.sec-pct{text-align:right;font-size:.85rem;font-variant-numeric:tabular-nums}.task-results{display:flex;flex-direction:column;gap:.4rem}.task-result{border:1px solid #30363d;border-radius:8px;overflow:hidden}.task-result.ok{border-left:3px solid #2ea043}.task-result.no{border-left:3px solid #f85149}.task-result.skip{border-left:3px solid #6e7681;opacity:.7}.tr-head{width:100%;display:grid;grid-template-columns:2rem 1fr auto auto;gap:.75rem;align-items:center;padding:.7rem .9rem;background:transparent;border:0;color:inherit;cursor:pointer;text-align:left}.tr-mark{font-weight:700}.task-result.ok .tr-mark{color:#2ea043}.task-result.no .tr-mark{color:#f85149}.tr-cluster,.tr-weight{font-size:.75rem;color:#8b949e}.tr-body{padding:.9rem;border-top:1px solid #30363d}.tr-body h4{margin:.75rem 0 .35rem;font-size:.8rem;text-transform:uppercase;letter-spacing:.05em;color:#8b949e}.tr-body pre{background:#0d1117;border:1px solid #30363d;border-radius:6px;padding:.7rem;overflow-x:auto;font-size:.8rem;white-space:pre-wrap;line-height:1.5}.tr-sol{border-left:3px solid #2ea043!important}.results-actions{margin-top:2rem;text-align:center}.cka-list{max-width:64rem;margin:0 auto;padding:2rem 1.25rem}.list-head{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1.5rem}.cap-badge{padding:.35rem .8rem;border-radius:999px;font-size:.8rem;font-weight:600;border:1px solid}.cap-badge.ok{color:#2ea043;border-color:#2ea043}.cap-badge.busy{color:#d29922;border-color:#d29922}.exam-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(17rem,1fr));gap:1rem;margin-bottom:2.5rem}.exam-card{border:1px solid #30363d;border-radius:10px;padding:1.1rem;display:flex;flex-direction:column;gap:.6rem}.exam-facts{list-style:none;padding:0;margin:0;font-size:.82rem;color:#8b949e}.exam-facts li{padding:.15rem 0}.exam-card button{margin-top:auto}.admin-page{max-width:70rem;margin:0 auto;padding:2rem 1.25rem}.admin-card{border:1px solid #30363d;border-radius:10px;padding:1.1rem;margin-bottom:1.25rem}.ops-bar{display:flex;gap:1rem;align-items:center;flex-wrap:wrap;font-size:.82rem;background:#161b22;border:1px solid #30363d;border-radius:8px;padding:.6rem .9rem;margin-bottom:1.25rem}.ops-sess{display:flex;gap:.4rem;align-items:center;background:#21262d;padding:.15rem .5rem;border-radius:4px;font-family:ui-monospace,monospace}.ops-sess button{background:none;border:0;color:#f85149;cursor:pointer;font-size:.75rem}.inline-form{display:flex;gap:.5rem;flex-wrap:wrap}.inline-form input{flex:1;min-width:7rem;padding:.45rem .6rem;background:#0d1117;border:1px solid #30363d;border-radius:6px;color:inherit}.admin-table{width:100%;border-collapse:collapse;font-size:.88rem}.admin-table th,.admin-table td{padding:.6rem .5rem;text-align:left;border-bottom:1px solid #30363d;vertical-align:top}.admin-table th{font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:#8b949e}.row-actions{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}.row-actions button,.row-actions a{background:#21262d;border:1px solid #30363d;border-radius:5px;padding:.25rem .55rem;font-size:.78rem;cursor:pointer;color:inherit;text-decoration:none}.row-actions .danger{color:#f85149;border-color:#5c2326}.admin-editor{display:grid;grid-template-columns:15rem 1fr;min-height:100vh}.task-list{background:#0d1117;border-right:1px solid #30363d;overflow-y:auto;padding:.6rem}.tl-head{display:flex;justify-content:space-between;align-items:center;padding:.5rem;font-size:.8rem;margin-bottom:.4rem}.tl-head a{color:#58a6ff;text-decoration:none}.tl-count{color:#8b949e}.tl-item{width:100%;display:grid;grid-template-columns:2.5rem 1fr .6rem;gap:.4rem;align-items:center;padding:.5rem;background:transparent;border:0;border-radius:6px;color:#c9d1d9;cursor:pointer;text-align:left;font-size:.82rem}.tl-item:hover{background:#161b22}.tl-item.on{background:#1f6feb22;border-left:2px solid #58a6ff}.tl-num{font-weight:600}.tl-sec{color:#8b949e;font-size:.75rem;overflow:hidden;text-overflow:ellipsis}.tl-dot{width:8px;height:8px;border-radius:50%;background:#6e7681}.tl-item.wired .tl-dot{background:#2ea043}.tl-item.unwired .tl-dot{background:#d29922}.task-form{padding:1.25rem 1.5rem;overflow-y:auto}.tf-row{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;margin-bottom:1rem}.tf-meta{display:flex;gap:.5rem;align-items:center}.tf-meta select,.tf-meta input{padding:.35rem .5rem;background:#0d1117;border:1px solid #30363d;border-radius:6px;color:inherit}.tf-meta input{width:4.5rem}.task-form label{display:block;margin:1rem 0 .35rem;font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:#8b949e}.task-form label small{display:block;font-weight:400;text-transform:none;letter-spacing:0;color:#6e7681;margin-top:.15rem}.task-form textarea{width:100%;padding:.65rem;background:#0d1117;border:1px solid #30363d;border-radius:6px;color:inherit;font-family:inherit;line-height:1.55;resize:vertical}.task-form textarea.mono{font-family:ui-monospace,Menlo,monospace;font-size:.82rem}.script-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-top:.5rem}.script-grid button{margin-top:.5rem;padding:.4rem .8rem;background:#21262d;border:1px solid #30363d;border-radius:6px;color:inherit;cursor:pointer}.test-out{margin-top:1rem;padding:.8rem;border-radius:8px;border:1px solid;font-size:.85rem}.test-out.ok{background:#0d2818;border-color:#2ea043}.test-out.no{background:#2d2312;border-color:#d29922}.test-out.err{background:#2d1214;border-color:#f85149}.test-out pre{margin:.5rem 0 0;background:#0d1117;padding:.6rem;border-radius:5px;overflow-x:auto;font-size:.78rem;white-space:pre-wrap}.test-out .stderr{color:#f0883e}.notice{background:#161b22;border-left:3px solid #58a6ff;padding:.7rem .9rem;border-radius:0 6px 6px 0;font-size:.85rem;line-height:1.55;margin:1rem 0}.notice.warn{border-left-color:#d29922}.notice.small{font-size:.78rem;padding:.5rem .7rem;margin:.4rem 0}.ok{color:var(--success,#2ea043)}.warn{color:var(--warn,#d29922)}.btn-primary:disabled{opacity:.5;cursor:default}.btn-danger{background:var(--danger,#da3633);color:#fff;border:0;border-radius:6px;padding:.4rem .9rem;font-weight:600;cursor:pointer}@media (max-width:900px){.cka-split{grid-template-columns:1fr;grid-template-rows:auto 1fr}.script-grid,.admin-editor{grid-template-columns:1fr}}.module-picker{display:grid;grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));gap:1rem;margin-top:1.5rem}.module-card{display:flex;flex-direction:column;gap:.4rem;align-items:flex-start;text-align:left;padding:1.1rem 1.2rem;border:1px solid var(--border,#30363d);border-radius:10px;background:var(--surface,#161b22);color:inherit;cursor:pointer;transition:border-color .15s,transform .15s}.module-card:hover{border-color:#58a6ff;transform:translateY(-2px)}.module-card.accent{border-color:#238636}.module-card.accent:hover{border-color:#2ea043}.mc-title{font-size:1.05rem;font-weight:700}.mc-sub{font-size:.82rem;color:#8b949e;line-height:1.5}.tl-tier{width:15px;height:15px;border-radius:3px;font-size:.6rem;font-weight:700;display:flex;align-items:center;justify-content:center;color:#0d1117}.tl-tier.auto{background:#2ea043}.tl-tier.draft{background:#d29922}.tl-tier.manual{background:#6e7681;color:#c9d1d9}.draft-hint{display:flex;gap:.6rem;align-items:center;justify-content:space-between;padding:.5rem .7rem;border-radius:6px;font-size:.78rem;line-height:1.45;margin-bottom:.4rem;border-left:3px solid}.draft-hint.auto{background:#0d2818;border-left-color:#2ea043}.draft-hint.draft{background:#2d2312;border-left-color:#d29922}.draft-hint.manual{background:#161b22;border-left-color:#6e7681}.draft-hint button{flex-shrink:0;background:#21262d;color:#c9d1d9;border:1px solid #30363d;border-radius:5px;padding:.25rem .6rem;cursor:pointer;font-size:.75rem}.access-page{max-width:44rem;margin:0 auto;padding:2rem 1.25rem}.access-page header{margin-bottom:1.5rem}.access-ok,.access-pending{text-align:center;padding:2.5rem 1.5rem;border:1px solid #30363d;border-radius:12px;display:flex;flex-direction:column;gap:.75rem;align-items:center}.access-ok{border-color:#2ea043;background:#0d2818}.access-pending{border-color:#d29922;background:#2d2312}.access-form{display:flex;flex-direction:column}.access-form label{margin:1.1rem 0 .4rem;font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:#8b949e}.access-form input,.access-form textarea{padding:.6rem .7rem;background:#0d1117;border:1px solid #30363d;border-radius:6px;color:inherit;font-family:inherit}.access-form .hint{font-size:.78rem;color:#6e7681;margin:.35rem 0 0;line-height:1.5}.access-form .btn-primary{margin-top:1.5rem;align-self:flex-start}.plan-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));gap:.6rem}.plan-card{display:flex;flex-direction:column;gap:.25rem;align-items:flex-start;text-align:left;padding:.9rem;border:1px solid #30363d;border-radius:8px;background:#0d1117;color:inherit;cursor:pointer}.plan-card.on{border-color:#58a6ff;background:#1f6feb1a}.plan-name{font-weight:700}.plan-days{font-size:.8rem;color:#58a6ff}.plan-blurb{font-size:.75rem;color:#8b949e;line-height:1.45}.access-banner{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}.tabs{display:flex;gap:.4rem;margin-bottom:1rem}.tabs button{padding:.4rem .9rem;background:#21262d;border:1px solid #30363d;border-radius:6px;color:#8b949e;cursor:pointer;font-size:.85rem}.tabs button.on{background:#1f6feb;border-color:#1f6feb;color:#fff}.ref{font-size:.78rem;background:#0d1117;padding:.15rem .4rem;border-radius:4px}.quote{color:#8b949e;font-style:italic}.tag-row{display:flex;gap:.5rem;align-items:center;margin-bottom:.75rem;flex-wrap:wrap}.practice-tag{background:#6e7681;color:#c9d1d9;font-size:.65rem;font-weight:700;letter-spacing:.06em;padding:.25rem .55rem;border-radius:4px}.pip.graded{box-shadow:inset 0 0 0 1px #2ea043}
