diff --git a/app/globals.css b/app/globals.css index b775e6a..62665d8 100644 --- a/app/globals.css +++ b/app/globals.css @@ -1,3 +1,5 @@ +@import url('https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@400;500;600;700;800&family=Barlow:wght@300;400;500;600&display=swap'); + :root { --navy: #0F2444; --navy-mid: #1B3A6B; @@ -23,12 +25,72 @@ body { background: var(--white); color: var(--gray-800); overflow-x: hidden; - padding-top: 64px; /* Space for fixed nav */ } +/* ── ANIMATIONS ── */ +@keyframes fadeUp { + from { opacity: 0; transform: translateY(24px); } + to { opacity: 1; transform: translateY(0); } +} + +.fade-up { + animation: fadeUp 0.6s ease both; +} + +/* ── SCROLLBAR ── */ +::-webkit-scrollbar { width: 6px; } +::-webkit-scrollbar-track { background: var(--gray-100); } +::-webkit-scrollbar-thumb { background: var(--navy); border-radius: 3px; } + +/* Section Generic Styles */ +section { padding: 96px 80px; } + +@media (max-width: 1024px) { + section { padding: 80px 48px; } +} + +@media (max-width: 768px) { + section { padding: 64px 24px; } +} + +.section-eyebrow { + font-family: var(--font-display); font-size: 12px; font-weight: 700; + letter-spacing: .14em; text-transform: uppercase; color: var(--orange); + margin-bottom: 12px; display: flex; align-items: center; gap: 10px; +} +.section-eyebrow::before { + content: ''; display: block; width: 24px; height: 2px; background: var(--orange); +} +.section-h2 { + font-family: var(--font-display); font-size: clamp(38px, 4vw, 58px); + font-weight: 800; text-transform: uppercase; line-height: .95; + color: var(--navy); letter-spacing: -.01em; +} +.section-h2 span { color: var(--orange); } + +/* Buttons */ +.btn-primary { + background: var(--orange); color: var(--white); + font-family: var(--font-display); font-size: 15px; font-weight: 700; + letter-spacing: .08em; text-transform: uppercase; + padding: 14px 32px; border: none; border-radius: 4px; cursor: pointer; + transition: background .2s; text-decoration: none; display: inline-block; +} +.btn-primary:hover { background: var(--orange-dark); } + +.btn-secondary { + background: transparent; color: var(--white); + font-family: var(--font-display); font-size: 15px; font-weight: 700; + letter-spacing: .08em; text-transform: uppercase; + padding: 13px 32px; border: 1.5px solid rgba(255,255,255,.3); + border-radius: 4px; cursor: pointer; transition: border-color .2s; + text-decoration: none; display: inline-block; +} +.btn-secondary:hover { border-color: rgba(255,255,255,.7); } + /* ── NAV ── */ nav { - position: fixed; top: 0; left: 0; right: 0; z-index: 100; + position: fixed; top: 0; left: 0; right: 0; z-index: 1000; background: var(--navy); display: flex; align-items: center; justify-content: space-between; padding: 0 48px; height: 64px; @@ -56,23 +118,22 @@ nav { color: rgba(255,255,255,.75); text-decoration: none; letter-spacing: .06em; text-transform: uppercase; transition: color .2s; } -.nav-links a:hover, .nav-links a.active { color: var(--orange); } +.nav-links a:hover { color: var(--orange); } .nav-cta { background: var(--orange); color: var(--white); font-family: var(--font-display); font-size: 14px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; padding: 10px 22px; border: none; border-radius: 4px; cursor: pointer; - transition: background .2s; - text-decoration: none; + transition: background .2s; text-decoration: none; } .nav-cta:hover { background: var(--orange-dark); } /* ── HERO ── */ .hero { - min-height: calc(100vh - 64px); + min-height: 100vh; background: var(--navy); display: grid; grid-template-columns: 1fr 1fr; - position: relative; overflow: hidden; + padding-top: 64px; position: relative; overflow: hidden; } .hero-pattern { position: absolute; inset: 0; opacity: .04; @@ -119,23 +180,7 @@ nav { } .hero-sub strong { color: rgba(255,255,255,.9); font-weight: 500; } .hero-btns { display: flex; gap: 14px; flex-wrap: wrap; margin-bottom: 56px; } -.btn-primary { - background: var(--orange); color: var(--white); - font-family: var(--font-display); font-size: 15px; font-weight: 700; - letter-spacing: .08em; text-transform: uppercase; - padding: 14px 32px; border: none; border-radius: 4px; cursor: pointer; - transition: background .2s; text-decoration: none; display: inline-block; -} -.btn-primary:hover { background: var(--orange-dark); } -.btn-secondary { - background: transparent; color: var(--white); - font-family: var(--font-display); font-size: 15px; font-weight: 700; - letter-spacing: .08em; text-transform: uppercase; - padding: 13px 32px; border: 1.5px solid rgba(255,255,255,.3); - border-radius: 4px; cursor: pointer; transition: border-color .2s; - text-decoration: none; display: inline-block; -} -.btn-secondary:hover { border-color: rgba(255,255,255,.7); } + .hero-stats { display: flex; gap: 40px; padding-top: 28px; border-top: 1px solid rgba(255,255,255,.1); @@ -200,6 +245,7 @@ nav { background: var(--orange); display: flex; align-items: center; justify-content: center; gap: 0; overflow: hidden; + flex-wrap: wrap; } .trust-item { flex: 1; display: flex; align-items: center; justify-content: center; @@ -207,27 +253,11 @@ nav { border-right: 1px solid rgba(255,255,255,.2); font-family: var(--font-display); font-size: 13px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: rgba(255,255,255,.9); + min-width: 200px; } .trust-item:last-child { border-right: none; } .trust-icon { font-size: 16px; } -/* ── SECTIONS ── */ -section { padding: 96px 80px; } -.section-eyebrow { - font-family: var(--font-display); font-size: 12px; font-weight: 700; - letter-spacing: .14em; text-transform: uppercase; color: var(--orange); - margin-bottom: 12px; display: flex; align-items: center; gap: 10px; -} -.section-eyebrow::before { - content: ''; display: block; width: 24px; height: 2px; background: var(--orange); -} -.section-h2 { - font-family: var(--font-display); font-size: clamp(38px, 4vw, 58px); - font-weight: 800; text-transform: uppercase; line-height: .95; - color: var(--navy); letter-spacing: -.01em; -} -.section-h2 span { color: var(--orange); } - /* ── PRODUCTS ── */ .products-section { background: var(--gray-100); } .products-header { @@ -242,7 +272,9 @@ section { padding: 96px 80px; } .product-card { background: var(--white); padding: 32px 28px; transition: background .2s; cursor: pointer; position: relative; - overflow: hidden; text-decoration: none; display: block; + overflow: hidden; + text-decoration: none; + display: block; } .product-card::after { content: ''; position: absolute; bottom: 0; left: 0; right: 0; @@ -456,6 +488,7 @@ section { padding: 96px 80px; } font-family: var(--font-display); font-size: 15px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; padding: 14px 36px; border: none; border-radius: 4px; cursor: pointer; + text-decoration: none; } .btn-white-outline { background: transparent; color: var(--white); @@ -463,6 +496,7 @@ section { padding: 96px 80px; } letter-spacing: .08em; text-transform: uppercase; padding: 13px 36px; border: 2px solid rgba(255,255,255,.5); border-radius: 4px; cursor: pointer; transition: border-color .2s; + text-decoration: none; } .btn-white-outline:hover { border-color: var(--white); } @@ -511,55 +545,63 @@ footer { letter-spacing: .06em; text-transform: uppercase; margin-top: 10px; } -/* ── LOGIN PAGE SPECIFIC ── */ +/* ── RESPONSIVE ── */ +@media (max-width: 1024px) { + .hero { grid-template-columns: 1fr; } + .hero-right { padding: 40px 48px 80px; } + .products-grid { grid-template-columns: repeat(2, 1fr); } + .footer-top { grid-template-columns: 1fr 1fr; } + .targets-grid { grid-template-columns: repeat(2, 1fr); } + .stain-layout { grid-template-columns: 1fr; } +} + +@media (max-width: 768px) { + nav { padding: 0 24px; } + .nav-links { display: none; } + .hero-left { padding: 60px 24px; } + .hero-right { padding: 40px 24px 60px; } + .products-grid { grid-template-columns: 1fr; } + .services-grid { grid-template-columns: 1fr; } + .territory-layout { grid-template-columns: 1fr; } + .footer-top { grid-template-columns: 1fr; } +} + + +/* ── AUTH PAGES ── */ .auth-page { - min-height: calc(100vh - 64px); - background: var(--cream); - display: flex; align-items: center; justify-content: center; - padding: 40px; + min-height: 100vh; + padding-top: calc(80px + 64px); /* 80px spacing + 64px for fixed navbar */ + padding-bottom: 80px; + background: var(--navy); + display: flex; align-items: flex-start; justify-content: center; + position: relative; overflow: hidden; +} +.auth-page::before { + content: ''; position: absolute; top: -100px; left: -100px; + width: 400px; height: 400px; border-radius: 50%; + background: var(--orange); opacity: .05; +} +.auth-page::after { + content: ''; position: absolute; bottom: -100px; right: -100px; + width: 400px; height: 400px; border-radius: 50%; + background: var(--orange); opacity: .05; } .auth-card { - background: var(--white); - border-radius: 12px; - box-shadow: 0 10px 30px rgba(0,0,0,0.05); - width: 100%; - max-width: 440px; - padding: 48px; + width: 100%; max-width: 440px; + background: rgba(255,255,255,.03); + border: 1px solid rgba(255,255,255,.1); + border-radius: 16px; padding: 48px; + backdrop-filter: blur(20px); + position: relative; z-index: 2; } .auth-title { - font-family: var(--font-display); - font-size: 32px; - font-weight: 800; - color: var(--navy); - text-transform: uppercase; - margin-bottom: 8px; + font-family: var(--font-display); font-size: 32px; font-weight: 800; + color: var(--white); text-transform: uppercase; letter-spacing: .02em; + margin-bottom: 8px; text-align: center; } +.auth-title span { color: var(--orange); } .auth-sub { - font-size: 14px; - color: var(--gray-600); - margin-bottom: 32px; + font-size: 14px; color: rgba(255,255,255,.5); text-align: center; + margin-bottom: 40px; line-height: 1.6; } -.auth-form .form-label { color: var(--gray-600); } -.auth-form .form-input { - background: var(--gray-100); - border: 1px solid var(--gray-200); - color: var(--gray-800); -} -.auth-form .form-input:focus { border-color: var(--orange); } - -/* ── ANIMATIONS ── */ -@keyframes fadeUp { - from { opacity: 0; transform: translateY(24px); } - to { opacity: 1; transform: translateY(0); } -} -.hero-eyebrow { animation: fadeUp .6s ease both; } -.hero-h1 { animation: fadeUp .6s .1s ease both; } -.hero-sub { animation: fadeUp .6s .2s ease both; } -.hero-btns { animation: fadeUp .6s .3s ease both; } -.hero-stats { animation: fadeUp .6s .4s ease both; } -.quote-card { animation: fadeUp .7s .3s ease both; } - -/* ── SCROLLBAR ── */ -::-webkit-scrollbar { width: 6px; } -::-webkit-scrollbar-track { background: var(--gray-100); } -::-webkit-scrollbar-thumb { background: var(--navy); border-radius: 3px; } +.auth-form { display: flex; flex-direction: column; } diff --git a/app/login/page.tsx b/app/login/page.tsx new file mode 100644 index 0000000..56005b8 --- /dev/null +++ b/app/login/page.tsx @@ -0,0 +1,39 @@ +"use client"; +import Link from 'next/link'; + +export default function LoginPage() { + return ( +
Access your pricing and order history.
+ + + + {/*- Supplying contractors, builders, and property managers across Ontario with{' '} - chain link, ornamental, composite, glass railing, and stain products — - with same-day job site delivery across a 250km radius from KWC. -
-- Nine product lines in stock, ready for same-day or scheduled delivery to your job site anywhere in our 250km radius. -
-Join hundreds of Ontario contractors who trust VG Fence for their supply needs.
-+ Explore our full range of professional fence and railing supplies. All items are available for same-day delivery across Ontario. +
+We handle custom orders and bulk supplies for large-scale developments.
+ Contact our supply team +Same-day delivery · Contractor pricing · 250km radius across Ontario
+ +