/* ===== 공지 알림 레이어 / 팝업 상세 (전 페이지 공통) ===== */

/* 주입형 벨 (sticky 헤더가 없는 페이지의 page-title-right 등에 삽입) */
.geo-notice-bell {position: relative; width: 36px; height: 36px; border: 0; border-radius: 8px; background: #F5F7FC; color: #2B394F; font-size: 16px; cursor: pointer; vertical-align: middle;}
.geo-notice-bell:hover {background: #EBF0FA;}
.geo-notice-bell .geo-notice-badge {position: absolute; top: -4px; right: -5px; min-width: 18px; height: 18px; padding: 0 5px; box-sizing: border-box;
    display: inline-flex; align-items: center; justify-content: center; border: 1px solid rgba(255,255,255,.2); border-radius: 9999px;
    background: linear-gradient(90deg, #F43F5E, #EF4444); color: #fff; font-size: 10px; font-weight: 700; line-height: 1;
    box-shadow: 0 10px 15px -3px rgba(244,63,94,.4), 0 4px 6px -4px rgba(244,63,94,.4);}
.geo-notice-bell-fixed {position: fixed; top: 20px; right: 24px; z-index: 1040;}

/* 알림 패널 */
.geo-notice-panel {position: fixed; top: 60px; right: 24px; z-index: 1200; width: 400px; max-width: calc(100vw - 32px);
    max-height: calc(100vh - 96px); display: flex; flex-direction: column;
    background: #fff; border: 1px solid #EBF0FA; border-radius: 12px; box-shadow: 0 8px 24px rgba(16,30,72,.18);}
.geo-np-header {display: flex; align-items: center; justify-content: space-between; padding: 16px 16px 12px; border-bottom: 1px solid #EBF0FA;}
.geo-np-title {font-size: 15px; font-weight: 700; color: #18263F;}
.geo-np-count {margin-left: 4px; font-size: 12px; font-weight: 500; color: #909CB4;}
.geo-np-close {border: 0; background: transparent; color: #667792; font-size: 15px; cursor: pointer;}
.geo-np-body {overflow-y: auto; padding: 12px; display: flex; flex-direction: column; gap: 10px;}
.geo-np-empty {padding: 48px 0; text-align: center; color: #909CB4; font-size: 13px;}
.geo-np-loading {padding: 20px 0; text-align: center; color: #B1BAC9; font-size: 12px;}

/* 알림 카드 (pinned × read 4 variant) */
.geo-notice-card {padding: 14px; border-radius: 12px; background: #fff; border: 1px solid #F0F3F9; cursor: pointer; transition: box-shadow .15s;}
.geo-notice-card.is-unread {box-shadow: 0 2px 6px rgba(116,145,217,.16), 0 2px 2px rgba(95,111,151,.05);}
.geo-notice-card.is-read {box-shadow: none; background: #FCFDFF;}
.geo-notice-card:hover {box-shadow: 0 4px 12px rgba(116,145,217,.22);}
.geo-nc-head {display: flex; align-items: center; gap: 8px; margin-bottom: 6px;}
.geo-nc-pin {flex: 0 0 auto; width: 24px; height: 24px; display: inline-flex; align-items: center; justify-content: center;
    border-radius: 6px; background: #E6F1FF; color: #338BFF; font-size: 12px;}
.geo-nc-pin svg {display: block;}
.geo-nc-title {overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 14px; color: #2B394F;}
.geo-notice-card.is-unread .geo-nc-title {font-weight: 700;}
.geo-notice-card.is-read .geo-nc-title {font-weight: 500; color: #667792;}
.geo-nc-preview {margin: 0 0 8px; font-size: 12px; line-height: 1.5; color: #667792;
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;}
.geo-nc-date {margin: 0; text-align: right; font-size: 10px; color: #909CB4;}

/* 팝업 상세 모달 */
.geo-notice-popup {position: fixed; inset: 0; z-index: 1300;}
.geo-pp-bg {position: fixed; inset: 0; background: rgba(16,30,72,.3); backdrop-filter: blur(2.5px);}
.geo-pp-wrap {position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); display: flex; flex-direction: column; align-items: center; gap: 12px; width: 680px; max-width: calc(100vw - 32px);}
.geo-pp-dialog {width: 100%; max-height: calc(100vh - 140px); display: flex; flex-direction: column; background: #fff; border-radius: 12px; box-shadow: 0 4px 17px rgba(16,30,72,.2);}
.geo-pp-header {display: flex; align-items: center; gap: 8px; padding: 20px 24px 12px;}
.geo-pp-title {flex: 1; margin: 0; font-size: 16px; font-weight: 700; color: #18263F; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;}
.geo-pp-close {flex: 0 0 auto; border: 0; background: transparent; color: #2B394F; font-size: 16px; cursor: pointer;}
.geo-pp-meta {display: flex; flex-wrap: wrap; gap: 16px; padding: 0 24px 14px; border-bottom: 1px solid #EBF0FA; color: #667792; font-size: 12px;}
.geo-pp-meta i {margin-right: 4px;}
.geo-pp-body {overflow-y: auto; padding: 16px 24px; font-size: 14px; line-height: 1.6; color: #2B394F; word-break: break-word;}
.geo-pp-body img {max-width: 100%;}
/* 리치텍스트(Quill) 리스트 마커 복원 — 에디터 밖에서 렌더될 때 */
.geo-pp-body ol, .geo-pp-body ul {margin: 8px 0; padding-left: 22px; list-style-position: outside;}
.geo-pp-body ol {list-style-type: decimal;}
.geo-pp-body ul {list-style-type: disc;}
.geo-pp-body li {margin: 2px 0;}
.geo-pp-body li[data-list="bullet"] {list-style-type: disc;}
.geo-pp-body li[data-list="ordered"] {list-style-type: decimal;}
.geo-pp-files {padding: 0 24px 20px;}
.geo-pp-files__label {margin: 0 0 8px; font-size: 12px; font-weight: 600; color: #505F77;}
.geo-pp-file {display: flex; align-items: center; gap: 8px; padding: 10px 12px; margin-top: 6px; border: 1px solid #DAE1ED; border-radius: 8px; font-size: 13px; color: #2B394F; text-decoration: none;}
.geo-pp-file:hover {background: #F5F7FC; color: #2B394F;}
.geo-pp-file .geo-pp-file-ic {flex: 0 0 auto; display: inline-flex; align-items: center;}
.geo-pp-file .geo-pp-file-name {flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;}
.geo-pp-file .geo-pp-file-size {flex: 0 0 auto; color: #909CB4; font-size: 12px;}
.geo-pp-file .geo-pp-file-dl {flex: 0 0 auto; display: inline-flex; align-items: center; color: #667792;}
.geo-pp-file .geo-pp-file-ic svg, .geo-pp-file .geo-pp-file-dl svg {display: block;}
.geo-pp-hide {border: 0; border-radius: 9999px; padding: 8px 16px; background: rgba(255,255,255,.92); color: #667792; font-size: 13px; font-weight: 600; cursor: pointer; box-shadow: 0 2px 8px rgba(16,30,72,.15);}
.geo-pp-hide i {margin-left: 4px;}
