/* Same-tab notice/message view and bottom-dock spacing (work/notice-dock-family-20261017). No emoji, no beige. */
/* 1. Every studio screen keeps its last content above the fixed bottom dock (and a toast shown above it). */
html body:has(#student-utility-dock) .content{padding-bottom:max(110px,calc(var(--ndf-dock-h,60px) + 24px + env(safe-area-inset-bottom,0px) + var(--ndf-toast-h,0px)))!important}
html body:has(#student-utility-dock){scroll-padding-bottom:calc(var(--ndf-dock-h,60px) + 24px)}
html body:has(#student-utility-dock) #toast{bottom:calc(var(--ndf-dock-h,60px) + 12px + env(safe-area-inset-bottom,0px))!important}
/* 2. Notice / message page view. The original list stays in the DOM, hidden while a notice is open. */
.content[data-ndf-open]>:not(.ndf-detail){display:none!important}
.ndf-detail{display:grid;gap:16px;max-width:880px;margin:0 auto;width:100%}
.ndf-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.ndf-back{flex:0 0 auto;white-space:nowrap;display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:8px 16px;border:1px solid #c9a24a;border-radius:10px;background:transparent;color:inherit;font:600 15px/1.4 inherit;cursor:pointer}
.ndf-back:hover{background:rgba(224,180,90,.12)}
.ndf-back:focus-visible{outline:3px solid #e0b45a;outline-offset:2px}
.ndf-crumb{color:#64748b;font-size:13px}
.ndf-article{padding:28px 32px!important}
.ndf-article h2{margin:10px 0 6px;font-size:24px;line-height:1.35;overflow-wrap:anywhere}
.ndf-article h2:focus{outline:none}
.ndf-meta{margin:0 0 18px;color:#64748b;font-size:13px}
.ndf-body{white-space:pre-wrap;overflow-wrap:anywhere;font-size:16px;line-height:1.8}
.ndf-body a,.ndf-files a,.ndf-comment a{color:#1d4ed8;text-decoration:underline;text-underline-offset:2px;overflow-wrap:anywhere}
.ndf-files{margin-top:20px;padding-top:16px;border-top:1px solid #e2e8f0}
.ndf-files h3,.ndf-comments h3{margin:0 0 10px;font-size:16px}
.ndf-files ul{margin:0;padding-left:20px;display:grid;gap:6px}
.ndf-comments{padding:22px 32px!important}
.ndf-comment{padding:12px 0;border-bottom:1px solid #e2e8f0}
.ndf-comment time{margin-left:8px;color:#64748b;font-size:12px}
.ndf-comment p{margin:6px 0 0;white-space:pre-wrap;overflow-wrap:anywhere}
.ndf-empty{color:#64748b;margin:6px 0}
.ndf-form{display:grid;gap:8px;margin-top:14px}
.ndf-form label{display:grid;gap:6px;font-weight:600}
.ndf-form textarea{width:100%;box-sizing:border-box;font:inherit}
.ndf-form button{justify-self:end}
.ndf-status{margin:0;min-height:1.2em;color:#64748b;font-size:13px}
html[data-appearance=dark] .ndf-body a,html[data-appearance=dark] .ndf-files a,html[data-appearance=dark] .ndf-comment a{color:#93c5fd}
html[data-appearance=dark] .ndf-crumb,html[data-appearance=dark] .ndf-meta,html[data-appearance=dark] .ndf-empty{color:#a3b1c6}
.class-message-card.ndf-sent .tag{background:#e8eef6;color:#334155}
/* 3. Private conversation shown as a page over the content area (keeps the original chat, its polling and drafts). */
dialog.chat-dialog.ndf-chat-page{position:fixed!important;inset:auto!important;left:var(--ndf-l,0)!important;top:var(--ndf-t,0)!important;width:var(--ndf-w,100vw)!important;max-width:none!important;height:var(--ndf-h,100dvh)!important;max-height:none!important;margin:0!important;border-radius:0!important;border:0!important;display:flex!important;flex-direction:column}
dialog.chat-dialog.ndf-chat-page::backdrop{background:transparent}
dialog.chat-dialog.ndf-chat-page .chat-feed{flex:1 1 auto;height:auto!important;min-height:0}
dialog.chat-dialog.ndf-chat-page .chat-header{gap:12px;justify-content:flex-start}
dialog.chat-dialog.ndf-chat-page .chat-header>:last-child{margin-left:auto}
@media (max-width:760px){
 .ndf-article{padding:20px 18px!important}.ndf-comments{padding:18px!important}
 .ndf-article h2{font-size:20px}.ndf-body{font-size:15px}
}
