:root{--bg:#06080c;--panel:#0d1219;--panel2:#131b25;--border:#1e2a38;--text:#e2e8f0;--muted:#8592a6;--green:#22d37f;--red:#ff5c6c;--orange:#f5a524;--blue:#4ea1ff;--mono:ui-monospace,SFMono-Regular,'JetBrains Mono',Menlo,Consolas,monospace}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--text);font:13px/1.4 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
header{position:sticky;top:0;z-index:5;background:var(--panel);border-bottom:1px solid var(--border);display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;padding:10px 16px}
.brand{font-weight:700;font-size:16px}.ro{font-size:11px;font-weight:600;color:var(--muted);border:1px solid var(--border);border-radius:10px;padding:1px 7px;margin-left:6px}
nav{display:flex;flex-wrap:wrap;gap:4px;flex:1}
nav a{color:var(--muted);text-decoration:none;padding:6px 10px;border-radius:6px}
nav a.active,nav a:hover{background:var(--panel2);color:var(--text)}
.hdr-right{display:flex;align-items:center;gap:12px;font-size:12px}
.hdr-right form{margin:0}
button.link{background:none;border:none;color:var(--blue);cursor:pointer;font:inherit;padding:0}
main{padding:16px;max-width:1400px;margin:0 auto}
h2{margin:6px 0 14px;font-size:20px}h3{margin:18px 0 8px;font-size:15px;color:var(--muted)}
.muted{color:var(--muted)}.pos{color:var(--green)}.neg{color:var(--red)}.unk{color:var(--muted);font-style:italic}
.urgent{background:#b3121b;color:#fff;font-weight:700;padding:12px 16px;border-bottom:2px solid #ff3b3b;font-size:15px}
.urgent .item::before{content:"⚠ "}
.hidden{display:none}
.banner{margin:10px 16px;padding:10px 12px;border-radius:8px;border:1px solid var(--border);background:var(--panel)}
.banner.warn{border-color:var(--orange);color:#ffd28a;background:#2a2112}
.banner.err{border-color:var(--red);color:#ffb3b3;background:#2a1414}
.banner ul{margin:4px 0 0 18px;padding:0}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}
.card{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:14px}
.card .lbl{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.04em}
.card .val{font-size:24px;font-weight:700;margin-top:4px;word-break:break-word}
.card .sub{font-size:12px;color:var(--muted);margin-top:4px}
.tbl-wrap{overflow-x:auto;background:var(--panel);border:1px solid var(--border);border-radius:10px}
table{width:100%;border-collapse:collapse;font-size:13px}
th,td{padding:8px 10px;border-bottom:1px solid var(--border);text-align:left;white-space:nowrap}
th{color:var(--muted);font-weight:600;background:var(--panel2);position:sticky;top:0}
td.wrap{white-space:normal;min-width:180px}
tr:last-child td{border-bottom:none}
.filters{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:12px;align-items:end}
.filters label{display:flex;flex-direction:column;font-size:12px;color:var(--muted);gap:3px}
input,select{background:var(--panel2);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:7px 9px;font:inherit}
.chart-box{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:12px;margin-bottom:14px;position:relative;height:320px}
.pill{display:inline-block;padding:2px 8px;border-radius:10px;font-size:12px;font-weight:600}
.pill.ok{background:#12351f;color:var(--green)}.pill.warn{background:#3a2a10;color:var(--orange)}.pill.bad{background:#3a1414;color:var(--red)}.pill.unk{background:#252b35;color:var(--muted)}
.lvl-URGENT{color:var(--red);font-weight:700}.lvl-AFGEWEZEN{color:var(--orange)}.lvl-MISLUKTE{color:var(--red)}
a{color:var(--blue)}
.empty{padding:16px;color:var(--muted);font-style:italic}
body.login{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:16px}
.login-box{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:24px;width:100%;max-width:360px;display:flex;flex-direction:column;gap:12px}
.login-box h1{margin:0;font-size:20px}.login-box label{display:flex;flex-direction:column;gap:6px;color:var(--muted)}
.login-box .banner{margin:0}
.login-box button{background:#238636;color:#fff;border:none;border-radius:6px;padding:10px;font-weight:600;cursor:pointer;font-size:15px}
@media (max-width:700px){header{padding:8px 10px}nav a{padding:5px 7px;font-size:13px}main{padding:10px}.card .val{font-size:20px}.chart-box{height:260px}.cards{grid-template-columns:repeat(2,1fr)}}
@media (max-width:700px){header{flex-wrap:wrap}.hdr-right{margin-left:auto}nav{order:3;flex:1 1 100%;flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:2px}nav a{white-space:nowrap}}
.card .sub{font-weight:400}
.modus{flex:1 1 100%;text-align:center;font-weight:800;letter-spacing:.06em;padding:6px;border-radius:6px;font-size:14px}
.modus.papier{background:#1d3b66;color:#cfe3ff;border:1px solid #58a6ff}
.modus.live{background:#3a1414;color:#ffb3b3;border:1px solid var(--red)}
.modus.onb{background:#3a2a10;color:#ffd28a;border:1px solid var(--orange)}
.badge-papier{display:inline-block;font-size:10px;font-weight:800;letter-spacing:.05em;color:#cfe3ff;background:#1d3b66;border:1px solid #58a6ff;border-radius:4px;padding:0 4px;margin-left:4px;vertical-align:middle}
.calc{font-size:10px;color:var(--muted);font-style:italic}
tr.viol td{background:#2a1414}tr.viol td:first-child{border-left:3px solid var(--red)}
.lvl-LIMIET{color:var(--red);font-weight:600}
.badge-echt{display:inline-block;margin-left:4px;padding:1px 5px;border-radius:4px;font-size:10px;font-weight:800;background:#3a1414;color:#ffb3b3;border:1px solid var(--red)}

/* Bedragen: € primair, SOL klein en grijs */
.mpair .sol { display: block; font-size: .72em; color: #8b949e; font-weight: normal; line-height: 1.2; }
.mpair .sol.inl { display: inline; margin-left: .35em; }
.card .val .mpair .sol { font-size: .5em; margin-top: 2px; }
.koers { font-size: 13px; white-space: nowrap; margin-right: .8em; }
.koers.oud { color: #ffb347; }
@media (max-width: 700px) { .koers { white-space: normal; display: block; margin: 0 0 .3em; } }
.sub .mpair .sol.inl { font-size: 1em; }

/* Kapitaal per plek */
.card.kd .kd-row { padding: 4px 0; border-bottom: 1px solid rgba(255,255,255,.06); }
.card.kd .kd-naam { font-size: .8em; color: #8b949e; }
.card.kd .kd-bedrag { font-size: 1.15em; font-weight: 600; }
.card.kd .kd-tot { border-bottom: 0; }
.card.kd .kd-tot .kd-bedrag { font-size: 1.3em; }
.card.kd .kd-info { color: #79c0ff; }

/* Regels, trade_id, watcher/watchdog */
.warn-t { color: var(--orange); }
.small { font-size: 11px; }
.lvl-WAARSCHUWING { color: var(--orange); font-weight: 600; }
.tbl-wrap.pad { padding: 6px; }
table.kv { width: 100%; }
table.kv th { position: static; width: 32%; white-space: normal; text-transform: none; vertical-align: top; background: transparent; }
table.kv td { white-space: normal; }
table.kv.d1 th, table.kv.d2 th, table.kv.d3 th { width: 40%; color: #a7b3c2; }
table.kv table.kv { background: var(--panel2); border-radius: 6px; }
.tag { display: inline-block; background: var(--panel2); border: 1px solid var(--border); border-radius: 4px; padding: 0 6px; margin: 1px 2px; }
ol.nl { margin: 0; padding-left: 18px; }
h4 { font-size: 13px; margin: 14px 0 6px; color: #9aa4b2; font-weight: 600; }

/* ===== Terminal-thema (v2) ===== */
header{padding:6px 12px;gap:6px 12px;background:#0a0f15}
.brand{font-family:var(--mono);letter-spacing:.02em}
nav a{padding:4px 8px;font-size:12.5px}
main{max-width:1680px;padding:10px 12px}
h2{font-size:16px;margin:4px 0 10px;letter-spacing:.02em}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
td,th{padding:5px 8px}
td,.card .val,.num,.mono,.koers,.strip{font-variant-numeric:tabular-nums}
.card .val,.num,.mono{font-family:var(--mono)}
.card{padding:10px 12px;border-radius:6px}
.card .val{font-size:19px}
.cards{gap:8px}
.cards.dense{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));margin-bottom:10px}
.tbl-wrap{border-radius:6px}
th{font-size:11px;text-transform:uppercase;letter-spacing:.05em}
td.num{text-align:right}
td.reason{min-width:320px;max-width:640px}
.panel{background:var(--panel);border:1px solid var(--border);border-radius:6px;padding:8px 10px;margin-bottom:10px;min-width:0}
.panel .tbl-wrap{border:none;background:transparent}
.panel table th{background:#0f1720}
.ph{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;border-bottom:1px solid var(--border);padding:2px 0 6px;margin-bottom:6px}
.pt{font-weight:700;font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:#c9d4e3}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
@media (max-width:1100px){.grid2{grid-template-columns:1fr}}
.strip{position:sticky;top:0;z-index:4;display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;padding:5px 12px;background:#080c11;border-bottom:1px solid var(--border);font-size:12px}
header{position:relative}
.strip .sep{width:1px;height:16px;background:var(--border);margin:0 4px}
.feedchip{display:inline-flex;align-items:center;gap:3px;padding:1px 5px;border:1px solid var(--border);border-radius:4px;background:var(--panel)}
.fb{display:inline-block;font-family:var(--mono);font-size:10.5px;font-weight:800;letter-spacing:.05em;border-radius:3px;padding:1px 5px;margin-right:3px;border:1px solid transparent;white-space:nowrap}
.fb-ok{background:#0f2e1e;color:var(--green);border-color:#1d6b43}
.fb-warn{background:#33240a;color:var(--orange);border-color:#7a5310}
.fb-bad{background:#3a1018;color:#ff9aa6;border-color:var(--red)}
.fb-off{background:#22262d;color:#c0c7d2;border-color:#4b5563}
.fb-miss{background:#2b2210;color:#ffd28a;border-color:#6b5520}
.fb-live{background:#3a1018;color:#ffb3bd;border-color:var(--red)}
.fb-papier{background:#132c4f;color:#cfe3ff;border-color:var(--blue)}
.na{color:#ffb86b;font-style:italic;font-size:12px}
.ctl{font:600 12px system-ui,sans-serif;border-radius:5px;padding:5px 10px;cursor:pointer;border:1px solid}
.ctl:disabled{opacity:.5;cursor:not-allowed}
.ctl-pauze{background:#2a2110;color:#ffd28a;border-color:#7a5310}
.ctl-nood{background:#4a0d16;color:#fff;border-color:var(--red)}
.ctl:focus-visible,nav a:focus-visible,button.link:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
code{font-family:var(--mono);font-size:12px;background:var(--panel2);padding:0 4px;border-radius:3px}
@media (max-width:700px){.strip{position:static}.hdr-right{flex-wrap:wrap}.cards.dense{grid-template-columns:repeat(2,1fr)}}
