Files
conai/frontend/src/app/globals.css
sinmb79 2a4950d8a0 feat: CONAI Phase 1 MVP 초기 구현
소형 건설업체(100억 미만)를 위한 AI 기반 토목공사 통합관리 플랫폼

Backend (FastAPI):
- SQLAlchemy 모델 13개 (users, projects, wbs, tasks, daily_reports, reports, inspections, quality, weather, permits, rag, settings)
- API 라우터 11개 (auth, projects, tasks, daily_reports, reports, inspections, weather, rag, kakao, permits, settings)
- Services: Claude AI 래퍼, CPM Gantt 계산, 기상청 API, RAG(pgvector), 카카오 Skill API
- Alembic 마이그레이션 (pgvector 포함)
- pytest 테스트 (CPM, 날씨 경보)

Frontend (Next.js 15):
- 11개 페이지 (대시보드, 프로젝트, Gantt, 일보, 검측, 품질, 날씨, 인허가, RAG, 설정)
- TanStack Query + Zustand + Tailwind CSS

인프라:
- Docker Compose (PostgreSQL pgvector + backend + frontend)
- 한국어 README 및 설치 가이드

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-24 20:06:36 +09:00

80 lines
2.0 KiB
CSS

@tailwind base;
@tailwind components;
@tailwind utilities;
@layer base {
:root {
--brand: #1a4b8c;
--brand-light: #e8eef8;
}
body {
@apply text-sm;
}
h1 { @apply text-2xl font-bold; }
h2 { @apply text-xl font-bold; }
h3 { @apply text-lg font-semibold; }
}
@layer components {
.btn {
@apply inline-flex items-center gap-2 px-4 py-2 rounded-lg font-medium text-sm transition-colors;
}
.btn-primary {
@apply btn bg-brand-500 text-white hover:bg-brand-600 disabled:opacity-50 disabled:cursor-not-allowed;
}
.btn-secondary {
@apply btn bg-white text-gray-700 border border-gray-200 hover:bg-gray-50;
}
.btn-danger {
@apply btn bg-red-600 text-white hover:bg-red-700;
}
.card {
@apply bg-white rounded-xl border border-gray-200 shadow-sm;
}
.card-header {
@apply px-6 py-4 border-b border-gray-100 flex items-center justify-between;
}
.card-body {
@apply px-6 py-4;
}
.badge {
@apply inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium;
}
.badge-blue { @apply badge bg-blue-100 text-blue-700; }
.badge-green { @apply badge bg-green-100 text-green-700; }
.badge-yellow { @apply badge bg-yellow-100 text-yellow-700; }
.badge-red { @apply badge bg-red-100 text-red-700; }
.badge-gray { @apply badge bg-gray-100 text-gray-700; }
.input {
@apply w-full px-3 py-2 border border-gray-200 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-brand-500 focus:border-transparent;
}
.label {
@apply block text-xs font-medium text-gray-600 mb-1;
}
.table-container {
@apply overflow-x-auto rounded-lg border border-gray-200;
}
.table {
@apply w-full text-sm text-left;
}
.table thead tr {
@apply bg-brand-500 text-white;
}
.table thead th {
@apply px-4 py-3 font-medium text-xs uppercase tracking-wide;
}
.table tbody tr {
@apply border-b border-gray-100 hover:bg-gray-50 transition-colors;
}
.table tbody td {
@apply px-4 py-3;
}
}