Merge remote-tracking branch 'origin/main' into ux_setting

This commit is contained in:
2026-06-12 13:34:13 +09:00
51 changed files with 18520 additions and 732 deletions

View File

@@ -177,17 +177,126 @@ input:checked + .slider:before { transform: translateX(16px); }
.icon-btn:hover { background-color: var(--primary-light); border-color: var(--primary-color); color: var(--primary-color); }
/* --- Footer --- */
.main-footer { height: 40px; background-color: var(--white); border-top: 1px solid var(--border-color); display: flex; align-items: center; justify-content: flex-end; padding: 0 1.5rem; flex-shrink: 0; }
.main-footer p { font-size: 0.75rem; color: var(--text-muted); }
.main-footer {
height: 28px;
background-color: var(--white);
border-top: 1px solid var(--border-color);
display: flex;
align-items: center;
justify-content: flex-end;
padding: 0 1.5rem;
flex-shrink: 0;
}
/* --- Utility --- */
.main-footer p {
font-family: 'Pretendard Variable', Pretendard, sans-serif;
font-size: 0.75rem;
font-weight: 300;
line-height: 1.25rem;
letter-spacing: -0.0175rem;
color: #777777;
user-select: none;
pointer-events: all;
-webkit-user-drag: none;
margin: 0;
padding: 0;
box-sizing: border-box;
}
.hidden {
display: none !important;
}
.text-nowrap {
white-space: nowrap;
}
/* --- Utility Styles --- */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 0.35rem; padding: 0 0.8rem; font-size: 12px; font-weight: 600; border-radius: 4px; cursor: pointer; height: 28px; }
.btn-primary { background-color: var(--primary-color); color: var(--white); border: none; }
.btn-outline { background-color: transparent; color: var(--text-muted); border: 1px solid var(--border-color); }
.badge { padding: 2px 6px; border-radius: 4px; font-size: 11px; font-weight: 700; }
.badge-primary { background-color: var(--primary-color); color: white; }
.badge-light { background: var(--bg-color); color: var(--text-muted); border: 1px solid var(--border-color); }
.hidden { display: none !important; }
.badge {
padding: 2px 6px;
border-radius: 4px;
font-size: 16px;
font-weight: 700;
white-space: nowrap;
}
.badge-primary {
background-color: var(--primary-color);
color: white;
}
.badge-muted {
background-color: #9CA3AF;
color: white;
}
.badge-light {
background: var(--bg-color);
color: var(--text-muted);
border: 1px solid var(--border-color);
}
/* PC 성능 등급 뱃지 컬러 스타일 */
.badge.b-purple {
background-color: #EDE9FE;
color: #7C3AED;
border: 1px solid #DDD6FE;
font-size: 11px;
padding: 2px 6px;
}
.badge.b-primary {
background-color: #DBEAFE;
color: #1D4ED8;
border: 1px solid #BFDBFE;
font-size: 11px;
padding: 2px 6px;
}
.badge.b-green {
background-color: #D1FAE5;
color: #047857;
border: 1px solid #A7F3D0;
font-size: 11px;
padding: 2px 6px;
}
.badge.b-yellow {
background-color: #FEF3C7;
color: #D97706;
border: 1px solid #FDE68A;
font-size: 11px;
padding: 2px 6px;
}
.text-tag {
color: var(--text-muted);
font-size: 16px;
padding: 1px 5px;
border: 1px solid var(--border-color);
border-radius: 3px;
background-color: var(--bg-light);
}
.font-bold {
font-weight: 700;
}
/* --- Responsive Design (Tablet & Mobile) --- */
@media (max-width: 1200px) {
.header-container { gap: 0.75rem; padding: 0 1rem; }
.brand h1 { font-size: 1rem; }
.brand h1 .sub-title { font-size: 0.75rem; }
}
@media (max-width: 992px) {
.main-header { height: auto; padding: 0.5rem 0; }
.header-container { flex-direction: column; align-items: flex-start; gap: 0.5rem; }
.integrated-nav { width: 100%; justify-content: flex-start; border-top: 1px solid var(--border-color); padding-top: 0.5rem; }
.header-actions { width: 100%; justify-content: flex-end; padding-top: 0.5rem; }
.content-area { padding: 0 1rem; }
}
.gnb-trigger.admin-trigger {
color: var(--text-muted);

View File

@@ -1,39 +1,41 @@
/* --- Dashboard View Specific Styles --- */
/* --- Premium Executive Dashboard View Specific Styles --- */
.dashboard-section-title {
padding: 0 0 1rem 0;
font-size: 1.1rem;
font-weight: 700;
padding: 0 0 0 8px;
font-size: 1.55rem;
font-weight: 800;
color: var(--text-main);
letter-spacing: -0.02em;
border-left: 4px solid var(--primary-color);
margin-bottom: 1rem;
line-height: 1.2;
}
.dashboard-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 1.5rem;
margin-bottom: 2rem;
}
.stat-card {
background-color: var(--white);
padding: 1.5rem;
border: 1px solid var(--border-color);
border-radius: 8px;
/* Premium Executive Divider-based Style (Line-based Division) */
.dashboard-card, .stat-card {
background: transparent;
backdrop-filter: none;
-webkit-backdrop-filter: none;
border: none;
border-bottom: 1px solid var(--border-color);
box-shadow: none;
border-radius: 0;
padding: 1.5rem 0.5rem;
display: flex;
flex-direction: column;
transition: opacity 0.2s ease;
}
.stat-card .title {
font-size: 0.875rem;
color: var(--text-muted);
font-weight: 600;
}
.stat-card .value {
font-size: 2.2rem;
font-weight: 800;
color: var(--primary-color);
margin-top: 0.5rem;
.dashboard-card:hover, .stat-card:hover {
transform: none;
box-shadow: none;
opacity: 0.85;
}
.dashboard-layout-2col {
@@ -42,14 +44,14 @@
gap: 1.5rem;
}
.dashboard-layout-3col {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 1.5rem;
}
.dashboard-card {
background-color: var(--white);
border: 1px solid var(--border-color);
border-radius: 8px;
padding: 1.5rem;
display: flex;
flex-direction: column;
min-height: 360px;
min-height: 380px;
}
.dashboard-stats-grid {
@@ -59,93 +61,169 @@
margin-bottom: 2rem;
}
.dashboard-card-mini {
min-height: auto;
/* Premium KPI Value Styling */
.stat-value {
font-size: 2.41rem;
font-weight: 800;
background: linear-gradient(135deg, #1E5149 0%, #3B82F6 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
margin-top: 0.5rem;
display: flex;
align-items: center;
gap: 0.5rem;
}
.dashboard-card h4 {
font-size: 1rem;
font-weight: 700;
color: var(--text-main);
margin-bottom: 0.25rem;
.stat-value-danger {
background: linear-gradient(135deg, #E11D48 0%, #F59E0B 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
.dashboard-card .description {
font-size: 0.8125rem;
.stat-label {
font-size: 1.36rem;
color: var(--text-muted);
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.05em;
}
.stat-icon {
width: 48px;
height: 48px;
border-radius: 12px;
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 1rem;
}
.dashboard-card .big-value {
font-size: 2rem;
font-weight: 700;
color: var(--primary-color);
}
.icon-blue { background: rgba(59, 130, 246, 0.1); color: #3B82F6; }
.icon-green { background: rgba(30, 81, 73, 0.1); color: #1E5149; }
.icon-red { background: rgba(225, 29, 72, 0.1); color: #E11D48; }
.icon-yellow { background: rgba(245, 158, 11, 0.1); color: #F59E0B; }
.dashboard-card .big-value.danger {
color: var(--danger);
}
.progress-container {
width: 100%;
height: 4px;
background-color: var(--border-color);
border-radius: 2px;
overflow: hidden;
margin-top: 0.5rem;
}
.progress-fill {
height: 100%;
background-color: var(--primary-color);
}
.progress-fill.danger {
background-color: var(--danger);
}
.chart-wrapper {
height: 250px;
}
.dashboard-table-container {
.table-premium {
background: white;
border-radius: 8px;
border: 1px solid var(--border-color);
border-radius: 12px;
box-shadow: 0 4px 15px rgba(0,0,0,0.05);
overflow: hidden;
}
.dashboard-table-container table {
.table-premium table {
width: 100%;
border-collapse: collapse;
}
.dashboard-table-container th {
padding: 0.75rem;
font-size: 0.8125rem;
.table-premium th {
background: #F8FAFC;
color: #475569;
font-weight: 700;
color: var(--text-muted);
border-bottom: 2px solid var(--border-color);
text-align: center;
padding: 1rem;
text-transform: uppercase;
font-size: 0.96rem;
letter-spacing: 0.05em;
}
.dashboard-table-container td {
padding: 0.75rem;
font-size: 0.8125rem;
border-bottom: 1px solid var(--border-color);
text-align: center;
.table-premium td {
padding: 1rem;
border-bottom: 1px solid #E2E8F0;
color: #1E293B;
font-size: 16px;
}
.badge-type {
display: inline-block;
padding: 2px 8px;
border-radius: 4px;
background: var(--bg-color);
.table-premium tr:hover td {
background: #F1F5F9;
}
/* --- Slider/Carousel Specific Styles --- */
.dashboard-header-wrapper {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 2rem;
}
.slider-controls {
display: flex;
align-items: center;
gap: 1rem;
}
.slider-nav-btn {
background: white;
border: 1px solid var(--border-color);
font-size: 0.75rem;
box-shadow: 0 2px 8px rgba(0,0,0,0.05);
border-radius: 50%;
width: 36px;
height: 36px;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
color: var(--text-main);
transition: all 0.2s;
}
.slider-nav-btn:hover {
background: var(--primary-color);
color: white;
border-color: var(--primary-color);
}
.slider-nav-btn:disabled {
opacity: 0.5;
cursor: not-allowed;
}
.page-info {
font-size: 0.96rem;
color: var(--text-muted);
font-weight: 600;
}
.page-btns button {
padding: 0.3rem 0.75rem;
border: 1px solid var(--border-color);
background: var(--white);
border-radius: 4px;
font-size: 0.96rem;
cursor: pointer;
}
.page-btns button:disabled {
opacity: 0.5;
cursor: not-allowed;
}
.slider-indicator {
font-weight: 700;
color: var(--text-muted);
font-size: 1.41rem;
}
.dashboard-slider-viewport {
width: 100%;
overflow: hidden;
padding: 0.5rem 0;
}
.dashboard-slider-track {
display: flex;
transition: transform 0.5s cubic-bezier(0.25, 0.8, 0.25, 1);
width: 400%; /* For 4 pages */
}
.dashboard-slide {
width: 25%; /* 100% / 4 pages */
flex-shrink: 0;
padding: 0 2px; /* Slight padding to avoid cutting off box-shadows */
height: calc(100vh - 150px);
min-height: 520px;
display: flex;
flex-direction: column;
box-sizing: border-box;
}
/* --- Location View Styles --- */
.location-layout {
@@ -302,26 +380,6 @@
gap: 1rem;
}
.page-info {
font-size: 0.75rem;
color: var(--text-muted);
font-weight: 600;
}
.page-btns button {
padding: 0.3rem 0.75rem;
border: 1px solid var(--border-color);
background: var(--white);
border-radius: 4px;
font-size: 0.75rem;
cursor: pointer;
}
.page-btns button:disabled {
opacity: 0.5;
cursor: not-allowed;
}
.location-main-content {
flex: 1;
display: grid;

View File

@@ -19,7 +19,7 @@
.guide-tab {
padding: 0.75rem 1.25rem;
font-size: 13px;
font-size: 18px;
font-weight: 600;
color: var(--text-muted);
cursor: pointer;
@@ -72,7 +72,7 @@
}
.guide-section h3 {
font-size: 1rem;
font-size: 1.3rem;
padding-bottom: 0.5rem;
border-bottom: 2px solid var(--primary-color);
color: var(--primary-color);
@@ -83,7 +83,7 @@
}
.guide-text {
font-size: 13px;
font-size: 18px;
color: var(--text-main);
line-height: 1.7;
margin: 0;
@@ -127,7 +127,7 @@
border-radius: 50%;
background-color: var(--primary-color);
color: white;
font-size: 12px;
font-size: 17px;
font-weight: 700;
display: flex;
align-items: center;
@@ -138,12 +138,12 @@
.flow-step .step-label {
font-weight: 700;
color: var(--text-main);
font-size: 13px;
font-size: 18px;
display: block;
}
.flow-step .step-desc {
font-size: 12px;
font-size: 17px;
color: var(--text-muted);
line-height: 1.5;
margin-top: 4px;
@@ -159,7 +159,7 @@
.guide-info-table {
width: 100%;
border-collapse: collapse;
font-size: 13px;
font-size: 18px;
}
.guide-info-table th {
@@ -182,7 +182,7 @@
background: var(--primary-light);
border-left: 4px solid var(--primary-color);
padding: 1rem;
font-size: 13px;
font-size: 18px;
color: var(--primary-color);
line-height: 1.6;
}

View File

@@ -40,10 +40,9 @@
flex-shrink: 0;
}
.modal-header h2, .modal-title {
margin: 0;
font-size: 1.125rem;
font-weight: 800;
.modal-header h2 {
font-size: 1.4rem;
font-weight: 600;
letter-spacing: -0.02em;
color: var(--white);
line-height: 1.2;
@@ -99,7 +98,7 @@
/* Section Title for Grouping */
.form-section-title {
grid-column: span 2;
font-size: 0.875rem;
font-size: 1.15rem;
font-weight: 700;
color: var(--primary-color);
padding: 1.5rem 0 0.5rem 0;
@@ -114,7 +113,7 @@
}
.form-group label {
font-size: 0.8125rem;
font-size: 1.1rem;
font-weight: 600;
color: var(--text-muted);
}
@@ -127,7 +126,7 @@
border: 1px solid var(--border-color);
border-radius: 4px;
font-family: inherit;
font-size: 0.8125rem;
font-size: 1.15rem;
outline: none;
transition: all 0.2s;
background-color: var(--white);
@@ -210,7 +209,7 @@
padding: 0.75rem 1rem;
border-radius: 8px;
cursor: pointer;
font-size: 13px;
font-size: 18px;
font-weight: 500;
display: flex;
justify-content: space-between;
@@ -267,7 +266,7 @@
.preview-table th {
padding: 0.75rem 1rem;
text-align: left;
font-size: 12px;
font-size: 17px;
font-weight: 600;
border-bottom: 1px solid var(--border-color);
color: var(--text-muted);
@@ -275,7 +274,7 @@
.preview-table td {
padding: 0.75rem 1rem;
font-size: 13px;
font-size: 18px;
border-bottom: 1px solid #f1f5f9;
color: var(--text-main);
}
@@ -310,7 +309,7 @@
}
.history-header h3 {
font-size: 0.9375rem;
font-size: 1.25rem;
font-weight: 600;
display: flex;
align-items: center;
@@ -351,16 +350,21 @@
flex: 1;
overflow-y: auto;
max-height: 500px;
padding-right: 0.5rem;
padding-right: 8px;
margin-top: 8px;
}
.history-item {
position: relative;
padding-left: 1.25rem;
padding-bottom: 1.5rem;
padding-left: 20px;
padding-bottom: 20px;
border-left: 2px solid var(--border-color);
}
.history-item:last-child {
border-left: 2px solid transparent;
}
.history-item::before {
content: '';
position: absolute;
@@ -371,39 +375,73 @@
border-radius: 50%;
background-color: var(--white);
border: 2px solid var(--primary-color);
z-index: 1;
}
.history-item:last-child {
border-left: 2px solid transparent;
/* Event Specific Markers */
.history-item.evt-dept::before { border-color: #3b82f6; }
.history-item.evt-user::before { border-color: #8b5cf6; }
.history-item.evt-role::before { border-color: #10b981; }
.history-item.evt-status::before { border-color: #f59e0b; }
.history-header-row {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 4px;
}
.history-date {
font-size: 0.75rem;
font-size: 11px;
color: var(--text-muted);
font-weight: 500;
margin-bottom: 0.25rem;
}
.history-tag {
font-size: 10px;
font-weight: 700;
padding: 2px 6px;
border-radius: 10px;
text-transform: uppercase;
}
.tag-dept { background: #eff6ff; color: #3b82f6; }
.tag-user { background: #f5f3ff; color: #8b5cf6; }
.tag-role { background: #ecfdf5; color: #10b981; }
.tag-status { background: #fffbeb; color: #f59e0b; }
.tag-default { background: #f3f4f6; color: #6b7280; }
.history-user {
font-size: 0.75rem;
font-size: 11px;
font-weight: 600;
color: var(--primary-color);
margin-bottom: 0.25rem;
color: var(--text-main);
margin-bottom: 6px;
display: block;
}
.history-details {
font-size: 0.8125rem;
font-size: 12.5px;
color: var(--text-main);
line-height: 1.4;
white-space: pre-wrap;
line-height: 1.5;
background: #f8fafc;
padding: 8px 10px;
border-radius: 6px;
border: 1px solid #f1f5f9;
word-break: break-all;
}
.history-arrow {
display: inline-block;
margin: 0 4px;
color: var(--text-muted);
font-weight: 400;
}
.empty-history {
padding: 2rem 0;
text-align: center;
color: var(--text-muted);
font-size: 0.8125rem;
font-size: 1.1rem;
}
/* Dashboard Detail Modal Table Fixed Header */
@@ -436,7 +474,7 @@
border-bottom: 2px solid var(--border-color);
box-shadow: none;
padding: 0.75rem 1rem;
font-size: 0.8125rem;
font-size: 1.1rem;
font-weight: 600;
color: var(--text-main);
text-align: left;
@@ -446,7 +484,7 @@
#dashboard-detail-modal tbody td {
padding: 0.75rem 1rem;
border-bottom: 1px solid var(--border-color);
font-size: 0.8125rem;
font-size: 1.1rem;
color: var(--text-main);
white-space: nowrap;
}
@@ -464,7 +502,7 @@
display: inline-block;
padding: 0.125rem 0.5rem;
border-radius: 4px;
font-size: 0.75rem;
font-size: 1.05rem;
font-weight: 500;
line-height: 1.5;
}
@@ -663,3 +701,100 @@
.location-detail-container select {
flex: 1;
}
/* Dynamic Remote Info Row */
.remote-info-row {
display: flex;
flex-direction: column;
gap: 8px;
padding: 8px 0;
border-bottom: 1px dashed var(--border-color);
}
.remote-info-row:last-child {
border-bottom: none;
}
.ri-line {
display: flex;
gap: 8px;
align-items: center;
}
.ri-line select,
.ri-line input {
height: 38px;
box-sizing: border-box;
font-size: 13px;
padding: 0 10px;
border: 1px solid var(--border-color);
border-radius: 4px;
outline: none;
background-color: var(--white);
color: var(--text-main);
transition: border-color 0.2s;
}
.ri-line select:disabled,
.ri-line input[readonly] {
background-color: var(--bg-muted);
border-color: transparent;
cursor: default;
}
.ri-line select:focus,
.ri-line input:focus {
border-color: var(--primary-color);
box-shadow: 0 0 0 2px rgba(30, 81, 73, 0.1);
}
.ri-type, .ri-tool {
width: 110px;
flex-shrink: 0;
}
.ri-val1, .ri-id, .ri-pw {
flex: 1;
min-width: 0;
}
.ri-remove-btn {
height: 38px;
width: 38px;
padding: 0;
color: #E11D48;
border: 1px solid #E11D48;
background: transparent;
border-radius: 4px;
cursor: pointer;
flex-shrink: 0;
display: inline-flex;
align-items: center;
justify-content: center;
font-size: 18px;
transition: all 0.2s;
}
.ri-remove-btn:hover {
background-color: #FFF1F2;
}
.ri-spacer {
width: 46px; /* 38px btn + 8px gap */
flex-shrink: 0;
}
.ri-connector {
width: 24px;
height: 24px;
border-left: 1.5px solid #94a3b8;
border-bottom: 1.5px solid #94a3b8;
margin-top: -24px;
margin-left: 12px;
border-bottom-left-radius: 6px;
flex-shrink: 0;
}
.ri-cred-line {
margin-top: -4px;
}

View File

@@ -15,18 +15,10 @@
color: var(--primary-color);
display: flex;
align-items: center;
gap: 0.5rem;
margin: 0;
}
.page-title i {
display: flex;
align-items: center;
}
.page-title svg {
width: 18px;
height: 18px;
border-left: 4px solid var(--primary-color);
padding-left: 8px;
line-height: 1.2;
}
.page-description {