:root{font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light;color:#213547;background-color:#fff;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{margin:0;padding:0;box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}#root{width:100%;height:100vh;margin:0}@media (prefers-color-scheme: dark){:root{color-scheme:dark;color:#ffffffde;background-color:#242424}a:hover{color:#646cff}button{background-color:#333;color:#fff}}.App{font-family:sans-serif;max-width:900px;margin:0 auto;padding:20px}header{text-align:center;margin-bottom:30px;padding-bottom:10px;border-bottom:2px solid #eee}main{display:grid;grid-template-columns:1fr;gap:30px}@media (min-width: 768px){main{grid-template-columns:1fr 1fr}}section{padding:15px;border:1px solid #ddd;border-radius:8px;background-color:#f9f9f9}.form-section h2,.list-section h2,.details-section h2{margin-top:0;color:#333;border-bottom:1px solid #ccc;padding-bottom:10px}form div{margin-bottom:15px}form label{display:block;margin-bottom:5px;font-weight:700;color:#555}form input[type=text],form input[type=number],form textarea{width:calc(100% - 22px);padding:10px;border:1px solid #ccc;border-radius:4px;font-size:1em}form textarea{min-height:60px;resize:vertical}button{background-color:#007bff;color:#fff;border:none;padding:10px 15px;border-radius:4px;cursor:pointer;font-size:1em;margin-right:10px;margin-top:5px}button:hover{background-color:#0056b3}button:disabled{background-color:#ccc;cursor:not-allowed}button.enhance{background-color:#ffc107;color:#333}button.enhance:hover{background-color:#e0a800}button.delete-button{background-color:#dc3545}button.delete-button:hover{background-color:#c82333}.character-item{background-color:#fff;border:1px solid #eee;padding:15px;margin-bottom:10px;border-radius:4px;display:flex;justify-content:space-between;align-items:flex-start}.character-item h3{margin-top:0;margin-bottom:5px;color:#007bff}.character-item p{margin:3px 0;font-size:.9em;color:#555}.character-item .actions button{font-size:.8em;padding:5px 8px;margin-left:5px}.details-section p{margin:8px 0}.error-message{color:red;background-color:#ffebee;border:1px solid red;padding:10px;border-radius:4px;margin-bottom:15px}.loading-message{color:#007bff;font-style:italic}.loading-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#ffffffb3;display:flex;justify-content:center;align-items:center;z-index:1000;font-size:1.5em;color:#333}.loading-overlay div{background-color:#fff;padding:20px 30px;border-radius:8px;box-shadow:0 2px 10px #0003}[class^=log-entry-view]{border-width:2px;border-radius:20px;border-color:#000;border-style:solid;margin-bottom:10px;padding:5px 10px}.log-entry-arrow{display:inline-block;width:1em;padding:10px}[class^=log-entry-view][class$=log-level-info]{background-color:#000054}[class^=log-entry-view][class$=log-level-warning]{background-color:#7b6600}; [class^=log-entry-view][class$=log-level-error]{background-color:#3d0000}[class^=log-entry-view][class$=log-level-debug]{background-color:#9932cc}.log-toggle-button{position:fixed;top:10px;right:10px;z-index:1001;padding:5px 10px;background-color:#f0f0f0;border:1px solid #ccc;border-radius:4px;cursor:pointer}.log-toggle-button:hover{background-color:#e0e0e0}/**
* 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}.xterm{padding:0;height:100%;width:100%;text-align:left!important}.xterm-viewport{background-color:#1e1e1e;height:100%!important;width:100%!important}.xterm-screen{width:100%!important;height:100%!important}.terminal-container{height:100%;width:100%;position:absolute;top:0;left:0;right:0;bottom:0;text-align:left!important;display:flex;align-items:flex-start;justify-content:flex-start}.xterm *{text-align:left!important}.xterm-rows{text-align:left!important;margin:0;padding:0}.webconsole-app{height:100%;width:100%}.webconsole-app .console-output{color:#0f0!important;background-color:#000!important}.webconsole-app .console-output *{color:inherit!important}.webconsole-app .console-input{color:#0f0!important;background-color:#000!important}.webconsole-app .console-container{background-color:#000!important}.webconsole-app pre,.webconsole-app code{color:#0f0!important;background-color:transparent!important}.user-management-container{height:100%;display:flex;flex-direction:column;background-color:#f5f5f5}.user-management-header{background:linear-gradient(135deg,#1976d2,#1565c0);color:#fff;padding:24px;box-shadow:0 2px 8px #00000026}.user-management-header h1{margin:0;font-size:28px;font-weight:400}.user-management-content{flex:1;overflow:hidden;display:flex;flex-direction:column}.user-management-tabs{background-color:#fff;box-shadow:0 2px 4px #0000001a;border-bottom:1px solid #e0e0e0}.user-management-tabs .MuiTabs-root{min-height:48px}.user-management-tabs .MuiTab-root{min-height:48px;text-transform:none;font-weight:500;font-size:15px;color:#424242}.user-management-tabs .MuiTab-root.Mui-selected{color:#1976d2}.user-management-tab-content{flex:1;overflow:auto;padding:24px;background-color:#f5f5f5}.MuiTableContainer-root{border-radius:8px;overflow:hidden;box-shadow:0 1px 3px #0000001f,0 1px 2px #0000003d;background-color:#fff}.MuiTableHead-root{background-color:#fafafa}.MuiTableHead-root .MuiTableCell-head{font-weight:600;color:#424242;border-bottom:2px solid #e0e0e0;font-size:14px}.MuiTableBody-root .MuiTableRow-root{transition:background-color .2s ease}.MuiTableBody-root .MuiTableRow-root:hover{background-color:#0000000a}.MuiTableBody-root .MuiTableCell-root{color:#212121;font-size:14px}.MuiDialog-paper{border-radius:12px;max-height:90vh}.MuiDialogTitle-root{background-color:#fafafa;border-bottom:1px solid #e0e0e0;color:#212121;font-size:20px;font-weight:500}.MuiDialogContent-root{padding-top:24px!important;background-color:#fff}.MuiDialogActions-root{padding:16px 24px;background-color:#fafafa;border-top:1px solid #e0e0e0}.MuiTextField-root,.MuiTextField-root .MuiOutlinedInput-root{background-color:#fff}.MuiTextField-root .MuiOutlinedInput-root:hover .MuiOutlinedInput-notchedOutline{border-color:#1976d2}.MuiTextField-root .MuiInputLabel-root{color:#616161;background-color:#fff;padding:0 4px}.MuiTextField-root .MuiInputLabel-root.Mui-focused{color:#1976d2}.MuiTextField-root .MuiOutlinedInput-input{color:#212121}.MuiAutocomplete-root .MuiOutlinedInput-root{padding:4px 9px!important;min-height:56px!important;background-color:#fff!important}.MuiAutocomplete-root .MuiAutocomplete-input{color:#212121!important}.MuiAutocomplete-popper{box-shadow:0 4px 6px #0000001a;background-color:#fff!important;z-index:1300!important}.MuiAutocomplete-paper{background-color:#fff!important}.MuiAutocomplete-listbox{background-color:#fff!important;color:#212121!important}.MuiAutocomplete-option{padding:8px 16px!important;color:#212121!important}.MuiAutocomplete-option[aria-selected=true]{background-color:#1976d214!important}.MuiAutocomplete-option[data-focus=true]{background-color:#0000000a!important}.MuiAutocomplete-tag{margin:3px!important}.MuiChip-root{transition:all .2s ease;margin:2px}.MuiChip-root:hover{transform:translateY(-1px);box-shadow:0 2px 4px #00000026}.MuiChip-filled{background-color:#1976d2;color:#fff}.MuiChip-filled:hover{background-color:#1565c0}.MuiChip-outlined{border-color:#bdbdbd;color:#616161}.MuiChip-outlined:hover{background-color:#0000000a;border-color:#9e9e9e}.MuiButton-root{text-transform:none;font-weight:500;border-radius:6px;padding:8px 16px}.MuiButton-contained{box-shadow:0 2px 4px #0000001a}.MuiButton-contained:hover{box-shadow:0 4px 8px #00000026}.MuiButton-containedPrimary{background-color:#1976d2}.MuiButton-containedPrimary:hover{background-color:#1565c0}.MuiIconButton-root{color:#616161!important;transition:all .2s ease}.MuiIconButton-root:hover{color:#1976d2!important;background-color:#1976d20a}.MuiSvgIcon-root{color:#616161!important}.MuiIconButton-root .MuiSvgIcon-root{color:inherit!important}.MuiIconButton-root:hover .MuiSvgIcon-root{color:#1976d2!important}.MuiAlert-root{border-radius:8px}.MuiAlert-standardError{background-color:#ffebee;color:#c62828}.MuiAlert-standardInfo{background-color:#e3f2fd;color:#1565c0}.MuiAlert-standardSuccess{background-color:#e8f5e9;color:#2e7d32}.search-field{background-color:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001f}.MuiInputAdornment-root .MuiSvgIcon-root{color:#757575!important}.MuiButton-root .MuiSvgIcon-root{color:currentColor!important}.dialog-tabs .MuiTabs-root{border-bottom:1px solid #e0e0e0;background-color:#fafafa}.dialog-tabs .MuiTab-root{text-transform:none;min-height:40px;color:#616161}.dialog-tabs .MuiTab-root.Mui-selected{color:#1976d2}.permission-chip{margin:4px;cursor:pointer;transition:all .2s ease}.permission-chip:hover{transform:scale(1.05)}.loading-container{display:flex;justify-content:center;align-items:center;height:100%;color:#1976d2}.empty-state{text-align:center;padding:48px;color:#757575}.empty-state-icon{font-size:64px;color:#bdbdbd;margin-bottom:16px}.error-container{padding:24px;text-align:center;color:#d32f2f}.MuiPaper-root,.MuiMenu-paper{background-color:#fff!important;color:#212121!important}.MuiMenuItem-root{color:#212121!important}.MuiMenuItem-root:hover{background-color:#0000000a!important}.MuiSelect-select{color:#212121!important}.MuiList-root{background-color:#fff!important}.MuiListItem-root,.MuiListItemText-primary{color:#212121!important}.MuiListItemText-secondary{color:#757575!important}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:#f1f1f1}::-webkit-scrollbar-thumb{background:#bdbdbd;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#9e9e9e}@media (max-width: 768px){.user-management-header{padding:16px}.user-management-header h1{font-size:24px}.user-management-tab-content{padding:16px}.MuiTableContainer-root{margin:0 -16px;border-radius:0;box-shadow:none}.MuiDialog-paper{margin:16px;width:calc(100% - 32px);max-width:none!important}}.logs-app .log-metadata,.logs-app .log-stacktrace{padding:8px;border-radius:4px;overflow:auto;font-size:12px;margin:0;font-family:Consolas,Monaco,Courier New,monospace;line-height:1.4}.logs-app .MuiChip-colorError{font-weight:700}:root{--bg-primary: #121212;--bg-secondary: #1e1e1e;--bg-tertiary: #2d2d2d;--text-primary: #ffffff;--text-secondary: #aaaaaa;--border-color: #333333;--hover-bg: #333333;--link-color: #90caf9;--link-hover: #64b5f6}[data-theme=light]{--bg-primary: #f5f5f5;--bg-secondary: #ffffff;--bg-tertiary: #e0e0e0;--text-primary: #000000;--text-secondary: #666666;--border-color: #dddddd;--hover-bg: #f0f0f0;--link-color: #1976d2;--link-hover: #1565c0}body{background-color:var(--bg-primary);color:var(--text-primary);transition:background-color .3s ease,color .3s ease}.app{display:flex;flex-direction:column;height:100vh;width:100%;background-color:var(--bg-primary);color:var(--text-primary)}.app-nav{background-color:var(--bg-tertiary);padding:1rem 2rem;display:flex;justify-content:space-between;align-items:center;box-shadow:0 2px 4px #0003;border-bottom:1px solid var(--border-color)}.nav-brand a{font-size:1.5rem;font-weight:700;text-decoration:none;color:var(--text-primary)}.nav-links{display:flex;list-style:none;gap:2rem;align-items:center;margin:0;padding:0}.nav-links a{text-decoration:none;color:var(--text-primary);transition:color .3s}.nav-links a:hover{color:var(--link-hover)}.logout-btn{background-color:transparent;color:var(--text-primary);border:1px solid var(--text-primary);padding:.5rem 1rem;border-radius:4px;cursor:pointer;transition:all .3s;font-size:.9rem}.logout-btn:hover{background-color:var(--text-primary);color:var(--bg-primary)}.loading{display:flex;justify-content:center;align-items:center;height:100vh;font-size:1.2rem;color:var(--text-secondary)}.app-main{flex:1;overflow-y:auto;background-color:var(--bg-primary)}h1,h2,h3,h4,h5,h6,p,span,div,label{color:var(--text-primary)}a{color:var(--link-color)}a:hover{color:var(--link-hover)}input,textarea,select{background-color:var(--bg-secondary);color:var(--text-primary);border:1px solid var(--border-color)}input::placeholder,textarea::placeholder{color:var(--text-secondary)}button{background-color:var(--bg-secondary);color:var(--text-primary);border:1px solid var(--border-color)}button:hover{background-color:var(--hover-bg)}table{background-color:var(--bg-secondary);color:var(--text-primary)}th{background-color:var(--bg-tertiary);color:var(--text-primary)}td{border-color:var(--border-color);color:var(--text-primary)}
