Spaces:
Running
Running
Download assets/css/style.css from Hphuccoder28/leaf-ai-app: direct link, hf CLI and curl.
- Browser
- Download file 15.4 kB
-
https://huggingface.co/spaces/Hphuccoder28/leaf-ai-app/resolve/main/assets/css/style.css
- Command line
-
hf download hf://spaces/Hphuccoder28/leaf-ai-app/assets/css/style.css
-
curl -L -o style.css https://huggingface.co/spaces/Hphuccoder28/leaf-ai-app/resolve/main/assets/css/style.css
15.4 kB
| /* ========================================================================== | |
| LEAF_AI — Clean Pure-White Organic Agrotech Theme (Light Mode) | |
| Phong cách trang nhã, nền trắng tinh khôi (#ffffff), sắc xanh nông nghiệp tự nhiên. | |
| Đảm bảo 100% không còn nền tối/đen/xám đen, chia tab/page rõ ràng và trực quan. | |
| ========================================================================== */ | |
| :root { | |
| /* Nền & Thẻ — Tinh khôi màu trắng */ | |
| --bg-body: #ffffff; | |
| --bg-card: #ffffff; | |
| --bg-card-subtle: #ffffff; | |
| --bg-green-light: #f0fdf4; | |
| --bg-green-soft: #dcfce7; | |
| /* Viền & Đường phân cách */ | |
| --border-light: #e2e8f0; | |
| --border-subtle: #f1f5f9; | |
| --border-green: #bbf7d0; | |
| --border-green-active: #86efac; | |
| /* Màu sắc chủ đạo Nông nghiệp (Tự nhiên, tươi mát) */ | |
| --primary-green: #16a34a; /* Xanh lá chuẩn */ | |
| --primary-green-hover: #15803d; /* Xanh đậm hơn khi hover */ | |
| --primary-forest: #14532d; /* Xanh đậm thương hiệu */ | |
| --primary-emerald: #059669; | |
| /* Màu trạng thái & Bệnh cây */ | |
| --color-orange: #ea580c; /* Úa sớm (Early blight) */ | |
| --color-red: #dc2626; /* Đốm vi khuẩn / Sương mai */ | |
| --color-amber: #d97706; /* Đốm lá Septoria */ | |
| --color-teal: #0d9488; /* Phấn trắng */ | |
| /* Chữ & Độ tương phản */ | |
| --text-main: #0f172a; /* Chữ chính đen xám đậm rõ nét */ | |
| --text-secondary: #334155; /* Chữ phụ */ | |
| --text-muted: #64748b; /* Chữ mờ / Chú thích */ | |
| --text-green: #15803d; | |
| /* Đổ bóng tự nhiên thanh thoát */ | |
| --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.04); | |
| --shadow-card: 0 2px 8px -1px rgba(0, 0, 0, 0.05), 0 1px 3px -1px rgba(0, 0, 0, 0.03); | |
| --shadow-hover: 0 8px 18px -2px rgba(0, 0, 0, 0.07), 0 3px 6px -2px rgba(0, 0, 0, 0.03); | |
| --shadow-green: 0 4px 12px rgba(22, 163, 74, 0.18); | |
| --safe-bottom: env(safe-area-inset-bottom, 0px); | |
| } | |
| * { | |
| box-sizing: border-box; | |
| } | |
| body { | |
| margin: 0; | |
| padding: 0; | |
| background-color: var(--bg-body); | |
| color: var(--text-main); | |
| font-family: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; | |
| min-height: 100vh; | |
| overflow-x: hidden; | |
| padding-bottom: var(--safe-bottom); | |
| line-height: 1.5; | |
| } | |
| /* ========================================================================== | |
| MULTI-PAGE ROUTING SYSTEM (.page-view) | |
| ========================================================================== */ | |
| .page-view { | |
| display: none; | |
| animation: fadeInPage 0.22s ease-in-out forwards; | |
| } | |
| .page-view.active { | |
| display: block; | |
| } | |
| @keyframes fadeInPage { | |
| from { | |
| opacity: 0; | |
| transform: translateY(6px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| } | |
| /* ========================================================================== | |
| TOP NAVBAR & NAVIGATION LINKS | |
| ========================================================================== */ | |
| .top-navbar-wrapper { | |
| background: #ffffff ; | |
| border-color: var(--border-light) ; | |
| box-shadow: 0 1px 3px rgba(0, 0, 0, 0.03); | |
| z-index: 1030; | |
| } | |
| .brand-icon-wrap { | |
| transition: transform 0.2s ease; | |
| } | |
| .brand-icon-wrap:hover { | |
| transform: scale(1.05); | |
| } | |
| .brand-logo-text { | |
| font-weight: 900; | |
| font-size: 1.8rem; | |
| letter-spacing: 0.5px; | |
| color: var(--primary-forest); | |
| line-height: 1; | |
| } | |
| .brand-subtitle { | |
| font-size: 0.72rem; | |
| letter-spacing: 0.8px; | |
| color: var(--primary-green); | |
| text-transform: uppercase; | |
| font-weight: 700; | |
| } | |
| .nav-link-custom { | |
| color: var(--text-secondary); | |
| font-size: 0.88rem; | |
| font-weight: 600; | |
| padding: 8px 14px ; | |
| border-radius: 8px; | |
| transition: all 0.18s ease; | |
| display: flex; | |
| align-items: center; | |
| text-decoration: none; | |
| } | |
| .nav-link-custom:hover { | |
| color: var(--primary-green); | |
| background: var(--bg-green-light); | |
| } | |
| .nav-link-custom.active { | |
| color: var(--primary-forest); | |
| background: var(--bg-green-soft); | |
| font-weight: 700; | |
| box-shadow: var(--shadow-sm); | |
| } | |
| .project-info-card { | |
| background: var(--bg-green-light); | |
| border: 1px solid var(--border-green); | |
| border-radius: 10px; | |
| padding: 6px 14px; | |
| } | |
| /* ========================================================================== | |
| PANEL TRẮNG THANH LỊCH (GLASS-PANEL CLEAN WHITE) | |
| ========================================================================== */ | |
| .glass-panel { | |
| background: #ffffff; | |
| border: 1px solid var(--border-light); | |
| border-radius: 14px; | |
| box-shadow: var(--shadow-card); | |
| transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1); | |
| } | |
| .glass-panel:hover { | |
| box-shadow: var(--shadow-hover); | |
| border-color: #cbd5e1; | |
| } | |
| .panel-header { | |
| border-bottom: 1px solid var(--border-light); | |
| padding: 12px 18px; | |
| font-weight: 700; | |
| font-size: 0.88rem; | |
| letter-spacing: 0.3px; | |
| color: var(--text-main); | |
| display: flex; | |
| align-items: center; | |
| background: #ffffff; | |
| border-top-left-radius: 14px; | |
| border-top-right-radius: 14px; | |
| } | |
| .panel-body { | |
| padding: 18px; | |
| background: #ffffff; | |
| border-bottom-left-radius: 14px; | |
| border-bottom-right-radius: 14px; | |
| } | |
| /* ========================================================================== | |
| MODEL SWITCHER & SPECS | |
| ========================================================================== */ | |
| .model-switch-btn { | |
| background: #ffffff; | |
| border: 1px solid var(--border-light); | |
| color: var(--text-secondary); | |
| font-size: 0.85rem; | |
| padding: 8px 14px; | |
| border-radius: 8px; | |
| cursor: pointer; | |
| transition: all 0.18s ease; | |
| font-weight: 600; | |
| } | |
| .model-switch-btn:hover { | |
| background: var(--bg-green-light); | |
| border-color: var(--border-green); | |
| } | |
| .model-switch-btn.active { | |
| background: var(--bg-green-light); | |
| border-color: var(--primary-green); | |
| color: var(--primary-forest); | |
| box-shadow: 0 2px 6px rgba(22, 163, 74, 0.12); | |
| } | |
| /* ========================================================================== | |
| FEATURES GRID TILES (Trang chủ) | |
| ========================================================================== */ | |
| .feature-box { | |
| background: #ffffff; | |
| border: 1px solid var(--border-light); | |
| border-radius: 10px; | |
| padding: 12px 14px; | |
| height: 100%; | |
| transition: all 0.18s ease; | |
| } | |
| .feature-box:hover { | |
| transform: translateY(-2px); | |
| border-color: var(--primary-green); | |
| box-shadow: var(--shadow-card); | |
| } | |
| .feature-box.active-feat { | |
| border-color: var(--primary-green); | |
| background: #fafdfa; | |
| } | |
| .feature-icon-circle { | |
| width: 36px; | |
| height: 36px; | |
| border-radius: 10px; | |
| background: var(--bg-green-light); | |
| color: var(--primary-green); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 1.15rem; | |
| } | |
| /* ========================================================================== | |
| USER FLOW BAR (5 Bước trực quan) | |
| ========================================================================== */ | |
| .user-flow-bar { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| position: relative; | |
| overflow-x: auto; | |
| padding: 10px 0; | |
| } | |
| .flow-step { | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| text-align: center; | |
| position: relative; | |
| flex: 1; | |
| min-width: 135px; | |
| } | |
| .flow-step-num { | |
| width: 34px; | |
| height: 34px; | |
| border-radius: 50%; | |
| background: #ffffff; | |
| border: 2px solid #cbd5e1; | |
| color: var(--text-muted); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-weight: 700; | |
| font-size: 0.85rem; | |
| margin-bottom: 6px; | |
| transition: all 0.25s ease; | |
| } | |
| .flow-step.active .flow-step-num { | |
| background: var(--primary-green); | |
| border-color: var(--primary-forest); | |
| color: #ffffff; | |
| box-shadow: 0 3px 10px rgba(22, 163, 74, 0.25); | |
| } | |
| .flow-step.completed .flow-step-num { | |
| background: var(--bg-green-soft); | |
| border-color: var(--primary-green); | |
| color: var(--primary-forest); | |
| } | |
| .flow-step-title { | |
| font-size: 0.82rem; | |
| font-weight: 700; | |
| color: var(--text-main); | |
| } | |
| .flow-step-desc { | |
| font-size: 0.72rem; | |
| color: var(--text-muted); | |
| } | |
| /* ========================================================================== | |
| CANVAS & 3D BOTANICAL LEAF CONTAINER (Nền trắng) | |
| ========================================================================== */ | |
| .canvas-wrapper { | |
| position: relative; | |
| background: #ffffff; | |
| border-radius: 10px; | |
| border: 1px solid var(--border-light); | |
| overflow: hidden; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| min-height: 310px; | |
| } | |
| #scanCanvas { | |
| max-width: 100%; | |
| height: auto; | |
| display: block; | |
| } | |
| #threeLeafContainer { | |
| height: 100%; | |
| min-height: 180px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| position: relative; | |
| } | |
| /* ========================================================================== | |
| DIAGNOSIS RESULT CARDS & ALERTS | |
| ========================================================================== */ | |
| .coinfection-alert { | |
| background: #fffbeb; | |
| border: 1px solid #fde68a; | |
| color: #92400e; | |
| border-radius: 10px; | |
| padding: 12px 16px; | |
| margin-bottom: 14px; | |
| } | |
| .primary-result-card { | |
| background: #ffffff; | |
| border: 1px solid var(--border-light); | |
| border-left: 5px solid var(--color-orange); | |
| border-radius: 10px; | |
| padding: 16px; | |
| box-shadow: var(--shadow-sm); | |
| } | |
| .gauge-circle { | |
| font-size: 2.2rem; | |
| font-weight: 900; | |
| color: var(--color-orange); | |
| } | |
| /* Secondary disease item */ | |
| .secondary-disease-item { | |
| background: #ffffff; | |
| border: 1px solid var(--border-light); | |
| border-radius: 8px; | |
| padding: 8px 12px; | |
| margin-bottom: 6px; | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| } | |
| /* ========================================================================== | |
| DISEASE CARD & THUMB WRAP (HOÀN TOÀN MÀU TRẮNG, KHÔNG CÒN NỀN TỐI) | |
| ========================================================================== */ | |
| .disease-card { | |
| background: #ffffff ; | |
| border: 1px solid var(--border-light) ; | |
| border-radius: 12px; | |
| cursor: pointer; | |
| transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1); | |
| box-shadow: var(--shadow-sm); | |
| } | |
| .disease-card:hover { | |
| transform: translateY(-2px); | |
| border-color: var(--primary-green) ; | |
| box-shadow: var(--shadow-hover); | |
| } | |
| .disease-thumb-wrap { | |
| width: 48px; | |
| height: 48px; | |
| border-radius: 50%; | |
| background: var(--bg-green-light) ; | |
| border: 1px solid var(--border-green) ; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| flex-shrink: 0; | |
| } | |
| /* ========================================================================== | |
| HANDBOOK TABS & ITEMS (NỀN TRẮNG SẠCH) | |
| ========================================================================== */ | |
| .handbook-nav-btn { | |
| background: #ffffff; | |
| border: 1px solid var(--border-light); | |
| color: var(--text-secondary); | |
| font-size: 0.82rem; | |
| padding: 6px 14px; | |
| border-radius: 8px; | |
| transition: all 0.18s ease; | |
| font-weight: 600; | |
| text-decoration: none; | |
| white-space: nowrap; | |
| } | |
| .handbook-nav-btn:hover { | |
| background: var(--bg-green-light); | |
| color: var(--primary-green); | |
| } | |
| .handbook-nav-btn.active { | |
| background: var(--bg-green-soft); | |
| border-color: var(--primary-green); | |
| color: var(--primary-forest); | |
| font-weight: 700; | |
| } | |
| .handbook-card-item { | |
| background: #ffffff ; | |
| border: 1px solid var(--border-light); | |
| border-radius: 10px; | |
| padding: 14px 16px; | |
| box-shadow: var(--shadow-sm); | |
| transition: all 0.18s ease; | |
| } | |
| .handbook-card-item:hover { | |
| border-color: var(--border-green); | |
| box-shadow: var(--shadow-hover); | |
| } | |
| /* ========================================================================== | |
| HISTORY CARDS & ITEMS (NỀN TRẮNG SẠCH) | |
| ========================================================================== */ | |
| .history-card-item { | |
| background: #ffffff ; | |
| border: 1px solid var(--border-light); | |
| border-radius: 10px; | |
| padding: 12px 16px; | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| transition: all 0.18s ease; | |
| } | |
| .history-card-item:hover { | |
| border-color: #cbd5e1; | |
| box-shadow: var(--shadow-sm); | |
| } | |
| /* ========================================================================== | |
| CHATBOT MESSAGES & CHIPS | |
| ========================================================================== */ | |
| .chat-chip-btn { | |
| background: #ffffff; | |
| border: 1px solid var(--border-light); | |
| color: var(--text-secondary); | |
| font-size: 0.8rem; | |
| border-radius: 20px; | |
| padding: 4px 12px; | |
| transition: all 0.18s ease; | |
| } | |
| .chat-chip-btn:hover { | |
| background: var(--bg-green-light); | |
| border-color: var(--primary-green); | |
| color: var(--primary-forest); | |
| } | |
| .user-msg-bubble { | |
| background: var(--bg-green-light); | |
| border: 1px solid var(--border-green); | |
| color: var(--text-main); | |
| padding: 10px 14px; | |
| border-radius: 12px; | |
| display: inline-block; | |
| max-width: 85%; | |
| font-size: 13.5px; | |
| } | |
| .bot-msg-bubble { | |
| background: #ffffff; | |
| border: 1px solid var(--border-light); | |
| color: var(--text-main); | |
| padding: 12px 16px; | |
| border-radius: 12px; | |
| display: inline-block; | |
| max-width: 85%; | |
| font-size: 13.5px; | |
| box-shadow: var(--shadow-sm); | |
| } | |
| /* Dropzone drag active */ | |
| .dropzone.drag-active { | |
| border-color: var(--primary-green) ; | |
| background: var(--bg-green-light) ; | |
| } | |
| /* Footer Banner */ | |
| .footer-banner { | |
| border-top: 1px solid var(--border-light); | |
| padding: 20px 0; | |
| margin-top: 30px; | |
| color: var(--text-muted); | |
| font-size: 0.88rem; | |
| background: #ffffff; | |
| } | |
| /* Nút bấm thương hiệu */ | |
| .btn-primary-agro { | |
| background: var(--primary-green); | |
| color: #ffffff; | |
| border: none; | |
| font-weight: 600; | |
| border-radius: 8px; | |
| padding: 8px 16px; | |
| box-shadow: var(--shadow-green); | |
| transition: all 0.2s ease; | |
| } | |
| .btn-primary-agro:hover { | |
| background: var(--primary-green-hover); | |
| color: #ffffff; | |
| } | |
| /* ========================================================================== | |
| MOBILE APP MODE (Thiết kế chế độ App điện thoại Native Nền Trắng) | |
| ========================================================================== */ | |
| .mobile-bottom-nav { | |
| display: none; | |
| position: fixed; | |
| bottom: 0; | |
| left: 0; | |
| right: 0; | |
| height: 64px; | |
| background: rgba(255, 255, 255, 0.98); | |
| backdrop-filter: blur(12px); | |
| -webkit-backdrop-filter: blur(12px); | |
| border-top: 1px solid var(--border-light); | |
| box-shadow: 0 -4px 16px rgba(0, 0, 0, 0.04); | |
| z-index: 1040; | |
| justify-content: space-around; | |
| align-items: center; | |
| padding-bottom: var(--safe-bottom); | |
| } | |
| .mobile-nav-item { | |
| color: var(--text-muted); | |
| text-decoration: none; | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| font-size: 11px; | |
| font-weight: 600; | |
| transition: all 0.2s; | |
| } | |
| .mobile-nav-item i { | |
| font-size: 20px; | |
| margin-bottom: 2px; | |
| } | |
| .mobile-nav-item.active { | |
| color: var(--primary-green); | |
| } | |
| .mobile-fab-camera { | |
| width: 52px; | |
| height: 52px; | |
| border-radius: 50%; | |
| background: var(--primary-green); | |
| color: #ffffff; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 24px; | |
| box-shadow: 0 4px 16px rgba(22, 163, 74, 0.4); | |
| margin-top: -24px; | |
| border: 4px solid #ffffff; | |
| cursor: pointer; | |
| transition: transform 0.18s ease; | |
| } | |
| .mobile-fab-camera:active { | |
| transform: scale(0.92); | |
| } | |
| /* Responsive Behavior */ | |
| @media (max-width: 991px) { | |
| body { | |
| padding-bottom: 74px; | |
| } | |
| .mobile-bottom-nav { | |
| display: flex; | |
| } | |
| .brand-logo-text { | |
| font-size: 1.5rem; | |
| } | |
| } | |