.gap-banner{display:flex;align-items:center;gap:12px;flex-wrap:wrap;flex-shrink:0;padding:10px 18px;border-bottom:1px solid var(--ok-brd);background:var(--ok-bg);color:var(--ok-ink);font-size:12px}
.gap-banner>span:first-child{flex:1 1 300px}.gap-banner.warn{background:var(--amber-bg);color:var(--amber);border-color:var(--amber-brd)}
.gap-banner.err{background:var(--bad-bg);color:var(--bad-ink);border-color:var(--bad-brd)}
.gap-link{background:transparent;border:0;color:inherit;text-decoration:underline;cursor:pointer;font:inherit;padding:4px}
.gap-stack{display:flex;flex-direction:column;gap:8px;overflow:auto;max-height:60vh}.gap-group{padding:12px 0;border-bottom:1px solid var(--hair);display:flex;gap:12px;flex-wrap:wrap;align-items:center}.gap-members{display:flex;gap:6px;flex-wrap:wrap;width:100%}
.layout-wording{outline:1px dashed var(--amber);min-height:1.5em;min-width:120px}.tb-btn.editing{color:var(--amber);border-color:var(--amber)}
.navgrip{position:absolute;top:3px;left:5px;cursor:grab;font-size:12px}.naveye{position:absolute;top:3px;right:4px;padding:3px;font-size:12px}.tile.layout-hidden{opacity:.5}
.analytics-table{width:100%;min-width:700px}.analytics-table td{padding:13px 10px}.analytics-fill{height:6px;min-width:140px;border-radius:4px;background:var(--inset);margin-top:6px;overflow:hidden}.analytics-fill i{display:block;height:100%;border-radius:4px}.analytics-spark{height:34px;display:flex;align-items:flex-end;gap:5px;min-width:130px;padding-top:12px}.analytics-spark>span{flex:1;background:var(--blue);min-width:10px;position:relative;border-radius:2px 2px 0 0}.analytics-spark b{position:absolute;top:-13px;font-size:9px;left:50%;transform:translateX(-50%);font-weight:400}
@media print{.gap-banner,.navgrip,.naveye{display:none!important}}
.analytics-table{--blue:var(--brand)}
.publication-audiences .mail-radio { display:flex; align-items:flex-start; gap:8px; margin:10px 0; line-height:1.4; }
.publication-audiences .mail-radio input { flex:0 0 auto; margin:3px 0 0; }
.publication-audiences .mail-radio .phint { margin-top:3px; }
.run-discard-options .mail-radio { display:flex; align-items:flex-start; gap:8px; padding:8px 0; line-height:1.4; border-bottom:1px solid var(--hair); }
.run-discard-options .mail-radio input { flex:0 0 auto; margin:3px 0 0; }
/* Shared September review fixes; all colors follow the active theme. */
.brand-home { display:inline-flex; align-items:center; flex-shrink:0; }
.brand-home:focus-visible, .notification-bell:focus-visible { outline:2px solid currentColor; outline-offset:3px; }
.notification-bell { position:relative; display:inline-flex; align-items:center; justify-content:center; min-width:34px; min-height:30px; }
.notification-count { position:absolute; top:-6px; right:-6px; min-width:17px; padding:1px 4px; border-radius:10px; font:10px/15px 'IBM Plex Mono',monospace; background:var(--badge); color:white; }
.notification-count[hidden] { display:none; }
.mail-preferences { display:flex; flex-direction:column; gap:8px; }
.mail-preferences .mail-radio { display:flex; align-items:flex-start; gap:10px; padding:9px 10px; border:1px solid var(--border-strong); border-radius:7px; background:var(--surface); cursor:pointer; font-size:12px; line-height:1.4; }
.mail-preferences .mail-radio:has(input:checked) { border-color:var(--sel-brd); background:var(--sel-bg); }
.mail-preferences .mail-radio input { flex:none; margin:2px 0 0; accent-color:var(--accent); }
.mail-preferences .mail-radio .tl { color:var(--ink); font-weight:500; }
.mail-preferences .mail-radio .tn { color:var(--ink-muted); font-size:11px; margin-top:3px; }
.mail-preferences .mail-urgent { margin-top:4px; }
.mail-testing { margin:3px 0; padding:9px 10px; border:1px solid var(--amber-brd); border-radius:6px; background:var(--amber-bg); color:var(--amber); font-size:11px; line-height:1.5; }
.rpill.subdued, .runcard.subdued { filter:grayscale(1); color:var(--ink-muted); background:var(--inset); }
.rpill.subdued, .runcard.subdued .lbl { text-decoration:line-through; }
.rpill:disabled, .runcard[aria-disabled="true"] { cursor:not-allowed; opacity:.6; }
.runcard[role="button"]:focus-visible { outline:2px solid var(--link); outline-offset:2px; }
.course-cancellation-options { max-height:300px; margin:12px 0; }
.layout-json { font:11px/1.5 'IBM Plex Mono',monospace; white-space:pre-wrap; overflow-wrap:anywhere; max-height:260px; overflow:auto; }
#wf-form { font-size:12px; line-height:1.5; }
#wf-form .hint { font-size:11.5px; color:var(--ink-muted); line-height:1.5; }
#wf-form textarea.txt { width:100%; resize:vertical; min-height:80px; }
#cmdlg .card:has(#wf-form table), #cmdlg .card:has(#cancel-result), #cmdlg .card:has(#review-confirm) { max-width:960px; }
/* A <table class="g"> inside .gwrap is a real table. `.gwrap > .g` is the CSS
   grid the student sheets draw with; a table given display:grid collapses its
   header into one run-together line (her 2026-09-29 screenshot of Config →
   Branding → Input requests). */
.gwrap>table.g{display:table;width:100%;border-collapse:collapse;font-size:12px}
.gwrap>table.g th{position:sticky;top:0;z-index:1;text-align:left;vertical-align:bottom;padding:8px 10px;background:var(--zebra-a);border-bottom:1.5px solid var(--border-med);font-family:'IBM Plex Mono',monospace;font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-min);white-space:normal}
.gwrap>table.g td{padding:6px 10px;border-bottom:1px solid var(--hair);vertical-align:top;color:var(--ink-muted)}
/* Editable row-tables fill the page and show every word (her "auto-fit"). */
.rowtable td{min-width:0}
.rowtable textarea.rowcell{display:block;width:100%;box-sizing:border-box;min-height:34px;resize:vertical;overflow:hidden;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.4;font-size:12.5px}
.rowtable td.rowacts{white-space:nowrap;width:1%}
@media (max-width:700px){
  .rowtable thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
  .rowtable,.rowtable tbody,.rowtable tr,.rowtable td{display:block;width:100%;box-sizing:border-box}
  .rowtable tr{border-bottom:1.5px solid var(--border-med);padding:6px 0}
  .rowtable td{border-bottom:0;padding:4px 10px}
  .rowtable td::before{content:attr(data-label);display:block;font-family:'IBM Plex Mono',monospace;font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-min);margin-bottom:2px}
  .rowtable td.rowacts{width:100%}
}
.capsrc{font-family:'IBM Plex Mono',monospace;font-size:9.5px;padding:2px 7px;border-radius:20px;border:1px solid var(--border-med);white-space:nowrap}
.capsrc.code{background:var(--amber-bg);color:var(--amber);border-color:var(--amber-brd)}
.capsrc.setting{background:var(--ok-bg);color:var(--ok-ink);border-color:var(--ok-brd)}
.capx-course{margin:8px 0;padding:6px 0;border-top:1px solid var(--hair)}
.capcode{color:var(--hardcoded,#c5221f)}
.capcode-list li{color:var(--hardcoded,#c5221f)}
.capf{font-size:12.5px;margin:6px 0 8px;padding:6px 10px;border-left:3px solid var(--border-med);background:var(--card)}
.capx-course>summary{cursor:pointer;font-size:12.5px;padding:4px 0}
