:root{--brand-primary: #5b2d8e;--brand-primary-hover: #4a2474;--brand-primary-light: rgba(91, 45, 142, .12);--brand-accent: #e8722a;--brand-accent-light: rgba(232, 114, 42, .12);--bg-page: #0d1117;--bg-surface: #161b22;--bg-elevated: #1c2128;--bg-hover: #21262d;--bg-active: #1a2233;--border-default: #30363d;--border-muted: #21262d;--border-focus: var(--brand-primary);--text-primary: #e6edf3;--text-secondary: #8b949e;--text-muted: #6e7681;--text-link: var(--brand-primary);--color-success: #3fb950;--color-success-bg: rgba(63, 185, 80, .1);--color-danger: #f85149;--color-danger-bg: rgba(248, 81, 73, .1);--color-warning: #d29922;--color-warning-bg: rgba(210, 153, 34, .1);--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .3);--shadow-md: 0 4px 12px rgba(0, 0, 0, .4);--shadow-lg: 0 8px 32px rgba(0, 0, 0, .5);--shadow-xl: 0 16px 48px rgba(0, 0, 0, .6);--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "Inter", Roboto, sans-serif;--font-mono: "SF Mono", "Fira Code", monospace}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{height:100%;font-family:var(--font-sans);background:var(--bg-page);color:var(--text-primary)}::selection{background:var(--brand-primary);color:#fff}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-surface)}::-webkit-scrollbar-thumb{background:var(--border-default);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}input,select,button{font-family:inherit}.login-container{height:100vh;background:#f5f5f7;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;overflow:hidden}.login-logo{margin-bottom:32px;z-index:1}.login-logo img{height:64px;width:auto}.login-box{background:#fff;border:1px solid #e0e0e0;border-radius:var(--radius-lg);padding:32px 36px;width:380px;max-width:90vw;box-shadow:0 4px 24px #00000014;z-index:1}.login-box h2{color:#333;font-size:17px;font-weight:500;margin-bottom:24px;text-align:center}.input-group{margin-bottom:16px}.input-group label{display:block;color:#666;font-size:12px;font-weight:500;margin-bottom:6px;text-transform:uppercase;letter-spacing:.4px}.input-group input{width:100%;padding:11px 14px;border:1px solid #ddd;border-radius:var(--radius-md);background:#fafafa;color:#333;font-size:14px;outline:none;transition:border-color .2s,box-shadow .2s}.input-group input:focus{border-color:var(--brand-primary);box-shadow:0 0 0 3px var(--brand-primary-light);background:#fff}.input-group input::placeholder{color:#888}.login-box button[type=submit]{width:100%;padding:12px;background:var(--brand-primary);color:#fff;border:none;border-radius:var(--radius-md);font-size:14px;font-weight:600;cursor:pointer;margin-top:6px;transition:background .15s,transform .1s}.login-box button[type=submit]:hover{background:var(--brand-primary-hover);transform:translateY(-1px)}.login-box button[type=submit]:active{transform:translateY(0)}.login-box button[type=submit]:disabled{background:#888;color:#fff;cursor:not-allowed;transform:none}.login-error{color:#d32f2f;font-size:13px;text-align:center;margin-top:12px;padding:8px 12px;background:#fdecea;border-radius:var(--radius-sm)}.login-footer{position:absolute;bottom:20px;color:#999;font-size:11px;z-index:1}.session-warning{text-align:center;padding:4px 0}.session-warning-icon{font-size:32px;margin-bottom:8px}.session-warning-title{color:#e65100;font-size:15px;font-weight:600;margin-bottom:6px}.session-warning-text{color:#666;font-size:13px;margin-bottom:14px}.session-connection-item{display:flex;align-items:center;justify-content:space-between;padding:9px 12px;background:#fff8e1;border:1px solid #ffe082;border-radius:var(--radius-sm);margin-bottom:6px}.session-connection-info{display:flex;align-items:center;gap:8px;font-size:12px;color:#555}.session-dot{color:#4caf50;font-size:10px}.session-time{color:#999;font-size:11px}.session-disconnect-btn{padding:4px 10px;background:#fdecea;border:1px solid #f5c6cb;border-radius:var(--radius-sm);color:#b71c1c;font-size:11px;cursor:pointer;transition:background .12s}.session-disconnect-btn:hover{background:#f8d7da}.session-warning-actions{display:flex;flex-direction:column;gap:8px;margin-top:14px}.btn-warning-primary{padding:10px;background:var(--brand-primary);color:#fff;border:none;border-radius:var(--radius-md);font-size:13px;font-weight:500;cursor:pointer;transition:background .12s}.btn-warning-primary:hover{background:var(--brand-primary-hover)}.btn-warning-secondary{padding:9px;background:transparent;color:#666;border:1px solid #ddd;border-radius:var(--radius-md);font-size:12px;cursor:pointer;transition:border-color .12s}.btn-warning-secondary:hover{border-color:#999;color:#333}.btn-warning-cancel{padding:6px;background:transparent;color:#999;border:none;font-size:12px;cursor:pointer}.btn-warning-cancel:hover{color:#666}.dcv-container{height:100vh;display:flex;flex-direction:row;background:#000;position:relative}.side-panel{position:fixed;left:0;top:12px;z-index:1000;display:flex;align-items:flex-start}.side-panel-tab{width:16px;height:40px;background:#ffffffd9;border-radius:0 6px 6px 0;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:12px;color:#555;box-shadow:2px 0 6px #0000001a;transition:background .2s}.side-panel-tab:hover{background:#fff;color:#333}.side-panel-icons{display:flex;flex-direction:column;align-items:center;gap:4px;padding:12px 8px;background:#fffffff2;border-radius:0 12px 12px 0;box-shadow:4px 0 16px #00000026;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);opacity:0;transform:translate(-100%);transition:opacity .15s,transform .15s;pointer-events:none;position:absolute;left:0;top:0}.side-panel.open .side-panel-icons{opacity:1;transform:translate(0);pointer-events:all}.side-panel.open .side-panel-tab{opacity:0;pointer-events:none}.side-panel-logo{height:24px;width:auto;margin-bottom:8px;padding-bottom:8px;border-bottom:1px solid #e0e0e0}.side-btn{width:40px;height:40px;border:none;border-radius:10px;background:transparent;color:#555;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .12s}.side-btn:hover{background:#f0f0f2;color:#333}.side-btn svg{width:20px;height:20px}.side-btn-danger:hover{background:#fdecea;color:#d32f2f}.stream-area{flex:1;position:relative;overflow:hidden;width:100%;height:100%}#dcv-display{width:100%;height:100%}.connection-status{position:fixed;bottom:52px;right:14px;padding:5px 12px;border-radius:16px;font-size:11px;font-weight:500;z-index:900;opacity:.85;transition:opacity .3s}.connection-status:hover{opacity:1}.connection-status.connected{background:var(--color-success-bg);color:var(--color-success);border:1px solid rgba(63,185,80,.2)}.dcv-container.fullscreen .side-panel{opacity:.6}.dcv-container.fullscreen .side-panel:hover{opacity:1}.file-panel-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:2000;display:flex;justify-content:flex-end;animation:fadeIn .12s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.file-panel{width:600px;max-width:100vw;height:100%;background:var(--bg-surface);display:flex;flex-direction:column;box-shadow:-4px 0 24px #00000080;animation:slideIn .18s ease-out;position:relative;border-left:1px solid var(--border-muted)}@keyframes slideIn{0%{transform:translate(100%)}to{transform:translate(0)}}.file-panel.drag-active{border-left:2px solid var(--brand-primary)}.file-panel-header{display:flex;align-items:center;justify-content:space-between;padding:12px 18px;border-bottom:1px solid var(--border-muted)}.file-panel-header h3{color:var(--text-primary);font-size:14px;font-weight:600;display:flex;align-items:center;gap:7px}.fp-icon{font-size:16px}.file-panel-header-actions{display:flex;gap:3px;align-items:center}.view-toggle{width:26px;height:26px;border:1px solid var(--border-default);border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);cursor:pointer;font-size:13px;display:flex;align-items:center;justify-content:center;transition:all .1s}.view-toggle.active{background:var(--bg-active);color:var(--brand-primary);border-color:var(--brand-primary)}.fp-close{width:26px;height:26px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);cursor:pointer;font-size:15px;margin-left:6px;transition:all .1s}.fp-close:hover{color:var(--text-primary);background:var(--bg-hover)}.file-panel-actions{display:flex;align-items:center;justify-content:space-between;padding:8px 14px;border-bottom:1px solid var(--border-muted);gap:6px;flex-wrap:nowrap;min-height:44px}.fp-actions-left,.fp-actions-right{display:flex;align-items:center;gap:5px}.file-panel-actions button{padding:5px 9px;border:1px solid var(--border-default);border-radius:var(--radius-sm);background:var(--bg-elevated);color:var(--text-secondary);font-size:12px;cursor:pointer;transition:all .1s;white-space:nowrap}.file-panel-actions button:hover{background:var(--bg-hover);border-color:var(--brand-primary);color:var(--text-primary)}.file-panel-actions button:disabled{opacity:.4;cursor:not-allowed}.fp-selection-count{color:var(--brand-primary);font-size:11px;font-weight:600}.fp-action-download{background:var(--color-success-bg)!important;border-color:#3fb9504d!important;color:var(--color-success)!important;min-width:130px;text-align:center}.fp-action-download:hover{background:#3fb95026!important}.fp-action-delete{background:var(--color-danger-bg)!important;border-color:#f851494d!important;color:var(--color-danger)!important}.fp-action-delete:hover{background:#f8514926!important}.file-breadcrumb{padding:7px 18px;display:flex;align-items:center;gap:3px;border-bottom:1px solid var(--border-muted);overflow-x:auto}.bc-item{color:var(--brand-primary);font-size:12px;cursor:pointer;padding:2px 5px;border-radius:4px;white-space:nowrap;transition:background .1s}.bc-item:hover{background:var(--brand-primary-light)}.bc-sep{color:var(--text-muted);font-size:11px}.upload-progress{padding:9px 18px;border-bottom:1px solid var(--border-muted)}.upload-progress-text{color:var(--text-secondary);font-size:11px;margin-bottom:5px}.upload-progress-bar{height:3px;background:var(--border-muted);border-radius:2px;overflow:hidden}.upload-progress-bar-fill{height:100%;background:var(--brand-primary);transition:width .3s;border-radius:2px}.new-folder-row{display:flex;align-items:center;gap:7px;padding:9px 18px;border-bottom:1px solid var(--border-muted);background:var(--bg-elevated)}.new-folder-row input{flex:1;padding:5px 9px;border:1px solid var(--border-default);border-radius:var(--radius-sm);background:var(--bg-page);color:var(--text-primary);font-size:12px;outline:none}.new-folder-row input:focus{border-color:var(--brand-primary)}.new-folder-row button{padding:5px 9px;border:none;border-radius:var(--radius-sm);background:var(--brand-primary);color:#fff;font-size:11px;cursor:pointer}.new-folder-row button:last-child{background:var(--border-default);color:var(--text-secondary)}.file-list-header{display:grid;grid-template-columns:34px 1fr 72px 72px;align-items:center;padding:5px 18px;border-bottom:1px solid var(--border-muted);color:var(--text-muted);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.flh-check{display:flex;align-items:center}.flh-name,.flh-size{cursor:pointer;transition:color .1s}.flh-name:hover,.flh-size:hover{color:var(--brand-primary)}.flh-actions{text-align:right}.file-list{flex:1;overflow-y:auto;overflow-x:hidden}.file-list.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:6px;padding:10px 14px;align-content:start}.file-item.list{display:grid;grid-template-columns:34px 28px 1fr 72px 64px;align-items:center;padding:7px 18px;cursor:pointer;transition:background .08s;border-bottom:1px solid var(--border-muted)}.file-item.list:hover{background:var(--bg-hover)}.file-item.list.selected{background:var(--bg-active);border-left:3px solid var(--brand-primary);padding-left:15px}.file-item.grid{display:flex;flex-direction:column;align-items:center;padding:10px 6px;border-radius:var(--radius-md);cursor:pointer;transition:background .08s;text-align:center}.file-item.grid:hover{background:var(--bg-hover)}.file-item.grid.selected{background:var(--bg-active);outline:2px solid var(--brand-primary)}.file-item.grid .fi-icon{font-size:28px;margin-bottom:5px}.file-item.grid .fi-info{width:100%}.file-item.grid .fi-name{font-size:11px;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-item.grid .fi-meta{font-size:10px;color:var(--text-muted)}.file-item.grid .fi-check,.file-item.grid .fi-size,.file-item.grid .fi-actions{display:none}.fi-check{display:flex;align-items:center}.fi-check input[type=checkbox]{width:15px;height:15px;accent-color:var(--brand-primary);cursor:pointer}.fi-icon{font-size:20px;display:flex;align-items:center;justify-content:center}.fi-info{min-width:0}.fi-name{color:var(--text-primary);font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fi-meta{color:var(--text-muted);font-size:11px;margin-top:1px}.fi-size{color:var(--text-secondary);font-size:11px;text-align:right}.fi-actions{display:flex;gap:3px;justify-content:flex-end}.fi-actions button{width:24px;height:24px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);cursor:pointer;font-size:12px;display:flex;align-items:center;justify-content:center;transition:all .1s}.fi-actions button:hover{background:var(--bg-hover);color:var(--text-primary)}.fi-rename-input{width:100%;padding:3px 7px;border:1px solid var(--brand-primary);border-radius:4px;background:var(--bg-page);color:var(--text-primary);font-size:12px;outline:none}.file-loading{display:flex;flex-direction:column;align-items:center;gap:10px;padding:44px 20px;color:var(--text-secondary);font-size:13px}.spinner{width:24px;height:24px;border:2px solid var(--border-default);border-top-color:var(--brand-primary);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.file-empty{display:flex;flex-direction:column;align-items:center;padding:44px 20px;color:var(--text-muted)}.file-empty-icon{font-size:40px;margin-bottom:10px;opacity:.5}.file-empty p{font-size:13px;margin-bottom:3px}.file-empty-hint{font-size:12px;color:var(--text-muted)}.drag-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--brand-primary-light);border:2px dashed var(--brand-primary);border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;z-index:10;margin:6px}.drag-overlay-content{display:flex;flex-direction:column;align-items:center;gap:6px;color:var(--brand-primary);font-size:13px;font-weight:500}.drag-icon{font-size:32px}.context-menu{position:fixed;background:var(--bg-elevated);border:1px solid var(--border-default);border-radius:var(--radius-md);padding:4px;min-width:150px;box-shadow:var(--shadow-lg);z-index:3000}.ctx-item{padding:7px 11px;color:var(--text-secondary);font-size:12px;cursor:pointer;border-radius:var(--radius-sm);transition:background .08s}.ctx-item:hover{background:var(--bg-hover);color:var(--text-primary)}.ctx-danger{color:var(--color-danger)}.ctx-danger:hover{background:var(--color-danger-bg)}.file-panel-status{padding:7px 18px;border-top:1px solid var(--border-muted);color:var(--text-muted);font-size:11px}.settings-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:2000;display:flex;align-items:center;justify-content:center;animation:fadeIn .12s ease}.settings-panel{background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-lg);padding:26px 30px;width:360px;max-width:90vw;box-shadow:var(--shadow-xl)}.settings-panel h3{color:var(--text-primary);font-size:15px;margin-bottom:22px}.settings-group{margin-bottom:16px}.settings-group label{display:block;color:var(--text-secondary);font-size:11px;font-weight:500;margin-bottom:5px;text-transform:uppercase;letter-spacing:.4px}.settings-group select,.settings-group input{width:100%;padding:9px 11px;border:1px solid var(--border-default);border-radius:var(--radius-sm);background:var(--bg-page);color:var(--text-primary);font-size:13px;outline:none;transition:border-color .15s}.settings-group select:focus,.settings-group input:focus{border-color:var(--brand-primary)}.settings-actions{display:flex;gap:10px;margin-top:22px}.settings-actions button{flex:1;padding:9px;border-radius:var(--radius-sm);font-size:13px;font-weight:500;cursor:pointer;transition:all .12s}.btn-primary{background:var(--brand-primary);color:#fff;border:none}.btn-primary:hover{background:var(--brand-primary-hover)}.btn-secondary{background:transparent;color:var(--text-secondary);border:1px solid var(--border-default)}.btn-secondary:hover{border-color:var(--text-muted);color:var(--text-primary)}.admin-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:2000;display:flex;align-items:center;justify-content:center;animation:fadeIn .12s ease}.admin-panel{background:#fff;border-radius:12px;width:640px;max-width:95vw;max-height:80vh;display:flex;flex-direction:column;box-shadow:0 16px 48px #0003;overflow:hidden}.admin-header{display:flex;align-items:center;justify-content:space-between;padding:0 16px;border-bottom:1px solid #eee}.admin-tabs{display:flex;gap:0}.admin-tabs button{padding:14px 18px;border:none;background:transparent;font-size:13px;font-weight:500;color:#888;cursor:pointer;border-bottom:2px solid transparent;transition:all .15s}.admin-tabs button.active{color:var(--brand-primary);border-bottom-color:var(--brand-primary)}.admin-tabs button:hover{color:#333}.admin-close{width:28px;height:28px;border:none;border-radius:6px;background:transparent;color:#888;cursor:pointer;font-size:16px}.admin-close:hover{background:#f0f0f0;color:#333}.admin-msg{padding:8px 16px;font-size:12px}.admin-error{background:#fef2f2;color:#b91c1c}.admin-success{background:#f0fdf4;color:#166534}.admin-add-form{padding:12px 16px;border-bottom:1px solid #f0f0f0;background:#fafbfc}.admin-form-row{display:flex;gap:8px;align-items:center}.admin-form-row input{flex:1;padding:8px 10px;border:1px solid #e0e0e0;border-radius:6px;font-size:13px;outline:none;background:#fff}.admin-form-row input:focus{border-color:var(--brand-primary)}.admin-form-row button{padding:8px 14px;background:var(--brand-primary);color:#fff;border:none;border-radius:6px;font-size:12px;font-weight:600;cursor:pointer;white-space:nowrap}.admin-form-row button:disabled{background:#ccc}.admin-user-list{flex:1;overflow-y:auto}.admin-list-header{display:grid;grid-template-columns:1fr 90px 140px;padding:8px 16px;font-size:10px;font-weight:600;color:#999;text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid #f0f0f0}.admin-user-row{display:grid;grid-template-columns:1fr 90px 140px;padding:10px 16px;align-items:center;border-bottom:1px solid #f8f8f8;transition:background .1s}.admin-user-row:hover{background:#fafbfc}.admin-user-name{font-size:13px;color:#333;font-weight:500}.admin-user-status{font-size:11px;color:#999}.admin-user-status.active{color:#16a34a}.admin-user-actions{display:flex;gap:4px}.admin-user-actions button{padding:4px 8px;border:1px solid #e8e8e8;border-radius:4px;background:#fff;font-size:11px;cursor:pointer;color:#555}.admin-user-actions button:hover{background:#f5f5f5}.admin-user-actions button:disabled{opacity:.4}.admin-btn-delete{color:#dc2626!important;border-color:#fecaca!important}.admin-btn-delete:hover{background:#fef2f2!important}.admin-loading,.admin-empty{padding:32px 16px;text-align:center;color:#999;font-size:13px}.admin-footer{padding:8px 16px;border-top:1px solid #f0f0f0;font-size:11px;color:#bbb}.admin-usage{padding:16px;overflow-y:auto;flex:1}.usage-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:20px}.usage-card{background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;padding:14px 12px;text-align:center}.usage-card-value{font-size:22px;font-weight:700;color:#1e293b}.usage-card-label{font-size:11px;color:#64748b;margin-top:4px}.usage-section-title{font-size:13px;font-weight:600;color:#475569;margin-bottom:10px;padding-bottom:6px;border-bottom:1px solid #e2e8f0}.usage-table-header{display:grid;grid-template-columns:1fr 1fr 100px;padding:6px 0;font-size:10px;font-weight:600;color:#94a3b8;text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid #e2e8f0}.usage-table-row{display:grid;grid-template-columns:1fr 1fr 100px;padding:8px 0;font-size:12px;color:#475569;border-bottom:1px solid #f1f5f9}@media(max-width:600px){.admin-panel{width:100vw;max-height:100vh;border-radius:0}.usage-summary{grid-template-columns:repeat(2,1fr)}.admin-form-row{flex-wrap:wrap}.admin-form-row input{min-width:100px}}.admin-schedule{padding:20px;overflow-y:auto;flex:1}.schedule-info{margin-bottom:20px}.schedule-info p{font-size:13px;color:#666;line-height:1.5}.schedule-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:20px}.schedule-field label{display:block;font-size:11px;font-weight:600;color:#888;text-transform:uppercase;letter-spacing:.4px;margin-bottom:6px}.schedule-field input,.schedule-field select{width:100%;padding:10px 12px;border:1px solid #e0e0e0;border-radius:8px;font-size:14px;outline:none;background:#fff}.schedule-field input:focus,.schedule-field select:focus{border-color:var(--brand-primary)}.schedule-field.full-width{grid-column:1 / -1}.schedule-save-btn{width:100%;padding:12px;background:var(--brand-primary);color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer}.schedule-save-btn:hover{background:var(--brand-primary-hover)}.schedule-note{padding:12px 16px;background:#fffbeb;border:1px solid #fde68a;border-radius:8px;font-size:12px;color:#92400e;line-height:1.5}.schedule-note strong{color:#78350f}@media(max-width:600px){.file-panel{width:100vw}.login-box{width:100%;padding:24px 20px;border-radius:0;border:none}.login-container:before{display:none}.file-panel-actions{flex-direction:column;align-items:stretch}.fp-actions-left,.fp-actions-right{width:100%;justify-content:flex-start;flex-wrap:wrap}.file-item.list{grid-template-columns:30px 26px 1fr 56px}.fi-size{display:none}.file-list-header{grid-template-columns:30px 1fr 56px}.flh-size{display:none}}@media(max-width:400px){.toolbar{padding:0 8px}.toolbar-left .session-info{display:none}.toolbar-btn{width:28px;height:28px}}
