:root{
  /* Neutrale standaard-huisstijl. Het dashboard zet deze variabelen bij het
     laden om naar de accentkleur van de klantomgeving (zie applyBranding). */
  --brand-dark: #1d4ed8;
  --brand-mid:  #2563eb;
  --brand-light:#7ba2f1;
  --brand-soft: #cfdefb;
  --brand-border: rgba(37,99,235,.28);
  --brand-tint:   rgba(37,99,235,.10);
  --brand-glow:   rgba(37,99,235,.14);
  --brand-wash-1: rgba(123,162,241,.16);
  --brand-wash-2: rgba(37,99,235,.10);

  --bg: #f5f7fa;
  --panel: #ffffff;
  --border: #e5e9f0;
  --text: #0f172a;
  --muted: #64748b;

  --shadow: 0 14px 28px rgba(15,23,42,.08);
  --radius: 16px;
}
*{ box-sizing:border-box; }

body{
  margin:0;
  min-height:100vh;
  font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Arial;
  background:
    radial-gradient(1200px 520px at 10% -10%, var(--brand-wash-1), transparent 60%),
    radial-gradient(1000px 420px at 90% -5%, var(--brand-wash-2), transparent 60%),
    var(--bg);
  color:var(--text);
}

/* Header */
.topbar{
  position:sticky; top:0; z-index:20;
  display:flex; align-items:flex-end; justify-content:space-between; gap:16px;
  padding:14px 18px; background:#fff; border-bottom:2px solid var(--brand-soft);
}
.brand{ display:flex; align-items:center; gap:14px; }
.brand-logo{ height:46px; max-width:190px; width:auto; object-fit:contain; display:block; }
.brand-mark{ color:var(--brand-mid); display:flex; }
.brand-mark[hidden]{ display:none; }
.title{ font-size:22px; font-weight:900; color:var(--brand-dark); letter-spacing:.2px; }
.subtitle{ font-size:13px; color:var(--muted); margin-top:2px; }
.topbar-right{ display:flex; gap:10px; align-items:center; flex-wrap:wrap; justify-content:flex-end; }
.whoami{
  font-size:12px; color:var(--muted); padding:6px 10px;
  border:1px solid var(--brand-border); border-radius:999px; background:var(--brand-tint);
}
.tenant-switch{ display:flex; align-items:center; gap:6px; font-size:12px; font-weight:800; color:var(--muted); }
.tenant-switch[hidden]{ display:none; }
.tenant-switch select{
  height:34px; padding:0 10px; border-radius:10px; border:1px solid var(--brand-border);
  background:#fff; color:var(--brand-dark); font-weight:800; font-size:.85rem; font-family:inherit;
}

/* Balk zolang de platformbeheerder als klant meekijkt. Bewust opvallend en
   niet in de huisstijl van de klant: het moet nooit onduidelijk zijn dat je
   in een simulatie zit. */
.simulation-bar{
  display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap;
  max-width:1040px; margin:14px auto 0; padding:.7rem 1rem;
  border-radius:12px; border:1px solid rgba(217,119,6,.35);
  background:#fef3c7; color:#92400e; font-weight:700; font-size:13px;
}
.simulation-bar[hidden]{ display:none; }
.simulation-bar .btn{ background:#92400e; border-color:#92400e; color:#fff; height:32px; }

/* Eén PC met meerdere beeldschermen: de schermen staan in één blok, met de
   spiegelschakelaar erboven. */
.pc-groep{
  grid-column:1 / -1;
  border:1px solid var(--brand-border); border-radius:16px;
  background:var(--brand-tint); padding:12px; margin:0;
}
.pc-kop{
  display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap;
  padding:2px 4px 10px; font-size:13px; color:var(--brand-dark);
}
.pc-mirror-label{ margin:0; font-weight:700; }
.pc-schermen{ display:grid; grid-template-columns:repeat(auto-fill, minmax(280px, 1fr)); gap:12px; }

main{ max-width:1040px; margin:0 auto; padding:20px 18px 40px; }
h2{ font-size:18px; margin:22px 0 4px; color:var(--brand-dark); font-weight:900; }
section:first-of-type h2{ margin-top:6px; }
.muted{ color:var(--muted); font-size:13px; }
.notice{
  margin:18px 0; padding:.9rem 1rem; border-radius:12px; font-weight:700;
  background:#fef3c7; color:#92400e; border:1px solid rgba(217,119,6,.35);
}
.section-head{ display:flex; align-items:center; justify-content:space-between; gap:12px; margin:22px 0 4px; }
.section-head h2{ margin:0; }

/* Knoppen */
button{ font-family:inherit; }
.btn, button{
  height:38px; padding:0 16px; border-radius:12px;
  border:1px solid var(--brand-border); background:#fff; cursor:pointer;
  font-weight:900; color:var(--brand-dark);
  transition: background .12s ease, transform .06s ease, border-color .12s ease;
}
.btn:hover, button:hover{ background:var(--brand-tint); }
.btn:active, button:active{ transform:translateY(1px); }
.btn.primary{ background:linear-gradient(135deg, var(--brand-light), var(--brand-mid)); border:none; color:#fff; }
.btn.primary:hover{ background:linear-gradient(135deg, var(--brand-mid), var(--brand-dark)); }
.btn.danger{ border-color:rgba(239,68,68,.55); color:#b91c1c; background:#fff; }
.btn.danger:hover{ background:#fff1f2; border-color:rgba(239,68,68,.8); }
.btn:disabled{ opacity:.5; cursor:not-allowed; }

/* Kaarten */
.cards{ display:grid; grid-template-columns:repeat(auto-fill, minmax(310px, 1fr)); gap:16px; }
.card{
  background:var(--panel); border:1px solid var(--border); border-radius:var(--radius);
  padding:16px 18px; box-shadow:var(--shadow);
}
.card.pending{ border-color:rgba(217,119,6,.5); }
.card h3{ margin:0 0 .3rem; font-size:16px; color:var(--text); display:flex; align-items:center; gap:.5rem; }
.dot{ width:9px; height:9px; border-radius:50%; background:#94a3b8; flex:none; }
.dot.online{ background:#22c55e; box-shadow:0 0 8px rgba(34,197,94,.5); }
.dot.offline{ background:#94a3b8; }
.code{
  font-family:ui-monospace, Menlo, monospace; font-size:1.5rem; letter-spacing:.15em;
  background:var(--brand-tint); color:var(--brand-dark); padding:.35rem .7rem;
  border-radius:10px; display:inline-block; margin:.3rem 0; font-weight:800;
}
/* Live schermpreview */
.thumb{ margin:.6rem 0; border-radius:10px; overflow:hidden; background:#0b1220; border:1px solid var(--border); display:grid; place-items:center; }
.thumb.landscape{ aspect-ratio:16/9; width:100%; }
.thumb.portrait{ aspect-ratio:9/16; max-width:160px; }
.thumb img{ width:100%; height:100%; object-fit:cover; display:block; }
.thumb-empty{ color:#64748b; font-size:.8rem; padding:1.4rem; }

.url{ font-size:.82rem; color:var(--brand-mid); word-break:break-all; font-weight:700; }
.row{ display:flex; gap:.5rem; flex-wrap:wrap; margin-top:.8rem; }
.meta{ font-size:.72rem; color:var(--muted); margin-top:.6rem; }

/* Klantkaart */
.tenant-head{ display:flex; align-items:center; gap:.7rem; margin-bottom:.4rem; }
.tenant-logo{
  width:52px; height:52px; border-radius:12px; border:1px solid var(--border);
  background:#fff; display:grid; place-items:center; overflow:hidden; flex:none;
}
.tenant-logo img{ max-width:100%; max-height:100%; object-fit:contain; }
.tenant-logo .swatch{ width:100%; height:100%; }
.tenant-name{ font-size:16px; font-weight:800; }
.card.current{ border-color:var(--brand-mid); box-shadow:0 0 0 3px var(--brand-glow), var(--shadow); }

/* Inline invoervelden op kaarten */
.card input[type="text"], .card input[type="url"]{
  width:100%; margin-top:.5rem; padding:8px 12px; border-radius:12px;
  border:1px solid var(--brand-border); background:#fff; color:var(--brand-dark);
  font-weight:800; font-size:.9rem; outline:none;
}
.card input:focus{ border-color:var(--brand-mid); box-shadow:0 0 0 4px var(--brand-glow); }

/* Mededeling-badges */
.badge{ display:inline-block; font-size:.7rem; font-weight:800; padding:.15rem .55rem; border-radius:999px; text-transform:uppercase; letter-spacing:.03em; }
.badge.info{ background:#e0f2fe; color:#075985; }
.badge.warning{ background:#fef3c7; color:#92400e; }
.badge.success{ background:#dcfce7; color:#166534; }
.badge.urgent{ background:#fee2e2; color:#991b1b; }
.badge.live{ background:#dcfce7; color:#166534; border:1px solid #22c55e; }
.badge.off{ background:#f1f5f9; color:#64748b; }
.ann-title{ font-size:16px; font-weight:800; margin:.5rem 0 .2rem; color:var(--text); }
.ann-body{ font-size:.85rem; color:var(--muted); max-height:3.6em; overflow:hidden; }

/* Modal */
.modal-overlay{
  position:fixed; inset:0; background:rgba(15,23,42,.45); display:grid; place-items:center;
  z-index:50; padding:1rem;
}
.modal-overlay[hidden]{ display:none; }   /* fix: overschrijft display:grid bij hidden */
.modal{
  background:#fff; border:1px solid var(--border); border-radius:18px; padding:1.4rem;
  width:min(560px, 96vw); max-height:90vh; overflow:auto; box-shadow:var(--shadow); color:var(--text);
}
.modal h3{ margin:0 0 1rem; color:var(--brand-dark); font-weight:900; }
.field{ margin-bottom:.9rem; }
.field label{ display:block; font-size:12px; font-weight:700; color:var(--muted); margin-bottom:.3rem; }
.field input, .field textarea, .field select{
  width:100%; padding:9px 12px; border-radius:12px; border:1px solid var(--brand-border);
  background:#fff; color:var(--brand-dark); font-weight:700; font-size:.9rem; font-family:inherit; outline:none;
}
.field input:focus, .field textarea:focus, .field select:focus{ border-color:var(--brand-mid); box-shadow:0 0 0 4px var(--brand-glow); }
/* Gelijke hoogte voor enkelregelige velden (NIET checkbox/radio) */
.field input:not([type="checkbox"]):not([type="radio"]), .field select{ height:42px; }
.field input[type="color"]{ padding:4px; height:42px; cursor:pointer; }
.field input[type="file"]{ font-weight:600; padding:8px 10px; }
.field textarea{ height:auto; min-height:90px; resize:vertical; }
.chk input{ height:auto; }
/* datetime-local: waarde zwart (i.p.v. lichte browserkleur) */
.field input[type="datetime-local"]{ color:#0f172a; }
.field input[type="datetime-local"]::-webkit-datetime-edit,
.field input[type="datetime-local"]::-webkit-datetime-edit-fields-wrapper,
.field input[type="datetime-local"]::-webkit-datetime-edit-text,
.field input[type="datetime-local"]::-webkit-datetime-edit-day-field,
.field input[type="datetime-local"]::-webkit-datetime-edit-month-field,
.field input[type="datetime-local"]::-webkit-datetime-edit-year-field,
.field input[type="datetime-local"]::-webkit-datetime-edit-hour-field,
.field input[type="datetime-local"]::-webkit-datetime-edit-minute-field{ color:#0f172a; }
.field-row{ display:flex; gap:.8rem; }
.field-row .field{ flex:1 1 0; min-width:0; }
.modal-actions{ display:flex; justify-content:flex-end; gap:.6rem; margin-top:1rem; }
.modal-actions .spacer{ margin-right:auto; }

/* Logo-voorbeeld in de huisstijl-modal */
.logo-preview{
  display:flex; align-items:center; gap:.8rem; padding:.7rem .8rem; margin-bottom:.5rem;
  border:1px dashed var(--border); border-radius:12px; background:#f8fafc; min-height:56px;
}
.logo-preview img{ max-height:56px; max-width:170px; object-fit:contain; }
.logo-preview .placeholder{ color:var(--muted); font-size:.85rem; font-weight:700; }

/* Targeting (schermkeuze) */
.chk{ display:flex; align-items:center; gap:.5rem; font-size:.9rem; font-weight:600; color:var(--text); margin:.3rem 0; cursor:pointer; }
.chk input{ width:auto; }
.tgt-list{
  margin-top:.5rem; padding:.6rem .8rem; border:1px solid var(--border); border-radius:12px;
  background:#f8fafc; max-height:180px; overflow:auto;
}

/* Automatisch inloggen (webpagina-modal) */
.login-box{
  margin:-.3rem 0 .9rem; padding:.8rem .9rem; border:1px solid var(--border);
  border-radius:12px; background:#f8fafc;
}
.login-box .muted{ margin:.2rem 0 .6rem; }
.muted.warn{
  color:#92400e; background:#fef3c7; border:1px solid rgba(217,119,6,.35);
  border-radius:10px; padding:.5rem .7rem; font-weight:600;
}
.adv summary{
  cursor:pointer; font-size:.8rem; font-weight:800; color:var(--brand-dark);
  padding:.2rem 0; list-style:revert;
}
.adv[open] summary{ margin-bottom:.5rem; }
.adv code{ background:var(--brand-tint); padding:.05rem .3rem; border-radius:5px; }

/* Bediening op afstand */
.modal.wide{ width:min(1100px, 96vw); }
.remote-bar{ display:flex; gap:.5rem; margin-bottom:.8rem; }
.remote-bar input{
  flex:1; min-width:0; height:38px; padding:0 12px; border-radius:12px;
  border:1px solid var(--brand-border); background:#fff; color:var(--brand-dark);
  font-weight:700; font-size:.85rem; outline:none;
}
.remote-bar input:focus{ border-color:var(--brand-mid); box-shadow:0 0 0 4px var(--brand-glow); }
.remote-view{
  border-radius:12px; overflow:hidden; background:#0b1220; border:1px solid var(--border);
  display:grid; place-items:center; min-height:220px; cursor:crosshair;
}
.remote-view img{ width:100%; height:auto; display:block; }
