/* FI-020 Assignments hub (assignments-hub-panel.js). Same grammar as the QUI3-28
   panel it replaces: 12px cards, 11px uppercase labels, purple accent. */

.ah, .ah-home { --ah-accent:#5b21b6; --ah-accent-soft:#ede9fe; --ah-line:#e5e7eb; --ah-muted:#6b7280; --ah-bad:#c0392b; --ah-warn:#b45309; }
.ah-hd { display:flex; justify-content:space-between; align-items:flex-start; gap:14px; margin-bottom:12px; flex-wrap:wrap; }
.ah-hd h3 { margin:0; }
.ah-hd p { margin:4px 0 0; font-size:12.5px; color:var(--ah-muted); max-width:620px; }
.ah-filters { display:flex; gap:8px; flex-wrap:wrap; align-items:center; }
.ah-filters select { padding:7px 10px; border:1.5px solid #e0e0e0; border-radius:6px; font-size:12.5px; font-family:inherit; background:#fff; max-width:220px; }
.ah-loading { text-align:center; color:#888; padding:20px; }
.ah-muted { color:var(--ah-muted); }

.ah-buckets { display:flex; gap:10px; flex-wrap:wrap; margin-bottom:12px; }
.ah-bucket { display:flex; flex-direction:column; align-items:flex-start; gap:2px; padding:10px 14px; min-width:120px; border:1.5px solid var(--ah-line); border-radius:12px; background:#fff; cursor:pointer; font-family:inherit; text-align:left; }
.ah-bucket b { font-size:20px; color:#111; line-height:1.1; }
.ah-bucket span { font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.5px; color:var(--ah-muted); }
.ah-bucket.t-warn b { color:var(--ah-warn); }
.ah-bucket.t-bad b { color:var(--ah-bad); }
.ah-bucket.on { border-color:var(--ah-accent); box-shadow:0 0 0 3px rgba(91,33,182,.12); }
.ah-filter-note { font-size:12.5px; color:var(--ah-muted); margin:-4px 0 10px; }
.ah-link { background:none; border:none; padding:0; color:#2563eb; font-weight:600; font-size:12.5px; cursor:pointer; font-family:inherit; }

.ah-table-wrap { overflow-x:auto; border:1px solid var(--ah-line); border-radius:12px; background:#fff; }
.ah-table { width:100%; border-collapse:collapse; font-size:13px; }
.ah-table th { text-align:left; font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.5px; color:var(--ah-muted); padding:10px 12px; border-bottom:1px solid var(--ah-line); background:#fafafa; white-space:nowrap; }
.ah-table td { padding:10px 12px; border-bottom:1px solid #f1f1f4; vertical-align:middle; }
.ah-table tr:last-child td { border-bottom:none; }
.ah-user { font-weight:600; color:#111; }
.ah-un { color:#9ca3af; font-size:11.5px; }
.ah-nowork { display:inline-block; font-size:11px; font-weight:700; color:var(--ah-warn); background:#fef3c7; border-radius:999px; padding:2px 9px; white-space:nowrap; }
.ah-bad { color:var(--ah-bad); font-weight:700; }
.ah-actions { text-align:right; white-space:nowrap; }
.ah-empty { text-align:center; color:#888; padding:30px 12px; font-size:13px; }

.ah-bar { display:inline-block; width:90px; height:7px; border-radius:999px; background:#eee; vertical-align:middle; overflow:hidden; margin-right:8px; }
.ah-bar > span { display:block; height:100%; background:var(--ah-accent); border-radius:999px; }
.ah-frac { font-size:12px; color:#374151; white-space:nowrap; }

.ah-detail > td { background:#fbfaff; padding:6px 12px 12px; }
.ah-asg { border:1px solid var(--ah-line); border-radius:10px; background:#fff; padding:10px 12px; margin-top:8px; }
.ah-asg.done { opacity:.7; }
.ah-asg-hd { display:flex; flex-wrap:wrap; align-items:center; gap:6px 10px; }
.ah-asg-title { font-weight:700; color:#111; }
.ah-asg-due { font-size:12px; color:#374151; }
.ah-asg-due.bad { color:var(--ah-bad); font-weight:700; }
.ah-asg-state { margin-left:auto; font-size:12px; }
.ah-chip { font-size:10.5px; font-weight:700; color:var(--ah-accent); background:var(--ah-accent-soft); border-radius:999px; padding:2px 8px; }
.ah-chip-muted { color:#4b5563; background:#f3f4f6; }
.ah-items { list-style:none; margin:8px 0 0; padding:0; }
.ah-item { display:flex; gap:10px; align-items:baseline; padding:5px 0; border-top:1px dashed #eee; font-size:12.5px; }
.ah-kind { flex:0 0 78px; font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:.4px; color:var(--ah-muted); }
.ah-item-title { flex:1; min-width:0; color:#111; }
.ah-item-state { white-space:nowrap; color:#374151; }
.ah-item.s-done .ah-item-state { color:#15803d; font-weight:600; }
.ah-item.s-changed .ah-item-state, .ah-item.s-missing .ah-item-state { color:var(--ah-warn); font-weight:600; }

/* Buttons, toolbar, toast */
.ah-btn { background:var(--ah-accent,#5b21b6); color:#fff; border:none; border-radius:8px; padding:8px 14px; font-size:13px; font-weight:700; cursor:pointer; font-family:inherit; }
.ah-btn[disabled] { opacity:.45; cursor:not-allowed; }
.ah-btn.ghost { background:#fff; color:#374151; border:1.5px solid #e0e0e0; }
.ah-link.danger { color:#c0392b; }
.ah-toolbar { display:flex; justify-content:space-between; align-items:center; gap:10px; flex-wrap:wrap; margin:-2px 0 10px; font-size:12.5px; color:#6b7280; }
.ah-bulk { display:flex; gap:12px; align-items:center; }
.ah-cb { width:28px; }
.ah-toast { position:fixed; left:50%; bottom:28px; transform:translateX(-50%); background:#111827; color:#fff; padding:10px 16px; border-radius:10px; font-size:13px; z-index:100001; box-shadow:0 8px 24px rgba(0,0,0,.2); }
.ah-toast.bad { background:#991b1b; }
.ah-ok { color:#15803d; }
.ah-done { font-size:10.5px; font-weight:700; color:#15803d; background:#dcfce7; border-radius:999px; padding:1px 7px; margin-left:auto; }
.ah-warn { background:#fef3c7; color:#92400e; border-radius:8px; padding:8px 12px; font-size:12.5px; margin:6px 0 10px; }
.ah-err { color:#c0392b; font-size:12.5px; font-weight:600; }

/* Overlay sheets (drawer + detail) */
.ah-overlay { position:fixed; inset:0; background:rgba(17,24,39,.45); z-index:100000; display:flex; justify-content:flex-end; }
.ah-sheet { background:#fff; width:min(980px,100vw); height:100%; display:flex; flex-direction:column; box-shadow:-12px 0 40px rgba(0,0,0,.18); font-size:13px; color:#111; }
.ah-sheet.ah-wide { width:min(1100px,100vw); }
.ah-sheet-hd { display:flex; align-items:center; gap:14px; padding:14px 18px; border-bottom:1px solid #e5e7eb; flex-wrap:wrap; }
.ah-sheet-hd h3 { margin:0; font-size:17px; }
.ah-sheet-bd { flex:1; overflow:auto; padding:16px 18px; }
.ah-sheet-ft { display:flex; justify-content:space-between; align-items:center; gap:12px; padding:12px 18px; border-top:1px solid #e5e7eb; }
.ah-sheet-ft > span { display:flex; gap:8px; }
.ah-x { margin-left:auto; background:none; border:none; font-size:24px; line-height:1; cursor:pointer; color:#6b7280; padding:0 4px; }
.ah-x.sm { font-size:18px; margin-left:8px; }
.ah-steps { display:flex; gap:6px; list-style:none; margin:0; padding:0; }
.ah-steps li { font-size:11.5px; font-weight:700; color:#9ca3af; background:#f3f4f6; padding:4px 10px; border-radius:999px; }
.ah-steps li.on { color:#fff; background:#5b21b6; }
.ah-steps li.done { color:#5b21b6; background:#ede9fe; }
.ah-sheet label { display:block; font-size:12px; font-weight:700; color:#374151; margin-bottom:10px; }
.ah-sheet input[type=text], .ah-sheet input[type=date], .ah-sheet input[type=search], .ah-sheet select { display:block; width:100%; box-sizing:border-box; margin-top:4px; padding:7px 10px; border:1.5px solid #e0e0e0; border-radius:6px; font-size:13px; font-family:inherit; font-weight:400; }
.ah-grid2 { display:grid; grid-template-columns:2fr 1fr; gap:12px; }
.ah-field { margin:12px 0; }
.ah-label { font-size:12px; font-weight:700; color:#374151; margin-bottom:6px; }
.ah-chips { display:flex; flex-wrap:wrap; gap:6px; }
.ah-sheet label.ah-pill { display:inline-flex; align-items:center; gap:6px; margin:0; padding:5px 10px; border:1.5px solid #e5e7eb; border-radius:999px; font-weight:600; cursor:pointer; }
.ah-picklist { border:1px solid #e5e7eb; border-radius:8px; max-height:260px; overflow:auto; margin-top:6px; }
.ah-picklist.tall { max-height:none; height:calc(100vh - 290px); min-height:240px; }
.ah-sheet label.ah-pick { display:flex; align-items:center; gap:8px; margin:0; padding:7px 10px; border-bottom:1px solid #f3f4f6; font-weight:400; cursor:pointer; }
.ah-pick.dis { opacity:.5; }
.ah-pick > span:first-of-type { flex:1; min-width:0; }
.ah-pickrow { display:flex; flex-direction:column; align-items:flex-start; width:100%; text-align:left; background:none; border:none; border-bottom:1px solid #f3f4f6; padding:8px 10px; cursor:pointer; font-family:inherit; font-size:13px; }
.ah-pickrow.on { background:#ede9fe; }
.ah-sheet label.ah-ovr { display:flex; justify-content:space-between; align-items:center; gap:12px; font-weight:400; }
.ah-sheet label.ah-ovr input { width:170px; margin:0; }
.ah-split { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.2fr); gap:16px; }
.ah-pane-hd { display:flex; justify-content:space-between; align-items:center; margin-bottom:8px; }
.ah-tabs { display:flex; flex-wrap:wrap; gap:4px; margin:6px 0 10px; }
.ah-tab { background:#f3f4f6; border:none; border-radius:999px; padding:5px 11px; font-size:12px; font-weight:700; color:#4b5563; cursor:pointer; font-family:inherit; }
.ah-tab.on { background:#5b21b6; color:#fff; }
.ah-parts { border:1px solid #e5e7eb; border-radius:8px; max-height:calc(100vh - 470px); min-height:160px; overflow:auto; margin-bottom:10px; }
.ah-ch { font-size:11px; font-weight:800; text-transform:uppercase; letter-spacing:.5px; color:#6b7280; background:#fafafa; padding:6px 10px; border-bottom:1px solid #f3f4f6; display:flex; justify-content:space-between; }
.ah-cart { margin-top:14px; border-top:1px solid #e5e7eb; padding-top:10px; }
.ah-cart-row { display:flex; align-items:center; gap:8px; padding:5px 0; }
.ah-review { background:#fafafa; border:1px solid #e5e7eb; border-radius:10px; padding:12px 14px; }
.ah-review ul { margin:8px 0; padding-left:18px; }
.ah-msg { white-space:pre-wrap; background:#f0fdf4; border:1px solid #bbf7d0; border-radius:10px; padding:12px 14px; font-family:inherit; font-size:13px; margin:8px 0; }
.ah-meta { display:flex; flex-wrap:wrap; align-items:center; gap:10px; margin-bottom:8px; }
.ah-meta label { display:flex; align-items:center; gap:6px; margin:0; }
.ah-meta input[type=date] { width:auto; margin:0; }
.ah-row-actions { display:flex; flex-wrap:wrap; gap:8px; align-items:flex-end; margin-top:10px; }
.ah-row-actions label { margin:0; }
.ah-msgrow { border:1px solid #e5e7eb; border-radius:10px; padding:10px 12px; margin:10px 0; }
.ah-msghd { display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.ah-state { font-size:10.5px; font-weight:800; text-transform:uppercase; letter-spacing:.4px; padding:2px 8px; border-radius:999px; background:#f3f4f6; color:#374151; }
.ah-state.s-sent { background:#dcfce7; color:#166534; }
.ah-state.s-failed { background:#fee2e2; color:#991b1b; }
.ah-state.s-queued { background:#e0f2fe; color:#075985; }
.ah-state.s-held { background:#fef3c7; color:#92400e; }
.ah-state.s-skipped { background:#fef3c7; color:#92400e; }
.ah-table td input[type=date] { width:150px; margin:0; }
@media (max-width:720px) { .ah-split, .ah-grid2 { grid-template-columns:1fr; } .ah-picklist.tall { height:260px; } }

/* Student home card — no overdue colours by design */
.ah-home { text-align:left; margin:2px 0 18px; padding:14px 16px; border:1.5px solid #ddd6fe; background:#faf9ff; border-radius:16px; box-shadow:0 1px 3px rgba(0,0,0,0.05),0 6px 18px rgba(0,0,0,0.06); }
.ah-home-hd { display:flex; align-items:center; gap:9px; margin-bottom:10px; }
.ah-home-title { font-size:11px; font-weight:800; text-transform:uppercase; letter-spacing:.09em; color:#5b21b6; }
.ah-count { font-size:10px; font-weight:800; color:#5b21b6; background:#ede9fe; border-radius:999px; padding:2px 8px; line-height:1; }
.ah-scard { background:#fff; border:1px solid #ede9fe; border-radius:12px; padding:10px 12px; margin-top:8px; }
.ah-scard-hd { display:flex; justify-content:space-between; gap:10px; align-items:baseline; flex-wrap:wrap; }
.ah-sdue { font-size:12px; color:#4b5563; white-space:nowrap; }
.ah-sprog { margin-top:6px; }
.ah-sitem { display:flex; gap:10px; align-items:center; padding:6px 0; border-top:1px dashed #eee; font-size:12.5px; }
.ah-sitem.s-done .ah-item-state { color:#15803d; font-weight:600; }
.ah-open { flex-shrink:0; background:rgba(37,99,235,0.12); color:#2563eb; border:1px solid rgba(37,99,235,0.28); padding:5px 11px; font-size:12px; font-weight:700; border-radius:10px; cursor:pointer; font-family:inherit; }
.ah-sdone { margin-top:10px; font-size:12.5px; color:#4b5563; }
.ah-sdone summary { cursor:pointer; font-weight:700; }
.ah-sdone-row { padding:3px 0 3px 4px; }

/* app.css paints every <button> black + uppercase (`button {}` and, in the admin shell,
   `.container.admin-expanded button {}` at 0,2,1). Restate every property the hub's
   buttons rely on, id/overlay-scoped with !important (same shape as #adminContent .gr-toggle). */
:is(#adminContent .ah, .ah-overlay, .ah-home) button { text-transform:none !important; letter-spacing:normal !important; font-family:inherit !important; transform:none !important; box-shadow:none !important; }
:is(#adminContent .ah, .ah-overlay, .ah-home) .ah-link { background:none !important; color:#2563eb !important; padding:0 !important; border:none !important; border-radius:0 !important; font-size:12.5px !important; font-weight:600 !important; }
:is(#adminContent .ah, .ah-overlay) .ah-link.danger { color:#c0392b !important; }
:is(#adminContent .ah, .ah-overlay) .ah-btn { background:#5b21b6 !important; color:#fff !important; padding:8px 14px !important; border:none !important; border-radius:8px !important; font-size:13px !important; font-weight:700 !important; }
:is(#adminContent .ah, .ah-overlay) .ah-btn:hover { background:#4c1d95 !important; }
:is(#adminContent .ah, .ah-overlay) .ah-btn.ghost { background:#fff !important; color:#374151 !important; border:1.5px solid #e0e0e0 !important; }
:is(#adminContent .ah, .ah-overlay) .ah-btn[disabled] { opacity:.45; background:#9ca3af !important; color:#fff !important; }
#adminContent .ah .ah-bucket { background:#fff !important; color:#111 !important; padding:10px 14px !important; border:1.5px solid #e5e7eb !important; border-radius:12px !important; font-size:13px !important; font-weight:400 !important; }
#adminContent .ah .ah-bucket.on { border-color:#5b21b6 !important; box-shadow:0 0 0 3px rgba(91,33,182,.12) !important; }
.ah-overlay .ah-x { background:none !important; color:#6b7280 !important; padding:0 4px !important; border:none !important; font-size:24px !important; font-weight:400 !important; }
.ah-overlay .ah-x.sm { font-size:18px !important; }
.ah-overlay .ah-tab { background:#f3f4f6 !important; color:#4b5563 !important; padding:5px 11px !important; border:none !important; border-radius:999px !important; font-size:12px !important; font-weight:700 !important; }
.ah-overlay .ah-tab.on { background:#5b21b6 !important; color:#fff !important; }
.ah-overlay .ah-pickrow { background:none !important; color:#111 !important; padding:8px 10px !important; border:none !important; border-bottom:1px solid #f3f4f6 !important; border-radius:0 !important; font-size:13px !important; font-weight:400 !important; }
.ah-overlay .ah-pickrow.on { background:#ede9fe !important; }
.ah-home .ah-open { background:rgba(37,99,235,0.12) !important; color:#2563eb !important; border:1px solid rgba(37,99,235,0.28) !important; padding:5px 11px !important; font-size:12px !important; font-weight:700 !important; border-radius:10px !important; }

/* ── P5 Assign workspace (admin view 'assign', inside #adminContent) ───────────
   Students on the left, everything assignable on the right, a sticky basket.
   One highlight for "already has it": 4 px purple bar + light tint + the word "Assigned". */
.aw { display:grid; grid-template-columns:230px minmax(0,1fr); gap:16px; align-items:start; font-size:13px; color:#111; }
.aw-side { position:sticky; top:8px; display:flex; flex-direction:column; gap:8px; max-height:calc(100vh - 120px); border:1px solid var(--ah-line); border-radius:12px; background:#fff; padding:10px; }
.aw-side-hd { display:flex; align-items:center; justify-content:space-between; gap:8px; }
.aw-students { overflow-y:auto; display:flex; flex-direction:column; outline:none; margin:0 -4px; }
.aw-students:focus-visible { box-shadow:0 0 0 2px rgba(91,33,182,.25); border-radius:8px; }
.aw-stu-select { display:none; }
.aw-stu-name { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-weight:600; }
.aw input[type=text], .aw input[type=date], .aw input[type=search], .aw select { box-sizing:border-box; padding:7px 10px; border:1.5px solid #e0e0e0; border-radius:6px; font-size:13px; font-family:inherit; background:#fff; color:#111; }
.aw-main { min-width:0; display:flex; flex-direction:column; gap:10px; }
.aw-confirm { background:#fef3c7; color:#92400e; border-radius:10px; padding:10px 12px; font-size:13px; display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.aw-head { display:grid; grid-template-columns:1fr 2fr 150px 1fr; gap:10px; align-items:end; border:1px solid var(--ah-line); border-radius:12px; background:#fff; padding:12px; }
.aw-head label { display:flex; flex-direction:column; gap:4px; font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.5px; color:var(--ah-muted); }
.aw-to { font-size:14px; align-self:center; }
.aw-bar { display:flex; gap:10px; align-items:center; flex-wrap:wrap; }
.aw-tabs { display:flex; gap:6px; flex-wrap:wrap; }
.aw-bar input[type=search] { flex:1; min-width:160px; }
.aw-only { display:inline-flex; align-items:center; gap:6px; font-size:12.5px; color:#374151; white-space:nowrap; }
.aw-table td { vertical-align:top; }
.aw-row td:first-child { border-left:4px solid transparent; }
.aw-row.is-has td { background:#f5f3ff; }
.aw-row.is-has td:first-child { border-left-color:#5b21b6; }
.aw-title { font-weight:600; }
.aw-sub { font-size:11.5px; margin-top:2px; }
.aw-has { display:inline-block; font-size:10.5px; font-weight:700; color:#5b21b6; background:#ede9fe; border-radius:999px; padding:1px 8px; margin-left:4px; vertical-align:1px; }
.aw-prog { white-space:nowrap; }
.aw-ok { color:#15803d; font-weight:600; }
.aw-partsrow > td { background:#fbfaff; padding:0 12px 12px; border-left:4px solid transparent; }
.aw-parts { border:1px solid var(--ah-line); border-radius:10px; background:#fff; max-height:420px; overflow-y:auto; }
.aw-parts-hd, .aw-parts-ft { display:flex; justify-content:space-between; align-items:center; gap:10px; padding:8px 10px; background:#fafafa; position:sticky; z-index:1; }
.aw-parts-hd { top:0; border-bottom:1px solid #f3f4f6; }
.aw-parts-ft { bottom:0; border-top:1px solid #f3f4f6; justify-content:flex-start; }
.aw-parts-loading { padding:10px; }
.aw label.aw-part { display:flex; align-items:center; gap:8px; margin:0; padding:7px 10px; border-bottom:1px solid #f3f4f6; font-weight:400; font-size:13px; color:#111; text-transform:none; letter-spacing:normal; cursor:pointer; }
.aw label.aw-part.dis { opacity:.5; cursor:default; }
.aw label.aw-part > span:first-of-type { flex:1; min-width:0; }
.aw-done { font-size:11px; font-weight:700; color:#15803d; background:#dcfce7; border-radius:999px; padding:1px 8px; white-space:nowrap; }
.aw-inasg { font-size:11px; color:#5b21b6; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:220px; }
.aw-basket { position:sticky; bottom:0; z-index:2; display:flex; justify-content:space-between; align-items:center; gap:12px; border:1px solid var(--ah-line); border-radius:12px; background:#fff; padding:10px 12px; box-shadow:0 -6px 18px rgba(0,0,0,.06); }
.aw-basket-items { display:flex; flex-wrap:wrap; gap:6px; align-items:center; min-width:0; }
.aw-chip { display:inline-flex; align-items:center; gap:4px; font-size:12px; background:#f3f4f6; color:#111; border-radius:999px; padding:3px 4px 3px 10px; }
.aw-chip.bad { background:#fee2e2; color:#991b1b; }
.aw-dialog { margin:auto; height:fit-content; max-height:calc(100vh - 32px); border:none; border-radius:14px; padding:0; width:min(560px, calc(100vw - 32px)); box-shadow:0 20px 60px rgba(0,0,0,.25); color:#111; }
.aw-dialog::backdrop { background:rgba(17,24,39,.45); }
.aw-dlg-hd, .aw-dlg-ft { display:flex; justify-content:space-between; align-items:center; gap:10px; padding:12px 16px; }
.aw-dlg-hd { border-bottom:1px solid var(--ah-line); }
.aw-dlg-hd h3 { margin:0; font-size:16px; }
.aw-dlg-ft { border-top:1px solid var(--ah-line); justify-content:flex-end; }
.aw-dlg-bd { padding:14px 16px; max-height:60vh; overflow-y:auto; font-size:13px; }
.aw-dlg-bd label { display:block; font-size:12px; font-weight:700; color:#374151; }
.aw-dlg-bd input[type=text] { display:block; width:100%; margin-top:4px; }
.aw-dlg-items { margin:8px 0 12px; padding-left:18px; }
@media (max-width:720px) {
  .aw { grid-template-columns:1fr; }
  .aw-side { position:static; max-height:none; }
  .aw-students, #awStuFilter { display:none; }
  .aw-stu-select { display:block; width:100%; }
  .aw-head { grid-template-columns:1fr 1fr; }
  .aw-to { grid-column:1 / -1; }
  .aw-basket { flex-direction:column; align-items:stretch; }
}
/* app.css paints every admin <button> black/uppercase — restate ours (same fix as fac00b7). */
#adminContent .aw .aw-student { display:flex !important; align-items:center !important; gap:8px !important; width:100% !important; text-align:left !important; background:none !important; color:#111 !important; padding:7px 8px !important; border:none !important; border-radius:8px !important; font-size:13px !important; font-weight:400 !important; }
#adminContent .aw .aw-student:hover { background:#f5f3ff !important; }
#adminContent .aw .aw-student.on { background:#ede9fe !important; box-shadow:inset 3px 0 0 #5b21b6 !important; }
#adminContent .aw .aw-tab { background:#f3f4f6 !important; color:#4b5563 !important; padding:5px 12px !important; border:none !important; border-radius:999px !important; font-size:12px !important; font-weight:700 !important; }
#adminContent .aw .aw-tab.on { background:#5b21b6 !important; color:#fff !important; }
#adminContent .aw .aw-act { background:#5b21b6 !important; color:#fff !important; padding:6px 12px !important; border:none !important; border-radius:8px !important; font-size:12.5px !important; font-weight:700 !important; white-space:nowrap !important; }
#adminContent .aw .aw-act:hover { background:#4c1d95 !important; }
#adminContent .aw .aw-act.ghost { background:#fff !important; color:#5b21b6 !important; border:1.5px solid #ddd6fe !important; }
#adminContent .aw .aw-act.ghost:hover { background:#f5f3ff !important; }
#adminContent .aw .aw-act[disabled] { opacity:.45 !important; background:#9ca3af !important; color:#fff !important; cursor:not-allowed !important; }
#adminContent .aw .aw-mini { background:none !important; color:#2563eb !important; padding:0 !important; border:none !important; border-radius:0 !important; font-size:12px !important; font-weight:600 !important; }
#adminContent .aw .aw-basket-btn { background:#5b21b6 !important; color:#fff !important; padding:9px 16px !important; border:none !important; border-radius:8px !important; font-size:13px !important; font-weight:700 !important; white-space:nowrap !important; }
#adminContent .aw .aw-basket-btn:hover { background:#4c1d95 !important; }
#adminContent .aw .aw-basket-btn[disabled] { opacity:.45 !important; background:#9ca3af !important; cursor:not-allowed !important; }
#adminContent .aw .aw-chip-x { background:none !important; color:#6b7280 !important; padding:0 6px !important; border:none !important; border-radius:999px !important; font-size:15px !important; font-weight:400 !important; line-height:1 !important; }
.ah-loadfail { text-align:center; padding:30px 12px; font-size:13px; color:#374151; }
#adminContent .ah-loadfail .ah-btn { background:#5b21b6 !important; color:#fff !important; padding:8px 14px !important; border:none !important; border-radius:8px !important; font-size:13px !important; font-weight:700 !important; text-transform:none !important; letter-spacing:normal !important; }
.aw-sendnow { display:flex !important; align-items:center; gap:8px; margin-top:10px; padding:8px 10px; background:#f0fdf4; border:1px solid #bbf7d0; border-radius:8px; font-weight:600 !important; color:#15803d !important; }

/* ── QUI3-148: student 📌 header item, dropdown and Tasks tab badge ────────────
   Neutral colours only: the count is the hub's purple, the due date plain grey.
   Never red, never "overdue" (owner rule 2026-10-01). */
#userBar .asg-pin-btn { position:relative; display:inline-flex; align-items:center; gap:4px; height:36px; padding:0 10px !important;
  margin-right:2px; background:transparent !important; border:none !important; border-radius:999px; color:#1f2937 !important;
  font-family:inherit; font-size:15px !important; line-height:1; text-transform:none !important; letter-spacing:normal !important; cursor:pointer; }
#userBar .asg-pin-btn:hover { background:rgba(0,0,0,0.06) !important; }
#userBar .asg-pin-btn:focus-visible { outline:2px solid #5b21b6 !important; outline-offset:2px; }
#userBar .asg-pin-btn[hidden] { display:none !important; }
.asg-pin-count { min-width:18px; height:18px; padding:0 5px; border-radius:999px; background:#ede9fe; color:#5b21b6; font-size:11px; font-weight:800; line-height:18px; text-align:center; }
.asg-pin-menu { position:fixed; z-index:10050; max-height:min(70vh, 520px); overflow:auto; background:#fff; border:1px solid #e5e7eb; border-radius:14px;
  box-shadow:0 10px 32px rgba(0,0,0,0.14), 0 2px 8px rgba(0,0,0,0.06); padding:10px; text-align:left; font-size:13px; color:#111827;
  animation:asgPinIn 160ms cubic-bezier(0.23, 1, 0.32, 1); transform-origin:top right; }
@keyframes asgPinIn { from { opacity:0; transform:translateY(-4px) scale(0.98); } to { opacity:1; transform:none; } }
.asg-pin-hd { display:flex; align-items:center; gap:8px; font-size:11px; font-weight:800; text-transform:uppercase; letter-spacing:.08em; color:#5b21b6; padding:2px 4px 8px; }
.asg-pin-n { background:#ede9fe; border-radius:999px; padding:1px 7px; }
.asg-pin-list { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:8px; }
.asg-pin-row { border:1px solid #ede9fe; border-radius:10px; padding:9px 10px; background:#faf9ff; }
.asg-pin-top { display:flex; align-items:flex-start; gap:7px; }
.asg-pin-icon { flex:0 0 auto; }
.asg-pin-title { font-weight:700; overflow-wrap:anywhere; }
.asg-pin-left { margin:4px 0 0 23px; color:#374151; overflow-wrap:anywhere; }
.asg-pin-prog { margin:6px 0 0 23px; }
.asg-pin-foot { display:flex; align-items:center; justify-content:space-between; gap:8px; margin:6px 0 0 23px; }
.asg-pin-due { color:#6b7280; font-size:12px; }
.asg-pin-menu button { font-family:inherit !important; text-transform:none !important; letter-spacing:normal !important; box-shadow:none !important; }
.asg-pin-menu .asg-pin-open { padding:6px 14px !important; font-size:12px !important; font-weight:700; border-radius:999px !important; background:#5b21b6 !important; color:#fff !important; border:none !important; cursor:pointer; min-height:32px; }
.asg-pin-menu .asg-pin-open:active { transform:scale(0.97) !important; }
.asg-pin-menu .asg-pin-all { display:block; width:100%; margin-top:10px; padding:9px 10px !important; font-size:13px !important; font-weight:700; background:transparent !important; color:#5b21b6 !important; border:1px dashed #ddd6fe !important; border-radius:10px !important; cursor:pointer; }
.asg-pin-menu button:focus-visible { outline:2px solid #5b21b6 !important; outline-offset:2px; }
.asg-tab-badge { display:inline-block; margin-left:6px; min-width:16px; height:16px; padding:0 5px; border-radius:999px; background:#ede9fe; color:#5b21b6; font-size:10px; font-weight:800; line-height:16px; text-align:center; vertical-align:1px; }
.asg-tab-badge[hidden] { display:none; }
.asg-pulse { animation:asgPulse 900ms cubic-bezier(0.23, 1, 0.32, 1) 1; }
@keyframes asgPulse { 0% { box-shadow:0 0 0 0 rgba(91,33,182,0.45); } 70% { box-shadow:0 0 0 10px rgba(91,33,182,0); } 100% { box-shadow:0 0 0 0 rgba(91,33,182,0); } }
.ah-sleft { margin-top:5px; font-size:12.5px; color:#374151; }
@media (prefers-reduced-motion: reduce) { .asg-pin-menu, .asg-pulse { animation:none; } }

/* FI-022 §3.11 — format/trigger pickers and what the parent gets besides the text. */
.ah-pm { margin-bottom:8px; }
.ah-pm select { width:100%; padding:7px 9px; border:1.5px solid #e0e0e0; border-radius:6px; font:inherit; font-size:13px; background:#fff; }
.ah-attach { font-size:12.5px; color:#374151; margin:2px 0 4px; }

/* QUI3-156: an assignment whose work was removed - muted, no Open, no done/overdue badge */
.ah-scard.ah-gone { opacity:.75; background:transparent; border-style:dashed; }
.ah-scard.ah-gone b, .ah-scard.ah-gone .ah-sleft { color:var(--ah-muted); }
