:root{--primary-green: #8dc63f;--primary-blue: #00aaad;--bg-light: #f5f7fa;--bg-surface: #ffffff;--text-main: #333333;--text-secondary: #666666;--border-color: #e0e0e0;--shadow-color: rgba(0,0,0,.05);--hover-bg: #f8f9fa;--input-bg: #ffffff;--input-border: #dddddd;--table-header-bg: #f9f9f9}body.dark-mode{--bg-light: #121212;--bg-surface: #1e1e1e;--text-main: #e0e0e0;--text-secondary: #a0a0a0;--border-color: #333333;--shadow-color: rgba(0,0,0,.3);--hover-bg: #2a2a2a;--input-bg: #2c2c2c;--input-border: #444444;--table-header-bg: #252525}body,html{margin:0;padding:0;height:100%;font-family:Segoe UI,Roboto,Helvetica,Arial,sans-serif;background-color:var(--bg-light);color:var(--text-main);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color .3s ease,color .3s ease}*{box-sizing:border-box}body.dark-mode .card,body.dark-mode .settings-card,body.dark-mode .port-config-container,body.dark-mode .client-table-container{background:var(--bg-surface);color:var(--text-main);box-shadow:0 2px 10px var(--shadow-color)}body.dark-mode input,body.dark-mode select,body.dark-mode textarea{background-color:var(--input-bg);color:var(--text-main);border-color:var(--input-border)}body.dark-mode input:disabled,body.dark-mode select:disabled,body.dark-mode textarea:disabled{background-color:#333;color:#666}body.dark-mode h1,body.dark-mode h2,body.dark-mode h3,body.dark-mode h4,body.dark-mode h5,body.dark-mode h6,body.dark-mode .table-header h3{color:var(--text-main)!important}body.dark-mode table th{background-color:#252525!important;color:#bbb!important;border-bottom-color:var(--border-color)!important}body.dark-mode table td{border-bottom-color:var(--border-color)!important;color:var(--text-main)}body.dark-mode table tr:hover{background-color:var(--hover-bg)!important}body.dark-mode .refresh-btn{color:var(--text-secondary)!important}body.dark-mode .overview-container .status-cards .card{background:var(--bg-surface);color:var(--text-main)}body.dark-mode .overview-container .status-cards .card .value{color:var(--text-main)}body.dark-mode .overview-container .status-cards .card .label{color:var(--text-secondary)}body.dark-mode .graph-container,body.dark-mode .graph-card{background:var(--bg-surface);color:var(--text-main)}body.dark-mode .graph-container h3,body.dark-mode .graph-card h3{color:var(--text-main);border-bottom-color:var(--border-color)}body.dark-mode .graph-container .current-value,body.dark-mode .graph-container .current-count,body.dark-mode .graph-card .current-value,body.dark-mode .graph-card .current-count{color:var(--text-secondary)}body.dark-mode .graph-container .stats-row,body.dark-mode .graph-card .stats-row{border-top-color:var(--border-color)}body.dark-mode .graph-container .stats-row .stat-item .label,body.dark-mode .graph-card .stats-row .stat-item .label{color:var(--text-secondary)}body.dark-mode .client-table-container table .badge{background-color:#1976d24d!important;color:#90caf9!important}body.dark-mode .ports-status-table{background:var(--bg-surface)}body.dark-mode .ports-status-table table th{background-color:#252525;color:#bbb}body.dark-mode .ports-status-table table td{border-bottom-color:var(--border-color);color:var(--text-main)}body.dark-mode .ports-status-table table tr:hover{background-color:var(--hover-bg)}body.dark-mode .ports-status-table table .status-badge{background-color:#333;color:#aaa}body.dark-mode .ports-status-table table .status-badge.active{background-color:#2e7d324d;color:#81c784}body.dark-mode .ports-status-table table .edit-btn{background-color:var(--input-bg);border-color:var(--border-color);color:var(--text-main)}body.dark-mode .ports-status-table table .edit-btn:hover{border-color:var(--primary-blue);color:var(--primary-blue)}body.dark-mode .port-module .rj45-jack{background:#111;border-color:#555}body.dark-mode .port-module .port-number{color:var(--text-secondary)}body.dark-mode .port-module:hover .rj45-jack{border-color:#888}body.dark-mode .api-container h2,body.dark-mode .api-container .intro{color:var(--text-main)}body.dark-mode .api-container .endpoint-category{background:var(--bg-surface)}body.dark-mode .api-container .endpoint-category h3{border-bottom-color:var(--border-color)}body.dark-mode .api-container .endpoint-card{background-color:var(--hover-bg);border-color:var(--border-color)}body.dark-mode .api-container .endpoint-card:hover{background-color:#333}body.dark-mode .api-container .endpoint-card .details .url{color:var(--text-main)}body.dark-mode .api-container .endpoint-card .details .description{color:var(--text-secondary)}body.dark-mode .users-page h2{color:var(--text-main)}body.dark-mode .users-page .user-card{background:var(--bg-surface);border-color:var(--border-color)}body.dark-mode .users-page .user-card .card-header{border-bottom-color:var(--border-color)}body.dark-mode .users-page .user-card .card-header .info h3{color:var(--text-main)}body.dark-mode .users-page .user-card .card-header .actions .icon-btn:hover{background-color:var(--hover-bg)}body.dark-mode .users-page .user-card .card-header .role-badge.admin{background-color:#00aaad33;color:#4dd0e1}body.dark-mode .users-page .user-card .card-header .role-badge.standard{background-color:#8dc63f33;color:#aed581}body.dark-mode .users-page .user-card .permissions-list .tags .tag{background-color:#222;color:var(--text-secondary);border-color:var(--border-color)}body.dark-mode .system-container h2{color:var(--text-main)}body.dark-mode .system-container .tabs{border-bottom-color:var(--border-color)}body.dark-mode .system-container .tabs button{color:var(--text-secondary)}body.dark-mode .system-container .tabs button:hover{color:var(--primary-blue);background-color:#00aaad1a}body.dark-mode .system-container .tabs button.active{color:var(--primary-blue);border-bottom-color:var(--primary-blue)}body.dark-mode .system-container .logs-card{background:var(--bg-surface);border-color:var(--border-color)}body.dark-mode .system-container .logs-card .log-list-header{background-color:#252525;color:#bbb;border-bottom-color:var(--border-color)}body.dark-mode .system-container .logs-card .log-list-body .log-row{border-bottom-color:var(--border-color)}body.dark-mode .system-container .logs-card .log-list-body .log-row:hover{background-color:var(--hover-bg)}body.dark-mode .system-container .logs-card .log-list-body .col.msg{color:var(--text-main)}body.dark-mode .system-container .logs-card .log-list-body .col.time{color:var(--text-secondary)}body.dark-mode .system-container .update-card{background:var(--bg-surface)}body.dark-mode .system-container .update-card h2{color:var(--text-main)}body.dark-mode .system-container .update-card .current-version .label{color:var(--text-secondary)}body.dark-mode .system-container .update-card .update-actions .checking-status .spinner{border-color:#444;border-top-color:var(--primary-blue)}body.dark-mode .system-container .update-card .update-actions .update-found .info-box{background-color:#1976d233}body.dark-mode .system-container .update-card .update-actions .update-found .info-box h4{color:#90caf9}body.dark-mode .system-container .update-card .update-actions .update-found .info-box p{color:#e0e0e0}body.dark-mode .system-container .update-card .update-actions .progress-container .progress-bar{background-color:#444}
