|
28 | 28 | height: 0 !important; |
29 | 29 | } |
30 | 30 |
|
31 | | -html, body { |
32 | | - width: 100vw !important; |
33 | | - height: 100vh !important; |
34 | | - max-width: 100vw !important; |
35 | | - max-height: 100vh !important; |
36 | | - margin: 0 !important; |
37 | | - padding: 0 !important; |
38 | | - overflow: hidden !important; |
39 | | - background: #F8FAF8 !important; |
40 | | - font-family: 'Plus Jakarta Sans', 'Noto Sans Telugu', 'Noto Sans Devanagari', sans-serif !important; |
41 | | - color: #0F172A !important; |
42 | | - -webkit-font-smoothing: antialiased !important; |
43 | | - -webkit-tap-highlight-color: transparent !important; |
| 31 | +body { |
| 32 | + background: transparent; |
| 33 | + font-family: 'Plus Jakarta Sans', 'Noto Sans Telugu', 'Noto Sans Devanagari', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; |
| 34 | + padding: 12px; |
| 35 | + color: #0F172A; |
| 36 | + -webkit-font-smoothing: antialiased; |
44 | 37 | } |
45 | 38 |
|
46 | 39 | /* ═════════════════ SMARTPHONE EMULATOR CHASSIS ═════════════════ */ |
47 | 40 | .phone-chassis { |
48 | | - width: 100vw !important; |
49 | | - height: 100vh !important; |
50 | | - max-width: 100vw !important; |
51 | | - max-height: 100vh !important; |
52 | | - background: #F8FAF8 !important; |
53 | | - border-radius: 0px !important; |
54 | | - box-shadow: none !important; |
55 | | - border: none !important; |
56 | | - display: flex !important; |
57 | | - flex-direction: column !important; |
58 | | - overflow: hidden !important; |
59 | | - position: fixed !important; |
60 | | - inset: 0 !important; |
61 | | - margin: 0 !important; |
62 | | - padding: 0 !important; |
| 41 | + width: 390px; |
| 42 | + height: 844px; |
| 43 | + background: #F8FAF8; |
| 44 | + border-radius: 48px; |
| 45 | + box-shadow: |
| 46 | + 0 0 0 10px #0F172A, |
| 47 | + 0 0 0 12px #334155, |
| 48 | + 0 40px 90px -15px rgba(0,0,0,0.65), |
| 49 | + 0 20px 40px -10px rgba(15,23,42,0.35); |
| 50 | + display: flex; |
| 51 | + flex-direction: column; |
| 52 | + overflow: hidden; |
| 53 | + position: relative; |
| 54 | + flex-shrink: 0; |
63 | 55 | } |
64 | 56 |
|
65 | 57 | .system-status-bar { display: none !important; width: 0 !important; height: 0 !important; visibility: hidden !important; pointer-events: none !important; } |
|
517 | 509 | } |
518 | 510 | </style> |
519 | 511 |
|
520 | | -<style id="apk-pure-mobile-overrides"> |
521 | | - .system-status-bar { |
| 512 | +<style id="apk-pure-mobile-layer"> |
| 513 | + /* 1. Hide desktop side panel completely on mobile devices */ |
| 514 | + .side-panel-container { |
522 | 515 | display: none !important; |
523 | 516 | width: 0 !important; |
524 | 517 | height: 0 !important; |
525 | 518 | overflow: hidden !important; |
526 | 519 | visibility: hidden !important; |
527 | 520 | pointer-events: none !important; |
528 | 521 | } |
529 | | - .side-panel-container, .panel-card-box, #side-nav-group { |
| 522 | + |
| 523 | + /* 2. Hide fake simulated HTML status bar (Android displays its own native status bar) */ |
| 524 | + .system-status-bar { |
530 | 525 | display: none !important; |
531 | | - visibility: hidden !important; |
532 | 526 | width: 0 !important; |
533 | 527 | height: 0 !important; |
| 528 | + overflow: hidden !important; |
| 529 | + visibility: hidden !important; |
534 | 530 | pointer-events: none !important; |
535 | 531 | } |
| 532 | + |
| 533 | + /* 3. Phone Chassis fills entire mobile viewport */ |
536 | 534 | .phone-chassis { |
537 | | - width: 100% !important; |
538 | | - height: 100% !important; |
539 | | - max-width: 100% !important; |
540 | | - max-height: 100% !important; |
| 535 | + width: 100vw !important; |
| 536 | + height: 100vh !important; |
| 537 | + max-width: 100vw !important; |
| 538 | + max-height: 100vh !important; |
541 | 539 | border-radius: 0 !important; |
542 | 540 | box-shadow: none !important; |
| 541 | + border: none !important; |
543 | 542 | position: fixed !important; |
544 | 543 | inset: 0 !important; |
545 | | - padding-top: max(env(safe-area-inset-top, 0px), 6px) !important; |
| 544 | + margin: 0 !important; |
| 545 | + padding: 0 !important; |
| 546 | + overflow: hidden !important; |
| 547 | + background: #F8FAF8 !important; |
| 548 | + padding-top: max(env(safe-area-inset-top, 0px), 4px) !important; |
| 549 | + } |
| 550 | + |
| 551 | + /* 4. Root HTML & Body styling */ |
| 552 | + html, body { |
| 553 | + margin: 0 !important; |
| 554 | + padding: 0 !important; |
| 555 | + width: 100vw !important; |
| 556 | + height: 100vh !important; |
| 557 | + overflow: hidden !important; |
| 558 | + background: #F8FAF8 !important; |
| 559 | + font-family: 'Plus Jakarta Sans', 'Noto Sans Telugu', 'Noto Sans Devanagari', sans-serif !important; |
| 560 | + -webkit-font-smoothing: antialiased !important; |
| 561 | + -webkit-tap-highlight-color: transparent !important; |
546 | 562 | } |
| 563 | + |
| 564 | + /* 5. Overlay full bleed */ |
547 | 565 | #startup-experience-overlay { |
548 | 566 | border-radius: 0 !important; |
549 | 567 | } |
|
552 | 570 | </head> |
553 | 571 | <body> |
554 | 572 |
|
555 | | -<!-- ═════════════════ ANDROID PHONE CHASSIS ═════════════════ --> |
| 573 | +<div style="display:flex;gap:20px;align-items:flex-start;flex-wrap:wrap;"> |
| 574 | + |
| 575 | + <!-- ═════════════════ ANDROID PHONE CHASSIS ═════════════════ --> |
556 | 576 | <div class="phone-chassis"> |
557 | 577 | <!-- STATIC STARTUP EXPERIENCE OVERLAY (MATCHING SCREENSHOTS) --> |
558 | 578 | <div id="startup-experience-overlay" style="position:absolute;inset:0;background:#FFFFFF;border-radius:48px;overflow:hidden;z-index:99999;display:flex;flex-direction:column;"> |
559 | 579 | <!-- Populated immediately by renderPlantixFlow() --> |
560 | 580 | </div> |
561 | 581 | <!-- Status Bar --> |
562 | | - |
| 582 | + <div class="system-status-bar"> |
| 583 | + <span>11:31</span> |
| 584 | + <div style="display:flex;gap:5px;align-items:center;"> |
| 585 | + <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="#0F172A" stroke-width="2"><path d="M1.5 8.5C5 5 9.5 3 12 3s7 2 10.5 5.5"/><path d="M5 12c2-2 4.5-3 7-3s5 1 7 3"/><path d="M8.5 15.5c.9-.9 2.1-1.5 3.5-1.5s2.6.6 3.5 1.5"/><circle cx="12" cy="19" r="1" fill="#0F172A"/></svg> |
| 586 | + <span style="font-size:10px;font-weight:800;">5G+</span> |
| 587 | + <svg width="18" height="11" viewBox="0 0 24 14" fill="none"><rect x="0" y="1" width="20" height="12" rx="2" stroke="#0F172A" stroke-width="1.5"/><rect x="2" y="3" width="12" height="8" rx="1" fill="#1B5E20"/><rect x="20" y="5" width="3" height="5" rx="1" fill="#0F172A" opacity="0.5"/></svg> |
| 588 | + <span style="font-size:10px;font-weight:800;">83%</span> |
| 589 | + </div> |
| 590 | + </div> |
563 | 591 |
|
564 | 592 | <!-- Global Floating In-App Push Notification Banner --> |
565 | 593 | <div id="global-push-toast" style="display:none;position:absolute;top:40px;left:12px;right:12px;background:#0F172A;color:#FFFFFF;border-radius:16px;padding:12px 14px;box-shadow:0 12px 28px rgba(0,0,0,0.35);z-index:9999;border:1.2px solid rgba(255,255,255,0.18);animation:toastDropIn 0.35s cubic-bezier(0.16,1,0.3,1);" onclick="handlePushToastClick()"> |
|
1066 | 1094 | </div> |
1067 | 1095 |
|
1068 | 1096 | <!-- ═════════════════ SIDEBAR CONTROLLER ═════════════════ --> |
1069 | | - |
| 1097 | + <div class="side-panel-container"> |
| 1098 | + <div class="panel-card-box"> |
| 1099 | + <div class="panel-card-title"> |
| 1100 | + <span>Production Verification</span> |
| 1101 | + <span style="background:#DCFCE7;color:#15803D;padding:2px 7px;border-radius:6px;font-size:9px;font-weight:800;">INTERACTIVE SPRAY MODAL</span> |
| 1102 | + </div> |
| 1103 | + <div style="font-size:11px;display:flex;flex-direction:column;gap:6px;"> |
| 1104 | + <div style="display:flex;justify-content:space-between;"><span style="color:var(--muted-foreground,#6B7280);">Language</span><span style="font-weight:800;color:#15803D;" id="side-cur-lang">తెలుగు (Telugu)</span></div> |
| 1105 | + <div style="display:flex;justify-content:space-between;"><span style="color:var(--muted-foreground,#6B7280);">Location</span><span style="font-weight:800;" id="side-loc-name">వరంగల్, తెలంగాణ</span></div> |
| 1106 | + <div style="display:flex;justify-content:space-between;"><span style="color:var(--muted-foreground,#6B7280);">Spraying Pill</span><span style="font-weight:800;color:#15803D;">Knapsack Man Icon</span></div> |
| 1107 | + <div style="display:flex;justify-content:space-between;"><span style="color:var(--muted-foreground,#6B7280);">Full Details</span><span style="font-weight:800;color:#EA580C;">Tap to Expand Modal</span></div> |
| 1108 | + </div> |
| 1109 | + </div> |
| 1110 | + |
| 1111 | + <div class="panel-card-box"> |
| 1112 | + <div class="panel-card-title"> |
| 1113 | + <span>Feature Navigator</span> |
| 1114 | + </div> |
| 1115 | + <div style="display:grid;grid-template-columns:1fr;gap:6px;" id="side-nav-group"> |
| 1116 | + <button class="panel-nav-btn active" id="btn-home" onclick="openScreen('home',null);syncSideNav('btn-home')">🏠 Home Dashboard</button> |
| 1117 | + <button class="panel-nav-btn" id="btn-scanner" onclick="openScreen('scanner',null);syncSideNav('btn-scanner')">🔬 AI Crop & Soil Scanner</button> |
| 1118 | + <button class="panel-nav-btn" id="btn-market" onclick="openScreen('market',null);syncSideNav('btn-market')">📊 Live Mandi Rates</button> |
| 1119 | + <button class="panel-nav-btn" id="btn-gramhaul" onclick="openScreen('gramhaul',null);syncSideNav('btn-gramhaul')">🚚 Mandi Truck Sharing</button> |
| 1120 | + <button class="panel-nav-btn" id="btn-agristack" onclick="openScreen('agristack',null);syncSideNav('btn-agristack')">🪪 Farmer ID & Credit</button> |
| 1121 | + <button class="panel-nav-btn" id="btn-equipment" onclick="openScreen('equipment',null);syncSideNav('btn-equipment')">🚜 Rent Machinery</button> |
| 1122 | + <button class="panel-nav-btn" id="btn-loan" onclick="openScreen('loan',null);syncSideNav('btn-loan')">💰 Loans & Subsidies</button> |
| 1123 | + <button class="panel-nav-btn" id="btn-chat" onclick="openScreen('chat',null);syncSideNav('btn-chat')">🤖 24/7 AI Farm Advisor</button> |
| 1124 | + <button class="panel-nav-btn" id="btn-khata" onclick="openScreen('khata',null);syncSideNav('btn-khata')">🧾 Farm Khata Ledger</button> |
| 1125 | + <button class="panel-nav-btn" id="btn-bioshield" onclick="openScreen('bioshield',null);syncSideNav('btn-bioshield')">🚨 Pest & Disease Alerts</button> |
| 1126 | + <button class="panel-nav-btn" id="btn-biorx" onclick="openScreen('biorx',null);syncSideNav('btn-biorx')">🌿 Organic Bio-Medicines</button> |
| 1127 | + </div> |
| 1128 | + </div> |
| 1129 | + </div> |
| 1130 | +</div> |
| 1131 | + |
1070 | 1132 | <script> |
1071 | 1133 | /* ═════════════════ SAFE DOM UTILITY HELPERS ═════════════════ */ |
1072 | 1134 | function safeSetText(id, text) { |
|
3400 | 3462 |
|
3401 | 3463 | function showPushNotificationToast(payload) { |
3402 | 3464 | lastToastPayload = payload; |
| 3465 | + |
| 3466 | + // Real Android System Notification (appears in phone status bar & lock screen like a message) |
| 3467 | + try { |
| 3468 | + if (window.AndroidBridge && typeof window.AndroidBridge.postSystemNotification === 'function') { |
| 3469 | + const sysTitle = (payload && payload.title) || 'NuKropAI Notification'; |
| 3470 | + const sysMsg = (payload && payload.msg) || ''; |
| 3471 | + window.AndroidBridge.postSystemNotification(sysTitle, sysMsg); |
| 3472 | + } |
| 3473 | + } catch(errSys) { |
| 3474 | + console.warn('Native notification bridge error:', errSys); |
| 3475 | + } |
3403 | 3476 | const toast = document.getElementById('global-push-toast'); |
3404 | 3477 | const titleEl = document.getElementById('toast-title'); |
3405 | 3478 | const msgEl = document.getElementById('toast-msg'); |
|
0 commit comments