:root{color-scheme:light;--bg:#f4f1e5;--fg:#222;--panel:#fff;--accent:#2f7d32;--accent-light:#e8f5e8;--border:#ccc;--danger:#c62828;--text-muted:#666}*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,sans-serif;background:var(--bg);color:var(--fg);line-height:1.5}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit;font-size:1rem;padding:.5rem 1.25rem;border:2px solid var(--fg);border-radius:4px;background:var(--panel);color:var(--fg);cursor:pointer}button:hover{background:var(--accent-light)}button.primary{background:var(--accent);color:#fff;border-color:var(--accent)}button.primary:hover{opacity:.9}button.danger{background:var(--danger);color:#fff;border-color:var(--danger)}button:disabled{opacity:.5;cursor:not-allowed}input,select{font-family:inherit;font-size:1rem;padding:.5rem;border:2px solid var(--border);border-radius:4px;background:var(--panel);color:var(--fg)}table{width:100%;border-collapse:collapse}td,th{text-align:left;padding:.5rem;border-bottom:1px solid var(--border)}th{font-weight:600}.card{background:var(--panel);border:2px solid var(--border);border-radius:6px;padding:1.5rem;margin-bottom:1rem}.container{max-width:960px;margin:0 auto;padding:1rem}.nav{background:var(--fg);padding:.75rem 1rem;display:flex;gap:1.5rem;align-items:center;margin-bottom:1rem}.nav a{color:#fff;font-weight:500}.nav .brand{font-weight:700;font-size:1.1rem}.nav .spacer{flex:1 1}.nav .user{color:#aaa;font-size:.9rem}.form-group{margin-bottom:1rem}.form-group label{display:block;font-weight:500;margin-bottom:.25rem}.form-group input,.form-group select{width:100%}.grid-2{grid-template-columns:1fr 1fr;grid-gap:1rem}.grid-2,.grid-3{display:grid;gap:1rem}.grid-3{grid-template-columns:1fr 1fr 1fr;grid-gap:1rem}.button-row{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.badge{display:inline-block;padding:.15rem .5rem;border-radius:3px;font-size:.85rem;font-weight:500}.badge.active{background:var(--accent-light);color:var(--accent)}.badge.inactive{background:#fce4e4;color:var(--danger)}.status-ok{color:var(--accent);font-weight:500}.qr-panel{margin-top:1rem;text-align:center}.qr-panel img{width:min(320px,100%);image-rendering:pixelated}.qr-panel p{color:var(--text-muted)}.qr-video{width:100%;min-height:260px;margin-bottom:1rem;border:2px solid var(--border);background:#111}.toast-container{position:fixed;top:1rem;right:1rem;z-index:9999;display:flex;flex-direction:column;gap:.5rem;pointer-events:none}.toast{pointer-events:auto;padding:.75rem 1.25rem;border-radius:6px;border:2px solid var(--fg);background:var(--panel);font-weight:500;box-shadow:0 4px 12px rgba(0,0,0,.15);animation:toast-in .3s ease,toast-out .3s ease 3.7s;max-width:400px}.toast-success{border-color:var(--accent);background:var(--accent-light);color:var(--accent)}.toast-error{border-color:var(--danger);background:#fce4e4;color:var(--danger)}.toast-info{border-color:var(--border);background:var(--panel)}@keyframes toast-in{0%{opacity:0;transform:translateX(100%)}to{opacity:1;transform:translateX(0)}}@keyframes toast-out{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(100%)}}.table-wrapper{overflow-x:auto}.permission-matrix{font-size:.9rem}.permission-matrix td,.permission-matrix th{padding:.4rem .5rem;text-align:center;white-space:nowrap}.permission-matrix .matrix-row-label{text-align:left;display:flex;gap:.5rem;align-items:center}.permission-matrix .matrix-col{writing-mode:sideways-lr;-webkit-text-orientation:mixed;text-orientation:mixed}.permission-matrix .matrix-cell{min-width:2.5rem}.permission-matrix .matrix-diagonal{color:var(--border);font-weight:700}.permission-matrix .matrix-checkbox-label{cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.permission-matrix .matrix-checkbox-label input{display:none}.permission-matrix .matrix-checkmark{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;border:2px solid var(--border);border-radius:4px;font-size:.85rem;font-weight:700}.permission-matrix .matrix-checkmark.on{background:var(--accent);color:#fff;border-color:var(--accent)}.permission-matrix .matrix-checkmark.off{color:var(--text-muted)}.permission-matrix .inactive-member{opacity:.5}.permission-matrix tbody tr:hover{background:var(--accent-light)}@media (max-width:768px){.grid-2,.grid-3{grid-template-columns:1fr}}