/**
 * 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,.xterm .xterm-message{position:absolute;left:0;top:0;bottom:0;right:0;z-index:10;color:transparent;pointer-events:none}.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: #0f1410;--bg-elevated: #1a221c;--bg-panel: #151c17;--border: #2a3a2e;--text: #e8efe9;--muted: #8fa094;--accent: #5a9e46;--accent-dim: #3d6e30;--danger: #c45c4a;--warn: #c9a227;--ok: #5a9e46;--starting: #c9a227;--offline: #6b7a6e;--font: "Space Grotesk", system-ui, sans-serif;--mono: "JetBrains Mono", ui-monospace, monospace}*,*:before,*:after{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}body{font-family:var(--font);background:radial-gradient(ellipse 80% 50% at 20% -10%,#1e3a22 0%,transparent 55%),radial-gradient(ellipse 60% 40% at 90% 10%,#243028 0%,transparent 50%),var(--bg);color:var(--text);line-height:1.45}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer;border:1px solid var(--border);background:var(--bg-elevated);border-radius:6px;padding:.45rem .85rem;transition:background .15s,border-color .15s,transform .1s}button:hover:not(:disabled){border-color:var(--accent);background:#1f2a22}button:active:not(:disabled){transform:scale(.98)}button:disabled{opacity:.45;cursor:not-allowed}button.primary{background:var(--accent-dim);border-color:var(--accent)}button.danger{border-color:var(--danger);color:#f0c4bc}button.ghost{background:transparent}input,textarea,select{background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:.5rem .7rem;width:100%}input:focus,textarea:focus{outline:1px solid var(--accent);border-color:var(--accent)}.app{max-width:1100px;margin:0 auto;padding:1.25rem 1.25rem 2.5rem;display:flex;flex-direction:column;gap:1rem;min-height:100vh}.topbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 1.15rem;background:linear-gradient(135deg,var(--bg-elevated),var(--bg-panel));border:1px solid var(--border);border-radius:12px;animation:fadeUp .45s ease both}.brand{display:flex;flex-direction:column;gap:.2rem}.brand h1{margin:0;font-size:1.45rem;font-weight:700;letter-spacing:-.02em}.brand .sub{color:var(--muted);font-size:.85rem}.status-row{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.badge{display:inline-flex;align-items:center;gap:.4rem;padding:.3rem .65rem;border-radius:999px;font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;border:1px solid transparent}.badge:before{content:"";width:.45rem;height:.45rem;border-radius:50%;background:currentColor;animation:pulse 1.6s ease infinite}.badge.running{color:#b8e6a8;background:#5a9e4626;border-color:#5a9e4659}.badge.offline,.badge.stopped{color:#a8b5ac;background:#6b7a6e33;border-color:#6b7a6e66}.badge.starting,.badge.stopping{color:#f0d978;background:#c9a22726;border-color:#c9a22759}.power-btns{display:flex;gap:.4rem;flex-wrap:wrap}.tabs{display:flex;gap:.35rem;padding:.25rem;background:var(--bg-panel);border:1px solid var(--border);border-radius:10px;animation:fadeUp .45s ease .08s both}.tabs button{flex:1;border:none;background:transparent;padding:.65rem .75rem;border-radius:7px;color:var(--muted);font-weight:500}.tabs button.active{background:var(--bg-elevated);color:var(--text);box-shadow:inset 0 0 0 1px var(--border)}.panel{background:var(--bg-panel);border:1px solid var(--border);border-radius:12px;padding:1.1rem;animation:fadeUp .45s ease .12s both;flex:1;display:flex;flex-direction:column;gap:1rem;min-height:0}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.75rem}.stat{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:.85rem}.stat .label{color:var(--muted);font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;margin-bottom:.35rem}.stat .value{font-size:1.15rem;font-weight:600}.error-banner{background:#c45c4a26;border:1px solid rgba(196,92,74,.4);color:#f0c4bc;padding:.75rem 1rem;border-radius:8px}.muted{color:var(--muted)}.toolbar{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.toolbar .path{font-family:var(--mono);font-size:.85rem;color:var(--muted);flex:1;min-width:120px}.file-table{width:100%;border-collapse:collapse;font-size:.92rem}.file-table th{text-align:left;color:var(--muted);font-weight:500;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;padding:.4rem .5rem;border-bottom:1px solid var(--border)}.file-table td{padding:.45rem .5rem;border-bottom:1px solid rgba(42,58,46,.6)}.file-table tr:hover td{background:#5a9e460f}.file-table .name{cursor:pointer;font-family:var(--mono);font-size:.85rem}.file-table .name.dir{color:#9fd48a;font-weight:500}.console-wrap{display:flex;flex-direction:column;gap:.6rem;flex:1;min-height:420px}.console-term{flex:1;min-height:360px;background:#0a0e0b;border:1px solid var(--border);border-radius:8px;padding:.5rem;overflow:hidden}.console-input-row{display:flex;gap:.5rem}.console-input-row input{font-family:var(--mono);font-size:.9rem}.editor{display:flex;flex-direction:column;gap:.6rem;flex:1}.editor textarea{min-height:320px;font-family:var(--mono);font-size:.85rem;resize:vertical;line-height:1.5}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.75rem}.field label{display:block;font-size:.8rem;color:var(--muted);margin-bottom:.3rem}.list-editor{display:flex;flex-direction:column;gap:.5rem}.list-row{display:flex;gap:.5rem;align-items:center}.list-row input{flex:1}.actions{display:flex;flex-direction:column;gap:1rem}.action-block{display:flex;flex-direction:column;gap:.65rem}.action-block h2{margin:0;font-size:1.05rem;font-weight:600}.action-subtitle{margin:.5rem 0 0;font-size:.8rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.action-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.45rem}.success-banner{background:#5a9e4626;border:1px solid rgba(90,158,70,.4);color:#b8e6a8;padding:.75rem 1rem;border-radius:8px;font-family:var(--mono);font-size:.85rem;word-break:break-word}.actions-tabs{max-width:100%;overflow-x:auto}.check-row{display:inline-flex;align-items:center;gap:.45rem;color:var(--muted);font-size:.9rem;cursor:pointer;width:fit-content}.check-row input{width:auto}.status-panel{display:flex;flex-direction:column;gap:.75rem;padding:.85rem;background:var(--bg);border:1px solid var(--border);border-radius:8px}.effects-list{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center}.effect-chip{font-size:.8rem;padding:.25rem .55rem;border-radius:999px;border:1px solid var(--border);background:#5a9e461f;font-family:var(--mono)}.registry-search{position:relative}.registry-dropdown{position:absolute;z-index:20;left:0;right:0;top:calc(100% + 4px);max-height:240px;overflow:auto;background:var(--bg-elevated);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px #00000059}.registry-option{display:flex;flex-direction:column;align-items:flex-start;gap:.15rem;width:100%;border:none;border-radius:0;background:transparent;text-align:left;padding:.55rem .7rem}.registry-option:hover{background:#5a9e461f}.mission-list{display:flex;flex-direction:column;gap:.65rem}.mission-card{display:flex;flex-direction:column;gap:.45rem;padding:.75rem;border:1px solid var(--border);border-radius:8px;background:var(--bg)}.mission-card-top{display:flex;justify-content:space-between;gap:.5rem;align-items:center;flex-wrap:wrap}.mission-status{font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;padding:.2rem .5rem;border-radius:999px;border:1px solid var(--border)}.mission-status.active{color:#b8e6a8;border-color:#5a9e4673}.mission-status.completed{color:#9fd48a}.mission-status.failed{background:#3a1515;color:#ff8a8a}.mission-status.expired,.mission-status.cancelled{color:#c9b8b4}.progress-track{height:8px;border-radius:999px;background:#2a3a2ecc;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,var(--accent-dim),var(--accent));transition:width .3s ease}@keyframes fadeUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.enchant-builder{margin-top:.75rem;padding:.85rem;background:var(--bg);border:1px solid var(--border);border-radius:8px}.enchant-list{list-style:none;margin:.75rem 0 0;padding:0;display:flex;flex-direction:column;gap:.45rem}.enchant-row{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap;padding:.45rem .6rem;border:1px solid var(--border);border-radius:6px;font-size:.9rem}.enchant-row-actions{display:flex;align-items:center;gap:.4rem}.enchant-row-actions input[type=number]{width:4.5rem}.quest-reward-row{margin-top:.65rem;padding:.65rem;border:1px solid var(--border);border-radius:8px;background:var(--bg)}.inline-check{display:inline-flex;align-items:center;gap:.4rem;font-size:.9rem;margin-right:.75rem}.inline-check input{width:auto;margin:0}.inv-panel{margin-top:.75rem;display:flex;flex-direction:column;gap:.75rem}.inv-cat{display:flex;flex-direction:column;gap:.4rem}.inv-cat-label{font-size:.78rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted, #9fb0a2)}.inv-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:.4rem}.inv-slot{display:flex;flex-direction:column;gap:.25rem;padding:.45rem .5rem;border:1px solid var(--border);border-radius:6px;background:var(--bg);font-size:.82rem}.inv-slot-name{font-weight:600;text-transform:capitalize;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.inv-slot-meta{color:var(--muted, #9fb0a2);font-size:.75rem}.inv-slot-actions{display:flex;gap:.3rem}.inv-slot-actions button{flex:1;padding:.2rem .35rem;font-size:.72rem}.mission-preview{margin:.5rem 0;padding:.5rem .65rem;border:1px dashed var(--border);border-radius:6px;font-size:.85rem}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1.5rem}.login-card{width:min(420px,100%);background:var(--bg-panel);border:1px solid var(--border);border-radius:12px;padding:1.5rem;display:flex;flex-direction:column;gap:.85rem;box-shadow:0 12px 40px #00000059}.login-card h1{margin:0;font-size:1.4rem}.login-card .field{display:flex;flex-direction:column;gap:.35rem}.login-card button{margin-top:.25rem}@media(max-width:640px){.app{padding:.75rem}.topbar{flex-direction:column;align-items:stretch}.tabs{overflow-x:auto}.tabs button{flex:none;white-space:nowrap}}
