/**
 * 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: #1a1a1a;--bg-panel: #262626;--bg-terminal: #0d0d0d;--border: #3a3a3a;--text: #e8e8e8;--text-dim: #9a9a9a;--accent: #ffa116;--green: #2cbb5d;--red: #ef4743;--blue: #4a9eff;--mono: "Cascadia Code", "Consolas", "Menlo", monospace}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,Segoe UI,Roboto,sans-serif}.canary{padding:4rem;text-align:center}.canary h1{color:var(--accent)}.canary a{color:var(--blue)}.app-header{display:flex;align-items:center;gap:1.5rem;padding:.6rem 1.2rem;background:var(--bg-panel);border-bottom:1px solid var(--border)}.logo{font-weight:700;font-size:1.2rem;color:var(--text);text-decoration:none}.logo span{color:var(--accent)}.app-header nav{display:flex;gap:1rem;flex:1}.app-header nav a{color:var(--text-dim);text-decoration:none;position:relative;padding-bottom:2px}.app-header nav a:hover{color:var(--text)}.app-header nav a:after{content:"";position:absolute;left:0;bottom:-3px;height:2px;width:0;background:var(--accent);transition:width .2s ease}.app-header nav a.nav-active{color:var(--text)}.app-header nav a.nav-active:after{width:100%}.streak{font-weight:600}.problem-list{max-width:900px;margin:2rem auto;padding:0 1rem}.list-toolbar{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap;margin-bottom:1rem}.list-search{flex:1;min-width:180px;background:var(--bg-panel);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:.45rem .8rem}.list-toolbar select{background:var(--bg-panel);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:.45rem .6rem}.list-count{color:var(--text-dim);font-size:.85rem;white-space:nowrap}.list-empty{color:var(--text-dim);text-align:center;padding:2rem 0!important}.list-footer{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.6rem}.pager{display:flex;align-items:center;gap:.8rem;color:var(--text-dim);font-size:.9rem}.pager .btn{padding:.3rem .8rem}.load-error{color:var(--red);font-family:var(--mono);font-size:.85rem}.problem-list table{width:100%;border-collapse:collapse}.problem-list th{text-align:left;color:var(--text-dim);font-weight:500;padding:.5rem .8rem;border-bottom:1px solid var(--border)}.problem-list td{padding:.7rem .8rem;border-bottom:1px solid var(--border)}.problem-list tbody tr{transition:background .15s ease,transform .15s ease}.problem-list tr:hover td{background:var(--bg-panel)}.problem-list tbody tr:hover{transform:translate(3px)}@media (prefers-reduced-motion: reduce){.problem-list tbody tr,.problem-list tbody tr:hover{transition:none;transform:none}}.problem-list a{color:var(--text);text-decoration:none}.problem-list a:hover{color:var(--blue)}.status-cell{color:var(--green);font-weight:700;width:3rem}.legend{color:var(--text-dim);font-size:.85rem}.badge{display:inline-block;padding:.15rem .6rem;border-radius:999px;font-size:.75rem;font-weight:600}.badge-topic{background:#2d3748;color:var(--blue)}.badge-easy{background:#2cbb5d26;color:var(--green)}.badge-medium{background:#ffa11626;color:var(--accent)}.badge-hard{background:#ef474326;color:var(--red)}.narrator-badge{background:#ffa11614;color:var(--accent);cursor:help}.workspace{display:grid;grid-template-columns:minmax(320px,42%) 1fr;gap:0;height:calc(100vh - 49px);position:relative}.pane{overflow-y:auto;padding:1.2rem}.pane-left{border-right:1px solid var(--border)}.pane-right{display:flex;flex-direction:column;background:var(--bg-terminal)}@media (max-width: 860px){.workspace{grid-template-columns:1fr;height:auto}.pane-left{border-right:none;border-bottom:1px solid var(--border)}}.problem-header{display:flex;justify-content:space-between;align-items:start;gap:1rem}.problem-header h2{margin:0 0 .5rem}.badges{display:flex;gap:.4rem;flex-shrink:0}.story{line-height:1.6;color:var(--text)}.diagram{background:var(--bg-terminal);border:1px solid var(--border);border-radius:6px;padding:1rem;font-family:var(--mono);font-size:.8rem;line-height:1.35;overflow-x:auto;color:var(--text-dim)}.tasks li{margin:.4rem 0;line-height:1.5}.terminal-host{padding:.6rem;position:relative}.typing-fx-canvas{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:6}.typing-combo{position:absolute;top:8px;right:12px;z-index:7;pointer-events:none;font-family:var(--mono);font-weight:800;font-size:.85rem;color:var(--accent);opacity:0;transform:scale(.8);transition:opacity .12s,transform .12s;text-shadow:0 0 8px var(--accent)}.typing-combo.typing-combo-on{opacity:1;transform:scale(1)}@keyframes fx-shake{0%,to{transform:translate(0)}20%{transform:translate(-2px,1px)}40%{transform:translate(2px,-1px)}60%{transform:translate(-1px,-1px)}80%{transform:translate(1px,1px)}}.terminal-host.fx-shaking{animation:fx-shake .16s ease}.terminal-host.fx-scanlines:after,.terminal-host.fx-matrix-rain:after,.preview-term.fx-scanlines:after,.preview-term.fx-matrix-rain:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:5}.terminal-host.fx-scanlines:after,.preview-term.fx-scanlines:after{background:repeating-linear-gradient(to bottom,rgba(255,255,255,.05) 0 1px,transparent 1px 3px)}.terminal-host.fx-phosphor,.preview-term.fx-phosphor{filter:brightness(1.06) saturate(1.12)}.terminal-host.fx-phosphor:after,.preview-term.fx-phosphor:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:5;box-shadow:inset 0 0 40px #78ffa01f}@keyframes fx-rain{0%{background-position:0 -100%}to{background-position:0 100%}}.terminal-host.fx-matrix-rain:after,.preview-term.fx-matrix-rain:after{background:repeating-linear-gradient(90deg,transparent 0 22px,rgba(0,255,65,.05) 22px 24px),linear-gradient(rgba(0,255,65,.1),transparent 40%);background-size:100% 100%,100% 60%;animation:fx-rain 2.2s linear infinite;mix-blend-mode:screen}@media (prefers-reduced-motion: reduce){.terminal-host.fx-shaking{animation:none}.terminal-host.fx-matrix-rain:after,.preview-term.fx-matrix-rain:after{animation:none}}.device-tabs{display:flex;gap:.3rem;padding:.5rem .6rem 0}.device-tab{background:var(--bg-panel);color:var(--text-dim);border:1px solid var(--border);border-bottom:none;border-radius:6px 6px 0 0;padding:.35rem 1.1rem;cursor:pointer;font-family:var(--mono);font-size:.85rem}.device-tab-active{color:var(--accent);background:var(--bg-terminal);font-weight:600}.hosts-panel{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;padding:.5rem 1rem;border-top:1px solid var(--border)}.hosts-label{color:var(--text-dim);font-size:.85rem}.btn-ping{padding:.3rem .8rem;font-size:.82rem;border-color:var(--blue);color:var(--blue)}.ping-output{width:100%;margin:.4rem 0 0;padding:.5rem .8rem;background:var(--bg-terminal);border:1px solid var(--border);border-radius:6px;font-family:var(--mono);font-size:.78rem;color:var(--text-dim);white-space:pre-wrap}.answer-device{color:var(--accent);font-family:var(--mono);font-size:.85rem;margin-top:.5rem}.config-diff{margin-top:.9rem}.config-diff h4{margin:0 0 .4rem}.diff-line{font-family:var(--mono);font-size:.8rem;padding:.1rem .5rem;border-radius:4px}.diff-missing{color:var(--green);background:#2cbb5d14}.diff-extra{color:var(--accent);background:#ffa11614}.diff-legend{color:var(--text-dim);font-size:.78rem}.tracks{max-width:760px;margin:2rem auto;padding:0 1rem}.tracks-intro{color:var(--text-dim)}.track-card{background:var(--bg-panel);border:1px solid var(--border);border-radius:10px;padding:1rem 1.2rem;margin-bottom:.9rem}.track-done{border-color:#2cbb5d66}.track-head{display:flex;align-items:center;gap:1rem;cursor:pointer;margin-bottom:.6rem}.track-title-wrap{flex:1}.track-title{display:block;font-weight:700}.track-blurb{display:block;color:var(--text-dim);font-size:.85rem;margin-top:.2rem}.track-side{display:flex;align-items:center;gap:.8rem;flex-shrink:0}.track-count{color:var(--text-dim);font-size:.9rem}.track-continue{padding:.35rem .9rem;font-size:.85rem}.track-list{list-style:none;padding:.6rem 0 0;margin:.4rem 0 0;border-top:1px solid var(--border)}.track-list li{display:flex;align-items:center;gap:.6rem;padding:.35rem 0}.track-list a{color:var(--text);text-decoration:none;flex:1}.track-list a:hover{color:var(--blue)}.track-item-done a{color:var(--text-dim)}.exam-setup{max-width:560px;margin:3rem auto;padding:0 1rem;text-align:center}.exam-setup p{color:var(--text-dim);line-height:1.6}.exam-choices{display:flex;gap:1rem;justify-content:center;margin-top:1.5rem;flex-wrap:wrap}.exam-bar{display:flex;align-items:center;gap:1rem;padding:.5rem 1.2rem;background:var(--bg-panel);border-bottom:1px solid var(--border)}.exam-bar span:first-child{flex:1;color:var(--text-dim)}.exam-clock{font-family:var(--mono);font-weight:700;font-size:1.05rem}.exam-clock-low{color:var(--red)}.exam-workspace{height:calc(100vh - 94px)}.exam-report{max-width:640px;margin:2rem auto;padding:0 1rem}.exam-score{display:inline-flex;flex-direction:column;align-items:center;background:var(--bg-panel);border:1px solid var(--border);border-radius:10px;padding:1.2rem 2.4rem;margin:.5rem 0 1rem}.exam-row{display:flex;align-items:center;gap:.7rem;padding:.4rem 0;border-bottom:1px solid var(--border)}.exam-row a{color:var(--text);text-decoration:none;flex:1}.exam-row a:hover{color:var(--blue)}.exam-actions{display:flex;gap:.8rem;margin-top:1.4rem}.career-title{color:var(--accent);font-size:.8rem;font-weight:600;border:1px solid rgba(255,161,22,.35);border-radius:999px;padding:.15rem .7rem;white-space:nowrap}.exam-days{color:var(--text-dim);font-family:var(--mono);font-size:.8rem;border:1px solid var(--border);border-radius:999px;padding:.15rem .6rem}.exam-days-close{color:var(--red);border-color:#ef474380}.verdict-impact{color:var(--text);margin-bottom:.5rem;display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}.xp-chip{background:#ffa11626;color:var(--accent);font-weight:700;font-size:.8rem;border-radius:999px;padding:.15rem .7rem}.promo-banner{background:#ffa1161f;border:1px solid var(--accent);color:var(--accent);border-radius:8px;padding:.5rem .9rem;font-weight:700;margin-bottom:.6rem}.verdict-sub{color:var(--text-dim);font-size:.85rem;margin-bottom:.6rem}.comeback{margin:0 1rem 1rem;padding:.7rem 1rem;border-radius:8px;background:#4a9eff12;border:1px solid rgba(74,158,255,.3);font-size:.9rem;line-height:1.5}.comeback a{color:var(--blue)}.purpose-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b8;z-index:100;display:flex;align-items:center;justify-content:center;padding:1rem}.purpose-card{background:var(--bg-panel);border:1px solid var(--border);border-radius:12px;padding:1.6rem;max-width:460px;width:100%}.purpose-card h2{margin:0 0 .3rem}.purpose-sub{color:var(--text-dim);font-size:.9rem}.purpose-goals{display:flex;flex-direction:column;gap:.5rem;margin:1rem 0}.purpose-goal{text-align:left;background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:.7rem 1rem;cursor:pointer;color:var(--text)}.purpose-goal-active{border-color:var(--accent);background:#ffa11612}.purpose-goal-label{display:block;font-weight:600}.purpose-goal-hint{display:block;color:var(--text-dim);font-size:.8rem}.purpose-date{display:block;color:var(--text-dim);font-size:.85rem;margin-bottom:1rem}.purpose-date input{display:block;margin-top:.4rem;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:.4rem .7rem}.purpose-actions{display:flex;align-items:center;gap:1rem}.career-card{background:var(--bg-panel);border:1px solid var(--border);border-radius:10px;padding:1rem 1.3rem;margin-bottom:1.2rem}.career-rank{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:.5rem}.career-rank-title{font-weight:700;font-size:1.1rem;color:var(--accent)}.career-xp{color:var(--text-dim);font-family:var(--mono)}.career-next{color:var(--text-dim);font-size:.8rem;margin-top:.3rem}.career-exam{margin-top:.7rem;color:var(--text);font-size:.9rem}.btn-icon-plain{background:none;border:none;cursor:pointer;font-size:1rem;padding:.2rem}.boss-banner{grid-column:1 / -1;background:#ef47431a;border-bottom:1px solid var(--red);color:var(--red);padding:.45rem 1.2rem;font-weight:700;font-size:.9rem}.workspace-boss,.workspace-saboteur{grid-template-rows:auto 1fr}.boss-mark{color:var(--red)}.narrator-tag{font-size:.75rem;color:var(--text-dim);margin-left:.5rem;opacity:.8;font-weight:400}.saboteur-banner{grid-column:1 / -1;background:#ffa1161f;border-bottom:1px solid var(--accent);color:var(--accent);padding:.45rem 1.2rem;font-weight:700;font-size:.9rem}.verdict-golden{border-color:var(--accent);box-shadow:0 0 22px #ffa11640}.golden-banner{background:linear-gradient(90deg,#ffa1162e,#ffd7001f);border:1px solid var(--accent);color:var(--accent);border-radius:8px;padding:.5rem .9rem;font-weight:700;margin-bottom:.6rem}.toast-stack{position:fixed;right:1rem;bottom:1rem;z-index:60;display:flex;flex-direction:column;gap:.5rem}@keyframes toast-in{0%{opacity:0;transform:translate(30px)}to{opacity:1;transform:none}}.achievement-toast{display:flex;align-items:center;gap:.7rem;cursor:pointer;background:var(--bg-panel);border:1px solid var(--accent);border-radius:10px;padding:.7rem 1rem;animation:toast-in .3s ease-out;box-shadow:0 6px 24px #00000080}@media (prefers-reduced-motion: reduce){.achievement-toast{animation:none}}.achievement-toast .achievement-icon{font-size:1.5rem}.achievement-toast strong{display:block}.achievement-toast .achievement-desc{color:var(--text-dim);font-size:.8rem;display:block}.achievement-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.6rem;margin-bottom:1.5rem}.achievement{background:var(--bg-panel);border:1px solid var(--border);border-radius:10px;padding:.8rem;text-align:center;opacity:.45}.achievement-earned{opacity:1;border-color:#ffa11666}.achievement .achievement-icon{display:block;font-size:1.6rem;margin-bottom:.3rem}.achievement-name{display:block;font-weight:600;font-size:.85rem}.achievement .achievement-desc{display:block;color:var(--text-dim);font-size:.72rem;margin-top:.2rem}.mirror-card{background:#4a9eff0f;border:1px solid rgba(74,158,255,.3);border-radius:10px;padding:1rem 1.3rem;margin:1.2rem 0;line-height:1.6}.mirror-card h3{margin-top:0}.mirror-week{color:var(--text-dim);font-size:.9rem;margin-bottom:0}.breakroom h2{margin-bottom:.3rem}.breakroom-presets{display:flex;flex-direction:column;gap:.5rem;margin:.8rem 0}.pb-chip{color:var(--blue);font-family:var(--mono);font-size:.8rem;border:1px solid rgba(74,158,255,.35);border-radius:999px;padding:.15rem .7rem;align-self:center}.verified-chip{background:#4a9eff1f;color:var(--blue);font-weight:600;font-size:.8rem;border-radius:999px;padding:.15rem .7rem}.tilt-guard{margin:0 1rem 1rem;padding:.8rem 1.1rem;border-radius:8px;background:#e8e8e80d;border:1px solid var(--border);font-size:.9rem;line-height:1.6;color:var(--text-dim)}.tilt-guard a{color:var(--blue)}.weekly-banner{display:flex;align-items:center;gap:.8rem;flex-wrap:wrap;padding:.7rem 1rem;margin-bottom:.6rem;background:#ef47430f;border:1px solid rgba(239,71,67,.35);border-radius:8px}.weekly-banner .daily-title{color:var(--text);font-weight:600;text-decoration:none}.weekly-banner .daily-title:hover{color:var(--red)}.taper-card{background:#2cbb5d0d;border:1px solid rgba(44,187,93,.3);border-radius:10px;padding:1.2rem 1.5rem;margin-bottom:1.2rem;line-height:1.7}.taper-card h2{margin-top:0}.taper-stats{font-size:1.05rem}.taper-card a{color:var(--blue)}.purpose-letter{display:block;width:100%;margin-top:.4rem;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:.5rem .7rem;font-family:inherit;font-size:.9rem;resize:vertical}.letter-card{border-color:var(--accent)}.letter-body{font-size:1.15rem;line-height:1.6;font-style:italic}.resume-card{background:var(--bg-panel);border:1px solid var(--border);border-radius:10px;padding:1rem 1.3rem;margin:1.2rem 0}.resume-head{display:flex;justify-content:space-between;align-items:center}.resume-head h3{margin:0}.resume-pre{background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:.8rem 1rem;font-size:.85rem;line-height:1.7;white-space:pre-wrap;font-family:inherit}.nav-pro{color:var(--accent)!important;font-weight:600}.row-locked a{color:var(--text-dim)}.lock-mark{opacity:.8}.narrator-tag{color:var(--text-dim);font-size:.78rem;margin-left:.5rem}.pro-page{max-width:860px;margin:2rem auto;padding:0 1rem}.pro-lede{color:var(--text-dim);line-height:1.6;max-width:640px}.pro-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:1rem;margin:1.5rem 0}.pro-card{background:var(--bg-panel);border:1px solid var(--border);border-radius:12px;padding:1.2rem;display:flex;flex-direction:column;position:relative}.pro-card-featured{border-color:var(--accent);box-shadow:0 0 24px #ffa1161f}.pro-badge{position:absolute;top:-10px;right:14px;background:var(--accent);color:#1a1a1a;font-size:.7rem;font-weight:700;border-radius:999px;padding:.15rem .7rem}.pro-card h3{margin:0 0 .3rem}.pro-price{font-size:1.7rem;font-weight:700;margin-bottom:.7rem}.pro-price span{font-size:.85rem;font-weight:400;color:var(--text-dim)}.pro-card ul{list-style:none;padding:0;margin:0 0 1rem;flex:1}.pro-card li{padding:.25rem 0;font-size:.9rem}.pro-buy{width:100%}.pro-note{color:var(--text-dim);font-size:.78rem;margin-top:.6rem;text-align:center}.pro-guarantee{background:#2cbb5d0f;border:1px solid rgba(44,187,93,.3);border-radius:8px;padding:.8rem 1.1rem;font-size:.9rem;line-height:1.6;margin-bottom:1rem}.pro-candor{background:var(--bg-panel);border:1px solid var(--border);border-radius:8px;padding:.9rem 1.2rem;margin-bottom:1.2rem}.pro-candor h3{margin-top:0}.pro-candor p{color:var(--text-dim);line-height:1.65;margin-bottom:0}.pro-code{display:flex;gap:.5rem;align-items:center}.pro-code input{background:var(--bg-panel);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:.45rem .8rem}.pro-code-msg{color:var(--text-dim);font-size:.85rem}.tutor-quota{display:flex;flex-direction:column;gap:.4rem}.tutor-blur{filter:blur(5px);-webkit-user-select:none;user-select:none;pointer-events:none}.tutor-quota-note{font-size:.85rem;color:var(--text-dim)}.tutor-quota-note a{color:var(--accent)}.exam-quota-note{margin-top:1.2rem;color:var(--text-dim);line-height:1.6}.exam-quota-note a{color:var(--accent)}.landing{max-width:1020px;margin:0 auto;padding:0 1.2rem 3rem}.landing-hero{text-align:center;padding:3rem 0 1rem}.landing-hero h1{font-size:2.6rem;line-height:1.15;margin-bottom:.8rem}.landing-hero h1 span{color:var(--accent)}.landing-sub{color:var(--text-dim);font-size:1.1rem;line-height:1.6;max-width:640px;margin:0 auto 1.4rem}.landing-ctas{margin-bottom:2rem}.landing-cta{font-size:1.05rem;padding:.7rem 1.8rem}.landing-cta-sub{display:block;color:var(--text-dim);font-size:.82rem;margin-top:.5rem}.landing-demo{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:1rem;text-align:left;background:var(--bg-panel);border:1px solid var(--border);border-radius:12px;padding:1rem}@media (max-width: 860px){.landing-demo{grid-template-columns:1fr}}.landing-demo .terminal-host{padding:0}.landing-demo-hint{color:var(--text-dim);font-size:.8rem;margin-top:.5rem;line-height:1.6}.landing-demo-hint code{color:var(--accent);font-family:var(--mono)}.landing-demo-checks{margin-top:.6rem}.landing-demo-accepted{color:var(--green);font-weight:700;margin-top:.5rem}.landing-features{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1rem;margin:2.5rem 0}.landing-feature{background:var(--bg-panel);border:1px solid var(--border);border-radius:10px;padding:1.1rem 1.3rem}.landing-feature h3{margin:0 0 .4rem;font-size:1rem}.landing-feature p{color:var(--text-dim);font-size:.9rem;line-height:1.6;margin:0}.landing-candor{max-width:720px;margin:0 auto}.landing-bottom{text-align:center;padding:2.5rem 0 1rem}.account-row{display:flex;align-items:center;gap:.6rem;margin:.6rem 0;flex-wrap:wrap}.account-label{color:var(--text-dim);font-size:.85rem;min-width:7.5rem}.account-code{font-family:var(--mono);font-size:.8rem;background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:.3rem .6rem}.account-row input{flex:1;min-width:200px;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:.4rem .7rem}.auth-input{display:block;width:100%;margin-bottom:.6rem;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:.5rem .8rem}.auth-submit{width:100%;margin-top:.3rem}.auth-links{display:flex;gap:1rem;justify-content:center;margin-top:.9rem}.account-btn{font-size:1.1rem;text-decoration:none}.profile-page{max-width:640px}.profile-actions{display:flex;gap:.8rem;margin:1.2rem 0 .5rem;flex-wrap:wrap}.locker{max-width:860px;margin:2rem auto;padding:0 1rem}.locker-section{margin:1.6rem 0}.locker-section-head{display:flex;align-items:baseline;justify-content:space-between}.locker-section-head h3{margin:0}.locker-blurb{margin:.2rem 0 .8rem}.skin-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.7rem}.skin-card{position:relative;text-align:left;cursor:pointer;background:var(--bg-panel);border:1px solid var(--border);border-radius:10px;padding:.6rem;color:var(--text);transition:border-color .15s,transform .12s}.skin-card:hover{transform:translateY(-2px);border-color:var(--accent)}.skin-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.skin-locked{opacity:.62}.skin-equipped{border-color:var(--green)}.preview-term{position:relative;overflow:hidden;border-radius:6px;margin-bottom:.5rem;min-height:3rem;padding:.55rem .65rem;font-family:var(--mono);font-size:.78rem;line-height:1.5}.preview-line{white-space:pre-wrap;word-break:break-word;position:relative;z-index:2}.preview-cursor{display:inline-block;z-index:3;width:7px;height:.95em;border-radius:1px;margin-left:1px;vertical-align:text-bottom;opacity:.9;animation:preview-blink 1s steps(1) infinite}@keyframes preview-blink{50%{opacity:.15}}.preview-fx{position:absolute;top:0;right:0;bottom:0;left:0;z-index:4;pointer-events:none}.skin-card:hover .preview-term,.skin-card:focus-visible .preview-term{box-shadow:0 0 0 1px var(--accent) inset}.skin-lock-veil{position:absolute;top:.9rem;right:.9rem;z-index:5;font-size:1rem;filter:drop-shadow(0 1px 2px rgba(0,0,0,.6))}.skin-name{font-weight:600;font-size:.9rem}.skin-blurb{color:var(--text-dim);font-size:.78rem;margin-top:.2rem;line-height:1.4}.skin-hint{color:var(--text-dim);font-size:.66rem;margin-top:.35rem;opacity:0;transition:opacity .15s;font-family:var(--mono)}.skin-card:hover .skin-hint,.skin-card:focus-visible .skin-hint{opacity:.75}.skin-badge{position:absolute;top:8px;right:8px;background:var(--green);color:#06210f;font-size:.65rem;font-weight:700;border-radius:999px;padding:.1rem .5rem;z-index:6}.locker-tip{color:var(--accent);font-size:.82rem}@media (prefers-reduced-motion: reduce){.preview-cursor{animation:none}}.account-btn-signin{padding:.35rem .9rem;font-size:.85rem}.workspace-actions{display:flex;gap:.6rem;padding:.6rem 1rem;border-top:1px solid var(--border)}.btn{background:var(--bg-panel);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:.5rem 1.2rem;cursor:pointer;font-size:.9rem}.btn:hover{border-color:var(--text-dim)}.btn-primary{background:var(--green);border-color:var(--green);color:#fff;font-weight:600}.btn-primary:hover{filter:brightness(1.1)}.btn-ai{border-color:var(--blue);color:var(--blue)}.btn-danger{background:var(--red);border-color:var(--red);color:#fff}.btn-danger-outline{border-color:var(--red);color:var(--red)}.btn-icon{padding:.2rem .6rem}.btn-link{background:none;border:none;color:var(--blue);cursor:pointer;text-decoration:underline;padding:0}.btn:disabled{opacity:.5;cursor:default}.btn{transition:transform .12s ease,border-color .15s ease,filter .15s ease}.btn:hover:not(:disabled){transform:translateY(-1px)}.btn:active:not(:disabled){transform:translateY(0) scale(.96)}@media (prefers-reduced-motion: reduce){.btn,.btn:hover,.btn:active{transition:none;transform:none}}.confetti{position:absolute;top:20px;left:50%;width:8px;height:8px;border-radius:2px;pointer-events:none;z-index:5}.verdict{margin:0 1rem 1rem;border-radius:8px;padding:1rem}.verdict-accepted{background:#2cbb5d1a;border:1px solid var(--green)}.verdict-failed{background:#ef474314;border:1px solid var(--red)}.verdict-title{font-size:1.15rem;font-weight:700;margin-bottom:.6rem}.verdict-accepted .verdict-title{color:var(--green)}.verdict-failed .verdict-title{color:var(--red)}.check{padding:.25rem 0;font-size:.9rem}.check-pass{color:var(--green)}.check-fail{color:var(--red)}.check-detail{color:var(--text-dim);padding-left:1.2rem;font-size:.82rem}.check-detail code{font-family:var(--mono);color:var(--text)}.check-teach{margin-top:.3rem;padding:.4rem .6rem;border-left:2px solid var(--accent);background:#ffa1160f;color:var(--text-dim);font-size:.8rem;line-height:1.45}.verdict .btn{margin-top:.8rem}.hints-answer{margin-top:1.5rem;border-top:1px solid var(--border);padding-top:1rem}.hints-actions{display:flex;gap:.6rem;flex-wrap:wrap;margin:.6rem 0}.hint{background:#ffa11614;border:1px solid rgba(255,161,22,.3);border-radius:6px;padding:.6rem .9rem;margin:.5rem 0;font-size:.9rem;line-height:1.5}.answer{margin-top:.8rem}.answer pre{background:var(--bg-terminal);border:1px solid var(--border);border-radius:6px;padding:.8rem;font-family:var(--mono);font-size:.85rem}.answer-why{color:var(--text-dim);font-size:.9rem;line-height:1.5}.tutor-drawer{position:absolute;left:0;top:0;bottom:0;width:minmax(320px,42%);width:42%;min-width:320px;background:var(--bg-panel);border-right:1px solid var(--border);display:flex;flex-direction:column;z-index:10;box-shadow:4px 0 24px #00000080}.tutor-header{display:flex;justify-content:space-between;align-items:center;padding:.8rem 1rem;border-bottom:1px solid var(--border);font-weight:600}.tutor-context-note{padding:.5rem 1rem;font-size:.78rem;color:var(--text-dim);border-bottom:1px solid var(--border);background:#4a9eff0f}.tutor-messages{flex:1;overflow-y:auto;padding:1rem;display:flex;flex-direction:column;gap:.6rem}.tutor-empty{color:var(--text-dim);font-size:.9rem}@keyframes msg-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.msg{padding:.6rem .9rem;border-radius:8px;font-size:.9rem;line-height:1.5;white-space:pre-wrap;animation:msg-in .25s ease-out}@media (prefers-reduced-motion: reduce){.msg{animation:none}}.msg-user{background:#2d3748;align-self:flex-end;max-width:85%}.msg-assistant{background:var(--bg);border:1px solid var(--border);max-width:95%}.msg-error{color:var(--red);font-size:.85rem}.tutor-input{display:flex;gap:.5rem;padding:.8rem;border-top:1px solid var(--border)}.tutor-input input{flex:1;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:.5rem .8rem}.stats{max-width:700px;margin:2rem auto;padding:0 1rem}.stat-cards{display:flex;gap:1rem}.stat-card{background:var(--bg-panel);border:1px solid var(--border);border-radius:8px;padding:1.2rem 2rem;text-align:center}.stat-number{font-size:2rem;font-weight:700;color:var(--accent)}.stat-label{color:var(--text-dim);font-size:.85rem}.topic-stats{list-style:none;padding:0;max-width:460px}.topic-stats li{padding:.5rem 0}.topic-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:.3rem}.topic-count{color:var(--text-dim);font-size:.85rem}.topic-bar{height:6px;background:var(--bg-panel);border-radius:999px;overflow:hidden}.topic-bar-fill{height:100%;background:linear-gradient(90deg,var(--green),var(--accent));border-radius:999px}.daily-banner{display:flex;align-items:center;gap:.8rem;flex-wrap:wrap;padding:.7rem 1rem;margin-bottom:1rem;background:#ffa11612;border:1px solid rgba(255,161,22,.35);border-radius:8px}.daily-banner.daily-done{background:#2cbb5d12;border-color:#2cbb5d59}@keyframes daily-glow{0%,to{box-shadow:0 0 #ffa11600}50%{box-shadow:0 0 14px #ffa11640}}.daily-banner:not(.daily-done){animation:daily-glow 3s ease-in-out infinite}@media (prefers-reduced-motion: reduce){.daily-banner{animation:none}}.daily-label{font-weight:600}.daily-title{color:var(--text);font-weight:600;text-decoration:none}.daily-title:hover{color:var(--accent)}.daily-status{margin-left:auto;color:var(--text-dim);font-size:.85rem}.weak-spots{list-style:none;padding:0}.weak-spots li{padding:.45rem 0;border-bottom:1px solid var(--border)}.weak-spots a{color:var(--text);text-decoration:none}.weak-spots a:hover{color:var(--blue)}.weak-why{display:block;color:var(--text-dim);font-size:.8rem}.discuss{margin-top:1.5rem;border-top:1px solid var(--border);padding-top:1rem}.discuss-toggle{font-size:.85rem}.discuss-body{margin-top:.8rem}.discuss-dim{color:var(--text-dim);font-size:.85rem}.discuss-post{padding:.5rem 0;border-bottom:1px solid var(--border)}.discuss-author{font-weight:600;font-size:.85rem;margin-right:.6rem}.discuss-date{color:var(--text-dim);font-size:.75rem}.discuss-text{margin-top:.2rem;font-size:.9rem;line-height:1.5;white-space:pre-wrap}.discuss-form{display:flex;flex-direction:column;gap:.5rem;margin-top:.8rem}.discuss-form input,.discuss-form textarea{background:var(--bg-panel);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:.45rem .7rem;font-family:inherit;font-size:.9rem}.discuss-nick{max-width:200px}.discuss-form .btn{align-self:flex-end}.acceptance-cell{color:var(--text-dim)}@keyframes shimmer{0%{background-position:-400px 0}to{background-position:400px 0}}.skeleton{background:linear-gradient(90deg,var(--bg-panel) 25%,#303030 50%,var(--bg-panel) 75%);background-size:800px 100%;animation:shimmer 1.4s linear infinite;border-radius:6px}@media (prefers-reduced-motion: reduce){.skeleton{animation:none}}.skeleton-title{height:28px;width:60%;margin-bottom:1rem}.skeleton-line{height:14px;width:95%;margin-bottom:.6rem}.skeleton-line.short{width:70%}.skeleton-block{height:140px;width:100%;margin-top:1rem}.skeleton-terminal{height:380px;margin:.6rem}.verdict{position:relative;overflow:visible}.topo-svg{width:100%;height:auto;display:block;background:var(--bg-terminal);border:1px solid var(--border);border-radius:8px;margin:.6rem 0}.topo-device{fill:var(--bg-panel);stroke:var(--border);stroke-width:1.5}.topo-device-name{fill:var(--text);font:600 14px var(--mono)}.topo-device-sub{fill:var(--text-dim);font:10px var(--mono)}.topo-host{fill:var(--bg-panel);stroke:var(--border)}.topo-host-icon{font-size:13px}.topo-host-name{fill:var(--text);font:11px var(--mono)}.topo-port,.topo-vlans{fill:var(--text-dim);font:9px var(--mono)}.topo-trunk-badge{fill:#2cbb5d26;stroke:var(--green);stroke-width:1}.topo-trunk-text{fill:var(--green);font:700 9px var(--mono)}.topo-packet{pointer-events:none}.legal{max-width:760px;margin:2rem auto 4rem;padding:0 1.2rem;line-height:1.65}.legal h2{margin-bottom:.2rem}.legal h3{margin:1.6rem 0 .4rem;font-size:1.05rem}.legal p,.legal li{color:var(--text)}.legal ul{padding-left:1.2rem}.legal li{margin:.3rem 0}.legal code{background:var(--bg-panel);padding:0 .25rem;border-radius:3px;font-family:var(--mono);font-size:.85em}.legal a{color:var(--accent)}.legal-updated{color:var(--text-dim);font-size:.85rem;margin-top:0}.legal-foot{margin-top:2rem;padding-top:1rem;border-top:1px solid var(--border);color:var(--text-dim);font-size:.85rem}.app-footer{display:flex;flex-wrap:wrap;gap:1.1rem;justify-content:center;align-items:center;padding:1.4rem 1rem;margin-top:2rem;border-top:1px solid var(--border);color:var(--text-dim);font-size:.82rem}.app-footer a{color:var(--text-dim);text-decoration:none}.app-footer a:hover{color:var(--accent)}.auth-legal{color:var(--text-dim);font-size:.75rem;text-align:center;margin:.6rem 0 0}.auth-legal a{color:var(--accent)}.danger-zone{border-color:#ef474366}.danger-zone h3{color:var(--red)}
