/* Shared scrolling and dismissal for the public bell and internal warning panels. */
.etop-notice-backdrop { position:fixed; inset:0; z-index:12000; background:rgba(15,35,56,.16); touch-action:none; }
.etop-notice-backdrop[hidden], .etop-notice-dialog[hidden] { display:none!important; }
.etop-notice-dialog.eh-inbox-panel, .etop-notice-dialog.etop-fc__panel { position:fixed; z-index:12001; display:flex; flex-direction:column; max-height:var(--etop-notice-height,calc(100dvh - 24px)); min-height:0; overflow:hidden; box-sizing:border-box; animation:none; overscroll-behavior:contain; }
.etop-notice-dialog > :not(ul) { flex:0 0 auto; }
.etop-notice-dialog > ul { flex:0 1 auto; min-height:0; max-height:none!important; overflow-y:auto; overscroll-behavior:contain; -webkit-overflow-scrolling:touch; touch-action:pan-y pinch-zoom; }
.etop-notice-dialog > .etop-notice-scrollport { position:relative; display:flex; flex:0 1 auto; min-height:0; overflow:hidden; isolation:isolate; }
.etop-notice-dialog .etop-notice-scrollport > ul { flex:0 1 auto; width:100%; min-width:0; min-height:0; max-height:none!important; margin-top:0; margin-bottom:0; overflow-y:auto; overscroll-behavior:contain; -webkit-overflow-scrolling:touch; touch-action:pan-y pinch-zoom; }
.etop-notice-dialog.is-notice-pulling .etop-notice-scrollport > ul,
.etop-notice-dialog.is-notice-settling .etop-notice-scrollport > ul { will-change:transform; }
.etop-notice-dialog .etop-notice-pull { position:absolute; left:0; right:0; z-index:-1; display:flex; align-items:center; justify-content:center; gap:9px; height:44px; padding:0 12px; box-sizing:border-box; color:var(--ea-muted,#536d88); font:12px/1.4 Arial,sans-serif; pointer-events:none; transform-origin:center; will-change:transform,opacity; }
.etop-notice-dialog .etop-notice-pull[hidden] { display:none!important; }
.etop-notice-dialog .etop-notice-pull-top { top:0; }
.etop-notice-dialog .etop-notice-pull-bottom { bottom:0; }
.etop-notice-dialog .etop-notice-pull-icon { display:inline-flex; align-items:center; justify-content:center; flex:0 0 28px; width:28px; height:28px; border:1px solid var(--ea-line,#cfdeef); border-radius:50%; color:#0871c7; background:var(--ea-raised,#eff6fe); box-shadow:0 2px 1px #16314f20,0 4px 8px #16314f18; }
.etop-notice-dialog .etop-notice-pull-icon svg { display:block; width:18px; height:18px; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
.etop-notice-dialog .etop-notice-pull .etop-notice-refresh-status { margin:0; padding:0; color:inherit; font:inherit; }
.etop-notice-dialog.is-notice-ready .etop-notice-pull-top { color:#0871c7; }
.etop-notice-dialog.is-notice-ready .etop-notice-pull-icon { border-color:#ff8133; }
.etop-notice-dialog.is-notice-refreshing .etop-notice-pull-top { z-index:1; }
.etop-notice-dialog.is-notice-refreshing .etop-notice-pull-icon svg { animation:etop-notice-spin .85s linear infinite; }
@keyframes etop-notice-spin { to { transform:rotate(360deg); } }

.etop-notice-dialog > header { align-items:center; gap:8px; }
.etop-notice-dialog > header > :first-child { flex:1 1 auto; min-width:0; }
.etop-notice-dialog > header > button:not(.etop-notice-close) { flex:0 1 auto; max-width:125px; }
.etop-notice-dialog > header > .etop-notice-close { display:inline-flex; flex:0 0 36px; align-items:center; justify-content:center; width:36px; height:36px; min-width:36px; min-height:36px; padding:0; border:1px solid var(--ea-line,#cfdeef); border-radius:9px; background:var(--ea-raised,#eff6fe); color:var(--ea-ink,#16314f); font:500 26px/1 Arial,sans-serif; cursor:pointer; }
.etop-notice-dialog > header > .etop-notice-close:hover { border-color:#ff8133; box-shadow:0 0 0 2px #ff813344; }
.etop-notice-dialog .etop-notice-close:focus-visible { outline:2px solid #ff8133; outline-offset:2px; }
.etop-notice-dialog > header > .etop-notice-refresh { display:inline-flex; align-items:center; justify-content:center; flex:0 0 36px; width:36px; height:36px; max-width:none; padding:0; border:1px solid var(--ea-line,#cfdeef); border-radius:9px; background:var(--ea-raised,#eff6fe); color:var(--ea-ink,#16314f); font:500 24px/1 Arial,sans-serif; cursor:pointer; }
.etop-notice-dialog > header > .etop-notice-refresh:hover { border-color:#ff8133; box-shadow:0 0 0 2px #ff813344; }
.etop-notice-dialog > header > .etop-notice-refresh:disabled { opacity:.6; cursor:wait; }
.etop-notice-dialog .etop-notice-refresh-status, .etop-notice-dialog .etop-notice-updated { font:12px/1.5 Arial,sans-serif; color:var(--ea-muted,#536d88); padding:6px 0; margin:4px 0; overflow-wrap:anywhere; }
.etop-notice-dialog .etop-notice-refresh-status[hidden] { display:none!important; }
.etop-notice-dialog.etop-fc__panel .etop-notice-refresh-status, .etop-notice-dialog.etop-fc__panel .etop-notice-updated { padding:7px 16px; }
.etop-notice-dialog > header > button[data-etop-fc-read-all] { max-width:88px; }
.etop-admin-shell .ea-staff-dialog.etop-overlay-dialog { position:fixed; margin:0; inset:auto; width:660px; max-width:calc(100vw - 24px); max-height:var(--etop-notice-height,calc(100dvh - 24px)); padding:0; overflow:hidden; }
.ea-staff-dialog.etop-overlay-dialog > form { display:flex; flex-direction:column; margin:0; padding:20px; box-sizing:border-box; max-height:var(--etop-notice-height,calc(100dvh - 24px)); min-height:0; }
.ea-staff-dialog.etop-overlay-dialog form > header, .ea-staff-dialog.etop-overlay-dialog form > .ea-staff-actions { flex:0 0 auto; }
.ea-staff-dialog.etop-overlay-dialog [data-staff-scroll] { overflow-y:auto; min-height:0; flex:0 1 auto; overscroll-behavior:contain; -webkit-overflow-scrolling:touch; touch-action:pan-y pinch-zoom; padding:0 3px; }
.ea-staff-dialog.etop-overlay-dialog header h2 { min-width:0; overflow-wrap:anywhere; }
.ea-staff-dialog.etop-overlay-dialog header [data-staff-close] { flex:0 0 40px; height:40px; width:40px; padding:0; font-size:24px; }
.ea-staff-dialog.etop-overlay-dialog .ea-staff-actions { margin-top:14px; }
@media(max-width:600px) { .ea-staff-dialog.etop-overlay-dialog > form { padding:14px; } }
.etop-admin-shell .ea-staff-row-actions > a.ea-staff-info { display:inline-flex; }
.ea-staff-account-panel { padding:22px!important; margin-bottom:18px; }
.ea-staff-account-panel h2 { overflow-wrap:anywhere; }
.ea-staff-account-panel p { line-height:1.6; }
.ea-staff-account-details { display:grid; grid-template-columns:minmax(130px,190px) minmax(0,1fr); margin:18px 0; }
.ea-staff-account-details dt,.ea-staff-account-details dd { margin:0; padding:10px 0; border-bottom:1px solid var(--ea-line); overflow-wrap:anywhere; }
.ea-staff-account-details dt { color:var(--ea-muted); padding-right:12px; }
.ea-staff-password-form { max-width:560px; }
.ea-staff-password-form > label { display:block; margin:16px 0; font-weight:600; }
.etop-admin-shell .ea-staff-password-form input:not([type=hidden]) { display:block; box-sizing:border-box; min-width:0; width:100%; max-width:100%; height:44px; margin:8px 0 0; padding:9px 11px; font-size:16px; }
.ea-staff-password-tools { display:flex; flex-wrap:wrap; gap:10px; }
@media(max-width:480px) { .ea-staff-account-panel { padding:16px!important; } .ea-staff-account-details { grid-template-columns:minmax(110px,42%) minmax(0,1fr); font-size:14px; } }

/* Class and lesson dialogs use the same viewport and page-lock behavior. */
.etop-admin-shell .es-dialog.etop-overlay-dialog { position:fixed; inset:auto; margin:0; padding:0; max-width:calc(100vw - 24px); max-height:var(--etop-notice-height,calc(100dvh - 24px)); overflow:hidden; box-sizing:border-box; }
.etop-admin-shell .es-dialog.etop-overlay-dialog[open] { display:flex; flex-direction:column; }
.etop-admin-shell .es-dialog.etop-overlay-dialog .es-dialog-header, .etop-admin-shell .es-dialog.etop-overlay-dialog .es-dialog-footer { flex:0 0 auto; }
.etop-admin-shell .es-dialog.etop-overlay-dialog .es-dialog-header h2 { min-width:0; overflow-wrap:anywhere; }
.etop-admin-shell .es-dialog.etop-overlay-dialog .es-dialog-header button { flex:0 0 40px; width:40px; height:40px; padding:0; }
.etop-admin-shell .es-dialog.etop-overlay-dialog .es-dialog-body { flex:0 1 auto; min-height:0; max-height:none; overflow-y:auto; overscroll-behavior:contain; -webkit-overflow-scrolling:touch; touch-action:pan-y pinch-zoom; }
