:root{--vgk: #3d1a78;--vgk-2: #4c1d95;--vgk-soft: #ede9fe;--ink: #1d1d2b;--muted: #6b6b80;--line: #e7e7ee;--bg: #f5f5f8;--ok: #1a8a3c;--ok-bg: #e7f6ec;--warn: #b8860b;--warn-bg: #fbf3dc;--no: #c0271f;--no-bg: #fdeceb;--amber: #f0821e;--accent: #f0821e;--accent-dark: #d86e0c;--accent-soft: #fdeede}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%;margin:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--ink)}a{color:inherit;text-decoration:none}h1,h2,h3{margin:0}.center-screen{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:20px}.muted{color:var(--muted)}.stack{display:flex;flex-direction:column;gap:14px}.shell{display:flex;min-height:100dvh}.sidebar{width:264px;flex-shrink:0;background:#fff;border-right:1px solid var(--line);display:flex;flex-direction:column;padding:16px 14px;position:sticky;top:0;height:100dvh}.brand{display:flex;align-items:center;gap:10px;padding:10px 8px 16px;border-bottom:3px solid var(--accent);margin-bottom:6px}.brand .crest{width:34px;height:34px;border-radius:7px;object-fit:contain}.brand-logo{height:46px;width:auto;max-width:190px;object-fit:contain}.brand b{font-size:14px;line-height:1.15}.nav{display:flex;flex-direction:column;gap:4px;flex:1}.nav a{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:12px;font-weight:600;color:#33333f;font-size:15px}.nav a .ic{width:20px;text-align:center}.nav a:hover{background:#f3f2f8}.nav a.active{background:var(--vgk);color:#fff;box-shadow:0 6px 16px #3d1a7840}.usercard{margin-top:8px;padding:10px 12px;border-radius:12px;background:#faf9fd;border:1px solid var(--line);display:flex;flex-direction:column;gap:2px}.usercard .nm{font-weight:700;font-size:14px;display:flex;align-items:center;gap:8px}.usercard .em{font-size:12px;color:var(--muted);word-break:break-all}.badge-admin{background:#fdecc8;color:#8a5a00;font-size:10.5px;font-weight:700;padding:2px 7px;border-radius:999px}.logout{margin-top:8px;display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;color:var(--muted);font-weight:600;cursor:pointer;background:none;border:0;font-size:14px}.logout:hover{background:#f3f2f8}.content{flex:1;min-width:0;display:flex;flex-direction:column}.appheader{display:flex;align-items:center;justify-content:center;position:sticky;top:0;z-index:30;padding:12px 14px;background:#fff;border-bottom:3px solid var(--accent)}.appheader img{height:46px;width:auto;max-width:78vw;object-fit:contain}.appheader .burger{display:none;position:absolute;left:12px;top:50%;transform:translateY(-50%);background:var(--vgk-soft);border:0;color:var(--vgk);width:40px;height:40px;border-radius:10px;font-size:19px;cursor:pointer}.main{padding:22px;max-width:1080px;width:100%;margin:0 auto}.pagehead h1{font-size:26px}.pagehead p{margin:4px 0 0;color:var(--muted)}.credit{text-align:center;color:var(--muted);font-size:11.5px;padding:16px}.card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px}.card h3{font-size:16px}.grid{display:grid;gap:14px}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-2{grid-template-columns:repeat(2,1fr)}.row{display:flex;align-items:center;justify-content:space-between;gap:10px}.btn{background:var(--vgk);color:#fff;border:0;border-radius:11px;padding:12px 16px;font-weight:700;font-size:15px;cursor:pointer}.btn:hover{background:var(--vgk-2)}.btn:disabled{opacity:.5;cursor:default}.btn-ghost{background:#fff;color:var(--vgk);border:1.5px solid var(--vgk)}.btn-ghost:hover{background:var(--vgk);color:#fff!important;border-color:var(--vgk)}.btn-amber,.btn-accent{background:var(--accent)}.btn-amber:hover,.btn-accent:hover{background:var(--accent-dark)}.btn-ghost-accent{background:#fff;color:var(--accent-dark);border:1.5px solid var(--accent)}.btn-ghost-accent:hover{background:var(--accent);color:#fff!important;border-color:var(--accent)}.btn-sm{padding:8px 12px;font-size:13.5px;border-radius:9px}.input{width:100%;padding:13px 14px;font-size:16px;border:1.5px solid var(--line);border-radius:11px;outline:none;background:#fff}.input:focus{border-color:var(--vgk)}label.fld{display:block;font-size:13px;font-weight:600;color:#444;margin-bottom:6px}.pill{font-size:12px;font-weight:700;padding:3px 10px;border-radius:999px;background:var(--vgk-soft);color:var(--vgk)}.pill.ok{background:var(--ok-bg);color:var(--ok)}.pill.no{background:var(--no-bg);color:var(--no)}.pill.amber{background:#fdecc8;color:#8a5a00}.progress{height:9px;background:#eceaf3;border-radius:999px;overflow:hidden}.progress>i{display:block;height:100%;background:var(--vgk);border-radius:999px}.progress.green>i{background:var(--ok)}.progress.blue>i{background:#2f6bff}.err{background:var(--no-bg);color:var(--no);padding:10px 12px;border-radius:10px;font-size:14px}.ok-msg{background:var(--ok-bg);color:var(--ok);padding:10px 12px;border-radius:10px;font-size:14px}.spin{display:inline-block;width:16px;height:16px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:sp .7s linear infinite;vertical-align:middle}@keyframes sp{to{transform:rotate(360deg)}}.prio-row{display:flex;align-items:center;gap:12px;padding:12px;border:1px solid var(--line);border-radius:12px}.prio-row .rank{width:34px;height:34px;border-radius:50%;background:#eceaf3;color:#555;font-weight:800;display:flex;align-items:center;justify-content:center;flex-shrink:0}.prio-row .rank[data-top=true]{background:var(--accent);color:#fff}.callegend{display:flex;gap:10px;flex-wrap:wrap;font-size:11.5px;color:var(--muted)}.callegend span{display:inline-flex;align-items:center;gap:4px}.callegend i{width:10px;height:10px;border-radius:3px;display:inline-block}.weekgrid{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}.weekday{border:1px solid var(--line);border-radius:10px;padding:8px;min-height:98px;display:flex;flex-direction:column}.weekday.today{border-color:var(--vgk);box-shadow:inset 0 0 0 1px var(--vgk)}.wd-h{font-weight:700;font-size:12.5px;margin-bottom:6px}.wd-ev{display:flex;flex-direction:column;gap:4px}.wd-empty{color:#d8d8e0}.evchip{font-size:11px;padding:3px 6px;border-radius:6px;color:#fff;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ev-shift{background:var(--vgk)}.ev-aanwezig{background:#2f6bff}.ev-speler{background:var(--ok)}.ev-joker{background:var(--accent)}@media (max-width: 820px){.weekgrid{grid-template-columns:1fr}.weekday{min-height:auto;flex-direction:row;align-items:flex-start;gap:10px}.weekday .wd-h{width:60px;flex-shrink:0;margin-bottom:0;padding-top:3px}.weekday .wd-ev{flex:1}.weekday .wd-empty{display:none}}.notif{position:absolute;right:12px;top:50%;transform:translateY(-50%)}.notif-bell{position:relative;background:none;border:0;font-size:22px;cursor:pointer;line-height:1;padding:4px}.notif-badge{position:absolute;top:-2px;right:-4px;background:var(--no);color:#fff;font-size:10px;font-weight:800;min-width:16px;height:16px;border-radius:999px;display:flex;align-items:center;justify-content:center;padding:0 3px}.notif-panel{position:absolute;right:0;top:46px;width:330px;max-width:88vw;max-height:72vh;overflow-y:auto;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 14px 44px #0000002e;z-index:50}.notif-head{font-weight:800;padding:12px 14px;border-bottom:1px solid var(--line);position:sticky;top:0;background:#fff}.notif-empty{padding:22px;text-align:center;color:var(--muted);font-size:14px}.notif-item{padding:11px 14px;border-bottom:1px solid var(--line)}.notif-item.unread{background:var(--vgk-soft)}.notif-title{font-weight:700;font-size:13.5px}.notif-msg{font-size:13px;color:#444;margin-top:2px;line-height:1.4}.notif-time{font-size:11px;color:var(--muted);margin-top:4px}.scrim{display:none}@media (max-width: 820px){.sidebar{position:fixed;left:0;top:0;z-index:40;transform:translate(-100%);transition:transform .22s ease;box-shadow:0 10px 40px #0003}.sidebar.open{transform:translate(0)}.appheader .burger{display:block}.scrim.show{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;z-index:35}.main{padding:16px}.grid-3,.grid-2{grid-template-columns:1fr}.pagehead h1{font-size:22px}}
