/* Every color inherits an administrator-selected light/dark theme token. */
:root{--message-reading-width:800px;--message-bubble-width:82%;--message-gap:16px;--thread-height:clamp(260px,46dvh,620px);--message-dialog-width:620px}
.sidebar{overflow-y:auto;overscroll-behavior:contain}
.notification-bell{position:relative;flex-shrink:0;min-width:44px;min-height:44px}

[hidden]{display:none!important}
.communication-course-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space)}
.communication-course{display:flex;flex-direction:column;align-items:flex-start;gap:12px;min-width:0}
.communication-course .text-link{margin-block-start:8px}.communication-course h2{overflow-wrap:anywhere}
.message-list-row{display:flex;align-items:center;gap:var(--message-gap);padding-block:20px;border-block-end:1px solid var(--border);min-width:0}
.message-list-row:last-of-type{border-block-end:0}.message-list-row:hover strong{color:var(--accent-text)}
.message-list-icon{display:inline-grid;place-items:center;width:46px;height:46px;border-radius:var(--radius-sm);background:var(--accent-soft);color:var(--accent-text);flex-shrink:0}
.message-list-copy{display:grid;gap:4px;flex:1;min-width:0;overflow-wrap:anywhere}.message-list-copy strong{font-size:15px}.message-list-copy small{color:var(--muted);font-size:12px}
.message-list-row>.badge,.message-list-row>.tag{flex-shrink:0}.message-search{display:flex;gap:10px;padding-block-end:16px;border-block-end:1px solid var(--border)}.message-search input{flex:1;min-width:0}
.message-pagination{display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap;margin-block-start:22px}
.thread-panel{max-width:1060px;margin-inline:auto;display:flex;flex-direction:column;padding:0;overflow:hidden}
.thread-heading{display:flex;align-items:center;gap:14px;padding:24px;border-block-end:1px solid var(--border);background:var(--surface)}.thread-heading>div{flex:1;min-width:0}.thread-heading h1{font-size:22px;overflow-wrap:anywhere}.thread-heading p{font-size:12px}.thread-heading>.pill{flex-shrink:0}
.thread-history-links{display:flex;justify-content:space-between;gap:12px;padding:12px 24px}
.thread-messages{height:var(--thread-height);overflow-y:auto;overscroll-behavior:contain;display:flex;flex-direction:column;gap:16px;padding:24px;scrollbar-gutter:stable;background:var(--bg)}
.message-bubble{width:fit-content;max-width:var(--message-bubble-width);padding:16px 19px;border:1px solid var(--border);border-radius:var(--radius) var(--radius) var(--radius) 5px;align-self:flex-end;background:var(--surface);color:var(--text);flex-shrink:0}
.message-bubble.message-own{align-self:flex-start;background:var(--accent-soft);color:var(--accent-text);border-color:transparent;border-radius:var(--radius) var(--radius) 5px var(--radius)}
.message-meta{display:flex;align-items:center;gap:18px;justify-content:space-between;margin-block-end:8px;font-size:11px;flex-wrap:wrap}.message-meta time{direction:ltr;unicode-bidi:isolate;font-size:10px}
.message-body{overflow-wrap:anywhere;line-height:2;unicode-bidi:plaintext}.thread-empty{margin:auto;text-align:center}.thread-new{align-self:center;margin:10px}.thread-panel>#thread-status{padding-inline:24px;margin:0}
.reply-composer{padding:18px 24px 24px;border-block-start:1px solid var(--border);background:var(--surface)}.reply-composer .field{margin-block-end:10px}.reply-composer textarea{display:block;width:100%;min-height:88px;max-height:240px;resize:vertical}.composer-footer{display:flex;align-items:center;justify-content:space-between;gap:14px}.composer-footer>[role=status]{color:var(--muted);font-size:12px}.composer-footer button{flex-shrink:0;min-height:44px}
.announcement-form{max-width:var(--message-reading-width)}.announcement-form input[type=text],.announcement-form textarea{width:100%}.audience-choices{margin:20px 0;padding:16px;border:1px solid var(--border);border-radius:var(--radius-sm)}.audience-choices legend{padding-inline:8px;font-weight:700}.audience-choices label{display:flex;align-items:center;gap:10px;min-height:44px;cursor:pointer}.audience-choices input{min-height:auto!important;width:18px;height:18px;margin:0;accent-color:var(--accent)}
.recipient-section{padding:18px;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);margin-block-end:20px}.recipient-section>label{display:block;font-size:12px;margin-block-end:8px}.recipient-section>input{width:100%}.recipient-checklist{max-height:300px;overflow:auto;overscroll-behavior:contain;margin-block-start:12px}.recipient-checklist label{display:flex;align-items:center;gap:10px;min-height:44px;cursor:pointer;overflow-wrap:anywhere}.recipient-checklist input{width:18px;height:18px;flex-shrink:0;accent-color:var(--accent)}
.announcement-hint{font-size:12px;color:var(--muted);padding:16px;border-inline-start:3px solid var(--accent);background:var(--surface-soft);border-radius:var(--radius-sm);margin-block:18px}
.announcement-reading{max-width:var(--message-reading-width)}.announcement-meta{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;color:var(--muted);font-size:12px;margin-block-end:16px}.announcement-meta time{direction:ltr;unicode-bidi:isolate;font-size:11px}.announcement-title{font-size:26px;overflow-wrap:anywhere}.announcement-sender{font-size:12px;margin-block-start:8px}.announcement-body{margin-block:24px}.receipt-summary{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-block:18px}.announcement-create>p{margin-block-end:12px}
dialog.announcement-modal{width:min(var(--message-dialog-width),calc(100% - 32px));max-width:var(--message-dialog-width);max-height:calc(100vh - 32px);max-height:calc(100dvh - 32px);padding:28px;overflow:auto;overscroll-behavior:contain}.announcement-modal-heading{display:flex;align-items:center;gap:12px;margin-block-end:18px}.announcement-modal h2{font-size:23px;overflow-wrap:anywhere;margin-block-end:12px}.announcement-modal .announcement-body{max-height:45vh;max-height:45dvh;overflow:auto;padding-inline-end:8px;overscroll-behavior:contain}.announcement-modal form{margin-block-start:20px}.announcement-modal .button{min-height:48px}.message-error{color:var(--danger);background:var(--danger-bg);padding:12px;border-radius:var(--radius-sm);font-size:12px;margin-block-start:14px}html:has(#announcement-modal[open]){overflow:hidden}
@media(max-width:1100px){.communication-course-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){:root{--message-gap:12px;--message-bubble-width:94%;--thread-height:clamp(220px,43dvh,460px)}.communication-course-grid{grid-template-columns:1fr}.message-list{padding:16px}.message-list-row{flex-wrap:wrap;gap:12px}.message-list-row>.message-list-copy{flex-basis:calc(100% - 60px)}.message-list-row>.badge,.message-list-row>.tag{margin-inline-start:58px}.thread-heading{padding:16px;flex-wrap:wrap}.thread-heading h1{font-size:19px}.thread-heading>div{flex:1 1 calc(100% - 60px)}.thread-heading>.pill{margin-inline-start:60px}.thread-messages{padding:16px}.thread-history-links{padding:12px 16px}.reply-composer{padding:14px 16px 18px}.message-bubble{padding:12px 14px}.composer-footer{align-items:flex-start}.message-meta{gap:6px 12px}.thread-panel>#thread-status{padding-inline:16px}.announcement-form{padding:18px}.announcement-form input,.announcement-form textarea,.reply-composer textarea,.message-search input{font-size:16px}.announcement-title{font-size:22px}.topbar-actions{gap:10px}.receipt-table-wrap{overflow:visible}.receipt-table{display:block;min-width:0}.receipt-table thead{display:none}.receipt-table tbody{display:grid;gap:12px}.receipt-table tr{display:grid;grid-template-columns:1fr 1fr;padding:14px;background:var(--surface-soft);border-radius:var(--radius-sm);border:1px solid var(--border);gap:12px}.receipt-table td{display:block;padding:0;border:0;overflow-wrap:anywhere;white-space:normal}.receipt-table td::before{content:attr(data-label);display:block;font-size:10px;color:var(--muted);margin-block-end:5px}.receipt-table td.empty-cell{grid-column:1/-1}.announcement-reading{padding:20px}dialog.announcement-modal{padding:20px;width:calc(100% - 20px);max-height:calc(100dvh - 20px)}.announcement-modal .announcement-body{max-height:38dvh}.announcement-modal h2{font-size:20px}.announcement-modal form{padding-block-end:env(safe-area-inset-bottom)}}
@media(max-width:360px){.receipt-table tr{grid-template-columns:1fr}.composer-footer{flex-wrap:wrap}.composer-footer button{width:100%}.notification-bell{min-width:40px}.topbar-actions{gap:6px}.message-list-row>.badge,.message-list-row>.tag{margin-inline-start:0}}

/* Unified bell: stable dot, compact disclosure and theme-driven responsive dimensions. */
:root{--notification-width:410px;--notification-height:390px;--notification-dot-size:11px;--notification-padding:18px}
.notification-center{position:relative;flex-shrink:0}
.notification-dot{position:absolute;inset-block-start:5px;inset-inline-end:5px;width:var(--notification-dot-size);height:var(--notification-dot-size);border-radius:50%;background:var(--danger);border:2px solid var(--surface);box-sizing:content-box;pointer-events:none}
.notification-panel{position:absolute;inset-block-start:calc(100% + 12px);inset-inline-end:0;width:min(var(--notification-width),calc(100vw - 24px));z-index:80;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;text-align:start;isolation:isolate}
.notification-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:var(--notification-padding);border-block-end:1px solid var(--border)}
.notification-heading h2{font-size:16px;margin:0;line-height:1.8}.notification-heading p{font-size:11px;color:var(--muted);margin:3px 0 0}.notification-heading .icon-button{flex-shrink:0;width:44px;height:44px;font-size:23px}
.notification-scroll{max-height:min(var(--notification-height),calc(100dvh - 230px));overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable;min-height:100px}
.notification-list{list-style:none;margin:0;padding:6px}.notification-list>li+li{border-block-start:1px solid var(--border)}
.notification-item{display:flex;align-items:flex-start;gap:12px;padding:14px 10px;border-radius:var(--radius-sm);color:var(--text);text-decoration:none;min-height:90px}
.notification-item:hover,.notification-item:focus-visible{background:var(--surface-soft)}
.notification-type{display:grid;place-items:center;width:34px;height:34px;border-radius:12px;background:var(--accent-soft);color:var(--accent-text);flex-shrink:0}.notification-type .icon{width:18px;height:18px}
.notification-copy{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1}.notification-kind{font-size:10px;color:var(--muted);overflow-wrap:anywhere}.notification-copy strong{font-size:13px;line-height:1.8;overflow-wrap:anywhere}.notification-preview{font-size:12px;line-height:1.9;color:var(--muted);overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.notification-meta{display:flex;gap:6px 12px;flex-wrap:wrap;font-size:10px;color:var(--muted)}.notification-meta time{direction:ltr;unicode-bidi:isolate}
.notification-item-dot{width:6px;height:6px;margin-block-start:13px;border-radius:50%;background:var(--danger);flex-shrink:0}
.notification-footer{display:flex;gap:12px;justify-content:space-around;align-items:center;padding:8px 12px calc(8px + env(safe-area-inset-bottom));border-block-start:1px solid var(--border);background:var(--surface-soft)}.notification-footer a{display:flex;align-items:center;justify-content:center;min-height:44px;font-size:12px;color:var(--accent-text);padding-inline:6px}
.notification-status{text-align:center;font-size:12px;color:var(--muted);padding:12px 18px;margin:0}.notification-status:empty{display:none}
.notification-more{display:block;min-height:44px;margin:8px auto 16px;font-size:12px}.notification-sentinel{display:block;height:1px}
.notification-empty{padding:28px 18px;text-align:center;display:grid;justify-items:center;gap:12px}.notification-empty strong{font-size:14px}.notification-empty p{font-size:11px;color:var(--muted);margin:0}
.notification-refresh{display:block;width:100%;padding:10px 16px;min-height:44px;border:0;border-block-end:1px solid var(--border);color:var(--accent-text);background:var(--accent-soft);font-size:12px;cursor:pointer}
.message-bubble:target{outline:2px solid var(--accent);outline-offset:3px}
@media(max-width:700px){:root{--notification-padding:14px;--notification-height:440px}.notification-panel{position:fixed;inset-inline:12px;inset-block-start:calc(72px + env(safe-area-inset-top));width:auto;max-width:none}.notification-scroll{max-height:min(var(--notification-height),calc(100dvh - 240px - env(safe-area-inset-bottom)))}.notification-item{padding:14px 8px;gap:10px}}
@media(max-width:360px){.notification-panel{inset-inline:8px}.notification-heading h2{font-size:14px}.notification-type{width:30px;height:30px}.notification-item{gap:8px}.notification-footer a{font-size:11px}}
@media(max-height:520px){.notification-panel{position:fixed;inset-block-start:8px;inset-inline-end:8px;max-height:calc(100dvh - 16px)}.notification-heading{padding:8px 14px}.notification-heading p{display:none}.notification-scroll{max-height:calc(100dvh - 170px)}.notification-footer{padding-block:2px}}
@media(prefers-reduced-motion:reduce){.notification-panel,.notification-item{scroll-behavior:auto;transition:none;animation:none}}
