/* ===================================================== GLOBAL RESET ===================================================== */ *{ margin:0; padding:0; box-sizing:border-box; font-family:'Poppins', sans-serif; } html { font-size: 150%; } /* ===================================================== NAVBAR (shared by all pages) ===================================================== */ .navbar{ display:flex; justify-content:space-between; align-items:center; padding: 10px 0; /* slightly taller than before */ } .logo{ display:flex; align-items:center; } .logo-img{ height:48px; width:auto; display:block; } .logo-name{ font-size:35px; font-weight:700; color:#003d12; letter-spacing:-0.3px; margin-left:10px; white-space:nowrap; } .logo-ai{ color:#2f9b4b; font-weight:700; } /* Reset button */ .btn-reset{ margin-top:8px; width:100%; padding:10px; background:transparent; color:#888; border:1.5px solid #d0d0d0; border-radius:20px; font-family:'Poppins',sans-serif; font-size:11px; font-weight:500; letter-spacing:0.5px; text-transform:uppercase; cursor:pointer; transition:0.25s; flex-shrink:0; display:none; } .btn-reset.visible{ display:block; } .btn-reset:hover{ border-color:#2f9b4b; color:#2f9b4b; background:#f4fbf4; } .menu{ display:flex; align-items:center; gap:55px; } .menu a{ text-decoration:none; color:#2f9b4b; font-size:11px; font-weight:500; text-transform:uppercase; transition:0.3s; } .menu a:hover{ opacity:0.7; } .menu a.active{ color:#003d12; font-weight:700; border-bottom:2px solid #003d12; padding-bottom:2px; } .signup-btn{ background:#003d12; color:#fff; padding:10px 22px; border-radius:20px; font-size:11px; text-decoration:none; font-weight:600; transition:0.3s; } .signup-btn:hover{ transform:translateY(-2px); box-shadow:0 8px 15px rgba(0,0,0,0.12); } /* ===================================================== INDEX — HERO ===================================================== */ body.page-index{ background:#f7f7f7; overflow:hidden; } body.page-index .container{ width:100%; height:80vh; position:relative; padding:28px 70px 0; /* reduced top padding so image fits */ } .hero{ display:flex; justify-content:space-between; align-items:flex-end; /* image sits at bottom — feet fully visible */ margin-top:40px; position:relative; height: calc(100vh - 110px); /* fills remaining viewport */ } .content{ width:35%; z-index:2; padding-bottom: 60px; /* align text with mid-image */ } .content h1{ font-size:62px; line-height:1.05; color:#004d12; margin-bottom:30px; font-weight:700; } .content p{ width:260px; font-size:12px; line-height:1.75; color:#6d6d6d; margin-bottom:30px; } .read-btn{ display:inline-block; background:#003d12; color:#fff; text-decoration:none; padding:12px 28px; border-radius:25px; font-size:11px; font-weight:600; transition:0.3s; } .read-btn:hover{ transform:translateY(-3px); box-shadow:0 8px 15px rgba(0,0,0,0.15); } .image-section{ width:65%; display:flex; justify-content:center; align-items:flex-end; /* image anchored to bottom — feet visible */ } .hero-image{ position:relative; width:620px; /* slightly smaller so feet aren't cropped */ z-index:2; animation:float 4s ease-in-out infinite; } .hero-image img{ width:100%; object-fit:contain; display:block; user-select:none; pointer-events:none; } @keyframes float{ 0% { transform:translateY(0px); } 50% { transform:translateY(-10px); } 100%{ transform:translateY(0px); } } /* ===================================================== PREDICTION PAGE — two-column, zero-scroll layout ===================================================== */ body.page-prediction{ background:#f7f7f7; height:100vh; overflow:hidden; } body.page-prediction .container{ width:100%; height:100vh; padding:24px 60px 0; display:flex; flex-direction:column; } /* Two-panel row — fills remaining height, no scroll */ .page-body{ flex:1; display:flex; align-items:stretch; justify-content:center; gap:22px; padding:14px 0 24px; overflow:hidden; } /* ── LEFT card (input) — flex column, no overflow ── */ .pred-card{ background:#fff; border-radius:24px; box-shadow:0 20px 60px rgba(0,61,18,.12); padding:26px 30px 20px; width:480px; flex-shrink:0; display:flex; flex-direction:column; overflow:hidden; /* never shows scrollbar */ text-align:center; } .pred-card h2{ font-size:21px; font-weight:700; color:#004d12; margin-bottom:4px; flex-shrink:0; } .pred-card .subtitle{ font-size:10.5px; color:#8a8a8a; line-height:1.6; margin-bottom:14px; flex-shrink:0; } /* ── RIGHT card (results) — hidden until predict ── */ .result-card{ background:#fff; border-radius:24px; box-shadow:0 20px 60px rgba(0,61,18,.12); padding:26px 30px 20px; width:390px; flex-shrink:0; display:none; flex-direction:column; overflow:hidden; animation:slideIn .35s ease; } .result-card.visible{ display:flex; } @keyframes slideIn{ from{ opacity:0; transform:translateX(20px); } to { opacity:1; transform:translateX(0); } } .result-card h3{ font-size:15px; font-weight:700; color:#004d12; margin-bottom:12px; flex-shrink:0; text-align:center; } /* Tabs */ .tabs{ display:flex; gap:7px; justify-content:center; margin-bottom:14px; flex-wrap:wrap; flex-shrink:0; } .tab{ display:inline-flex; align-items:center; gap:6px; padding:7px 13px; border-radius:20px; border:1.5px solid #ccc; background:#fff; font-family:'Poppins', sans-serif; font-size:10px; font-weight:600; color:#666; cursor:pointer; text-transform:uppercase; transition:0.25s; letter-spacing:0.3px; } .tab:hover{ border-color:#2f9b4b; color:#2f9b4b; } .tab.active{ background:#003d12; color:#fff; border-color:#003d12; } /* Panels — fill remaining space in left card */ .panel{ display:none; flex:1; flex-direction:column; min-height:0; } .panel.active{ display:flex; } /* Upload zone — grows to fill the panel */ .upload-zone{ position:relative; border:2px dashed #b5ddb5; border-radius:14px; cursor:pointer; background:#f8fdf8; transition:0.2s; flex:1; /* fills available space */ display:flex; flex-direction:column; align-items:center; justify-content:center; gap:6px; min-height:0; } .upload-zone:hover{ background:#edf7ed; border-color:#2f9b4b; } .upload-zone input[type="file"]{ position:absolute; inset:0; opacity:0; cursor:pointer; width:100%; height:100%; } .upload-icon{ width:42px; height:42px; flex-shrink:0; } .upload-zone p{ font-size:12px; font-weight:600; color:#555; margin:0; } .upload-zone span{ font-size:10.5px; color:#aaa; } /* Tiny file name badge (replaces image preview on left) */ .file-indicator{ margin-top:8px; padding:6px 12px; background:#f0faf0; border-radius:8px; font-size:10.5px; color:#2f9b4b; font-weight:600; border:1px solid #b5ddb5; flex-shrink:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; } /* URL panel */ .panel#panel-url{ gap:10px; justify-content:center; } .url-row{ display:flex; gap:8px; flex-shrink:0; } .url-row input{ flex:1; border:1.5px solid #ddd; border-radius:10px; padding:10px 13px; font-family:'Poppins',sans-serif; font-size:12px; outline:none; color:#333; transition:border-color 0.2s; } .url-row input:focus{ border-color:#2f9b4b; } .url-row button{ padding:10px 18px; border-radius:10px; background:#003d12; color:#fff; border:none; font-family:'Poppins',sans-serif; font-size:12px; font-weight:600; cursor:pointer; transition:0.2s; } .url-row button:hover{ background:#0c5d18; } /* Webcam panel */ .panel#panel-webcam{ justify-content:center; } .webcam-area{ display:flex; flex-direction:column; align-items:center; gap:10px; width:100%; } .wc-placeholder{ width:100%; flex:1; min-height:120px; max-height:200px; border-radius:14px; background:#e8f5e9; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:8px; } .wc-placeholder p{ font-size:11px; color:#999; font-weight:500; } .wc-video-wrap{ position:relative; width:100%; display:none; } #webcamVideo{ width:100%; border-radius:14px; background:#000; display:block; } .wc-live-badge{ position:absolute; bottom:9px; left:9px; right:9px; background:rgba(0,61,18,0.82); backdrop-filter:blur(6px); border-radius:9px; padding:8px 12px; display:none; align-items:center; justify-content:space-between; gap:10px; } .wc-live-badge.visible{ display:flex; } .wc-badge-label{ font-size:14px; font-weight:700; color:#fff; text-transform:capitalize; } .wc-badge-conf { font-size:10px; font-weight:500; color:#a8e6b8; white-space:nowrap; } .wc-live-dot{ position:absolute; top:8px; right:9px; display:none; align-items:center; gap:5px; background:rgba(0,0,0,0.45); border-radius:20px; padding:3px 8px; } .wc-live-dot.visible{ display:flex; } .wc-live-dot span{ font-size:9px; font-weight:700; color:#fff; letter-spacing:1px; } .wc-dot-circle{ width:7px; height:7px; border-radius:50%; background:#ff4444; animation:livePulse 1s ease-in-out infinite; } @keyframes livePulse{ 0%,100%{opacity:1;transform:scale(1);} 50%{opacity:.4;transform:scale(0.7);} } .wc-btns{ display:flex; gap:8px; flex-wrap:wrap; justify-content:center; flex-shrink:0; } .wc-btn{ padding:7px 15px; border-radius:20px; font-family:'Poppins',sans-serif; font-size:10.5px; font-weight:600; cursor:pointer; transition:0.2s; text-transform:uppercase; letter-spacing:0.3px; } .wc-btn.solid { background:#003d12; color:#fff; border:1.5px solid #003d12; } .wc-btn.outline{ background:#fff; color:#003d12; border:1.5px solid #003d12; } .wc-btn:hover { opacity:0.8; transform:translateY(-1px); } .wc-btn:disabled{ opacity:0.35; cursor:not-allowed; transform:none; } /* Analyze button */ .btn-analyze{ margin-top:10px; width:100%; padding:11px; background:#003d12; color:#fff; border:none; border-radius:20px; font-family:'Poppins',sans-serif; font-size:11.5px; font-weight:600; letter-spacing:0.5px; text-transform:uppercase; cursor:pointer; transition:0.3s; flex-shrink:0; } .btn-analyze:hover{ background:#0c5d18; transform:translateY(-2px); box-shadow:0 8px 15px rgba(0,0,0,0.12); } .btn-analyze:disabled{ opacity:0.45; cursor:not-allowed; transform:none; box-shadow:none; } /* ── Result content (right card) — image fills top, box below ── */ #resultContent{ flex:1; display:flex; flex-direction:column; gap:10px; min-height:0; overflow:hidden; } .result-img-wrap{ flex:1; border-radius:12px; overflow:hidden; min-height:0; background:#f0f5f0; display:flex; align-items:center; justify-content:center; } .result-img-wrap img{ width:100%; height:100%; object-fit:cover; display:block; } .result-box{ background:#eaf7ea; border-radius:12px; padding:12px 14px; text-align:left; flex-shrink:0; } .result-box h4{ font-size:9px; font-weight:700; color:#004d12; letter-spacing:1.2px; text-transform:uppercase; margin-bottom:5px; } .result-label{ font-size:22px; font-weight:700; color:#0c5d18; margin-bottom:2px; text-transform:capitalize; } .result-conf { font-size:11px; color:#888; font-weight:500; margin-bottom:9px; } .pills{ display:flex; flex-wrap:wrap; gap:5px; } .pill{ background:#fff; border:1.5px solid #b5ddb5; border-radius:20px; padding:2px 10px; font-size:9.5px; font-weight:600; color:#2f9b4b; text-transform:capitalize; } .pill.on{ background:#003d12; color:#fff; border-color:#003d12; } /* Spinner */ .spinner{ display:inline-block; width:13px; height:13px; border:2px solid rgba(255,255,255,.35); border-top-color:#fff; border-radius:50%; animation:spin .6s linear infinite; vertical-align:middle; margin-right:6px; } @keyframes spin{ to{ transform:rotate(360deg); } } /* Classes note */ .classes-note{ margin-top:8px; font-size:9.5px; color:#ccc; line-height:1.8; flex-shrink:0; text-align:center; } .classes-note strong{ color:#2f9b4b; font-weight:600; } /* ===================================================== CONTACT & SIGNUP PAGES ===================================================== */ body.page-contact, body.page-signup{ background:#f7f7f7; min-height:100vh; } body.page-contact .container, body.page-signup .container{ width:100%; min-height:100vh; padding:28px 70px; } .page-form-body{ display:flex; align-items:center; justify-content:center; padding:50px 0 40px; } .card{ background:#fff; border-radius:24px; box-shadow:0 20px 60px rgba(0,61,18,.12); padding:46px 42px 38px; width:100%; max-width:520px; text-align:center; } .card h2{ font-size:26px; font-weight:700; color:#004d12; margin-bottom:10px; } .card p { font-size:12px; color:#8a8a8a; line-height:1.7; margin-bottom:26px; } .card input, .card textarea{ width:100%; border:1.5px solid #ddd; border-radius:10px; padding:12px 14px; font-family:'Poppins', sans-serif; font-size:12px; margin-bottom:12px; outline:none; color:#333; transition:border-color .2s; } .card input:focus, .card textarea:focus{ border-color:#2f9b4b; } .card textarea{ resize:vertical; min-height:110px; } .btn-submit{ display:inline-block; background:#003d12; color:#fff; font-family:'Poppins', sans-serif; font-size:11px; font-weight:600; letter-spacing:0.5px; text-transform:uppercase; padding:12px 36px; border-radius:25px; border:none; cursor:pointer; transition:0.3s; } .btn-submit:hover{ transform:translateY(-3px); box-shadow:0 8px 15px rgba(0,0,0,0.15); } /* ===================================================== RESPONSIVE ===================================================== */ @media(max-width:1100px){ .hero{ flex-direction:column; gap:30px; align-items:center; height:auto; } .content{ width:100%; text-align:center; padding-bottom:0; } .content p{ margin:auto; margin-bottom:30px; } .image-section{ width:100%; } .hero-image{ width:100%; } body.page-index{ overflow:auto; } .page-body{ flex-direction:column; overflow-y:auto; } .pred-card, .result-card{ width:100%; max-width:520px; } body.page-prediction{ height:auto; overflow:auto; } body.page-prediction .container{ height:auto; } } @media(max-width:768px){ body.page-index .container, body.page-contact .container, body.page-signup .container, body.page-prediction .container{ padding:24px 28px; } .menu{ gap:18px; } .content h1{ font-size:44px; } } @media(max-width:560px){ .menu a:not(.signup-btn){ display:none; } }