Spaces:
Runtime error
Runtime error
sara.mesquita commited on
Commit Β·
4e56d4d
1
Parent(s): c33e98e
adds readme and context
Browse files- index.html +12 -5
- static/style.css +78 -7
index.html
CHANGED
|
@@ -36,7 +36,7 @@
|
|
| 36 |
<h3>How it works</h3>
|
| 37 |
<div class="how-steps">
|
| 38 |
<div class="how-step">
|
| 39 |
-
<div class="how-num">
|
| 40 |
<div class="how-content">
|
| 41 |
<strong>Snap a photo</strong>
|
| 42 |
<span>Point your camera at any stray dog or cat.</span>
|
|
@@ -44,7 +44,7 @@
|
|
| 44 |
</div>
|
| 45 |
<div class="how-connector"></div>
|
| 46 |
<div class="how-step">
|
| 47 |
-
<div class="how-num">
|
| 48 |
<div class="how-content">
|
| 49 |
<strong>AI identifies</strong>
|
| 50 |
<span>Species, breed, color and condition β automatically.</span>
|
|
@@ -52,7 +52,7 @@
|
|
| 52 |
</div>
|
| 53 |
<div class="how-connector"></div>
|
| 54 |
<div class="how-step">
|
| 55 |
-
<div class="how-num">
|
| 56 |
<div class="how-content">
|
| 57 |
<strong>Smart matching</strong>
|
| 58 |
<span>Checks if this animal has been seen before.</span>
|
|
@@ -60,7 +60,7 @@
|
|
| 60 |
</div>
|
| 61 |
<div class="how-connector"></div>
|
| 62 |
<div class="how-step">
|
| 63 |
-
<div class="how-num">
|
| 64 |
<div class="how-content">
|
| 65 |
<strong>Map updates</strong>
|
| 66 |
<span>Sighting linked to the animal's profile β or a new one is created.</span>
|
|
@@ -79,6 +79,11 @@
|
|
| 79 |
</div>
|
| 80 |
</aside>
|
| 81 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 82 |
<div id="app">
|
| 83 |
|
| 84 |
<!-- ββ ONBOARDING ββ -->
|
|
@@ -523,7 +528,9 @@
|
|
| 523 |
<button class="nav-btn" data-screen="register"><span class="nav-icon"><i data-lucide="camera"></i></span><span>Report</span></button>
|
| 524 |
<button class="nav-btn" data-screen="sightings"><span class="nav-icon"><i data-lucide="eye"></i></span><span>Sightings</span></button>
|
| 525 |
</nav>
|
| 526 |
-
</div>
|
|
|
|
|
|
|
| 527 |
|
| 528 |
<!-- ββ RIGHT SIDEBAR (desktop only) ββ -->
|
| 529 |
<aside id="sidebar-right">
|
|
|
|
| 36 |
<h3>How it works</h3>
|
| 37 |
<div class="how-steps">
|
| 38 |
<div class="how-step">
|
| 39 |
+
<div class="how-num"><i data-lucide="camera"></i></div>
|
| 40 |
<div class="how-content">
|
| 41 |
<strong>Snap a photo</strong>
|
| 42 |
<span>Point your camera at any stray dog or cat.</span>
|
|
|
|
| 44 |
</div>
|
| 45 |
<div class="how-connector"></div>
|
| 46 |
<div class="how-step">
|
| 47 |
+
<div class="how-num"><i data-lucide="scan-line"></i></div>
|
| 48 |
<div class="how-content">
|
| 49 |
<strong>AI identifies</strong>
|
| 50 |
<span>Species, breed, color and condition β automatically.</span>
|
|
|
|
| 52 |
</div>
|
| 53 |
<div class="how-connector"></div>
|
| 54 |
<div class="how-step">
|
| 55 |
+
<div class="how-num"><i data-lucide="git-merge"></i></div>
|
| 56 |
<div class="how-content">
|
| 57 |
<strong>Smart matching</strong>
|
| 58 |
<span>Checks if this animal has been seen before.</span>
|
|
|
|
| 60 |
</div>
|
| 61 |
<div class="how-connector"></div>
|
| 62 |
<div class="how-step">
|
| 63 |
+
<div class="how-num"><i data-lucide="map-pin"></i></div>
|
| 64 |
<div class="how-content">
|
| 65 |
<strong>Map updates</strong>
|
| 66 |
<span>Sighting linked to the animal's profile β or a new one is created.</span>
|
|
|
|
| 79 |
</div>
|
| 80 |
</aside>
|
| 81 |
|
| 82 |
+
<div class="phone-wrap">
|
| 83 |
+
<div class="phone-frame">
|
| 84 |
+
<div class="phone-btn phone-btn-vol-up"></div>
|
| 85 |
+
<div class="phone-btn phone-btn-vol-down"></div>
|
| 86 |
+
<div class="phone-btn phone-btn-power"></div>
|
| 87 |
<div id="app">
|
| 88 |
|
| 89 |
<!-- ββ ONBOARDING ββ -->
|
|
|
|
| 528 |
<button class="nav-btn" data-screen="register"><span class="nav-icon"><i data-lucide="camera"></i></span><span>Report</span></button>
|
| 529 |
<button class="nav-btn" data-screen="sightings"><span class="nav-icon"><i data-lucide="eye"></i></span><span>Sightings</span></button>
|
| 530 |
</nav>
|
| 531 |
+
</div><!-- /#app -->
|
| 532 |
+
</div><!-- /.phone-frame -->
|
| 533 |
+
</div><!-- /.phone-wrap -->
|
| 534 |
|
| 535 |
<!-- ββ RIGHT SIDEBAR (desktop only) ββ -->
|
| 536 |
<aside id="sidebar-right">
|
static/style.css
CHANGED
|
@@ -566,6 +566,9 @@
|
|
| 566 |
|
| 567 |
#desktop-layout { display:contents; }
|
| 568 |
#sidebar-left, #sidebar-right { display:none; }
|
|
|
|
|
|
|
|
|
|
| 569 |
|
| 570 |
@media (min-width: 960px) {
|
| 571 |
/* ββ Page shell ββ */
|
|
@@ -582,16 +585,82 @@
|
|
| 582 |
background: #f0f7f2;
|
| 583 |
}
|
| 584 |
|
| 585 |
-
/* ββ
|
| 586 |
-
|
|
|
|
| 587 |
grid-column: 2;
|
| 588 |
-
|
| 589 |
-
|
| 590 |
-
margin: 0;
|
| 591 |
position: sticky;
|
| 592 |
top: 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 593 |
overflow: hidden;
|
| 594 |
-
|
|
|
|
| 595 |
}
|
| 596 |
|
| 597 |
/* ββ Shared sidebar ββ */
|
|
@@ -635,11 +704,13 @@
|
|
| 635 |
position:relative; z-index:1;
|
| 636 |
}
|
| 637 |
.how-num {
|
| 638 |
-
|
| 639 |
width:34px; height:34px;
|
| 640 |
background:#e8f5ee; border-radius:10px;
|
| 641 |
display:flex; align-items:center; justify-content:center;
|
|
|
|
| 642 |
}
|
|
|
|
| 643 |
.how-content { display:flex; flex-direction:column; gap:1px; padding-top:2px; }
|
| 644 |
.how-content strong { font-size:13px; font-weight:700; color:#1e3d28; }
|
| 645 |
.how-content span { font-size:11.5px; color:#7aaa8a; line-height:1.4; }
|
|
|
|
| 566 |
|
| 567 |
#desktop-layout { display:contents; }
|
| 568 |
#sidebar-left, #sidebar-right { display:none; }
|
| 569 |
+
/* Phone frame β invisible pass-through on mobile */
|
| 570 |
+
.phone-wrap, .phone-frame { display:contents; }
|
| 571 |
+
.phone-btn { display:none; }
|
| 572 |
|
| 573 |
@media (min-width: 960px) {
|
| 574 |
/* ββ Page shell ββ */
|
|
|
|
| 585 |
background: #f0f7f2;
|
| 586 |
}
|
| 587 |
|
| 588 |
+
/* ββ Phone wrap β grid column + centering ββ */
|
| 589 |
+
.phone-wrap {
|
| 590 |
+
display: flex;
|
| 591 |
grid-column: 2;
|
| 592 |
+
align-items: center;
|
| 593 |
+
justify-content: center;
|
|
|
|
| 594 |
position: sticky;
|
| 595 |
top: 0;
|
| 596 |
+
height: 100dvh;
|
| 597 |
+
background: #f0f7f2;
|
| 598 |
+
}
|
| 599 |
+
|
| 600 |
+
/* ββ Phone frame shell ββ */
|
| 601 |
+
.phone-frame {
|
| 602 |
+
display: block;
|
| 603 |
+
position: relative;
|
| 604 |
+
background: #1c1c1e;
|
| 605 |
+
border-radius: 54px;
|
| 606 |
+
padding: 14px 12px;
|
| 607 |
+
width: 414px;
|
| 608 |
+
height: min(858px, calc(100dvh - 32px));
|
| 609 |
+
box-shadow:
|
| 610 |
+
0 0 0 1.5px #3a3a3c,
|
| 611 |
+
0 0 0 3px #1c1c1e,
|
| 612 |
+
0 0 0 5px #48484a,
|
| 613 |
+
0 40px 100px rgba(0,0,0,.35),
|
| 614 |
+
inset 0 0 0 1px rgba(255,255,255,.04);
|
| 615 |
+
}
|
| 616 |
+
|
| 617 |
+
/* Dynamic island */
|
| 618 |
+
.phone-frame::before {
|
| 619 |
+
content: '';
|
| 620 |
+
position: absolute;
|
| 621 |
+
top: 17px;
|
| 622 |
+
left: 50%;
|
| 623 |
+
transform: translateX(-50%);
|
| 624 |
+
width: 94px;
|
| 625 |
+
height: 30px;
|
| 626 |
+
background: #0a0a0a;
|
| 627 |
+
border-radius: 20px;
|
| 628 |
+
z-index: 10000;
|
| 629 |
+
box-shadow: inset 0 0 0 1px rgba(255,255,255,.06);
|
| 630 |
+
}
|
| 631 |
+
|
| 632 |
+
/* Home indicator */
|
| 633 |
+
.phone-frame::after {
|
| 634 |
+
content: '';
|
| 635 |
+
position: absolute;
|
| 636 |
+
bottom: 18px;
|
| 637 |
+
left: 50%;
|
| 638 |
+
transform: translateX(-50%);
|
| 639 |
+
width: 132px;
|
| 640 |
+
height: 5px;
|
| 641 |
+
background: rgba(255,255,255,.22);
|
| 642 |
+
border-radius: 3px;
|
| 643 |
+
z-index: 10000;
|
| 644 |
+
}
|
| 645 |
+
|
| 646 |
+
/* Side buttons */
|
| 647 |
+
.phone-btn { display: block; position: absolute; background: #3a3a3c; border-radius: 2px; }
|
| 648 |
+
.phone-btn-vol-up { left: -4px; top: 118px; width: 4px; height: 34px; border-radius: 2px 0 0 2px; }
|
| 649 |
+
.phone-btn-vol-down { left: -4px; top: 164px; width: 4px; height: 34px; border-radius: 2px 0 0 2px; }
|
| 650 |
+
.phone-btn-power { right: -4px; top: 138px; width: 4px; height: 58px; border-radius: 0 2px 2px 0; }
|
| 651 |
+
|
| 652 |
+
/* ββ App screen inside frame ββ */
|
| 653 |
+
#app {
|
| 654 |
+
display: flex;
|
| 655 |
+
flex-direction: column;
|
| 656 |
+
width: 390px;
|
| 657 |
+
height: 100%;
|
| 658 |
+
max-width: 390px;
|
| 659 |
+
margin: 0 auto;
|
| 660 |
+
border-radius: 42px;
|
| 661 |
overflow: hidden;
|
| 662 |
+
position: relative;
|
| 663 |
+
box-shadow: none;
|
| 664 |
}
|
| 665 |
|
| 666 |
/* ββ Shared sidebar ββ */
|
|
|
|
| 704 |
position:relative; z-index:1;
|
| 705 |
}
|
| 706 |
.how-num {
|
| 707 |
+
flex-shrink:0;
|
| 708 |
width:34px; height:34px;
|
| 709 |
background:#e8f5ee; border-radius:10px;
|
| 710 |
display:flex; align-items:center; justify-content:center;
|
| 711 |
+
color: var(--green);
|
| 712 |
}
|
| 713 |
+
.how-num svg { width:16px; height:16px; stroke:var(--green); stroke-width:2; fill:none; }
|
| 714 |
.how-content { display:flex; flex-direction:column; gap:1px; padding-top:2px; }
|
| 715 |
.how-content strong { font-size:13px; font-weight:700; color:#1e3d28; }
|
| 716 |
.how-content span { font-size:11.5px; color:#7aaa8a; line-height:1.4; }
|