Spaces:
Running
Running
| /* =========================== | |
| AGROASSIST DESIGN SYSTEM | |
| Premium SaaS — brand green | |
| =========================== */ | |
| :root { | |
| --primary: #52b788; | |
| --primary-dark: #2d6a4f; | |
| --primary-light: #95d5b2; | |
| --primary-pale: #eaf7ef; | |
| --background: #f3faf5; | |
| --white: #ffffff; | |
| --ink: #1e293b; | |
| --muted: #64748b; | |
| --border: #e2e8f0; | |
| --glass-bg: rgba(255, 255, 255, 0.6); | |
| --glass-border: rgba(255, 255, 255, 0.7); | |
| --radius-s: 12px; | |
| --radius: 20px; | |
| --radius-l: 28px; | |
| --shadow: 0 10px 30px rgba(45, 106, 79, 0.1); | |
| --shadow-lg: 0 25px 60px -15px rgba(45, 106, 79, 0.28); | |
| --transition: 0.25s ease; | |
| --transition-slow: 0.5s cubic-bezier(0.16, 1, 0.3, 1); | |
| --font: "Poppins", sans-serif; | |
| } | |
| /* =========================== | |
| RESET | |
| =========================== */ | |
| * { | |
| margin: 0; | |
| padding: 0; | |
| box-sizing: border-box; | |
| } | |
| html { | |
| scroll-behavior: smooth; | |
| } | |
| body { | |
| font-family: var(--font); | |
| background: var(--background); | |
| color: var(--ink); | |
| -webkit-font-smoothing: antialiased; | |
| } | |
| a { | |
| text-decoration: none; | |
| color: inherit; | |
| transition: var(--transition); | |
| } | |
| ::selection { | |
| background: var(--primary); | |
| color: #fff; | |
| } | |
| :focus-visible { | |
| outline: 2px solid var(--primary-dark); | |
| outline-offset: 3px; | |
| } | |
| h1, | |
| h2, | |
| h3, | |
| h4, | |
| h5 { | |
| font-family: var(--font); | |
| color: var(--primary-dark); | |
| font-weight: 600; | |
| } | |
| /* =========================== | |
| SCROLL REVEAL | |
| =========================== */ | |
| [data-animate] { | |
| opacity: 0; | |
| transform: translateY(24px); | |
| transition: | |
| opacity 0.7s ease, | |
| transform 0.7s cubic-bezier(0.16, 1, 0.3, 1); | |
| } | |
| [data-animate].is-visible { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| @media (prefers-reduced-motion: reduce) { | |
| *, | |
| *::before, | |
| *::after { | |
| animation-duration: 0.001ms ; | |
| animation-iteration-count: 1 ; | |
| transition: none ; | |
| scroll-behavior: auto ; | |
| } | |
| [data-animate] { | |
| opacity: 1 ; | |
| transform: none ; | |
| } | |
| } | |
| /* =========================== | |
| NAVBAR (glass) | |
| =========================== */ | |
| .navbar { | |
| background: rgba(255, 255, 255, 0.78); | |
| backdrop-filter: blur(14px); | |
| -webkit-backdrop-filter: blur(14px); | |
| padding: 14px 0; | |
| border-bottom: none; | |
| box-shadow: | |
| 0 1px 0 rgba(45, 106, 79, 0.08), | |
| 0 14px 30px -18px rgba(45, 106, 79, 0.18); | |
| } | |
| .logo { | |
| width: 40px; | |
| height: 40px; | |
| object-fit: contain; | |
| border-radius: 10px; | |
| box-shadow: 0 0 0 6px rgba(82, 183, 136, 0.12); | |
| } | |
| .navbar-brand { | |
| font-weight: 700; | |
| font-size: 1.3rem; | |
| } | |
| .navbar-brand span { | |
| background: linear-gradient(135deg, var(--primary-dark), var(--primary)); | |
| -webkit-background-clip: text; | |
| background-clip: text; | |
| color: transparent; | |
| } | |
| .navbar-brand:hover .logo { | |
| box-shadow: 0 0 0 6px rgba(82, 183, 136, 0.22); | |
| } | |
| .nav-link { | |
| color: var(--ink); | |
| font-weight: 500; | |
| font-size: 14.5px; | |
| margin-left: 6px; | |
| padding: 8px 12px ; | |
| border-radius: 100px; | |
| } | |
| .nav-link:hover { | |
| color: var(--primary-dark); | |
| background: var(--primary-pale); | |
| } | |
| .nav-link.active-link { | |
| color: var(--primary-dark); | |
| background: var(--primary-pale); | |
| font-weight: 600; | |
| } | |
| .navbar.navbar-scrolled { | |
| box-shadow: 0 8px 24px rgba(45, 106, 79, 0.1); | |
| background: rgba(255, 255, 255, 0.85); | |
| } | |
| /* =========================== | |
| TOP ACCENT BAR | |
| =========================== */ | |
| .top-accent-bar { | |
| height: 4px; | |
| width: 100%; | |
| background: linear-gradient( | |
| 90deg, | |
| var(--primary-light), | |
| var(--primary), | |
| var(--primary-dark), | |
| var(--primary) | |
| ); | |
| background-size: 200% 100%; | |
| animation: bar-shift 8s linear infinite; | |
| } | |
| @keyframes bar-shift { | |
| from { | |
| background-position: 0% 0; | |
| } | |
| to { | |
| background-position: 200% 0; | |
| } | |
| } | |
| /* =========================== | |
| BUTTONS | |
| =========================== */ | |
| .btn-primary { | |
| background: linear-gradient( | |
| 135deg, | |
| var(--primary) 0%, | |
| var(--primary-dark) 100% | |
| ); | |
| border: none; | |
| color: #fff; | |
| border-radius: 100px; | |
| padding: 13px 26px; | |
| font-weight: 600; | |
| font-size: 14.5px; | |
| transition: var(--transition); | |
| box-shadow: 0 6px 18px rgba(82, 183, 136, 0.3); | |
| } | |
| .btn-primary:hover { | |
| transform: translateY(-2px); | |
| box-shadow: 0 10px 26px rgba(82, 183, 136, 0.42); | |
| color: #fff; | |
| } | |
| .btn-primary:active { | |
| transform: translateY(0); | |
| } | |
| .btn-outline { | |
| border: 1.5px solid var(--border); | |
| color: var(--ink); | |
| background: rgba(255, 255, 255, 0.6); | |
| border-radius: 100px; | |
| padding: 13px 26px; | |
| font-weight: 600; | |
| font-size: 14.5px; | |
| transition: var(--transition); | |
| } | |
| .btn-outline:hover { | |
| border-color: var(--primary); | |
| color: var(--primary-dark); | |
| transform: translateY(-2px); | |
| } | |
| .btn-reset { | |
| background: transparent; | |
| border: 1.5px solid var(--border); | |
| color: var(--muted); | |
| border-radius: 100px; | |
| padding: 13px 26px; | |
| font-weight: 600; | |
| font-size: 14.5px; | |
| transition: var(--transition); | |
| display: inline-block; | |
| } | |
| .btn-reset:hover { | |
| border-color: #e57373; | |
| color: #d64545; | |
| } | |
| /* =========================== | |
| SHARED | |
| =========================== */ | |
| .card { | |
| border: none; | |
| border-radius: var(--radius); | |
| box-shadow: var(--shadow); | |
| } | |
| .section-block { | |
| padding: 100px 0; | |
| } | |
| .eyebrow { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 8px; | |
| font-size: 12px; | |
| font-weight: 600; | |
| letter-spacing: 0.05em; | |
| text-transform: uppercase; | |
| color: var(--primary-dark); | |
| background: var(--primary-pale); | |
| padding: 7px 16px; | |
| border-radius: 100px; | |
| margin-bottom: 18px; | |
| } | |
| .eyebrow .dot { | |
| width: 6px; | |
| height: 6px; | |
| border-radius: 50%; | |
| background: var(--primary); | |
| box-shadow: 0 0 0 3px rgba(82, 183, 136, 0.25); | |
| } | |
| .section-title { | |
| font-size: clamp(26px, 3vw, 38px); | |
| font-weight: 700; | |
| color: var(--primary-dark); | |
| margin-bottom: 14px; | |
| } | |
| .section-subtitle { | |
| color: var(--muted); | |
| max-width: 620px; | |
| font-size: 16px; | |
| line-height: 1.6; | |
| } | |
| .section-head { | |
| margin-bottom: 54px; | |
| } | |
| /* =========================== | |
| HERO (banner + copy, no overlay) | |
| =========================== */ | |
| .hero-simple { | |
| position: relative; | |
| padding: 60px 0 50px; | |
| overflow: hidden; | |
| background: | |
| radial-gradient( | |
| 600px circle at 12% -10%, | |
| rgba(82, 183, 136, 0.22), | |
| transparent 60% | |
| ), | |
| radial-gradient( | |
| 500px circle at 92% 5%, | |
| rgba(149, 213, 178, 0.28), | |
| transparent 60% | |
| ), | |
| radial-gradient( | |
| 700px circle at 50% 130%, | |
| rgba(234, 247, 239, 0.9), | |
| transparent 60% | |
| ), | |
| var(--background); | |
| } | |
| .banner-frame { | |
| position: relative; | |
| max-width: 760px; | |
| margin: 0 auto; | |
| } | |
| .banner-img-inner { | |
| border-radius: var(--radius-l); | |
| overflow: hidden; | |
| box-shadow: var(--shadow-lg); | |
| } | |
| .banner-frame img { | |
| width: 100%; | |
| height: auto; | |
| display: block; | |
| } | |
| .banner-badge { | |
| position: absolute; | |
| bottom: -18px; | |
| right: 28px; | |
| background: #fff; | |
| border-radius: 100px; | |
| padding: 10px 20px; | |
| box-shadow: var(--shadow-lg); | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| font-size: 13px; | |
| font-weight: 700; | |
| color: var(--primary-dark); | |
| } | |
| .banner-badge i { | |
| color: var(--primary); | |
| } | |
| .hero-copy { | |
| text-align: center; | |
| max-width: 640px; | |
| margin: 68px auto 0; | |
| } | |
| .hero-copy h1 { | |
| font-weight: 700; | |
| font-size: clamp(28px, 3.6vw, 42px); | |
| line-height: 1.15; | |
| } | |
| .hero-copy p { | |
| color: var(--muted); | |
| font-size: 16.5px; | |
| margin-top: 16px; | |
| line-height: 1.65; | |
| } | |
| .hero-actions { | |
| display: flex; | |
| gap: 14px; | |
| justify-content: center; | |
| margin-top: 28px; | |
| flex-wrap: wrap; | |
| } | |
| .hero-stats { | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 20px; | |
| margin-top: 34px; | |
| flex-wrap: wrap; | |
| } | |
| .hero-stats .stat { | |
| font-size: 13.5px; | |
| font-weight: 600; | |
| color: var(--primary-dark); | |
| } | |
| .hero-stats .stat span { | |
| color: var(--muted); | |
| font-weight: 500; | |
| } | |
| .hero-stats .divider { | |
| width: 4px; | |
| height: 4px; | |
| border-radius: 50%; | |
| background: var(--border); | |
| } | |
| /* =========================== | |
| PROCESS | |
| =========================== */ | |
| .process-list { | |
| margin-top: 20px; | |
| } | |
| .process-item { | |
| background: var(--white); | |
| border-radius: var(--radius); | |
| padding: 32px 26px; | |
| box-shadow: var(--shadow); | |
| transition: var(--transition-slow); | |
| height: 100%; | |
| } | |
| .process-item:hover { | |
| transform: translateY(-6px); | |
| box-shadow: var(--shadow-lg); | |
| } | |
| .process-icon { | |
| width: 56px; | |
| height: 56px; | |
| border-radius: 16px; | |
| background: linear-gradient( | |
| 135deg, | |
| var(--primary) 0%, | |
| var(--primary-dark) 100% | |
| ); | |
| color: #fff; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 22px; | |
| margin-bottom: 22px; | |
| box-shadow: 0 8px 20px rgba(82, 183, 136, 0.3); | |
| } | |
| .process-item h4 { | |
| font-size: 18px; | |
| margin-bottom: 10px; | |
| } | |
| .process-item p { | |
| color: var(--muted); | |
| font-size: 14.5px; | |
| line-height: 1.6; | |
| } | |
| /* =========================== | |
| FEATURES (equal-weight cards) | |
| =========================== */ | |
| .feature-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); | |
| gap: 20px; | |
| } | |
| .feature-card-v2 { | |
| background: var(--white); | |
| border-radius: var(--radius); | |
| padding: 30px 26px; | |
| box-shadow: var(--shadow); | |
| transition: var(--transition-slow); | |
| display: flex; | |
| flex-direction: column; | |
| height: 100%; | |
| } | |
| .feature-card-v2:hover { | |
| transform: translateY(-5px); | |
| box-shadow: var(--shadow-lg); | |
| } | |
| .feature-card-v2 .capability-icon { | |
| width: 48px; | |
| height: 48px; | |
| border-radius: 13px; | |
| background: var(--primary-pale); | |
| color: var(--primary-dark); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 20px; | |
| margin-bottom: 18px; | |
| } | |
| .feature-card-v2 h4 { | |
| font-size: 17px; | |
| margin-bottom: 8px; | |
| } | |
| .feature-card-v2 p { | |
| color: var(--muted); | |
| font-size: 14.5px; | |
| line-height: 1.6; | |
| flex-grow: 1; | |
| margin-bottom: 20px; | |
| } | |
| .feature-link { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 8px; | |
| font-size: 13.5px; | |
| font-weight: 600; | |
| color: var(--primary-dark); | |
| } | |
| .feature-link i { | |
| font-size: 11px; | |
| transition: var(--transition); | |
| } | |
| .feature-card-v2:hover .feature-link i { | |
| transform: translateX(4px); | |
| } | |
| /* =========================== | |
| CROP STRIP (marquee) | |
| =========================== */ | |
| .crop-strip { | |
| overflow: hidden; | |
| margin: 20px 0; | |
| -webkit-mask-image: linear-gradient( | |
| 90deg, | |
| transparent, | |
| #000 8%, | |
| #000 92%, | |
| transparent | |
| ); | |
| mask-image: linear-gradient( | |
| 90deg, | |
| transparent, | |
| #000 8%, | |
| #000 92%, | |
| transparent | |
| ); | |
| } | |
| .crop-track { | |
| display: flex; | |
| gap: 16px; | |
| width: max-content; | |
| } | |
| .crop-track.dir-a { | |
| animation: scroll-left 50s linear infinite; | |
| } | |
| .crop-track.dir-b { | |
| animation: scroll-right 50s linear infinite; | |
| margin-top: 16px; | |
| } | |
| @keyframes scroll-left { | |
| from { | |
| transform: translateX(0); | |
| } | |
| to { | |
| transform: translateX(-50%); | |
| } | |
| } | |
| @keyframes scroll-right { | |
| from { | |
| transform: translateX(-50%); | |
| } | |
| to { | |
| transform: translateX(0); | |
| } | |
| } | |
| .crop-tile { | |
| flex: 0 0 auto; | |
| width: 128px; | |
| background: var(--white); | |
| border-radius: 16px; | |
| overflow: hidden; | |
| text-align: center; | |
| box-shadow: var(--shadow); | |
| transition: var(--transition); | |
| } | |
| .crop-tile:hover { | |
| transform: translateY(-5px) scale(1.02); | |
| } | |
| .crop-tile .crop-img-wrap { | |
| overflow: hidden; | |
| height: 96px; | |
| } | |
| .crop-tile img { | |
| width: 100%; | |
| height: 100%; | |
| object-fit: cover; | |
| display: block; | |
| transition: transform 0.4s ease; | |
| } | |
| .crop-tile:hover img { | |
| transform: scale(1.12); | |
| } | |
| .crop-tile span { | |
| display: block; | |
| padding: 10px 6px; | |
| font-size: 12.5px; | |
| font-weight: 500; | |
| color: var(--primary-dark); | |
| } | |
| @media (prefers-reduced-motion: reduce) { | |
| .crop-track.dir-a, | |
| .crop-track.dir-b { | |
| animation: none; | |
| } | |
| } | |
| /* =========================== | |
| CTA BAND | |
| =========================== */ | |
| .cta { | |
| background: linear-gradient(135deg, var(--primary-dark) 0%, #143d2c 100%); | |
| border-radius: var(--radius-l); | |
| padding: 64px 40px; | |
| text-align: center; | |
| margin: 30px auto 90px; | |
| } | |
| .cta h3 { | |
| color: #fff; | |
| font-weight: 700; | |
| font-size: clamp(26px, 3vw, 36px); | |
| max-width: 580px; | |
| margin: 0 auto 14px; | |
| } | |
| .cta p { | |
| color: rgba(255, 255, 255, 0.7); | |
| margin-bottom: 30px; | |
| } | |
| /* =========================== | |
| FOOTER | |
| =========================== */ | |
| .footer-wave { | |
| display: block; | |
| width: 100%; | |
| height: 60px; | |
| margin-bottom: -1px; | |
| } | |
| .footer-wave path { | |
| fill: var(--primary-dark); | |
| } | |
| .footer { | |
| position: relative; | |
| overflow: hidden; | |
| background: linear-gradient(160deg, var(--primary-dark) 0%, #143d2c 100%); | |
| color: #fff; | |
| padding: 20px 0 0; | |
| } | |
| .footer::before { | |
| content: ""; | |
| position: absolute; | |
| top: -120px; | |
| right: -80px; | |
| width: 380px; | |
| height: 380px; | |
| background: radial-gradient( | |
| circle, | |
| rgba(82, 183, 136, 0.28), | |
| transparent 70% | |
| ); | |
| pointer-events: none; | |
| } | |
| .footer-inner { | |
| position: relative; | |
| z-index: 1; | |
| padding-top: 50px; | |
| } | |
| .footer-brand-row { | |
| display: flex; | |
| align-items: center; | |
| gap: 12px; | |
| margin-bottom: 16px; | |
| } | |
| .footer-logo { | |
| width: 42px; | |
| height: 42px; | |
| object-fit: contain; | |
| border-radius: 11px; | |
| box-shadow: 0 0 0 6px rgba(255, 255, 255, 0.08); | |
| } | |
| .footer h4, | |
| .footer h5 { | |
| color: #fff; | |
| font-weight: 600; | |
| margin-bottom: 14px; | |
| } | |
| .footer p { | |
| color: rgba(255, 255, 255, 0.65); | |
| font-size: 14.5px; | |
| line-height: 1.6; | |
| } | |
| .footer ul { | |
| margin-bottom: 16px; | |
| list-style: none; | |
| } | |
| .footer li { | |
| margin-bottom: 10px; | |
| } | |
| .footer a { | |
| color: rgba(255, 255, 255, 0.75); | |
| font-size: 14.5px; | |
| } | |
| .footer-link-row { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 8px; | |
| } | |
| .footer-link-row i { | |
| font-size: 10px; | |
| opacity: 0; | |
| transform: translateX(-4px); | |
| transition: var(--transition); | |
| color: var(--primary-light); | |
| } | |
| .footer a:hover { | |
| color: #fff; | |
| } | |
| .footer a:hover .footer-link-row i, | |
| .footer-link-row:hover i { | |
| opacity: 1; | |
| transform: translateX(0); | |
| } | |
| .stack-chips { | |
| display: flex; | |
| gap: 8px; | |
| flex-wrap: wrap; | |
| margin: 14px 0; | |
| } | |
| .chip { | |
| font-size: 11px; | |
| font-weight: 500; | |
| color: rgba(255, 255, 255, 0.8); | |
| border: 1px solid rgba(255, 255, 255, 0.2); | |
| padding: 5px 12px; | |
| border-radius: 100px; | |
| transition: var(--transition); | |
| } | |
| .chip:hover { | |
| border-color: var(--primary-light); | |
| background: rgba(255, 255, 255, 0.06); | |
| } | |
| .footer-bottom { | |
| position: relative; | |
| z-index: 1; | |
| margin-top: 40px; | |
| border-top: 1px solid rgba(255, 255, 255, 0.14); | |
| padding: 22px 0 26px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| flex-wrap: wrap; | |
| gap: 14px; | |
| } | |
| .footer-bottom small { | |
| color: rgba(255, 255, 255, 0.45); | |
| font-size: 11px; | |
| } | |
| .footer-social { | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| } | |
| .footer-social a { | |
| width: 38px; | |
| height: 38px; | |
| border-radius: 11px; | |
| background: rgba(255, 255, 255, 0.08); | |
| border: 1px solid rgba(255, 255, 255, 0.1); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 14px; | |
| color: #fff; | |
| transition: var(--transition); | |
| } | |
| .footer-social a:hover { | |
| background: var(--primary); | |
| border-color: var(--primary); | |
| transform: translateY(-3px); | |
| box-shadow: 0 8px 20px rgba(82, 183, 136, 0.4); | |
| } | |
| .back-to-top { | |
| font-size: 12.5px; | |
| font-weight: 600; | |
| color: rgba(255, 255, 255, 0.7) ; | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 6px; | |
| padding: 8px 16px ; | |
| border-radius: 100px; | |
| border: 1px solid rgba(255, 255, 255, 0.15); | |
| background: transparent ; | |
| } | |
| .back-to-top:hover { | |
| color: #fff ; | |
| border-color: var(--primary-light); | |
| background: rgba(255, 255, 255, 0.06) ; | |
| } | |
| /* =========================== | |
| PAGE HEADER (interior pages) | |
| =========================== */ | |
| .page-head { | |
| padding: 70px 0 20px; | |
| text-align: center; | |
| } | |
| .page-head h1 { | |
| font-weight: 700; | |
| font-size: clamp(30px, 3.6vw, 44px); | |
| } | |
| .page-head p { | |
| color: var(--muted); | |
| max-width: 520px; | |
| margin: 14px auto 0; | |
| font-size: 16px; | |
| } | |
| /* =========================== | |
| ALERT | |
| =========================== */ | |
| .alert-agro { | |
| background: #fdf3e3; | |
| border: 1px solid #f3d99b; | |
| color: #8a5a12; | |
| border-radius: var(--radius-s); | |
| padding: 14px 18px; | |
| font-size: 14.5px; | |
| margin-bottom: 30px; | |
| } | |
| /* =========================== | |
| UPLOAD ZONE | |
| =========================== */ | |
| .upload-zone { | |
| background: linear-gradient(135deg, var(--primary-dark) 0%, #143d2c 100%); | |
| border: 1.5px dashed rgba(255, 255, 255, 0.25); | |
| border-radius: var(--radius-l); | |
| padding: 56px 32px; | |
| text-align: center; | |
| transition: var(--transition); | |
| } | |
| .upload-zone.is-dragover { | |
| border-color: var(--primary-light); | |
| background-color: rgba(82, 183, 136, 0.15); | |
| } | |
| .upload-icon { | |
| width: 64px; | |
| height: 64px; | |
| border-radius: 16px; | |
| background: rgba(255, 255, 255, 0.12); | |
| color: var(--primary-light); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 26px; | |
| margin: 0 auto 20px; | |
| } | |
| .upload-zone h4 { | |
| color: #fff; | |
| font-weight: 600; | |
| margin-bottom: 6px; | |
| } | |
| .upload-zone p { | |
| color: rgba(255, 255, 255, 0.6); | |
| font-size: 14px; | |
| margin-bottom: 22px; | |
| } | |
| .upload-zone .preview-frame { | |
| margin-top: 26px; | |
| } | |
| .upload-zone img#preview { | |
| border-radius: var(--radius-s); | |
| border: 1px solid rgba(255, 255, 255, 0.2); | |
| } | |
| .upload-submit { | |
| text-align: center; | |
| margin-top: 28px; | |
| } | |
| /* =========================== | |
| RESULT PANEL | |
| =========================== */ | |
| .result-panel { | |
| margin-top: 60px; | |
| background: var(--white); | |
| border-radius: var(--radius-l); | |
| padding: 40px; | |
| box-shadow: var(--shadow-lg); | |
| } | |
| .result-head { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: flex-start; | |
| flex-wrap: wrap; | |
| gap: 20px; | |
| margin-bottom: 28px; | |
| padding-bottom: 24px; | |
| border-bottom: 1px solid var(--border); | |
| } | |
| .result-eyebrow { | |
| font-size: 11px; | |
| text-transform: uppercase; | |
| letter-spacing: 0.05em; | |
| color: var(--muted); | |
| margin-bottom: 6px; | |
| font-weight: 600; | |
| } | |
| .result-name { | |
| font-size: clamp(24px, 3vw, 32px); | |
| font-weight: 700; | |
| color: var(--primary-dark); | |
| } | |
| .result-confidence { | |
| font-size: 24px; | |
| font-weight: 700; | |
| color: var(--primary); | |
| text-align: right; | |
| } | |
| .result-confidence.conf-high { | |
| color: #2f9e58; | |
| } | |
| .result-confidence.conf-mid { | |
| color: #d98c1f; | |
| } | |
| .result-confidence.conf-low { | |
| color: #d64545; | |
| } | |
| .result-confidence .cf-label { | |
| display: block; | |
| font-size: 10px; | |
| text-transform: uppercase; | |
| letter-spacing: 0.05em; | |
| color: var(--muted); | |
| margin-bottom: 4px; | |
| font-weight: 600; | |
| } | |
| .result-image { | |
| width: 100%; | |
| max-width: 360px; | |
| border-radius: var(--radius); | |
| margin-bottom: 32px; | |
| display: block; | |
| box-shadow: var(--shadow); | |
| } | |
| .detail-block { | |
| margin-bottom: 28px; | |
| } | |
| .detail-block:last-child { | |
| margin-bottom: 0; | |
| } | |
| .detail-block h4 { | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| font-size: 15.5px; | |
| font-weight: 600; | |
| margin-bottom: 12px; | |
| } | |
| .detail-block h4 i { | |
| color: var(--primary); | |
| font-size: 14px; | |
| } | |
| .detail-block p { | |
| color: var(--muted); | |
| font-size: 14.5px; | |
| line-height: 1.65; | |
| } | |
| .detail-list { | |
| list-style: none; | |
| } | |
| .detail-list li { | |
| position: relative; | |
| padding-left: 20px; | |
| margin-bottom: 8px; | |
| font-size: 14.5px; | |
| color: var(--muted); | |
| line-height: 1.5; | |
| } | |
| .detail-list li::before { | |
| content: ""; | |
| position: absolute; | |
| left: 0; | |
| top: 8px; | |
| width: 6px; | |
| height: 6px; | |
| border-radius: 50%; | |
| background: var(--primary); | |
| } | |
| .result-actions { | |
| text-align: center; | |
| margin-top: 30px; | |
| } | |
| .nutrient-row { | |
| display: flex; | |
| align-items: center; | |
| gap: 12px; | |
| background: var(--primary-pale); | |
| border-radius: var(--radius-s); | |
| padding: 16px 20px; | |
| margin-bottom: 28px; | |
| } | |
| .nutrient-row .n-icon { | |
| width: 40px; | |
| height: 40px; | |
| border-radius: 12px; | |
| background: #fff; | |
| color: var(--primary-dark); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 17px; | |
| flex-shrink: 0; | |
| } | |
| .nutrient-row .n-value { | |
| font-size: 18px; | |
| font-weight: 700; | |
| color: var(--primary-dark); | |
| } | |
| .nutrient-row .n-label { | |
| font-size: 12px; | |
| color: var(--muted); | |
| } | |
| .nutrient-row .n-label-top { | |
| font-size: 11px; | |
| text-transform: uppercase; | |
| letter-spacing: 0.05em; | |
| color: var(--muted); | |
| font-weight: 600; | |
| margin-bottom: 3px; | |
| } | |
| .vitamin-pills { | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 8px; | |
| } | |
| .vitamin-pill { | |
| background: var(--primary-pale); | |
| color: var(--primary-dark); | |
| font-size: 12.5px; | |
| font-weight: 600; | |
| padding: 7px 14px; | |
| border-radius: 100px; | |
| } | |
| .low-confidence-panel { | |
| margin-top: 60px; | |
| background: #fdf3e3; | |
| border: 1px solid #f3d99b; | |
| border-radius: var(--radius-l); | |
| padding: 40px; | |
| text-align: center; | |
| } | |
| .low-confidence-panel .lc-icon { | |
| width: 56px; | |
| height: 56px; | |
| border-radius: 16px; | |
| background: #f3d99b; | |
| color: #8a5a12; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 24px; | |
| margin: 0 auto 18px; | |
| } | |
| .low-confidence-panel h4 { | |
| color: #8a5a12; | |
| margin-bottom: 8px; | |
| } | |
| .low-confidence-panel p { | |
| color: #9c6a1f; | |
| font-size: 14.5px; | |
| max-width: 420px; | |
| margin: 0 auto; | |
| } | |
| .low-confidence-panel .lc-tips { | |
| list-style: none; | |
| margin-top: 18px; | |
| display: inline-block; | |
| text-align: left; | |
| } | |
| .low-confidence-panel .lc-tips li { | |
| font-size: 13.5px; | |
| color: #9c6a1f; | |
| margin-bottom: 8px; | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| } | |
| .low-confidence-panel .lc-tips li i { | |
| color: #b8811f; | |
| font-size: 12px; | |
| width: 16px; | |
| text-align: center; | |
| } | |
| .status-badge { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 8px; | |
| padding: 8px 18px; | |
| border-radius: 100px; | |
| font-weight: 700; | |
| font-size: 14px; | |
| margin-top: 8px; | |
| } | |
| .status-badge.status-healthy { | |
| background: #e3f6e9; | |
| color: #1f8f47; | |
| } | |
| .status-badge.status-rotten { | |
| background: #fbe3e3; | |
| color: #c93d3d; | |
| } | |
| .status-badge i { | |
| font-size: 12px; | |
| } | |
| .health-note { | |
| margin-top: 24px; | |
| padding: 16px 20px; | |
| border-radius: var(--radius-s); | |
| font-size: 14.5px; | |
| line-height: 1.6; | |
| } | |
| .health-note.note-healthy { | |
| background: #e3f6e9; | |
| color: #1a6b37; | |
| } | |
| .health-note.note-rotten { | |
| background: #fbe3e3; | |
| color: #a12d2d; | |
| } | |
| .low-confidence-note { | |
| margin-top: 16px; | |
| font-size: 13px; | |
| color: var(--muted); | |
| text-align: center; | |
| } | |
| /* =========================== | |
| RECOMMENDATION FORM | |
| =========================== */ | |
| .field-form { | |
| background: var(--white); | |
| border-radius: var(--radius-l); | |
| padding: 40px; | |
| box-shadow: var(--shadow-lg); | |
| } | |
| .form-toolbar { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| flex-wrap: wrap; | |
| gap: 12px; | |
| margin-bottom: 30px; | |
| padding-bottom: 22px; | |
| border-bottom: 1px solid var(--border); | |
| } | |
| .form-toolbar p { | |
| font-size: 13.5px; | |
| color: var(--muted); | |
| margin: 0; | |
| } | |
| .btn-example { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 8px; | |
| background: var(--primary-pale); | |
| border: 1px solid transparent; | |
| color: var(--primary-dark); | |
| font-family: var(--font); | |
| font-weight: 600; | |
| font-size: 13px; | |
| padding: 9px 18px; | |
| border-radius: 100px; | |
| cursor: pointer; | |
| transition: var(--transition); | |
| } | |
| .btn-example:hover { | |
| border-color: var(--primary); | |
| transform: translateY(-2px); | |
| } | |
| .field-section { | |
| margin-bottom: 32px; | |
| } | |
| .field-section:last-of-type { | |
| margin-bottom: 0; | |
| } | |
| .field-section-head { | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| margin-bottom: 18px; | |
| } | |
| .field-section-head .fs-icon { | |
| width: 30px; | |
| height: 30px; | |
| border-radius: 9px; | |
| background: var(--primary-pale); | |
| color: var(--primary-dark); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 12px; | |
| flex-shrink: 0; | |
| } | |
| .field-section-head h4 { | |
| font-size: 14px; | |
| font-weight: 600; | |
| color: var(--primary-dark); | |
| margin: 0; | |
| } | |
| .field-section-head .fs-count { | |
| font-size: 12px; | |
| color: var(--muted); | |
| margin-left: auto; | |
| } | |
| .field-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); | |
| gap: 20px; | |
| } | |
| .field-group label { | |
| display: block; | |
| font-size: 13px; | |
| font-weight: 600; | |
| color: var(--primary-dark); | |
| margin-bottom: 8px; | |
| } | |
| .field-input { | |
| display: flex; | |
| align-items: center; | |
| gap: 12px; | |
| background: var(--background); | |
| border: 1.5px solid var(--border); | |
| border-radius: var(--radius-s); | |
| padding: 12px 16px; | |
| transition: var(--transition); | |
| } | |
| .field-input:focus-within { | |
| border-color: var(--primary); | |
| background: #fff; | |
| box-shadow: 0 0 0 4px rgba(82, 183, 136, 0.12); | |
| } | |
| .field-input.is-warning { | |
| border-color: #e8b464; | |
| background: #fffaf2; | |
| } | |
| .field-input.is-warning i { | |
| color: #c9871f; | |
| } | |
| .field-input i { | |
| color: var(--primary); | |
| font-size: 15px; | |
| width: 18px; | |
| text-align: center; | |
| flex-shrink: 0; | |
| transition: var(--transition); | |
| } | |
| .field-input input { | |
| border: none; | |
| background: transparent; | |
| outline: none; | |
| width: 100%; | |
| font-family: var(--font); | |
| font-size: 15px; | |
| color: var(--ink); | |
| font-weight: 500; | |
| -moz-appearance: textfield; | |
| } | |
| .field-input input::-webkit-outer-spin-button, | |
| .field-input input::-webkit-inner-spin-button { | |
| -webkit-appearance: none; | |
| margin: 0; | |
| } | |
| .field-input input::placeholder { | |
| color: #a3b3ac; | |
| font-weight: 400; | |
| } | |
| .field-hint { | |
| font-size: 11.5px; | |
| color: var(--muted); | |
| margin-top: 6px; | |
| } | |
| .field-warning { | |
| display: none; | |
| align-items: center; | |
| gap: 6px; | |
| font-size: 11.5px; | |
| color: #b8811f; | |
| margin-top: 6px; | |
| } | |
| .field-warning.is-visible { | |
| display: flex; | |
| } | |
| .field-warning i { | |
| font-size: 10px; | |
| } | |
| .form-actions { | |
| display: flex; | |
| gap: 14px; | |
| justify-content: center; | |
| margin-top: 36px; | |
| padding-top: 28px; | |
| border-top: 1px solid var(--border); | |
| } | |
| .btn-primary .spinner { | |
| display: none; | |
| width: 14px; | |
| height: 14px; | |
| border: 2px solid rgba(255, 255, 255, 0.35); | |
| border-top-color: #fff; | |
| border-radius: 50%; | |
| animation: btn-spin 0.7s linear infinite; | |
| margin-right: 8px; | |
| vertical-align: -2px; | |
| } | |
| .btn-primary.is-loading .spinner { | |
| display: inline-block; | |
| } | |
| .btn-primary.is-loading { | |
| pointer-events: none; | |
| opacity: 0.85; | |
| } | |
| @keyframes btn-spin { | |
| to { | |
| transform: rotate(360deg); | |
| } | |
| } | |
| /* ---- Result ---- */ | |
| .result-hero { | |
| margin-top: 40px; | |
| background: linear-gradient(135deg, var(--primary-dark) 0%, #143d2c 100%); | |
| border-radius: var(--radius-l); | |
| padding: 40px; | |
| color: #fff; | |
| display: flex; | |
| align-items: center; | |
| gap: 34px; | |
| flex-wrap: wrap; | |
| box-shadow: var(--shadow-lg); | |
| } | |
| .result-crop-img { | |
| width: 150px; | |
| height: 150px; | |
| border-radius: var(--radius); | |
| object-fit: cover; | |
| flex-shrink: 0; | |
| box-shadow: 0 14px 34px rgba(0, 0, 0, 0.28); | |
| } | |
| .result-crop-fallback { | |
| width: 150px; | |
| height: 150px; | |
| border-radius: var(--radius); | |
| background: rgba(255, 255, 255, 0.1); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 46px; | |
| color: var(--primary-light); | |
| flex-shrink: 0; | |
| } | |
| .result-body { | |
| flex: 1; | |
| min-width: 240px; | |
| } | |
| .result-hero .result-eyebrow { | |
| color: rgba(255, 255, 255, 0.6); | |
| font-size: 11px; | |
| text-transform: uppercase; | |
| letter-spacing: 0.05em; | |
| font-weight: 600; | |
| margin-bottom: 6px; | |
| } | |
| .result-hero .result-crop { | |
| font-size: clamp(30px, 4vw, 44px); | |
| font-weight: 700; | |
| color: #fff; | |
| line-height: 1.1; | |
| margin-bottom: 10px; | |
| } | |
| .result-hero p { | |
| color: rgba(255, 255, 255, 0.72); | |
| font-size: 14.5px; | |
| line-height: 1.6; | |
| margin-bottom: 20px; | |
| } | |
| .result-inputs { | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 8px; | |
| } | |
| .result-input-chip { | |
| background: rgba(255, 255, 255, 0.1); | |
| border: 1px solid rgba(255, 255, 255, 0.16); | |
| border-radius: 100px; | |
| padding: 6px 14px; | |
| font-size: 12px; | |
| color: rgba(255, 255, 255, 0.85); | |
| } | |
| .result-input-chip b { | |
| color: #fff; | |
| font-weight: 600; | |
| } | |
| @media (max-width: 560px) { | |
| .field-form { | |
| padding: 26px 20px; | |
| } | |
| .result-hero { | |
| padding: 28px 22px; | |
| justify-content: center; | |
| text-align: center; | |
| } | |
| .result-inputs { | |
| justify-content: center; | |
| } | |
| .form-actions { | |
| flex-direction: column; | |
| } | |
| } | |
| /* =========================== | |
| ANALYTICS DASHBOARD | |
| =========================== */ | |
| .dashboard-frame { | |
| background: var(--white); | |
| border-radius: var(--radius-l); | |
| box-shadow: var(--shadow-lg); | |
| overflow: hidden; | |
| margin-top: 20px; | |
| } | |
| .dashboard-chrome { | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| padding: 14px 18px; | |
| background: var(--primary-pale); | |
| border-bottom: 1px solid var(--border); | |
| } | |
| .dashboard-chrome .chrome-dot { | |
| width: 10px; | |
| height: 10px; | |
| border-radius: 50%; | |
| } | |
| .dashboard-chrome .chrome-dot.red { | |
| background: #f28b82; | |
| } | |
| .dashboard-chrome .chrome-dot.yellow { | |
| background: #fbbc04; | |
| } | |
| .dashboard-chrome .chrome-dot.green { | |
| background: #81c995; | |
| } | |
| .dashboard-chrome .chrome-label { | |
| margin-left: 10px; | |
| font-size: 12.5px; | |
| font-weight: 600; | |
| color: var(--primary-dark); | |
| } | |
| .dashboard-chrome .chrome-open { | |
| margin-left: auto; | |
| font-size: 12.5px; | |
| font-weight: 600; | |
| color: var(--primary-dark); | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 6px; | |
| } | |
| .dashboard-chrome .chrome-open:hover { | |
| color: var(--primary); | |
| } | |
| .dashboard-iframe-wrap { | |
| position: relative; | |
| width: 100%; | |
| padding-top: 62%; | |
| background: var(--background); | |
| } | |
| .dashboard-iframe-wrap iframe { | |
| position: absolute; | |
| inset: 0; | |
| width: 100%; | |
| height: 100%; | |
| border: 0; | |
| } | |
| @media (max-width: 768px) { | |
| .dashboard-iframe-wrap { | |
| padding-top: 130%; | |
| } | |
| } | |
| .dashboard-note { | |
| text-align: center; | |
| margin-top: 18px; | |
| font-size: 13px; | |
| color: var(--muted); | |
| } | |
| /* =========================== | |
| INFORMATION PAGE | |
| =========================== */ | |
| .info-tabs { | |
| display: flex; | |
| justify-content: center; | |
| gap: 8px; | |
| flex-wrap: wrap; | |
| margin-bottom: 40px; | |
| } | |
| .info-tabs .nav-link { | |
| border: 1.5px solid var(--border); | |
| color: var(--muted); | |
| font-weight: 600; | |
| font-size: 14px; | |
| padding: 10px 20px ; | |
| border-radius: 100px; | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| background: transparent; | |
| } | |
| .info-tabs .nav-link i { | |
| font-size: 13px; | |
| } | |
| .info-tabs .nav-link.active { | |
| background: var(--primary) ; | |
| border-color: var(--primary); | |
| color: #fff ; | |
| } | |
| .info-tab-count { | |
| text-align: center; | |
| color: var(--muted); | |
| font-size: 14px; | |
| margin-bottom: 30px; | |
| } | |
| .info-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); | |
| gap: 12px; | |
| } | |
| .info-item { | |
| display: flex; | |
| align-items: center; | |
| gap: 12px; | |
| background: var(--white); | |
| border: 1px solid var(--border); | |
| border-radius: var(--radius-s); | |
| padding: 12px 16px; | |
| transition: var(--transition); | |
| } | |
| .info-item:hover { | |
| border-color: var(--primary); | |
| box-shadow: var(--shadow); | |
| transform: translateY(-2px); | |
| } | |
| .info-item .info-icon { | |
| width: 34px; | |
| height: 34px; | |
| border-radius: 50%; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 13px; | |
| font-weight: 700; | |
| flex-shrink: 0; | |
| } | |
| .info-item .info-label { | |
| font-size: 14px; | |
| font-weight: 500; | |
| color: var(--ink); | |
| line-height: 1.3; | |
| } | |
| .info-item.status-plain .info-icon { | |
| background: var(--primary-pale); | |
| color: var(--primary-dark); | |
| } | |
| .info-item.status-healthy .info-icon { | |
| background: #e3f6e9; | |
| color: #1f8f47; | |
| } | |
| .info-item.status-rotten .info-icon { | |
| background: #fbe3e3; | |
| color: #c93d3d; | |
| } | |
| .info-item.status-disease .info-icon { | |
| background: #fdf3e3; | |
| color: #b8811f; | |
| } | |
| @media (max-width: 576px) { | |
| .info-grid { | |
| grid-template-columns: 1fr 1fr; | |
| } | |
| } | |
| /* =========================== | |
| ABOUT PAGE | |
| =========================== */ | |
| .about-hero { | |
| background: var(--white); | |
| border-radius: var(--radius-l); | |
| padding: 48px 40px; | |
| box-shadow: var(--shadow-lg); | |
| display: flex; | |
| align-items: center; | |
| gap: 32px; | |
| flex-wrap: wrap; | |
| } | |
| .about-avatar { | |
| width: 96px; | |
| height: 96px; | |
| border-radius: 50%; | |
| background: linear-gradient( | |
| 135deg, | |
| var(--primary) 0%, | |
| var(--primary-dark) 100% | |
| ); | |
| color: #fff; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 32px; | |
| font-weight: 700; | |
| flex-shrink: 0; | |
| box-shadow: 0 10px 26px rgba(82, 183, 136, 0.35); | |
| } | |
| .about-hero-text h2 { | |
| font-size: clamp(22px, 2.6vw, 28px); | |
| margin-bottom: 6px; | |
| } | |
| .about-hero-text .about-role { | |
| color: var(--primary); | |
| font-weight: 600; | |
| font-size: 14.5px; | |
| margin-bottom: 10px; | |
| } | |
| .about-hero-text p { | |
| color: var(--muted); | |
| font-size: 14.5px; | |
| line-height: 1.6; | |
| max-width: 520px; | |
| } | |
| .about-links { | |
| display: flex; | |
| gap: 12px; | |
| margin-top: 18px; | |
| flex-wrap: wrap; | |
| } | |
| .about-link-btn { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 8px; | |
| border: 1.5px solid var(--border); | |
| color: var(--ink); | |
| font-weight: 600; | |
| font-size: 13.5px; | |
| padding: 9px 18px; | |
| border-radius: 100px; | |
| transition: var(--transition); | |
| } | |
| .about-link-btn:hover { | |
| border-color: var(--primary); | |
| color: var(--primary-dark); | |
| transform: translateY(-2px); | |
| } | |
| .about-link-btn i { | |
| font-size: 13px; | |
| } | |
| .story-block { | |
| background: var(--white); | |
| border-radius: var(--radius); | |
| padding: 32px; | |
| box-shadow: var(--shadow); | |
| } | |
| .story-block h3 { | |
| font-size: 18px; | |
| margin-bottom: 14px; | |
| } | |
| .story-block p { | |
| color: var(--muted); | |
| font-size: 14.5px; | |
| line-height: 1.7; | |
| margin-bottom: 14px; | |
| } | |
| .story-block p:last-child { | |
| margin-bottom: 0; | |
| } | |
| .repo-card { | |
| display: flex; | |
| align-items: center; | |
| gap: 16px; | |
| background: var(--white); | |
| border: 1px solid var(--border); | |
| border-radius: var(--radius); | |
| padding: 22px; | |
| transition: var(--transition); | |
| height: 100%; | |
| } | |
| .repo-card:hover { | |
| border-color: var(--primary); | |
| box-shadow: var(--shadow); | |
| transform: translateY(-3px); | |
| } | |
| .repo-card .repo-icon { | |
| width: 44px; | |
| height: 44px; | |
| border-radius: 12px; | |
| background: var(--primary-pale); | |
| color: var(--primary-dark); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 18px; | |
| flex-shrink: 0; | |
| } | |
| .repo-card h5 { | |
| font-size: 15px; | |
| margin-bottom: 3px; | |
| } | |
| .repo-card p { | |
| color: var(--muted); | |
| font-size: 13px; | |
| margin: 0; | |
| } | |
| .roadmap-item { | |
| display: flex; | |
| align-items: flex-start; | |
| gap: 14px; | |
| padding: 14px 0; | |
| border-bottom: 1px solid var(--border); | |
| } | |
| .roadmap-item:last-child { | |
| border-bottom: none; | |
| } | |
| .roadmap-item .rm-check { | |
| width: 22px; | |
| height: 22px; | |
| border-radius: 50%; | |
| background: var(--primary-pale); | |
| color: var(--primary-dark); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 10px; | |
| flex-shrink: 0; | |
| margin-top: 2px; | |
| } | |
| .roadmap-item span { | |
| font-size: 14.5px; | |
| color: var(--ink); | |
| } | |
| /* =========================== | |
| CHATBOT WIDGET | |
| =========================== */ | |
| .chatbot-toggle { | |
| position: fixed; | |
| bottom: 24px; | |
| right: 24px; | |
| width: 58px; | |
| height: 58px; | |
| border-radius: 50%; | |
| background: linear-gradient( | |
| 135deg, | |
| var(--primary) 0%, | |
| var(--primary-dark) 100% | |
| ); | |
| color: #fff; | |
| border: none; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 22px; | |
| cursor: pointer; | |
| box-shadow: 0 10px 28px rgba(82, 183, 136, 0.4); | |
| z-index: 1040; | |
| transition: var(--transition); | |
| } | |
| .chatbot-toggle:hover { | |
| transform: translateY(-3px) scale(1.05); | |
| } | |
| .chatbot-toggle .icon-open { | |
| display: block; | |
| } | |
| .chatbot-toggle .icon-close { | |
| display: none; | |
| } | |
| .chatbot-panel.is-open ~ .chatbot-toggle .icon-open { | |
| display: none; | |
| } | |
| .chatbot-panel.is-open ~ .chatbot-toggle .icon-close { | |
| display: block; | |
| } | |
| .chatbot-panel { | |
| position: fixed; | |
| top: 90px; | |
| bottom: 96px; | |
| right: 24px; | |
| width: 380px; | |
| max-width: calc(100vw - 32px); | |
| background: var(--white); | |
| border-radius: var(--radius-l); | |
| box-shadow: var(--shadow-lg); | |
| display: flex; | |
| flex-direction: column; | |
| overflow: hidden; | |
| z-index: 1040; | |
| opacity: 0; | |
| transform: translateY(16px) scale(0.98); | |
| pointer-events: none; | |
| transition: | |
| opacity 0.25s ease, | |
| transform 0.25s cubic-bezier(0.16, 1, 0.3, 1); | |
| } | |
| .chatbot-panel.is-open { | |
| opacity: 1; | |
| transform: translateY(0) scale(1); | |
| pointer-events: auto; | |
| } | |
| .chatbot-header { | |
| background: linear-gradient(135deg, var(--primary-dark) 0%, #143d2c 100%); | |
| color: #fff; | |
| padding: 16px 18px; | |
| display: flex; | |
| align-items: center; | |
| gap: 12px; | |
| flex-shrink: 0; | |
| } | |
| .chatbot-avatar { | |
| width: 36px; | |
| height: 36px; | |
| border-radius: 50%; | |
| background: rgba(255, 255, 255, 0.15); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 15px; | |
| flex-shrink: 0; | |
| } | |
| .chatbot-header-text { | |
| flex: 1; | |
| min-width: 0; | |
| } | |
| .chatbot-header-text .cb-title { | |
| font-weight: 600; | |
| font-size: 14.5px; | |
| } | |
| .chatbot-header-text .cb-subtitle { | |
| font-size: 12px; | |
| color: rgba(255, 255, 255, 0.65); | |
| } | |
| .chatbot-header-actions { | |
| display: flex; | |
| align-items: center; | |
| gap: 4px; | |
| } | |
| .chatbot-header button { | |
| background: transparent; | |
| border: none; | |
| color: rgba(255, 255, 255, 0.7); | |
| width: 30px; | |
| height: 30px; | |
| border-radius: 8px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| cursor: pointer; | |
| transition: var(--transition); | |
| font-size: 13px; | |
| } | |
| .chatbot-header button:hover { | |
| color: #fff; | |
| background: rgba(255, 255, 255, 0.12); | |
| } | |
| .chatbot-messages { | |
| flex: 1; | |
| min-height: 0; | |
| overflow-y: auto; | |
| padding: 18px; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 10px; | |
| background: var(--background); | |
| } | |
| .chatbot-msg { | |
| max-width: 82%; | |
| padding: 10px 14px; | |
| border-radius: 14px; | |
| font-size: 13.5px; | |
| line-height: 1.5; | |
| white-space: pre-wrap; | |
| word-break: break-word; | |
| } | |
| .chatbot-msg.from-user { | |
| align-self: flex-end; | |
| background: var(--primary); | |
| color: #fff; | |
| border-bottom-right-radius: 4px; | |
| } | |
| .chatbot-msg.from-bot { | |
| align-self: flex-start; | |
| background: #fff; | |
| color: var(--ink); | |
| border: 1px solid var(--border); | |
| border-bottom-left-radius: 4px; | |
| } | |
| .chatbot-msg.is-error { | |
| border-color: #f3d99b; | |
| background: #fdf3e3; | |
| color: #8a5a12; | |
| } | |
| .chatbot-typing { | |
| display: flex; | |
| gap: 4px; | |
| padding: 14px; | |
| align-items: center; | |
| } | |
| .chatbot-typing span { | |
| width: 6px; | |
| height: 6px; | |
| border-radius: 50%; | |
| background: var(--muted); | |
| animation: chatbot-bounce 1.2s infinite ease-in-out; | |
| } | |
| .chatbot-typing span:nth-child(2) { | |
| animation-delay: 0.15s; | |
| } | |
| .chatbot-typing span:nth-child(3) { | |
| animation-delay: 0.3s; | |
| } | |
| @keyframes chatbot-bounce { | |
| 0%, | |
| 60%, | |
| 100% { | |
| transform: translateY(0); | |
| opacity: 0.5; | |
| } | |
| 30% { | |
| transform: translateY(-4px); | |
| opacity: 1; | |
| } | |
| } | |
| .chatbot-quick-prompts { | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 6px; | |
| padding: 0 18px 14px; | |
| background: var(--background); | |
| flex-shrink: 0; | |
| } | |
| .chatbot-chip { | |
| background: var(--white); | |
| border: 1px solid var(--border); | |
| color: var(--primary-dark); | |
| font-size: 12px; | |
| font-weight: 500; | |
| padding: 7px 12px; | |
| border-radius: 100px; | |
| cursor: pointer; | |
| transition: var(--transition); | |
| } | |
| .chatbot-chip:hover { | |
| border-color: var(--primary); | |
| background: var(--primary-pale); | |
| } | |
| .chatbot-input-row { | |
| display: flex; | |
| gap: 8px; | |
| padding: 14px; | |
| border-top: 1px solid var(--border); | |
| background: var(--white); | |
| flex-shrink: 0; | |
| } | |
| .chatbot-input-row input { | |
| flex: 1; | |
| border: 1.5px solid var(--border); | |
| border-radius: 100px; | |
| padding: 10px 16px; | |
| font-family: var(--font); | |
| font-size: 13.5px; | |
| outline: none; | |
| transition: var(--transition); | |
| } | |
| .chatbot-input-row input:focus { | |
| border-color: var(--primary); | |
| box-shadow: 0 0 0 3px rgba(82, 183, 136, 0.12); | |
| } | |
| .chatbot-input-row input:disabled { | |
| background: var(--background); | |
| opacity: 0.7; | |
| } | |
| .chatbot-input-row button { | |
| width: 40px; | |
| height: 40px; | |
| border-radius: 50%; | |
| background: var(--primary); | |
| color: #fff; | |
| border: none; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| cursor: pointer; | |
| flex-shrink: 0; | |
| transition: var(--transition); | |
| } | |
| .chatbot-input-row button:hover:not(:disabled) { | |
| background: var(--primary-dark); | |
| } | |
| .chatbot-input-row button:disabled { | |
| opacity: 0.5; | |
| cursor: not-allowed; | |
| } | |
| @media (max-width: 480px) { | |
| .chatbot-panel { | |
| right: 16px; | |
| width: calc(100vw - 32px); | |
| top: 80px; | |
| bottom: 88px; | |
| } | |
| .chatbot-toggle { | |
| right: 16px; | |
| bottom: 16px; | |
| } | |
| } | |
| /* =========================== | |
| RESPONSIVE | |
| =========================== */ | |
| @media (max-width: 992px) { | |
| .nav-link { | |
| margin-left: 0; | |
| } | |
| .navbar-nav { | |
| padding-top: 14px; | |
| } | |
| } | |
| @media (max-width: 768px) { | |
| .section-block { | |
| padding: 64px 0; | |
| } | |
| } | |
| /* =========================== | |
| RESULT — shared extras | |
| =========================== */ | |
| .result-sub { | |
| color: rgba(255, 255, 255, 0.72); | |
| font-size: 14.5px; | |
| line-height: 1.6; | |
| margin-bottom: 18px; | |
| max-width: 460px; | |
| } | |
| .confidence-bar { | |
| margin-top: 18px; | |
| height: 5px; | |
| background: rgba(255, 255, 255, 0.14); | |
| border-radius: 100px; | |
| overflow: hidden; | |
| max-width: 320px; | |
| } | |
| .confidence-fill { | |
| height: 100%; | |
| background: var(--primary-light); | |
| border-radius: 100px; | |
| animation: fill-grow 0.9s cubic-bezier(0.16, 1, 0.3, 1); | |
| } | |
| @keyframes fill-grow { | |
| from { | |
| width: 0 ; | |
| } | |
| } | |
| .stat-tiles { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); | |
| gap: 14px; | |
| margin-bottom: 32px; | |
| } | |
| .stat-tile { | |
| background: var(--primary-pale); | |
| border-radius: var(--radius-s); | |
| padding: 22px 16px; | |
| text-align: center; | |
| transition: var(--transition); | |
| } | |
| .stat-tile:hover { | |
| transform: translateY(-3px); | |
| box-shadow: var(--shadow); | |
| } | |
| .stat-tile .st-icon { | |
| width: 38px; | |
| height: 38px; | |
| border-radius: 11px; | |
| background: #fff; | |
| color: var(--primary-dark); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 15px; | |
| margin: 0 auto 12px; | |
| } | |
| .stat-tile .st-value { | |
| font-size: 24px; | |
| font-weight: 700; | |
| color: var(--primary-dark); | |
| line-height: 1; | |
| } | |
| .stat-tile .st-label { | |
| font-size: 12px; | |
| color: var(--muted); | |
| margin-top: 6px; | |
| } | |
| /* =========================== | |
| UPLOAD ZONE — preview state | |
| =========================== */ | |
| .upload-zone { | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| } | |
| .upload-zone .upload-icon { order: 1; } | |
| .upload-zone h4 { order: 2; } | |
| .upload-zone p.upload-sub { order: 3; } | |
| .upload-zone .upload-browse-btn { order: 4; margin-top: 4px; } | |
| .upload-zone .preview-frame { order: 5; width: 100%; } | |
| .upload-zone .upload-tips { order: 6; width: 100%; } | |
| .upload-zone.has-preview .upload-icon, | |
| .upload-zone.has-preview h4, | |
| .upload-zone.has-preview p.upload-sub { | |
| display: none; | |
| } | |
| .preview-frame { | |
| display: none; | |
| margin-top: 6px; | |
| text-align: center; | |
| } | |
| .upload-zone.has-preview .preview-frame { | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| gap: 12px; | |
| animation: preview-in 0.35s cubic-bezier(0.16, 1, 0.3, 1); | |
| } | |
| @keyframes preview-in { | |
| from { opacity: 0; transform: scale(0.94) translateY(6px); } | |
| to { opacity: 1; transform: scale(1) translateY(0); } | |
| } | |
| .preview-thumb { | |
| position: relative; | |
| width: 190px; | |
| height: 190px; | |
| border-radius: 22px; | |
| overflow: hidden; | |
| box-shadow: 0 16px 36px rgba(0, 0, 0, 0.35); | |
| border: 3px solid rgba(255, 255, 255, 0.16); | |
| } | |
| .preview-thumb img { | |
| width: 100%; | |
| height: 100%; | |
| object-fit: cover; | |
| display: block; | |
| } | |
| .preview-badge { | |
| position: absolute; | |
| top: -8px; | |
| right: -8px; | |
| width: 32px; | |
| height: 32px; | |
| border-radius: 50%; | |
| background: var(--primary); | |
| color: #fff; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 13px; | |
| box-shadow: 0 4px 12px rgba(0, 0, 0, 0.35); | |
| border: 3px solid var(--primary-dark); | |
| } | |
| .preview-meta { | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| } | |
| .preview-filename { | |
| font-size: 12.5px; | |
| color: rgba(255, 255, 255, 0.6); | |
| max-width: 200px; | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| } | |
| .preview-remove { | |
| font-size: 12.5px; | |
| color: rgba(255, 255, 255, 0.75); | |
| text-decoration: underline; | |
| text-underline-offset: 2px; | |
| cursor: pointer; | |
| background: none; | |
| border: none; | |
| padding: 0; | |
| flex-shrink: 0; | |
| } | |
| .preview-remove:hover { color: #fff; } | |
| .upload-zone.has-preview { padding-top: 44px; } | |