code[class*=language-],pre[class*=language-]{color:#ccc;background:none;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#2d2d2d}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.comment,.token.block-comment,.token.prolog,.token.doctype,.token.cdata{color:#999}.token.punctuation{color:#ccc}.token.tag,.token.attr-name,.token.namespace,.token.deleted{color:#e2777a}.token.function-name{color:#6196cc}.token.boolean,.token.number,.token.function{color:#f08d49}.token.property,.token.class-name,.token.constant,.token.symbol{color:#f8c555}.token.selector,.token.important,.token.atrule,.token.keyword,.token.builtin{color:#cc99cd}.token.string,.token.char,.token.attr-value,.token.regex,.token.variable{color:#7ec699}.token.operator,.token.entity,.token.url{color:#67cdcc}.token.important,.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.token.inserted{color:green}:root{--bg: #07090f;--surface: #0d1120;--surface2: #131827;--border: #1e2a40;--accent: #00e5a0;--accent2: #3d9bff;--accent3: #ff5f7e;--gold: #f5c842;--purple: #a163ff;--text: #e2e8f0;--muted: #5a7090;--mono: "Space Mono", monospace;--sans: "DM Sans", sans-serif;--radius: 12px;--radius-sm: 8px;--radius-lg: 16px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;scroll-behavior:smooth}body{background:var(--bg);color:var(--text);font-family:var(--sans);min-height:100vh;width:100%;-webkit-font-smoothing:antialiased}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(rgba(0,229,160,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(0,229,160,.025) 1px,transparent 1px);background-size:40px 40px;pointer-events:none;z-index:0}#root{position:relative;z-index:1;width:100%;min-height:100vh}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--surface)}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--muted)}h1,h2,h3,h4{line-height:1.2}a{color:inherit;text-decoration:none}button{cursor:pointer;font-family:var(--sans)}input,select,textarea{font-family:var(--sans)}code,.mono{font-family:var(--mono)}@keyframes fadeUp{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.8)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.fade-up{animation:fadeUp .5s ease both}.fade-in{animation:fadeIn .3s ease both}.skeleton{background:linear-gradient(90deg,var(--surface) 25%,var(--surface2) 50%,var(--surface) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:var(--radius-sm)}.toast-container{position:fixed;bottom:24px;right:24px;display:flex;flex-direction:column;gap:10px;z-index:9999}.toast{padding:12px 18px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface2);font-size:14px;min-width:280px;animation:fadeUp .3s ease;display:flex;align-items:center;gap:10px}.toast.success{border-color:#00e5a066}.toast.error{border-color:#ff5f7e66}.toast.info{border-color:#3d9bff66}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#07090fd9;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:500;display:flex;align-items:center;justify-content:center;padding:24px;animation:fadeIn .2s ease}.modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:28px;width:100%;max-width:520px;max-height:90vh;overflow-y:auto;animation:fadeUp .25s ease}.modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.modal-header h2{font-size:20px;font-weight:600}.modal-close{width:32px;height:32px;border-radius:8px;background:transparent;border:1px solid var(--border);color:var(--muted);font-size:18px;line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .15s}.modal-close:hover{border-color:var(--accent3);color:var(--accent3)}.form-group{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.form-label{font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;font-family:var(--mono)}.form-input,.form-select,.form-textarea{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 14px;font-size:15px;color:var(--text);outline:none;transition:border-color .15s;width:100%}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--accent)}.form-input::placeholder,.form-textarea::placeholder{color:var(--muted)}.form-textarea{resize:vertical;min-height:80px}.form-select option{background:var(--surface2)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-error{font-size:12px;color:var(--accent3);margin-top:4px}.btn{display:inline-flex;align-items:center;gap:8px;padding:10px 20px;border-radius:var(--radius-sm);font-size:15px;font-weight:600;border:none;transition:all .15s;white-space:nowrap}.btn-primary{background:var(--accent);color:#07090f}.btn-primary:hover{background:#00ffb0;transform:translateY(-1px);box-shadow:0 6px 20px #00e5a040}.btn-secondary{background:var(--surface2);border:1px solid var(--border);color:var(--text)}.btn-secondary:hover{border-color:var(--muted)}.btn-danger{background:#ff5f7e1a;border:1px solid rgba(255,95,126,.3);color:var(--accent3)}.btn-danger:hover{background:#ff5f7e33}.btn-ghost{background:transparent;border:1px solid var(--border);color:var(--text)}.btn-ghost:hover{border-color:var(--accent);color:var(--accent)}.btn-sm{padding:8px 16px;font-size:14px}.btn-xs{padding:5px 11px;font-size:12px}.btn:disabled{opacity:.4;pointer-events:none}.btn-loading{pointer-events:none;opacity:.7}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden}.card-body{padding:20px}.card-header{padding:16px 20px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}.card-header h3{font-size:16px;font-weight:600}.badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:100px;font-size:11px;font-weight:700;font-family:var(--mono);letter-spacing:.05em}.badge-easy{background:#00e5a01a;color:var(--accent)}.badge-medium{background:#f5c8421a;color:var(--gold)}.badge-hard{background:#ff5f7e1a;color:var(--accent3)}.badge-expert{background:#a163ff1a;color:var(--purple)}.badge-admin{background:#ff5f7e1a;color:var(--accent3)}.badge-teacher{background:#3d9bff1a;color:var(--accent2)}.badge-student{background:#00e5a01a;color:var(--accent)}.badge-docker{background:#3d9bff1a;color:var(--accent2)}.badge-public{background:#00e5a014;color:var(--accent);border:1px solid rgba(0,229,160,.2)}.badge-private{background:#5a70901a;color:var(--muted);border:1px solid var(--border)}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:14px}th{text-align:left;font-size:11px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;font-family:var(--mono);padding:11px 16px;border-bottom:1px solid var(--border);white-space:nowrap}td{padding:13px 16px;border-bottom:1px solid rgba(30,42,64,.4)}tr:last-child td{border-bottom:none}tbody tr:hover td{background:#ffffff04}.filter-bar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:20px}.chip{padding:7px 16px;border-radius:100px;font-size:13px;font-weight:500;border:1px solid var(--border);background:transparent;color:var(--muted);cursor:pointer;transition:all .15s;white-space:nowrap}.chip:hover{border-color:var(--muted);color:var(--text)}.chip.active{border-color:var(--accent);color:var(--accent);background:#00e5a014}.search-wrap{display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px 14px;margin-left:auto}.search-wrap input{background:none;border:none;outline:none;color:var(--text);font-size:14px;width:200px}.search-wrap input::placeholder{color:var(--muted)}.progress-bar-wrap{background:var(--border);border-radius:100px;height:6px;overflow:hidden}.progress-bar{height:100%;border-radius:100px;transition:width .5s ease}.spinner{width:20px;height:20px;border-radius:50%;border:2px solid var(--border);border-top-color:var(--accent);animation:spin .7s linear infinite;display:inline-block}.spinner-lg{width:36px;height:36px;border-width:3px}.empty-state{text-align:center;padding:60px 24px;color:var(--muted)}.empty-state .empty-icon{font-size:40px;margin-bottom:12px}.empty-state p{font-size:15px;margin-top:6px}.docker-box{background:#3d9bff0d;border:1px solid rgba(61,155,255,.2);border-radius:var(--radius);padding:18px 20px}.docker-box-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.docker-box-title{font-size:13px;font-weight:600;color:var(--accent2);display:flex;align-items:center;gap:8px}.status-dot{width:7px;height:7px;border-radius:50%;display:inline-block}.status-dot.running{background:var(--accent);animation:pulse 1.5s ease infinite}.status-dot.stopped{background:var(--muted)}.status-dot.expired{background:var(--accent3)}.level-badge{width:52px;height:52px;border-radius:12px;flex-shrink:0;background:linear-gradient(135deg,#0d1120,#1a2540);border:2px solid var(--gold);display:flex;flex-direction:column;align-items:center;justify-content:center}.level-badge .lv{font-family:var(--mono);font-size:10px;color:var(--gold);letter-spacing:.1em}.level-badge .num{font-family:var(--mono);font-size:24px;font-weight:700;color:var(--gold);line-height:1.1}.page{padding:32px 48px;width:100%;box-sizing:border-box}.page-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:28px;gap:12px}.page-header h1{font-size:26px;font-weight:700}.page-header p{font-size:15px;color:var(--muted);margin-top:4px}.section-title{font-size:16px;font-weight:600;margin-bottom:14px;display:flex;align-items:center;justify-content:space-between}.section-title a{font-size:12px;color:var(--accent);cursor:pointer}@media (max-width: 900px){.page{padding:20px 24px}.form-row{grid-template-columns:1fr}}@keyframes confettiFall{0%{transform:translateY(0) rotate(0);opacity:1}to{transform:translateY(300px) rotate(680deg);opacity:0}}.cosmetic-card{transition:transform .15s,box-shadow .15s,border-color .15s}.cosmetic-card:not(.locked):hover{transform:translateY(-3px) scale(1.03);box-shadow:0 6px 18px #00000059}
