/* main */
.main .scroll-box{width: 100%; height: 100dvh; max-height: calc(100dvh - 14.0625rem); overflow-y: auto; padding-right: 0.25rem;}
.main .scroll-box .project-list{display:flex; flex-wrap: wrap; gap:0.9375rem; font-size: 1rem;}
.main .scroll-box .project-list .item{position: relative; width: calc((100% - 2.8125rem) / 4); cursor: pointer;}
.main .scroll-box .project-list .item .box{display: flex; align-items: flex-end; justify-content: center; position: relative; width: 100%; height: 100%; aspect-ratio: 16 / 9; overflow: hidden; text-align: center;}
/* TODO padding 값 변경 */
.main .scroll-box .project-list .item h2{display: inline-block; margin-bottom: 0.625em; font-size: 1em; padding: 0.3125em 0.875em; background: rgb(0 0 0 / 65%); color: #fff; border-radius: 0.375em;}
.main .scroll-box .project-list .item iframe{position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%) scale(0.5); width: 100vw; height: 60rem; z-index: -1;}
/* 선택따라 */
.main .scroll-box .project-list.i2{font-size: 1.125rem;}
.main .scroll-box .project-list.i2 .item{width: calc((100% - 0.9375rem) / 2);}
.main .scroll-box .project-list.i4{font-size: 1rem;}
.main .scroll-box .project-list.i4 .item{width: calc((100% - 2.8125rem) / 4);}
.main .scroll-box .project-list.i6{font-size: 0.9375rem;}
.main .scroll-box .project-list.i6 .item{width: calc((100% - 4.6875rem) / 6);}
.main .scroll-box .project-list.i8{font-size: 0.875rem;}
.main .scroll-box .project-list.i8 .item{width: calc((100% - 7.5rem) / 8);}
.main .scroll-box .project-list.i10{font-size: 0.75rem;}
.main .scroll-box .project-list.i10 .item{width: calc((100% - 9.375rem) / 10);}
.main .scroll-box .project-list.i6 iframe{transform: translate(-50%,-50%) scale(0.3);}
.main .scroll-box .project-list.i10 iframe,
.main .scroll-box .project-list.i8 iframe{transform: translate(-50%,-50%) scale(0.2);}
/* 사이트 모달 */
.modal-site-info .content{max-width: 34.375rem; height: auto; max-height: none;}
/* TODO 20241112 max-height 값 변경 */
.modal-site-info .info{width: 100%; max-height: 37.938rem; padding-right: 0.25rem; overflow-y: auto; min-height: 15rem; height: calc(100vh - 698px);}
.modal-site-info .info table{width: 100%; border-top: 1px solid #ddd; border-left: 1px solid #ddd;}
/* TODO 20241112 width 값 변경 */
.modal-site-info .info table tr th{width: 45%; padding: 0.8125rem 0.625rem; background: #1e1e1e; color: #fff; font-variation-settings: 'wght' 600; font-size: 0.9375rem; text-align: left; border-bottom: 1px solid #2a2a2a; border-right: 1px solid #2a2a2a;}
.modal-site-info .info table tr td{width: 60%; border-bottom: 1px solid #ddd; border-right: 1px solid #ddd; padding: 0 0.625rem;  font-variation-settings: 'wght' 500; text-align: right;}
.modal-site-info .flex-box{padding: 1.875rem 0 0;}
.modal-site-info .flex-box a{display: inline-block; vertical-align: top; padding: 0.5em 1.625em; background: #fff; border:1px solid #333; border-radius: 0.3125rem; font-variation-settings: 'wght' 500; font-size:1rem; transition: 0.2s;}
.modal-site-info .flex-box .btn{display:flex; gap:0.625rem}
.modal-site-info .flex-box .btn button{background: #fff; border:1px solid #333; padding: 0.5em 1.625em; cursor: pointer; border-radius:0.3125rem; font-variation-settings: 'wght' 500; font-size:1rem; transition: 0.2s;}
.modal-site-info .flex-box a:hover,
.modal-site-info .flex-box .btn button:hover{background: #ea5c2a; color: #fff; border-color:#ea5c2a}
/* 이미지일때 */
.main .scroll-box .project-list .item figure{position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: -1;}
.main .scroll-box .project-list .item figure img{object-fit: cover; height: 100%;}
.figure-item-off { display: none;}
.fa {color: white; position: relative; top: 26%; left: 23%}

@media all and (max-width:1200px) {
    .main .scroll-box .project-list .item h2{font-size: clamp(0.875rem, 1.5vw, 1.125rem); padding: 0.3125em 1.475em;}
}
@media all and (max-width:768px) {
    .main .scroll-box{max-height: calc(100dvh - 16.1875rem);}
    .main .scroll-box .project-list{gap:0.625rem}
    .main .scroll-box .project-list .item{width: calc((100% - 1.25rem) / 3);}

    .modal-site-info .info table tr th{padding: clamp(0.5rem, 1.693vw, 0.8125rem) clamp(0.5rem, 1.302vw, 0.625rem); font-size: clamp(0.875rem, 2.083vw, 1rem);}
    .modal-site-info .info table tr td{padding: 0 clamp(0.5rem, 1.302vw, 0.625rem); font-size: clamp(0.875rem, 2.083vw, 1rem);}
    .modal-site-info .flex-box{padding: clamp(0.875rem, 3.906vw, 1.875rem) 0;}

    .modal-site-info .flex-box .btn button,
    .modal-site-info .flex-box a{font-size: clamp(0.875rem, 2.083vw, 1rem); padding: 0.5em 1em;}

}
@media all and (max-width:500px) {
    .main .scroll-box{max-height: calc(100dvh - 13rem);}
    .main .scroll-box .project-list .item{width: calc((100% - 0.625rem) / 2);}
    .main .scroll-box .project-list .item h2{font-size: clamp(0.75rem, 2.8vw, 0.875rem); padding: 0.3125em 1.25em;}

    .modal-site-info .info table tr th{font-size: clamp(0.75rem, 2.8vw, 0.875rem);}
    .modal-site-info .info table tr td{font-size: clamp(0.75rem, 2.8vw, 0.875rem);}
}
@media all and (max-width:400px) {
    .modal-site-info .flex-box .btn button,
    .modal-site-info .flex-box a{font-size: clamp(0.75rem, 3.5vw, 0.875rem);}
}
@media all and (max-width:380px) {
    .modal-site-info .info{min-height: 8.75rem;}
}

.loading-bar {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(255, 255, 255, 0.72);
    backdrop-filter: blur(2px);
    -webkit-backdrop-filter: blur(2px);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    z-index: 100;
    border-radius: 1.25rem
}
/* 로딩 인디케이터 — 스피너 대신 LightKeeper 파비콘이 심장박동(두근두근)처럼 뛴다 */
.loader {
    width: 3.25rem;
    height: 3.25rem;
    border: none;
    background: url('/images/lk-favicon.svg') center / contain no-repeat;
    animation: lk-heartbeat 1.3s ease-in-out infinite;
    margin-bottom: 12px;
    will-change: transform;
}
/* lub-dub 2박 리듬 + 박동마다 은은한 주황 글로우 */
@keyframes lk-heartbeat {
    0%, 100% { transform: scale(1);    filter: drop-shadow(0 2px 6px rgba(234,92,42,.22)); }
    14%      { transform: scale(1.18); filter: drop-shadow(0 0 13px rgba(234,92,42,.50)); }
    28%      { transform: scale(1);    filter: drop-shadow(0 2px 6px rgba(234,92,42,.22)); }
    42%      { transform: scale(1.10); filter: drop-shadow(0 0 9px rgba(234,92,42,.35)); }
    56%      { transform: scale(1);    filter: drop-shadow(0 2px 6px rgba(234,92,42,.22)); }
}
@keyframes spin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}


/* ============================================================
   modal-site-info 리뉴얼 (기존 override)
   ============================================================ */
/* content = flex 컬럼: 제목 고정 · info 스크롤 · 하단 버튼 항상 노출 */
/* .modal.modal-site-info = (0,3,0) → 나중에 로드되는 common.css의 .modal .content(0,2,0)를 확실히 이김 */
.modal.modal-site-info .content{ max-width:min(56rem, 94vw); width:calc(100% - 1.25rem); height:auto; max-height:92vh; display:flex; flex-direction:column; overflow:hidden; }
.modal-site-info .modal-tit{ display:flex; align-items:flex-start; justify-content:space-between; margin-bottom:1.25rem; flex-shrink:0; }
.modal-site-info .modal-tit h3{ font-size:1.0625rem; font-variation-settings:'wght' 800; color:#1e1e1e; line-height:1.3; }
/* 옛 규칙(height:calc(100vh-698px)·max-height)이 남아 영역을 짓눌렀던 것 무력화 → flex로 높이 제어 */
.modal-site-info .info{ flex:1 1 auto; min-height:0; height:auto; max-height:none; overflow-y:auto; padding-right:.25rem; }
.modal-site-info .info table{ display:none; }
.modal-site-info .msn-block{ margin-bottom:1rem; }
.modal-site-info .msn-block:last-child{ margin-bottom:0; }
/* 모달 탭: 현황(모니터링 정보) / 설정(알림·점검창) / 링크(사이트맵) */
.modal-site-info .msn-tab-nav{ display:flex; gap:.25rem; margin-bottom:1.25rem; border-bottom:1px solid #eee; }
.modal-site-info .msn-tab{ padding:.5rem .95rem; border:none; background:none; font-size:.8125rem; font-variation-settings:'wght' 600; color:#8a8a8a; cursor:pointer; border-bottom:2px solid transparent; margin-bottom:-1px; transition:color .15s, border-color .15s; }
.modal-site-info .msn-tab:hover{ color:#1e1e1e; }
.modal-site-info .msn-tab.active{ color:#ea5c2a; border-bottom-color:#ea5c2a; }
.modal-site-info .msn-tab-panel{ display:none; }
/* 탭 간 모달 크기 일정하게 — 콘텐츠가 적은 설정/링크 탭도 최소 높이 유지 */
.modal-site-info .msn-tab-panel.active{ display:block; min-height:26rem; }
/* 넓은 화면: 현황 탭만 2열(데이터 많음). 설정·링크는 전폭 카드(가독성·여백 최소) */
@media (min-width:48rem){
    .modal-site-info #msnTab-status.active{ column-count:2; column-gap:1.5rem; }
    .modal-site-info #msnTab-status .msn-block{ break-inside:avoid; -webkit-column-break-inside:avoid; }
}

/* 설정 탭 카드(현황 탭 데이터 카드와 톤 통일) */
.modal-site-info #msnTab-config .msn-block{ margin-bottom:1.25rem; }
.modal-site-info .msn-cfg-card{ background:var(--c-surface-alt); border:1px solid #eee; border-radius:.6rem; padding:1.1rem 1.2rem; }
.modal-site-info .msn-cfg-row{ display:flex; align-items:center; gap:.85rem; }
.modal-site-info .msn-cfg-emoji{ font-size:1.5rem; line-height:1; flex-shrink:0; }
.modal-site-info .msn-cfg-text{ display:flex; flex-direction:column; gap:.2rem; min-width:0; }
.modal-site-info .msn-cfg-strong{ font-size:.875rem; font-variation-settings:'wght' 700; color:#1e1e1e; }
.modal-site-info .msn-cfg-desc{ font-size:.75rem; color:#8a8a8a; line-height:1.5; }
.modal-site-info .msn-cfg-divider{ height:1px; background:#ececec; margin:.9rem 0; }
.modal-site-info .msn-cfg-label{ font-size:.7rem; font-variation-settings:'wght' 700; color:#8a8a8a; text-transform:uppercase; letter-spacing:.04em; margin-bottom:.55rem; }

/* 섹션 타이틀 — lk-card-section-title 일관성 */
.msn-section-title{
    font-size:.6875rem; font-variation-settings:'wght' 700;
    color:#ea5c2a; letter-spacing:.06em; text-transform:uppercase;
    margin-bottom:.625rem; margin-top:1rem;
    padding-left:.5rem; border-left:3px solid #ea5c2a; line-height:1.2;
}
.msn-section-title:first-child{ margin-top:0; }

/* 기본 현황 2×2 grid */
.msn-basic-grid{ display:grid; grid-template-columns:1fr 1fr; gap:.5rem; margin-bottom:0; }
.msn-kv{
    display:flex; flex-direction:column; gap:.25rem;
    background:#f9fafb; border:1px solid #ebebeb; border-radius:10px;
    padding:.75rem 1rem;
}
.msn-kv.sm{ padding:.5rem .75rem; }
.msn-k{ font-size:.6875rem; font-variation-settings:'wght' 600; color:#8a8a9a; }
.msn-v{ font-size:1rem; font-variation-settings:'wght' 700; color:#1e1e1e; }

/* 전체 성능 점수 히어로 — 어두운 배경 유지, 여백·크기 개선 */
.msn-score-hero{
    display:flex; align-items:center; justify-content:space-between;
    background:linear-gradient(135deg, #1c1c1e 0%, #2c2c2e 100%);
    border-radius:10px; padding:1rem 1.25rem; margin-bottom:.5rem;
}
.msn-score-label{ font-size:.75rem; font-variation-settings:'wght' 600; color:rgba(255,255,255,.55); }
.msn-score-value{ font-size:2rem; font-variation-settings:'wght' 800; color:#fff; letter-spacing:-.03em; line-height:1; }
/* 점수 없음 — 다크 히어로 대신 뉴트럴 */
.msn-score-hero.is-empty{ background:var(--c-surface-alt); border:1px dashed var(--c-border); }
.msn-score-hero.is-empty .msn-score-label{ color:var(--c-text-muted); }
.msn-score-hero.is-empty .msn-score-value{ color:var(--c-text-muted); font-size:1.125rem; font-variation-settings:'wght' 600; }

/* 성능 지표 3열 grid */
.msn-metric-grid{ display:grid; grid-template-columns:repeat(3, 1fr); gap:.5rem; }
.msn-metric{
    display:flex; flex-direction:column; gap:.25rem;
    background:#f9fafb; border:1px solid #ebebeb; border-radius:10px;
    padding:.75rem 1rem;
}
.msn-metric-label{ font-size:.6875rem; font-variation-settings:'wght' 600; color:#8a8a9a; display:flex; align-items:center; gap:.25rem; }
.msn-metric-val{ font-size:.9375rem; font-variation-settings:'wght' 700; color:#1e1e1e; }
/* 값 설명 툴팁 — 앱 전역 '?' 호버 툴팁과 통일(마이페이지 ds-th-tip / 상세 ds-kpi-tip 과
   동일한 크기·색·폰트). 테마 토큰으로 다크모드 색 반전. 모달 KPI 특성상 위치만 위(above). */
.msn-tip{
    position:relative;
    display:inline-flex; align-items:center; justify-content:center;
    width:.95rem; height:.95rem; border-radius:50%;
    background:var(--c-gray-300); color:#fff; font-size:.6rem; font-variation-settings:'wght' var(--fw-bold); cursor:help; flex-shrink:0;
}
/* 호버 즉시 뜨는 커스텀 툴팁 — 네이티브 title(지연·불안정)을 대체 */
.msn-tip[data-tip]:hover::after{
    content:attr(data-tip);
    position:absolute; bottom:calc(100% + 7px); left:50%; transform:translateX(-50%);
    background:var(--c-text); color:var(--c-bg); padding:.4rem .55rem; border-radius:6px;
    font-size:.7rem; font-variation-settings:'wght' var(--fw-medium); line-height:1.45;
    white-space:normal; width:max-content; max-width:14rem; text-align:center;
    box-shadow:var(--shadow-hover); z-index:100; pointer-events:none;
}
.msn-tip[data-tip]:hover::before{
    content:''; position:absolute; bottom:calc(100% + 2px); left:50%; transform:translateX(-50%);
    border:5px solid transparent; border-top-color:var(--c-text); z-index:100; pointer-events:none;
}

/* 기술 지표 grid */
.msn-tech-grid{ display:grid; grid-template-columns:1fr 1fr; gap:.5rem; }

/* 모달 하단 버튼 */
.msn-footer{ display:flex; align-items:center; justify-content:space-between; gap:.5rem; margin-top:1rem; padding-top:1rem; border-top:1px solid #f0f0f0; flex-shrink:0; }
.msn-footer-right{ flex-shrink:0; }
.msn-footer a{ text-decoration:none; }
.msn-footer-right{ display:flex; align-items:center; gap:.5rem; }
.msn-footer-left{ display:flex; align-items:center; gap:.5rem; }
/* 갱신/상세·수정 버튼 높이 통일 + 세로 중앙(정렬 어긋남 보정) */
/* footer 버튼: 어떤 규칙이 anchor를 block 으로 만들어 텍스트가 위로 쏠리던 문제 → 중앙 정렬 강제 */
.modal-site-info .msn-footer .lk-btn{ height:2.25rem; line-height:1; box-sizing:border-box; display:inline-flex !important; align-items:center; justify-content:center; }
.msn-site-btn{ color:#8a8a9a; }
.msn-site-btn:hover{ color:#ea5c2a; border-color:#ea5c2a; }

/* 수집 링크 전체 보기 토글 + 목록 */
.modal-site-info .msn-links-toggle{ display:inline-flex; align-items:center; gap:.3rem; margin-top:.5rem; padding:.3rem .6rem; border:1px solid var(--c-border); border-radius:.4rem; background:#fff; font-size:.75rem; font-variation-settings:'wght' 600; color:#3d3d3d; cursor:pointer; transition:.15s; }
.modal-site-info .msn-links-toggle:hover{ border-color:#ea5c2a; color:#ea5c2a; }
.modal-site-info .msn-links-toggle .msn-links-caret{ font-size:.65rem; transition:transform .15s; }
.modal-site-info .msn-links-toggle.open .msn-links-caret{ transform:rotate(180deg); }
.modal-site-info .msn-all-list{ margin-top:.75rem; display:flex; flex-direction:column; max-height:21rem; overflow-y:auto; border:1px solid var(--c-border-subtle); border-radius:.4rem; }
.modal-site-info .msn-all-item{ display:flex; align-items:center; gap:.6rem; padding:.45rem .7rem; border-bottom:1px solid #f4f4f4; font-size:.75rem; color:#3d3d3d; text-decoration:none; }
.modal-site-info .msn-all-item:last-child{ border-bottom:none; }
.modal-site-info .msn-all-item:hover{ background:#faf6f4; }
.modal-site-info .msn-all-item .lnk-status{ flex-shrink:0; min-width:2.5rem; text-align:center; font-variation-settings:'wght' 700; font-size:.64rem; letter-spacing:.02em; color:#16a34a; background:#ecfdf3; border-radius:.3rem; padding:.18rem .3rem; }
.modal-site-info .msn-all-item.is-dead .lnk-status{ color:#dc2626; background:#fef2f2; }
.modal-site-info .msn-all-item .lnk-url{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#475569; }
.modal-site-info .msn-all-item:hover .lnk-url{ color:#1e293b; }
.modal-site-info .msn-all-item.is-dead .lnk-url{ color:#dc2626; }

/* 모달 헤더 24h 응답추세 + 가동률 */
.modal-site-info .msn-trendline{ display:flex; align-items:center; gap:.5rem; margin-top:.5rem; }
.modal-site-info .msn-trend-label{ font-size:.625rem; font-variation-settings:'wght' 600; color:#8a8a9a; white-space:nowrap; }
.modal-site-info .msn-trendline .spark{ display:inline-flex; align-items:flex-end; gap:1px; height:18px; }
.modal-site-info .msn-trendline .spark i{ width:3px; background:#cbd5e1; border-radius:1px; }
.modal-site-info .msn-uptime{ font-size:.6875rem; font-variation-settings:'wght' 700; color:#16a34a; white-space:nowrap; }

/* 모달 도메인 변경 의심 경고 배너 */
.modal-site-info .msn-domain-warn{ margin-bottom:1rem; padding:.7rem .9rem; border-radius:.6rem; background:#f5f3ff; border:1px solid #ddd6fe; color:#5b21b6; font-size:.8125rem; line-height:1.5; }
.modal-site-info .msn-domain-warn b{ font-variation-settings:'wght' 700; }

/* 모달 알림 뮤트 컨트롤 */
.modal-site-info .msn-mute{ display:flex; align-items:center; justify-content:space-between; gap:.75rem; flex-wrap:wrap; }
.modal-site-info .msn-mute-state{ font-size:.8125rem; font-variation-settings:'wght' 700; color:#16a34a; }
.modal-site-info .msn-mute-state.muted{ color:#a16207; }
.modal-site-info .msn-mute-btns{ display:flex; gap:.375rem; flex-wrap:wrap; }
.modal-site-info .msn-mute-btns button{ padding:.3rem .6rem; border:1px solid var(--c-border); border-radius:.4rem; background:#fff; font-size:.75rem; cursor:pointer; color:#3d3d3d; transition:.15s; }
.modal-site-info .msn-mute-btns button:hover{ border-color:#a16207; color:#a16207; }
/* 현재 적용된 뮤트 길이 버튼 활성 표시(클릭 유지) */
.modal-site-info .msn-mute-btns button.active{ background:var(--c-primary); border-color:var(--c-primary); color:#fff; }
.modal-site-info .msn-mute-btns button.active:hover{ background:var(--c-primary); border-color:var(--c-primary); color:#fff; }
.modal-site-info .msn-mute-btns .msn-unmute{ color:#16a34a; }
.modal-site-info .msn-mute-btns .msn-unmute:hover{ border-color:#16a34a; color:#16a34a; }

/* 표 뮤트 뱃지 */
.main .site-table .mute-pill{ display:inline-block; margin-left:.4rem; padding:.08rem .4rem; border-radius:var(--r-pill); font-size:.625rem; background:#fef3c7; color:#a16207; font-variation-settings:'wght' 700; }

/* 모달 점검창 섹션 */
.modal-site-info .msn-maint-add{ display:flex; flex-wrap:wrap; align-items:center; gap:.375rem; margin-bottom:.5rem; }
.modal-site-info .msn-maint-add input[type=datetime-local]{ font-size:.7rem; padding:.25rem .35rem; border:1px solid var(--c-border); border-radius:.35rem; }
.modal-site-info .msn-maint-add input[type=text]{ flex:1 1 7rem; min-width:5rem; font-size:.75rem; padding:.3rem .5rem; border:1px solid var(--c-border); border-radius:.35rem; }
.modal-site-info .msn-maint-add button{ padding:.3rem .75rem; border:1px solid var(--c-primary); background:var(--c-primary); color:#fff; border-radius:.4rem; font-size:.75rem; cursor:pointer; }
.modal-site-info .msn-maint-tilde{ color:#8a8a9a; }
.modal-site-info .msn-maint-list{ display:flex; flex-direction:column; gap:.25rem; }
.modal-site-info .msn-maint-item{ display:flex; align-items:center; justify-content:space-between; gap:.5rem; font-size:.75rem; padding:.3rem .5rem; background:#f9fafb; border:1px solid #ebebeb; border-radius:.4rem; color:#3d3d3d; }
.modal-site-info .msn-maint-item.active{ border-color:#a16207; background:#fffbeb; }
.modal-site-info .msn-maint-item button{ border:0; background:none; color:#ef4444; cursor:pointer; font-size:.7rem; flex-shrink:0; }
.modal-site-info .msn-maint-empty{ font-size:.72rem; color:#8a8a9a; }

/* 점검중 뱃지(표) */
.main .site-table .maint-pill{ display:inline-block; margin-left:.4rem; padding:.08rem .4rem; border-radius:var(--r-pill); font-size:.625rem; background:#dbeafe; color:#1d4ed8; font-variation-settings:'wght' 700; }
/* 도메인 변경 의심 뱃지(표) */
.main .site-table .domain-pill{ display:inline-block; margin-left:.4rem; padding:.08rem .4rem; border-radius:var(--r-pill); font-size:.625rem; background:#ede9fe; color:#6d28d9; font-variation-settings:'wght' 700; }

/* 알림 발송 이력 테이블(시스템설정) */
.noti-log-wrap{ max-height:24rem; overflow:auto; border:1px solid #ececec; border-radius:.5rem; }
.noti-log-table{ width:100%; border-collapse:collapse; font-size:.8125rem; }
.noti-log-table thead th{ position:sticky; top:0; background:#f7f7f9; text-align:left; padding:.5rem .625rem; font-variation-settings:'wght' 600; color:#5a5a6a; border-bottom:1px solid #ececec; white-space:nowrap; }
.noti-log-table tbody td{ padding:.45rem .625rem; border-bottom:1px solid #f2f2f4; color:#3d3d3d; white-space:nowrap; }
.noti-log-table tbody tr:last-child td{ border-bottom:0; }
.noti-log-empty{ text-align:center; color:#8a8a9a; padding:1.25rem !important; }
.noti-log-status{ padding:.05rem .4rem; border-radius:999px; font-size:.6875rem; font-variation-settings:'wght' 700; }
.noti-log-status.sent{ background:#dcfce7; color:#16a34a; }
.noti-log-status.failed{ background:#fee2e2; color:#dc2626; }
.noti-log-status.skipped{ background:#f3f4f6; color:#6b7280; }

/* 모달 사이트맵 링크 섹션 */
.modal-site-info .msn-links-summary{ display:flex; gap:1rem; font-size:.8125rem; color:#3d3d3d; margin-bottom:.5rem; }
.modal-site-info .msn-links-summary b{ font-variation-settings:'wght' 700; }
.modal-site-info .msn-dead-pill b{ color:#ef4444; }
.modal-site-info .msn-dead-list{ display:flex; flex-direction:column; gap:.25rem; max-height:9rem; overflow-y:auto; }
.modal-site-info .msn-dead-list a{ font-size:.75rem; color:#ef4444; text-decoration:none; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.modal-site-info .msn-dead-list a:hover{ text-decoration:underline; }
.modal-site-info .msn-links-empty{ font-size:.75rem; color:#8a8a9a; }

/* 모달 푸터 좌측(이전/다음 사이트 이동) */
.modal-site-info .msn-footer-left{ display:flex; align-items:center; gap:.5rem; }
.modal-site-info .msn-nav-btn{ padding:.4rem .75rem; font-size:1.1rem; line-height:1; color:#8a8a9a; }
.modal-site-info .msn-nav-btn:hover{ color:#ea5c2a; border-color:#ea5c2a; }

/* 풀스크린 버튼 — 우하단 둥근 FAB */
.full-screen{
  position:fixed; right:1.5rem; bottom:1.5rem;
  width:3.25rem; height:3.25rem;
  background:var(--c-dark) url("../images/icon-full.png") 50% 50% / 18px 18px no-repeat;
  z-index:500; cursor:pointer; border-radius:50%; border:none;
  transition:transform .18s ease, background-color .18s ease, box-shadow .18s ease;
  box-shadow:0 6px 18px rgba(0,0,0,.22);
}
.full-screen:hover{ background-color:var(--c-primary); transform:translateY(-2px); box-shadow:0 10px 24px rgba(234,92,42,.35); }
.full-screen:active{ transform:translateY(0); }
.full-screen.on{ background-color:var(--c-primary); background-image:url("../images/icon-close-full.png"); background-size:22px 22px; }

/* group-table row btn 스타일 정비 */
.group-table td{ font-size:.875rem; color:#1e1e1e; height:3rem; vertical-align:middle; padding:0 1rem; border-bottom:1px solid #f0f0f0; }
.group-table td.center{ text-align:center; }
.group-table td.empty{ text-align:center; color:#b0b0b0; }
.group-table tbody tr:last-child td{ border-bottom:none; }
.group-table .row-btn{
  height:1.875rem; padding:0 .875rem; border-radius:6px;
  font-size:.75rem; font-variation-settings:'wght' 600; cursor:pointer;
  border:1.5px solid #e8e8e8; background:#fff; color:#1e1e1e; transition:.15s; margin:0 .25rem;
}
.group-table .row-btn:hover{ border-color:#ea5c2a; color:#ea5c2a; }
.group-table .row-btn.del:hover{ border-color:#ef4444; color:#ef4444; }

/* ============================================================
   다크 모드 보정 — main.css 는 라이트 팔레트를 하드코딩하므로
   사이트정보 모달(msn-*)·알림로그·그룹표를 토큰 기준으로 재정의한다.
   (의도적 다크 요소인 스코어 히어로 그라디언트·툴팁은 건드리지 않는다)
   ============================================================ */
html[data-theme="dark"] .modal-site-info .modal-tit h3,
html[data-theme="dark"] .modal-site-info .msn-cfg-strong,
html[data-theme="dark"] .msn-v,
html[data-theme="dark"] .msn-metric-val,
html[data-theme="dark"] .modal-site-info .msn-tab:hover{ color:var(--c-text); }

html[data-theme="dark"] .modal-site-info .msn-tab-nav,
html[data-theme="dark"] .modal-site-info .msn-cfg-card{ border-color:var(--c-border); }
html[data-theme="dark"] .modal-site-info .msn-cfg-divider{ background:var(--c-border); }

html[data-theme="dark"] .msn-kv,
html[data-theme="dark"] .msn-metric,
html[data-theme="dark"] .modal-site-info .msn-maint-item{ background:var(--c-surface-alt); border-color:var(--c-border); }

html[data-theme="dark"] .modal-site-info .msn-links-toggle,
html[data-theme="dark"] .modal-site-info .msn-mute-btns button{ background:var(--c-surface); color:var(--c-text-secondary); }

html[data-theme="dark"] .modal-site-info .msn-all-list{ border-color:var(--c-border); }
html[data-theme="dark"] .modal-site-info .msn-all-item{ border-bottom-color:var(--c-border-subtle); color:var(--c-text-secondary); }
html[data-theme="dark"] .modal-site-info .msn-all-item:hover{ background:var(--c-surface-hover); }
html[data-theme="dark"] .modal-site-info .msn-all-item .lnk-url{ color:var(--c-text-secondary); }
html[data-theme="dark"] .modal-site-info .msn-all-item:hover .lnk-url{ color:var(--c-text); }
html[data-theme="dark"] .modal-site-info .msn-links-summary{ color:var(--c-text-secondary); }

/* 알림 발송 이력 모달 */
html[data-theme="dark"] .noti-log-wrap{ border-color:var(--c-border); }
html[data-theme="dark"] .noti-log-table thead th{ background:var(--c-surface-alt); color:var(--c-text-secondary); border-bottom-color:var(--c-border); }

/* 프로젝트 그룹 표 */
html[data-theme="dark"] .group-table td{ color:var(--c-text); border-bottom-color:var(--c-border); }
html[data-theme="dark"] .group-table .row-btn{ background:var(--c-surface); border-color:var(--c-border); color:var(--c-text); }
