@import url("https://cdn.jsdelivr.net/npm/bootstrap-icons@1.7.1/font/bootstrap-icons.css"); fieldset.groupbox-border { border: 1px groove #ddd !important; padding: 3 3 3 3 !important; margin: 3 3 3 3 !important; box-shadow: 0px 0px 0px 0px #000; } legend.groupbox-border { background-color: #F0F0F0; color: #000; padding: 3px 6px; font-size: 1.0em !important; font-weight: bold !important; text-align: left !important; border-bottom:none; } fieldset.groupbox1-border { border: 1px groove #ddd !important; padding: 3 3 3 3 !important; margin: 3 3 3 3 !important; } legend.groupbox1-border { background-color: #F0F0F0; color: #000; padding: 9px 9px; font-size: 1.0em !important; font-weight: bold !important; text-align: left !important; border-bottom:none; } .input-group-text { display: flex; align-items: center; padding: 0.375rem 0.75rem; font-size: 1rem; font-weight: 400; line-height: 1; color: #212529; text-align: center; white-space: nowrap; background-color: #e9ecef; border: 1px solid #ced4da; border-radius: 0.25rem; } footer { position: absolute; bottom: 0; width: 100%; background-color: #dddddd; } footer.btnBox_todayClose { padding: 0.5rem 0 0.7rem; display: flex; } form {padding-right: 2rem;} input#chkday { vertical-align: middle; } label {vertical-align: middle;} /* 밝은 회색 배경을 가지는 th, td 요소에 적용할 클래스 */ .lightgray { background-color: #d3d3d3 !important; /* 기존 lightgray보다 밝은 회색 */ color: black !important; font-weight: bold !important; } /* 연한 노란색 배경에 검정색 굵은 글씨 */ .yellowBold { background-color: #ffffe0 !important; /* 연한 노란색 (light yellow) */ color: black !important; font-weight: bold !important; } /* 연한 노란색 배경에 붉은색 굵은 글씨 */ .yellowredBold { background-color: #ffffe0 !important; /* 연한 노란색 (light yellow) */ color: red !important; font-weight: bold !important; } /* 연한 파란색 배경에 적색 글씨 */ .blueBold { background-color: hsl(160, 5%, 85%) !important; /* 연한 파란색 */ color: red !important; font-weight: bold !important; } /* 연한 파란색 배경에 검정색 글씨 */ .blueBlackBold { background-color: hsl(220, 60%, 90%) !important; /* 연한 파란색 */ color: black !important; font-weight: bold !important; } /* 연한 주황색 배경에 붉은색 글씨 */ .orangeBold { background-color: hsl(30, 100%, 85%) !important; /* 연한 주황색 */ color: red !important; font-weight: bold !important; } /* 연한 주황색 배경에 검정 글씨 */ .orangeBlackBold { background-color: hsl(30, 100%, 85%) !important; /* 연한 주황색 */ color: black !important; font-weight: bold !important; } /* 연한 주황색 배경에 파랑 글씨 */ .orangeBlueBold { background-color: hsl(30, 100%, 85%) !important; /* 연한 주황색 */ color: blue !important; font-weight: bold !important; } /* 연한 노란색 배경에 검정 굵은 글씨 */ .yellowblackBold { background-color: #ffffe0 !important; /* 연한 노란색 (light yellow) */ color: black !important; font-weight: bold !important; } /* 연한 노란색 배경에 적색 굵은 글씨 */ .yellowredBold { background-color: #ffffe0 !important; /* 연한 노란색 (light yellow) */ color: red !important; font-weight: bold !important; } /* 연한 녹색 배경에 붉은색 글씨 */ .greenredBold { background-color: #90ee90 !important; /* 연한 녹색 (light green) */ color: red !important; font-weight: bold !important; } /* 더 연한 녹색 배경에 검정 글씨 */ .greenblackBold { background-color: hsl(120, 73%, 92%) !important; /* 기존보다 50% 더 연한 녹색 */ color: black !important; font-weight: bold !important; } /* 더 연한 보라색 배경에 검정 글씨 */ .purpleblackBold { background-color: hsl(270, 100%, 95%) !important; /* 연한 보라색 */ color: black !important; font-weight: bold !important; } .table-container { width: 100%; } #dynamicTable { table-layout: fixed; width: 900px; } #dynamicTable th:first-child, #dynamicTable td:first-child { width: 100px; min-width: 100px; max-width: 100px; } #dynamicTable th:nth-child(2), #dynamicTable td:nth-child(2) { width: 950px; min-width: 950px; max-width: 950px; } /* 테이블 셀의 padding 최소화 */ #dynamicTable td { padding: 2px !important; vertical-align: middle; } #dynamicTable th { padding: 2px !important; vertical-align: middle; } .input-container { white-space: nowrap; display: flex; align-items: center; justify-content: start; padding: 0; margin: 0; } .input-container input, .input-container span { display: inline-block; margin-right: 5px; /* 간격 늘림 */ padding: 1px 2px; /* input 내부 padding 최소화 */ border: 1px solid #ccc; font-size: 0.8rem; /* 폰트 크기 줄임 */ text-align: center; /* 모든 텍스트 가운데 정렬 */ vertical-align: middle; } .input-container input[type="text"] { width: 40px; height: 24px; /* 높이 줄임 */ } /* 음영, A각 표시 행의 체크박스도 text-input 칸과 동일 폭/높이 */ .input-container input[type="checkbox"] { width: 16px; /* 체크박스 크기 줄임 */ height: 16px; /* 체크박스 크기 줄임 */ margin: 0; padding: 0; vertical-align: middle; } /* form-control 클래스의 padding 최소화 */ .form-control { padding: 1px 2px !important; font-size: 0.8rem !important; height: 24px !important; } .form-check-input { padding: 0 !important; margin: 0 12px 0 16px!important; width: 17px !important; height: 16px !important; } /* 테이블 전체 스타일 최적화 */ .table { margin-bottom: 0; } .table-bordered td, .table-bordered th { border-width: 1px; } /* 체크박스가 포함된 셀도 동일한 너비 유지 */ .input-container:has(input[type="checkbox"]) { justify-content: start; /* 왼쪽 정렬로 되돌림 */ } /* 모든 input-container의 자식 요소들이 동일한 공간을 차지하도록 */ .input-container > * { flex-shrink: 0; /* 요소가 축소되지 않도록 */ } /* wrapper: 원래 폭과 높이를 그대로 쓰되 inline-block 으로 묶어줌 */ .input-container .col-cell { display: inline-block; vertical-align: middle; position: relative; /* wrapper 에는 너비나 높이를 지정하지 않습니다. table-layout:fixed 와 input/span 의 width:40px;height:24px 가 각각 칸을 균등 분할하고, 내부 요소 크기를 결정합니다. */ } /* 삭제 버튼 */ .col-cell .remove-col { position: absolute; top: 0; right: 0; width: 1em; height: 1em; line-height: 1em; padding: 0; font-size: 0.8rem; border: none; background: transparent; color: #d33; cursor: pointer; } /* 추가 버튼 */ .col-cell .add-col { position: absolute; top: 0; right: 1.2em; width: 1em; height: 1em; line-height: 1em; padding: 0; font-size: 0.8rem; border: none; background: transparent; color: #28a745; cursor: pointer; } /* 컬러 피커 사이즈 조정 */ #drawColor { width: 30px !important; height: 30px !important; padding: 0; margin-right: 10px; } /* 드로잉 캔버스 스타일 */ .drawing-canvas { position: absolute; box-shadow: 0 0 4px rgba(0,0,0,0.3); cursor: crosshair; z-index: 999; } /* previewContainer가 자식 캔버스를 상대 위치로 배치할 수 있게 */ #previewContainer { position: relative; } /* 그리기용 캔버스 */ .drawing-canvas { position: absolute; top: 0; left: 0; box-shadow: 0 0 4px rgba(0,0,0,0.3); cursor: crosshair; z-index: 2; } /* previewContainer가 캔버스 크기를 확보하도록 */ #previewContainer { position: relative; /* 캔버스 절대위치 기준 */ min-height: 300px; /* 신규엔 빈영역 확보 */ background: #fff; /* 흰 배경 */ } /* 라디오 버튼 스타일 */ .btn-check:checked + .btn-outline-primary { background-color: #0d6efd; border-color: #0d6efd; color: white; } .btn-check:checked + .btn-outline-success { background-color: #198754; border-color: #198754; color: white; } .btn-check:checked + .btn-outline-secondary { background-color: #6c757d; border-color: #6c757d; color: white; } .btn-group .btn { margin-right: 2px; } .btn-group .btn:last-child { margin-right: 0; } /* search_guiderail.php 이미지 확대 기능 스타일 */ .search-zoomable-image { transition: all 0.3s ease; cursor: pointer; position: relative; } .search-zoomable-image:hover { opacity: 0.8; } /* 이미지 팝업 오버레이 - 마우스 위치에 표시 */ .image-popup-overlay { display: none; position: fixed; background: white; border: 2px solid #007bff; border-radius: 8px; box-shadow: 0 4px 20px rgba(0,0,0,0.3); z-index: 10000; padding: 5px; text-align: center; } .image-popup-content { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; } .image-popup-content img { max-width: 100%; max-height: 100%; border-radius: 4px; object-fit: contain; } /* 이미지 모달 스타일 */ .image-modal { display: none; position: fixed; z-index: 9999; left: 0; top: 0; width: 100%; height: 100%; background-color: rgba(0,0,0,0.8); cursor: pointer; } .image-modal-content { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); max-width: 90%; max-height: 90%; border-radius: 8px; box-shadow: 0 4px 20px rgba(0,0,0,0.5); } .image-modal-content img { width: 100%; height: auto; border-radius: 8px; } /* 그리기 컨트롤 버튼 활성화 상태 */ #lineBtn.active, #textBtn.active, #eraserBtn.active { background-color: #007bff !important; color: white !important; border-color: #007bff !important; } /* "아직 등록된 이미지가 없습니다" 메시지 스타일 */ .no-image-message { color: #6c757d; font-style: italic; padding: 20px; text-align: center; background-color: #f8f9fa; border: 1px dashed #dee2e6; border-radius: 4px; margin: 10px 0; } .no-image-message i { margin-right: 8px; font-size: 1.2em; } /* 이미지 에디터 스타일 정의 */ dialog { width: 1300px; height: 800px; border: none; border-radius: .5rem; padding: 0; overflow: hidden; } dialog::backdrop { background: rgba(0,0,0,.5); } #editorHeader { background: #f8f9fa; padding: .5rem 1rem; border-bottom: 1px solid #dee2e6; display: flex; align-items: center; } #editorHeader h5 { margin: 0; flex-grow: 1; } #editorHeader .btn-close { margin-left: .5rem; } #editorToolbar, #editorToolbar2 { background: #fff; padding: .5rem; gap: .25rem; } #editorToolbar { display: flex; align-items: center; flex-wrap: wrap; } #editorToolbar2 { display: flex; align-items: center; } .toolbar-btn { width: 40px; height: 40px; padding: 0; } .toolbar-btn i { font-size: 1.2rem; } .toolbar-btn.active { background-color: #0d6efd; color: #fff; } .color-btn { width: 24px; height: 24px; padding: 0; border: 2px solid #fff; cursor: pointer; } .color-btn.active { border-color: #000; } #editorBody { position: relative; width: 100%; height: calc(100% - 128px); } #editorBody canvas { width: 100%; height: 100%; cursor: crosshair; } .canvas-text-input { position: absolute; border: 1px dashed #666; background: transparent; resize: none; outline: none; padding: 2px; font-family: sans-serif; } /* 이미지 컨테이너 스타일 */ .image-container { position: relative; display: inline-block; } .paste-overlay { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 123, 255, 0.8); color: white; display: flex; flex-direction: column; align-items: center; justify-content: center; border-radius: 0.375rem; font-size: 0.875rem; opacity: 0; transition: opacity 0.2s; } .paste-overlay.show { opacity: 1; } .paste-overlay i { font-size: 2rem; margin-bottom: 0.5rem; } canvas { border: 1px solid black; margin: 10; } /* 스타일 코드는 변경이 없으므로 여기에 그대로 유지합니다. */ .image-container { position: relative; display: inline-block; } .image-container img { display: block; } .input-overlay { position: absolute; background: rgba(255, 255, 255, 0.5); border: 1px solid blue; width: 40px; color: blue; } .assembly-area { border: 1px solid #ddd; padding: 10px; margin-top: 10px; background-color: #f9f9f9; } .assembly-area th { background-color: #f0f0f0; }