/** totalInfo Start */ /* 팝업 기본 스타일 */ .popup_wrap { position: fixed; top: 0; left: 0; width: 100%; height: 100%; z-index: 1000; display: flex; align-items: flex-start; justify-content: center; padding-top: 20px; overflow-y: auto; } .popup_inner { position: relative; width: 97%; max-width: 1200px; background: #fff; border-radius: 4px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); z-index: 1001; margin-bottom: 20px; } /* 팝업 헤더 */ .popup_tit { display: flex; border-bottom: 1px solid #ddd; background-color: #0d1342; color: rgba(255, 255, 255, .9); font-size: 15px; padding: 15px 20px; line-height: 1em; position: relative; font-weight: 300; } .popup_tit .tit { margin: 0; font-size: 14px; font-weight: 500; color: rgba(255, 255, 255, .9); line-height: 1.4; } /* 팝업 컨텐츠 */ .popup_con { padding: 15px; font-size: 13px; } /* 팝업 내 테이블 셀 */ .popup_con td, .popup_con th { font-size: 13px; } /* 팝업 내 힌트 메시지 */ .popup_con .hint-message { font-size: 12px; color: #666; margin-top: 5px; } /* 팝업 푸터 */ .popup_foot { padding: 12px 15px; text-align: center; border-top: 1px solid #e5e5e5; background: #f9f9f9; border-radius: 0 0 4px 4px; } .popup_foot .newbtn, .popup_foot .newbtns { min-width: 80px; margin: 0 4px; font-size: 13px; } /* 팝업 컨테이너 */ .auth-container { display: flex; gap: 15px; height: calc(100vh - 180px); min-height: 450px; max-height: 600px; } /* 섹션 영역 공통 스타일 */ .group-selection-area, .role-list-area, .menu-tree-area { flex: 1; background: #fff; border: 1px solid #e5e5e5; border-radius: 4px; display: flex; flex-direction: column; min-width: 0; height: 100%; } .section-title { padding: 10px 12px; font-size: 13px; font-weight: 500; color: #333; border-bottom: 1px solid #e5e5e5; background: #f9f9f9; border-radius: 4px 4px 0 0; line-height: 1.4; } /* 검색 영역 */ .search-box { padding: 10px 12px; display: flex; gap: 8px; } .search-box .input { flex: 1; height: 32px; padding: 0 10px; border: 1px solid #ddd; border-radius: 3px; font-size: 13px; } /* 테이블 영역 */ .table_area { flex: 1; padding: 0 12px 12px; overflow: hidden; display: flex; flex-direction: column; min-height: 0; } /* 메뉴 트리 영역 */ .menu-tree-container { flex: 1; padding: 0 12px 12px; overflow: hidden; display: flex; flex-direction: column; min-height: 0; } .menu-tree-wrapper { flex: 1; overflow-y: auto; border: none; border-radius: 0; padding: 0; background: #fff; min-height: 0; } .menu-tree-wrapper::-webkit-scrollbar { width: 5px; } .menu-tree-wrapper::-webkit-scrollbar-track { background: #f1f1f1; border-radius: 3px; } .menu-tree-wrapper::-webkit-scrollbar-thumb { background: #ccc; border-radius: 3px; } .menu-tree-wrapper::-webkit-scrollbar-thumb:hover { background: #999; } /* 선택된 항목 스타일 */ #selectedGroupName, #selectedRoleName { color: #327fc8; margin-left: 6px; font-size: 12px; } /* DataTables 커스텀 스타일 */ .dataTables_wrapper { flex: 1; display: flex; flex-direction: column; min-height: 0; } .dataTables_wrapper .dataTables_scroll { flex: 1; overflow: hidden; min-height: 0; } .dataTables_wrapper .dataTables_scrollBody { overflow-y: auto !important; } .dataTables_wrapper table.dataTable { width: 100% !important; margin: 0 !important; font-size: 13px; } .dataTables_wrapper table.dataTable thead th { background: #f9f9f9; padding: 8px 10px; font-weight: 500; border-bottom: 1px solid #e5e5e5; font-size: 13px; line-height: 1.4; } .dataTables_wrapper table.dataTable tbody td { padding: 6px 10px; border-bottom: 1px solid #f0f0f0; line-height: 1.4; } .dataTables_wrapper table.dataTable tbody tr { cursor: pointer; } .dataTables_wrapper table.dataTable tbody tr:hover, .dataTables_wrapper table.dataTable tbody tr.selected { background-color: #ddedfd !important; } /* 메시지 스타일 */ .no-data-message { padding: 15px; text-align: center; color: #666; background: #f9f9f9; border-radius: 3px; margin: 8px 0; font-size: 13px; line-height: 1.4; } :root{ --green:#8bc34a; --border:#d9d9d9; --muted:#6b7280; --text:#111827; --panel:#f7f7f7; --focus:rgba(37,99,235,.35); --warn:#fff3cd; --ok:#10b981; } /* 카드/헤더 */ .detail-card{border:1px solid var(--border); border-radius:10px; overflow:hidden; background:#fff;} .detail-card .card-header{display:flex; justify-content:space-between; align-items:center; background:#202342; color:#fff; padding:10px 12px;} .card-header .title{font-weight:700} .card-header .actions{display:flex; gap:6px; align-items:center} .pill{font-size:12px; background:rgba(255,255,255,.25); padding:3px 8px; border-radius:999px} .btn,.nav-btn,.close-btn{border:1px solid rgba(0,0,0,.15); background:#fff; color:#333; padding:3px 8px; border-radius:6px; cursor:pointer; font-size:12px} .btn:focus,.nav-btn:focus,.close-btn:focus{outline:none; box-shadow:0 0 0 3px var(--focus)} /* 본문 레이아웃 */ .detail-body{display:grid; grid-template-columns: 3fr 1fr; gap:16px; padding:16px; background:var(--panel)} .left,.right{background:#fff; border:1px solid var(--border); border-radius:8px; padding:12px} .section-title{font-weight:700; margin-bottom:8px} .subnote{font-size:12px; color:#888; text-align:right; margin-top:-4px; margin-bottom:8px} /* 폼 그리드 */ /*.form-grid{display:grid; grid-template-columns: 110px 1fr 110px 1fr; gap:8px 10px}*/ /*.lbl{align-self:center; color:#444; font-size:13px}*/ /*.fld input,.fld textarea,.fld select{width:100%; padding:6px 8px; border:1px solid var(--border); border-radius:6px; font-size:13px; background:#fff}*/ /*.fld input[readonly],.fld textarea[readonly]{background:#fafafa}*/ /*.fld textarea{height:80px; resize:vertical}*/ /*.badge{display:inline-block; background:#eef2ff; color:#1d4ed8; border:1px solid #c7d2fe; padding:3px 8px; border-radius:999px; font-size:12px}*/ /*.hl{background:var(--warn)}*/ /*.block{grid-column: 1 / -1}*/ /** 플렉스 폼 start */ .form-grid {display: flex;flex-direction: column; row-gap: 8px;} .form-row {display: flex;column-gap: 10px;} .field-group {display: flex;align-items: center;flex: 1 1 0;min-width: 0;gap: 6px;} .field-group .lbl {flex: 0 0 110px;color: #444;font-size: 13px;align-self: center;white-space: nowrap;font-weight: 400;} .field-group .fld {flex: 1 1 0;} .field-group .fld input, .field-group .fld textarea, .field-group .fld select {width: 100%;padding: 6px 8px;border: 1px solid var(--border);border-radius: 6px;font-size: 13px;background: #fff;box-sizing: border-box;} .field-group .fld input[readonly], .field-group .fld textarea[readonly] {background: #fafafa;} .field-group .fld textarea {height: 80px;resize: vertical;} .form-row.block .field-group.full {flex: 1 1 100%;display: flex;align-items: flex-start;} .form-row.block .field-group.full .lbl {margin-top: 4px;} .field-group.empty {flex: 1 1 0;} .badge {display: inline-block;background: #eef2ff;color: #1d4ed8;border: 1px solid #c7d2fe;padding: 3px 8px;border-radius: 999px;font-size: 12px;} .hl {background: var(--warn);} @media (max-width: 1200px) { .form-row {flex-direction: column;} } /* 플렉스 폼 end */ .bar{height:1px; background:var(--border); margin:8px 0} /* 하단 상태바 */ .statusbar{display:flex; align-items:center; justify-content:space-between; padding:8px 12px; border-top:1px solid var(--border); background:#fff} .status-left{color:#0a7f2e; font-weight:700} .status-right{display:flex; gap:14px; align-items:center; color:#333} .count-dot{display:inline-flex; align-items:center; justify-content:center; width:18px; height:18px; border-radius:999px; background:var(--ok); color:#fff; font-size:12px} /* 우측 썸네일/지도/미리보기 */ .right .thumbs { display: flex; flex-direction: column; gap: 8px; max-height: 600px; overflow-y: auto; padding-right: 8px; margin-bottom: 10px; } /* 개별 썸네일 박스 */ .thumbs .thumb { border: 1px solid var(--border); border-radius: 8px; width: 100%; height: 200px; overflow: hidden; background: #f8f8f8; display: flex; justify-content: center; align-items: center; cursor: pointer; } /* 이미지 스타일 */ .thumbs .thumb img { width: 100%; height: 400%; object-fit: cover; /* 비율 유지하며 꽉 채움 */ object-position: center;/* 중앙 기준 크롭 */ display: block; } .mapbox { border: 1px solid var(--border); border-radius: 6px; overflow: hidden; margin-top: 8px } .mapbox img { display: block; width: 100%; height: auto } .preview { border: 1px dashed var(--border); border-radius: 6px; height: 220px; display: flex; align-items: center; justify-content: center; margin-top: 10px; background: #fafafa } .preview img { max-width: 100%; max-height: 100%; display: block } /** totalInfo End */