/* ============================================================
   Gedeeld stylesheet voor het hele dashboard
   Licht/donker via [data-theme] op <html>, geregeld door theme.js
   ============================================================ */

:root {
    --bg-page: #f4f4f4;
    --bg-container: #ffffff;
    --bg-subnavbar: #34495e;
    --bg-subnavbar-btn: #2c3e50;
    --bg-subnavbar-btn-hover: #1abc9c;
    --bg-input: #ffffff;
    --bg-table-header: #eee;
    --bg-code: #f9f9f9;
    --border-color: #ccc;
    --border-color-soft: #ddd;
    --text-primary: #222;
    --text-secondary: #555;
    --text-muted: #888;
    --link-color: #0073e6;

    --color-action: #2c3e50;
    --color-delete: #c0392b;
    --color-history: #2980b9;
    --color-edit: #f39c12;
    --color-check: #2980b9;
    --color-update: #1abc9c;
    --color-reboot: #e67e22;
    --color-vault: #8e44ad;
    --color-portal: #16a085;
    --color-success: green;
    --color-error: #c0392b;
    --color-warn: #e67e22;

    --row-online: #d4f7dc;
    --row-offline: #f9d6d5;

    --shadow-soft: 0 2px 5px rgba(0,0,0,0.15);
}

[data-theme="dark"] {
    --bg-page: #1a1d21;
    --bg-container: #2a2e33;
    --bg-subnavbar: #15171a;
    --bg-subnavbar-btn: #22252a;
    --bg-subnavbar-btn-hover: #1abc9c;
    --bg-input: #33373d;
    --bg-table-header: #22252a;
    --bg-code: #23262b;
    --border-color: #444;
    --border-color-soft: #3a3d42;
    --text-primary: #e8e8e8;
    --text-secondary: #b8b8b8;
    --text-muted: #999;
    --link-color: #5aa9ff;

    --row-online: #1f3a26;
    --row-offline: #3a2020;

    --shadow-soft: 0 2px 6px rgba(0,0,0,0.5);
}

/* ============ Basis ============ */
html, body {
    background: var(--bg-page);
    color: var(--text-primary);
}

.container {
    padding: 20px;
    font-family: Arial, sans-serif;
    background: var(--bg-page);
    color: var(--text-primary);
}

h2, h3, h4 { color: var(--text-primary); }

/* ============ Subnavbar (VLAN-tabs e.d.) ============ */
.subnavbar {
    background: var(--bg-subnavbar);
    padding: 5px 10px;
    display: flex;
    align-items: center;
    color: white;
    font-size: 14px;
}
.subnavbar button {
    background: var(--bg-subnavbar-btn);
    color: white;
    border: none;
    padding: 5px 10px;
    margin-right: 8px;
    cursor: pointer;
    border-radius: 3px;
    font-size: 14px;
}
.subnavbar button.active, .subnavbar button:hover {
    background: var(--bg-subnavbar-btn-hover);
}

/* ============ Tabellen ============ */
.table-container { margin-top: 15px; }
table { width: 100%; border-collapse: collapse; }
th, td {
    border: 1px solid var(--border-color);
    padding: 6px;
    text-align: left;
    font-size: 14px;
    vertical-align: top;
    color: var(--text-primary);
}
th { background: var(--bg-table-header); cursor: pointer; }

/* ============ Formuliervelden ============ */
input[type=text], input[type=number], input[type=password], select, textarea {
    padding: 5px;
    font-size: 14px;
    background: var(--bg-input);
    color: var(--text-primary);
    border: 1px solid var(--border-color);
    box-sizing: border-box;
}
#search {
    padding: 8px;
    width: 250px;
    font-size: 14px;
    border-radius: 4px;
    border: 1px solid var(--border-color);
    background: var(--bg-input);
    color: var(--text-primary);
}

/* ============ Knoppen ============ */
button.action, button.submit, button.add {
    background: var(--color-action); color: white; padding: 6px 10px;
    border: none; cursor: pointer; border-radius: 3px; font-size: 14px;
}
button.delete, button.remove {
    background: var(--color-delete); color: white; padding: 5px 8px;
    border: none; border-radius: 3px; cursor: pointer; font-size: 14px;
}
button.history { background: var(--color-history); color: white; padding: 5px 8px; border: none; border-radius: 3px; cursor: pointer; }
button.editbtn { background: var(--color-edit); color: white; padding: 5px 8px; border: none; border-radius: 3px; cursor: pointer; }
button.notesbtn { background: var(--color-portal); color: white; padding: 5px 10px; border: none; border-radius: 3px; cursor: pointer; font-size: 14px; }
button.check { background: var(--color-check); color: white; padding: 4px 6px; border: none; border-radius: 3px; cursor: pointer; font-size: 12px; }
button.update, button.save { background: var(--color-update); color: white; padding: 4px 6px; border: none; border-radius: 3px; cursor: pointer; font-size: 12px; }
button.reboot { background: var(--color-reboot); color: white; padding: 4px 6px; border: none; border-radius: 3px; cursor: pointer; font-size: 12px; }
button.vaultbtn { background: var(--color-vault); color: white; padding: 4px 6px; border: none; border-radius: 3px; cursor: pointer; font-size: 12px; }
button.share { background: var(--color-vault); color: white; padding: 5px 10px; border: none; cursor: pointer; border-radius: 3px; font-size: 12px; }
button.copybtn { background: var(--color-portal); color: white; padding: 2px 6px; border: none; cursor: pointer; border-radius: 3px; font-size: 11px; }
button.revoke { background: var(--color-delete); color: white; padding: 2px 6px; border: none; cursor: pointer; border-radius: 3px; font-size: 11px; }
button.icon { background: none; border: none; cursor: pointer; font-size: 16px; color: var(--text-primary); }
button.refresh { background: var(--color-history); color: white; padding: 5px 10px; border: none; border-radius: 3px; cursor: pointer; font-size: 12px; }
button.refreshAll { background: var(--color-action); color: white; padding: 6px 10px; border: none; cursor: pointer; border-radius: 3px; font-size: 14px; }
.icon-btn { background: none; border: none; cursor: pointer; font-size: 16px; padding: 0 4px; margin: 0; color: var(--text-primary); }

a.download, .openbtn, .portalbtn {
    background: var(--color-portal); color: white; padding: 5px 10px;
    border-radius: 3px; text-decoration: none; font-size: 13px; margin-right: 5px;
    display: inline-block;
}
.portalbtn { display: inline-flex; align-items: center; gap: 4px; margin: 2px 2px 2px 0; padding: 3px 8px; }
.portalbtn .icon { font-size: 13px; }
.addportalbtn { background: var(--color-vault); color: white; padding: 3px 8px; border: none; border-radius: 3px; cursor: pointer; font-size: 12px; margin-top: 4px; }
.portal-row { display: flex; align-items: center; gap: 4px; margin-bottom: 2px; }
.portal-del { background: var(--color-delete); color: white; border: none; border-radius: 3px; cursor: pointer; font-size: 10px; padding: 1px 5px; }

.linkbtn {
    background: var(--bg-subnavbar); color: white; padding: 4px 6px; border: none;
    border-radius: 3px; cursor: pointer; font-size: 12px; text-decoration: none;
    display: inline-block; margin: 2px 2px 2px 0;
}

/* ============ Statusrijen / badges ============ */
tr.host-online { background: var(--row-online); }
tr.host-offline { background: var(--row-offline); }
tr.host-pending { background: inherit; }
td.current-ip { font-weight: bold; }

.os-badge {
    display: inline-block; font-size: 10px; font-weight: bold; padding: 2px 5px;
    border-radius: 3px; margin-right: 6px; color: white; vertical-align: middle;
}
.os-badge.linux { background: #f7941e; }
.os-badge.windows { background: #0078d7; }

.status-success { color: var(--color-update); font-weight: bold; }
.status-failed { color: var(--color-error); font-weight: bold; }

/* ============ Meldingen ============ */
.message { color: var(--color-success); margin-bottom: 10px; font-size: 14px; }
.error-text { color: var(--color-error); font-size: 12px; }
.loading-text { color: var(--text-muted); font-size: 12px; }

pre {
    white-space: pre-wrap; max-height: 150px; overflow: auto;
    background: var(--bg-code); padding: 5px; border: 1px solid var(--border-color-soft);
    font-size: 12px; color: var(--text-primary);
}

/* ============ Modals (algemeen patroon) ============ */
.modal {
    display: none; position: fixed; z-index: 1000; padding-top: 60px;
    left: 0; top: 0; width: 100%; height: 100%; overflow: auto;
    background-color: rgba(0,0,0,0.5);
}
.modal-content {
    background: var(--bg-container); color: var(--text-primary);
    margin: auto; padding: 20px; border: 1px solid var(--border-color);
    width: 70%; border-radius: 5px;
}
.modal-content.wide { width: 600px; }
.close {
    color: var(--text-muted); float: right; font-size: 28px; font-weight: bold; cursor: pointer;
}
.close:hover, .close:focus { color: var(--text-primary); text-decoration: none; cursor: pointer; }

/* ============ Bewerk-modal (Beheer) ============ */
.edit-field { margin-bottom: 12px; }
.edit-field label { display: block; font-size: 13px; margin-bottom: 3px; color: var(--text-secondary); }
.edit-field input { width: 100%; }
hr.edit-sep { border: none; border-top: 1px solid var(--border-color-soft); margin: 15px 0; }
.danger-zone { margin-top: 15px; padding-top: 10px; }

.vault-item { display: flex; justify-content: space-between; align-items: center; padding: 2px 0; font-size: 12px; }
#vaultSelect { margin-bottom: 5px; }

.note-item { border: 1px solid var(--border-color-soft); border-radius: 4px; padding: 10px; margin-bottom: 10px; }
.note-item input[type=text] { font-weight: bold; margin-bottom: 6px; width: 100%; }
.note-item textarea { width: 100%; min-height: 150px; padding: 6px; box-sizing: border-box; font-family: monospace; font-size: 12px; white-space: pre; }
.note-actions { margin-top: 6px; display: flex; gap: 6px; }

/* ============ Performance-kaarten ============ */
.bar-wrap { background: #e0e0e0; border-radius: 3px; overflow: hidden; height: 14px; width: 100%; }
[data-theme="dark"] .bar-wrap { background: #40444a; }
.bar-fill { height: 100%; background: var(--color-update); }
.bar-fill.warn { background: var(--color-warn); }
.bar-fill.crit { background: var(--color-error); }
.bar-label { font-size: 11px; margin-top: 2px; color: var(--text-secondary); }

.host-card { background: var(--bg-container); border: 1px solid var(--border-color-soft); border-radius: 6px; margin-top: 15px; padding: 12px 16px; }
.host-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; padding-bottom: 8px; border-bottom: 1px solid var(--border-color-soft); }
.host-title { font-size: 15px; color: var(--text-primary); }
.host-title small { display: block; color: var(--text-muted); font-weight: normal; }
.metrics-row { display: flex; gap: 24px; margin-bottom: 10px; }
.metric-block { flex: 1; max-width: 300px; }
.metric-block .metric-title { font-size: 12px; font-weight: bold; color: var(--text-secondary); margin-bottom: 3px; }
.disks-grid { display: flex; flex-wrap: wrap; gap: 14px; }
.disk-entry { width: 220px; }
.disk-entry .disk-label { font-size: 12px; font-weight: bold; margin-bottom: 2px; word-break: break-all; }

/* ============ Bestanden (upload/share) ============ */
.upload-form { margin-bottom: 20px; padding: 15px; background: var(--bg-container); border-radius: 5px; }
.share-item {
    font-size: 11px; background: var(--bg-table-header); border: 1px solid var(--border-color-soft);
    border-radius: 3px; padding: 4px 6px; margin-top: 4px; display: flex; align-items: center; gap: 6px; flex-wrap: wrap;
}
.share-link-input { width: 220px; font-size: 11px; padding: 2px; }

/* ============ Vault ============ */
.add-row { display: flex; gap: 8px; margin-bottom: 15px; align-items: flex-start; }
.add-row .field-wrap { flex: 1; }
.field-wrap { display: flex; align-items: center; gap: 4px; }
.field-wrap input { flex: 1; }

/* ============ Whitelist/Security (code-generator) ============ */
.code-display {
    font-size: 32px; font-weight: bold; letter-spacing: 6px; background: var(--bg-container);
    color: var(--text-primary); padding: 15px; border-radius: 5px; display: inline-block;
    margin: 10px 0; border: 1px solid var(--border-color);
}
.code-timer { color: var(--color-warn); font-weight: bold; }

/* ============ Thema-toggle knop (in de navbar) ============ */
.theme-toggle {
    background: none;
    border: 1px solid rgba(255,255,255,0.3);
    color: white;
    padding: 5px 10px;
    border-radius: 3px;
    cursor: pointer;
    font-size: 14px;
}
.theme-toggle:hover { background: rgba(255,255,255,0.15); }
