/* DevonThink 스타일 CSS - 회색, 하늘색 위주 */ :root { /* DevonThink 컬러 팔레트 */ --dt-primary: #4A90E2; /* 하늘색 */ --dt-primary-light: #7BB3F0; /* 연한 하늘색 */ --dt-primary-dark: #357ABD; /* 진한 하늘색 */ --dt-gray-50: #F8F9FA; /* 매우 연한 회색 */ --dt-gray-100: #F1F3F4; /* 연한 회색 */ --dt-gray-200: #E8EAED; /* 회색 */ --dt-gray-300: #DADCE0; /* 중간 회색 */ --dt-gray-400: #BDC1C6; /* 진한 회색 */ --dt-gray-500: #9AA0A6; /* 더 진한 회색 */ --dt-gray-600: #80868B; /* 텍스트 회색 */ --dt-gray-700: #5F6368; /* 진한 텍스트 회색 */ --dt-gray-800: #3C4043; /* 매우 진한 회색 */ --dt-gray-900: #202124; /* 거의 검은색 */ --dt-success: #34A853; /* 성공 (초록) */ --dt-warning: #FBBC04; /* 경고 (노랑) */ --dt-danger: #EA4335; /* 위험 (빨강) */ /* 그림자 */ --dt-shadow-sm: 0 1px 2px 0 rgba(60, 64, 67, 0.1); --dt-shadow: 0 1px 3px 0 rgba(60, 64, 67, 0.15); --dt-shadow-lg: 0 4px 6px -1px rgba(60, 64, 67, 0.15); /* 폰트 */ --dt-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; } * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: var(--dt-font-family); background-color: var(--dt-gray-50); color: var(--dt-gray-800); line-height: 1.5; display: flex; height: 100vh; overflow: hidden; } /* 사이드바 */ .sidebar { width: 280px; background-color: var(--dt-gray-100); border-right: 1px solid var(--dt-gray-200); display: flex; flex-direction: column; overflow-y: auto; } .sidebar-header { padding: 20px; border-bottom: 1px solid var(--dt-gray-200); background-color: white; } .sidebar-header h1 { font-size: 24px; font-weight: 600; color: var(--dt-primary); margin-bottom: 4px; } .sidebar-header .version { font-size: 12px; color: var(--dt-gray-500); font-weight: 500; } .sidebar-nav { flex: 1; padding: 16px 0; } .nav-section { margin-bottom: 24px; } .nav-section h3 { font-size: 12px; font-weight: 600; color: var(--dt-gray-600); text-transform: uppercase; letter-spacing: 0.5px; margin: 0 20px 8px 20px; } .nav-section ul { list-style: none; } .nav-item { display: flex; align-items: center; padding: 8px 20px; color: var(--dt-gray-700); text-decoration: none; font-size: 14px; font-weight: 500; transition: all 0.2s ease; } .nav-item:hover { background-color: var(--dt-gray-200); color: var(--dt-gray-800); } .nav-item.active { background-color: var(--dt-primary); color: white; } .nav-icon { margin-right: 12px; font-size: 16px; } .sidebar-footer { padding: 16px 20px; border-top: 1px solid var(--dt-gray-200); background-color: white; } .user-info { display: flex; align-items: center; } .user-avatar { width: 32px; height: 32px; border-radius: 50%; background-color: var(--dt-primary); color: white; display: flex; align-items: center; justify-content: center; font-weight: 600; font-size: 14px; margin-right: 12px; } .user-name { font-size: 14px; font-weight: 600; color: var(--dt-gray-800); } .user-role { font-size: 12px; color: var(--dt-gray-500); } /* 메인 컨텐츠 */ .main-content { flex: 1; overflow-y: auto; background-color: var(--dt-gray-50); } .page { display: none; padding: 24px; max-width: 1400px; margin: 0 auto; } .page.active { display: block; } .page-header { margin-bottom: 32px; padding-bottom: 16px; border-bottom: 1px solid var(--dt-gray-200); } .page-header h2 { font-size: 28px; font-weight: 600; color: var(--dt-gray-800); margin-bottom: 8px; } .page-description { font-size: 16px; color: var(--dt-gray-600); } /* 카드 */ .card { background-color: white; border-radius: 8px; box-shadow: var(--dt-shadow); border: 1px solid var(--dt-gray-200); margin-bottom: 24px; } .card-header { padding: 20px 24px 16px 24px; border-bottom: 1px solid var(--dt-gray-200); display: flex; align-items: center; justify-content: space-between; } .card-header h3 { font-size: 18px; font-weight: 600; color: var(--dt-gray-800); } .card-content { padding: 24px; } /* 상태 배지 */ .status-badge { padding: 4px 12px; border-radius: 16px; font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px; } .status-active { background-color: var(--dt-primary); color: white; } .status-optional { background-color: var(--dt-gray-300); color: var(--dt-gray-700); } .status-completed { background-color: var(--dt-success); color: white; } .status-pending { background-color: var(--dt-warning); color: var(--dt-gray-800); } .status-inspecting { background-color: var(--dt-primary-light); color: white; } .status-available { background-color: var(--dt-success); color: white; } .status-ordered { background-color: var(--dt-warning); color: var(--dt-gray-800); } .status-not-requested { background-color: var(--dt-gray-400); color: white; } .status-ready { background-color: var(--dt-primary-light); color: white; } .status-partial { background-color: var(--dt-warning); color: var(--dt-gray-800); } /* 폼 요소 */ .form-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 20px; } .form-group { display: flex; flex-direction: column; } .form-group label { font-size: 14px; font-weight: 600; color: var(--dt-gray-700); margin-bottom: 6px; } .form-input, .form-select { padding: 10px 12px; border: 1px solid var(--dt-gray-300); border-radius: 6px; font-size: 14px; background-color: white; transition: border-color 0.2s ease; } .form-input:focus, .form-select:focus { outline: none; border-color: var(--dt-primary); box-shadow: 0 0 0 3px rgba(74, 144, 226, 0.1); } /* 버튼 */ .btn { padding: 10px 20px; border: none; border-radius: 6px; font-size: 14px; font-weight: 600; cursor: pointer; transition: all 0.2s ease; display: inline-flex; align-items: center; justify-content: center; text-decoration: none; } .btn-primary { background-color: var(--dt-primary); color: white; } .btn-primary:hover { background-color: var(--dt-primary-dark); } .btn-secondary { background-color: var(--dt-gray-200); color: var(--dt-gray-700); } .btn-secondary:hover { background-color: var(--dt-gray-300); } .btn-success { background-color: var(--dt-success); color: white; } .btn-warning { background-color: var(--dt-warning); color: var(--dt-gray-800); } .btn-danger { background-color: var(--dt-danger); color: white; } .btn-sm { padding: 6px 12px; font-size: 12px; } /* 그리드 레이아웃 */ .content-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; } @media (max-width: 1200px) { .content-grid { grid-template-columns: 1fr; } } /* 프로젝트 등록 컨테이너 */ .project-registration-container { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; max-width: 1200px; } @media (max-width: 1000px) { .project-registration-container { grid-template-columns: 1fr; } } /* 프로젝트 폼 */ .project-form { display: flex; flex-direction: column; gap: 24px; } .customer-section, .delivery-section { padding: 20px; background-color: var(--dt-gray-50); border-radius: 8px; border: 1px solid var(--dt-gray-200); } .customer-section h4, .delivery-section h4 { font-size: 16px; font-weight: 600; color: var(--dt-gray-800); margin-bottom: 16px; } .customer-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; } @media (max-width: 600px) { .customer-grid { grid-template-columns: 1fr; } } .form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; } @media (max-width: 600px) { .form-row { grid-template-columns: 1fr; } } /* 자동 생성 미리보기 */ .generated-preview { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; } .generated-preview .label { font-size: 14px; color: var(--dt-gray-600); font-weight: 500; } .generated-preview .value { font-size: 16px; font-weight: 700; color: var(--dt-gray-500); font-family: 'Monaco', 'Menlo', monospace; } .generation-rule { font-size: 12px; color: var(--dt-gray-500); font-style: italic; } /* 폼 액션 */ .form-actions { display: flex; gap: 12px; justify-content: flex-end; padding-top: 20px; border-top: 1px solid var(--dt-gray-200); } @media (max-width: 600px) { .form-actions { flex-direction: column; } } /* 요청 리스트 */ .request-list { display: flex; flex-direction: column; gap: 12px; } .request-item { display: flex; justify-content: space-between; align-items: center; padding: 16px; border: 1px solid var(--dt-gray-200); border-radius: 8px; background-color: var(--dt-gray-50); transition: all 0.2s ease; } .request-item:hover { background-color: white; box-shadow: var(--dt-shadow); } .request-item.status-approved { border-left: 4px solid var(--dt-success); } .request-item.status-pending { border-left: 4px solid var(--dt-warning); } .request-item.status-review { border-left: 4px solid var(--dt-danger); } .request-title { font-size: 16px; font-weight: 600; color: var(--dt-gray-800); margin-bottom: 6px; } .request-details { display: flex; gap: 12px; flex-wrap: wrap; font-size: 12px; color: var(--dt-gray-600); } .request-details span { padding: 2px 8px; background-color: white; border-radius: 12px; border: 1px solid var(--dt-gray-200); } .request-status { display: flex; flex-direction: column; align-items: flex-end; gap: 6px; } .job-no { font-size: 12px; font-weight: 700; color: var(--dt-primary); font-family: 'Monaco', 'Menlo', monospace; } /* 상태별 스타일 */ .status-warning { background-color: var(--dt-danger); color: white; } .status-planning { background-color: var(--dt-gray-400); color: white; } .status-production { background-color: var(--dt-primary); color: white; } .status-in-progress { background-color: var(--dt-warning); color: var(--dt-gray-800); } @media (max-width: 600px) { .request-item { flex-direction: column; align-items: flex-start; gap: 12px; } .request-status { align-items: flex-start; flex-direction: row; justify-content: space-between; width: 100%; } } /* 프로젝트 관리 컨테이너 */ .project-management-container { display: flex; flex-direction: column; gap: 24px; } /* 프로젝트 필터 */ .project-filters { background-color: white; border-radius: 8px; box-shadow: var(--dt-shadow); border: 1px solid var(--dt-gray-200); padding: 24px; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 20px; } .filter-section { display: flex; align-items: center; gap: 20px; flex-wrap: wrap; } .search-box { display: flex; align-items: center; gap: 8px; } .search-input { padding: 8px 12px; border: 1px solid var(--dt-gray-300); border-radius: 6px; font-size: 14px; width: 300px; background-color: white; } .search-btn { padding: 8px 12px; border: none; background-color: var(--dt-primary); color: white; border-radius: 6px; cursor: pointer; font-size: 14px; } .filter-buttons { display: flex; gap: 8px; } .filter-btn { padding: 6px 16px; border: 1px solid var(--dt-gray-300); background-color: white; color: var(--dt-gray-700); border-radius: 20px; font-size: 12px; font-weight: 600; cursor: pointer; transition: all 0.2s ease; } .filter-btn:hover { background-color: var(--dt-gray-50); } .filter-btn.active { background-color: var(--dt-primary); color: white; border-color: var(--dt-primary); } .project-stats { display: flex; gap: 24px; } .stat-item { text-align: center; } .stat-number { display: block; font-size: 24px; font-weight: 700; color: var(--dt-primary); line-height: 1; } .stat-label { font-size: 12px; color: var(--dt-gray-600); font-weight: 500; } /* 프로젝트 리스트 */ .project-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(400px, 1fr)); gap: 24px; } @media (max-width: 800px) { .project-list { grid-template-columns: 1fr; } } /* 프로젝트 카드 */ .project-card { background-color: white; border-radius: 12px; box-shadow: var(--dt-shadow); border: 1px solid var(--dt-gray-200); padding: 24px; transition: all 0.2s ease; cursor: pointer; } .project-card:hover { transform: translateY(-2px); box-shadow: var(--dt-shadow-lg); } .project-card.status-production { border-left: 4px solid var(--dt-primary); } .project-card.status-planning { border-left: 4px solid var(--dt-gray-400); } .project-card.status-in-progress { border-left: 4px solid var(--dt-warning); } .project-card.status-completed { border-left: 4px solid var(--dt-success); } .project-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 20px; } .project-title h3 { font-size: 18px; font-weight: 600; color: var(--dt-gray-800); margin-bottom: 4px; } .project-title .job-no { font-size: 12px; font-weight: 700; color: var(--dt-primary); font-family: 'Monaco', 'Menlo', monospace; } .project-status { display: flex; align-items: center; gap: 8px; } .progress-text { font-size: 14px; font-weight: 600; color: var(--dt-gray-600); } /* 프로젝트 정보 */ .project-info { margin-bottom: 20px; } .info-row { display: flex; justify-content: space-between; align-items: center; padding: 6px 0; border-bottom: 1px solid var(--dt-gray-100); } .info-row:last-child { border-bottom: none; } .info-label { font-size: 12px; color: var(--dt-gray-600); font-weight: 500; } .info-value { font-size: 13px; color: var(--dt-gray-800); font-weight: 600; } /* 프로젝트 진행률 */ .project-progress { margin-bottom: 20px; } .progress-stages { display: flex; justify-content: space-between; margin-top: 12px; } .stage { font-size: 11px; font-weight: 600; color: var(--dt-gray-500); text-align: center; flex: 1; position: relative; } .stage.completed { color: var(--dt-success); } .stage.active { color: var(--dt-primary); } .stage::after { content: ''; position: absolute; top: -8px; left: 50%; transform: translateX(-50%); width: 8px; height: 8px; border-radius: 50%; background-color: var(--dt-gray-300); } .stage.completed::after { background-color: var(--dt-success); } .stage.active::after { background-color: var(--dt-primary); } /* 프로젝트 액션 */ .project-actions { display: flex; gap: 8px; } .project-actions .btn { flex: 1; font-size: 12px; padding: 8px 12px; } .btn.disabled { opacity: 0.5; cursor: not-allowed; pointer-events: none; } /* 반응형 디자인 */ @media (max-width: 768px) { .project-filters { flex-direction: column; align-items: stretch; } .filter-section { justify-content: center; } .search-input { width: 100%; max-width: 300px; } .project-stats { justify-content: center; } .project-card { padding: 20px; } .project-header { flex-direction: column; gap: 12px; } .project-actions { flex-direction: column; } } /* 자동 생성 정보 */ .auto-generated { margin: 20px 0; padding: 16px; background-color: var(--dt-gray-50); border-radius: 6px; border: 1px solid var(--dt-gray-200); } .generated-item { display: flex; justify-content: space-between; align-items: center; } .generated-item .label { font-size: 14px; color: var(--dt-gray-600); font-weight: 500; } .generated-item .value { font-size: 16px; font-weight: 700; color: var(--dt-primary); font-family: 'Monaco', 'Menlo', monospace; } /* 정보 섹션 */ .info-section { margin-bottom: 24px; } .info-section h4, .info-section h5 { font-size: 16px; font-weight: 600; color: var(--dt-gray-800); margin-bottom: 12px; } .info-section h5 { font-size: 14px; margin-top: 16px; margin-bottom: 8px; } .info-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 12px; margin-bottom: 16px; } .info-item { display: flex; justify-content: space-between; padding: 8px 0; border-bottom: 1px solid var(--dt-gray-200); } .info-label { font-size: 14px; color: var(--dt-gray-600); font-weight: 500; } .info-value { font-size: 14px; color: var(--dt-gray-800); font-weight: 600; } .decisions ul { list-style: none; margin-left: 0; } .decisions li { padding: 4px 0; color: var(--dt-gray-700); font-size: 14px; } .decisions li:before { content: "•"; color: var(--dt-primary); font-weight: bold; margin-right: 8px; } /* 사양 그리드 */ .spec-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 16px; } .spec-item { padding: 12px; background-color: var(--dt-gray-50); border-radius: 6px; border: 1px solid var(--dt-gray-200); } .spec-label { display: block; font-size: 12px; color: var(--dt-gray-600); font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 4px; } .spec-value { font-size: 14px; color: var(--dt-gray-800); font-weight: 600; } /* 공정표 */ .process-chart { background-color: white; border-radius: 8px; box-shadow: var(--dt-shadow); border: 1px solid var(--dt-gray-200); margin-bottom: 24px; padding: 24px; } .process-chart h3 { font-size: 18px; font-weight: 600; color: var(--dt-gray-800); margin-bottom: 20px; } .gantt-container { display: flex; flex-direction: column; gap: 12px; } .process-item { display: grid; grid-template-columns: 200px 1fr 120px; align-items: center; gap: 16px; padding: 12px; border-radius: 6px; border: 1px solid var(--dt-gray-200); } .process-item.completed { background-color: rgba(52, 168, 83, 0.05); border-color: var(--dt-success); } .process-item.in-progress { background-color: rgba(74, 144, 226, 0.05); border-color: var(--dt-primary); } .process-item.pending { background-color: var(--dt-gray-50); border-color: var(--dt-gray-300); } .process-name { font-size: 14px; font-weight: 600; color: var(--dt-gray-800); } .process-responsible { font-size: 12px; color: var(--dt-gray-600); } .process-bar { position: relative; height: 24px; background-color: var(--dt-gray-200); border-radius: 12px; overflow: hidden; } .progress-fill { height: 100%; background-color: var(--dt-primary); border-radius: 12px; transition: width 0.3s ease; } .process-item.completed .progress-fill { background-color: var(--dt-success); } .progress-text { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); font-size: 12px; font-weight: 600; color: white; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); } .process-date { font-size: 12px; color: var(--dt-gray-600); font-weight: 500; text-align: right; } /* 회의 레이아웃 */ .meeting-layout { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; margin-bottom: 24px; } @media (max-width: 1000px) { .meeting-layout { grid-template-columns: 1fr; } } .schedule-section, .delivery-section { background-color: white; border-radius: 8px; box-shadow: var(--dt-shadow); border: 1px solid var(--dt-gray-200); padding: 24px; } .schedule-section h3, .delivery-section h3 { font-size: 18px; font-weight: 600; color: var(--dt-gray-800); margin-bottom: 20px; } .schedule-list, .delivery-list { display: flex; flex-direction: column; gap: 12px; } .schedule-item { display: flex; gap: 16px; padding: 16px; border-radius: 6px; border: 1px solid var(--dt-gray-200); } .schedule-item.urgent { background-color: rgba(234, 67, 53, 0.05); border-color: var(--dt-danger); } .schedule-item.normal { background-color: var(--dt-gray-50); } .schedule-date { font-size: 14px; font-weight: 700; color: var(--dt-primary); min-width: 40px; } .schedule-title { font-size: 14px; font-weight: 600; color: var(--dt-gray-800); margin-bottom: 4px; } .schedule-type { font-size: 12px; color: var(--dt-gray-600); margin-bottom: 8px; } .schedule-memo { font-size: 12px; color: var(--dt-gray-700); line-height: 1.4; } .delivery-item { display: flex; align-items: center; gap: 12px; padding: 12px; border-radius: 6px; border: 1px solid var(--dt-gray-200); } .delivery-item.completed { background-color: rgba(52, 168, 83, 0.05); border-color: var(--dt-success); } .delivery-item.warning { background-color: rgba(251, 188, 4, 0.05); border-color: var(--dt-warning); } .delivery-item.delayed { background-color: rgba(234, 67, 53, 0.05); border-color: var(--dt-danger); } .delivery-status { font-size: 16px; } .delivery-name { font-size: 14px; font-weight: 600; color: var(--dt-gray-800); margin-bottom: 2px; } .delivery-date { font-size: 12px; color: var(--dt-gray-600); } /* Follow-up 섹션 */ .followup-section { background-color: white; border-radius: 8px; box-shadow: var(--dt-shadow); border: 1px solid var(--dt-gray-200); padding: 24px; } .followup-section h3 { font-size: 18px; font-weight: 600; color: var(--dt-gray-800); margin-bottom: 20px; } .followup-list { display: flex; flex-direction: column; gap: 16px; } .followup-item { display: grid; grid-template-columns: 80px 1fr 100px; gap: 16px; padding: 16px; border-radius: 6px; border: 1px solid var(--dt-gray-200); align-items: start; } .followup-item.priority-high { background-color: rgba(234, 67, 53, 0.05); border-color: var(--dt-danger); } .followup-item.priority-medium { background-color: rgba(251, 188, 4, 0.05); border-color: var(--dt-warning); } .followup-priority { font-size: 12px; font-weight: 600; text-align: center; } .followup-title { font-size: 14px; font-weight: 600; color: var(--dt-gray-800); margin-bottom: 6px; } .followup-description { font-size: 13px; color: var(--dt-gray-700); line-height: 1.4; margin-bottom: 8px; } .followup-meta { font-size: 11px; color: var(--dt-gray-600); } .followup-responsible { font-weight: 600; margin-right: 8px; } .followup-status { font-size: 12px; font-weight: 600; color: var(--dt-primary); text-align: center; } /* 구매 대시보드 */ .purchase-dashboard { background-color: white; border-radius: 8px; box-shadow: var(--dt-shadow); border: 1px solid var(--dt-gray-200); padding: 24px; margin-bottom: 24px; } .purchase-dashboard h3 { font-size: 18px; font-weight: 600; color: var(--dt-gray-800); margin-bottom: 20px; } .purchase-list { display: flex; flex-direction: column; gap: 16px; } .purchase-item { display: flex; justify-content: space-between; align-items: center; padding: 20px; border-radius: 8px; border: 1px solid var(--dt-gray-200); } .purchase-item.status-pending { background-color: rgba(251, 188, 4, 0.05); border-color: var(--dt-warning); } .purchase-item.status-inspecting { background-color: rgba(74, 144, 226, 0.05); border-color: var(--dt-primary); } .purchase-header { display: flex; align-items: center; gap: 12px; margin-bottom: 8px; } .po-number { font-size: 14px; font-weight: 700; color: var(--dt-primary); font-family: 'Monaco', 'Menlo', monospace; } .purchase-status { padding: 2px 8px; border-radius: 12px; font-size: 11px; font-weight: 600; } .item-name { font-size: 16px; font-weight: 600; color: var(--dt-gray-800); margin-bottom: 4px; } .item-meta, .item-dates { font-size: 12px; color: var(--dt-gray-600); margin-bottom: 2px; } /* 검수 레이아웃 */ .inspection-layout { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; margin-bottom: 24px; } @media (max-width: 1000px) { .inspection-layout { grid-template-columns: 1fr; } } .inspection-process, .storage-management { background-color: white; border-radius: 8px; box-shadow: var(--dt-shadow); border: 1px solid var(--dt-gray-200); padding: 24px; } .inspection-process h3, .storage-management h3 { font-size: 18px; font-weight: 600; color: var(--dt-gray-800); margin-bottom: 20px; } .process-steps { display: flex; flex-direction: column; gap: 20px; } .step { display: flex; gap: 16px; padding: 16px; border-radius: 8px; border: 1px solid var(--dt-gray-200); } .step.completed { background-color: rgba(52, 168, 83, 0.05); border-color: var(--dt-success); } .step.active { background-color: rgba(74, 144, 226, 0.05); border-color: var(--dt-primary); } .step.pending { background-color: var(--dt-gray-50); } .step-number { width: 32px; height: 32px; border-radius: 50%; background-color: var(--dt-gray-300); color: var(--dt-gray-700); display: flex; align-items: center; justify-content: center; font-weight: 600; font-size: 14px; flex-shrink: 0; } .step.completed .step-number { background-color: var(--dt-success); color: white; } .step.active .step-number { background-color: var(--dt-primary); color: white; } .step-content h4 { font-size: 16px; font-weight: 600; color: var(--dt-gray-800); margin-bottom: 12px; } .checklist { list-style: none; } .checklist li { padding: 4px 0; font-size: 14px; } .checklist li.checked { color: var(--dt-success); } .checklist li.active { color: var(--dt-primary); font-weight: 600; } .result-options { display: flex; gap: 8px; flex-wrap: wrap; } /* 창고 구역 */ .warehouse-zones { display: flex; flex-direction: column; gap: 16px; margin-bottom: 24px; } .zone-item { padding: 16px; border: 1px solid var(--dt-gray-200); border-radius: 8px; background-color: var(--dt-gray-50); } .zone-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; } .zone-name { font-size: 14px; font-weight: 600; color: var(--dt-gray-800); } .zone-capacity { font-size: 12px; color: var(--dt-gray-600); font-family: 'Monaco', 'Menlo', monospace; } .zone-shelves { display: flex; gap: 8px; flex-wrap: wrap; } .shelf { padding: 6px 12px; border-radius: 4px; font-size: 12px; font-weight: 600; cursor: pointer; transition: all 0.2s ease; } .shelf.available { background-color: var(--dt-success); color: white; } .shelf.occupied { background-color: var(--dt-gray-400); color: white; } .shelf.available:hover { background-color: var(--dt-primary); } /* 보관 액션 */ .storage-actions { padding: 16px; background-color: var(--dt-gray-50); border-radius: 6px; border: 1px solid var(--dt-gray-200); } .selected-location { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; } .selected-location .label { font-size: 14px; color: var(--dt-gray-600); font-weight: 500; } .selected-location .location { font-size: 14px; font-weight: 700; color: var(--dt-primary); font-family: 'Monaco', 'Menlo', monospace; } .storage-actions .btn { margin-right: 8px; margin-bottom: 8px; } /* 인수인계 현황 */ .handover-status { background-color: white; border-radius: 8px; box-shadow: var(--dt-shadow); border: 1px solid var(--dt-gray-200); padding: 24px; } .handover-status h3 { font-size: 18px; font-weight: 600; color: var(--dt-gray-800); margin-bottom: 20px; } .handover-list { display: flex; flex-direction: column; gap: 12px; } .handover-item { display: grid; grid-template-columns: 200px 1fr 120px; align-items: center; gap: 16px; padding: 16px; border: 1px solid var(--dt-gray-200); border-radius: 6px; background-color: var(--dt-gray-50); } .item-name { font-size: 14px; font-weight: 600; color: var(--dt-gray-800); } .item-location { font-size: 12px; color: var(--dt-gray-600); font-family: 'Monaco', 'Menlo', monospace; } .quantity-info { display: flex; gap: 12px; font-size: 12px; } .quantity-info span { padding: 2px 6px; border-radius: 4px; font-weight: 600; } .total { background-color: var(--dt-gray-200); color: var(--dt-gray-700); } .handed { background-color: var(--dt-success); color: white; } .remaining { background-color: var(--dt-warning); color: var(--dt-gray-800); } .handover-status-badge { text-align: center; font-size: 12px; font-weight: 600; } /* 작업 레이아웃 */ .work-layout { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; } @media (max-width: 1200px) { .work-layout { grid-template-columns: 1fr; } } .daily-work, .material-check { background-color: white; border-radius: 8px; box-shadow: var(--dt-shadow); border: 1px solid var(--dt-gray-200); padding: 24px; } .daily-work h3, .material-check h3 { font-size: 18px; font-weight: 600; color: var(--dt-gray-800); margin-bottom: 20px; } /* 작업 폼 */ .work-form { display: flex; flex-direction: column; gap: 24px; } .form-section h4 { font-size: 16px; font-weight: 600; color: var(--dt-gray-800); margin-bottom: 16px; } .progress-input { display: flex; align-items: center; gap: 12px; } .progress-slider { flex: 1; height: 6px; border-radius: 3px; background-color: var(--dt-gray-200); outline: none; -webkit-appearance: none; } .progress-slider::-webkit-slider-thumb { -webkit-appearance: none; width: 20px; height: 20px; border-radius: 50%; background-color: var(--dt-primary); cursor: pointer; } .progress-value { font-size: 14px; font-weight: 600; color: var(--dt-primary); min-width: 40px; text-align: right; } /* 이슈 리스트 */ .issue-list { display: flex; flex-direction: column; gap: 12px; margin-bottom: 16px; } .issue-item { padding: 16px; border: 1px solid var(--dt-gray-200); border-radius: 6px; background-color: var(--dt-gray-50); } .issue-header { display: flex; align-items: center; gap: 12px; margin-bottom: 8px; } .issue-time { font-size: 12px; font-weight: 600; color: var(--dt-gray-600); font-family: 'Monaco', 'Menlo', monospace; } .issue-type { padding: 2px 8px; border-radius: 12px; font-size: 11px; font-weight: 600; } .type-material { background-color: var(--dt-warning); color: var(--dt-gray-800); } .type-quality { background-color: var(--dt-danger); color: white; } .issue-urgency { padding: 2px 8px; border-radius: 12px; font-size: 11px; font-weight: 600; } .urgency-high { background-color: var(--dt-danger); color: white; } .urgency-medium { background-color: var(--dt-warning); color: var(--dt-gray-800); } .issue-description { font-size: 14px; color: var(--dt-gray-800); margin-bottom: 4px; } .issue-solution { font-size: 12px; color: var(--dt-gray-600); font-style: italic; } /* 자재 검색 */ .material-search { margin-bottom: 20px; } .search-input { display: flex; gap: 12px; } .search-input .form-input { flex: 1; } /* 자재 리스트 */ .material-list { display: flex; flex-direction: column; gap: 12px; margin-bottom: 20px; } .material-item { display: flex; justify-content: space-between; align-items: center; padding: 16px; border: 1px solid var(--dt-gray-200); border-radius: 6px; } .material-item.status-available { background-color: rgba(52, 168, 83, 0.05); border-color: var(--dt-success); } .material-item.status-ordered { background-color: rgba(251, 188, 4, 0.05); border-color: var(--dt-warning); } .material-item.status-not-requested { background-color: var(--dt-gray-50); border-color: var(--dt-gray-300); } .material-item.status-ready { background-color: rgba(74, 144, 226, 0.05); border-color: var(--dt-primary); } .material-name { font-size: 14px; font-weight: 600; color: var(--dt-gray-800); margin-bottom: 4px; } .material-details { font-size: 12px; color: var(--dt-gray-600); } .material-status { display: flex; align-items: center; gap: 8px; } .material-qty, .material-date, .material-note { font-size: 12px; color: var(--dt-gray-600); font-weight: 600; } /* 자재 액션 */ .material-actions { padding: 16px; background-color: var(--dt-gray-50); border-radius: 6px; border: 1px solid var(--dt-gray-200); } .action-note { margin-bottom: 12px; } .action-note p { font-size: 13px; color: var(--dt-gray-700); margin-bottom: 4px; } .action-note strong { color: var(--dt-danger); } /* 반응형 디자인 */ @media (max-width: 768px) { body { flex-direction: column; } .sidebar { width: 100%; height: auto; order: 2; } .main-content { order: 1; } .page { padding: 16px; } .content-grid, .meeting-layout, .inspection-layout, .work-layout { grid-template-columns: 1fr; } .process-item { grid-template-columns: 1fr; gap: 8px; } .followup-item { grid-template-columns: 1fr; gap: 12px; } .handover-item { grid-template-columns: 1fr; gap: 8px; } }