:root {
  color-scheme: light;
  --bg:#f4f6f8; --surface:#fff; --surface-2:#eef2f5; --text:#17212b; --muted:#687783; --line:#d9e0e5;
  --accent:#167c80; --accent-strong:#0f666a; --danger:#a83a45; --ok:#2d7f52;
  --shadow:0 6px 18px rgba(28,45,55,.08);
  --success-text:#146e43;--warning-text:#80510a;--assignment-add:#2eac67;--assignment-remove:#e3a73a;
  font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
}
html[data-theme="dark"] { --success-text:#83d6a8;--warning-text:#f1c771;color-scheme:dark; --bg:#10171b; --surface:#182126; --surface-2:#202b31; --text:#eef4f5; --muted:#a4b1b7; --line:#334148; --accent:#4bb3b4; --accent-strong:#63c5c6; --shadow:0 8px 22px rgba(0,0,0,.22); }
*{box-sizing:border-box} body{margin:0;background:var(--bg);color:var(--text);font-size:14px} button,input,textarea,select{font:inherit}.module{padding:18px;min-height:100vh}.module-workspace{display:flex;flex-direction:column;height:100vh;min-height:0;max-width:none;margin:0;overflow:hidden}.module-header{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:16px}.module-header h1{font-size:22px;margin:0}.module-header p{margin:4px 0 0;color:var(--muted)}.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.search{min-width:240px;border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:9px;padding:9px 11px}.card{background:var(--surface);border:1px solid var(--line);border-radius:11px;box-shadow:var(--shadow)}.panel{padding:16px}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px}.stat strong{display:block;font-size:28px}.stat span{color:var(--muted)}.muted{color:var(--muted)}.badge{display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:999px;padding:2px 7px;font-size:11px;background:var(--surface-2)}
.kanban{display:flex;gap:12px;overflow-x:auto;padding-bottom:10px;min-height:calc(100vh - 115px)}.kanban-column{flex:0 0 300px;background:var(--surface-2);border:1px solid var(--line);border-radius:12px;display:flex;flex-direction:column;max-height:calc(100vh - 125px)}.kanban-column.base{box-shadow:inset 3px 0 0 var(--accent)}.column-head{border:0;background:transparent;color:var(--text);padding:12px 13px;text-align:left;display:flex;align-items:center;justify-content:space-between;gap:10px;font-weight:800;border-bottom:1px solid var(--line)}button.column-head{cursor:pointer}button.column-head:hover{background:color-mix(in srgb,var(--accent) 8%,transparent)}.column-list{padding:9px;display:flex;flex-direction:column;gap:7px;overflow-y:auto}.member-card,.workgroup-task-card{background:var(--surface);border:1px solid var(--line);border-radius:9px;padding:10px;cursor:pointer;box-shadow:0 2px 7px rgba(0,0,0,.04)}.member-card:hover{border-color:var(--accent);transform:translateY(-1px)}.member-card[draggable=true]{cursor:grab}.member-card[draggable=true]:active{cursor:grabbing}.member-card.dragging{opacity:.38;transform:none}.kanban-column.drop-target{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 18%,transparent)}.kanban-column.drop-target .column-list{background:color-mix(in srgb,var(--accent) 7%,transparent)}.kanban-column.drop-saving{opacity:.65;pointer-events:none}.member-card strong{display:block}.card-meta{display:flex;gap:5px;flex-wrap:wrap;margin-top:7px}.empty{padding:16px;color:var(--muted);text-align:center;font-size:12px}
.icon-button{border:0;background:transparent;color:var(--text);font-size:22px;cursor:pointer}.detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.detail-item{padding:10px;background:var(--surface-2);border-radius:8px}.detail-item small{display:block;color:var(--muted);margin-bottom:3px}.section-title{margin:20px 0 8px;font-size:14px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.timeline{display:grid;gap:8px}.timeline-item{border-left:3px solid var(--accent);padding:7px 10px;background:var(--surface-2);border-radius:0 8px 8px 0}.timeline-item small{color:var(--muted)}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.form-grid label{min-width:0;display:grid;gap:5px;font-weight:600;font-size:12px}.form-grid input,.form-grid textarea,.form-grid select{min-width:0;max-width:100%;border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:8px;padding:9px}.form-grid .wide{grid-column:1/-1}.actions{display:flex;gap:8px;margin-top:14px}.primary{border:0;border-radius:8px;background:var(--accent);color:#fff;padding:9px 13px;font-weight:700;cursor:pointer}.secondary{border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--text);padding:9px 13px;cursor:pointer}.notice{padding:11px 12px;border-radius:9px;background:var(--surface-2);margin:10px 0}.notice.ok{border-left:3px solid var(--ok)}.notice.error{border-left:3px solid var(--danger)}
/* Explicit display rules must not reveal conditionally hidden form fields. */
.form-grid[hidden],.form-grid [hidden],.stacked-label[hidden],.link-button[hidden]{display:none!important}
.placeholder{max-width:760px;margin:45px auto;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:24px;box-shadow:var(--shadow)}.placeholder h1{margin-top:0}.placeholder ul{line-height:1.8;color:var(--muted)}
@media(max-width:650px){.module{padding:12px}.module-header{align-items:stretch;flex-direction:column}.search{min-width:0;width:100%}.kanban-column{flex-basis:85vw}.detail-grid,.form-grid{grid-template-columns:1fr}}


.panel-title{margin:0 0 12px;font-size:17px}.section-gap{margin-top:14px}.form-grid small,.stacked-label small{font-weight:400;color:var(--muted)}.checkbox-label{display:flex!important;align-items:center;gap:8px!important}.checkbox-label input{width:auto!important}.danger-button{border:1px solid color-mix(in srgb,var(--danger) 45%,var(--line));border-radius:8px;background:color-mix(in srgb,var(--danger) 8%,var(--surface));color:var(--danger);padding:9px 13px;font-weight:700;cursor:pointer}.link-button{display:inline-block;text-decoration:none}.stacked-label{min-width:0;display:grid;gap:6px;font-size:12px;font-weight:700}.stacked-label input{min-width:0;max-width:100%;border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:8px;padding:9px}.security-status-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.notice.warning{border-left:3px solid #a47d18}.recovery-code-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin-top:10px}.recovery-code-list code{padding:7px;background:var(--surface);border:1px solid var(--line);border-radius:6px;text-align:center}

.group-tree-panel{max-width:1000px}.tree-help{color:var(--muted);font-size:12px;margin-bottom:10px}.root-drop-zone{border:1px dashed var(--line);border-radius:8px;padding:9px 12px;margin-bottom:8px;color:var(--muted);font-size:12px;text-align:center}.root-drop-zone.active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,transparent);color:var(--accent)}.group-tree{display:grid;gap:2px}.tree-node{min-width:0}.tree-children{margin-left:26px;border-left:1px solid var(--line);padding-left:8px}.tree-row{position:relative;display:grid;grid-template-columns:18px 20px minmax(180px,1fr) auto;gap:8px;align-items:center;padding:8px 10px;border-radius:8px;border:1px solid transparent}.tree-row:hover{background:var(--surface-2)}.tree-row.inactive{opacity:.55}.tree-row.dragging{opacity:.35}.tree-drag{cursor:grab;color:var(--muted)}.tree-name{border:0;background:transparent;color:var(--text);text-align:left;cursor:pointer;padding:0;min-width:0}.tree-name strong{display:block}.tree-name small{display:block;color:var(--muted);font-size:11px;margin-top:1px}.tree-row.drop-before::before,.tree-row.drop-after::after{content:'';position:absolute;left:8px;right:8px;height:3px;background:var(--accent);border-radius:3px}.tree-row.drop-before::before{top:-2px}.tree-row.drop-after::after{bottom:-2px}.tree-row.drop-inside{outline:2px solid var(--accent);background:color-mix(in srgb,var(--accent) 8%,transparent)}

.settings-list{display:grid;gap:2px}.setting-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(220px,360px);gap:20px;align-items:center;padding:12px 0;border-bottom:1px solid var(--line)}.setting-row:last-child{border-bottom:0}.setting-row span{display:grid;gap:3px}.setting-row small{color:var(--muted);line-height:1.4}.setting-row input[type="text"],.setting-row select{width:100%;border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:8px;padding:9px}.checkbox-setting input{justify-self:end;width:20px;height:20px}.sticky-actions{position:sticky;bottom:0;padding:12px 0;background:linear-gradient(transparent,var(--bg) 35%)}

@media(max-width:700px){.security-status-grid,.recovery-code-list{grid-template-columns:1fr}.setting-row{grid-template-columns:1fr;gap:7px}.checkbox-setting input{justify-self:start}.tree-row{grid-template-columns:18px 16px 1fr auto}.tree-children{margin-left:14px;padding-left:4px}}

/* Unified MyVerbroedering application dialogs.
 * Deliberately mirrors the MyAssurius explicit-action model: native modal
 * dialogs, stable header/body/action classes, no backdrop/keyboard dismissal.
 * The JS policy that blocks Escape lives in module-common.js. */
/* 0.3.22 member modal viewport/dialog hardening.
 * Never let an author display rule override the browser's closed <dialog> state.
 * Open application dialogs are explicitly anchored to the iframe viewport so
 * Firefox cannot render an editor in normal document flow below the Leden board. */
.app-dialog:not([open]){display:none!important}
:root{--dialog-width-compact:560px;--dialog-width-standard:760px;--dialog-width-wide:900px;--dialog-width-extra-wide:1180px;--dialog-width-max:1500px;--dialog-width-preview:1040px}
.app-dialog{--dialog-preferred-width:var(--dialog-width-standard);width:min(var(--dialog-preferred-width),calc(100vw - 30px));max-width:calc(100vw - 30px);max-height:calc(100vh - 30px);padding:0;border:1px solid var(--line);border-radius:14px;background:var(--surface);color:var(--text);box-shadow:0 24px 70px rgba(0,0,0,.28);overflow:auto}
.app-dialog[open]{position:fixed;inset:0;margin:auto}
.app-dialog::backdrop{background:rgba(6,18,24,.58)}
.app-dialog.compact-dialog{--dialog-preferred-width:var(--dialog-width-compact)}.app-dialog.wide-dialog{--dialog-preferred-width:var(--dialog-width-wide)}.app-dialog.extra-wide-dialog{--dialog-preferred-width:var(--dialog-width-extra-wide)}.app-dialog.max-dialog{--dialog-preferred-width:var(--dialog-width-max)}.app-dialog.file-preview-dialog{--dialog-preferred-width:var(--dialog-width-preview)}
.dialog-header{position:sticky;top:0;z-index:3;display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:15px 17px;border-bottom:1px solid var(--line);background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 8%,var(--surface)),var(--surface) 72%)}
.dialog-header h2{margin:0;font-size:19px}.dialog-header p{margin:5px 0 0;color:var(--muted);font-size:12px;line-height:1.45}.dialog-body{padding:17px}.dialog-actions{display:flex;align-items:stretch;justify-content:flex-end;gap:8px;margin-top:18px}.split-actions{justify-content:flex-start}.action-spacer{flex:1 1 auto}.dialog-reason{font-weight:700;line-height:1.5}.dialog-help{color:var(--muted);font-size:12px;line-height:1.5}.dialog-danger-copy{line-height:1.55}.dialog-danger-copy p:first-child{margin-top:0}.danger-dialog .dialog-header{border-bottom-color:color-mix(in srgb,var(--danger) 35%,var(--line));background:linear-gradient(135deg,color-mix(in srgb,var(--danger) 11%,var(--surface)),var(--surface) 76%)}.danger-dialog .dialog-header h2{color:var(--danger)}
.member-dialog-themed>.dialog-header{border-bottom-color:color-mix(in srgb,var(--accent) 34%,var(--line));background:linear-gradient(125deg,color-mix(in srgb,var(--accent) 24%,var(--surface)),color-mix(in srgb,var(--accent) 7%,var(--surface)) 58%,var(--surface));color:var(--text)}
.dialog-header>.icon-button{display:grid;place-items:center;width:32px;height:32px;flex:0 0 32px;padding:0;border:1px solid color-mix(in srgb,var(--text) 12%,var(--line));border-radius:999px;background:color-mix(in srgb,var(--surface) 76%,transparent);color:var(--text);font-size:22px;line-height:1;cursor:pointer;transition:background .14s ease,color .14s ease,border-color .14s ease,transform .14s ease,box-shadow .14s ease}
.dialog-header>.icon-button:hover{border-color:var(--accent);background:var(--accent);color:#fff;transform:rotate(90deg);box-shadow:0 4px 14px color-mix(in srgb,var(--accent) 28%,transparent)}
.dialog-header>.icon-button:focus-visible{outline:3px solid color-mix(in srgb,var(--accent) 38%,transparent);outline-offset:2px}
.app-dialog button:disabled{opacity:.55;cursor:not-allowed}

/* Group identity colours */
.group-chip-row{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin-top:7px}.group-chip{--group-color:#64748B;display:inline-flex;align-items:center;gap:5px;min-width:0;border:1px solid color-mix(in srgb,var(--group-color) 32%,var(--line));border-radius:999px;padding:2px 7px 2px 5px;background:color-mix(in srgb,var(--group-color) 9%,var(--surface));color:var(--text);font-size:10.5px;font-weight:700;line-height:1.4}.group-chip-dot{width:8px;height:8px;flex:0 0 8px;border-radius:50%;background:var(--group-color);box-shadow:0 0 0 1px color-mix(in srgb,var(--group-color) 72%,#0000)}.detail-group-chips{margin-top:0}
.member-card.has-group-accent{position:relative;border-left:5px solid var(--member-accent,#64748B);padding-left:9px}.colored-column{border-top:3px solid var(--column-color,#64748B)}.colored-column>.column-head{box-shadow:inset 0 2px 0 color-mix(in srgb,var(--column-color) 16%,transparent)}

/* Per-user member-browser sort preference */
.segmented-control{display:inline-flex;align-items:center;gap:2px;border:1px solid var(--line);border-radius:9px;padding:3px;background:var(--surface);white-space:nowrap}.segmented-control>span{padding:0 6px;color:var(--muted);font-size:11px;font-weight:700}.segmented-control button{border:0;border-radius:6px;background:transparent;color:var(--muted);padding:6px 9px;font-size:11px;font-weight:700;cursor:pointer}.segmented-control button[aria-pressed="true"]{background:var(--accent);color:#fff}.segmented-control button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}

/* Alphabetic hierarchy editor */
.tree-row{grid-template-columns:18px 18px minmax(180px,1fr) auto minmax(80px,auto)}.tree-colour{width:12px;height:12px;border-radius:50%;background:var(--group-color,#64748B);box-shadow:0 0 0 2px color-mix(in srgb,var(--group-color,#64748B) 15%,var(--surface))}.tree-row.drop-inside{outline:2px solid var(--group-color,var(--accent));background:color-mix(in srgb,var(--group-color,var(--accent)) 8%,transparent)}

/* Dangerous group deletion preview */
.dependency-summary{display:grid;gap:7px;margin:14px 0}.dependency-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 12px;padding:9px 10px;border:1px solid var(--line);border-radius:8px;background:var(--surface-2)}.dependency-row>span{font-weight:700}.dependency-row>strong{font-size:15px}.dependency-row>small{grid-column:1/-1;color:var(--muted)}.dependency-row.has-items{border-color:color-mix(in srgb,var(--danger) 24%,var(--line))}.delete-blockers{margin-top:10px;padding:10px 12px;border-left:3px solid var(--danger);border-radius:8px;background:color-mix(in srgb,var(--danger) 7%,var(--surface));color:var(--text)}.delete-blockers ul{margin:6px 0 0;padding-left:20px}.delete-blockers li+li{margin-top:4px}

@media(max-width:700px){.segmented-control{width:100%;justify-content:flex-start}.segmented-control button{flex:1}.tree-row{grid-template-columns:18px 18px 1fr auto}.dialog-actions{flex-wrap:wrap}.action-spacer{display:none}.split-actions>.danger-button{margin-right:auto}}

/* 0.2.3 member membership readability + ensemble instrument follow-up */
.member-card .group-chip-row,
.detail-group-chips{
  display:grid;
  justify-items:start;
  align-items:start;
  gap:4px;
}
.member-card .group-chip-row .group-chip,
.detail-group-chips .group-chip{
  max-width:100%;
}
.instrument-group-choice-list{
  display:grid;
  gap:8px;
  margin:14px 0;
}
.instrument-group-choice{
  --group-color:#64748B;
  display:flex;
  align-items:center;
  gap:10px;
  padding:10px 11px;
  border:1px solid var(--line);
  border-left:4px solid var(--group-color);
  border-radius:9px;
  background:var(--surface-2);
  cursor:pointer;
}
.instrument-group-choice:hover{
  border-color:color-mix(in srgb,var(--group-color) 42%,var(--line));
  background:color-mix(in srgb,var(--group-color) 7%,var(--surface));
}
.instrument-group-choice:has(input:checked){
  outline:2px solid color-mix(in srgb,var(--group-color) 72%,var(--accent));
  outline-offset:1px;
}
.instrument-group-choice input{
  margin:0;
  flex:0 0 auto;
}
.instrument-group-choice-copy{
  min-width:0;
}

/* 0.2.4 manual group ordering + collapsed hierarchy */
.tree-row{
  grid-template-columns:22px 18px 18px minmax(180px,1fr) auto minmax(80px,auto);
}
.tree-toggle,
.tree-toggle-spacer{
  width:22px;
  height:22px;
  display:grid;
  place-items:center;
}
.tree-toggle{
  border:0;
  border-radius:6px;
  padding:0;
  background:transparent;
  color:var(--muted);
  cursor:pointer;
}
.tree-toggle:hover{
  background:var(--surface-2);
  color:var(--text);
}
.tree-toggle .tree-chevron{
  display:block;
  width:16px;
  height:16px;
  flex:none;
  transform:rotate(0deg);
  transform-origin:50% 50%;
  transition:transform .12s ease;
}
.tree-toggle[aria-expanded="true"] .tree-chevron{transform:rotate(90deg);}
.tree-edit-group{flex:0 0 auto;}
.tree-children[hidden]{
  display:none;
}
.tree-drop-placeholder{
  min-height:44px;
  display:grid;
  place-items:center;
  margin:3px 0;
  border:2px dashed color-mix(in srgb,var(--accent) 65%,var(--line));
  border-radius:8px;
  background:color-mix(in srgb,var(--accent) 8%,transparent);
  color:var(--accent);
  font-size:11px;
  font-weight:800;
  transition:min-height .1s ease;
}
.tree-row.drop-before::before,
.tree-row.drop-after::after{
  background:var(--accent);
}
.tree-drag{
  user-select:none;
}
@media(max-width:700px){
  .tree-row{grid-template-columns:22px 18px 18px 1fr auto auto}
}


/* 0.2.5 member-column layout preferences, administration workspace and mailing */
.column-head-actions{align-items:flex-start;flex-wrap:wrap}.column-title-button,.column-title-static{display:flex;min-width:0;flex:1 1 150px;align-items:center;justify-content:space-between;gap:8px;border:0;background:transparent;color:var(--text);padding:0;text-align:left;font-weight:800}.column-title-button{cursor:pointer}.column-title-button:hover{color:var(--accent)}.column-mail-button{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--line);border-radius:7px;background:var(--surface);color:var(--accent);padding:5px 7px;font-size:10.5px;font-weight:800;cursor:pointer}.column-mail-button:hover{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 7%,var(--surface))}.kanban-column.column-orderable{cursor:grab;outline:1px dashed color-mix(in srgb,var(--accent) 50%,var(--line))}.kanban-column.column-orderable.dragging-column{opacity:.36}.column-drop-placeholder{flex:0 0 46px;min-height:calc(100vh - 150px);display:grid;place-items:center;border:2px dashed color-mix(in srgb,var(--accent) 65%,var(--line));border-radius:12px;background:color-mix(in srgb,var(--accent) 8%,transparent);color:var(--accent);font-size:11px;font-weight:800;writing-mode:vertical-rl;transform:rotate(180deg)}

.split-heading{display:flex;align-items:center;justify-content:space-between;gap:16px}.split-heading.compact{align-items:flex-start}.panel{background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);margin-bottom:14px}.panel-heading{margin-bottom:13px}.panel-heading h2{margin:0;font-size:17px}.panel-heading p{margin:4px 0 0;color:var(--muted);font-size:12px;line-height:1.5}.form-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.field-help{margin:7px 0 0;color:var(--muted);font-size:11px;line-height:1.5}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:9px}.table-wrap table{width:100%;border-collapse:collapse}.table-wrap th,.table-wrap td{padding:9px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top;font-size:12px}.table-wrap th{background:var(--surface-2);color:var(--muted);font-size:10.5px;text-transform:uppercase;letter-spacing:.04em}.table-wrap tbody tr:last-child td{border-bottom:0}

.admin-tabs{display:flex;min-width:0;flex:1 1 auto;gap:5px;overflow-x:auto;padding:3px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}.admin-tab{flex:0 0 auto;border:0;border-radius:7px;background:transparent;color:var(--muted);padding:8px 11px;font-size:12px;font-weight:800;cursor:pointer;white-space:nowrap}.admin-tab.active{background:var(--accent);color:#fff}.admin-tabs.editing .admin-tab{cursor:grab;outline:1px dashed color-mix(in srgb,var(--accent) 50%,var(--line))}.admin-tab.dragging{opacity:.35}.admin-tab-placeholder{flex:0 0 64px;display:grid;place-items:center;border:2px dashed var(--accent);border-radius:7px;color:var(--accent);font-size:10px;font-weight:800}.admin-user-list,.template-library,.suppressed-list,.mailing-history{display:grid;gap:8px}.admin-user-row,.template-row,.suppressed-row,.mailing-history-row{display:grid;grid-template-columns:minmax(200px,1.4fr) minmax(160px,1fr) auto auto auto;gap:10px;align-items:center;padding:10px 11px;border:1px solid var(--line);border-radius:9px;background:var(--surface)}.admin-user-row{grid-template-columns:minmax(260px,2fr) minmax(180px,1fr) 132px 64px 84px}.admin-user-row>.status-badge{justify-self:start}.admin-user-row>button{justify-self:stretch}.admin-user-row>div:first-child,.template-row>div,.suppressed-row>div,.mailing-history-main{min-width:0}.admin-user-row strong,.template-row strong,.suppressed-row strong,.mailing-history-row strong{display:block}.admin-user-row small,.template-row small,.suppressed-row small,.mailing-history-row small{display:block;margin-top:2px;color:var(--muted);line-height:1.35}.admin-user-roles{display:flex;gap:4px;flex-wrap:wrap}.role-choice{display:grid;grid-template-columns:auto minmax(0,1fr);gap:9px;align-items:start;padding:9px;border:1px solid var(--line);border-radius:8px;background:var(--surface-2)}.role-choice input{margin-top:3px}.role-choice span{display:grid;gap:2px}.role-choice small{color:var(--muted);font-weight:400}.status-badge,.mail-status{display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:999px;padding:3px 7px;background:var(--surface-2);font-size:10.5px;font-weight:800;white-space:nowrap}.status-active{color:var(--ok)}.status-disabled{color:var(--danger)}.status-pending{color:#8a6a17}

.rich-editor-wrap{margin-top:12px;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--surface)}.rich-editor-toolbar,.mail-toolbar{display:flex;align-items:center;gap:4px;flex-wrap:wrap;padding:7px;border-bottom:1px solid var(--line);background:var(--surface-2)}.rich-editor-toolbar button,.mail-toolbar button{border:1px solid var(--line);border-radius:6px;background:var(--surface);color:var(--text);padding:5px 8px;cursor:pointer;font-size:11px}.rich-editor-toolbar select,.mail-toolbar select{min-height:29px;border:1px solid var(--line);border-radius:6px;background:var(--surface);color:var(--text);padding:4px 7px;font-size:11px}.rich-editor,.mail-editor{min-height:260px;max-height:50vh;overflow:auto;padding:14px;outline:0;line-height:1.55;background:#fff;color:#202124}
.rich-editor img,.mail-editor img,.mail-preview-body img{max-width:100%;height:auto}
.email-color-control{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:6px;padding:3px 7px;background:var(--surface);color:var(--text);font-size:11px}
.email-color-control input[type="color"]{width:28px;height:23px;padding:0;border:0;background:transparent;cursor:pointer}
.email-emoji-picker{display:contents}
.email-emoji-panel:not([hidden]){display:grid;grid-template-columns:repeat(9,minmax(0,1fr));flex:1 0 100%;gap:4px;max-width:420px;padding:8px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}
.email-emoji-panel .email-emoji-option{min-width:0;padding:6px 2px;font-size:19px;line-height:1.2}
.email-emoji-panel .email-emoji-option:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
@media(max-width:520px){.email-emoji-panel:not([hidden]){grid-template-columns:repeat(6,minmax(0,1fr))}}
.rich-editor:focus,.mail-editor:focus{box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--accent) 45%,transparent)}.rich-editor p:first-child,.mail-editor p:first-child{margin-top:0}.mail-compose-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:10px}.mail-recipient-summary{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:9px 10px;border:1px solid var(--line);border-radius:8px;background:var(--surface-2);font-size:11px}.mail-recipient-summary strong{font-size:12px}.mail-recipient-summary span{padding-left:8px;border-left:1px solid var(--line)}.mail-preview-body{padding:14px;border:1px solid var(--line);border-radius:9px;background:#fff;color:#202124;line-height:1.55}.mail-preview-subject{font-size:16px;font-weight:800;margin:10px 0}

/* Read-only archive reuses shared forms, actions, timeline and dialog geometry. */
.mail-archive-list{display:grid;gap:8px}.mail-archive-row{display:grid;gap:5px;text-align:left;overflow-wrap:anywhere}.mail-archive-text{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.55;margin:12px 0}.mail-archive-list small{color:var(--muted)}#mailArchiveThreadBody .timeline-item{min-width:0;overflow-wrap:anywhere}
.mailing-module{max-width:1500px;margin:0 auto}.mailing-history-row{grid-template-columns:minmax(0,1fr) auto auto}.mail-stat-row{display:flex;gap:4px;flex-wrap:wrap;margin-top:7px}.mail-stat-chip{display:inline-flex;gap:4px;align-items:center;border:1px solid var(--line);border-radius:999px;padding:2px 6px;background:var(--surface-2);font-size:10px;color:var(--muted)}.mail-stat-chip strong{display:inline;color:var(--text)}.template-row,.suppressed-row{grid-template-columns:minmax(0,1fr) auto}.mail-status.status-accepted,.mail-status.status-delivered,.mail-status.status-sent{color:var(--ok)}.mail-status.status-deferred,.mail-status.status-soft_bounce,.mail-status.status-pending,.mail-status.status-queued,.mail-status.status-sending,.mail-status.status-processing{color:#8a6a17}.mail-status.status-failed,.mail-status.status-hard_bounce,.mail-status.status-suppressed{color:var(--danger)}.mail-diagnostic{max-width:420px;overflow-wrap:anywhere}.mail-delivery-table{min-width:900px}

@media(max-width:850px){.mailing-history-row{grid-template-columns:1fr auto}.mailing-history-row>button{grid-column:1/-1;justify-self:start}.form-grid.two{grid-template-columns:1fr}.column-mail-button span{display:none}}
@media(max-width:600px){.split-heading{align-items:stretch;flex-direction:column}.column-drop-placeholder{min-height:50vh}.template-row,.suppressed-row{grid-template-columns:1fr}.template-row button,.suppressed-row button{justify-self:start}}
.administration-module{max-width:none;margin:0}.section-toolbar{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:12px}.section-toolbar .panel-title{margin-bottom:3px}.role-fieldset{border:1px solid var(--line);border-radius:9px;padding:11px}.role-fieldset legend{padding:0 5px;font-size:12px;font-weight:800}.role-choice-grid{display:grid;gap:7px}.mail-settings-subsection{padding:12px;border:1px solid var(--line);border-radius:9px;background:var(--surface-2)}.mail-settings-subsection h3{margin:0 0 5px;font-size:14px}.mail-settings-subsection p{margin:0}.stacked-label select,.stacked-label textarea{min-width:0;max-width:100%;border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:8px;padding:9px}.app-dialog input,.app-dialog select,.app-dialog textarea{max-width:100%}
@media(max-width:650px){.section-toolbar{flex-direction:column;align-items:stretch}}

/* 0.2.6 member-management refinements */
.phone-input{display:grid;grid-template-columns:minmax(150px,.42fr) minmax(0,1fr);gap:8px;align-items:center}
.phone-input select,.phone-input input{width:100%}
.member-edit-sections{display:block;border-top:1px solid var(--line,#d9e3e4);margin-top:4px;padding-top:6px}
.member-edit-actions{position:sticky;bottom:0;background:var(--bg,#fff);padding-top:14px;padding-bottom:2px;border-top:1px solid var(--line,#d9e3e4);z-index:3}
.member-group-add{display:flex;gap:8px;align-items:center;margin-top:10px;flex-wrap:wrap}
.member-group-add select{min-width:min(360px,100%);flex:1 1 260px}
.group-chip-remove{border:0;background:transparent;color:inherit;padding:0 0 0 5px;min-width:auto;line-height:1;font-size:15px;font-weight:900;cursor:pointer}
.group-chip-remove:hover{opacity:.7}
.member-card{position:relative}
.member-card-remove{position:absolute;right:7px;top:7px;width:24px;height:24px;padding:0;border-radius:999px;border:1px solid color-mix(in srgb,var(--member-accent) 55%,transparent);background:var(--bg,#fff);color:var(--member-accent);font-size:16px;font-weight:900;line-height:1;opacity:.8;z-index:4}
.member-card-remove:hover{opacity:1;transform:scale(1.05)}
.warning-dialog{border-top:4px solid #d99a1d}
.success-dialog{border-top:4px solid #2c9b72}
.error-dialog,.danger-dialog{border-top:4px solid #c64b4b}
.warning-dialog .dialog-header,.success-dialog .dialog-header,.error-dialog .dialog-header,.danger-dialog .dialog-header{border-top:0}
.warning-dialog .dialog-warning-copy{color:#9b6500;font-weight:700}
.warning-button{border:0!important;border-radius:8px;background:#d99a1d!important;color:#fff!important;padding:9px 13px!important;font-weight:700;cursor:pointer}
.warning-button:hover{filter:brightness(.96)}
.success-dialog .dialog-reason{color:#28795c}
.error-dialog .dialog-reason{color:#9d3737}
.dialog-suspended{filter:grayscale(.35) brightness(.78);opacity:.68;pointer-events:none}
@media(max-width:720px){.phone-input{grid-template-columns:1fr}.member-edit-actions{position:static}}

/* 0.2.7 member-board and member-dialog interaction fixes */
.group-chip-remove{
  display:inline-grid;
  place-items:center;
  width:16px;
  height:16px;
  flex:0 0 16px;
  margin-left:2px;
  padding:0;
  border:0;
  border-radius:999px;
  background:transparent;
  color:inherit;
  font:900 13px/1 Arial,sans-serif;
  cursor:pointer;
}
.group-chip-remove:hover{background:color-mix(in srgb,var(--group-color) 18%,transparent);opacity:1}
.group-chip-openable{cursor:pointer}
.group-chip-openable:hover{border-color:color-mix(in srgb,var(--group-color) 62%,var(--line));background:color-mix(in srgb,var(--group-color) 15%,var(--surface))}
.member-card-remove{
  display:grid;
  place-items:center;
  padding:0;
  font:900 16px/1 Arial,sans-serif;
}
.app-dialog[open].member-editor-mode,
.app-dialog[open].member-create-mode{
  display:flex;
  flex-direction:column;
  overflow:hidden;
}
.member-editor-mode>.dialog-header,
.member-create-mode>.dialog-header{
  position:relative;
  top:auto;
  flex:0 0 auto;
}
.member-editor-mode>.dialog-body,
.member-create-mode>.dialog-body{
  display:flex;
  flex:1 1 auto;
  min-height:0;
  overflow:hidden;
  padding:0;
}
.member-edit-form,
.new-member-form{
  display:flex;
  flex:1 1 auto;
  min-height:0;
  width:100%;
  flex-direction:column;
}
.member-edit-scroll,
.new-member-scroll{
  flex:1 1 auto;
  min-height:0;
  overflow:auto;
  padding:17px;
  scrollbar-gutter:stable;
}
.member-edit-actions,
.new-member-actions{
  position:static;
  flex:0 0 auto;
  margin:0;
  padding:12px 17px;
  border-top:1px solid var(--line,#d9e3e4);
  background:var(--surface,#fff);
  box-shadow:0 -8px 20px rgba(0,0,0,.08);
  z-index:4;
}
@media(max-width:720px){
  .member-edit-actions,.new-member-actions{position:static}
}


/* 0.2.8 stable member highlighting, geometrically centred remove icons, group-member tree */
.member-card:hover{
  transform:none;
  border-color:var(--accent);
  background:color-mix(in srgb,var(--accent) 4%,var(--surface));
  box-shadow:0 2px 7px rgba(0,0,0,.04),0 0 0 1px color-mix(in srgb,var(--accent) 18%,transparent);
}
.member-card-remove:hover{transform:none}
.tree-expanded-content{margin:2px 0 5px 26px;border-left:1px solid var(--line);padding-left:8px}
.tree-member-panel{margin:4px 0 6px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:color-mix(in srgb,var(--surface-2) 82%,transparent)}
.tree-member-panel-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px;color:var(--muted);font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.04em}
.tree-member-list{display:grid;gap:4px}
.tree-member-row{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:30px;padding:5px 7px;border-radius:7px;background:var(--surface)}
.tree-member-row strong{font-size:12px}
.tree-member-row>:is(.tree-mail-trigger,.mail-action-unavailable-wrap){margin-left:auto;flex-shrink:0}
.mail-action-unavailable-wrap{display:inline-flex;align-items:center}
.mail-action-unavailable-wrap:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:8px}
.mail-action-unavailable-wrap>.mail-action-unavailable{opacity:.45;cursor:not-allowed}
.mail-action-unavailable-wrap>.mail-action-unavailable:hover{border-color:var(--line);color:var(--muted)}
.tree-member-remove{display:grid;place-items:center;position:relative;width:22px;height:22px;padding:0;border:1px solid color-mix(in srgb,var(--danger) 35%,var(--line));border-radius:999px;background:transparent;color:var(--danger);font-size:0;cursor:pointer}
.tree-member-remove:hover{background:color-mix(in srgb,var(--danger) 8%,transparent)}
.tree-member-empty{padding:5px 2px;color:var(--muted);font-size:11px}
.tree-member-add{display:flex;gap:6px;align-items:center;margin-top:7px}
.tree-member-add select{min-width:0;flex:1 1 auto;border:1px solid var(--line);border-radius:7px;background:var(--surface);color:var(--text);padding:7px 8px;font:inherit;font-size:11.5px}
.tree-member-add button{flex:0 0 auto;padding:7px 9px;font-size:11px}
.tree-children{margin-left:0}
.member-edit-actions.split-actions .danger-button{margin-right:auto}
@media(max-width:700px){.tree-expanded-content{margin-left:14px;padding-left:4px}.tree-member-add{align-items:stretch;flex-direction:column}.tree-member-add button{align-self:flex-start}}


/* 0.2.9 normalized member-column headers */
.column-head.column-head-actions{
  height:78px;
  min-height:78px;
  padding:10px 12px;
  flex-direction:column;
  flex-wrap:nowrap;
  align-items:stretch;
  justify-content:flex-start;
  gap:7px;
}
.column-head.column-head-actions .column-title-button,
.column-head.column-head-actions .column-title-static{
  width:100%;
  min-height:24px;
  flex:0 0 24px;
}
.column-head.column-head-actions .column-mail-button{
  height:25px;
  min-height:25px;
  align-self:flex-start;
}


/* 0.2.10 Leden geometry normalization
 * Keep column geometry identical whether the column has a group colour or not,
 * and align the module heading / sort control / actions in one stable band. */
.kanban-column{
  border-top-width:3px;
  border-top-color:var(--line);
}
.colored-column{
  border-top-color:var(--column-color,#64748B);
}

.members-module-header{
  display:grid;
  grid-template-columns:minmax(320px,1fr) auto;
  align-items:stretch;
  min-height:52px;
}
.members-module-header .members-heading{
  display:flex;
  min-height:52px;
  flex-direction:column;
  justify-content:center;
}
.members-module-header .members-toolbar{
  min-height:52px;
  align-items:center;
  align-content:center;
  flex-wrap:nowrap;
}
.members-module-header .segmented-control,
.members-module-header .secondary,
.members-module-header .primary,
.members-module-header .search{
  height:38px;
  min-height:38px;
}
.members-module-header .segmented-control{
  padding:3px;
}
.members-module-header .segmented-control>span{
  display:flex;
  height:30px;
  align-items:center;
}
.members-module-header .segmented-control button{
  display:inline-flex;
  height:30px;
  align-items:center;
  justify-content:center;
  padding-top:0;
  padding-bottom:0;
}
.members-module-header .secondary,
.members-module-header .primary{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding-top:0;
  padding-bottom:0;
  white-space:nowrap;
}
.members-module-header .search{
  padding-top:0;
  padding-bottom:0;
}

@media(max-width:1100px){
  .members-module-header{
    grid-template-columns:1fr;
    align-items:stretch;
  }
  .members-module-header .members-toolbar{
    min-height:auto;
    flex-wrap:wrap;
  }
}


/* 0.2.11 membership/instrument editor polish */
.member-group-add{display:block;margin-top:9px}
.member-group-add select,.member-instrument-add select{width:100%;border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:8px;padding:9px}
.member-instrument-profile-list{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.instrument-profile-chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:999px;background:var(--surface-2);padding:3px 6px 3px 9px;font-size:11px;font-weight:700}
.instrument-profile-remove{position:relative;width:18px;height:18px;flex:0 0 18px;padding:0;border:0;border-radius:999px;background:transparent;color:var(--muted);cursor:pointer;font-size:0}
.instrument-profile-remove:hover{background:color-mix(in srgb,var(--danger) 9%,transparent);color:var(--danger)}
.member-instrument-add{margin-top:8px}
#columnResetButton[hidden]{display:none!important}

/* 0.3.0 Bezetting relationship graph */
.lineup-module{max-width:none}.lineup-root{display:grid;gap:16px}.lineup-ensemble{overflow:hidden;border-top:3px solid var(--ensemble-color,#64748B)}.lineup-ensemble-header{display:grid;grid-template-columns:minmax(240px,1fr) auto auto;gap:12px;align-items:center;padding:11px 13px;border-bottom:1px solid var(--line);background:var(--surface)}.lineup-summary{color:var(--muted);font-size:11px;white-space:nowrap}.lineup-card-actions{display:flex;gap:7px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.lineup-card-actions .secondary,.lineup-card-actions .danger-button{padding:7px 9px;font-size:11px}.lineup-body{padding:0;background:var(--surface-2)}.lineup-canvas{position:relative;min-width:1080px;min-height:340px;overflow:auto;outline:none}.lineup-node{position:relative;z-index:3;display:flex;align-items:center;gap:8px;min-height:42px;padding:8px 10px;border:1px solid var(--line);border-radius:9px;background:var(--surface);box-shadow:0 2px 6px rgba(0,0,0,.04);font-size:12px;font-weight:700;user-select:none}.lineup-ensemble-node{border-color:color-mix(in srgb,var(--ensemble-color) 55%,var(--line));box-shadow:inset 3px 0 0 var(--ensemble-color)}.lineup-group-node{box-shadow:inset 3px 0 0 var(--node-color,#64748B)}.lineup-dot{width:9px;height:9px;flex:0 0 9px;border-radius:999px;background:var(--node-color,#64748B)}.lineup-node-icon{display:grid;place-items:center;width:18px;height:18px;flex:0 0 18px;border-radius:5px;background:var(--surface-2);color:var(--accent)}.lineup-function-node .lineup-node-icon{color:#7c3aed}.lineup-support-node{border-style:dashed;border-width:2px}.lineup-draggable{cursor:grab}.lineup-draggable:active{cursor:grabbing}.lineup-draggable.dragging{opacity:.42}.lineup-drop-target{transition:border-color .12s ease,box-shadow .12s ease,background .12s ease}.lineup-drop-active{border-color:var(--accent)!important;background:color-mix(in srgb,var(--accent) 8%,var(--surface))!important;box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 22%,transparent)!important}.lineup-svg{position:absolute;inset:0;z-index:1;overflow:visible;pointer-events:none}.lineup-edge-group{--edge-color:#7a9099}.lineup-edge{fill:none;stroke:var(--edge-color);stroke-width:2;opacity:.72;vector-effect:non-scaling-stroke}.lineup-edge-group.structural .lineup-edge{stroke-width:1.5;opacity:.42}.lineup-edge-group.support .lineup-edge{stroke-dasharray:7 6}.lineup-edge-group.editable{pointer-events:stroke;cursor:pointer}.lineup-edge-hit{fill:none;stroke:transparent;stroke-width:14;pointer-events:stroke;vector-effect:non-scaling-stroke}.lineup-edge-group.editable:hover .lineup-edge{stroke-width:3;opacity:1}.lineup-edge-group.selected .lineup-edge{stroke:var(--accent);stroke-width:4;opacity:1}.lineup-edge-group.selected .lineup-edge-hit{stroke:color-mix(in srgb,var(--accent) 6%,transparent)}
@media(max-width:1050px){.lineup-ensemble-header{grid-template-columns:1fr auto}.lineup-summary{grid-column:1}.lineup-card-actions{grid-column:2;grid-row:1/3}}
@media(max-width:720px){.lineup-ensemble-header{display:flex;align-items:stretch;flex-direction:column}.lineup-card-actions{justify-content:flex-start}}

/* 0.3.1 Bezetting hierarchy/director refinements */

.lineup-ensemble-node{align-items:stretch;flex-direction:column;gap:8px;padding:8px}
.lineup-ensemble-name{display:flex;align-items:center;gap:8px;min-height:28px;font-weight:800}
.lineup-director-row{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:7px;min-height:34px;padding-top:7px;border-top:1px solid var(--line);font-size:11px}
.lineup-director-label{color:var(--muted);font-weight:800;white-space:nowrap}
.lineup-director-people{display:flex;gap:5px;flex-wrap:wrap;min-width:0}
.lineup-director-empty{color:var(--muted);font-weight:600}
.lineup-director-person{display:inline-grid;gap:1px;max-width:100%;padding:4px 7px;border:1px solid var(--line);border-radius:7px;background:var(--surface-2);color:var(--text);font:inherit;font-size:10.5px;font-weight:800;text-align:left;cursor:default}
.lineup-director-person small{font-size:9px;font-weight:600;color:var(--muted)}
.lineup-director-person.editable{cursor:pointer}
.lineup-director-person.editable:hover{border-color:var(--accent)}
.lineup-director-person.selected{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 18%,transparent)}
.lineup-director-person.lineup-support-node{border-style:dashed;border-width:2px}
.lineup-node-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lineup-unlinked{margin-left:auto;flex:0 0 auto;font-size:9px;font-weight:800;color:#8a6a17;background:color-mix(in srgb,#d99a1d 12%,var(--surface));border-radius:999px;padding:2px 6px;white-space:nowrap}
#lineupInstrumentNameField[hidden]{display:none!important}


/* 0.3.3 Bezetting relation interaction and member relation modal */

.lineup-edge-selection-halo{fill:none;stroke:var(--accent);stroke-width:8;opacity:0;pointer-events:none;vector-effect:non-scaling-stroke}
.lineup-edge-group.selected .lineup-edge-selection-halo{opacity:.34;filter:drop-shadow(0 0 2px color-mix(in srgb,var(--accent) 58%,transparent))}
.lineup-edge-group.selected .lineup-edge{stroke:var(--edge-color);stroke-width:3;opacity:1}
.lineup-edge-group.selected .lineup-edge-hit{stroke:transparent;stroke-width:18}
.lineup-member-openable{cursor:pointer}
.lineup-member-openable.lineup-draggable{cursor:grab}
.lineup-member-openable.lineup-draggable:active{cursor:grabbing}
.lineup-member-openable:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.lineup-context-menu{position:fixed;z-index:2147483000;min-width:190px;padding:5px;border:1px solid var(--line);border-radius:9px;background:var(--surface);box-shadow:0 12px 32px rgba(0,0,0,.18)}
.lineup-context-menu[hidden]{display:none!important}
.lineup-context-menu button{display:block;width:100%;border:0;border-radius:6px;background:transparent;color:var(--danger);padding:9px 10px;text-align:left;font:inherit;font-size:12px;font-weight:800;cursor:pointer}
.lineup-context-menu button:hover,.lineup-context-menu button:focus-visible{outline:none;background:color-mix(in srgb,var(--danger) 9%,var(--surface))}

/* 0.3.4 Bezetting instrument-group relation colours */
.lineup-edge-group.multicolor .lineup-edge{stroke-linecap:butt;opacity:.9}
.lineup-edge-group.multicolor.editable:hover .lineup-edge{stroke-width:3;opacity:1}
.lineup-edge-group.multicolor.selected .lineup-edge{stroke-width:3;opacity:1}

/* 0.3.5 Groepen ↔ Bezetting instrument-leaf projection */
.tree-instrument-row{background:color-mix(in srgb,var(--group-color,#64748B) 4%,var(--surface));border-left:3px solid color-mix(in srgb,var(--group-color,#64748B) 70%,var(--line))}
.tree-instrument-row:hover{background:color-mix(in srgb,var(--group-color,#64748B) 8%,var(--surface-2))}
.tree-instrument-glyph{display:grid;place-items:center;width:18px;height:22px;color:var(--group-color,#64748B);font-size:15px;font-weight:900;user-select:none}
.tree-relation-remove{position:relative;width:26px;height:26px;padding:0;border:1px solid color-mix(in srgb,var(--danger) 30%,var(--line));border-radius:999px;background:transparent;color:var(--danger);cursor:pointer;font-size:0}
.tree-relation-remove:hover{background:color-mix(in srgb,var(--danger) 9%,transparent)}
.tree-instrument-tools{margin:5px 0 7px;padding:8px 10px;border:1px dashed color-mix(in srgb,var(--group-color,#64748B) 35%,var(--line));border-radius:8px;background:color-mix(in srgb,var(--surface-2) 75%,transparent)}
.instrument-member-panel{border-left:3px solid var(--group-color,#64748B)}
.tree-instrument-node>.tree-expanded-content{margin-left:26px}
@media(max-width:700px){.tree-instrument-row{grid-template-columns:22px 18px 18px 1fr auto auto}.tree-instrument-node>.tree-expanded-content{margin-left:14px}}

/* 0.3.6 horizontal topology ------------------------------------------------ */
.lineup-topology-scroll{overflow:auto;overscroll-behavior-inline:contain;background:var(--surface-2)}
.lineup-canvas.lineup-topology-canvas{position:relative;min-width:0;min-height:340px;overflow:visible;background:
  linear-gradient(to bottom,color-mix(in srgb,var(--line) 32%,transparent) 1px,transparent 1px) 0 46px/100% 1px no-repeat}
.lineup-topology-headings{position:absolute;inset:0;z-index:7;pointer-events:none}
.lineup-topology-heading{position:absolute;top:0;height:46px;display:flex;align-items:center;padding:0 4px;border-bottom:1px solid var(--line);color:var(--muted);font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.055em;white-space:nowrap}
.lineup-topology-nodes{position:absolute;inset:0;z-index:6;pointer-events:none}
.lineup-topology-node{position:absolute!important;z-index:6;box-sizing:border-box;pointer-events:auto;transition:box-shadow .12s ease,border-color .12s ease}
.lineup-topology-node .lineup-node-text{flex:1 1 auto;min-width:0}
.lineup-topology-node.lineup-member-node{gap:7px}


.lineup-topology-node.lineup-instrument-node{display:grid;grid-template-columns:minmax(0,1fr);align-items:stretch;gap:6px}
.lineup-instrument-name-row{display:flex;align-items:center;gap:8px;min-width:0}
.lineup-instrument-name-row .lineup-instrument-rename-trigger{margin-left:auto;flex:0 0 26px}
.lineup-topology-node.lineup-instrument-node .lineup-instrument-name-row .lineup-node-text{overflow:visible;text-overflow:clip;white-space:normal;overflow-wrap:anywhere;line-height:1.25}
.lineup-instrument-control-row{display:flex;align-items:center;gap:4px;min-width:0;padding-top:5px;border-top:1px solid color-mix(in srgb,var(--line) 78%,transparent)}
.lineup-instrument-control-row .lineup-unlinked{margin-left:0}
.lineup-instrument-control-row .lineup-node-actions{margin-left:auto}
.lineup-mail-entity,.lineup-bulk-edit-entity{display:grid;place-items:center;width:26px;height:26px;flex:0 0 26px;margin-left:auto;padding:0;border:1px solid var(--line);border-radius:7px;background:var(--surface-2);color:var(--text);font:inherit;font-size:14px;line-height:1;cursor:pointer;box-shadow:none}
.lineup-mail-entity:hover,.lineup-mail-entity:focus-visible,.lineup-bulk-edit-entity:hover,.lineup-bulk-edit-entity:focus-visible{outline:none;border-color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,var(--surface));color:var(--accent)}
.lineup-unlinked+.lineup-mail-entity{margin-left:2px}
.lineup-svg{z-index:5}
.lineup-edge{stroke-linecap:round;stroke-linejoin:round}
.lineup-edge-group.multicolor .lineup-edge{stroke-linecap:butt;stroke-linejoin:round}
.lineup-edge-group.structural .lineup-edge{opacity:.5}
.lineup-edge-group.editable:hover .lineup-edge{opacity:1}
@media(max-width:720px){.lineup-topology-heading{font-size:9px}.lineup-topology-node{font-size:11px}.lineup-mail-entity,.lineup-bulk-edit-entity{width:24px;height:24px;flex-basis:24px}}


/* 0.3.11 collision-free subtree bands + viewport controls ---------------- */
.lineup-topology-shell{position:relative;min-width:0}
.lineup-topology-scroll{height:clamp(390px,calc(100vh - 305px),720px);min-height:390px;overflow:auto;cursor:grab;scrollbar-gutter:stable;background:var(--surface-2)}
.lineup-topology-scroll.is-panning{cursor:grabbing;user-select:none}
.lineup-topology-stage{position:relative;min-width:100%;min-height:100%}
.lineup-canvas.lineup-topology-canvas{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform}
.lineup-topology-controls{position:absolute;right:10px;top:9px;z-index:20;display:flex;align-items:center;gap:4px;padding:4px;border:1px solid color-mix(in srgb,var(--line) 88%,transparent);border-radius:9px;background:color-mix(in srgb,var(--surface) 94%,transparent);box-shadow:0 2px 9px rgba(0,0,0,.08);backdrop-filter:blur(6px)}
.lineup-topology-controls button{display:grid;place-items:center;min-width:29px;height:28px;padding:0 8px;border:1px solid var(--line);border-radius:6px;background:var(--surface-2);color:var(--text);font:inherit;font-size:12px;font-weight:800;cursor:pointer}
.lineup-topology-controls button:hover,.lineup-topology-controls button:focus-visible{outline:none;border-color:var(--accent);color:var(--accent);background:color-mix(in srgb,var(--accent) 7%,var(--surface))}
.lineup-topology-zoom-label{display:inline-flex;min-width:44px;height:28px;align-items:center;justify-content:center;color:var(--muted);font-size:11px;font-weight:800;font-variant-numeric:tabular-nums}
@media(max-width:720px){.lineup-topology-scroll{height:clamp(360px,calc(100vh - 245px),620px);min-height:360px}.lineup-topology-controls{right:6px;top:6px}.lineup-topology-controls button{min-width:27px;height:27px;padding:0 7px}.lineup-topology-zoom-label{height:27px}}

/* 0.3.18 pointer-driven Bezetting drag: native HTML DnD is intentionally avoided so Firefox keeps wheel events alive. */
.lineup-drag-ghost{position:fixed!important;z-index:100000!important;pointer-events:none!important;margin:0!important;opacity:.88;box-shadow:0 12px 30px rgba(15,23,42,.22)!important;transform:scale(.985);transform-origin:top left}
body.lineup-pointer-dragging,body.lineup-pointer-dragging *{cursor:grabbing!important}


/* 0.3.19 recursive entity exports */
.lineup-node-actions{margin-left:auto;display:inline-flex;align-items:center;gap:4px;flex:0 0 auto}
.lineup-node-actions .lineup-mail-entity,.lineup-node-actions .lineup-bulk-edit-entity{margin-left:0}
.entity-export-trigger{display:grid;place-items:center;width:26px;height:26px;flex:0 0 26px;padding:0;border:1px solid var(--line);border-radius:7px;background:var(--surface-2);color:var(--text);font:800 14px/1 system-ui,sans-serif;cursor:pointer;box-shadow:none}
.entity-export-trigger:hover,.entity-export-trigger:focus-visible{outline:none;border-color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,var(--surface));color:var(--accent)}
.entity-export-trigger:disabled{cursor:wait;opacity:.72}
.entity-export-trigger.is-exporting{position:relative;color:transparent}
.entity-export-trigger.is-exporting::after{content:'';position:absolute;width:12px;height:12px;border:2px solid color-mix(in srgb,var(--accent) 28%,transparent);border-top-color:var(--accent);border-radius:999px;animation:entity-export-spin .7s linear infinite}
@keyframes entity-export-spin{to{transform:rotate(360deg)}}
.tree-export-trigger{justify-self:end;background:var(--surface)}
.entity-export-menu{position:fixed;z-index:10000;display:grid;gap:3px;padding:5px;border:1px solid var(--line);border-radius:9px;background:var(--surface);box-shadow:0 14px 36px rgba(0,0,0,.22)}
.entity-export-menu[hidden]{display:none}
.entity-export-menu button{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;width:100%;padding:8px 9px;border:0;border-radius:6px;background:transparent;color:var(--text);text-align:left;cursor:pointer}
.entity-export-menu button:hover,.entity-export-menu button:focus-visible{outline:none;background:color-mix(in srgb,var(--accent) 10%,var(--surface));color:var(--accent)}
.entity-export-menu button strong{font-size:11.5px}
.entity-export-menu button span{color:var(--muted);font-size:10.5px;font-weight:700}
@media(max-width:720px){.lineup-node-actions{gap:3px}.entity-export-trigger{width:24px;height:24px;flex-basis:24px}}

/* 0.3.23 compact instrument/function branches.
 * Instrument/function nodes stay fully interactive while their member fan-out is
 * collapsed. This keeps the topology useful on smaller laptop viewports. */
.lineup-branch-toggle{
  display:grid;place-items:center;width:22px;height:22px;flex:0 0 22px;padding:0;
  border:1px solid var(--line);border-radius:6px;background:var(--surface-2);color:var(--muted);
  font:900 12px/1 ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;cursor:pointer;
  transition:border-color .12s ease,color .12s ease,background .12s ease,transform .12s ease
}
.lineup-branch-toggle:hover,.lineup-branch-toggle:focus-visible{outline:none;border-color:var(--accent);color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,var(--surface));transform:translateY(-1px)}
.lineup-branch-count{display:inline-grid;place-items:center;min-width:22px;height:20px;padding:0 6px;border:1px solid var(--line);border-radius:999px;background:var(--surface-2);color:var(--muted);font-size:10px;font-weight:800}
.lineup-topology-control-separator{width:1px;height:20px;margin:0 2px;background:var(--line)}

/* 0.3.26 · Instrumentenbeheer module v0.1 */

.compact-select{min-width:165px}.instrument-management-module{max-width:1650px;margin:0 auto}.instrument-stat-grid{display:grid;grid-template-columns:repeat(5,minmax(120px,1fr));gap:10px;margin-bottom:14px}.instrument-stat{padding:12px 14px}.instrument-stat strong{display:block;font-size:24px}.instrument-stat span{display:block;margin-top:2px;color:var(--muted);font-size:12px}.instrument-asset-card{position:relative;padding:13px;display:grid;gap:8px;cursor:pointer;transition:border-color .14s ease,transform .14s ease,box-shadow .14s ease}.instrument-asset-card:hover{border-color:var(--accent);transform:translateY(-1px)}.instrument-asset-card[draggable=true]{cursor:grab}.instrument-asset-card.dragging{opacity:.36;transform:none}.instrument-card-top{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.instrument-card-top strong{display:block;margin-top:2px;font-size:15px}.inventory-number{display:inline-flex;font-weight:900;font-size:12px;letter-spacing:.04em;color:var(--accent)}.instrument-status{display:inline-flex;align-items:center;border-radius:999px;padding:4px 8px;font-size:10px;font-weight:850;white-space:nowrap;border:1px solid var(--line);background:var(--surface-2)}.instrument-status.status-available{color:var(--ok)}.instrument-status.status-loaned{color:var(--accent)}.instrument-status.status-maintenance{color:#9a7112}.instrument-status.status-out_of_service{color:var(--danger)}.instrument-borrower{display:grid;gap:1px;padding:8px 10px;border-radius:8px;border:1px solid color-mix(in srgb,var(--accent) 25%,var(--line));background:color-mix(in srgb,var(--accent) 7%,var(--surface))}.instrument-borrower span,.instrument-borrower small{font-size:10px;color:var(--muted)}.instrument-card-footer{display:flex;align-items:end;justify-content:space-between;gap:10px;margin-top:2px}.instrument-card-footer>div{display:grid;gap:2px}.instrument-card-footer small{display:block;color:var(--muted);font-size:10.5px}.instrument-open{padding:6px 9px;font-size:11px}.loan-drop-panel{position:fixed;right:14px;top:14px;bottom:14px;width:min(380px,calc(100vw - 28px));z-index:500;padding:14px;background:var(--surface);border:2px solid var(--accent);border-radius:14px;box-shadow:0 24px 70px rgba(0,0,0,.28);display:flex;flex-direction:column;gap:10px}.loan-drop-panel[hidden]{display:none}.loan-drop-panel header{display:grid;gap:2px}.loan-drop-panel header strong{font-size:17px}.loan-drop-panel header small{color:var(--muted)}.loan-member-list{display:grid;gap:7px;overflow:auto;min-height:0;padding-right:3px}.loan-member-drop{display:grid;gap:2px;padding:9px 10px;border:1px solid var(--line);border-radius:9px;background:var(--surface-2)}.loan-member-drop small{color:var(--muted);font-size:10.5px}.loan-member-drop.recommended{border-color:color-mix(in srgb,var(--accent) 44%,var(--line));background:color-mix(in srgb,var(--accent) 8%,var(--surface))}.loan-member-drop.drop-target{outline:3px solid color-mix(in srgb,var(--accent) 35%,transparent);border-color:var(--accent);background:color-mix(in srgb,var(--accent) 16%,var(--surface))}.instrument-detail-dialog>.dialog-body{padding:16px}.instrument-detail-hero{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(260px,.8fr);gap:14px}.instrument-detail-summary{min-width:0}.instrument-primary-actions,.instrument-inline-actions{display:flex;gap:7px;align-items:center;flex-wrap:wrap;margin-top:12px}.instrument-photo-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;align-content:start}.instrument-photo{margin:0;min-width:0}.instrument-photo img{display:block;width:100%;height:130px;object-fit:cover;border:1px solid var(--line);border-radius:8px;background:var(--surface-2)}.instrument-photo figcaption{margin-top:3px;color:var(--muted);font-size:10px}.instrument-photo-empty{display:grid;place-items:center;min-height:160px;border:1px dashed var(--line);border-radius:9px;color:var(--muted);font-size:11px}.instrument-photo-upload-inline{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:12px;padding:9px;border:1px solid var(--line);border-radius:9px;background:var(--surface-2)}.instrument-photo-upload-inline input{min-width:0;flex:1}.instrument-detail-columns{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(300px,.8fr);gap:18px;margin-top:14px}.maintenance-list{display:grid;gap:9px}.maintenance-record{border:1px solid var(--line);border-left:4px solid #9a7112;border-radius:9px;padding:10px;background:var(--surface)}.maintenance-record.final{border-left-color:var(--ok)}.maintenance-record-head{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}.maintenance-record-head strong,.maintenance-record-head small{display:block}.maintenance-record-head small{margin-top:2px;color:var(--muted);font-size:10.5px}.maintenance-record p{margin:8px 0;line-height:1.45}.maintenance-costs{display:flex;gap:6px;flex-wrap:wrap}.maintenance-costs span{display:inline-flex;padding:3px 7px;border-radius:999px;background:var(--surface-2);border:1px solid var(--line);font-size:10.5px}.instrument-photo-strip{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:6px;margin-top:9px}.instrument-photo-strip .instrument-photo img{height:90px}.photo-file-label small{display:block;color:var(--muted);font-weight:400}.instrument-cost-fieldset{border:1px solid var(--line);border-radius:9px;padding:11px}.instrument-cost-fieldset legend{padding:0 6px;font-weight:850;font-size:12px}.compact-placeholder{margin:20px auto}.member-loan-row{display:grid;gap:4px;margin-top:7px;padding-top:6px;border-top:1px dashed var(--line)}.member-loan-row>small{font-size:9px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:800}.member-loan-badge{border-color:color-mix(in srgb,var(--accent) 40%,var(--line));background:color-mix(in srgb,var(--accent) 10%,var(--surface));color:var(--accent-strong);font-weight:800}
@media(max-width:1050px){.instrument-stat-grid{grid-template-columns:repeat(3,minmax(110px,1fr))}.instrument-detail-hero,.instrument-detail-columns{grid-template-columns:1fr}.instrument-photo-gallery{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:650px){.instrument-stat-grid{grid-template-columns:repeat(2,minmax(100px,1fr))}.instrument-photo-gallery{grid-template-columns:repeat(2,minmax(0,1fr))}.instrument-photo img{height:110px}.instrument-card-footer{align-items:stretch;flex-direction:column}.instrument-card-footer button{align-self:flex-start}.compact-select{min-width:0;width:100%}}
.instrument-status-stack{display:grid;justify-items:end;gap:4px}

/* 0.3.27 UX: geometric modal close icon + bulk-mail selectors. */
.dialog-header>.icon-button{position:relative;font-size:0;line-height:0}
.dialog-header>.icon-button::before,.dialog-header>.icon-button::after{content:"";position:absolute;left:50%;top:50%;width:12px;height:1.6px;border-radius:2px;background:currentColor;transform-origin:center}
.dialog-header>.icon-button::before{transform:translate(-50%,-50%) rotate(45deg)}
.dialog-header>.icon-button::after{transform:translate(-50%,-50%) rotate(-45deg)}

/* 0.3.28 UX: every shared application dialog owns one scrollable body and a sticky action bar.
 * This deliberately replaces the old maintenance-only exception so Instrument toevoegen and
 * every current/future app-dialog get the same behavior without per-dialog selectors. */
.app-dialog[open]{display:flex;flex-direction:column;overflow:hidden}
.app-dialog>.dialog-header{flex:0 0 auto}
.app-dialog>.dialog-body{flex:1 1 auto;min-height:0;overflow:auto}
.app-dialog .dialog-actions{position:sticky;bottom:0;z-index:4;padding-top:12px;padding-bottom:4px;background:linear-gradient(to bottom,color-mix(in srgb,var(--surface) 0%,transparent),var(--surface) 22%)}
/* Direct footers own their inset; nested action groups retain their body spacing. */
.app-dialog > .dialog-actions{flex:0 0 auto;margin-top:0;padding:14px 17px 17px;gap:8px}
/* Only the calendar ticket workspace hosts a full page in its own scroll region. */
#calendarTicketDialog{width:calc(100vw - 24px);max-width:1600px;height:calc(100vh - 24px);height:calc(100dvh - 24px);max-height:none;margin:auto;padding:0;overflow:hidden}
#calendarTicketFrame{display:block;flex:1 1 auto;min-height:0;width:100%;border:0;background:var(--bg)}
@media(max-width:600px){#calendarTicketDialog{width:calc(100vw - 8px);height:calc(100vh - 8px);height:calc(100dvh - 8px)}}
.entity-select-control{display:inline-flex;align-items:center;gap:5px;margin:0;cursor:pointer;font-size:10.5px;color:var(--muted);white-space:nowrap}
.entity-select-control input{width:15px;height:15px;margin:0;accent-color:var(--accent)}
.column-head-mail-actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.tree-mail-trigger{width:30px;height:30px;display:inline-grid;place-items:center;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--text);cursor:pointer}
.tree-mail-trigger:hover{border-color:var(--accent);color:var(--accent)}
.tree-select-control,.lineup-select-control{flex:0 0 auto}
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}

/* 0.3.29 Bezetting: one ensemble at a time + top-down topology. */
.lineup-root{gap:10px}
.lineup-ensemble-nav{display:flex;align-items:center;gap:10px;min-width:0;padding:6px;margin-bottom:0;overflow:hidden}
.lineup-ensemble-tabs{display:flex;align-items:center;gap:4px;min-width:0;flex:1 1 auto;overflow-x:auto;overscroll-behavior-inline:contain;scrollbar-width:thin;padding-bottom:1px}
.lineup-ensemble-tab{position:relative;flex:0 0 auto;min-height:36px;padding:7px 11px;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--muted);font:inherit;font-size:12px;font-weight:800;cursor:pointer;white-space:nowrap;transition:background .12s ease,color .12s ease,border-color .12s ease}
.lineup-ensemble-tab:hover,.lineup-ensemble-tab:focus-visible{outline:none;color:var(--text);border-color:var(--line);background:var(--surface-2)}
.lineup-ensemble-tab.active{color:var(--text);border-color:color-mix(in srgb,var(--ensemble-tab-color) 42%,var(--line));background:color-mix(in srgb,var(--ensemble-tab-color) 8%,var(--surface));box-shadow:inset 0 -3px 0 var(--ensemble-tab-color)}
.lineup-bulk-mail{flex:0 0 auto;white-space:nowrap}
.lineup-ensemble-toolbar{grid-template-columns:minmax(0,1fr) auto;padding:9px 12px}
.lineup-ensemble-toolbar .lineup-summary{grid-column:auto;align-self:center}
.lineup-ensemble-toolbar .lineup-card-actions{grid-column:auto;grid-row:auto}
.lineup-topology-heading{top:auto;left:0;height:26px;align-items:center;padding:0 12px;border-bottom:1px solid color-mix(in srgb,var(--line) 86%,transparent);background:linear-gradient(to right,color-mix(in srgb,var(--surface-2) 92%,transparent),transparent 58%);font-size:10px}
.lineup-topology-scroll{height:clamp(500px,calc(100vh - 255px),900px);min-height:500px;overscroll-behavior:contain}
.lineup-canvas.lineup-topology-canvas{min-width:0;min-height:440px}
@media(max-width:900px){.lineup-ensemble-nav{align-items:stretch;flex-direction:column}.lineup-bulk-mail{align-self:flex-start}.lineup-ensemble-toolbar{display:flex;align-items:stretch;flex-direction:column}.lineup-card-actions{justify-content:flex-start}.lineup-topology-scroll{height:clamp(440px,calc(100vh - 300px),760px);min-height:440px}}
@media(max-width:720px){.lineup-ensemble-nav{padding:5px}.lineup-ensemble-tab{min-height:34px;padding:6px 9px}.lineup-topology-scroll{height:clamp(400px,calc(100vh - 280px),680px);min-height:400px}.lineup-topology-heading{font-size:9px;padding-inline:8px}}
.lineup-topology-headings{z-index:4}

/* 0.3.32 collision-free orthogonal relation routing ---------------------- */
.lineup-edge-clearance{fill:none;stroke:var(--surface-2);stroke-width:6;opacity:.96;pointer-events:none;vector-effect:non-scaling-stroke;stroke-linecap:round;stroke-linejoin:round}
.lineup-edge-group.multicolor .lineup-edge-clearance{stroke-linecap:round}

/* 0.3.33 Bezetting: topology ends at instruments/functions; members expand inside cards. */
.lineup-topology-node.lineup-instrument-node,
.lineup-topology-node.lineup-function-node{display:grid;grid-template-columns:minmax(0,1fr);align-items:stretch;gap:6px;padding:9px 10px}
.lineup-topology-node.lineup-function-node .lineup-instrument-name-row .lineup-node-text,
.lineup-topology-node.lineup-instrument-node .lineup-instrument-name-row .lineup-node-text{overflow:visible;text-overflow:clip;white-space:normal;overflow-wrap:anywhere;line-height:1.25}
.lineup-card-member-list{display:grid;gap:0;margin:2px -10px -9px;border-top:1px solid color-mix(in srgb,var(--line) 82%,transparent);border-radius:0 0 9px 9px;overflow:hidden;background:color-mix(in srgb,var(--surface-2) 55%,var(--surface))}
.lineup-card-member-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px;align-items:center;min-width:0;padding:7px 8px;border-top:1px solid color-mix(in srgb,var(--line) 58%,transparent);font-size:11px;font-weight:700;background:transparent}
.lineup-card-member-row:first-child{border-top:0}
.lineup-card-member-row:hover{background:color-mix(in srgb,var(--accent) 5%,var(--surface))}
.lineup-card-member-open{display:grid;gap:1px;min-width:0;padding:0;border:0;background:transparent;color:var(--text);font:inherit;text-align:left;cursor:pointer}
.lineup-card-member-open:hover,.lineup-card-member-open:focus-visible{outline:none;color:var(--accent)}
.lineup-card-member-name{min-width:0;overflow-wrap:anywhere;line-height:1.25}
.lineup-card-member-open small{color:var(--muted);font-size:9px;font-weight:700;line-height:1.2}
.lineup-card-member-support{box-shadow:inset 3px 0 0 color-mix(in srgb,var(--accent) 55%,transparent)}
.lineup-card-member-pending{background:color-mix(in srgb,#d99a1d 7%,var(--surface))}
.lineup-card-member-row .lineup-node-actions{gap:3px;margin-left:0}
.lineup-card-member-row .lineup-mail-entity,.lineup-card-member-row .entity-export-trigger{width:24px;height:24px;flex-basis:24px;border-radius:6px;font-size:12px}
.lineup-card-member-row .entity-select-control input{width:14px;height:14px}
.lineup-member-unlink{position:relative;display:grid;place-items:center;width:24px;height:24px;flex:0 0 24px;padding:0;border:1px solid color-mix(in srgb,var(--danger) 34%,var(--line));border-radius:6px;background:var(--surface);color:var(--danger);font:800 15px/1 system-ui,sans-serif;cursor:pointer}
.lineup-member-unlink:hover,.lineup-member-unlink:focus-visible{outline:none;border-color:var(--danger);background:color-mix(in srgb,var(--danger) 8%,var(--surface))}
.lineup-card-member-empty{padding:9px 10px;color:var(--muted);font-size:10px;font-weight:600;text-align:center}
.lineup-placement-tray{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px 14px;align-items:start;padding:10px 12px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--surface) 86%,var(--surface-2))}
.lineup-placement-title{display:grid;gap:2px;min-width:150px;padding-top:5px}
.lineup-placement-title strong{font-size:11px;text-transform:uppercase;letter-spacing:.045em}
.lineup-placement-title span{max-width:230px;color:var(--muted);font-size:10px;line-height:1.35}
.lineup-placement-members{display:flex;align-items:stretch;gap:7px;flex-wrap:wrap;min-width:0}
.lineup-placement-member{width:min(290px,100%);min-height:40px;border:1px solid var(--line);border-radius:8px;background:var(--surface);box-shadow:0 1px 4px rgba(0,0,0,.035)}
.lineup-placement-member.lineup-card-member-support{border-style:dashed;border-width:2px}
@media(max-width:760px){.lineup-placement-tray{grid-template-columns:1fr}.lineup-placement-title span{max-width:none}.lineup-placement-member{width:100%}}

/* 0.3.34 Bezetting: deterministic orthogonal tree buses.
 * Each parent owns one vertical trunk and one horizontal sibling bus. Child
 * relations are straight vertical drops from that bus, eliminating fanned
 * ports and per-edge corridor lanes. */
.lineup-edge-backbone-group{pointer-events:none}
.lineup-edge-backbone{fill:none;stroke:var(--edge-color,#7a9099);stroke-width:1.8;opacity:.58;vector-effect:non-scaling-stroke;stroke-linecap:round;stroke-linejoin:round}


/* 0.3.37 · inline member add selector + live drop preview */
.lineup-card-member-add{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;min-height:36px;padding:7px 9px;border:0;border-top:1px solid color-mix(in srgb,var(--line) 65%,transparent);background:color-mix(in srgb,var(--surface-2) 72%,var(--surface));color:var(--accent);font:800 11px/1.2 system-ui,sans-serif;cursor:pointer}
.lineup-card-member-add:hover,.lineup-card-member-add:focus-visible{outline:none;background:color-mix(in srgb,var(--accent) 9%,var(--surface));color:var(--accent)}
.lineup-card-member-add span:first-child{position:relative;display:block;flex:0 0 18px;width:18px;height:18px;box-sizing:border-box;border:1px solid color-mix(in srgb,var(--accent) 42%,var(--line));border-radius:999px;font-size:0;line-height:0}
.lineup-card-member-add span:first-child::before,.lineup-card-member-add span:first-child::after{content:"";position:absolute;left:50%;top:50%;background:currentColor;border-radius:1px;transform:translate(-50%,-50%)}
.lineup-card-member-add span:first-child::before{width:8px;height:1.5px}
.lineup-card-member-add span:first-child::after{width:1.5px;height:8px}
.lineup-member-selector-search{display:grid;gap:5px;color:var(--muted);font-size:11px;font-weight:800}
.lineup-member-selector-search input{width:100%;min-height:40px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--text);padding:9px 11px;line-height:1.25}
.lineup-member-selector-list{display:grid;gap:6px;max-height:min(52vh,520px);overflow:auto;padding:1px;margin-top:8px}
.lineup-member-selector-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;width:100%;padding:9px 10px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--text);text-align:left;cursor:pointer}
.lineup-member-selector-row:hover,.lineup-member-selector-row:focus-visible{outline:none;border-color:var(--accent);background:color-mix(in srgb,var(--accent) 6%,var(--surface))}
.lineup-member-selector-row:disabled{opacity:.55;cursor:wait}
.lineup-member-selector-person{display:grid;gap:2px;min-width:0}
.lineup-member-selector-person strong{font-size:12px;overflow-wrap:anywhere}
.lineup-member-selector-person small{color:var(--muted);font-size:10px;font-weight:650;line-height:1.3;overflow-wrap:anywhere}
.lineup-member-selector-add{display:grid;place-items:center;width:26px;height:26px;border:1px solid color-mix(in srgb,var(--accent) 40%,var(--line));border-radius:7px;color:var(--accent);font-size:18px;font-weight:800}
.lineup-member-selector-empty{padding:18px 12px;border:1px dashed var(--line);border-radius:8px;color:var(--muted);font-size:11px;text-align:center}
.lineup-drop-preview-expanded{z-index:12!important}
.lineup-card-member-drop-preview{background:color-mix(in srgb,var(--accent) 12%,var(--surface))!important;box-shadow:inset 3px 0 0 var(--accent);animation:lineup-drop-preview-pulse 1.1s ease-in-out infinite alternate}
.lineup-card-member-drop-preview small{justify-self:end;color:var(--accent);font-size:9px;font-weight:900;white-space:nowrap}
.lineup-card-member-drop-preview.is-blocked{background:color-mix(in srgb,#b42318 8%,var(--surface))!important;box-shadow:inset 3px 0 0 #b42318;animation:none}
.lineup-card-member-drop-preview.is-blocked small{color:#b42318}
.lineup-card-member-preview-existing{grid-template-columns:minmax(0,1fr);color:var(--muted);font-weight:650}
.lineup-drop-blocked{border-color:#b42318!important;background:color-mix(in srgb,#b42318 5%,var(--surface))!important;box-shadow:0 0 0 2px color-mix(in srgb,#b42318 16%,transparent)!important}
@keyframes lineup-drop-preview-pulse{from{filter:none}to{filter:brightness(1.025)}}

/* 0.3.44 Groepen: use the available width and keep row controls on one line where possible. */
.group-tree-panel{max-width:none;width:100%}
.group-tree .tree-row{
  display:flex;
  align-items:center;
  gap:8px;
  width:100%;
  min-width:0;
}
.group-tree .tree-toggle,
.group-tree .tree-toggle-spacer,
.group-tree .tree-drag,
.group-tree .tree-colour,
.group-tree .badge,
.group-tree .tree-select-control,
.group-tree .tree-mail-trigger,
.group-tree .tree-export-trigger,
.group-tree .tree-relation-remove,
.group-tree .tree-instrument-glyph{
  flex:0 0 auto;
}
.group-tree .tree-name{
  flex:1 1 auto;
  min-width:0;
}
.group-tree .tree-name strong,
.group-tree .tree-name small{
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
@media(max-width:700px){
  .group-tree .tree-row{
    flex-wrap:wrap;
    row-gap:6px;
  }
  .group-tree .tree-name{
    flex:1 1 calc(100% - 100px);
  }
  .group-tree .tree-select-control{
    margin-left:auto;
  }
}

/* 0.3.45 canonical instrument rename action shared by Groepen and Bezetting. */
.instrument-type-rename-trigger{
  display:inline-grid;
  place-items:center;
  width:26px;
  height:26px;
  flex:0 0 26px;
  padding:0;
  border:1px solid var(--line);
  border-radius:7px;
  background:var(--surface-2);
  color:var(--text);
  font:800 14px/1 system-ui,sans-serif;
  cursor:pointer;
  box-shadow:none;
}
.instrument-type-rename-trigger:hover,.instrument-type-rename-trigger:focus-visible{
  outline:none;
  border-color:var(--accent);
  background:color-mix(in srgb,var(--accent) 8%,var(--surface));
  color:var(--accent);
}
.group-tree .instrument-type-rename-trigger{width:30px;height:30px;flex-basis:30px;background:var(--surface)}
.group-tree .instrument-type-rename-trigger{flex:0 0 auto}
.form-help{margin:0;color:var(--muted);font-size:11.5px;line-height:1.45}

/* 0.4.0 Werkgroepen + Kalender v0.1 */
.workgroups-module{max-width:1700px;margin:0 auto}.workgroup-overview-tabs,.workgroup-tabs{display:flex;gap:5px;overflow-x:auto;padding:4px;border:1px solid var(--line);border-radius:10px;background:var(--surface);margin-bottom:14px}.workgroup-overview-tabs{width:max-content}.workgroup-overview-tabs button,.workgroup-tabs button{border:0;border-radius:7px;background:transparent;color:var(--muted);padding:8px 12px;font-weight:800;cursor:pointer;white-space:nowrap}.workgroup-overview-tabs button.active,.workgroup-tabs button.active{background:var(--accent);color:#fff}.workgroup-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:12px}.workgroup-card{position:relative;display:grid;min-height:145px;padding:0;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--text);text-align:left;cursor:pointer;box-shadow:var(--shadow)}.workgroup-card-open{display:grid;gap:8px;width:100%;min-height:145px;border:0;border-radius:inherit;background:transparent;color:inherit;text-align:left;padding:15px 52px 15px 15px;cursor:pointer}.workgroup-card-menu{position:absolute;top:8px;right:8px;z-index:1}.workgroup-card:focus-within{outline:2px solid var(--accent);outline-offset:2px}.workgroup-card-open:focus-visible{outline:none}.workgroup-card:hover{border-color:var(--accent);transform:translateY(-1px)}.workgroup-card-title{display:flex;align-items:center;justify-content:space-between;gap:8px}.workgroup-card-title strong{font-size:16px}.workgroup-card-stats{display:flex;gap:16px;margin-top:auto}.workgroup-card-stats span{display:grid;gap:1px;color:var(--muted);font-size:11px}.workgroup-card-stats strong{font-size:17px;color:var(--text)}.workgroup-workspace-header{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:15px 16px;margin-bottom:12px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}.workgroup-workspace-header h2{margin:0;font-size:21px}.workgroup-workspace-header p{margin:5px 0;color:var(--muted);line-height:1.45}.workgroup-workspace-header small{color:var(--muted)}.workgroup-title-line,.workgroup-header-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.badge.coordinator{border-color:color-mix(in srgb,var(--accent) 50%,var(--line));background:color-mix(in srgb,var(--accent) 10%,var(--surface));color:var(--accent);font-weight:800}.workgroup-panel-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.workgroup-panel-toolbar>div{display:grid;gap:2px}.workgroup-panel-toolbar .muted{font-size:11px}.workgroup-kanban{display:flex;gap:12px;overflow-x:auto;padding-bottom:10px;min-height:calc(100vh - 285px)}.workgroup-kanban-column{flex:1 0 300px;min-width:300px;max-width:520px;display:flex;flex-direction:column;max-height:calc(100vh - 295px);border:1px solid var(--line);border-radius:12px;background:var(--surface-2)}.workgroup-kanban-column>header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:11px 12px;border-bottom:1px solid var(--line)}.workgroup-kanban-column>header span{display:grid;place-items:center;min-width:24px;height:24px;border-radius:999px;background:var(--surface);font-size:11px}.workgroup-kanban-column.drop-target{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 20%,transparent)}.workgroup-task-list{display:flex;flex-direction:column;gap:8px;min-height:90px;padding:9px;overflow-y:auto}.workgroup-task-card{display:grid;gap:6px}.workgroup-task-card[draggable="true"]{cursor:grab}.workgroup-task-card.dragging{opacity:.4}.workgroup-task-card.priority-high{border-left:3px solid #b27b17}.workgroup-task-card.priority-urgent{border-left:3px solid var(--danger)}.workgroup-task-card.priority-low{opacity:.86}.workgroup-task-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.workgroup-task-card p{margin:0;color:var(--muted);font-size:11px;line-height:1.4;white-space:pre-wrap}.workgroup-task-card small{display:block;color:var(--muted);font-size:10.5px}.workgroup-task-card small.overdue{color:var(--danger);font-weight:800}.workgroup-note-form{margin-bottom:12px}.workgroup-note-form label{display:grid;gap:6px;font-weight:800}.workgroup-note-form textarea{width:100%;border:1px solid var(--line);border-radius:9px;background:var(--surface);color:var(--text);padding:10px}.workgroup-note-form>div{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:9px}.workgroup-note-list{display:grid;gap:9px}.workgroup-note header{display:flex;align-items:center;justify-content:space-between;gap:8px}.workgroup-note header small{color:var(--muted)}.workgroup-note p{margin:10px 0 0;line-height:1.55}.workgroup-member-list,.workgroup-file-list,.workgroup-finance-list{display:grid;gap:8px}.workgroup-member-row,.workgroup-file-row{display:grid;grid-template-columns:minmax(220px,1fr) auto auto auto;gap:10px;align-items:center;padding:11px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}.workgroup-member-row>div:first-child,.workgroup-file-row>div:nth-child(2){display:grid;gap:2px;min-width:0}.workgroup-member-row small,.workgroup-file-row small{color:var(--muted)}.workgroup-member-row select{border:1px solid var(--line);border-radius:7px;background:var(--surface);color:var(--text);padding:7px}.danger-button.compact{padding:6px 9px;font-size:11px}.file-icon{display:grid!important;place-items:center;width:32px;height:32px;border-radius:8px;background:var(--surface-2);color:var(--accent);font-size:18px}.workgroup-file-row{grid-template-columns:auto minmax(220px,1fr) auto}.workgroup-file-row a{font-weight:800;text-decoration:none}.workgroup-file-row p{margin:3px 0;color:var(--text);font-size:11px;line-height:1.4}.workgroup-finance-row{display:grid;grid-template-columns:minmax(240px,1fr) 120px 120px auto;gap:10px;align-items:center;width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:9px;background:var(--surface);color:var(--text);text-align:left;cursor:pointer}.workgroup-finance-row:hover{border-color:var(--accent)}.workgroup-finance-row>span:first-child{display:grid;gap:2px}.workgroup-finance-row small{color:var(--muted)}
.calendar-module{max-width:1500px;margin:0 auto}.calendar-event{display:grid;grid-template-columns:135px minmax(220px,1fr) minmax(180px,.8fr) auto;gap:12px;align-items:center;padding:11px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface);cursor:context-menu}.calendar-event:hover{border-color:var(--accent)}.calendar-event-date{display:grid;gap:2px}.calendar-event-date strong{font-size:13px}.calendar-event-date small,.calendar-event-main small,.calendar-event-location{color:var(--muted);font-size:11px}.calendar-event-main{display:grid;gap:3px}.calendar-event-main strong{font-size:14px}.calendar-event-actions{display:flex;align-items:center;gap:6px}.calendar-context-menu{position:fixed;z-index:80;min-width:230px;padding:5px;border:1px solid var(--line);border-radius:10px;background:var(--surface);box-shadow:var(--shadow)}.calendar-context-menu[hidden]{display:none!important}.calendar-context-menu button{display:block;width:100%;border:0;border-radius:7px;background:transparent;color:var(--text);padding:8px 10px;text-align:left;cursor:pointer}.calendar-context-menu button:hover,.calendar-context-menu button:focus-visible{background:var(--surface-2);color:var(--accent)}.calendar-context-menu button.calendar-context-danger{color:var(--danger)}.calendar-context-menu button.calendar-context-danger:hover{background:color-mix(in srgb,var(--danger) 8%,var(--surface));color:var(--danger)}
@media(max-width:900px){.workgroup-workspace-header,.workgroup-panel-toolbar{align-items:stretch;flex-direction:column}.workgroup-member-row{grid-template-columns:1fr auto}.workgroup-member-row select,.workgroup-member-row .danger-button{grid-column:1/-1}.workgroup-finance-row{grid-template-columns:1fr auto}.calendar-event{grid-template-columns:1fr auto}.calendar-event-location{grid-column:1/-1}.workgroup-kanban-column{flex-basis:82vw}}

/* 0.4.0 workgroup columns in Leden */
.kanban-column.workgroup-column{border-top:3px solid var(--column-color,var(--accent));background:color-mix(in srgb,var(--accent) 3%,var(--surface-2))}
.kanban-column.workgroup-column .column-title-button{color:var(--accent)}
.member-column-label{display:flex;align-items:center;gap:7px;min-width:0;flex-wrap:wrap}
.member-column-icon{width:18px;height:18px;flex:0 0 18px}
.member-column-kind{font-size:9px;letter-spacing:.05em;color:var(--muted)}
.kanban-column.workgroup-column .column-head{background:color-mix(in srgb,var(--column-color,var(--accent)) 6%,var(--surface-2))}
.workgroup-finance-row:disabled{cursor:default;opacity:.82}.workgroup-finance-row:disabled:hover{border-color:var(--line)}
.calendar-event-menu-button{min-width:34px;padding:5px 8px;font-size:18px;line-height:1}


/* 0.4.1 Kalender / Leden / Werkgroepen UX polish */
.calendar-filter-select{
  min-width:205px;
  min-height:38px;
  border:1px solid var(--line);
  border-radius:8px;
  background:var(--surface);
  color:var(--text);
  padding:8px 36px 8px 11px;
  font-weight:600;
  line-height:1.2;
}
.calendar-filter-select:hover{border-color:color-mix(in srgb,var(--accent) 55%,var(--line))}
.calendar-filter-select:focus-visible{outline:3px solid color-mix(in srgb,var(--accent) 28%,transparent);outline-offset:1px;border-color:var(--accent)}
.kanban-column.drop-target{
  position:relative;
  outline:3px solid color-mix(in srgb,var(--accent) 48%,transparent);
  outline-offset:-3px;
  border-color:var(--accent);
  background:color-mix(in srgb,var(--accent) 7%,var(--surface-2));
  box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 14%,transparent);
}
.kanban-column.drop-target>.column-head{background:color-mix(in srgb,var(--accent) 10%,var(--surface))}
.member-drop-indicator{
  display:grid;
  place-items:center;
  min-height:48px;
  margin-bottom:7px;
  border:2px dashed var(--accent);
  border-radius:9px;
  background:color-mix(in srgb,var(--accent) 10%,var(--surface));
  color:var(--accent);
  font-size:11px;
  font-weight:850;
  letter-spacing:.01em;
  pointer-events:none;
}
.workgroup-kanban-column.drop-target{
  outline:3px solid color-mix(in srgb,var(--accent) 44%,transparent);
  outline-offset:-3px;
  background:color-mix(in srgb,var(--accent) 7%,var(--surface-2));
  box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 14%,transparent);
}
.workgroup-kanban-column.drop-target>header{background:color-mix(in srgb,var(--accent) 11%,var(--surface));color:var(--accent)}
.workgroup-task-drop-placeholder{
  display:grid;
  place-items:center;
  min-height:54px;
  border:2px dashed var(--accent);
  border-radius:9px;
  background:color-mix(in srgb,var(--accent) 11%,var(--surface));
  color:var(--accent);
  font-size:11px;
  font-weight:850;
  pointer-events:none;
}
@media(max-width:650px){.calendar-filter-select{width:100%;min-width:0}}

/* 0.5.0 workgroup document browser */
.workgroup-file-browser{display:grid;gap:14px}.file-breadcrumbs{display:flex;align-items:center;gap:7px;flex-wrap:wrap;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--surface-2)}
.file-breadcrumb{border:0;background:transparent;color:var(--accent);font:inherit;font-size:12px;font-weight:800;padding:3px 4px;cursor:pointer}.file-breadcrumb:hover{text-decoration:underline}.file-folder-actions{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.workgroup-folder-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px}.workgroup-folder-card{position:relative;display:flex;align-items:stretch;border:1px solid var(--line);border-radius:11px;background:var(--surface);overflow:hidden}.workgroup-folder-card:hover{border-color:var(--accent)}
.folder-open{display:flex;align-items:center;gap:11px;min-width:0;flex:1;border:0;background:transparent;color:var(--text);text-align:left;padding:13px;cursor:pointer}.folder-open>span:last-child{display:grid;gap:3px;min-width:0}.folder-open strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.folder-open small{color:var(--muted);font-size:10px}.folder-glyph{font-size:24px;color:var(--accent)}.folder-menu{align-self:center;margin-right:7px}
.file-name-button{border:0;background:transparent;color:var(--accent);font:inherit;font-weight:800;padding:0;cursor:pointer;text-align:left}.file-name-button:hover{text-decoration:underline}.file-row-actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.workgroup-file-row.trash{opacity:.88}.workgroup-trash-list{display:grid;gap:8px}
.file-preview-dialog{min-width:0}.workgroup-file-preview{min-height:240px;max-height:68vh;display:grid;place-items:center;border:1px solid var(--line);border-radius:10px;background:var(--surface-2);overflow:auto}.workgroup-file-preview img{max-width:100%;max-height:66vh;object-fit:contain}.workgroup-file-preview iframe{width:100%;height:64vh;border:0;background:#fff}.workgroup-file-preview .text-preview{background:#fff}.file-preview-meta{margin-top:10px;color:var(--muted);font-size:11px}
.workgroup-panel-toolbar .secondary.active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,var(--surface));color:var(--accent)}

/* 0.5.0 Upload settings */
.upload-type-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px}.upload-type-grid .role-choice{min-height:58px}

/* 0.5.0 audit log */
.audit-range-buttons,.audit-filter-action{display:flex;align-items:end;gap:7px;flex-wrap:wrap}.audit-filter-grid{display:grid;grid-template-columns:repeat(3,minmax(160px,1fr));gap:10px;align-items:end}.audit-filter-grid label{display:grid;gap:5px}.audit-list{display:grid;margin-top:14px;border:1px solid var(--line);border-radius:10px;overflow:hidden}.audit-row{display:grid;grid-template-columns:145px minmax(0,1fr);gap:12px;align-items:start;width:100%;padding:11px 12px;border:0;border-bottom:1px solid var(--line);background:var(--surface);color:var(--text);text-align:left;cursor:pointer}.audit-row:last-child{border-bottom:0}.audit-row:hover{background:var(--surface-2)}.audit-row>span:last-child{display:grid;gap:3px}.audit-row small,.audit-time{font-size:10px;color:var(--muted)}.audit-archive-list{display:grid;gap:8px;margin-top:12px}.audit-archive-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:10px}.audit-archive-row>div:first-child{display:grid;gap:3px}.audit-archive-row small{color:var(--muted)}.audit-archive-settings{margin:12px 0;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--surface-2)}.audit-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:16px}.audit-detail-grid>div{display:grid;gap:4px;padding:10px;border:1px solid var(--line);border-radius:9px}.audit-detail-grid small{color:var(--muted)}.audit-change-list{display:grid;gap:7px}.audit-change-list>div{display:grid;grid-template-columns:minmax(120px,.7fr) minmax(0,1fr) 24px minmax(0,1fr);gap:8px;align-items:start;padding:8px;border-bottom:1px solid var(--line)}.audit-change-list span{white-space:pre-wrap;overflow-wrap:anywhere}.audit-arrow{text-align:center;color:var(--accent);font-weight:900}.audit-json{max-height:300px;overflow:auto;padding:10px;border:1px solid var(--line);border-radius:8px;background:var(--surface-2);white-space:pre-wrap;overflow-wrap:anywhere;font-size:10px}.pager{display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap;margin-top:12px;color:var(--muted);font-size:11px}

/* 0.5.0 personal notification history */
.account-notification-list{display:grid;margin-top:12px;border:1px solid var(--line);border-radius:10px;overflow:hidden}.account-notification-row{border-bottom:1px solid var(--line)}.account-notification-row:last-child{border-bottom:0}.account-notification-row>button{display:grid;gap:4px;width:100%;padding:11px 12px;border:0;background:var(--surface);color:var(--text);text-align:left;cursor:pointer}.account-notification-row>button:hover{background:var(--surface-2)}.account-notification-row.unread>button{background:color-mix(in srgb,var(--accent) 9%,var(--surface));box-shadow:inset 3px 0 0 var(--accent)}.account-notification-row span,.account-notification-row small{color:var(--muted)}

@media(max-width:800px){.audit-filter-grid{grid-template-columns:1fr 1fr}.audit-row{grid-template-columns:1fr}.audit-change-list>div{grid-template-columns:1fr}.audit-arrow{text-align:left}.audit-archive-row{align-items:flex-start;flex-direction:column}}

/* 0.5.1 compact workgroup/file navigation + image thumbnails */
.workgroup-tabs{margin-bottom:8px}
.workgroup-context-nav{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;margin-bottom:10px}
.workgroup-context-nav[hidden]{display:none}
.workgroup-file-nav{display:flex;align-items:center;gap:4px;min-width:0;overflow-x:auto;scrollbar-width:thin;padding:3px;border:1px solid var(--line);border-radius:9px;background:var(--surface);white-space:nowrap}
.workgroup-file-nav button{flex:0 0 auto;border:0;border-radius:6px;background:transparent;color:var(--muted);padding:6px 9px;font:inherit;font-size:11px;font-weight:800;cursor:pointer;white-space:nowrap}
.workgroup-file-nav button:hover{color:var(--accent);background:color-mix(in srgb,var(--accent) 6%,transparent)}
.workgroup-file-nav button.active{background:color-mix(in srgb,var(--accent) 13%,var(--surface));color:var(--accent)}
.workgroup-file-actions{display:flex;align-items:center;gap:6px;flex:0 0 auto}
.primary.compact,.secondary.compact{padding:6px 9px;font-size:11px;line-height:1.2}
.workgroup-tabs.editing,.workgroup-context-nav.editing .workgroup-file-nav{outline:2px dashed color-mix(in srgb,var(--accent) 55%,var(--line));outline-offset:2px}
.workgroup-tabs.editing [data-workgroup-tab],.workgroup-context-nav.editing [data-file-nav-key]{cursor:grab}
.workgroup-tabs.editing [data-workgroup-tab]:active,.workgroup-context-nav.editing [data-file-nav-key]:active{cursor:grabbing}
.workgroup-tabs .dragging,.workgroup-file-nav .dragging{opacity:.35}
.file-thumbnail-button{display:grid;place-items:center;width:58px;height:44px;padding:0;border:1px solid var(--line);border-radius:8px;background:var(--surface-2);overflow:hidden;cursor:pointer}
.file-thumbnail-button:hover{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 12%,transparent)}
.file-thumbnail-button img{display:block;width:100%;height:100%;object-fit:cover}
.file-row-actions>.secondary,.file-row-actions>.danger-button{display:inline-flex;align-items:center;justify-content:center;min-height:31px;padding:6px 9px;line-height:1.2;font-size:11px}
.workgroup-file-browser{gap:10px}
@media(max-width:900px){.workgroup-context-nav{grid-template-columns:1fr}.workgroup-file-actions{justify-content:flex-end}}


/* 0.5.2 responsive Kanban/Leden workspace + compact member cards */
.members-module>.members-module-header,.members-module>#memberBoardNotice{flex:0 0 auto}
.members-module>#memberBoard{overflow-anchor:none;flex:1 1 auto;width:100%;min-height:0;padding-bottom:0;overflow-x:auto;overflow-y:hidden}
.members-module #memberBoard>.kanban-column{height:100%;max-height:none;min-height:0;position:relative;z-index:0;isolation:isolate}
.members-module #memberBoard .column-list{flex:1 1 auto;min-height:0;overscroll-behavior:contain}
.member-playing-row{margin-top:6px}.member-playing-badge{font-weight:750}
.members-module .column-drop-placeholder{min-height:0;height:100%;align-self:stretch}

.workgroups-module.workspace-active{display:flex;flex-direction:column;height:100vh;min-height:0;max-width:none;overflow:hidden}
.workgroups-module.workspace-active>.module-header{flex:0 0 auto}
.workgroups-module.workspace-active>#workgroupWorkspace{display:flex;flex:1 1 auto;min-height:0;flex-direction:column}
.workgroups-module.workspace-active>#workgroupWorkspace[hidden]{display:none}
.workgroups-module.workspace-active .workgroup-workspace-header,.workgroups-module.workspace-active .workgroup-tabs,.workgroups-module.workspace-active .workgroup-context-nav{flex:0 0 auto}
.workgroups-module.workspace-active #workgroupPanel{flex:1 1 auto;min-height:0;overflow:auto}
.workgroups-module.workgroup-board-active #workgroupPanel{display:flex;flex-direction:column;overflow:hidden}
.workgroups-module.workgroup-board-active .workgroup-panel-toolbar{flex:0 0 auto}
.workgroups-module.workgroup-board-active .workgroup-kanban{display:flex;flex:1 1 auto;width:100%;min-height:0;max-height:none;padding-bottom:0;overflow-x:auto;overflow-y:hidden}
.workgroups-module.workgroup-board-active .workgroup-kanban-column{flex:1 1 0;min-width:300px;max-width:none;height:100%;max-height:none;min-height:0}
.workgroups-module.workgroup-board-active .workgroup-task-list{flex:1 1 auto;min-height:0;overscroll-behavior:contain}
.members-module #memberBoard .kanban-column.column-orderable{user-select:none}
@media(max-width:900px){.workgroups-module.workgroup-board-active .workgroup-kanban-column{flex:0 0 82vw}}

/* 0.5.3 compact workgroup chrome + explicit navigation/column drag handles */
.workgroup-overview-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px}
.workgroup-overview-toolbar .workgroup-overview-tabs{margin-bottom:0}
.workgroup-tabbar{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;margin-bottom:8px}
.workgroup-tabbar .workgroup-tabs{margin-bottom:0}
.workgroup-tab-actions{display:flex;align-items:center;justify-content:flex-end;gap:6px;min-height:32px}
.workgroup-tabs button,.workgroup-file-nav button{display:inline-flex;align-items:center;gap:6px}
.navigation-item-grip{display:none;flex:0 0 auto;color:currentColor;opacity:.55;line-height:1;letter-spacing:-2px;cursor:grab;user-select:none}
.workgroup-tabs.editing,.workgroup-context-nav.editing .workgroup-file-nav{outline:0}
.workgroup-tabs.editing [data-workgroup-tab],.workgroup-context-nav.editing [data-file-nav-key]{cursor:default;outline:1px dashed color-mix(in srgb,var(--accent) 48%,var(--line));outline-offset:-1px}
.workgroup-tabs.editing .navigation-item-grip,.workgroup-context-nav.editing .navigation-item-grip{display:inline-flex}
.workgroup-tabs.editing .navigation-item-grip:active,.workgroup-context-nav.editing .navigation-item-grip:active{cursor:grabbing}
.file-breadcrumbs.nested{width:max-content;max-width:100%;padding:2px 0;border:0;border-radius:0;background:transparent;gap:4px;overflow-x:auto;white-space:nowrap}
.file-breadcrumbs.nested .file-breadcrumb{padding:2px 3px;font-size:11px}
.file-breadcrumbs.nested .file-breadcrumb[aria-current="page"]{color:var(--text);cursor:default;text-decoration:none}
.column-order-grip{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;min-width:22px;height:26px;margin:-3px 0;color:var(--accent);opacity:.7;letter-spacing:-2px;cursor:grab;user-select:none;border-radius:6px}
.column-order-grip:hover{background:color-mix(in srgb,var(--accent) 10%,transparent);opacity:1}
.column-order-grip:active{cursor:grabbing}
.kanban-column.column-orderable{cursor:default}
.kanban-column.column-orderable .column-head-actions{flex-wrap:nowrap}
.kanban-column.column-orderable .column-title-button,.kanban-column.column-orderable .column-title-static{min-width:0}
.workgroups-module.workspace-active .workgroup-tabbar{flex:0 0 auto}
@media(max-width:900px){.workgroup-tabbar{grid-template-columns:1fr}.workgroup-tab-actions{justify-content:flex-end}.workgroup-overview-toolbar{align-items:stretch;flex-direction:column}.workgroup-overview-toolbar>.primary{align-self:flex-end}}

/* 0.5.4 module UI consistency + viewport optimization */
.module-controlbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;min-height:38px}
.module-controlbar-primary{display:flex;align-items:center;gap:8px;min-width:0;flex:1 1 auto}
.module-controlbar-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex:0 0 auto}
.flex-search{width:min(560px,100%);min-width:260px}
.module-helper{margin:0;color:var(--muted);font-size:12px;line-height:1.45}
.module-help-dialog .dialog-body{display:grid;gap:15px}
.help-dialog-copy section{display:grid;gap:5px;padding:0 0 13px;border-bottom:1px solid var(--line)}
.help-dialog-copy section:last-of-type{padding-bottom:0;border-bottom:0}
.help-dialog-copy h3{margin:0;font-size:15px}
.help-dialog-copy p{margin:0;color:var(--muted);line-height:1.6}

/* Leden: keep only the useful helper copy underneath the shell title. */
.members-module-header{grid-template-columns:minmax(260px,1fr) auto;min-height:42px;margin-bottom:10px}
.members-module-header .members-heading{min-height:42px;justify-content:center}
.members-module-header .members-heading p{margin:0;line-height:1.35}
.members-module-header .members-toolbar{min-height:42px}

/* Groepen / Bezetting: explanatory content moved to shell Help. */
.groups-module>#groupNotice{flex:0 0 auto}
.groups-module>.group-tree-panel{flex:1 1 auto;min-height:0;overflow:auto}
@media(max-width:700px){.groups-module{height:auto;min-height:100vh;overflow:visible}.groups-module>.group-tree-panel{overflow:visible}}
.lineup-module>.lineup-root{flex:1 1 auto;min-height:0;overflow:auto}

/* Instrumentenbeheer: one compact control row, search left and actions right. */
.instrument-management-module{max-width:none;margin:0}
.instrument-controlbar .compact-select{min-width:165px;padding:9px 11px;border:1px solid var(--line);border-radius:9px;background:var(--surface);color:var(--text)}
.instrument-controlbar .search{max-width:620px}

/* Kalender: fixed controls + event list consumes the remaining iframe viewport. */
.calendar-module>.calendar-controlbar{flex:0 0 auto}
.calendar-controlbar .calendar-filter-select{height:38px}
.calendar-module>.calendar-event-list{flex:1 1 auto;min-height:0;width:100%;overflow:auto;align-content:start;padding-right:2px;overscroll-behavior:contain}
.calendar-event-list{display:grid;gap:8px}
.calendar-event{grid-template-columns:minmax(150px,.72fr) minmax(280px,1.55fr) minmax(220px,1fr) auto;width:100%}
.calendar-event-main,.calendar-event-location{min-width:0}
.calendar-event-main strong,.calendar-event-location{overflow-wrap:anywhere}
.calendar-empty{margin:30px auto}

/* Mailing: same full-width, remaining-height workspace model as the other modules. */
.mailing-module>.mailing-controlbar{flex:0 0 auto}
.mailing-workspace{display:grid;flex:1 1 auto;min-height:0;gap:12px;align-content:start;overflow:auto;padding-right:2px;overscroll-behavior:contain}
.mailing-workspace>.panel{margin-bottom:0;width:100%}
.mailing-history,.template-library,.suppressed-list{min-width:0}

@media(max-width:1100px){
  .module-controlbar{align-items:stretch;flex-wrap:wrap}
  .module-controlbar-primary{flex-basis:100%}
  .module-controlbar-actions{margin-left:auto}
  .flex-search{width:100%;max-width:none}
}
@media(max-width:650px){
  .module-controlbar-actions{width:100%;justify-content:stretch;flex-wrap:wrap}
  .module-controlbar-actions>*{flex:1 1 auto}
  .calendar-event{grid-template-columns:1fr auto}
}

/* 0.6.0 mail relay + compact dynamic ensemble navigation ------------------ */
.lineup-ensemble-nav{flex:0 0 auto;min-height:42px;padding:3px 4px;border:1px solid var(--line);border-radius:9px;background:var(--surface);box-shadow:none}
.lineup-ensemble-tabs{padding:0;gap:3px}
.lineup-ensemble-tab{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:5px 9px}
.lineup-ensemble-tab.navigation-editable{cursor:grab;border-color:color-mix(in srgb,var(--accent) 28%,var(--line))}
.lineup-ensemble-tab.navigation-editable:active{cursor:grabbing}
.lineup-ensemble-tab.dragging{opacity:.35}
.lineup-ensemble-tab.drop-before::before,.lineup-ensemble-tab.drop-after::after{content:"";position:absolute;top:3px;bottom:3px;width:3px;border-radius:999px;background:var(--accent)}
.lineup-ensemble-tab.drop-before::before{left:-3px}.lineup-ensemble-tab.drop-after::after{right:-3px}
.nav-item-grip{display:inline-flex;align-items:center;color:var(--muted);font-size:13px;line-height:1;letter-spacing:-2px;user-select:none}
.lineup-ensemble-nav.navigation-editing .lineup-ensemble-tab.active{box-shadow:inset 0 -2px 0 var(--ensemble-tab-color)}

.mail-compose-dialog .mail-compose-grid>label{display:grid;gap:5px;font-size:11px;font-weight:800}
.mail-compose-dialog .mail-compose-grid select,.mail-compose-dialog .mail-compose-grid input{min-height:36px}
.mail-attachment-panel{display:grid;gap:8px;padding:10px;border:1px solid var(--line);border-radius:9px;background:var(--surface-2)}
.mail-attachment-heading{display:flex;align-items:center;justify-content:space-between;gap:10px}
.mail-attachment-heading>div{display:grid;gap:2px;min-width:0}.mail-attachment-heading small{display:block}
.mail-file-picker{display:inline-flex;align-items:center;justify-content:center;cursor:pointer}
.mail-attachment-list,.mail-detail-attachments{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.mail-attachment-row{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;padding:7px 8px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}
.mail-attachment-row>div{display:flex;align-items:center;gap:6px;min-width:0;flex:1 1 auto;flex-wrap:wrap}.mail-attachment-row strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mail-attachment-row small{color:var(--muted);white-space:nowrap}.mail-inline-badge{display:inline-flex;align-items:center;padding:2px 6px;border-radius:999px;background:color-mix(in srgb,var(--accent) 10%,var(--surface));color:var(--accent);font-size:9px;font-weight:850;text-transform:uppercase;letter-spacing:.04em}



.mail-attachment-link{display:inline-flex;align-items:center;gap:5px;max-width:100%;padding:5px 8px;border:1px solid var(--line);border-radius:8px;background:var(--surface-2);color:var(--text);text-decoration:none;font-size:11px;font-weight:750}
.mail-attachment-link:hover{border-color:var(--accent);color:var(--accent)}.mail-attachment-link small{color:var(--muted);font-weight:500}
.mail-detail-section{display:grid;gap:8px;margin-bottom:14px}.mail-detail-section>h3{margin:0;font-size:14px}
.mail-thread-history{display:grid;gap:8px}
.mail-thread-item{display:grid;gap:7px;padding:10px 11px;border:1px solid var(--line);border-radius:9px;background:var(--surface)}
.mail-thread-item>header{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.mail-thread-item>header strong,.mail-thread-item>header small{display:block}.mail-thread-item>header small{margin-top:2px;color:var(--muted);font-size:10.5px}
.mail-thread-subject{font-weight:800;font-size:12px}.mail-thread-body{padding:9px;border-radius:8px;background:var(--surface-2);line-height:1.45;font-size:11px;white-space:normal;overflow-wrap:anywhere}
.mail-direction-badge{display:inline-flex;padding:3px 7px;border:1px solid var(--line);border-radius:999px;background:var(--surface-2);color:var(--muted);font-size:10px;font-weight:800;white-space:nowrap}
.mail-reply-chip{border-color:color-mix(in srgb,var(--accent) 35%,var(--line));color:var(--accent)}

@media(max-width:900px){.lineup-ensemble-nav{align-items:stretch;flex-direction:row}.lineup-bulk-mail{align-self:center}.mail-attachment-heading{align-items:stretch;flex-direction:column}.mail-file-picker{align-self:flex-start}}

/* 0.6.0-r1 Director member affordance: person, mail and relation are separate actions. */
.lineup-director-person-row{display:inline-flex;align-items:center;gap:4px;min-width:0;max-width:100%}
.lineup-director-person-row .lineup-director-person{min-width:0;cursor:pointer}
.lineup-director-person-row .lineup-director-person:hover,.lineup-director-person-row .lineup-director-person:focus-visible{outline:none;border-color:var(--accent);background:color-mix(in srgb,var(--accent) 6%,var(--surface-2))}
.lineup-director-person-row.lineup-support-node .lineup-director-person{border-style:dashed;border-width:2px}
.lineup-director-person-row .lineup-node-actions{margin-left:0;gap:3px}
.lineup-director-person-row .lineup-mail-entity,.lineup-director-person-row .lineup-member-unlink{width:24px;height:24px;flex-basis:24px;border-radius:6px}


/* Dashboard navigation + activity rows */
.dashboard-action-card{appearance:none;width:100%;font:inherit;color:inherit;text-align:left;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease}
.dashboard-action-card:hover,.dashboard-action-card:focus-visible{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 12%,transparent),var(--shadow);outline:none;transform:translateY(-1px)}
.dashboard-activity-list{display:grid;gap:9px}
.dashboard-activity-link{appearance:none;width:100%;min-width:0;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;padding:10px 11px 10px 13px;border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:9px;background:color-mix(in srgb,var(--surface-2) 92%,var(--surface));color:var(--text);font:inherit;text-align:left;cursor:pointer;box-shadow:0 1px 2px rgba(0,0,0,.025);transition:border-color .15s ease,background .15s ease,box-shadow .15s ease,transform .15s ease}
.dashboard-activity-link:hover,.dashboard-activity-link:focus-visible{border-color:color-mix(in srgb,var(--accent) 58%,var(--line));border-left-color:var(--accent);background:color-mix(in srgb,var(--accent) 6%,var(--surface-2));box-shadow:0 4px 12px rgba(0,0,0,.07);outline:none;transform:translateY(-1px)}
.dashboard-activity-copy{display:grid;gap:3px;min-width:0}.dashboard-activity-title{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:800;line-height:1.3}.dashboard-activity-meta{display:flex;align-items:center;gap:0;min-width:0;flex-wrap:wrap;color:var(--muted);font-size:11px;line-height:1.35}.dashboard-activity-meta>span{min-width:0}.dashboard-activity-meta>span+span::before{content:'•';display:inline-block;margin:0 7px;color:color-mix(in srgb,var(--muted) 70%,transparent)}.dashboard-activity-chevron{display:grid;place-items:center;width:27px;height:27px;border:1px solid color-mix(in srgb,var(--accent) 20%,var(--line));border-radius:999px;background:color-mix(in srgb,var(--accent) 7%,var(--surface));color:var(--accent);font-size:20px;line-height:1;transition:background .15s ease,border-color .15s ease,transform .15s ease}.dashboard-activity-link:hover .dashboard-activity-chevron,.dashboard-activity-link:focus-visible .dashboard-activity-chevron{border-color:color-mix(in srgb,var(--accent) 45%,var(--line));background:color-mix(in srgb,var(--accent) 12%,var(--surface));transform:translateX(1px)}
html[data-theme="dark"] .dashboard-activity-link{background:color-mix(in srgb,var(--surface-2) 78%,var(--bg));border-color:color-mix(in srgb,var(--line) 86%,var(--surface-2));border-left-color:var(--accent);box-shadow:0 1px 0 rgba(255,255,255,.015),0 2px 8px rgba(0,0,0,.12)}
html[data-theme="dark"] .dashboard-activity-link:hover,html[data-theme="dark"] .dashboard-activity-link:focus-visible{background:color-mix(in srgb,var(--accent) 7%,var(--surface-2));border-color:color-mix(in srgb,var(--accent) 40%,var(--line));border-left-color:var(--accent);box-shadow:0 5px 15px rgba(0,0,0,.2)}
.dashboard-load-error{margin:0}


/* 0.6.4 Bezetting: hard-isolate the zoomed topology stage from workspace sizing.
 * The topology shell is the flex item that receives the remaining vertical space.
 * The actual scroll viewport is absolutely inset into that shell, so the stage's
 * zoomed intrinsic width/height can only create internal scroll range and can never
 * participate in the outer flex calculation. This also avoids the 0.6.3 regression
 * where height:0 collapsed the scroll viewport because the shell was a row flexbox. */
.lineup-module>.lineup-root{
  display:flex;
  flex-direction:column;
  flex:1 1 auto;
  min-height:0;
  gap:10px;
  overflow:hidden;
}
.lineup-module>.lineup-root>.lineup-ensemble-nav{flex:0 0 auto}
.lineup-module>.lineup-root>.lineup-ensemble{
  display:flex;
  flex-direction:column;
  flex:1 1 0%;
  min-height:0;
  overflow:hidden;
}
.lineup-module>.lineup-root>.lineup-ensemble>.lineup-ensemble-header{flex:0 0 auto}
.lineup-module>.lineup-root>.lineup-ensemble>.lineup-body{
  display:flex;
  flex-direction:column;
  flex:1 1 0%;
  min-height:0;
  overflow:hidden;
}
.lineup-module .lineup-placement-tray{
  display:flex;
  flex-direction:column;
  flex:0 0 auto;
  min-height:0;
  max-height:min(34vh,320px);
  overflow:hidden;
}
.lineup-module .lineup-placement-title{flex:0 0 auto}
.lineup-module .lineup-placement-members{
  flex:1 1 auto;
  min-height:0;
  max-height:min(32vh,300px);
  overflow-y:auto;
  overflow-x:hidden;
  overscroll-behavior:contain;
  align-content:flex-start;
  padding-right:2px;
  scrollbar-gutter:stable;
}
.lineup-module .lineup-topology-shell{
  position:relative;
  display:block;
  flex:1 1 0%;
  min-height:0;
  min-width:0;
  overflow:hidden;
  contain:layout paint;
}
.lineup-module .lineup-topology-scroll{
  position:absolute;
  inset:0;
  width:auto;
  height:auto;
  min-width:0;
  min-height:0;
  overflow:auto;
  overscroll-behavior:contain;
}
@media(max-width:720px){
  .lineup-module .lineup-placement-tray{max-height:min(42vh,340px)}
  .lineup-module .lineup-placement-members{max-height:min(28vh,220px)}
}

/* 0.7.0 Repetities / aanwezigheid */
.rehearsal-board{display:flex;gap:14px;align-items:flex-start;overflow-x:auto;padding-bottom:10px}.rehearsal-director-pool,.rehearsal-column{min-width:260px;max-width:340px;flex:1}.rehearsal-director-pool{position:sticky;left:0;z-index:2;background:var(--surface,Canvas);border:1px solid var(--border,#d7dce3);border-radius:14px;padding:12px}.rehearsal-director-pool header,.rehearsal-column>header{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;margin-bottom:10px}.rehearsal-director-pool h2,.rehearsal-column h2{font-size:1rem;margin:0}.rehearsal-director-pool small,.rehearsal-column small,.rehearsal-card small{display:block;color:var(--muted,#6d7682)}.rehearsal-director{cursor:grab;margin-top:8px;padding:9px 10px;border:1px solid var(--border,#d7dce3);border-radius:10px;background:var(--panel,Canvas)}.rehearsal-director:active{cursor:grabbing}.rehearsal-column{border:1px solid var(--border,#d7dce3);border-radius:14px;padding:12px;background:color-mix(in srgb,var(--panel,Canvas) 92%,transparent)}.rehearsal-column-cards{display:grid;gap:10px}.rehearsal-card{display:grid;gap:10px;margin:0}.rehearsal-card.is-cancelled{opacity:.62}.rehearsal-card-head{display:flex;justify-content:space-between;gap:8px;align-items:flex-start}.rehearsal-toggle{font-size:.82rem;white-space:nowrap}.rehearsal-director-drop{border:1px dashed var(--border,#abb4c0);border-radius:10px;padding:9px;transition:.12s ease}.rehearsal-director-drop.drag-over{outline:2px solid currentColor;outline-offset:2px}.attendance-summary{display:grid;grid-template-columns:repeat(3,minmax(90px,1fr));gap:10px;margin-bottom:12px}.attendance-summary>div{border:1px solid var(--border,#d7dce3);border-radius:12px;padding:10px;text-align:center}.attendance-summary strong{display:block;font-size:1.5rem}.attendance-summary span{font-size:.85rem;color:var(--muted,#6d7682)}.attendance-nonresponders{border-style:dashed}.attendance-table td:first-child small{display:block}.attendance-config-fields{margin-top:10px}.wide-dialog{width:min(960px,calc(100vw - 24px));max-width:960px}.data-table{width:100%;border-collapse:collapse}.data-table th,.data-table td{text-align:left;padding:9px;border-bottom:1px solid var(--border,#d7dce3);vertical-align:top}.table-wrap{overflow:auto}@media(max-width:760px){.rehearsal-board{display:grid;overflow:visible}.rehearsal-director-pool{position:static;max-width:none}.rehearsal-column{max-width:none}.attendance-summary{grid-template-columns:repeat(3,1fr)}}
.dashboard-attendance-poll{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:12px 0;border-bottom:1px solid var(--border,#d7dce3)}.dashboard-attendance-poll:last-child{border-bottom:0}.dashboard-attendance-poll p{margin:.35rem 0 0}.dashboard-attendance-poll small{display:block;color:var(--muted,#6d7682)}.attendance-answer-buttons{display:flex;gap:8px;flex:0 0 auto}@media(max-width:620px){.dashboard-attendance-poll{align-items:flex-start;flex-direction:column}}

/* 0.7.0-r13 Repetities status surfaces + dark-mode alignment.
 * Status priority: cancelled (danger) > going ahead without director (warning)
 * > going ahead with director (success). Colour is an additional cue only. */
.rehearsals-module{
  --rehearsal-success:#2d7f52;
  --rehearsal-warning:#a47d18;
  --rehearsal-danger:var(--danger);
}
.rehearsals-module .rehearsal-board{gap:14px;padding:2px 2px 12px}
.rehearsals-module .rehearsal-director-pool,
.rehearsals-module .rehearsal-column{
  border-color:var(--line);
  box-shadow:0 2px 8px color-mix(in srgb,#000 5%,transparent);
}
.rehearsals-module .rehearsal-director-pool{background:var(--surface)}
.rehearsals-module .rehearsal-column{background:var(--surface-2)}
.rehearsals-module .rehearsal-director{
  border-color:var(--line);
  background:var(--surface);
  color:var(--text);
  transition:border-color .14s ease,background .14s ease,transform .14s ease;
}
.rehearsals-module .rehearsal-director:hover{
  border-color:var(--accent);
  background:color-mix(in srgb,var(--accent) 5%,var(--surface));
}
.rehearsals-module .rehearsal-card{
  position:relative;
  border-color:var(--line);
  background:var(--surface);
  box-shadow:0 2px 7px color-mix(in srgb,#000 5%,transparent);
  transition:background .16s ease,border-color .16s ease,box-shadow .16s ease,opacity .16s ease;
}
.rehearsals-module .rehearsal-card.is-cancelled{opacity:1}
.rehearsals-module .rehearsal-card.rehearsal-status-success{
  background:color-mix(in srgb,var(--rehearsal-success) 8%,var(--surface));
  border-color:color-mix(in srgb,var(--rehearsal-success) 42%,var(--line));
  box-shadow:inset 3px 0 0 color-mix(in srgb,var(--rehearsal-success) 78%,var(--line)),0 2px 7px color-mix(in srgb,#000 5%,transparent);
}
.rehearsals-module .rehearsal-card.rehearsal-status-warning{
  background:color-mix(in srgb,var(--rehearsal-warning) 9%,var(--surface));
  border-color:color-mix(in srgb,var(--rehearsal-warning) 46%,var(--line));
  box-shadow:inset 3px 0 0 color-mix(in srgb,var(--rehearsal-warning) 82%,var(--line)),0 2px 7px color-mix(in srgb,#000 5%,transparent);
}
.rehearsals-module .rehearsal-card.rehearsal-status-danger{
  background:color-mix(in srgb,var(--rehearsal-danger) 8%,var(--surface));
  border-color:color-mix(in srgb,var(--rehearsal-danger) 44%,var(--line));
  box-shadow:inset 3px 0 0 color-mix(in srgb,var(--rehearsal-danger) 80%,var(--line)),0 2px 7px color-mix(in srgb,#000 5%,transparent);
}
.rehearsals-module .rehearsal-director-drop{
  border-color:color-mix(in srgb,var(--line) 88%,var(--text));
  background:color-mix(in srgb,var(--surface-2) 52%,transparent);
}
.rehearsals-module .rehearsal-director-drop.drag-over{
  border-color:var(--accent);
  background:color-mix(in srgb,var(--accent) 10%,var(--surface));
  color:var(--text);
}
.rehearsals-module .rehearsal-toggle input{accent-color:var(--accent)}
.rehearsals-module .rehearsal-card .secondary{
  background:color-mix(in srgb,var(--surface) 88%,transparent);
}
.rehearsals-module .rehearsal-card .secondary:hover{
  border-color:var(--accent);
  background:color-mix(in srgb,var(--accent) 7%,var(--surface));
}
html[data-theme="dark"] .rehearsals-module{
  --rehearsal-success:#58b982;
  --rehearsal-warning:#d4a83e;
  --rehearsal-danger:#d97079;
}
html[data-theme="dark"] .rehearsals-module .rehearsal-director-pool,
html[data-theme="dark"] .rehearsals-module .rehearsal-column{
  box-shadow:0 5px 16px rgba(0,0,0,.16);
}
html[data-theme="dark"] .rehearsals-module .rehearsal-column{
  background:color-mix(in srgb,var(--surface-2) 88%,var(--bg));
}
html[data-theme="dark"] .rehearsals-module .rehearsal-card.rehearsal-status-success{
  background:color-mix(in srgb,var(--rehearsal-success) 11%,var(--surface));
  border-color:color-mix(in srgb,var(--rehearsal-success) 38%,var(--line));
}
html[data-theme="dark"] .rehearsals-module .rehearsal-card.rehearsal-status-warning{
  background:color-mix(in srgb,var(--rehearsal-warning) 11%,var(--surface));
  border-color:color-mix(in srgb,var(--rehearsal-warning) 40%,var(--line));
}
html[data-theme="dark"] .rehearsals-module .rehearsal-card.rehearsal-status-danger{
  background:color-mix(in srgb,var(--rehearsal-danger) 10%,var(--surface));
  border-color:color-mix(in srgb,var(--rehearsal-danger) 38%,var(--line));
}
html[data-theme="dark"] .rehearsals-module .rehearsal-director-drop{
  background:color-mix(in srgb,var(--surface-2) 68%,var(--surface));
  border-color:color-mix(in srgb,var(--line) 84%,var(--muted));
}

/* 0.7.0-r14 Repetities viewport + sticky director pool.
 * Ensemble columns scroll vertically inside the module workspace while the
 * director pool stays visible at the left for drag-and-drop. */
.rehearsals-module>.module-controlbar{flex:0 0 auto}
.rehearsals-module .rehearsal-board{
  flex:1 1 auto;
  min-height:0;
  align-items:stretch;
  overflow-x:auto;
  overflow-y:hidden;
  overscroll-behavior:contain;
  scrollbar-gutter:stable;
}
.rehearsals-module .rehearsal-director-pool,
.rehearsals-module .rehearsal-column{
  flex:0 0 min(340px,82vw);
  min-width:280px;
  max-width:340px;
  min-height:0;
  max-height:100%;
}
.rehearsals-module .rehearsal-director-pool{
  position:sticky;
  left:0;
  top:0;
  align-self:flex-start;
  z-index:8;
  max-height:100%;
  overflow:auto;
  overscroll-behavior:contain;
  box-shadow:8px 0 14px -14px rgba(0,0,0,.34),0 2px 8px color-mix(in srgb,#000 5%,transparent);
}
.rehearsals-module .rehearsal-column{
  display:flex;
  flex-direction:column;
  overflow:hidden;
}
.rehearsals-module .rehearsal-column>header{flex:0 0 auto}
.rehearsals-module .rehearsal-column-cards{
  flex:1 1 auto;
  min-height:0;
  overflow-y:auto;
  overflow-x:hidden;
  padding-right:3px;
  overscroll-behavior:contain;
  scrollbar-gutter:stable;
}
@media(max-width:760px){
  .rehearsals-module{height:auto;min-height:100vh;overflow:visible}
  .rehearsals-module .rehearsal-board{display:grid;overflow:visible}
  .rehearsals-module .rehearsal-director-pool,
  .rehearsals-module .rehearsal-column{position:static;max-width:none;max-height:none;overflow:visible}
  .rehearsals-module .rehearsal-column-cards{overflow:visible;padding-right:0}
}


/* 0.7.0-r15 Repetities director assignment controls.
 * Removing a director is an explicit lightweight action inside the drop target. */
.rehearsals-module .rehearsal-director-drop{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
}
.rehearsals-module .rehearsal-director-copy{
  min-width:0;
  flex:1 1 auto;
}
.rehearsals-module .rehearsal-director-copy strong{
  display:block;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.rehearsals-module .rehearsal-director-clear{
  flex:0 0 auto;
  width:28px;
  height:28px;
  border-radius:8px;
  color:var(--muted);
}
.rehearsals-module .rehearsal-director-clear:hover,
.rehearsals-module .rehearsal-director-clear:focus-visible{
  color:var(--danger);
  border-color:color-mix(in srgb,var(--danger) 55%,var(--line));
  background:color-mix(in srgb,var(--danger) 8%,var(--surface));
}

/* 0.7.0 r18 — isolated attendance-flow test status */
.attendance-test-grid{display:grid;grid-template-columns:repeat(5,minmax(140px,1fr));gap:8px}.attendance-test-grid>div{display:grid;gap:3px;min-width:0;padding:10px 11px;border:1px solid var(--line);border-radius:9px;background:var(--surface-2)}.attendance-test-grid small{color:var(--muted);font-size:10px}.attendance-test-grid strong{overflow-wrap:anywhere}@media(max-width:1100px){.attendance-test-grid{grid-template-columns:repeat(2,minmax(180px,1fr))}}@media(max-width:650px){.attendance-test-grid{grid-template-columns:1fr}}

/* r21: immutable login identity */
.field-label-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.readonly-badge{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--line);border-radius:999px;background:var(--surface-2);color:var(--muted);padding:2px 7px;font-size:10px;font-weight:700;letter-spacing:.02em}.readonly-badge::before{content:"🔒";font-size:9px}.readonly-field input[readonly]{background:color-mix(in srgb,var(--surface-2) 88%,var(--line));color:var(--muted);border-style:dashed;cursor:not-allowed;box-shadow:none}.readonly-field input[readonly]:focus{outline:none;border-color:var(--line);box-shadow:none}

/* 0.7.0-r22: profile save/alignment + isolated WhatsApp template workflow */
.profile-form>label:not(.checkbox-label){align-content:start;grid-auto-rows:max-content;align-self:start}
.profile-form input[type="date"]{min-height:38px}
.profile-save-actions{align-items:center;min-height:42px}
.profile-save-button{min-width:184px}
.profile-save-button:disabled{cursor:default;opacity:.72}
.profile-save-feedback{font-size:12px;color:var(--muted)}
.profile-save-feedback.error{color:var(--danger);font-weight:700}
.attendance-inline-status{padding:9px 11px;border:1px solid var(--line);border-radius:8px;background:var(--surface-2);color:var(--muted);font-size:12px;line-height:1.45}
.attendance-inline-status.ok{border-color:color-mix(in srgb,var(--ok) 45%,var(--line));color:var(--ok)}
.attendance-inline-status.error{border-color:color-mix(in srgb,var(--danger) 45%,var(--line));color:var(--danger)}
.attendance-test-error{color:var(--danger)!important;line-height:1.35;overflow-wrap:anywhere}









/* 0.7.0-r23 — attendance choice affordance + persistent WhatsApp template state */
.attendance-answer-buttons{gap:10px}
.attendance-answer-button{min-width:88px;min-height:42px;padding:9px 16px;border-radius:10px;font-weight:800;font-size:13px;line-height:1.2;transition:background .15s ease,border-color .15s ease,box-shadow .15s ease,transform .15s ease}
.attendance-answer-button:hover,.attendance-answer-button:focus-visible{outline:none;transform:translateY(-1px)}
.attendance-answer-button.attendance-answer-yes{background:color-mix(in srgb,var(--ok) 9%,var(--surface));border-color:color-mix(in srgb,var(--ok) 30%,var(--line));color:color-mix(in srgb,var(--ok) 82%,var(--text))}
.attendance-answer-button.attendance-answer-yes:hover,.attendance-answer-button.attendance-answer-yes:focus-visible{background:color-mix(in srgb,var(--ok) 14%,var(--surface));border-color:color-mix(in srgb,var(--ok) 48%,var(--line));box-shadow:0 0 0 2px color-mix(in srgb,var(--ok) 10%,transparent)}
.attendance-answer-button.attendance-answer-no{background:color-mix(in srgb,var(--danger) 7%,var(--surface));border-color:color-mix(in srgb,var(--danger) 24%,var(--line));color:color-mix(in srgb,var(--danger) 78%,var(--text))}
.attendance-answer-button.attendance-answer-no:hover,.attendance-answer-button.attendance-answer-no:focus-visible{background:color-mix(in srgb,var(--danger) 11%,var(--surface));border-color:color-mix(in srgb,var(--danger) 42%,var(--line));box-shadow:0 0 0 2px color-mix(in srgb,var(--danger) 8%,transparent)}
.attendance-answer-button.is-selected{border-width:2px;box-shadow:0 0 0 2px color-mix(in srgb,currentColor 10%,transparent)}
.attendance-inline-status{white-space:pre-line}
.attendance-inline-status.waiting{border-color:color-mix(in srgb,#a47d18 42%,var(--line));color:color-mix(in srgb,#a47d18 78%,var(--text));background:color-mix(in srgb,#a47d18 5%,var(--surface-2))}
@media(max-width:620px){.attendance-answer-buttons{width:100%}.attendance-answer-button{flex:1 1 0;min-width:0}}

/* 0.7.0-r23-r1 — versioned WhatsApp attendance-template management */
.attendance-template-placeholders{display:grid;grid-template-columns:repeat(3,minmax(180px,1fr));gap:8px}
.attendance-template-placeholder{display:flex;align-items:flex-start;gap:9px;padding:9px 10px;border:1px solid var(--line);border-radius:9px;background:var(--surface-2)}
.attendance-template-placeholder code{flex:0 0 auto;font-weight:800;color:var(--accent)}
.attendance-template-placeholder span{display:grid;gap:2px;min-width:0}
.attendance-template-placeholder small{color:var(--muted);overflow-wrap:anywhere}
.attendance-template-fixed-buttons{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:10px 11px;border:1px solid var(--line);border-radius:9px;background:var(--surface-2)}
.attendance-template-fixed-buttons>span{font-weight:800;margin-right:2px}
.attendance-template-fixed-buttons>small{flex:1 1 260px;color:var(--muted)}
.attendance-template-fixed-buttons .attendance-answer-button:disabled{opacity:.82;cursor:default;transform:none}
.attendance-template-version-summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface-2)}
.attendance-template-version-summary>div{display:grid;gap:2px;min-width:0}.attendance-template-version-summary small{color:var(--muted);overflow-wrap:anywhere}
.attendance-template-versions{display:grid;gap:8px}
.attendance-template-version{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:11px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.attendance-template-version.ok{border-color:color-mix(in srgb,var(--ok) 30%,var(--line))}
.attendance-template-version.waiting{border-color:color-mix(in srgb,#a47d18 34%,var(--line))}
.attendance-template-version.error{border-color:color-mix(in srgb,var(--danger) 34%,var(--line))}
.attendance-template-version.draft{border-style:dashed}
.attendance-template-version-main{display:grid;gap:4px;min-width:0;flex:1 1 auto}.attendance-template-version-main>small{color:var(--muted);overflow-wrap:anywhere}
.attendance-template-version-title{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.attendance-template-version-title strong{overflow-wrap:anywhere}
.attendance-template-active-badge{display:inline-flex;align-items:center;border-radius:999px;padding:2px 7px;background:color-mix(in srgb,var(--ok) 12%,var(--surface));border:1px solid color-mix(in srgb,var(--ok) 32%,var(--line));color:var(--ok);font-size:10px;font-weight:900;letter-spacing:.04em}
.attendance-template-version .attendance-inline-status{justify-self:start;padding:4px 7px;font-size:11px;font-weight:700}
.attendance-template-version .attendance-inline-status.draft{border-style:dashed}
.attendance-template-version-actions{display:flex;align-items:center;justify-content:flex-end;gap:7px;flex-wrap:wrap;flex:0 0 auto}
.attendance-template-reason{white-space:pre-wrap;overflow-wrap:anywhere;color:var(--danger);font-size:12px}
.warning-text{color:color-mix(in srgb,#a47d18 82%,var(--text))!important;font-weight:700}
.form-grid label.is-disabled{opacity:.65}
@media(max-width:850px){.attendance-template-placeholders{grid-template-columns:repeat(2,minmax(160px,1fr))}.attendance-template-version,.attendance-template-version-summary{align-items:flex-start;flex-direction:column}.attendance-template-version-actions{justify-content:flex-start;width:100%}}
@media(max-width:560px){.attendance-template-placeholders{grid-template-columns:1fr}.attendance-template-version-actions button{flex:1 1 auto}}

/* 0.7.0 r23-r2 — administration field alignment + modal notifications */
.form-grid .field-help-spacer{visibility:hidden;pointer-events:none;user-select:none}

.success-dialog .dialog-header{background:linear-gradient(135deg,color-mix(in srgb,var(--ok) 10%,var(--surface)),var(--surface) 78%);border-bottom-color:color-mix(in srgb,var(--ok) 28%,var(--line))}
.warning-dialog .dialog-header{background:linear-gradient(135deg,color-mix(in srgb,#d99a1d 10%,var(--surface)),var(--surface) 78%);border-bottom-color:color-mix(in srgb,#d99a1d 28%,var(--line))}
.error-dialog .dialog-header{background:linear-gradient(135deg,color-mix(in srgb,var(--danger) 9%,var(--surface)),var(--surface) 78%);border-bottom-color:color-mix(in srgb,var(--danger) 28%,var(--line))}
.warning-dialog .dialog-reason{color:#9b6500}

/* 0.7.0-r24: managed WhatsApp draft/history preview */
.attendance-template-body-preview{margin-top:3px}.attendance-template-body-preview summary{cursor:pointer;color:var(--muted);font-size:11px;font-weight:700}.attendance-template-body-preview pre{margin:7px 0 0;max-height:220px;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;padding:9px;border:1px solid var(--line);border-radius:8px;background:var(--surface-2);color:var(--text);font:11px/1.45 ui-monospace,SFMono-Regular,Consolas,monospace}

/* 0.7.0-r25 — attendance clarity, managed mail typography, calendar polish, multi-director rehearsals */
/* Disabled primary actions outside dialogs must read as truly unavailable. */
.primary:disabled,.secondary:disabled,.warning-button:disabled,.danger-button:disabled{
  opacity:.5;
  cursor:not-allowed;
  filter:saturate(.55);
  transform:none!important;
  box-shadow:none!important;
}


/* Dashboard attendance: make the stored choice unmistakable without hiding the alternative. */
.attendance-answer-buttons.has-selection .attendance-answer-button.is-muted{
  opacity:.48;
  filter:saturate(.42);
  transform:none;
}
.attendance-answer-button.attendance-answer-yes.is-selected{
  opacity:1;
  background:color-mix(in srgb,var(--ok) 20%,var(--surface));
  border-color:color-mix(in srgb,var(--ok) 68%,var(--line));
  color:color-mix(in srgb,var(--ok) 88%,var(--text));
  box-shadow:0 0 0 3px color-mix(in srgb,var(--ok) 15%,transparent),inset 0 0 0 1px color-mix(in srgb,var(--ok) 28%,transparent);
}
.attendance-answer-button.attendance-answer-no.is-selected{
  opacity:1;
  background:color-mix(in srgb,var(--danger) 16%,var(--surface));
  border-color:color-mix(in srgb,var(--danger) 62%,var(--line));
  color:color-mix(in srgb,var(--danger) 88%,var(--text));
  box-shadow:0 0 0 3px color-mix(in srgb,var(--danger) 13%,transparent),inset 0 0 0 1px color-mix(in srgb,var(--danger) 25%,transparent);
}
.attendance-saved-state{
  display:inline-flex;
  align-items:center;
  gap:4px;
  margin:7px 0 0;
  padding:4px 8px;
  border:1px solid color-mix(in srgb,var(--ok) 30%,var(--line));
  border-radius:999px;
  background:color-mix(in srgb,var(--ok) 7%,var(--surface));
  color:var(--muted);
  font-size:11px;
}

/* Isolated test: actual-attendance simulation is intentionally separate from RSVP. */
.attendance-test-actual{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  padding:10px 11px;
  border:1px solid var(--line);
  border-radius:10px;
  background:var(--surface-2);
}
.attendance-test-actual>span{display:grid;gap:2px;min-width:0}
.attendance-test-actual>span small{color:var(--muted)}
.attendance-test-actual-actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap;justify-content:flex-end}
.attendance-test-actual-actions .is-selected{
  border-width:2px;
  border-color:color-mix(in srgb,var(--accent) 62%,var(--line));
  background:color-mix(in srgb,var(--accent) 10%,var(--surface));
  box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 9%,transparent);
  font-weight:800;
}
@media(max-width:720px){.attendance-test-actual{align-items:stretch;flex-direction:column}.attendance-test-actual-actions{justify-content:flex-start}}

/* Repetities: a rehearsal owns a set of directors, not one replaceable slot. */
.rehearsals-module .rehearsal-director-assigned-list{
  display:flex;
  flex-wrap:wrap;
  gap:6px;
  margin-top:4px;
}
.rehearsals-module .rehearsal-director-assigned{
  display:inline-flex;
  align-items:center;
  gap:6px;
  max-width:100%;
  padding:4px 5px 4px 8px;
  border:1px solid color-mix(in srgb,var(--accent) 24%,var(--line));
  border-radius:999px;
  background:color-mix(in srgb,var(--accent) 6%,var(--surface));
  font-weight:700;
  font-size:11px;
}

.rehearsals-module .rehearsal-director-assigned .rehearsal-director-clear{
  width:22px;
  height:22px;
  min-height:22px;
  padding:0;
  border-radius:999px;
}

/* Shared system-mail editor typography controls. */
.rich-editor-toolbar #systemMailBlockStyle{min-width:88px}
.rich-editor-toolbar #systemMailFontFamily{min-width:122px}
.rich-editor-toolbar #systemMailFontSize{min-width:82px}
.rich-editor-toolbar button.is-active{
  border-color:color-mix(in srgb,var(--accent) 62%,var(--line));
  background:color-mix(in srgb,var(--accent) 12%,var(--surface));
  color:var(--accent);
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 14%,transparent);
}
.rich-editor h1{font-size:2em;line-height:1.2;margin:.55em 0 .35em}
.rich-editor h2{font-size:1.5em;line-height:1.25;margin:.6em 0 .35em}
.rich-editor h3{font-size:1.2em;line-height:1.3;margin:.65em 0 .35em}

/* Calendar attendance configuration uses the same card/form language as the rest of the app. */
.calendar-event-dialog{min-width:0}
.calendar-event-dialog .dialog-body{
  max-height:min(78vh,780px);
  overflow:auto;
  padding-bottom:0;
}
.calendar-event-dialog .dialog-actions{
  position:sticky;
  bottom:0;
  z-index:4;
  margin:4px -1px 0;
  padding:12px 1px 14px;
  border-top:1px solid var(--line);
  background:linear-gradient(to bottom,color-mix(in srgb,var(--surface) 92%,transparent),var(--surface) 24%);
}
.attendance-config-card{
  display:grid;
  gap:12px;
  margin-top:6px;
  padding:13px;
  border:1px solid var(--line);
  border-radius:12px;
  background:var(--surface-2);
}
.attendance-config-header{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:16px;
}
.attendance-config-header>div{display:grid;gap:3px;min-width:0}
.attendance-config-header h3{margin:0;font-size:14px}
.attendance-config-header p{margin:0;color:var(--muted);font-size:11px;line-height:1.45}
.app-toggle{
  display:inline-flex;
  align-items:center;
  gap:8px;
  flex:0 0 auto;
  min-height:32px;
  padding:5px 9px;
  border:1px solid var(--line);
  border-radius:999px;
  background:var(--surface);
  cursor:pointer;
  font-size:11px;
  font-weight:800;
}
.app-toggle input{width:16px;height:16px;margin:0;accent-color:var(--accent)}
.attendance-config-fields{margin:0!important;padding-top:12px;border-top:1px solid var(--line);transition:opacity .15s ease,filter .15s ease}
.attendance-config-card.is-disabled .attendance-config-fields{opacity:.5;filter:saturate(.5)}
.attendance-config-card.is-disabled .attendance-config-subsection{background:transparent}
.attendance-config-subsection{
  display:grid;
  gap:9px;
  padding:11px;
  border:1px solid var(--line);
  border-radius:10px;
  background:var(--surface);
}
.attendance-config-subheading{display:grid;gap:2px}
.attendance-config-subheading small{color:var(--muted);font-size:10px}
.attendance-group-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:5px 12px;
  max-height:230px;
  overflow:auto;
  padding-right:4px;
}
.attendance-group-grid .checkbox-label{
  min-width:0;
  align-items:flex-start;
  margin:0;
  padding:5px 6px;
  border-radius:7px;
}
.attendance-group-grid .checkbox-label:hover{background:color-mix(in srgb,var(--accent) 5%,var(--surface))}
.attendance-group-grid .checkbox-label small{margin-left:auto;color:var(--muted);font-size:9px;text-align:right}
.attendance-mail-options{display:flex;align-items:center;gap:10px 18px;flex-wrap:wrap;padding-top:2px}
.attendance-mail-options .checkbox-label{margin:0}
@media(max-width:650px){
  .attendance-config-header{flex-direction:column;align-items:stretch}
  .attendance-enable-toggle{align-self:flex-start}
  .attendance-group-grid{grid-template-columns:1fr}
}

/* 0.7.0-r27 — managed rehearsal resources, location inheritance and stable cards. */
.rehearsals-module .rehearsal-resource-pool{
  flex:0 0 300px;
  min-width:300px;
  max-width:300px;
  min-height:0;
  max-height:100%;
  align-self:flex-start;
  overflow:auto;
  overscroll-behavior:contain;
  border:1px solid var(--line);
  border-radius:14px;
  padding:12px;
  background:var(--surface);
  box-shadow:0 2px 8px color-mix(in srgb,#000 5%,transparent);
}
.rehearsals-module .rehearsal-resource-pool>header{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:10px;
  margin-bottom:10px;
}
.rehearsals-module .rehearsal-resource-pool>header>div{display:grid;gap:2px;min-width:0}
.rehearsals-module .rehearsal-resource-pool h2{margin:0;font-size:1rem}
.rehearsals-module .rehearsal-resource-pool small{display:block;color:var(--muted)}
.rehearsals-module .rehearsal-director-pool{position:sticky;left:0;z-index:9}
.rehearsals-module .rehearsal-location-pool{position:sticky;left:314px;z-index:8}
.rehearsals-module .rehearsal-location-list,
.rehearsals-module .rehearsal-director-list{display:grid;gap:8px}
.rehearsals-module .rehearsal-location-card{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:8px;
  min-width:0;
  margin:0;
  padding:9px 10px;
  border:1px solid var(--line);
  border-radius:10px;
  background:var(--surface);
  color:var(--text);
  cursor:grab;
  transition:border-color .14s ease,background .14s ease,transform .14s ease;
}
.rehearsals-module .rehearsal-location-card:active{cursor:grabbing}
.rehearsals-module .rehearsal-location-card:hover{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 5%,var(--surface))}
.rehearsals-module .rehearsal-location-card>div{min-width:0;display:grid;gap:2px}
.rehearsals-module .rehearsal-location-card strong,
.rehearsals-module .rehearsal-location-card small{overflow-wrap:anywhere}
.rehearsals-module .rehearsal-location-card .icon-button{flex:0 0 auto}
.rehearsals-module .rehearsal-director-assigned-list{display:flex;flex-wrap:wrap;gap:5px;margin-top:3px}
.rehearsals-module .rehearsal-director-assigned{
  display:inline-flex;
  align-items:center;
  gap:5px;
  max-width:100%;
  padding:3px 5px 3px 8px;
  border:1px solid var(--line);
  border-radius:999px;
  background:var(--surface);
}
.rehearsals-module .rehearsal-director-assigned>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rehearsals-module .rehearsal-director-assigned .rehearsal-director-clear{width:24px;height:24px;min-height:24px}
.rehearsals-module .rehearsal-location-drop{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:9px;
  min-height:60px;
  padding:9px;
  border:1px dashed color-mix(in srgb,var(--line) 88%,var(--text));
  border-radius:10px;
  background:color-mix(in srgb,var(--surface-2) 52%,transparent);
  transition:border-color .12s ease,background .12s ease,outline-color .12s ease;
}
.rehearsals-module .rehearsal-location-drop.drag-over{
  border-color:var(--accent);
  outline:2px solid color-mix(in srgb,var(--accent) 52%,transparent);
  outline-offset:2px;
  background:color-mix(in srgb,var(--accent) 10%,var(--surface));
}
.rehearsals-module .rehearsal-location-drop.is-override{border-style:solid;border-color:color-mix(in srgb,var(--accent) 42%,var(--line))}
.rehearsals-module .rehearsal-location-copy{display:grid;gap:2px;min-width:0;flex:1 1 auto}
.rehearsals-module .rehearsal-location-copy>span{font-size:12px;line-height:1.4;overflow-wrap:anywhere}
.rehearsals-module .rehearsal-location-reset{flex:0 0 auto;white-space:nowrap}
.rehearsals-module .rehearsal-card{align-content:start}
.rehearsal-schedule-delete-actions{flex-wrap:wrap}
.location-editor-actions .dialog-actions-spacer,
.dialog-actions .dialog-actions-spacer{flex:1 1 auto}

html[data-theme="dark"] .rehearsals-module .rehearsal-resource-pool{box-shadow:0 5px 16px rgba(0,0,0,.16)}
html[data-theme="dark"] .rehearsals-module .rehearsal-location-drop{background:color-mix(in srgb,var(--surface-2) 68%,var(--surface));border-color:color-mix(in srgb,var(--line) 84%,var(--muted))}
@media(max-width:760px){
  .rehearsals-module .rehearsal-resource-pool,
  .rehearsals-module .rehearsal-director-pool,
  .rehearsals-module .rehearsal-location-pool{position:static;left:auto;max-width:none;min-width:0;width:auto;overflow:visible}
}

/* 0.7.0-r28 — incidental rehearsals, destructive-action polish and attendance toggle alignment. */
.form-grid label.attendance-enable-toggle,
.attendance-config-header .attendance-enable-toggle{
  display:inline-flex!important;
  flex-direction:row!important;
  flex-wrap:nowrap!important;
  align-items:center!important;
  justify-content:flex-start;
  gap:8px!important;
  white-space:nowrap;
}
.form-grid label.attendance-enable-toggle input,
.attendance-config-header .attendance-enable-toggle input{flex:0 0 auto;width:16px!important;height:16px!important;margin:0!important}
.rehearsals-module .rehearsal-column-actions{display:flex;align-items:center;justify-content:flex-end;gap:6px;flex-wrap:wrap}
.rehearsals-module .rehearsal-extra-label{margin-top:2px;color:var(--accent)!important;font-weight:800;line-height:1.25}
.rehearsals-module .rehearsal-card.is-incidental{border-style:solid}
.rehearsals-module .rehearsal-card-actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-top:auto}
.rehearsals-module .rehearsal-card-actions .secondary{flex:1 1 150px}
.rehearsals-module .rehearsal-card-actions .danger-button{flex:0 0 auto}
#rehearsalScheduleDelete.danger-button{align-self:center}
@media(max-width:650px){
  .attendance-config-header .attendance-enable-toggle{align-self:flex-start;max-width:100%;white-space:normal}
  .rehearsals-module .rehearsal-column-actions{justify-content:flex-start}
}

/* 0.7.1 — bardienst, shared rehearsal assignment chips and maintenance action sizing. */
.rehearsals-module .rehearsal-assignment-chip{
  display:inline-flex;
  align-items:center;
  gap:5px;
  max-width:100%;
  padding:3px 5px 3px 8px;
  border:1px solid var(--line);
  border-radius:999px;
  background:var(--surface);
  line-height:1.2;
}
.rehearsals-module .rehearsal-assignment-chip>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rehearsals-module .rehearsal-chip-remove{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  flex:0 0 24px;
  width:24px;
  height:24px;
  min-width:24px;
  min-height:24px;
  padding:0;
  margin:0;
  border:0;
  border-radius:50%;
  background:transparent;
  color:inherit;
  font:inherit;
  font-size:17px;
  line-height:1;
  cursor:pointer;
}
.rehearsals-module .rehearsal-chip-remove:hover{background:color-mix(in srgb,var(--danger) 12%,transparent);color:var(--danger)}
.rehearsals-module .rehearsal-chip-remove:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.rehearsals-module .rehearsal-bar-duty{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:9px;
  min-height:60px;
  padding:9px;
  border:1px solid color-mix(in srgb,var(--line) 88%,var(--text));
  border-radius:10px;
  background:color-mix(in srgb,var(--surface-2) 52%,transparent);
}
.rehearsals-module .rehearsal-bar-duty.needs-replacements{border-color:color-mix(in srgb,#b88112 55%,var(--line));background:color-mix(in srgb,#d6a12d 8%,var(--surface))}
.rehearsals-module .rehearsal-bar-duty.is-filled{border-color:color-mix(in srgb,var(--ok) 50%,var(--line));background:color-mix(in srgb,var(--ok) 7%,var(--surface))}
.rehearsals-module .rehearsal-bar-copy{display:grid;gap:3px;min-width:0;flex:1 1 auto}
.rehearsals-module .rehearsal-bar-assigned-list{display:flex;flex-wrap:wrap;gap:5px}
.rehearsals-module .rehearsal-bar-actions{display:flex;align-items:center;justify-content:flex-end;gap:5px;flex-wrap:wrap}
.rehearsals-module .rehearsal-inline-control{display:flex;align-items:center;gap:7px}
.rehearsals-module .rehearsal-bar-setting.is-disabled{opacity:.62}
.maintenance-record .instrument-inline-actions>button{min-height:38px;height:38px;display:inline-flex;align-items:center;justify-content:center}
.maintenance-record .instrument-inline-actions>.danger-button.compact{padding-top:0;padding-bottom:0}
html[data-theme="dark"] .rehearsals-module .rehearsal-bar-duty{background:color-mix(in srgb,var(--surface-2) 68%,var(--surface));border-color:color-mix(in srgb,var(--line) 84%,var(--muted))}
@media(max-width:650px){.rehearsals-module .rehearsal-bar-duty{align-items:flex-start;flex-direction:column}.rehearsals-module .rehearsal-bar-actions{justify-content:flex-start}.rehearsals-module .rehearsal-inline-control{align-items:flex-start}.rehearsals-module .rehearsal-default-team-chip{max-width:100%}}

/* 0.7.1-r3 — rehearsal header alignment, theme-consistent chips and incidental editing. */
.rehearsal-assignment-chip,
.rehearsals-module .rehearsal-assignment-chip{
  display:inline-flex;
  align-items:center;
  gap:6px;
  max-width:100%;
  min-height:0;
  padding:4px 5px 4px 8px;
  border:1px solid color-mix(in srgb,var(--accent) 24%,var(--line));
  border-radius:999px;
  background:color-mix(in srgb,var(--accent) 6%,var(--surface));
  color:var(--text);
  font:inherit;
  font-size:11px;
  font-weight:700;
  line-height:1.2;
  box-sizing:border-box;
}
.rehearsal-assignment-chip>span,
.rehearsals-module .rehearsal-assignment-chip>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
button.rehearsal-assignment-chip{
  appearance:none;
  width:auto;
  height:auto;
  margin:0;
  cursor:pointer;
  text-align:left;
}
button.rehearsal-assignment-chip:hover:not(:disabled){
  border-color:color-mix(in srgb,var(--accent) 48%,var(--line));
  background:color-mix(in srgb,var(--accent) 10%,var(--surface));
}
button.rehearsal-assignment-chip:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
button.rehearsal-assignment-chip:disabled{cursor:not-allowed;opacity:.62}
.rehearsal-default-team-chip.is-empty{color:var(--muted);border-style:dashed}
.rehearsal-chip-edit{
  display:inline-grid;
  place-items:center;
  flex:0 0 22px;
  width:22px;
  height:22px;
  border-radius:999px;
  color:var(--accent);
  font-size:13px;
  font-weight:800;
  line-height:1;
}
html[data-theme="dark"] .rehearsal-assignment-chip,
html[data-theme="dark"] .rehearsals-module .rehearsal-assignment-chip{
  border-color:color-mix(in srgb,var(--accent) 30%,var(--line));
  background:color-mix(in srgb,var(--accent) 9%,var(--surface));
}
.rehearsals-module .rehearsal-resource-pool>header,
.rehearsals-module .rehearsal-column>header{box-sizing:border-box}
.rehearsals-module .rehearsal-card-head-actions{display:flex;align-items:flex-start;justify-content:flex-end;gap:6px;flex:0 0 auto}
.rehearsals-module .rehearsal-incidental-edit{flex:0 0 auto}
@media(max-width:650px){
  .rehearsals-module .rehearsal-card-head-actions{align-items:flex-end;flex-direction:column}
}

/* 0.7.1 r4 — Repetities: compact toolbar and Leden-style incidental editor */
.rehearsals-module .rehearsal-card-head-actions{display:flex;flex-direction:column;align-items:flex-end;justify-content:flex-start;gap:6px}
.rehearsal-incidental-dialog>.dialog-body{display:flex;flex:1 1 auto;min-height:0;overflow:hidden;padding:0}
.rehearsal-incidental-form{display:flex;flex:1 1 auto;min-height:0;flex-direction:column;width:100%}
.rehearsal-incidental-scroll{flex:1 1 auto;min-height:0;overflow:auto;padding:17px;overscroll-behavior:contain;scrollbar-gutter:stable}
.rehearsal-incidental-actions{position:static!important;flex:0 0 auto;margin:0;padding:12px 17px;border-top:1px solid var(--line);background:var(--surface);box-shadow:0 -8px 20px rgba(0,0,0,.08);z-index:4}
@media(max-width:700px){.rehearsal-incidental-scroll{padding:13px}.rehearsal-incidental-actions{padding:11px 13px}}

/* 0.7.1 r4 — Beheer / WhatsApp workspace */
.whatsapp-admin-section{min-width:0}
.whatsapp-subtabs{margin-bottom:12px}
.whatsapp-admin-section>[data-whatsapp-panel][hidden]{display:none!important}
.whatsapp-admin-section>[data-whatsapp-panel]{min-width:0}
.whatsapp-admin-section .card.panel{max-width:none}
@media(max-width:760px){.whatsapp-subtabs{width:100%;overflow-x:auto;flex-wrap:nowrap}.whatsapp-subtabs .admin-tab{flex:0 0 auto;white-space:nowrap}}

/* 0.7.1 r5 — visible WhatsApp template cards */
.whatsapp-template-card-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;min-width:0}
.whatsapp-template-card{display:grid;gap:10px;min-width:0;transition:border-color .15s ease,box-shadow .15s ease,background .15s ease}
.whatsapp-template-card.is-selected{border-color:color-mix(in srgb,var(--accent) 48%,var(--line));box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 18%,transparent)}
.whatsapp-template-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;min-width:0}
.whatsapp-template-card-head>div{min-width:0}.whatsapp-template-card-head .panel-title{margin-bottom:3px}
.whatsapp-template-card-preview{margin:0;min-height:112px;max-height:180px;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;padding:10px 11px;border:1px solid var(--line);border-radius:9px;background:var(--surface-2);color:var(--text);font:11px/1.5 ui-monospace,SFMono-Regular,Consolas,monospace}
.whatsapp-template-card-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0}
.whatsapp-template-card-footer>small{min-width:0;overflow-wrap:anywhere}
.whatsapp-template-card-footer .workgroup-header-actions{flex:0 0 auto}
html[data-theme="dark"] .whatsapp-template-card.is-selected{background:color-mix(in srgb,var(--accent) 5%,var(--surface))}
@media(max-width:980px){.whatsapp-template-card-grid{grid-template-columns:1fr}.whatsapp-template-card-preview{min-height:0;max-height:155px}}
@media(max-width:620px){.whatsapp-template-card-head,.whatsapp-template-card-footer{align-items:flex-start;flex-direction:column}.whatsapp-template-card-footer .workgroup-header-actions{width:100%;justify-content:flex-start}.whatsapp-template-card-footer .workgroup-header-actions button{flex:1 1 auto}}

/* 0.7.1 r9 — extra-rehearsal inline controls + scroll anchoring stability */
.rehearsals-module .rehearsal-board,
.rehearsals-module .rehearsal-column-cards{overflow-anchor:none}
.rehearsals-module .rehearsal-card-head-actions{align-items:flex-end;gap:4px}
.rehearsals-module .rehearsal-card-control{
  display:grid;
  grid-template-columns:18px auto;
  align-items:center;
  column-gap:6px;
  min-height:22px;
  padding:0;
  margin:0;
  border:0;
  background:transparent;
  color:inherit;
  font:inherit;
  font-size:.82rem;
  line-height:1.2;
  white-space:nowrap;
}
.rehearsals-module label.rehearsal-card-control{cursor:pointer}
.rehearsals-module .rehearsal-card-control input[type="checkbox"]{
  width:14px;
  height:14px;
  margin:0;
  justify-self:center;
  accent-color:var(--accent);
}
.rehearsals-module button.rehearsal-card-control{cursor:pointer;text-align:left}
.rehearsals-module button.rehearsal-card-control:hover,
.rehearsals-module button.rehearsal-card-control:focus-visible{color:var(--accent)}
.rehearsals-module .rehearsal-control-icon{
  width:18px;
  text-align:center;
  justify-self:center;
  font-size:16px;
  line-height:1;
}
.rehearsals-module .rehearsal-card-control:has(input:disabled),
.rehearsals-module button.rehearsal-card-control:disabled{opacity:.55;cursor:wait}

/* 0.9.7.23 — seven invisible columns: date | event | place | poll | guests | workgroup | menu. */
.calendar-event{
  grid-template-columns:var(--cal-date-width,150px) minmax(235px,1fr) var(--cal-location-width,190px) var(--cal-attendance-width,165px) var(--cal-guests-width,320px) var(--cal-workgroup-width,110px) 34px;
  column-gap:12px;
}
.calendar-event-date,.calendar-event-main,.calendar-event-location,
.calendar-event-attendance,.calendar-event-guests,.calendar-event-workgroup,.calendar-event-actions{min-width:0}
.calendar-event-attendance,.calendar-event-guests,.calendar-event-workgroup,.calendar-event-actions{
  display:flex;align-items:center;justify-content:flex-end
}
/* Compact geometry shared by comparable status and action pills. */
.pill-compact{box-sizing:border-box;display:inline-flex;align-items:center;min-height:26px;padding:4px 7px;line-height:16px;font-size:11px;font-weight:600;border:1px solid var(--line);border-radius:999px;vertical-align:middle}
.calendar-event-attendance .badge,.calendar-event-guests .badge,.calendar-event-workgroup .badge{max-width:100%;white-space:nowrap}
.calendar-event-attendance .badge{width:100%;justify-content:center;text-align:center}
/* 0.9.7.24 — a separate guest shortcut for each participating ensemble. */
.calendar-event-guests{display:flex;flex-direction:column;align-items:stretch;justify-content:center;gap:5px}
.calendar-event-guests .calendar-guest-ensemble-pill{display:flex;align-items:center;justify-content:flex-start;gap:6px;width:100%;min-width:0;max-width:100%;text-align:left}
.calendar-guest-ensemble-dot{flex:0 0 8px;width:8px;height:8px;border-radius:50%;background:var(--guest-ensemble-color,#64748B)}
.calendar-guest-ensemble-name{flex:1 1 auto;min-width:0;max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}
.calendar-guest-ensemble-count{font-variant-numeric:tabular-nums;font-weight:700;flex:0 0 auto;margin-left:auto;white-space:nowrap;font-size:10px;text-align:right}
@media(max-width:1250px){.calendar-event-guests{align-items:flex-start}.calendar-event-guests .calendar-guest-ensemble-pill{width:auto;max-width:min(100%,320px)}}

.calendar-event .calendar-pill{cursor:pointer;color:var(--text);transition:background .12s ease,border-color .12s ease,box-shadow .12s ease}
.calendar-event .calendar-pill:hover{background:color-mix(in srgb,var(--accent) 12%,var(--surface));border-color:var(--accent)}
.calendar-event .calendar-pill:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.calendar-event .calendar-pill:disabled{cursor:default}
.calendar-event-actions{justify-self:end}
@media(max-width:1250px){
  .calendar-event{grid-template-columns:minmax(0,1fr) 34px;align-items:start}
  .calendar-event-date,.calendar-event-main,.calendar-event-location{grid-column:1}
  .calendar-event-attendance,.calendar-event-guests,.calendar-event-workgroup{grid-column:auto;justify-content:flex-start}
  .calendar-event-attendance .badge{width:auto}
  .calendar-event-actions{grid-column:2;grid-row:1;align-self:start}
  .calendar-event{display:flex;flex-wrap:wrap;gap:7px 12px;position:relative;padding-right:50px}
  .calendar-event-date,.calendar-event-main,.calendar-event-location{flex-basis:100%}
  .calendar-event-actions{position:absolute;right:10px;top:10px}
}
.performance-director-section{border:1px solid var(--line);border-radius:10px;padding:12px;margin:12px 0;background:var(--surface)}
.performance-director-section>header{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:9px}
.performance-director-section h4{margin:0;font-size:13px}
.performance-director-section small{font-size:11px;color:var(--muted)}
.performance-director-list{display:flex;flex-wrap:wrap;gap:8px}
.performance-director-member{display:flex;align-items:center;gap:9px;padding:7px 10px;border:1px solid var(--line);border-radius:8px;background:var(--surface-2)}
.performance-director-member strong{font-size:12px}.performance-director-member .secondary{font-size:11px;padding:4px 7px}
.performance-director-suggestion{margin-top:9px;padding:9px 11px;border:1px dashed color-mix(in srgb,var(--accent) 55%,var(--line));border-radius:8px;background:color-mix(in srgb,var(--accent) 5%,var(--surface));display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.performance-director-suggestion[hidden],.performance-director-controls[hidden]{display:none}
.performance-director-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:10px}
.performance-director-controls label{font-weight:700;font-size:12px}
/* Use the same form control treatment as .form-grid selects, not UA defaults. */
.performance-director-controls select{min-width:170px;min-height:40px;flex:1;max-width:380px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--text);padding:9px 11px;font:inherit;font-size:13px}
.performance-director-controls select:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
@media(max-width:600px){.performance-director-controls select{max-width:none;width:100%}}

/* 0.7.1 r17 — Repetities: uitlijning kaartbediening voor extra repetities.
 * De drie bedieningselementen delen één intrinsieke gridkolom. Daardoor
 * beginnen checkbox/potlood én label op exact dezelfde x-positie, ongeacht
 * de verschillende tekstbreedte van Gaat door, Bardienst en Bewerken. */
.rehearsals-module .rehearsal-card-head-actions{
  display:grid;
  grid-auto-flow:row;
  grid-auto-rows:minmax(22px,auto);
  justify-items:stretch;
  align-items:center;
  gap:4px;
}
.rehearsals-module .rehearsal-card-head-actions>.rehearsal-card-control{
  width:100%;
}

/* 0.7.1-r21 — WhatsApp environment cards, test group and live rehearsal test */

.whatsapp-status-stack{display:grid;justify-items:start;gap:5px}
.whatsapp-status-stack .whatsapp-status-line{display:block;margin:0}
.whatsapp-test-group-chips{display:flex;flex-wrap:wrap;gap:8px;min-height:34px;align-items:center}
.whatsapp-test-group-chip{display:inline-flex;align-items:center;gap:8px;max-width:100%;padding:6px 7px 6px 10px;border:1px solid var(--line);border-radius:999px;background:var(--surface-2)}
.whatsapp-test-group-chip>span{display:grid;min-width:0;line-height:1.2}.whatsapp-test-group-chip strong,.whatsapp-test-group-chip small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whatsapp-test-group-chip small{color:var(--muted);font-size:11px}
.whatsapp-test-group-chip .icon-button{width:26px;height:26px;min-width:26px;border-radius:50%}
.live-test-preflight{display:grid;gap:10px}.live-test-checks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.live-test-check{display:flex;align-items:flex-start;gap:8px;padding:9px 10px;border:1px solid var(--line);border-radius:9px;background:var(--surface-2)}
.live-test-check>span{display:grid;place-items:center;flex:0 0 22px;width:22px;height:22px;border-radius:50%;font-weight:800}.live-test-check.is-ok>span{background:color-mix(in srgb,var(--success, #16803c) 15%,transparent);color:var(--success, #16803c)}.live-test-check.is-error>span{background:color-mix(in srgb,var(--danger, #b42318) 14%,transparent);color:var(--danger, #b42318)}
.live-test-check>div{display:grid;min-width:0}.live-test-check small{color:var(--muted);overflow-wrap:anywhere}.live-test-ready{margin:0;padding:9px 11px;border-radius:9px;background:color-mix(in srgb,var(--success, #16803c) 9%,var(--surface));border:1px solid color-mix(in srgb,var(--success, #16803c) 24%,var(--line))}
.live-test-run-head,.live-test-flow-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.live-test-run-head>div,.live-test-flow-head>div{display:grid;min-width:0}.live-test-run-head small,.live-test-flow-head small{color:var(--muted)}
.live-test-flow{margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}.live-test-flow h3{margin:0;font-size:15px}.live-test-table{width:100%;border-collapse:collapse;margin-top:10px;font-size:13px}.live-test-table th,.live-test-table td{padding:8px 9px;text-align:left;vertical-align:top;border-bottom:1px solid var(--line)}.live-test-table th{white-space:nowrap;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.03em}.live-test-table td:first-child{min-width:150px}.live-test-table td>small{display:block;margin-top:3px;color:var(--muted)}
@media(max-width:760px){.live-test-checks{grid-template-columns:1fr}.live-test-run-head,.live-test-flow-head{flex-direction:column}.live-test-table{min-width:720px}.whatsapp-test-group-chip{max-width:100%}}

/* 0.7.1-r22 — live-test candidate robustness and form alignment */
.rehearsal-bar-timing-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-items:start}
.rehearsal-bar-timing-grid .rehearsal-bar-setting{align-content:start;grid-template-rows:auto auto minmax(2.7em,auto)}
.member-edit-scroll>label,.new-member-scroll>label{align-content:start}
.member-edit-scroll>label>input:not([type="checkbox"]),.member-edit-scroll>label>select,.new-member-scroll>label>input:not([type="checkbox"]),.new-member-scroll>label>select{height:40px;min-height:40px}
@media(max-width:650px){.rehearsal-bar-timing-grid{grid-template-columns:1fr}}

/* 0.7.2 — immediate busy feedback + read-only live-test overlays on rehearsal cards */
button.is-busy{cursor:wait;opacity:.72}
button.is-busy::before{content:"";display:inline-block;width:.85em;height:.85em;margin-right:.5em;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;vertical-align:-.12em;animation:myv-button-spin .75s linear infinite}
@keyframes myv-button-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){button.is-busy::before{animation-duration:1.5s}}

.rehearsals-module .rehearsal-live-test{display:grid;gap:5px;padding:8px 9px;border:1px dashed color-mix(in srgb,var(--accent) 48%,var(--line));border-radius:10px;background:color-mix(in srgb,var(--accent) 5%,var(--surface))}
.rehearsals-module .rehearsal-live-test-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.rehearsals-module .rehearsal-live-test-head .badge{font-size:10px;letter-spacing:.05em}
.rehearsals-module .rehearsal-live-test-line{display:grid;gap:1px;font-size:.79rem;line-height:1.25}
.rehearsals-module .rehearsal-live-test-line strong{font-size:.75rem;text-transform:uppercase;letter-spacing:.025em;color:var(--muted)}
.rehearsals-module .rehearsal-live-test-line span{overflow-wrap:anywhere}
html[data-theme="dark"] .rehearsals-module .rehearsal-live-test{background:color-mix(in srgb,var(--accent) 7%,var(--surface-2))}

/* 0.7.2-r1 — shared attendance cards, purple TEST treatment, aligned live-test grids + mail preview */
.live-test-run-head,.live-test-flow-head{display:grid;grid-template-columns:minmax(0,1fr) max-content;align-items:start;gap:12px}
.live-test-table{table-layout:fixed}
.live-test-table col.live-test-col-member{width:26%}
.live-test-table col.live-test-col-state{width:18%}
.live-test-table col.live-test-col-dispatch{width:18.666%}
.live-test-email-preview{display:grid;gap:12px;margin-top:16px;padding-top:16px;border-top:1px solid var(--line)}
.live-test-email-preview-head{display:grid;grid-template-columns:minmax(0,1fr) max-content;gap:12px;align-items:start}
.live-test-email-preview-head>div{display:grid;gap:2px}.live-test-email-preview-head h3{margin:0;font-size:15px}.live-test-email-preview-head small,.live-test-preview-updated{color:var(--muted);font-size:11px}
.live-test-preview-updated{text-align:right;white-space:nowrap}
.live-test-email-meta{display:grid;grid-template-columns:minmax(220px,.8fr) minmax(0,1.4fr);gap:10px}
.live-test-email-meta>div{display:grid;align-content:start;gap:4px;padding:9px 10px;border:1px solid var(--line);border-radius:9px;background:var(--surface-2)}
.live-test-email-meta strong{font-size:11px;text-transform:uppercase;letter-spacing:.035em;color:var(--muted)}
.live-test-email-meta span{overflow-wrap:anywhere}
.live-test-email-note{margin:0;padding:9px 10px;border-radius:9px;border:1px solid color-mix(in srgb,#7c3aed 28%,var(--line));background:color-mix(in srgb,#7c3aed 6%,var(--surface));color:var(--muted)}
.live-test-email-preview-frame{display:block;width:100%;height:520px;border:1px solid var(--line);border-radius:10px;background:#fff}

.rehearsals-module .rehearsal-attendance-block{display:grid;gap:3px;padding:8px 9px;border:1px solid var(--line);border-radius:10px;background:color-mix(in srgb,var(--surface-2) 62%,var(--surface))}
.rehearsals-module .rehearsal-attendance-block>strong{font-size:.75rem;text-transform:uppercase;letter-spacing:.025em;color:var(--muted)}
.rehearsals-module .rehearsal-attendance-block>span{font-size:.82rem;line-height:1.3}
.rehearsals-module .rehearsal-attendance-block>small{font-size:.74rem}
.rehearsals-module .rehearsal-attendance-block>.secondary{width:100%;margin-top:4px}

.rehearsals-module .rehearsal-live-test{--live-test-accent:#7c3aed;border-color:color-mix(in srgb,var(--live-test-accent) 62%,var(--line));background:color-mix(in srgb,var(--live-test-accent) 7%,var(--surface))}
.rehearsals-module .rehearsal-live-test-head .badge{border-color:color-mix(in srgb,var(--live-test-accent) 42%,var(--line));background:color-mix(in srgb,var(--live-test-accent) 12%,var(--surface));color:var(--live-test-accent)}
.rehearsals-module .rehearsal-live-test-line{gap:3px}
.rehearsals-module .rehearsal-live-test-line strong{color:color-mix(in srgb,var(--live-test-accent) 72%,var(--text))}
.rehearsals-module .rehearsal-test-attendance-button{width:100%;margin-top:3px;border-color:color-mix(in srgb,var(--live-test-accent) 34%,var(--line))}
html[data-theme="dark"] .rehearsals-module .rehearsal-live-test{--live-test-accent:#a78bfa;background:color-mix(in srgb,var(--live-test-accent) 10%,var(--surface-2));border-color:color-mix(in srgb,var(--live-test-accent) 58%,var(--line))}

@media(max-width:760px){
  .live-test-run-head,.live-test-flow-head,.live-test-email-preview-head,.live-test-email-meta{grid-template-columns:1fr}
  .live-test-preview-updated{text-align:left;white-space:normal}
  .live-test-email-preview-frame{height:440px}
}

/* 0.7.3 — realtime entity locks */
.entity-locked{position:relative!important;filter:saturate(.55);opacity:.72;cursor:not-allowed!important}.entity-locked::after{content:"";position:absolute;inset:0;border-radius:inherit;background:repeating-linear-gradient(135deg,transparent 0 8px,color-mix(in srgb,var(--muted) 10%,transparent) 8px 12px);pointer-events:none;z-index:3}.entity-lock-owned{position:relative!important}.entity-lock-badge{position:absolute;z-index:5;right:7px;top:7px;display:inline-flex;max-width:calc(100% - 14px);align-items:center;border:1px solid color-mix(in srgb,var(--muted) 42%,var(--line));border-radius:999px;background:color-mix(in srgb,var(--surface) 92%,var(--muted));color:var(--text);padding:2px 7px;font-size:10px;font-weight:800;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none}.entity-lock-owned>.entity-lock-badge{opacity:.62}.tree-member-row.entity-locked,.lineup-card-member-row.entity-locked{padding-right:130px}.lineup-director-person.entity-locked{padding-right:120px}.entity-relation-return{width:26px;height:26px;min-width:26px;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--text);font-size:18px;line-height:1;display:inline-grid;place-items:center;cursor:pointer}.entity-relation-return:hover{border-color:var(--danger);color:var(--danger)}.entity-relation-return:disabled{opacity:.45;cursor:not-allowed}.member-loan-badge-with-return{display:inline-flex;align-items:center;gap:5px}.member-loan-badge-with-return .member-loan-badge{margin:0}.member-loan-timeline-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center}.instrument-borrower{position:relative}.instrument-borrower .entity-relation-return{position:absolute;right:8px;top:50%;transform:translateY(-50%)}.instrument-borrower.has-return-action{padding-right:42px}
.entity-locked button,.entity-locked input,.entity-locked select,.entity-locked textarea,.entity-locked a{pointer-events:none!important}.entity-locked button,.entity-locked input,.entity-locked select,.entity-locked textarea{opacity:.72}.entity-locked .entity-lock-badge{pointer-events:none!important}

/* 0.7.3 r1 · click-through entity references from Leden */
.member-related-entity-link{min-width:0;cursor:pointer;border-radius:6px;transition:background .14s ease,box-shadow .14s ease}
.member-related-entity-link:hover{background:color-mix(in srgb,var(--accent) 8%,transparent)}
.member-related-entity-link:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.member-loan-timeline-row>.member-related-entity-link{padding:2px 3px;margin:-2px -3px}
.member-metadata-separator{color:var(--muted);font-weight:400}
.member-related-entity-chip{appearance:none;font:inherit;line-height:inherit;cursor:pointer}
.member-related-entity-chip:hover,.member-related-entity-chip:focus-visible{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 16%,transparent)}


/* 0.7.3 r2 — attendance modal, workgroup assignee links and audit form polish */
.rehearsal-overview-dialog[open]{
  display:grid;
  grid-template-rows:auto minmax(0,1fr) auto;
  overflow:hidden;
}
.rehearsal-overview-scroll{
  min-height:0;
  overflow:auto;
  overscroll-behavior:contain;
}
.attendance-overview-actions{
  position:relative;
  z-index:4;
  justify-content:flex-end;
  margin:0;
  padding:12px 17px;
  border-top:1px solid var(--line);
  background:color-mix(in srgb,var(--surface) 96%,var(--surface-2));
  box-shadow:0 -10px 24px color-mix(in srgb,#000 8%,transparent);
}
.rehearsal-overview-dialog .attendance-table select{
  width:100%;
  min-width:150px;
  min-height:36px;
  border:1px solid var(--line);
  border-radius:8px;
  background:var(--surface);
  color:var(--text);
  padding:7px 10px;
  font:inherit;
  line-height:1.25;
  color-scheme:light;
}
.rehearsal-overview-dialog .attendance-table select:hover{
  border-color:color-mix(in srgb,var(--accent) 55%,var(--line));
}
.rehearsal-overview-dialog .attendance-table select:focus-visible{
  outline:3px solid color-mix(in srgb,var(--accent) 28%,transparent);
  outline-offset:1px;
  border-color:var(--accent);
}
html[data-theme="dark"] .rehearsal-overview-dialog .attendance-table select{
  color-scheme:dark;
}
html[data-theme="dark"] .attendance-overview-actions{
  box-shadow:0 -10px 24px rgba(0,0,0,.24);
}

.workgroup-task-assignees{
  display:block!important;
}
.workgroup-task-assignee{
  display:inline;
  border:0;
  background:transparent;
  color:inherit;
  padding:0;
  font:inherit;
  line-height:inherit;
  text-align:left;
  cursor:pointer;
  text-decoration:none;
}
.workgroup-task-assignee:hover{
  color:var(--accent);
  text-decoration:underline;
  text-underline-offset:2px;
}
.workgroup-task-assignee:focus-visible{
  outline:2px solid var(--accent);
  outline-offset:2px;
  border-radius:3px;
}
.workgroup-task-assignee.entity-locked{
  color:var(--muted);
  text-decoration:none;
  cursor:not-allowed;
}
.workgroup-task-assignee .entity-lock-badge{
  margin-left:5px;
}

.audit-filter-grid input,
.audit-filter-grid select{
  width:100%;
  min-height:38px;
  border:1px solid var(--line);
  border-radius:8px;
  background:var(--surface);
  color:var(--text);
  padding:8px 10px;
  font:inherit;
  line-height:1.2;
  color-scheme:light;
  transition:border-color .14s ease,box-shadow .14s ease,background .14s ease;
}
.audit-filter-grid select{padding-right:32px}
.audit-filter-grid input::placeholder{color:var(--muted);opacity:.9}
.audit-filter-grid input:hover,
.audit-filter-grid select:hover{border-color:color-mix(in srgb,var(--accent) 55%,var(--line))}
.audit-filter-grid input:focus-visible,
.audit-filter-grid select:focus-visible{
  outline:3px solid color-mix(in srgb,var(--accent) 28%,transparent);
  outline-offset:1px;
  border-color:var(--accent);
}
html[data-theme="dark"] .audit-filter-grid input,
html[data-theme="dark"] .audit-filter-grid select{
  color-scheme:dark;
  background:var(--surface);
  color:var(--text);
}


/* 0.7.3 r3 — softer attendance rows + canonical member links */
.rehearsal-overview-dialog .attendance-table th{
  border-bottom-color:color-mix(in srgb,var(--line) 72%,transparent);
}
.rehearsal-overview-dialog .attendance-table td{
  border-bottom-color:color-mix(in srgb,var(--line) 42%,transparent);
}
.rehearsal-overview-dialog .attendance-table tbody tr{
  transition:background-color .14s ease;
}
.rehearsal-overview-dialog .attendance-table tbody tr:hover{
  background:color-mix(in srgb,var(--accent) 3.5%,transparent);
}
.rehearsal-overview-dialog .attendance-member-link,
.rehearsal-overview-dialog .attendance-member-static{
  display:grid;
  gap:2px;
  width:100%;
  min-width:0;
  padding:4px 5px;
  margin:-4px -5px;
  border-radius:7px;
  color:inherit;
  text-align:left;
}
.rehearsal-overview-dialog .attendance-member-link{
  appearance:none;
  border:0;
  background:transparent;
  font:inherit;
  cursor:pointer;
  transition:background-color .14s ease,box-shadow .14s ease;
}
.rehearsal-overview-dialog .attendance-member-link:hover{
  background:color-mix(in srgb,var(--accent) 8%,transparent);
}
.rehearsal-overview-dialog .attendance-member-link:focus-visible{
  outline:2px solid var(--accent);
  outline-offset:1px;
  background:color-mix(in srgb,var(--accent) 7%,transparent);
}
.rehearsal-overview-dialog .attendance-member-link strong,
.rehearsal-overview-dialog .attendance-member-static strong{font-weight:800}
.rehearsal-overview-dialog .attendance-member-link small,
.rehearsal-overview-dialog .attendance-member-static small{display:block;color:var(--muted)}
html[data-theme="dark"] .rehearsal-overview-dialog .attendance-table td{
  border-bottom-color:color-mix(in srgb,var(--line) 34%,transparent);
}
html[data-theme="dark"] .rehearsal-overview-dialog .attendance-table tbody tr:hover{
  background:color-mix(in srgb,var(--accent) 6%,transparent);
}

/* 0.7.3 r4 — response-based attendance overview */
.rehearsal-overview-dialog .attendance-response-sections{
  display:grid;
  gap:14px;
}
.rehearsal-overview-dialog .attendance-response-section{
  overflow:hidden;
  border:1px solid color-mix(in srgb,var(--line) 72%,transparent);
  border-radius:12px;
  background:color-mix(in srgb,var(--surface) 97%,var(--surface-2));
}
.rehearsal-overview-dialog .attendance-response-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  padding:10px 12px;
  border-bottom:1px solid color-mix(in srgb,var(--line) 52%,transparent);
  background:color-mix(in srgb,var(--surface-2) 55%,var(--surface));
}
.rehearsal-overview-dialog .attendance-response-head h3{
  margin:0;
  font-size:.94rem;
}
.rehearsal-overview-dialog .attendance-response-head .badge{
  min-width:28px;
  justify-content:center;
}
.rehearsal-overview-dialog .attendance-response-section .table-wrap{
  overflow-x:auto;
}
.rehearsal-overview-dialog .attendance-response-section .attendance-table{
  margin:0;
}
.rehearsal-overview-dialog .attendance-response-section .attendance-table th:first-child,
.rehearsal-overview-dialog .attendance-response-section .attendance-table td:first-child{
  width:36%;
}
.rehearsal-overview-dialog .attendance-response-section .attendance-table th:nth-child(2),
.rehearsal-overview-dialog .attendance-response-section .attendance-table td:nth-child(2),
.rehearsal-overview-dialog .attendance-response-section .attendance-table th:nth-child(3),
.rehearsal-overview-dialog .attendance-response-section .attendance-table td:nth-child(3){
  width:32%;
}
.rehearsal-overview-dialog .attendance-empty-row td{
  color:var(--muted);
  font-style:italic;
  padding:11px 12px;
}
html[data-theme="dark"] .rehearsal-overview-dialog .attendance-response-section{
  background:color-mix(in srgb,var(--surface) 95%,var(--surface-2));
  border-color:color-mix(in srgb,var(--line) 58%,transparent);
}
html[data-theme="dark"] .rehearsal-overview-dialog .attendance-response-head{
  background:color-mix(in srgb,var(--surface-2) 72%,var(--surface));
  border-bottom-color:color-mix(in srgb,var(--line) 45%,transparent);
}
@media(max-width:760px){
  .rehearsal-overview-dialog .attendance-response-section .attendance-table th:first-child,
  .rehearsal-overview-dialog .attendance-response-section .attendance-table td:first-child,
  .rehearsal-overview-dialog .attendance-response-section .attendance-table th:nth-child(2),
  .rehearsal-overview-dialog .attendance-response-section .attendance-table td:nth-child(2),
  .rehearsal-overview-dialog .attendance-response-section .attendance-table th:nth-child(3),
  .rehearsal-overview-dialog .attendance-response-section .attendance-table td:nth-child(3){width:auto}
}

/* 0.7.3-r5 — independent production attendance switch. */
.rehearsals-module .rehearsal-attendance-block.is-disabled{
  border-style:dashed;
  background:color-mix(in srgb,var(--muted) 5%,var(--surface));
}
.rehearsals-module .rehearsal-attendance-block.is-disabled>span{color:var(--muted);font-weight:700}
.rehearsals-module .rehearsal-attendance-block.is-disabled>small{color:var(--muted)}
html[data-theme="dark"] .rehearsals-module .rehearsal-attendance-block.is-disabled{
  background:color-mix(in srgb,var(--surface-2) 72%,var(--surface));
}

/* 0.8.0 — event overview, performance guests and ensemble-aware group editing */
.calendar-category-dot{display:inline-block;width:9px;height:9px;border-radius:999px;background:var(--category-color,#64748B);margin-right:6px;vertical-align:middle}
.calendar-overview-dialog{width:min(980px,calc(100vw - 30px))!important}.event-overview-summary{display:grid;gap:10px;padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--surface-2)}.event-overview-primary{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px}.event-overview-primary>strong{font-size:15px}.event-overview-category{--category-color:#64748B;display:inline-flex;align-items:center;gap:7px;font-weight:800}.event-overview-category>span{width:11px;height:11px;border-radius:999px;background:var(--category-color)}.event-overview-meta{display:flex;flex-wrap:wrap;gap:6px}.event-overview-description{margin:0;color:var(--muted);white-space:pre-wrap}.event-overview-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:10px;margin:14px 0}.event-overview-card{position:relative;display:flex;align-items:center;gap:11px;min-height:74px;padding:12px;border:1px solid var(--line);border-radius:11px;background:var(--surface);color:var(--text);text-align:left;cursor:pointer}.event-overview-card:hover{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 5%,var(--surface))}.event-overview-card>span:last-child{display:grid;gap:3px}.event-overview-card small{color:var(--muted);font-weight:400}.event-overview-card-icon{display:grid;place-items:center;flex:0 0 38px;width:38px;height:38px;border-radius:10px;background:var(--surface-2);font-size:19px;color:var(--accent)}
.event-performance-section{margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}.event-performance-heading h3,.performance-workspace-head h4{margin:0}.event-performance-heading p,.performance-workspace-head p{margin:4px 0 0;color:var(--muted)}.performance-ensemble-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px;margin-top:12px}.performance-ensemble-card{--ensemble-color:#64748B;display:flex;align-items:center;gap:7px;padding:8px;border:1px solid var(--line);border-radius:10px;background:var(--surface)}.performance-ensemble-card.is-selected{border-left:4px solid var(--ensemble-color)}.performance-ensemble-card.is-active{box-shadow:0 0 0 2px color-mix(in srgb,var(--ensemble-color) 28%,transparent)}.performance-ensemble-main{display:flex;align-items:center;gap:9px;min-width:0;flex:1;border:0;background:transparent;color:var(--text);text-align:left;padding:3px;cursor:pointer}.performance-ensemble-main:disabled{cursor:default}.performance-ensemble-main>span:nth-child(2){display:grid;gap:2px;min-width:0}.performance-ensemble-main small{color:var(--muted)}.performance-ensemble-dot{width:11px;height:11px;border-radius:999px;background:var(--ensemble-color);flex:0 0 auto}.performance-workspace{margin-top:14px;border:1px solid var(--line);border-radius:12px;padding:12px;background:color-mix(in srgb,var(--surface-2) 42%,var(--surface))}.performance-workspace-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px}.performance-rehearsal-count{display:grid;gap:5px;min-width:160px;font-size:12px;font-weight:700}.performance-rehearsal-count input{width:100%;border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:8px;padding:8px}.rehearsal-preview{margin-top:10px;padding:10px;border:1px solid var(--line);border-radius:9px;background:var(--surface)}.rehearsal-preview>strong{display:block;margin-bottom:7px;font-size:12px;text-transform:uppercase;color:var(--muted);letter-spacing:.04em}.rehearsal-preview-list{display:flex;flex-wrap:wrap;gap:6px}.rehearsal-preview-list span{padding:4px 7px;border:1px solid var(--line);border-radius:999px;background:var(--surface-2);font-size:11px}.guest-assignment-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:12px}.guest-dropzone{min-height:220px;border:1px solid var(--line);border-radius:11px;background:var(--surface);overflow:hidden;transition:border-color .14s ease,box-shadow .14s ease,background .14s ease}.guest-dropzone.is-drag-over{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 22%,transparent);background:color-mix(in srgb,var(--accent) 4%,var(--surface))}.guest-dropzone>header{padding:10px 11px;border-bottom:1px solid var(--line);background:var(--surface-2)}.guest-dropzone h4{margin:0}.guest-dropzone header small{display:block;color:var(--muted);margin-top:2px}.guest-card-list{display:grid;align-content:start;grid-auto-rows:max-content;gap:7px;padding:9px}.guest-musician-card{--guest-color:#C026D3;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:9px;border:1px solid var(--line);border-left:4px solid var(--guest-color);border-radius:9px;background:var(--surface)}.guest-musician-card[draggable="true"]{cursor:grab}.guest-musician-main{display:grid;gap:3px;min-width:0}.guest-musician-main small{color:var(--muted)}.guest-musician-badge{display:inline-flex;width:max-content;padding:2px 7px;border-radius:999px;border:1px solid color-mix(in srgb,var(--guest-color) 45%,var(--line));background:color-mix(in srgb,var(--guest-color) 11%,var(--surface));color:color-mix(in srgb,var(--guest-color) 78%,var(--text));font-size:10px;font-weight:800}.guest-musician-actions{display:flex;align-items:center;gap:3px}.guest-assign-button{padding:6px 9px}.guest-list-empty{padding:18px 10px;text-align:center;color:var(--muted);font-size:12px}
.support-badge{margin-left:auto;border-color:color-mix(in srgb,var(--accent) 34%,var(--line));background:color-mix(in srgb,var(--accent) 8%,var(--surface));color:var(--accent-strong);font-weight:800}.tree-member-support-add{padding:0 10px 10px}.tree-member-support-add .secondary{width:100%}.notice.info{border-left:3px solid var(--accent)}
html[data-theme="dark"] .guest-musician-badge{color:color-mix(in srgb,var(--guest-color) 45%,white)}
@media(max-width:760px){.guest-assignment-columns{grid-template-columns:1fr}.performance-workspace-head{flex-direction:column}.performance-rehearsal-count{width:100%}.event-overview-actions{grid-template-columns:1fr}}

/* 0.8.0 — calendar category management */
.event-category-admin-list{display:grid;gap:8px}
.event-category-admin-row{display:grid;grid-template-columns:auto auto minmax(180px,1fr) auto auto auto;align-items:center;gap:10px;padding:10px 11px;border:1px solid var(--line);border-radius:9px;background:var(--surface);transition:opacity .14s ease,border-color .14s ease,box-shadow .14s ease}
.event-category-admin-row[draggable="true"]{cursor:grab}.event-category-admin-row.dragging{opacity:.42;border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 16%,transparent)}
.event-category-drag{color:var(--muted);font-weight:900;letter-spacing:-2px;cursor:grab}.event-category-swatch{width:14px;height:14px;border-radius:999px;background:var(--event-category-color,#64748B);box-shadow:0 0 0 1px color-mix(in srgb,var(--event-category-color,#64748B) 58%,var(--line))}
.event-category-admin-main{min-width:0;display:grid;gap:2px}.event-category-admin-main strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.event-category-admin-main small,.event-category-admin-meta small{color:var(--muted);line-height:1.35}.event-category-admin-meta{display:grid;gap:4px;justify-items:start;min-width:112px}.event-category-admin-order{display:flex;gap:3px}.event-category-admin-order .icon-button{width:30px;height:30px;font-size:14px}.event-category-active-setting{align-self:end;display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:42px;padding:0 2px}.event-category-active-setting>span{font-weight:700}.event-category-active-setting input{width:19px;height:19px}
html[data-theme="dark"] .event-category-admin-row{background:color-mix(in srgb,var(--surface) 96%,var(--surface-2))}
@media(max-width:780px){.event-category-admin-row{grid-template-columns:auto auto minmax(0,1fr) auto}.event-category-admin-meta{grid-column:3}.event-category-admin-order{grid-column:4;grid-row:1 / span 2}.event-category-admin-row>[data-category-edit]{grid-column:3 / 5;width:100%}}
.rehearsal-overview-dialog .attendance-member-name{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.rehearsal-overview-dialog .attendance-guest-badge{--guest-color:#C026D3;display:inline-flex;align-items:center;padding:2px 6px;border-radius:999px;border:1px solid color-mix(in srgb,var(--guest-color) 45%,var(--line));background:color-mix(in srgb,var(--guest-color) 10%,var(--surface));color:color-mix(in srgb,var(--guest-color) 76%,var(--text));font-size:9.5px;font-weight:800;line-height:1.25}
html[data-theme="dark"] .rehearsal-overview-dialog .attendance-guest-badge{color:color-mix(in srgb,var(--guest-color) 45%,white)}
/* Align the Groepen support marker with the existing Bezetting member-card treatment. */
.instrument-member-panel .tree-member-identity{display:grid;gap:1px;min-width:0}
.instrument-member-panel .support-badge{margin:0;border:0;background:transparent;color:var(--muted);font-size:9.5px;font-weight:700;line-height:1.2;padding:0}

/* 0.8.1 — rehearsal archive and director availability/replacement */
.rehearsals-module .rehearsal-resource-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px}
.rehearsals-module .rehearsal-director-assigned.is-unavailable{opacity:.72;border-style:dashed;background:color-mix(in srgb,var(--surface-2) 72%,var(--surface))}
.rehearsals-module .rehearsal-director-assigned.is-replacement{border-color:color-mix(in srgb,var(--accent) 48%,var(--line));background:color-mix(in srgb,var(--accent) 6%,var(--surface))}
.rehearsals-module .rehearsal-director-state{display:inline;margin-left:5px;font-size:9px;font-weight:800;line-height:1.2;text-transform:none;white-space:nowrap}
.rehearsals-module .rehearsal-director-state.is-unavailable{color:var(--muted)}
.rehearsals-module .rehearsal-director-state.is-replacement{color:var(--accent-strong,var(--accent))}
.rehearsal-archive-dialog{min-width:0}
.rehearsal-archive-body{display:grid;gap:14px;max-height:min(72vh,760px);overflow:auto}
.rehearsal-archive-filters{display:grid;grid-template-columns:repeat(2,minmax(180px,280px));gap:10px;align-items:end}
.rehearsal-archive-filters label{display:grid;gap:5px;font-weight:700}
.rehearsal-archive-table-wrap{border:1px solid var(--line);border-radius:10px;background:var(--surface)}
.rehearsal-archive-table{min-width:1060px}
.rehearsal-archive-table td:first-child{white-space:nowrap}.rehearsal-archive-table td:first-child small{display:block;margin-top:3px;color:var(--muted)}
.rehearsal-archive-table tr.is-cancelled{opacity:.72}
.rehearsal-archive-table .badge.warning{border-color:color-mix(in srgb,#b45309 45%,var(--line));background:color-mix(in srgb,#b45309 10%,var(--surface));color:color-mix(in srgb,#b45309 80%,var(--text))}
html[data-theme="dark"] .rehearsal-archive-table-wrap{background:var(--surface)}
@media(max-width:760px){.rehearsal-archive-filters{grid-template-columns:1fr}.rehearsals-module .rehearsal-resource-actions{justify-content:flex-start}}

/* 0.8.2 – Gastmuzikanten are a permanent Bezetting pool, visually distinct from official ensemble membership. */
.lineup-guest-pool-node{border-color:color-mix(in srgb,var(--ensemble-color) 70%,var(--line));background:color-mix(in srgb,var(--ensemble-color) 7%,var(--surface))}
.guest-musician-pool-badge{display:inline-flex;align-items:center;margin-left:7px;padding:2px 7px;border:1px solid color-mix(in srgb,var(--ensemble-color) 50%,var(--line));border-radius:999px;background:color-mix(in srgb,var(--ensemble-color) 12%,var(--surface));color:var(--text);font-size:9px;font-weight:800;line-height:1.25;white-space:nowrap}
.guest-musician-inline-badge{color:var(--muted);font-size:9.5px!important;font-weight:750!important;line-height:1.2}


/* 0.8.3 — event-context Bezetting + guest overlays. */
.lineup-context-controlbar{align-items:center;margin-bottom:10px}.lineup-context-primary{display:flex;align-items:center;gap:12px;min-width:0;flex-wrap:wrap}.lineup-context-field{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:800;color:var(--muted)}.lineup-context-field select{min-width:250px;max-width:min(520px,70vw)}.lineup-context-info{display:flex;align-items:center;gap:8px;min-width:0;flex-wrap:wrap}.lineup-context-info strong{font-size:12px}.lineup-context-info small{color:var(--muted)}.lineup-context-badge{--context-color:#64748B;display:inline-flex;align-items:center;border:1px solid color-mix(in srgb,var(--context-color) 45%,var(--line));border-radius:999px;padding:3px 7px;background:color-mix(in srgb,var(--context-color) 10%,var(--surface));color:color-mix(in srgb,var(--context-color) 82%,var(--text));font-size:10px;font-weight:800}.lineup-card-member-event-guest{border-left:3px solid var(--guest-color,#C026D3);padding-left:7px}.guest-musician-inline-badge{display:inline-flex!important;width:max-content;margin-top:2px;padding:2px 6px;border:1px solid color-mix(in srgb,var(--guest-color,#C026D3) 45%,var(--line));border-radius:999px;background:color-mix(in srgb,var(--guest-color,#C026D3) 10%,var(--surface));color:color-mix(in srgb,var(--guest-color,#C026D3) 82%,var(--text))!important;font-size:9.5px!important;font-weight:800!important;line-height:1.2}.lineup-card-member-event-guest .lineup-card-member-open{cursor:pointer}.lineup-card-member-event-guest .lineup-card-member-name{font-weight:800}
html[data-theme="dark"] .lineup-context-badge,html[data-theme="dark"] .guest-musician-inline-badge{color:color-mix(in srgb,var(--context-color,var(--guest-color,#C026D3)) 45%,white)!important}
@media(max-width:850px){.admin-user-row{grid-template-columns:1fr auto}.admin-user-roles{grid-column:1/-1}.admin-user-row>.status-badge,.admin-user-row>.badge{justify-self:start}.admin-user-row>button{justify-self:start}.lineup-context-primary{align-items:stretch;flex-direction:column}.lineup-context-field{align-items:stretch;flex-direction:column}.lineup-context-field select{min-width:0;max-width:none;width:100%}}


/* 0.8.3-r2 — event-specific guest instruments, mismatch visibility and profile conflict handling. */
.lineup-member-badges{display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.guest-instrument-mismatch-badge{display:inline-flex;width:max-content;padding:2px 6px;border:1px solid color-mix(in srgb,var(--warning,#D97706) 48%,var(--line));border-radius:999px;background:color-mix(in srgb,var(--warning,#D97706) 10%,var(--surface));color:color-mix(in srgb,var(--warning,#D97706) 82%,var(--text));font-size:9.5px;font-weight:800;line-height:1.2}
.guest-musician-main>.guest-instrument-mismatch-badge{margin-top:1px}
.guest-instrument-conflict-list{display:grid;gap:8px;max-height:min(42vh,360px);overflow:auto;margin:10px 0 12px;padding-right:2px}
.guest-instrument-conflict-row{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:9px;padding:9px 10px;border:1px solid var(--line);border-radius:9px;background:var(--surface)}
.guest-instrument-conflict-row input{margin-top:3px}
.guest-instrument-conflict-row span{display:grid;gap:2px;min-width:0}
.guest-instrument-conflict-row small{color:var(--muted);line-height:1.35}
html[data-theme="dark"] .guest-instrument-mismatch-badge{color:color-mix(in srgb,var(--warning,#D97706) 46%,white)}

/* 0.9.0 — Verenigingsgegevens & bestuursfuncties */
.association-logo-settings{display:grid;grid-template-columns:minmax(180px,320px) 1fr;gap:1rem;align-items:center;padding:1rem;border:1px solid var(--line);border-radius:12px;background:var(--surface-soft,#f7fafc)}
.association-logo-preview{min-height:104px;display:flex;align-items:center;justify-content:center;padding:.75rem;border:1px dashed var(--line);border-radius:10px;background:var(--surface,#fff)}
.association-logo-preview img{max-width:100%;max-height:110px;object-fit:contain}
.association-logo-actions{display:flex;gap:.65rem;align-items:center;flex-wrap:wrap}.association-logo-actions small{flex-basis:100%;color:var(--muted)}
.file-button{display:inline-flex;align-items:center;justify-content:center;cursor:pointer}
.association-subsection{padding-top:.5rem;border-top:1px solid var(--line)}.association-subsection h3{margin:0 0 .25rem}
.association-manual-address{padding:.8rem;border:1px solid var(--line);border-radius:10px;background:var(--surface-soft,#f7fafc)}
.association-resolved-address{display:grid;gap:.25rem;padding:.75rem .9rem;border-left:3px solid var(--accent,#0f8b8d);border-radius:8px;background:var(--surface-soft,#f7fafc)}
.association-resolved-address span{color:var(--muted)}
.board-functions-admin-list{display:grid;gap:.65rem}.board-function-admin-row{display:grid;grid-template-columns:minmax(180px,1.5fr) minmax(150px,1fr) 100px 90px minmax(180px,1fr) auto;gap:.65rem;align-items:end;padding:.75rem;border:1px solid var(--line);border-radius:10px;background:var(--surface-soft,#f7fafc)}
.board-function-admin-row label{margin:0}
.board-function-add-form{display:grid;grid-template-columns:minmax(220px,2fr) minmax(170px,1fr) 110px auto;gap:.75rem;align-items:end}
.board-function-chip-list{display:flex;gap:.45rem;flex-wrap:wrap}.board-function-editor{display:grid;gap:.55rem}.board-function-option{display:grid;grid-template-columns:minmax(220px,1fr) minmax(260px,1fr);gap:.75rem;align-items:center;padding:.7rem .8rem;border:1px solid var(--line);border-radius:9px;background:var(--surface-soft,#f7fafc)}.board-function-option.is-disabled{opacity:.7}.board-function-option .checkbox-label span{display:grid;gap:.1rem}.board-function-option small{color:var(--muted);font-weight:400}.board-function-export-address{justify-self:start}.board-function-export-current{margin:.25rem 0 0}
@media(max-width:1050px){.board-function-admin-row{grid-template-columns:1fr 1fr 100px}.board-function-add-form{grid-template-columns:1fr 1fr}.association-logo-settings{grid-template-columns:1fr}.board-function-option{grid-template-columns:1fr}}
@media(max-width:680px){.board-function-admin-row,.board-function-add-form{grid-template-columns:1fr}.association-logo-actions{align-items:stretch}.association-logo-actions>*{width:100%}}
[data-theme="dark"] .association-logo-preview,[data-theme="dark"] .association-manual-address,[data-theme="dark"] .association-resolved-address,[data-theme="dark"] .board-function-admin-row,[data-theme="dark"] .board-function-option{background:var(--surface-soft,#17252b)}

/* 0.9.1 — Verenigingsgegevens as a native Beheer workspace. */
.association-profile-card,.board-functions-panel{min-width:0}
.association-profile-form{align-items:start}
.association-logo-settings{display:grid;grid-template-columns:minmax(210px,320px) minmax(0,1fr);gap:16px;align-items:center;padding:14px;border:1px solid var(--line);border-radius:11px;background:var(--surface-2)}
.association-logo-preview{min-height:112px;display:flex;align-items:center;justify-content:center;padding:10px;border:1px dashed color-mix(in srgb,var(--muted) 45%,var(--line));border-radius:9px;background:var(--surface);overflow:hidden}
.association-logo-preview img{display:block;max-width:100%;max-height:118px;object-fit:contain}
.association-logo-actions{display:grid;gap:8px;align-content:center;min-width:0}.association-logo-actions small{color:var(--muted);line-height:1.45}
.association-logo-button-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.association-logo-button{box-sizing:border-box!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;min-height:38px!important;height:38px!important;margin:0!important;padding:9px 13px!important;line-height:18px!important;border-radius:8px!important;white-space:nowrap}
.file-button{cursor:pointer}.file-button input[hidden]{display:none!important}
.association-subsection{padding-top:10px;border-top:1px solid var(--line)}.association-subsection h3{margin:0 0 3px;font-size:14px}.association-subsection p{margin:0}
.association-manual-address{padding:12px;border:1px solid var(--line);border-radius:9px;background:var(--surface-2)}
.association-resolved-address{display:grid;gap:3px;padding:10px 12px;border-left:3px solid var(--accent);border-radius:0 9px 9px 0;background:var(--surface-2)}.association-resolved-address span{color:var(--muted);line-height:1.4}
.board-functions-panel .section-toolbar{margin-bottom:10px}
.board-function-column-head,.board-function-admin-row{display:grid;grid-template-columns:26px minmax(170px,1.05fr) minmax(260px,1.55fr) minmax(165px,.9fr) 82px 72px;gap:10px;align-items:center}
.board-function-column-head{padding:0 11px 6px;color:var(--muted);font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.045em}
.board-functions-admin-list{display:grid;gap:7px;min-width:0;transition:opacity .12s ease}.board-functions-admin-list.is-saving-order{opacity:.7;pointer-events:none}
.board-function-admin-row{padding:10px 11px;border:1px solid var(--line);border-radius:9px;background:var(--surface);box-shadow:0 2px 7px rgba(0,0,0,.03);transition:border-color .12s ease,background .12s ease,opacity .12s ease}
.board-function-admin-row:hover{border-color:color-mix(in srgb,var(--accent) 38%,var(--line))}.board-function-admin-row.is-inactive{opacity:.68}.board-function-admin-row.is-saving{border-color:color-mix(in srgb,var(--accent) 56%,var(--line));background:color-mix(in srgb,var(--accent) 3%,var(--surface))}.board-function-admin-row.has-save-error{border-color:color-mix(in srgb,var(--danger) 55%,var(--line))}.board-function-admin-row.dragging{opacity:.35}
.board-function-admin-row label{margin:0;min-width:0}.board-function-admin-row input[type="text"],.board-function-admin-row input:not([type]),.board-function-admin-row select,.board-function-name-field input{width:100%;min-width:0;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--text);padding:8px 9px;min-height:36px}
.board-function-admin-row input:focus,.board-function-admin-row select:focus{outline:2px solid color-mix(in srgb,var(--accent) 35%,transparent);outline-offset:1px;border-color:var(--accent)}
.board-function-drag{display:grid;place-items:center;width:24px;height:32px;border-radius:6px;color:var(--muted);cursor:grab;user-select:none;font-weight:900;letter-spacing:-2px}.board-function-drag:hover{color:var(--accent);background:var(--surface-2)}.board-function-drag:active{cursor:grabbing}
.board-function-holder-cell{min-width:0}.board-function-holder-field{display:block}.board-function-holder-multi{display:grid;gap:6px;min-width:0}.board-function-holder-chips{display:flex;gap:5px;flex-wrap:wrap;align-items:center;min-height:22px}.board-function-holder-chip{display:inline-flex;align-items:center;gap:5px;max-width:100%;padding:3px 7px;border:1px solid color-mix(in srgb,var(--accent) 35%,var(--line));border-radius:999px;background:color-mix(in srgb,var(--accent) 8%,var(--surface));color:var(--text);font-size:11px;font-weight:700}.board-function-holder-chip button{display:grid;place-items:center;width:16px;height:16px;padding:0;border:0;border-radius:999px;background:transparent;color:var(--muted);cursor:pointer;font:900 13px/1 Arial,sans-serif}.board-function-holder-chip button:hover{background:color-mix(in srgb,var(--danger) 12%,transparent);color:var(--danger)}
.board-function-active-toggle{display:flex!important;align-items:center;gap:7px!important;font-size:12px;font-weight:700}.board-function-active-toggle input{width:16px!important;height:16px!important;margin:0;accent-color:var(--accent)}
.board-function-save-state{min-width:0;color:var(--muted);font-size:10.5px;text-align:right}.board-function-save-state[data-state="saved"]{color:var(--ok)}.board-function-save-state[data-state="error"]{color:var(--danger)}
.board-function-mobile-label{display:none}
.board-function-add-form{display:grid;grid-template-columns:minmax(240px,1.4fr) minmax(180px,.8fr) auto;gap:10px;align-items:end;padding-top:12px;border-top:1px solid var(--line)}.board-function-add-form label{display:grid;gap:5px;font-size:12px;font-weight:700}.board-function-add-form .dialog-actions{margin:0}
@media(max-width:1100px){.board-function-column-head{display:none}.board-function-admin-row{grid-template-columns:26px minmax(180px,1fr) minmax(220px,1.3fr) minmax(160px,.8fr);align-items:end}.board-function-save-state{grid-column:4}.association-logo-settings{grid-template-columns:minmax(180px,260px) minmax(0,1fr)}}
@media(max-width:760px){.association-logo-settings{grid-template-columns:1fr}.association-logo-button-row{align-items:stretch}.association-logo-button{flex:1 1 150px}.board-function-admin-row{grid-template-columns:24px minmax(0,1fr)}.board-function-admin-row>*:not(.board-function-drag){grid-column:2}.board-function-save-state{text-align:left}.board-function-add-form{grid-template-columns:1fr}.board-function-add-form .dialog-actions{justify-content:stretch}.board-function-add-form button{width:100%}}


/* 0.9.2 — Bestuursfuncties: controls stay aligned; multi-holder chips wrap below the input. */
.board-function-column-head,.board-function-admin-row,.board-function-add-form{grid-template-columns:26px minmax(170px,1.05fr) minmax(260px,1.55fr) minmax(165px,.9fr) 82px 124px;gap:10px;align-items:start}
.board-function-admin-row{position:relative}
.board-function-admin-row>label,.board-function-admin-row>.board-function-holder-cell,.board-function-admin-row>.board-function-active-toggle,.board-function-admin-row>.board-function-save-state{align-self:start}
.board-function-holder-multi{display:grid;grid-template-rows:auto auto;gap:6px;min-width:0}
.board-function-holder-multi>select,.board-function-holder-field>select{width:100%;min-height:36px}
.board-function-holder-chips{order:2;display:flex;gap:5px;flex-wrap:wrap;align-items:center;min-height:0}
.board-function-save-state{padding-top:9px;min-height:36px}
.board-function-add-form{padding:10px 11px;margin-top:10px;border:1px dashed color-mix(in srgb,var(--accent) 35%,var(--line));border-radius:9px;background:color-mix(in srgb,var(--accent) 2%,var(--surface))}
.board-function-add-form label{display:grid;gap:4px;margin:0;min-width:0;font-size:12px;font-weight:700}
.board-function-add-form input,.board-function-add-form select{width:100%;min-width:0;min-height:36px;padding:8px 9px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--text)}
.board-function-add-form input:focus,.board-function-add-form select:focus{outline:2px solid color-mix(in srgb,var(--accent) 35%,transparent);outline-offset:1px;border-color:var(--accent)}
.board-function-add-spacer{width:24px;height:32px}
.board-function-add-action{align-self:start;display:flex;align-items:flex-start;justify-content:flex-end;min-height:36px}
.board-function-add-action button{min-height:36px;white-space:nowrap}
@media(max-width:1100px){.board-function-admin-row,.board-function-add-form{grid-template-columns:26px minmax(180px,1fr) minmax(220px,1.3fr) minmax(160px,.8fr)}.board-function-active-toggle{grid-column:2}.board-function-save-state,.board-function-add-action{grid-column:4}.board-function-add-form .board-function-active-toggle{grid-column:2}.board-function-add-spacer{grid-row:1/3}.board-function-mobile-label{display:block;margin-bottom:4px;color:var(--muted);font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.04em}}
@media(max-width:760px){.board-function-admin-row,.board-function-add-form{grid-template-columns:24px minmax(0,1fr)}.board-function-admin-row>*:not(.board-function-drag),.board-function-add-form>*:not(.board-function-add-spacer){grid-column:2}.board-function-add-spacer{grid-column:1;grid-row:1}.board-function-save-state,.board-function-add-action{text-align:left;justify-content:stretch}.board-function-add-action button{width:100%}}

/* 0.9.2.3 — Bestuur uses the shared topology canvas/zoom/edge machinery. */
.lineup-board-tab{font-weight:850}
.lineup-board-card{--board-color:#64748B;min-width:0;border-top:3px solid var(--board-color)}
.board-topology-warning{margin:10px 12px 0;padding:9px 11px;border:1px solid color-mix(in srgb,#d99a1d 45%,var(--line));border-radius:8px;background:color-mix(in srgb,#d99a1d 8%,var(--surface));color:var(--text);font-size:12px;font-weight:750}
.lineup-board-card .board-topology-scroll{background:linear-gradient(180deg,color-mix(in srgb,var(--board-color) 3%,var(--surface-2)),var(--surface-2))}
.board-topology{background:none!important}
.board-topology-person{width:250px;min-height:90px;border:1px solid color-mix(in srgb,var(--board-color) 42%,var(--line));border-radius:11px;background:var(--surface);box-shadow:0 5px 18px color-mix(in srgb,#000 8%,transparent);overflow:hidden}
.board-topology-person.is-root{width:280px;min-height:102px;border-width:2px;box-shadow:0 7px 22px color-mix(in srgb,var(--board-color) 12%,transparent)}
.board-topology-member-open{display:grid;gap:9px;width:100%;min-height:100%;padding:15px;border:0;background:transparent;color:var(--text);text-align:center;cursor:pointer}
.board-topology-member-open:hover,.board-topology-member-open:focus-visible{outline:none;background:color-mix(in srgb,var(--board-color) 7%,var(--surface))}
.board-topology-member-open strong{display:block;width:100%;padding:0 40px;box-sizing:border-box;text-align:center;font-size:14px;line-height:1.25}
.board-topology-person.is-root .board-topology-member-open strong{font-size:16px}
.board-topology-functions{display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:5px;width:100%}
.board-topology-function{display:inline-flex;align-items:center;width:max-content;max-width:100%;padding:3px 7px;border:1px solid color-mix(in srgb,var(--board-color) 36%,var(--line));border-radius:999px;background:color-mix(in srgb,var(--board-color) 8%,var(--surface));color:color-mix(in srgb,var(--board-color) 78%,var(--text));font-size:10px;font-weight:800;line-height:1.2}
.board-topology-placeholder{display:grid;gap:5px;align-content:center;padding:15px;text-align:center;border-style:dashed;color:var(--muted)}
.board-topology-placeholder strong{color:var(--text)}
.board-topology-placeholder span{font-size:11px;line-height:1.4}
.board-topology-person>.lineup-node-actions{position:absolute;right:8px;top:12px;z-index:7;margin:0;gap:3px;align-items:center}
.board-topology-person.is-root>.lineup-node-actions{top:13px}
.board-topology-person>.lineup-node-actions .lineup-mail-entity,.board-topology-person>.lineup-node-actions .lineup-bulk-edit-entity{width:24px;height:24px;flex-basis:24px}
.board-topology-person>.lineup-node-actions .lineup-select-control{margin:0}
.board-topology-group-actions{display:flex;align-items:center;justify-content:flex-end;gap:4px}
.board-topology-group-actions .lineup-node-actions{margin:0}

/* Bestuursfuncties: keep Actief aligned with the first-line inputs even when chips wrap. */
.board-function-admin-row>.board-function-active-toggle,
.board-function-add-form>.board-function-active-toggle{min-height:36px;align-items:center!important}


/* 0.9.3.5 navigation drag/drop corrections */
.lineup-ensemble-tab-placeholder{flex:0 0 64px;min-height:31px;display:grid;place-items:center;border:2px dashed var(--accent);border-radius:7px;color:var(--accent);font-size:10px;font-weight:800;background:color-mix(in srgb,var(--accent) 6%,transparent)}

/* PDF template editor ------------------------------------------------------ */
.pdf-template-panel{min-width:0}.pdf-template-subtabs{margin:0 0 14px}.pdf-template-workspace{display:grid;grid-template-columns:minmax(360px,.9fr) minmax(520px,1.35fr);gap:14px;align-items:start}.pdf-template-settings,.pdf-template-preview{min-width:0;padding:14px;border:1px solid var(--line);border-radius:11px;background:var(--surface-2);box-shadow:none}.pdf-template-pane-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}.pdf-template-pane-head h3{margin:0;font-size:15px}.pdf-template-pane-head p{margin:4px 0 0;line-height:1.45}.pdf-template-field-groups{display:grid;gap:12px}.pdf-setting-group{border:1px solid var(--line);border-radius:10px;background:var(--surface);overflow:hidden}.pdf-setting-group-head{padding:10px 12px;border-bottom:1px solid var(--line);background:var(--surface-2)}.pdf-setting-group-head h4{margin:0;font-size:13px}.pdf-setting-group-head p{margin:4px 0 0;font-size:11px;line-height:1.45}.pdf-settings-list{padding:0 12px}.pdf-setting-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(190px,245px);gap:18px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line);font-size:12px}.pdf-setting-row:last-child{border-bottom:0}.pdf-setting-row>span:first-child{display:grid;gap:3px}.pdf-setting-row strong{font-size:12px}.pdf-setting-row small{color:var(--muted);font-weight:400;line-height:1.4}.pdf-setting-row>select,.pdf-setting-row>input,.pdf-number-control input,.pdf-color-control input[type="text"]{width:100%;min-height:38px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--text);padding:8px 9px}.pdf-number-control{display:grid;grid-template-columns:minmax(0,1fr) 42px;align-items:center}.pdf-number-control input{border-radius:8px 0 0 8px}.pdf-number-control>span{display:grid;place-items:center;align-self:stretch;border:1px solid var(--line);border-left:0;border-radius:0 8px 8px 0;background:var(--surface-2);color:var(--muted);font-size:11px;font-weight:800}.pdf-color-control{display:grid;grid-template-columns:44px minmax(0,1fr);gap:7px}.pdf-color-control input[type="color"]{width:44px;height:38px;border:1px solid var(--line);border-radius:8px;background:var(--surface);padding:4px;cursor:pointer}.pdf-toggle-control{justify-self:end;position:relative;display:inline-flex;align-items:center;width:46px;height:26px}.pdf-toggle-control input{position:absolute;inset:0;width:100%!important;height:100%;margin:0;opacity:0;cursor:pointer;z-index:2}.pdf-toggle-control>span{position:absolute;inset:0;border:1px solid var(--line);border-radius:999px;background:var(--surface-2);transition:background .15s ease,border-color .15s ease}.pdf-toggle-control>span::after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:var(--muted);box-shadow:0 1px 2px rgba(0,0,0,.18);transition:transform .15s ease,background .15s ease}.pdf-toggle-control input:checked+span{border-color:color-mix(in srgb,var(--accent) 72%,var(--line));background:color-mix(in srgb,var(--accent) 22%,var(--surface))}.pdf-toggle-control input:checked+span::after{transform:translateX(20px);background:var(--accent)}.pdf-toggle-control input:focus-visible+span{outline:2px solid color-mix(in srgb,var(--accent) 38%,transparent);outline-offset:2px}.pdf-template-actions{margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}.pdf-template-preview-status{min-height:20px;margin-bottom:8px;font-size:11px}.pdf-template-preview-canvas{min-height:690px;padding:12px;border:1px solid var(--line);border-radius:10px;background:#DDE2E8;overflow:hidden}.pdf-template-preview-canvas iframe{display:block;width:100%;height:666px;border:0;border-radius:5px;background:#fff}.pdf-column-distribution{position:relative;height:58px;margin:10px 12px 4px;border:1px solid var(--line);border-radius:9px;background:var(--surface-2);overflow:visible}.pdf-column-segments{display:flex;width:100%;height:100%;overflow:hidden;border-radius:8px}.pdf-column-segment{display:grid;place-items:center;align-content:center;gap:1px;min-width:0;padding:4px;border-right:1px solid var(--line);background:color-mix(in srgb,var(--accent) 7%,var(--surface));color:var(--text);text-align:center;overflow:hidden}.pdf-column-segment:last-child{border-right:0}.pdf-column-segment b{max-width:100%;font-size:9px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.pdf-column-segment small{font-size:9px;color:var(--muted)}.pdf-column-divider{position:absolute;z-index:3;top:-1px;bottom:-1px;width:10px;margin-left:-5px;border:0;background:transparent;cursor:col-resize}.pdf-column-divider::after{content:"";position:absolute;left:4px;top:7px;bottom:7px;width:2px;border-radius:2px;background:color-mix(in srgb,var(--accent) 70%,var(--line));opacity:.55}.pdf-column-divider:hover::after,.pdf-column-divider.is-dragging::after{width:3px;left:3.5px;opacity:1}.pdf-column-summary{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:2px 12px 8px;color:var(--muted);font-size:10.5px}.pdf-column-summary strong{color:var(--text)}.pdf-column-summary strong.is-invalid{color:var(--danger)}
html[data-theme="dark"] .pdf-template-preview-canvas{background:#172127}.pdf-template-settings .status-badge{white-space:nowrap}
@media(max-width:1180px){.pdf-template-workspace{grid-template-columns:1fr}.pdf-template-preview-canvas{min-height:620px}.pdf-template-preview-canvas iframe{height:596px}}
@media(max-width:700px){.pdf-template-settings,.pdf-template-preview{padding:10px}.pdf-setting-row{grid-template-columns:1fr;gap:6px}.pdf-template-pane-head{flex-direction:column}.pdf-template-preview-canvas{padding:6px;min-height:520px}.pdf-template-preview-canvas iframe{height:506px}.pdf-column-segment b{display:none}.pdf-column-summary{align-items:flex-start;flex-direction:column}.pdf-template-actions{align-items:stretch}.pdf-template-actions button{flex:1}}
.lineup-empty-branches-toggle{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 7px;border-radius:6px;color:var(--text);font-size:12px;font-weight:700;white-space:nowrap;cursor:pointer}
.lineup-empty-branches-toggle input{margin:0;accent-color:var(--accent)}
@media(max-width:720px){.lineup-empty-branches-toggle span{display:none}.lineup-empty-branches-toggle{padding:0 5px}}

/* 0.9.4.5 — environment-aware WhatsApp template testing */
.whatsapp-template-environment-card{padding:10px 12px}
.whatsapp-template-environment-copy{display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0}
.whatsapp-template-environment-copy>div{display:grid;gap:2px;min-width:0}.whatsapp-template-environment-copy small{overflow-wrap:anywhere}
.whatsapp-template-environment-tabs{flex:0 0 auto;width:auto;min-width:0}
.whatsapp-template-test-summary-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:4px}
.whatsapp-template-test-summary-head strong{overflow-wrap:anywhere}
.attendance-template-test-buttons{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:8px}
@media(max-width:620px){.whatsapp-template-environment-copy{align-items:flex-start;flex-direction:column}.whatsapp-template-environment-tabs{width:100%}.whatsapp-template-environment-tabs .admin-tab{flex:1 1 0}.attendance-template-test-buttons .attendance-answer-button{flex:1 1 auto}}

/* 0.9.4.5 — compact attendance overview/reporting. */
.member-attendance-entry{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.member-attendance-entry small{color:var(--muted)}
.member-attendance-dialog[open],.ensemble-attendance-dialog[open]{display:flex;flex-direction:column;max-height:min(88vh,900px)}
.member-attendance-body,.ensemble-attendance-body{overflow:auto;min-height:0}
.attendance-overview-filters{display:flex;gap:10px;align-items:end;flex-wrap:wrap;margin-bottom:12px}.attendance-overview-filters label{display:grid;gap:4px;min-width:170px;color:var(--muted);font-size:.78rem}.attendance-overview-filters select,.attendance-overview-filters input{min-height:38px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--text);padding:7px 9px}
.member-attendance-table .attendance-state-column,.member-attendance-table .attendance-state-cell{text-align:center;white-space:nowrap}.member-attendance-table td:first-child{white-space:nowrap}.member-attendance-event-link{border:0;background:transparent;color:var(--text);font:inherit;font-weight:700;padding:0;text-align:left;cursor:pointer}.member-attendance-event-link:hover{color:var(--accent);text-decoration:underline}.member-attendance-event-link:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:3px}
.attendance-state-mark{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:999px;font-weight:900;line-height:1}.attendance-state-yes{background:color-mix(in srgb,var(--ok) 14%,var(--surface));color:var(--ok)}.attendance-state-no{background:color-mix(in srgb,var(--danger) 13%,var(--surface));color:var(--danger)}.attendance-state-unanswered{background:color-mix(in srgb,#d69e2e 16%,var(--surface));color:#946200}.attendance-state-empty{color:var(--muted)}
.attendance-matrix-legend{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin:0 0 10px;color:var(--muted);font-size:.8rem}.attendance-matrix-legend span{display:inline-flex;align-items:center;gap:5px}.attendance-matrix-legend .attendance-state-mark{width:20px;height:20px}
.attendance-matrix-wrap{overflow:auto;max-width:100%;border:1px solid var(--line);border-radius:10px;background:var(--surface)}.attendance-matrix{border-collapse:separate;border-spacing:0;min-width:max-content;width:100%;font-size:.82rem}.attendance-matrix th,.attendance-matrix td{padding:8px 9px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);text-align:center;background:var(--surface);white-space:nowrap}.attendance-matrix thead th{position:sticky;top:0;z-index:3;background:var(--surface-2);font-weight:800}.attendance-matrix .attendance-member-sticky{position:sticky;left:0;z-index:2;text-align:left;min-width:190px;max-width:260px;background:var(--surface)}.attendance-matrix thead .attendance-member-sticky{z-index:5;background:var(--surface-2)}.attendance-matrix .attendance-date-column{min-width:96px}.attendance-date-main{display:block}.attendance-date-director{display:block;max-width:130px;margin-top:3px;overflow:hidden;text-overflow:ellipsis;color:var(--muted);font-size:.68rem;font-weight:700}.attendance-date-column.is-planned .attendance-date-main{color:var(--muted)}.attendance-matrix .attendance-state-cell{min-width:58px}.attendance-matrix .attendance-summary-cell{min-width:48px;font-weight:700}.attendance-matrix-total th,.attendance-matrix-total td{font-weight:800;background:var(--surface-2)}.attendance-matrix-total .attendance-member-sticky{background:var(--surface-2)}
@media(max-width:760px){.attendance-overview-filters label{min-width:140px;flex:1}.member-attendance-table{min-width:720px}.attendance-matrix .attendance-member-sticky{min-width:150px}}

/* 0.9.4.9 — shared attendance hub */
.attendance-module{gap:0}.attendance-workspace-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex:0 0 auto;padding-bottom:12px}.attendance-workspace-header h1{margin:2px 0 4px;font-size:24px}.attendance-workspace-header p{margin:0}.attendance-view-nav{display:flex;align-items:center;gap:4px;flex:0 0 auto;min-height:42px;padding:3px 4px;border:1px solid var(--line);border-radius:10px 10px 0 0;background:var(--surface);overflow-x:auto}.attendance-view-nav button{flex:0 0 auto;min-height:34px;padding:7px 12px;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--muted);font-weight:800;cursor:pointer;white-space:nowrap}.attendance-view-nav button:hover{color:var(--text);background:var(--surface-2)}.attendance-view-nav button.active{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 32%,var(--line));background:color-mix(in srgb,var(--accent) 10%,var(--surface))}.attendance-filterbar{display:flex;align-items:end;gap:9px;flex:0 0 auto;min-height:58px;padding:9px 10px;border:1px solid var(--line);border-top:0;background:var(--surface-2);overflow-x:auto;scrollbar-width:thin}.attendance-filterbar[hidden]{display:none!important}.attendance-filterbar label{display:grid;gap:3px;flex:0 0 auto;min-width:145px;color:var(--muted);font-size:.75rem;font-weight:700;white-space:nowrap}.attendance-filterbar select,.attendance-filterbar input{height:36px;min-width:145px;padding:7px 9px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--text)}.attendance-filterbar .attendance-filter-search{min-width:220px}.attendance-filterbar .attendance-filter-search input{min-width:220px}.attendance-filterbar-spacer{flex:1 1 auto;min-width:12px}.attendance-filter-summary{align-self:center;color:var(--muted);font-size:.8rem;font-weight:700;white-space:nowrap}.attendance-filter-actions{display:flex;align-items:center;gap:7px;flex:0 0 auto}.attendance-filter-actions .primary{white-space:nowrap}.attendance-workspace-content{display:flex;flex:1 1 auto;min-height:0;border:1px solid var(--line);border-top:0;border-radius:0 0 10px 10px;background:var(--surface);overflow:hidden}.attendance-view-panel{flex:1 1 auto;min-width:0;min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable;padding:10px}.attendance-view-panel[hidden]{display:none!important}.attendance-list{min-width:0}.attendance-workspace-table{min-width:760px}.attendance-workspace-table th{position:sticky;top:-10px;z-index:2;background:var(--surface-2)}.attendance-row-action{text-align:right!important;white-space:nowrap}.attendance-empty-state{padding:24px 10px;text-align:center}.attendance-restoring{visibility:hidden}.attendance-overview-panel{display:flex;flex-direction:column;overflow:hidden;padding:10px}.attendance-overview-panel[hidden]{display:none!important}.attendance-overview-panel .attendance-matrix-legend{flex:0 0 auto;margin:0 0 7px}.attendance-workspace-matrix{flex:1 1 auto;min-height:0;border-radius:8px}.attendance-matrix-scrollbar{position:sticky;top:0;z-index:8;flex:0 0 auto;height:17px;min-height:17px;margin:0 0 5px;overflow-x:auto;overflow-y:hidden;background:var(--surface);scrollbar-gutter:stable}.attendance-matrix-scrollbar[hidden]{display:none!important}.attendance-matrix-scrollbar>div{height:1px}.attendance-matrix-filters label[hidden]{display:none!important}.ensemble-attendance-dialog{width:min(1500px,calc(100vw - 30px))!important;max-width:calc(100vw - 30px)!important}.ensemble-attendance-dialog .attendance-matrix-filters{display:flex;align-items:end;gap:9px;flex-wrap:nowrap;overflow-x:auto}.ensemble-attendance-dialog .attendance-matrix-filters label{flex:1 1 150px;min-width:135px}.ensemble-attendance-dialog .attendance-matrix-filters label:last-child{min-width:190px}.ensemble-attendance-dialog .attendance-matrix-scrollbar{top:-1px}.ensemble-attendance-body{overscroll-behavior:contain}
@media(max-width:760px){.attendance-workspace-header h1{font-size:21px}.attendance-module{height:100vh}.attendance-filterbar{align-items:stretch}.attendance-filterbar label{min-width:150px}.attendance-filterbar-spacer{display:none}.attendance-filter-actions{align-self:end}.ensemble-attendance-dialog .attendance-matrix-filters{flex-wrap:wrap;overflow:visible}.ensemble-attendance-dialog .attendance-matrix-filters label{flex:1 1 145px}.attendance-workspace-table{min-width:650px}}

/* 0.9.4.10 shared full-viewport module primitive. Module-specific rules only
 * describe their inner workspace; the outer viewport/margins live here. */
.module.module-workspace{display:flex;flex-direction:column;height:100vh;min-height:0;max-width:none;margin:0;overflow:hidden}
@media(max-width:700px){.module.module-workspace.groups-module{height:auto;min-height:100vh;overflow:visible}}
@media(max-width:760px){.module.module-workspace.rehearsals-module{height:auto;min-height:100vh;overflow:visible}}

/* 0.9.4.11 — shared branding + editable attendance navigation */
.association-favicon-settings{display:grid;grid-template-columns:112px minmax(0,1fr);gap:16px;align-items:center;padding:14px;border:1px solid var(--line);border-radius:11px;background:var(--surface-2)}
.association-favicon-preview{width:112px;height:112px;display:flex;align-items:center;justify-content:center;padding:8px;border:1px dashed color-mix(in srgb,var(--muted) 45%,var(--line));border-radius:9px;background:var(--surface);overflow:hidden}
.association-favicon-preview img{display:block;max-width:100%;max-height:100%;object-fit:contain}
.attendance-view-nav.editing button{cursor:grab;outline:1px dashed color-mix(in srgb,var(--accent) 50%,var(--line))}
.attendance-view-nav.editing button:active{cursor:grabbing}
.attendance-view-nav button.dragging{opacity:.35}
@media(max-width:760px){.association-favicon-settings{grid-template-columns:1fr}.association-favicon-preview{width:100%;height:112px}}

/* 0.9.4.12 — Groepen member bulk editor + consistent attendance reordering. */
.tree-bulk-edit-trigger{width:30px;height:30px;flex:0 0 30px;display:inline-grid;place-items:center;padding:0;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--text);font:700 14px/1 system-ui,sans-serif;cursor:pointer}
.tree-bulk-edit-trigger:hover,.tree-bulk-edit-trigger:focus-visible{outline:none;border-color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,var(--surface));color:var(--accent)}
.group-tree .tree-bulk-edit-trigger{flex:0 0 auto}
.group-bulk-edit-dialog{width:min(1600px,calc(100vw - 28px))!important;max-width:calc(100vw - 28px)!important;height:min(88vh,980px);max-height:calc(100vh - 28px)!important}
.group-bulk-edit-dialog>.dialog-body{display:flex;flex-direction:column;min-height:0;overflow:hidden;padding:14px 16px 16px}
.group-bulk-edit-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex:0 0 auto;margin-bottom:5px}
.group-bulk-edit-toolbar>div:first-child{display:flex;align-items:baseline;gap:5px;min-width:0}.group-bulk-edit-toolbar .muted{font-size:.78rem}
.group-bulk-export-actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.group-bulk-export-actions button{white-space:nowrap}
.group-bulk-edit-hint{flex:0 0 auto;margin:0 0 9px;color:var(--muted);font-size:.75rem;line-height:1.4}
.group-bulk-edit-table-wrap{flex:1 1 auto;min-height:0;overflow:auto;border:1px solid var(--line);border-radius:9px;background:var(--surface);overscroll-behavior:contain;scrollbar-gutter:stable}
.group-bulk-edit-table{width:100%;min-width:1420px;border-collapse:separate;border-spacing:0;font-size:.8rem}
.group-bulk-edit-table th,.group-bulk-edit-table td{padding:0;border-right:1px solid var(--line);border-bottom:1px solid var(--line);vertical-align:middle;background:var(--surface)}
.group-bulk-edit-table th:last-child,.group-bulk-edit-table td:last-child{border-right:0}.group-bulk-edit-table tbody tr:last-child td{border-bottom:0}
.group-bulk-edit-table thead th{position:sticky;top:0;z-index:3;background:var(--surface-2);text-align:left}
.group-bulk-edit-table thead button{display:flex;align-items:center;justify-content:space-between;gap:5px;width:100%;min-height:38px;padding:8px 9px;border:0;border-radius:0;background:transparent;color:var(--text);font:800 .75rem/1.2 inherit;text-align:left;cursor:pointer;white-space:nowrap}
.group-bulk-edit-table thead button:hover,.group-bulk-edit-table thead button.is-sorted{color:var(--accent);background:color-mix(in srgb,var(--accent) 7%,var(--surface-2))}.group-bulk-edit-table [data-sort-indicator]{font-size:.7rem;white-space:nowrap}
.group-bulk-edit-table td:nth-child(1){min-width:160px}.group-bulk-edit-table td:nth-child(2){min-width:150px}.group-bulk-edit-table td:nth-child(3){min-width:145px}.group-bulk-edit-table td:nth-child(4){min-width:220px}.group-bulk-edit-table td:nth-child(5){min-width:230px}.group-bulk-edit-table td:nth-child(6){min-width:260px}.group-bulk-edit-table td:nth-child(7){min-width:105px}.group-bulk-edit-table td:nth-child(8){min-width:145px}.group-bulk-edit-table td:nth-child(9){min-width:120px}
.bulk-cell-control{display:block;position:relative;padding:3px;background:transparent;transition:background .12s ease,box-shadow .12s ease}.bulk-cell-control.is-dirty{background:color-mix(in srgb,var(--accent) 11%,var(--surface));box-shadow:inset 3px 0 0 var(--accent)}
.group-bulk-edit-table input,.group-bulk-edit-table select{display:block;width:100%;min-width:0;height:34px;padding:6px 7px;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--text);font:inherit}.group-bulk-edit-table input:hover,.group-bulk-edit-table select:hover{border-color:var(--line);background:var(--surface-2)}.group-bulk-edit-table input:focus,.group-bulk-edit-table select:focus{outline:2px solid color-mix(in srgb,var(--accent) 35%,transparent);outline-offset:-1px;border-color:var(--accent);background:var(--surface)}
.group-bulk-edit-table tr.is-dirty td{background:color-mix(in srgb,var(--accent) 2.5%,var(--surface))}.group-bulk-edit-table tr.is-dirty .bulk-cell-control:not(.is-dirty){background:transparent}
.bulk-phone-cell{display:grid;grid-template-columns:74px minmax(135px,1fr);align-items:center}.bulk-address-cell{display:grid;grid-template-columns:minmax(170px,1fr) 80px;align-items:center}
.group-bulk-edit-actions{flex:0 0 auto;margin-top:10px!important}.group-bulk-edit-dialog .group-bulk-edit-actions{position:static!important;padding:0!important;background:none!important}
@media(max-width:760px){.group-bulk-edit-dialog{width:calc(100vw - 12px)!important;max-width:calc(100vw - 12px)!important;height:calc(100vh - 12px)}.group-bulk-edit-dialog>.dialog-body{padding:10px}.group-bulk-edit-toolbar{align-items:flex-start;flex-direction:column}.group-bulk-export-actions{width:100%}.group-bulk-export-actions button{flex:1 1 auto}.group-bulk-edit-actions{flex-wrap:wrap}.group-bulk-edit-actions button{flex:1 1 auto}}

/* 0.9.4.13 relation-remove icon alignment.
 * Geometric strokes avoid the optical baseline offset of the × glyph and are
 * shared by the compact topology relation buttons. */
.lineup-member-unlink{font-size:0;line-height:0}
.lineup-member-unlink::before,.lineup-member-unlink::after{
  content:"";
  grid-area:1/1;
  width:9px;
  height:2px;
  border-radius:2px;
  background:currentColor;
  transform-origin:center;
}
.lineup-member-unlink::before{transform:rotate(45deg)}
.lineup-member-unlink::after{transform:rotate(-45deg)}

/* 0.9.5.1 — attendance workspace theme polish.
 * Keep the full-height workspace behaviour (it preserves sticky filters/table heads and
 * scroll restoration inside the shell iframe), but make its chrome, tables and scrollbars
 * use the same soft surfaces, borders and interaction states as the rest of the theme. */
.attendance-module .attendance-view-nav{
  gap:5px;
  min-height:44px;
  padding:5px 6px 4px;
  border-color:color-mix(in srgb,var(--line) 78%,transparent);
  border-radius:12px 12px 0 0;
  background:color-mix(in srgb,var(--surface) 94%,var(--surface-2));
}
.attendance-module .attendance-view-nav button{
  min-height:34px;
  padding:7px 13px;
  border-radius:8px;
  color:var(--muted);
  transition:background .14s ease,border-color .14s ease,color .14s ease,box-shadow .14s ease;
}
.attendance-module .attendance-view-nav button:hover,
.attendance-module .attendance-view-nav button:focus-visible{
  outline:none;
  color:var(--text);
  border-color:color-mix(in srgb,var(--line) 82%,transparent);
  background:var(--surface-2);
}
.attendance-module .attendance-view-nav button.active{
  color:var(--accent-strong);
  border-color:color-mix(in srgb,var(--accent) 34%,var(--line));
  background:color-mix(in srgb,var(--accent) 9%,var(--surface));
  box-shadow:inset 0 -2px 0 color-mix(in srgb,var(--accent) 78%,transparent);
}
.attendance-module .attendance-filterbar{
  gap:12px;
  min-height:64px;
  padding:11px 13px 12px;
  border-color:color-mix(in srgb,var(--line) 78%,transparent);
  background:color-mix(in srgb,var(--surface-2) 62%,var(--surface));
}
.attendance-module .attendance-filterbar label{
  gap:5px;
  color:var(--muted);
  font-size:.74rem;
  font-weight:750;
}
.attendance-module .attendance-filterbar select,
.attendance-module .attendance-filterbar input{
  height:38px;
  padding:7px 10px;
  border-color:color-mix(in srgb,var(--line) 90%,transparent);
  background:var(--surface);
  box-shadow:0 1px 0 rgba(0,0,0,.025);
}
.attendance-module .attendance-filterbar select:focus-visible,
.attendance-module .attendance-filterbar input:focus-visible{
  outline:2px solid color-mix(in srgb,var(--accent) 32%,transparent);
  outline-offset:1px;
  border-color:var(--accent);
}
.attendance-module .attendance-filter-summary{
  display:inline-flex;
  align-items:center;
  min-height:30px;
  padding:5px 9px;
  border:1px solid color-mix(in srgb,var(--line) 72%,transparent);
  border-radius:999px;
  background:color-mix(in srgb,var(--surface) 88%,transparent);
  color:var(--muted);
  font-size:.76rem;
  font-weight:750;
}
.attendance-module .attendance-filter-actions{gap:8px}
.attendance-module .attendance-filter-actions .primary{
  min-height:38px;
  padding:8px 13px;
  border-radius:8px;
}
.attendance-module .attendance-workspace-content{
  border-color:color-mix(in srgb,var(--line) 78%,transparent);
  border-radius:0 0 12px 12px;
  background:var(--surface);
  box-shadow:0 7px 18px rgba(18,32,40,.055);
}
html[data-theme="dark"] .attendance-module .attendance-workspace-content{box-shadow:0 8px 22px rgba(0,0,0,.16)}
.attendance-module .attendance-view-panel{padding:12px 14px 14px}
.attendance-module .attendance-list{border-radius:9px;overflow:hidden}
.attendance-module .attendance-workspace-table{
  border-collapse:separate;
  border-spacing:0;
  width:100%;
  background:transparent;
}
.attendance-module .attendance-workspace-table th,
.attendance-module .attendance-workspace-table td{
  padding:11px 12px;
  border-bottom:1px solid color-mix(in srgb,var(--line) 58%,transparent);
  vertical-align:middle;
}
.attendance-module .attendance-workspace-table th{
  top:-12px;
  height:42px;
  color:var(--text);
  background:color-mix(in srgb,var(--surface-2) 78%,var(--surface));
  border-bottom-color:color-mix(in srgb,var(--line) 82%,transparent);
  font-size:.78rem;
  font-weight:800;
}
.attendance-module .attendance-workspace-table tbody tr:last-child td{border-bottom:0}
.attendance-module .attendance-workspace-table tbody tr td{
  transition:background .12s ease;
}
.attendance-module .attendance-workspace-table tbody tr:hover td{
  background:color-mix(in srgb,var(--accent) 4.5%,var(--surface));
}
.attendance-module .attendance-workspace-table td strong{font-weight:750}
.attendance-module .attendance-workspace-table .badge{
  min-height:24px;
  padding:3px 8px;
  border-color:color-mix(in srgb,var(--accent) 20%,var(--line));
  background:color-mix(in srgb,var(--accent) 6%,var(--surface));
  color:color-mix(in srgb,var(--accent-strong) 84%,var(--text));
  font-weight:750;
}
.attendance-module .attendance-row-action{padding-right:10px!important}
.attendance-module .attendance-row-action .secondary.compact{
  min-height:32px;
  padding:6px 10px;
  border-color:color-mix(in srgb,var(--line) 86%,transparent);
  background:color-mix(in srgb,var(--surface) 92%,var(--surface-2));
  font-size:.76rem;
  font-weight:700;
  transition:background .14s ease,border-color .14s ease,color .14s ease,box-shadow .14s ease;
}
.attendance-module .attendance-row-action .secondary.compact:hover,
.attendance-module .attendance-row-action .secondary.compact:focus-visible{
  outline:none;
  color:var(--accent-strong);
  border-color:color-mix(in srgb,var(--accent) 42%,var(--line));
  background:color-mix(in srgb,var(--accent) 7%,var(--surface));
  box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 8%,transparent);
}
.attendance-module .attendance-empty-state{
  margin:0;
  padding:34px 14px;
  border:1px dashed color-mix(in srgb,var(--line) 75%,transparent);
  border-radius:9px;
  background:color-mix(in srgb,var(--surface-2) 40%,transparent);
}
.attendance-module .attendance-overview-panel{gap:8px;padding:12px 14px 14px}
.attendance-module .attendance-overview-panel .attendance-matrix-legend{
  margin:0;
  padding:7px 9px;
  border:1px solid color-mix(in srgb,var(--line) 65%,transparent);
  border-radius:8px;
  background:color-mix(in srgb,var(--surface-2) 48%,var(--surface));
}
.attendance-module .attendance-workspace-matrix{
  border-color:color-mix(in srgb,var(--line) 72%,transparent);
  border-radius:9px;
}
.attendance-module .attendance-matrix th,
.attendance-module .attendance-matrix td{
  border-right-color:color-mix(in srgb,var(--line) 52%,transparent);
  border-bottom-color:color-mix(in srgb,var(--line) 52%,transparent);
}
.attendance-module .attendance-matrix thead th,
.attendance-module .attendance-matrix-total th,
.attendance-module .attendance-matrix-total td{
  background:color-mix(in srgb,var(--surface-2) 78%,var(--surface));
}
.attendance-module .attendance-matrix tbody tr:not(.attendance-matrix-total) td{
  transition:background .12s ease;
}
.attendance-module .attendance-matrix tbody tr:not(.attendance-matrix-total):hover td{
  background:color-mix(in srgb,var(--accent) 4.5%,var(--surface));
}
.attendance-module .attendance-matrix tbody tr:not(.attendance-matrix-total):hover .attendance-member-sticky{
  background:color-mix(in srgb,var(--accent) 4.5%,var(--surface));
}
.attendance-module .attendance-matrix-scrollbar{
  margin-bottom:2px;
  background:transparent;
}
.attendance-module .attendance-view-panel,
.attendance-module .attendance-workspace-matrix,
.attendance-module .attendance-filterbar,
.attendance-module .attendance-view-nav,
.attendance-module .attendance-matrix-scrollbar{
  scrollbar-width:thin;
  scrollbar-color:color-mix(in srgb,var(--muted) 42%,transparent) transparent;
}
.attendance-module .attendance-view-panel::-webkit-scrollbar,
.attendance-module .attendance-workspace-matrix::-webkit-scrollbar,
.attendance-module .attendance-filterbar::-webkit-scrollbar,
.attendance-module .attendance-view-nav::-webkit-scrollbar,
.attendance-module .attendance-matrix-scrollbar::-webkit-scrollbar{width:9px;height:9px}
.attendance-module .attendance-view-panel::-webkit-scrollbar-track,
.attendance-module .attendance-workspace-matrix::-webkit-scrollbar-track,
.attendance-module .attendance-filterbar::-webkit-scrollbar-track,
.attendance-module .attendance-view-nav::-webkit-scrollbar-track,
.attendance-module .attendance-matrix-scrollbar::-webkit-scrollbar-track{background:transparent}
.attendance-module .attendance-view-panel::-webkit-scrollbar-thumb,
.attendance-module .attendance-workspace-matrix::-webkit-scrollbar-thumb,
.attendance-module .attendance-filterbar::-webkit-scrollbar-thumb,
.attendance-module .attendance-view-nav::-webkit-scrollbar-thumb,
.attendance-module .attendance-matrix-scrollbar::-webkit-scrollbar-thumb{
  border:2px solid transparent;
  border-radius:999px;
  background:color-mix(in srgb,var(--muted) 42%,transparent);
  background-clip:padding-box;
}
.attendance-module .attendance-view-panel::-webkit-scrollbar-thumb:hover,
.attendance-module .attendance-workspace-matrix::-webkit-scrollbar-thumb:hover,
.attendance-module .attendance-matrix-scrollbar::-webkit-scrollbar-thumb:hover{
  background:color-mix(in srgb,var(--accent) 45%,var(--muted));
  background-clip:padding-box;
}
@media(max-width:760px){
  .attendance-module .attendance-view-nav{padding:4px 5px}
  .attendance-module .attendance-filterbar{gap:9px;padding:9px 10px 10px}
  .attendance-module .attendance-view-panel,
  .attendance-module .attendance-overview-panel{padding:9px 10px 11px}
  .attendance-module .attendance-workspace-table th{top:-9px}
  .attendance-module .attendance-filter-summary{align-self:end}
}


/* 0.9.5.4 — focused UI polish: account alignment, finance state, attendance month/matrix. */
.admin-account-identity-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-items:start}
.admin-account-identity-field{display:grid!important;grid-template-rows:minmax(22px,auto) 40px minmax(28px,auto);gap:5px!important}
.admin-account-identity-field>input,.admin-account-identity-field>select{height:40px;min-height:40px;margin:0}
.admin-account-identity-field>.field-label-row{min-height:22px}
.admin-account-identity-field>small{min-height:28px;line-height:1.35}
.workgroup-feature-enable{display:inline-flex;align-items:center;gap:8px;border-style:dashed!important;border-color:color-mix(in srgb,var(--accent) 42%,var(--line))!important;background:color-mix(in srgb,var(--accent) 5%,var(--surface))!important}
.workgroup-feature-enable:hover{border-color:var(--accent)!important;background:color-mix(in srgb,var(--accent) 10%,var(--surface))!important}
.workgroup-feature-state{display:inline-flex;align-items:center;justify-content:center;min-width:28px;padding:2px 6px;border:1px solid var(--line);border-radius:999px;background:var(--surface-2);color:var(--muted);font-size:9.5px;font-weight:850;line-height:1.2}
.workgroup-tabs button.feature-disabled{opacity:.58;border:1px dashed color-mix(in srgb,var(--muted) 40%,var(--line));cursor:not-allowed}
.workgroup-tabs button.feature-disabled:hover{background:transparent;color:var(--muted)}
.workgroup-tabs button .workgroup-feature-state[hidden]{display:none!important}
.ensemble-attendance-dialog>.dialog-body.ensemble-attendance-body{display:flex;flex-direction:column;min-height:0;overflow:hidden;padding:0}
.ensemble-attendance-dialog .attendance-matrix-toolbar{flex:0 0 auto;padding:14px 17px 0;background:var(--surface);border-bottom:1px solid var(--line)}
.ensemble-attendance-dialog .attendance-matrix-filters{margin-bottom:10px}
.ensemble-attendance-dialog .attendance-matrix-toolbar .attendance-matrix-legend{margin-bottom:10px}
.ensemble-attendance-dialog #attendanceMatrixHost{flex:1 1 auto;min-height:0;margin:0 17px;border-radius:8px;overflow-y:auto;overflow-x:hidden}
.ensemble-attendance-dialog #attendanceMatrixHost .attendance-matrix thead th{top:0}
.ensemble-attendance-dialog .attendance-matrix-scrollbar-bottom{position:static;flex:0 0 19px;height:19px;min-height:19px;margin:6px 17px 0;background:var(--surface)}
.ensemble-attendance-dialog>.attendance-overview-actions{flex:0 0 auto;margin:0;padding:12px 17px 16px;border-top:1px solid var(--line);background:var(--surface)}
.attendance-filterbar label[hidden]{display:none!important}
@media(max-width:650px){.admin-account-identity-grid{grid-template-columns:1fr}.admin-account-identity-field{grid-template-rows:auto 40px auto}.ensemble-attendance-dialog .attendance-matrix-toolbar{padding:10px 10px 0}.ensemble-attendance-dialog #attendanceMatrixHost{margin:0 10px}.ensemble-attendance-dialog .attendance-matrix-scrollbar-bottom{margin:6px 10px 0}.ensemble-attendance-dialog>.attendance-overview-actions{padding:10px}}

/* 0.9.6.3: nested phone controls use the same 40px size as plain member fields. */
.member-edit-scroll .phone-input>input,.member-edit-scroll .phone-input>select,
.new-member-scroll .phone-input>input,.new-member-scroll .phone-input>select{
  box-sizing:border-box;height:40px;min-height:40px;margin:0;
}

/* v0.9.6.4 — inventory overview; reuses the application's light/dark theme tokens. */
.instrument-management-module .instrument-controlbar .compact-select,
.instrument-management-module .instrument-controlbar .search{height:40px;min-height:40px}
.instrument-management-module .instrument-controlbar .compact-select{min-width:175px}
.instrument-view-summary{margin:3px 0 11px;color:var(--muted);font-size:12px}
.instrument-show-hidden{border:0;background:transparent;color:var(--accent);font-size:inherit;font-weight:700;text-decoration:underline;cursor:pointer}
.instrument-inventory{display:grid;gap:12px;align-content:start}
.instrument-inventory-group{min-width:0;border:1px solid var(--line);border-radius:11px;background:var(--surface);overflow:hidden}
.instrument-inventory-group-head{margin:0;background:var(--surface-2);font-size:14px}
.instrument-inventory-group-head button{display:flex;align-items:center;gap:9px;width:100%;padding:10px 13px;border:0;background:transparent;color:var(--text);text-align:left;font-weight:800;cursor:pointer}
.instrument-inventory-group-head button:hover{background:color-mix(in srgb,var(--accent) 9%,var(--surface-2))}
.instrument-inventory-group-head small{font-weight:600;font-size:11px;color:var(--muted)}
.instrument-group-chevron{width:16px;color:var(--accent);font-size:18px}
.instrument-group-content[hidden]{display:none!important}
.instrument-table-wrap{max-width:100%;overflow-x:auto}
.instrument-inventory-table{width:100%;min-width:750px;border-collapse:collapse;table-layout:fixed;font-size:13px}
.instrument-inventory-table th{padding:0;background:var(--surface-2);border-bottom:1px solid var(--line);text-align:left;font-size:11px}
.instrument-inventory-table th:nth-child(1){width:16%}.instrument-inventory-table th:nth-child(2){width:25%}.instrument-inventory-table th:nth-child(3){width:19%}.instrument-inventory-table th:nth-child(4){width:27%}.instrument-inventory-table th:nth-child(5){width:13%}
.instrument-sort{display:flex;gap:4px;align-items:center;min-height:36px;width:100%;padding:7px 11px;border:0;background:transparent;color:var(--muted);font-weight:800;text-align:left;cursor:pointer}
.instrument-sort:hover{color:var(--accent)}.instrument-sort span{font-weight:500}
.instrument-inventory-table td{padding:10px 11px;border-bottom:1px solid var(--line);vertical-align:middle;overflow-wrap:anywhere}
.instrument-inventory-table tbody tr:last-child td{border-bottom:0}
/* v0.9.6.6: reserve equal vertical room for borrower + date and available items.
   CSS table row height acts as a minimum, allowing exceptional content to expand safely. */
.instrument-inventory-table tbody tr{height:66px}
/* Compact table-specific badges still fit in two lines at narrow desktop widths. */
.instrument-inventory-table .instrument-table-status .instrument-status{padding:2px 6px}
/* Explicit visible zebra contrast in BOTH modes (not dependent on near-identical surface values). */
.instrument-inventory-table tbody tr:nth-child(odd){background:var(--surface)}
.instrument-inventory-table tbody tr:nth-child(even){background:color-mix(in srgb,var(--surface-2) 90%,var(--surface))}
html[data-theme="dark"] .instrument-inventory-table tbody tr:nth-child(even){background:color-mix(in srgb,var(--surface-2) 80%,var(--surface))}
.instrument-inventory-row{cursor:pointer}
.instrument-inventory-table tbody tr.instrument-inventory-row:hover{background:color-mix(in srgb,var(--accent) 16%,var(--surface))}
.instrument-inventory-row:focus-visible{outline:2px solid var(--accent);outline-offset:-3px;background:color-mix(in srgb,var(--accent) 13%,var(--surface))}
.instrument-inventory-row.dragging{opacity:.45}
.instrument-inventory-table tbody tr.instrument-inventory-row.entity-locked{filter:none;opacity:1;cursor:not-allowed}
.instrument-inventory-table tbody tr.instrument-inventory-row.entity-locked::after{content:none}
.instrument-inventory-table tbody tr.instrument-inventory-row.entity-locked:nth-child(odd),
.instrument-inventory-table tbody tr.instrument-inventory-row.entity-locked:nth-child(odd):hover{background:color-mix(in srgb,var(--muted) 9%,var(--surface))}
.instrument-inventory-table tbody tr.instrument-inventory-row.entity-locked:nth-child(even),
.instrument-inventory-table tbody tr.instrument-inventory-row.entity-locked:nth-child(even):hover{background:color-mix(in srgb,var(--muted) 9%,var(--surface-2))}
.instrument-inventory-row .entity-lock-badge{position:static;display:block;width:max-content;max-width:100%;margin-top:3px;padding:2px 6px;box-sizing:border-box;line-height:1.2;font-size:10px}
.instrument-inventory-row .inventory-number{font-size:13px}
.instrument-inventory-row td small{display:block;color:var(--muted);margin-top:2px;font-size:11px}
.instrument-table-status{display:flex;flex-wrap:wrap;align-items:center;gap:4px}
.instrument-table-status .instrument-status{white-space:normal}
.instrument-inventory-mobile{display:none}
.instrument-stat-action{appearance:none;color:var(--text);font:inherit;text-align:left;cursor:pointer}
.instrument-stat-action:hover{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 6%,var(--surface))}
.instrument-stat-action[aria-pressed="true"]{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent);background:color-mix(in srgb,var(--accent) 9%,var(--surface))}
.instrument-stat-action:focus-visible,.instrument-inventory-group-head button:focus-visible,.instrument-sort:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
/* The profile e-mail, birthdate and telephone controls should share one true height. */
.profile-form>label:not(.checkbox-label)>input,.profile-form>label:not(.checkbox-label)>select,
.profile-form .phone-input>input,.profile-form .phone-input>select{height:40px;min-height:40px;max-height:40px;box-sizing:border-box}
@media(max-width:760px){
  .instrument-table-wrap{display:none}.instrument-inventory-mobile{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:9px;padding:10px}
  .instrument-management-module .instrument-controlbar .compact-select{min-width:0}
}

@media(min-width:1051px){.instrument-management-module .instrument-stat-grid{grid-template-columns:repeat(6,minmax(0,1fr))}}

/* v0.9.6.8 — shared, font-independent cross for compact remove / unlink / return actions.
   Keep each button's existing size & workflow; do not use for unrelated edit icons.
   All elements opting into this class provide an accessible aria-label. */
.ui-remove-cross{
  position:relative;
  display:inline-grid;
  place-items:center;
  box-sizing:border-box;
  padding:0;
  border-radius:999px;
  font-size:0!important;
  line-height:0!important;
  cursor:pointer;
  vertical-align:middle;
  transition:background-color .14s ease,color .14s ease,border-color .14s ease,box-shadow .14s ease;
}
.ui-remove-cross::before,.ui-remove-cross::after{
  content:"";
  position:absolute;
  top:50%;left:50%;
  width:var(--remove-mark-size,10px);
  height:1.6px;
  border-radius:2px;
  background:currentColor;
  transform-origin:center;
  pointer-events:none;
}
.ui-remove-cross::before{transform:translate(-50%,-50%) rotate(45deg)}
.ui-remove-cross::after{transform:translate(-50%,-50%) rotate(-45deg)}
.ui-remove-cross:is(.group-chip-remove,.instrument-profile-remove,.tree-member-remove){--remove-mark-size:8px}
/* Existing member card / instrument return affordances are retained and strengthened. */
.ui-remove-cross:not(.member-card-remove):not(:disabled):hover{
  background:color-mix(in srgb,var(--danger) 16%,var(--surface));
  color:var(--danger);
  border-color:color-mix(in srgb,var(--danger) 75%,var(--line));
  box-shadow:0 0 0 1px color-mix(in srgb,var(--danger) 32%,transparent);
  opacity:1;
}
/* Removing a member from a group / ensemble is a destructive relationship action:
   make its hover clearly visible instead of only altering opacity or a few pixels. */
.ui-remove-cross.member-card-remove:not(:disabled):hover{
  background:color-mix(in srgb,var(--danger) 18%,var(--surface));
  color:var(--danger);
  border-color:var(--danger);
  box-shadow:0 0 0 2px color-mix(in srgb,var(--danger) 26%,transparent);
  opacity:1;
}
.ui-remove-cross:focus-visible{
  outline:2px solid var(--accent);
  outline-offset:2px;
  box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 18%,transparent);
}
.ui-remove-cross:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}
/* Keep header/dialog close controls' existing separate styling and 32px hit targets. */
/* Positioning stays owned by the parent component (member-card corner). */
.member-card .ui-remove-cross.member-card-remove{position:absolute}

/* Rehearsal cancellation preview follows the shared light/dark form palette. */
.rehearsal-cancellation-preview{display:grid;gap:.45rem;margin:.75rem 0}
.rehearsal-cancellation-preview>div{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.5rem;padding:.65rem .8rem;border:1px solid var(--border-color,var(--border,#aeb8c5));border-radius:var(--radius,.65rem);background:var(--surface-soft,var(--surface-secondary,transparent))}
.rehearsal-cancellation-preview span{color:var(--muted,#6b7280);font-size:.92em}
.rehearsal-cancellation-summary{display:block;color:var(--muted,#6b7280)}
/* The shared .checkbox-label sets display:flex!important; hidden must still hide corrections when nobody was notified. */
#rehearsalRestoreCorrectionLabel[hidden]{display:none!important}

/* Shared clickable person references in read-only group and loan surfaces. */
.member-name-link{display:inline;padding:0;border:0;background:transparent;color:var(--accent,#087b82);font:inherit;font-weight:650;text-align:left;cursor:pointer;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px}
.member-name-link:hover{text-decoration-thickness:2px}
.member-name-link:focus-visible{outline:2px solid currentColor;outline-offset:3px;border-radius:2px}

/* Retain the reference column only when it leaves usable room for group columns. */
@media(min-width:700px){.members-module #memberBoard>.kanban-column:first-child{position:sticky;left:0;z-index:3;isolation:isolate;box-shadow:3px 0 7px -5px rgba(0,0,0,.45);}}
.members-module #memberBoard>.kanban-column:first-child>.column-list{position:relative;z-index:1;}

/* Shared creation draft uses the existing dialog, form and assignment primitives. */
.workgroup-creation-dialog [hidden]{display:none!important}
.creation-section{display:grid;gap:12px;min-width:0;padding-bottom:18px;margin-bottom:18px;border-bottom:1px solid var(--line)}
.creation-section:last-child{border:0;padding-bottom:0;margin-bottom:0}
.creation-section h3,.workgroup-creation-tasks h4{margin:0;font-size:14px}
.creation-section p{margin:0;line-height:1.5}
.creation-source-results{display:grid;gap:8px;max-height:240px;overflow:auto;padding:3px}
.creation-source-choice{display:grid;gap:4px;text-align:left;white-space:normal}
.creation-source-choice span{font-size:12px;color:var(--muted)}
.creation-source-choice[aria-pressed="true"]{border-color:var(--accent);outline:2px solid var(--accent);outline-offset:0}
.workgroup-creation-tasks{display:grid;gap:12px;min-width:0}
.workgroup-creation-tasks summary{font-weight:800;cursor:pointer;padding:4px;overflow-wrap:anywhere}
.workgroup-creation-tasks summary [data-task-issues]{color:var(--warning-text);font-size:12px}
.workgroup-creation-tasks .has-assignment-issues,.workgroup-creation-tasks .has-deadline-issues{border-color:var(--warning-text)}
.workgroup-creation-tasks .task-assignment-person{flex-wrap:wrap;cursor:default}
.workgroup-creation-tasks .task-assignment-person label{flex:1 1 160px;min-width:0}
.workgroup-creation-tasks .task-assignment-person-name{flex-basis:220px}
.workgroup-creation-tasks details>.form-grid{margin-top:12px}
.workgroup-creation-dialog .dialog-body{overflow-anchor:none}
.workgroup-creation-dialog .dialog-actions{align-items:center;flex-wrap:wrap}
#workgroupCreationIssues{flex:1 1 180px;color:var(--muted)}
/* 0.9.7.22 accessible task-assignment drag/drop and action buttons */
.task-assignment-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:12px 0;}
.task-assignment-panel{display:flex;flex-direction:column;gap:9px;min-width:0;border:1px solid var(--line);border-radius:10px;padding:10px;background:var(--surface);}
.task-assignment-panel>header{display:flex;align-items:center;justify-content:space-between;gap:5px;font-size:12px;}
.task-assignment-list{display:flex;flex-direction:column;gap:7px;min-height:142px;flex:1;}
.task-assignment-person{display:flex;align-items:center;gap:7px;min-width:0;padding:8px;border:1px solid var(--line);border-radius:8px;background:var(--surface);cursor:grab;}
.task-assignment-person.dragging{opacity:.36}.task-assignment-grip{color:var(--muted);font-size:18px;flex:none;}
.task-assignment-person-name{display:flex;flex-direction:column;gap:1px;flex:1;min-width:0;overflow-wrap:anywhere;font-size:12px;}.task-assignment-person-name small{color:var(--muted);}
.task-assignment-person button{white-space:nowrap;font-size:11px;}
.task-assignment-drop{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;padding:17px 6px;min-height:106px;border:2px dashed;border-radius:9px;text-align:center;transition:background .12s,border-color .12s;}
.task-assignment-drop small{max-width:180px;font-size:11px;}
.task-assignment-drop.is-assign{color:var(--success-text);background:color-mix(in srgb,var(--assignment-add) 9%,var(--surface));border-color:color-mix(in srgb,var(--assignment-add) 42%,var(--line));}
.task-assignment-drop.is-remove{color:var(--warning-text);background:color-mix(in srgb,var(--assignment-remove) 10%,var(--surface));border-color:color-mix(in srgb,var(--assignment-remove) 45%,var(--line));}
.task-assignment-drop.is-assign.drag-over{background:color-mix(in srgb,var(--assignment-add) 24%,var(--surface));border-style:solid;}
.task-assignment-drop.is-remove.drag-over{background:color-mix(in srgb,var(--assignment-remove) 27%,var(--surface));border-style:solid;}
@media(max-width:520px){.task-assignment-grid{gap:7px}.task-assignment-panel{padding:6px}.task-assignment-person{flex-wrap:wrap;gap:4px}.task-assignment-person-name{flex-basis:calc(100% - 28px)}.task-assignment-person button{margin-left:auto;}.task-assignment-panel>header{font-size:11px;}}

/* The actively edited template environment always remains identifiable. */
#adminWhatsappTemplates .whatsapp-template-environment-card:has([data-template-target="production"].active),
#adminWhatsappTemplates:has([data-template-target="production"].active) .whatsapp-template-card{background:color-mix(in srgb,#dfab51 7%,var(--surface));border-color:color-mix(in srgb,#dfab51 25%,var(--line));}
#adminWhatsappTemplates .whatsapp-template-environment-card:has([data-template-target="test"].active),
#adminWhatsappTemplates:has([data-template-target="test"].active) .whatsapp-template-card{background:color-mix(in srgb,#559bd8 7%,var(--surface));border-color:color-mix(in srgb,#559bd8 24%,var(--line));}

/* 0.9.7.23 — task assignees: usable touch/mobile layout */
@media(max-width:600px){.task-assignment-grid{grid-template-columns:minmax(0,1fr)}.task-assignment-list{min-height:60px}}

.performance-director-legacy{font-size:11px;color:var(--muted);margin-top:9px;padding:8px 10px;border:1px solid color-mix(in srgb,#b45309 45%,var(--line));border-radius:8px;background:color-mix(in srgb,#b45309 7%,var(--surface))}
.performance-director-legacy[hidden]{display:none}


/* 0.9.7.25 — Calendar's personal, invisible grid and navigation-edit-only guides. */
.calendar-module>.calendar-event-list{container-type:inline-size}

.calendar-column-guide{
  display:grid;grid-template-columns:var(--cal-date-width,150px) minmax(235px,1fr) var(--cal-location-width,190px) var(--cal-attendance-width,165px) var(--cal-guests-width,320px) var(--cal-workgroup-width,110px) 34px;
  gap:12px;align-items:center;position:sticky;top:0;z-index:5;
  padding:6px 12px;border:1px dashed var(--line);border-radius:9px;background:var(--surface-2);
}
.calendar-column-label{position:relative;min-width:0;color:var(--muted);font-size:10px;font-weight:800;white-space:nowrap;overflow:visible;border-right:1px dashed var(--line);height:24px;display:flex;align-items:center}
.calendar-column-label:last-child{border-right:0}
.calendar-column-resize{position:absolute;right:-11px;top:-5px;z-index:2;display:grid;place-items:center;width:20px;height:34px;padding:0;border:1px solid var(--line);border-radius:5px;background:var(--surface);color:var(--muted);cursor:col-resize;touch-action:none}
.calendar-column-resize:hover,.calendar-column-resize:focus-visible,.calendar-column-resize.is-dragging{outline:2px solid var(--accent);outline-offset:0;color:var(--accent);border-color:var(--accent);background:var(--surface)}
.calendar-event-list.column-editing .calendar-event{cursor:default;border-style:dashed}
.calendar-event-list.column-editing .calendar-event>:not(.calendar-event-actions){border-right:1px dashed color-mix(in srgb,var(--line) 85%,var(--accent));padding-right:4px}
.calendar-event-list.column-editing .calendar-event button:not(.calendar-column-resize){pointer-events:none}
@container (max-width:1320px){
  .calendar-event{display:flex;flex-wrap:wrap;gap:7px 12px;position:relative;padding-right:50px;align-items:flex-start}
  .calendar-event-date,.calendar-event-main,.calendar-event-location{flex-basis:100%}
  .calendar-event-attendance,.calendar-event-guests,.calendar-event-workgroup{justify-content:flex-start}
  .calendar-event-attendance .badge{width:auto}
  .calendar-event-actions{position:absolute;right:10px;top:10px}
  .calendar-column-guide{display:none!important}
  .calendar-event-list.column-editing .calendar-event>:not(.calendar-event-actions){border-right:0;padding-right:0}
}

/* Calendar and Workgroups share semantic assignment destinations. */
.guest-dropzone{display:flex;flex-direction:column}.guest-dropzone .guest-card-list{flex:1}
.guest-dropzone>.task-assignment-drop{margin:0 9px 9px}
@media(max-width:650px){.guest-assignment-columns{grid-template-columns:1fr}}

.guest-musician-actions .icon-button{width:36px;height:36px;flex:none}.guest-musician-main{overflow-wrap:anywhere}
@media(max-width:650px){.guest-musician-actions .icon-button{width:44px;height:44px}}

/* Grid/flex presentation must never override hidden PDF panes or property fields. */
.pdf-template-panel [hidden]{display:none!important}

/* Shared email source surface: visual and source editing use the same authoring component. */
.email-source-wrap{position:relative;min-height:240px;background:var(--surface);border:1px solid var(--line);border-radius:8px;overflow:hidden}
.email-source,.email-source-highlight{box-sizing:border-box;margin:0;padding:12px;width:100%;min-height:240px;height:320px;font:14px/1.5 monospace;white-space:pre;tab-size:2;overflow:auto;border:0;border-radius:0}
.email-source-highlight{pointer-events:none;color:var(--text)}
.email-source-wrap>.email-source{position:absolute;inset:0;padding:12px;border:0;border-radius:0;resize:none;background:transparent;color:transparent;caret-color:var(--text)}
.email-source::selection{background:var(--accent);color:#fff}
.email-syntax-tag{color:var(--accent)}.email-syntax-variable{color:var(--warning-text)}
.email-render-preview{width:100%;min-height:360px;border:1px solid var(--line);background:#fff}
