:root{--primary: #FF6A00;--primary-light: #FF8533;--primary-dark: #EA5F00;--primary-hover: #EA5F00;--primary-soft: rgba(255, 106, 0, .08);--primary-alpha-10: rgba(255, 106, 0, .1);--primary-gradient: linear-gradient(135deg, #FF8533, #FF6A00);--bg-body: #F7F7F5;--bg-card: #FFFFFF;--bg-sidebar: #FAFAF8;--bg-sidebar-hover: rgba(0, 0, 0, .025);--bg-sidebar-active: rgba(0, 0, 0, .04);--bg-header: #FFFFFF;--bg-input: #F7F7F5;--bg-modal-overlay: rgba(0, 0, 0, .2);--text-dark: #111111;--text-secondary: #6B7280;--text-muted: #9CA3AF;--text-white: #ffffff;--text-sidebar: #6B7280;--text-sidebar-active: #111111;--success: #22C55E;--warning: #F59E0B;--danger: #EF4444;--purple: #8B5CF6;--border-color: rgba(0, 0, 0, .06);--border-color-thin: rgba(0, 0, 0, .04);--border-radius-sm: 10px;--border-radius: 14px;--border-radius-lg: 18px;--border-radius-xl: 24px;--border-radius-pill: 9999px;--shadow-xs: 0 1px 2px rgba(0, 0, 0, .03);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .04);--shadow-md: 0 4px 12px rgba(0, 0, 0, .04);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .03);--scrollbar-thumb: #CBD5E1;--scrollbar-thumb-hover: #94A3B8;--row-hover: rgba(0, 0, 0, .015);--btn-ghost-hover: rgba(0, 0, 0, .04);--btn-outline-border-hover: rgba(0, 0, 0, .12);--toggle-track: #E5E7EB;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-6: 24px;--sp-8: 32px;--sp-12: 48px;--sp-16: 64px;--transition-fast: .15s ease;--transition-normal: .25s ease;--transition-slow: .35s ease;--sidebar-width: 240px;--sidebar-collapsed-width: 68px;--header-height: 64px}[data-theme=dark]{--bg-body: #1a1a1a;--bg-card: #232323;--bg-sidebar: #1a1a1a;--bg-sidebar-hover: rgba(255, 255, 255, .04);--bg-sidebar-active: rgba(255, 255, 255, .06);--bg-header: #232323;--bg-input: #1a1a1a;--bg-modal-overlay: rgba(0, 0, 0, .6);--text-dark: #F3F4F6;--text-secondary: #9CA3AF;--text-muted: #6B7280;--text-sidebar: #9CA3AF;--text-sidebar-active: #F3F4F6;--border-color: rgba(255, 255, 255, .08);--border-color-thin: rgba(255, 255, 255, .04);--shadow-xs: 0 1px 2px rgba(0, 0, 0, .3);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow-md: 0 4px 12px rgba(0, 0, 0, .4);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .3);--scrollbar-thumb: #4B5563;--scrollbar-thumb-hover: #6B7280;--row-hover: rgba(255, 255, 255, .04);--btn-ghost-hover: rgba(255, 255, 255, .06);--btn-outline-border-hover: rgba(255, 255, 255, .16);--toggle-track: #3f3f46}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{font-size:14px;height:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:Inter,MiSans,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-feature-settings:"tnum";color:var(--text-dark);background-color:var(--bg-body);line-height:1.6;height:100%}#app{height:100%}a{color:var(--primary);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--primary-dark)}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:999px}::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover)}.page-container{padding:24px;height:100%;overflow-y:auto}.page-title{font-size:1.5rem;font-weight:700;color:var(--text-dark);margin-bottom:24px}.page-subtitle{font-size:.9rem;color:var(--text-secondary);margin-top:-16px;margin-bottom:24px}.card{background:var(--bg-card);border-radius:var(--border-radius);border:1px solid var(--border-color);padding:24px;box-shadow:var(--shadow-sm);transition:box-shadow .25s ease,border-color .25s ease;overflow:hidden;position:relative}.card:hover{box-shadow:var(--shadow-md)}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin-bottom:16px}.stat-card{background:var(--bg-card);border-radius:var(--border-radius);padding:12px 16px;border:1px solid var(--border-color);display:flex;align-items:center;gap:12px;box-shadow:var(--shadow-sm);transition:box-shadow .25s ease,transform .2s ease,border-color .15s ease;overflow:hidden;position:relative;cursor:pointer;-webkit-user-select:none;user-select:none}.stat-card:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}.stat-card.active{border-color:var(--primary);box-shadow:0 0 0 1px #e8601c26}.stat-card:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.stat-icon{width:36px;height:36px;border-radius:var(--border-radius-sm);display:flex;align-items:center;justify-content:center;font-size:1.1rem;flex-shrink:0}.stat-icon.orange{background:#ff6a0014;color:var(--primary)}.stat-icon.green{background:#22c55e14;color:var(--success)}.stat-icon.red{background:#ef444414;color:var(--danger)}.stat-icon.gray{background:#6b72801a;color:var(--text-muted)}.stat-icon.blue{background:#3b82f614;color:#3b82f6}.stat-icon.purple{background:#8b5cf614;color:var(--purple)}.stat-icon.yellow{background:#f59e0b14;color:var(--warning)}.stat-info h3{font-size:1.35rem;font-weight:700;color:var(--text-dark);line-height:1}.stat-info p{font-size:.8rem;color:var(--text-secondary);margin-top:2px}.table-card{background:var(--bg-card);border-radius:var(--border-radius);border:1px solid var(--border-color);box-shadow:var(--shadow-sm);overflow:auto hidden;position:relative}.table-header{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;border-bottom:1px solid var(--border-color)}.table-header h3{font-size:1rem;font-weight:600;color:var(--text-dark)}.data-table{width:100%;border-collapse:collapse;table-layout:auto}.data-table thead th{text-align:left;padding:12px 16px;font-size:.8rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;background:var(--bg-card);border-bottom:1px solid var(--border-color);white-space:nowrap}.data-table tbody td{padding:12px 16px;font-size:.9rem;border-bottom:1px solid var(--border-color-thin);vertical-align:middle;white-space:nowrap}.data-table tbody tr{transition:background var(--transition-fast)}.data-table tbody tr:hover{background:var(--row-hover)}.data-table tbody tr:last-child td{border-bottom:none}.badge{display:inline-flex;align-items:center;gap:4px;padding:4px 8px;border-radius:var(--border-radius-pill);font-size:.75rem;font-weight:600;white-space:nowrap}.badge:before{content:"";width:6px;height:6px;border-radius:50%}.badge.online{background:#22c55e14;color:#16a34a}.badge.online:before{background:#22c55e}.badge.offline{background:#6b728014;color:#6b7280}.badge.offline:before{background:#9ca3af}.badge.dormant{background:#f59e0b14;color:#d97706}.badge.dormant:before{background:#f59e0b}.badge.running{background:#22c55e14;color:#16a34a}.badge.running:before{background:#22c55e}.badge.stopped{background:#6b728014;color:#6b7280}.badge.stopped:before{background:#9ca3af}.badge.admin{background:#8b5cf614;color:#7c3aed}.badge.admin:before{background:#8b5cf6}.badge.user{background:#6b728014;color:#6b7280}.badge.user:before{background:#9ca3af}.badge.allow{background:#22c55e14;color:#16a34a}.badge.allow:before{background:#22c55e}.badge.deny{background:#ef444414;color:#dc2626}.badge.deny:before{background:#ef4444}.badge.warn{background:#f59e0b1f;color:#b45309;font-size:.65rem;padding:1px 6px}.badge.warn:before{background:var(--warning)}.badge.connecting{background:#f59e0b14;color:#d97706}.badge.connecting:before{background:var(--warning)}.badge.error{background:#ef444414;color:#dc2626}.badge.error:before{background:var(--danger)}.badge.starting{background:#ff6a0014;color:var(--primary)}.badge.starting:before{background:var(--primary)}.badge-sm{font-size:.65rem;padding:1px 6px}.status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;flex-shrink:0}.status-dot.online{background:var(--success);box-shadow:0 0 6px #22c55e73}.status-dot.offline,.status-dot.dot-offline{background:var(--text-muted)}.status-dot.connecting{background:var(--warning);box-shadow:0 0 6px #f59e0b73}.status-dot.error{background:var(--danger)}.btn{display:inline-flex;align-items:center;gap:8px;padding:8px 16px;border-radius:var(--border-radius-sm);font-size:.85rem;font-weight:500;border:none;cursor:pointer;transition:all var(--transition-fast);font-family:inherit;white-space:nowrap}.btn-primary{background:var(--primary);color:#fff;box-shadow:0 1px 4px #ff6a0033}.btn-primary:hover{background:var(--primary-dark);box-shadow:0 2px 8px #ff6a0040}.btn-outline{background:var(--bg-card);color:var(--text-secondary);border:1px solid var(--border-color)}.btn-outline:hover{background:var(--bg-body);color:var(--text-dark);border-color:var(--btn-outline-border-hover)}.btn-ghost{background:transparent;color:var(--text-secondary);padding:8px 12px}.btn-ghost:hover{background:var(--btn-ghost-hover);color:var(--text-dark)}.btn-sm{padding:4px 8px;font-size:.8rem}.btn-danger{background:transparent;color:var(--danger);border:1px solid rgba(239,68,68,.2)}.btn-danger:hover{background:#ef44440f;border-color:#ef44444d}.fm-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border:1px solid var(--border-color-thin);border-radius:var(--border-radius-pill);background:var(--bg-card);color:var(--text-dark);font-size:.82rem;font-weight:500;font-family:inherit;cursor:pointer;transition:all var(--transition-fast);white-space:nowrap}.fm-btn:hover:not(:disabled){border-color:var(--primary);color:var(--primary);background:var(--primary-alpha-10)}.fm-btn:disabled{opacity:.4;cursor:not-allowed}.fm-btn.active{background:var(--primary);color:#fff;border-color:var(--primary)}.fm-btn-danger:hover:not(:disabled){border-color:var(--danger);color:var(--danger);background:#ef44440f}.fm-btn-small{padding:4px 10px;font-size:.72rem;gap:3px}.fm-everything-btn{background:#0ea5e9;color:#fff;border-color:#0ea5e9;font-weight:600}.fm-everything-btn:hover:not(:disabled){background:#0284c7;border-color:#0284c7;color:#fff}.fm-everything-btn:disabled{opacity:.5}[data-theme=dark] .fm-btn{background:var(--bg-body);border-color:var(--border-color);color:var(--text-dark)}[data-theme=dark] .fm-btn:hover:not(:disabled){border-color:var(--primary);color:var(--primary);background:#ffffff0a}[data-theme=dark] .fm-btn.active{background:var(--primary);color:#fff;border-color:var(--primary)}.form-group{margin-bottom:16px}.form-label{display:block;font-size:.85rem;font-weight:500;color:var(--text-dark);margin-bottom:8px}.form-input{width:100%;padding:8px 12px;border:1px solid var(--border-color);border-radius:var(--border-radius-sm);font-size:.9rem;font-family:inherit;color:var(--text-dark);background:var(--bg-card);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.form-input:focus{outline:none;border-color:var(--primary);box-shadow:inset 0 0 0 1px var(--primary)}.form-input:hover{border-color:var(--primary);box-shadow:inset 0 0 0 1px var(--primary)}.form-input::placeholder{color:var(--text-muted)}input[type=text]:hover,input[type=password]:hover,input[type=number]:hover,input[type=email]:hover,input[type=url]:hover,input[type=search]:hover,input[type=tel]:hover,input:not([type]):not(.terminal-input):not(.term-search-input):not(.pt-search-input):not(.beacon-list-search):not(.fm-path-search):hover,select:hover,textarea:hover{border-color:var(--primary)!important;box-shadow:inset 0 0 0 1px var(--primary)!important}input[type=text]:focus,input[type=password]:focus,input[type=number]:focus,input[type=email]:focus,input[type=url]:focus,input[type=search]:focus,input[type=tel]:focus,input:not([type]):not(.terminal-input):not(.term-search-input):not(.pt-search-input):not(.beacon-list-search):not(.fm-path-search):focus,select:focus,textarea:focus{outline:none;border-color:var(--primary)!important;box-shadow:inset 0 0 0 1px var(--primary)!important}.radio-group{display:flex;gap:16px;flex-wrap:wrap}.radio-item{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:13px;color:var(--text-secondary);transition:color var(--transition-fast);-webkit-user-select:none;user-select:none}.radio-item:hover{color:var(--text-dark)}.radio-item input[type=radio],input.sty-radio[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;border:1.5px solid var(--border-color);border-radius:50%;background:transparent;cursor:pointer;position:relative;transition:border-color var(--transition-fast);flex-shrink:0;margin:0}.radio-item input[type=radio]:checked,input.sty-radio[type=radio]:checked{border-color:var(--primary)}.radio-item input[type=radio]:checked:after,input.sty-radio[type=radio]:checked:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:8px;height:8px;border-radius:50%;background:var(--primary)}.radio-item input[type=radio]:hover:not(:disabled),input.sty-radio[type=radio]:hover:not(:disabled){border-color:var(--primary)}.radio-item input[type=radio]:disabled,input.sty-radio[type=radio]:disabled{opacity:.45;cursor:not-allowed}.toggle-row{display:flex;gap:20px;flex-wrap:wrap}.toggle-inline{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text-secondary);cursor:pointer;transition:color var(--transition-fast);-webkit-user-select:none;user-select:none}.toggle-inline:hover:not(.is-disabled){color:var(--text-dark)}.toggle-inline.is-disabled{opacity:.45;cursor:not-allowed}.toggle-inline input[type=checkbox],input.sty-checkbox[type=checkbox]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;border:1.5px solid var(--border-color);border-radius:3px;background:transparent;cursor:pointer;position:relative;transition:all var(--transition-fast);flex-shrink:0;margin:0}.toggle-inline input[type=checkbox]:checked,input.sty-checkbox[type=checkbox]:checked{background:var(--primary);border-color:var(--primary)}.toggle-inline input[type=checkbox]:checked:after,input.sty-checkbox[type=checkbox]:checked:after{content:"";position:absolute;top:2px;left:5px;width:4px;height:8px;border:solid #fff;border-width:0 1.5px 1.5px 0;transform:rotate(45deg)}.toggle-inline input[type=checkbox]:hover:not(:disabled),input.sty-checkbox[type=checkbox]:hover:not(:disabled){border-color:var(--primary)}.toggle-inline input[type=checkbox]:disabled,input.sty-checkbox[type=checkbox]:disabled{opacity:.45;cursor:not-allowed}.toggle-switch{position:relative;display:inline-block;width:32px;height:16px}.toggle-switch input{opacity:0;width:0;height:0}.toggle-slider{position:absolute;cursor:pointer;inset:0;background:var(--toggle-track);border-radius:16px;transition:background .3s cubic-bezier(.4,0,.2,1)}.toggle-slider:before{content:"";position:absolute;width:12px;height:12px;left:2px;bottom:2px;background:#fff;border-radius:50%;box-shadow:0 1px 4px #0000001a;transition:transform .3s cubic-bezier(.4,0,.2,1)}.toggle-switch input:checked+.toggle-slider{background:#e8874a}.toggle-switch input:checked+.toggle-slider:before{transform:translate(16px)}.modal-overlay{position:fixed;inset:0;background:var(--bg-modal-overlay);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .2s ease}.modal-content{background:var(--bg-card);border-radius:var(--border-radius-lg);padding:32px;width:90%;max-width:500px;box-shadow:var(--shadow-lg);animation:slideUp .25s ease;position:relative;overflow:hidden;border:1px solid var(--border-color)}.modal-content.modal-sm{max-width:360px;padding:24px}.modal-content.modal-md{max-width:520px;padding:24px}.modal-subtitle{margin:-12px 0 20px;font-size:.78rem;color:var(--text-secondary)}.modal-header-row{display:flex;align-items:center;gap:10px;margin-bottom:20px}.modal-icon{width:36px;height:36px;border-radius:var(--border-radius-sm);background:var(--primary-soft);color:var(--primary);display:flex;align-items:center;justify-content:center;flex-shrink:0}.modal-header-text h3{margin:0;font-size:1rem;font-weight:600;color:var(--text-dark)}.modal-header-text p{margin:2px 0 0;font-size:.78rem;color:var(--text-secondary)}.modal-title{font-size:1.15rem;font-weight:600;margin-bottom:24px;color:var(--text-dark)}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:24px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}.text-mono{font-family:JetBrains Mono,Fira Code,Consolas,monospace!important;font-size:.85rem!important;font-weight:500;letter-spacing:.2px}.action-btns{display:flex;gap:4px}.empty-state{text-align:center;padding:48px 24px;color:var(--text-muted)}.empty-state svg{width:64px;height:64px;margin-bottom:16px;opacity:.4}.sty-progress{--progress-track: rgba(0, 0, 0, .07);width:100%;height:5px;background:var(--progress-track);border-radius:var(--border-radius-pill);overflow:hidden}[data-theme=dark] .sty-progress{--progress-track: rgba(255, 255, 255, .1)}.sty-progress.sm{height:3px}.sty-progress-fill{height:100%;border-radius:var(--border-radius-pill);background:var(--primary-gradient);transition:width .35s cubic-bezier(.4,0,.2,1)}.sty-progress-fill.success{background:var(--success)}.sty-progress-fill.danger{background:var(--danger)}.sty-progress-fill.warning{background:var(--warning)}.sty-progress-fill.indeterminate{width:40%!important;animation:sty-progress-indeterminate 1.5s ease-in-out infinite}@keyframes sty-progress-indeterminate{0%{transform:translate(-100%)}to{transform:translate(350%)}}.sty-range,input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:22px;background:transparent;outline:none;cursor:pointer;margin:2px 0;--range-track-h: 5px;--range-track-bg: rgba(0, 0, 0, .07);--range-thumb-size: 16px}[data-theme=dark] .sty-range,[data-theme=dark] input[type=range]{--range-track-bg: rgba(255, 255, 255, .1)}.sty-range::-webkit-slider-runnable-track,input[type=range]::-webkit-slider-runnable-track{height:var(--range-track-h);border-radius:var(--border-radius-pill);background:linear-gradient(to right,var(--primary) 0%,var(--primary) var(--range-pct, 0%),var(--range-track-bg) var(--range-pct, 0%),var(--range-track-bg) 100%)}.sty-range::-webkit-slider-thumb,input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:var(--range-thumb-size);height:var(--range-thumb-size);border-radius:50%;background:var(--primary);border:2.5px solid #fff;box-shadow:0 1px 4px #ff6a0059,0 1px 2px #0000001a;margin-top:calc((var(--range-track-h) - var(--range-thumb-size)) / 2);transition:transform var(--transition-fast),box-shadow var(--transition-fast)}.sty-range:hover::-webkit-slider-thumb,.sty-range:focus::-webkit-slider-thumb,input[type=range]:hover::-webkit-slider-thumb,input[type=range]:focus::-webkit-slider-thumb{transform:scale(1.1);box-shadow:0 2px 8px #ff6a0073,0 1px 3px #0000001f}.sty-range::-moz-range-track,input[type=range]::-moz-range-track{height:var(--range-track-h);border-radius:var(--border-radius-pill);background:var(--range-track-bg);border:none}.sty-range::-moz-range-progress,input[type=range]::-moz-range-progress{height:var(--range-track-h);border-radius:var(--border-radius-pill);background:var(--primary)}.sty-range::-moz-range-thumb,input[type=range]::-moz-range-thumb{width:calc(var(--range-thumb-size) - 5px);height:calc(var(--range-thumb-size) - 5px);border-radius:50%;background:var(--primary);border:2.5px solid #fff;box-shadow:0 1px 4px #ff6a0059;transition:transform var(--transition-fast),box-shadow var(--transition-fast)}.sty-range:hover::-moz-range-thumb,.sty-range:focus::-moz-range-thumb,input[type=range]:hover::-moz-range-thumb,input[type=range]:focus::-moz-range-thumb{transform:scale(1.1)}.sty-range:focus-visible::-webkit-slider-thumb,input[type=range]:focus-visible::-webkit-slider-thumb{box-shadow:0 0 0 3px var(--primary-soft),0 1px 4px #ff6a0059}.app-toast{position:fixed;top:20px;right:20px;z-index:10000;display:flex;align-items:center;gap:12px;max-width:min(460px,calc(100vw - 40px));padding:16px 18px;border-radius:var(--border-radius);font-size:.9rem;font-weight:500;line-height:1.45;background:var(--bg-card);color:var(--text-dark);--toast-accent: var(--primary);border:2px solid var(--toast-accent);box-shadow:var(--shadow-lg)}.app-toast-dot{flex-shrink:0;width:10px;height:10px;border-radius:50%;background:var(--toast-accent)}.app-toast.success{--toast-accent: var(--success)}.app-toast.error{--toast-accent: var(--danger)}.app-toast.warn{--toast-accent: var(--warning)}.app-toast.info{--toast-accent: var(--primary)}.app-toast-message{flex:1;min-width:0;word-break:break-word;color:var(--text-dark)}.app-toast-close{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:8px;background:transparent;color:var(--text-muted);font-size:1.2rem;line-height:1;cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.app-toast-close:hover{background:var(--bg-input);color:var(--text-dark)}.app-toast-enter-active{animation:app-toast-in .22s ease}.app-toast-leave-active{animation:app-toast-in .18s ease reverse}@keyframes app-toast-in{0%{opacity:0;transform:translate(10px)}to{opacity:1;transform:translate(0)}}
