Merge origin/main into HW_Dashboard and resolve conflicts

This commit is contained in:
2026-06-10 09:13:23 +09:00
54 changed files with 4220 additions and 1735 deletions

View File

@@ -47,7 +47,7 @@
}
.modal-header .btn-icon {
color: #FFFFFF !important;
color: var(--white) !important;
cursor: pointer;
background: none !important;
border: none !important;
@@ -129,7 +129,7 @@
display: none !important;
}
.grid-form.is-view-mode button {
.grid-form.is-view-mode button:not(.btn-loc-action) {
pointer-events: none !important;
background: none !important;
border: none !important;
@@ -143,7 +143,7 @@
.grid-form.is-edit-mode input,
.grid-form.is-edit-mode select,
.grid-form.is-edit-mode textarea {
color: #FF3D00; /* 수정 시 글자색 변경 */
color: var(--edit-mode-color); /* 수정 시 글자색 변경 */
border: 1px solid var(--border-color);
}
@@ -160,8 +160,8 @@
.grid-form.is-edit-mode input:focus,
.grid-form.is-edit-mode select:focus,
.grid-form.is-edit-mode textarea:focus {
border-color: #FF3D00;
box-shadow: 0 0 0 2px rgba(255, 61, 0, 0.1);
border-color: var(--edit-mode-color);
box-shadow: 0 0 0 2px var(--edit-mode-focus);
}
.form-section-title:first-child {
@@ -508,3 +508,186 @@
color: #3b82f6;
background: #eff6ff;
}
/* Layout Map & Image Picker Styles */
.layout-map-container {
position: relative;
display: inline-block;
cursor: crosshair;
background-color: #f0f0f0;
border-radius: 4px;
overflow: hidden;
}
.layout-map-container.readonly {
cursor: default;
}
.layout-map-container.readonly .map-seat-obj {
pointer-events: none;
}
.digital-overlay-layer {
position: absolute;
top: 0; left: 0; width: 100%; height: 100%;
pointer-events: none;
z-index: 8;
}
.digital-map-svg {
width: 100%; height: 100%;
}
.map-seat-obj {
fill: rgba(30, 81, 73, 0.02);
stroke: rgba(30, 81, 73, 0.15); /* 평상시에도 아주 연하게 보이게 수정 */
stroke-width: 0.2;
cursor: pointer;
pointer-events: all;
transition: all 0.2s;
}
.map-seat-obj:hover {
fill: rgba(30, 81, 73, 0.3);
stroke: rgba(30, 81, 73, 0.6);
stroke-width: 0.5;
}
.layout-map-img {
display: block;
max-width: 100%;
max-height: 75vh;
user-select: none;
-webkit-user-drag: none;
}
.layout-marker {
position: absolute;
width: 14px;
height: 14px;
background-color: rgba(30, 81, 73, 0.7);
border: 2px solid #FFFFFF;
border-radius: 50%;
transform: translate(-50%, -50%);
pointer-events: none;
z-index: 10;
box-shadow: 0 0 8px rgba(0,0,0,0.4);
}
.pulse-marker {
background-color: rgba(255, 61, 0, 0.8) !important;
border-color: #FFFFFF !important;
animation: marker-pulse 1.2s infinite;
}
@keyframes marker-pulse {
0% { transform: translate(-50%, -50%) scale(1); box-shadow: 0 0 0 0 rgba(255, 61, 0, 0.6); }
70% { transform: translate(-50%, -50%) scale(1.6); box-shadow: 0 0 0 10px rgba(255, 61, 0, 0); }
100% { transform: translate(-50%, -50%) scale(1); box-shadow: 0 0 0 0 rgba(255, 61, 0, 0); }
}
.image-picker-overlay {
position: fixed;
top: 0; left: 0; right: 0; bottom: 0;
background: rgba(0,0,0,0.85);
z-index: 2500;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 20px;
}
.image-picker-header {
width: 100%;
max-width: 900px;
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 15px;
}
.image-picker-header h3 {
color: white;
margin: 0;
font-size: 1.25rem;
font-weight: 600;
}
.image-picker-content {
background: white;
padding: 8px;
border-radius: 8px;
max-width: 95vw;
max-height: 80vh;
overflow: auto;
position: relative;
box-shadow: 0 20px 50px rgba(0,0,0,0.5);
display: flex;
align-items: center;
justify-content: center;
}
.picker-nav {
position: absolute;
top: 50%;
transform: translateY(-50%);
width: 40px;
height: 60px;
background: rgba(0,0,0,0.5);
color: white;
display: flex;
align-items: center;
justify-content: center;
font-size: 24px;
cursor: pointer;
z-index: 100;
user-select: none;
transition: background 0.2s;
}
.picker-nav:hover { background: rgba(0,0,0,0.8); }
.picker-nav.disabled { opacity: 0.2; cursor: not-allowed; }
.picker-nav.prev { left: 10px; border-radius: 0 4px 4px 0; }
.picker-nav.next { right: 10px; border-radius: 4px 0 0 4px; }
.image-picker-footer {
margin-top: 20px;
display: flex;
gap: 12px;
}
.btn-loc-action {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 4px;
padding: 0 6px;
font-size: 10px !important;
font-weight: 600;
border-radius: 4px;
height: 24px;
min-width: 52px;
white-space: nowrap;
transition: all 0.2s;
}
.btn-loc-view {
background-color: var(--primary-color);
color: white !important;
border: none;
}
.btn-loc-view:hover {
background-color: #163d37;
}
.location-detail-container {
display: flex;
align-items: center;
gap: 0.5rem;
}
.location-detail-container select {
flex: 1;
}