| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> |
| <title>Johnny Knapp | Real Estate Advisor</title> |
| |
| <link rel="icon" type="image/jpg" href="https://i.postimg.cc/ncX3Kcp5/Facetune-30-03-2026-12-58-14.jpg"> |
| <link rel="apple-touch-icon" href="https://i.postimg.cc/ncX3Kcp5/Facetune-30-03-2026-12-58-14.jpg"> |
| |
| <link href="https://fonts.googleapis.com/css2?family=Tenor+Sans&family=Montserrat:wght@200;300;400;500;600&family=Allison&display=swap" rel="stylesheet"> |
| |
| <style> |
| :root { |
| --text-main: #1a1a1a; |
| --text-muted: #8a837e; |
| --bg-champagne: #f7f3f0; |
| --bg-white: #ffffff; |
| --bg-stone-luxe: #e8e4e1; |
| --card-white: #ffffff; |
| --accent-charcoal: #222222; |
| --accent-hover: #444444; |
| --accent-gold-aesthetic: #c5a47e; |
| } |
| |
| * { box-sizing: border-box; } |
| html { scroll-behavior: smooth; overflow-x: hidden; } |
| |
| body { |
| margin: 0; padding: 0; |
| color: var(--text-main); |
| font-family: 'Montserrat', sans-serif; |
| -webkit-font-smoothing: antialiased; |
| background-color: var(--bg-champagne); |
| transition: background-color 1.2s cubic-bezier(0.45, 0, 0.55, 1); |
| } |
| |
| #scroll-progress { |
| position: fixed; top: 0; left: 0; height: 3px; |
| background: var(--accent-charcoal); |
| z-index: 10002; width: 0%; |
| } |
| |
| .nav-trigger { |
| position: fixed; top: 25px; right: 25px; |
| z-index: 10003; display: flex; align-items: center; |
| gap: 10px; padding: 10px 18px; background: rgba(255,255,255,0.85); |
| backdrop-filter: blur(15px); border-radius: 30px; |
| font-size: 0.6rem; letter-spacing: 4px; text-transform: uppercase; |
| cursor: pointer; transition: 0.4s; font-family: 'Montserrat', sans-serif; |
| font-weight: 600; color: var(--accent-charcoal); |
| box-shadow: 0 4px 15px rgba(0,0,0,0.05); |
| } |
| .nav-trigger:hover { background: #fff; transform: translateY(-2px); } |
| |
| #full-nav { |
| position: fixed; top: 0; left: 0; width: 100%; height: 100%; |
| background: rgba(255, 255, 255, 0.98); |
| backdrop-filter: blur(30px); z-index: 10004; |
| display: flex; flex-direction: column; align-items: center; justify-content: center; |
| clip-path: circle(0% at 100% 0%); transition: 0.8s cubic-bezier(0.77, 0, 0.175, 1); |
| } |
| #full-nav.open { clip-path: circle(150% at 100% 0%); } |
| .nav-links { list-style: none; padding: 0; text-align: center; } |
| .nav-links li { margin: 20px 0; } |
| .nav-links a { font-family: 'Tenor Sans', sans-serif; font-size: clamp(1.6rem, 6vw, 3rem); text-decoration: none; color: var(--accent-charcoal); font-weight: 300; transition: color 0.3s; } |
| .nav-links a:hover { color: var(--accent-gold-aesthetic); } |
| |
| .main-wrapper { max-width: 1150px; margin: 0 auto; padding: 0 20px; } |
| section { width: 100%; position: relative; padding: 80px 0; } |
| |
| .subtitle { font-family: 'Montserrat', sans-serif; font-size: 0.65rem; text-transform: uppercase; letter-spacing: 5px; color: var(--text-muted); display: block; margin-bottom: 8px; font-weight: 400; } |
| .title { font-family: 'Tenor Sans', sans-serif; font-size: clamp(2.8rem, 10vw, 4.2rem); font-weight: 400; margin: 0; line-height: 0.95; } |
| |
| /* Updated signature definition with smooth infinite breathing/pulsing look */ |
| .signature { |
| font-family: 'Allison', cursive; |
| font-size: clamp(5rem, 15vw, 6.5rem); |
| margin-top: -30px; |
| color: var(--accent-charcoal); |
| display: inline-block; |
| animation: continuousSignOff 3.5s ease-in-out infinite; |
| transform-origin: left center; |
| } |
| |
| @keyframes continuousSignOff { |
| 0% { transform: scale(1); opacity: 0.95; } |
| 50% { transform: scale(1.05); opacity: 1; color: var(--accent-gold-aesthetic); } |
| 100% { transform: scale(1); opacity: 0.95; } |
| } |
| |
| .portrait-frame { position: relative; background: white; padding: 12px; box-shadow: 0 20px 40px rgba(0,0,0,0.04); overflow: hidden; cursor: pointer; height: 100%; } |
| .overlay-content { position: absolute; bottom: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(to bottom, transparent 20%, rgba(0, 0, 0, 0.7)); padding: 30px; display: flex; flex-direction: column; justify-content: flex-end; opacity: 0; transition: 0.5s ease; pointer-events: none; } |
| .portrait-frame:hover .overlay-content { opacity: 1; } |
| .overlay-text { font-family: 'Tenor Sans', sans-serif; font-size: 1.6rem; margin: 0; color: #fff; line-height: 1.2; } |
| .overlay-tagline { font-family: 'Montserrat', sans-serif; font-size: 0.55rem; text-transform: uppercase; letter-spacing: 3px; color: rgba(255,255,255,0.7); margin-bottom: 5px; display: block; } |
| |
| .bio-text a { color: var(--accent-charcoal); text-decoration: none; font-weight: 600; border-bottom: 1px solid #ddd; transition: 0.3s; } |
| .bio-text a:hover { color: var(--accent-gold-aesthetic); border-bottom-color: var(--accent-gold-aesthetic); } |
| |
| .connect-bento { display: grid; grid-template-columns: 1fr 1.1fr; gap: 40px; align-items: center; max-width: 1000px; margin: 0 auto; } |
| .contact-card { background: var(--card-white); padding: 50px 40px; box-shadow: 0 20px 50px -10px rgba(0,0,0,0.08); position: relative; border: 1px solid rgba(0,0,0,0.02); } |
| .section-header { font-family: 'Tenor Sans', sans-serif; font-size: 1.1rem; text-transform: uppercase; letter-spacing: 4px; margin-bottom: 30px; display: block; text-align: center; color: var(--text-main); } |
| .contact-item { display: flex; justify-content: space-between; padding: 18px 0; border-bottom: 1px solid #f9f7f6; text-decoration: none; color: var(--text-main); font-size: 0.75rem; transition: 0.3s; font-family: 'Montserrat', sans-serif; } |
| .contact-item span:first-child { text-transform: uppercase; font-size: 0.55rem; letter-spacing: 3px; color: var(--text-muted); } |
| .contact-item:hover { padding-left: 8px; border-bottom-color: var(--accent-charcoal); } |
| |
| .vcard-btn, .salon-btn { display: block; background: var(--accent-charcoal); color: #fff; text-align: center; padding: 18px; text-decoration: none; font-size: 0.65rem; letter-spacing: 4px; font-weight: 600; transition: 0.4s ease; text-transform: uppercase; font-family: 'Montserrat', sans-serif; } |
| .vcard-btn:hover, .salon-btn:hover { background: var(--accent-hover); transform: translateY(-3px); box-shadow: 0 10px 20px rgba(0,0,0,0.1); } |
| .socials-link { display: block; margin-top: 15px; background: transparent; color: var(--accent-charcoal); text-align: center; padding: 15px; text-decoration: none; font-size: 0.65rem; letter-spacing: 4px; font-weight: 600; border: 1px solid #ddd; border-radius: 30px; transition: all 0.3s ease; text-transform: uppercase; font-family: 'Montserrat', sans-serif; } |
| .socials-link:hover { background: var(--accent-charcoal); color: #fff; border-color: var(--accent-charcoal); } |
| |
| .phone-portfolio-container { display: flex; flex-direction: column; align-items: center; width: 100%; padding: 10px 0; } |
| .thin-phone-frame { position: relative; width: 260px; aspect-ratio: 9 / 19.5; border: 2px solid #1a1a1c; border-radius: 40px; background-color: #000; box-shadow: 0 15px 40px rgba(0, 0, 0, 0.12); overflow: hidden; } |
| .island { position: absolute; top: 10px; left: 50%; transform: translateX(-50%); width: 70px; height: 18px; background: #000; border-radius: 20px; z-index: 10; } |
| .phone-image { width: 100%; height: 100%; position: absolute; top: 0; left: 0; object-fit: cover; opacity: 0; transition: opacity 0.6s ease-in-out; } |
| .phone-image.active { opacity: 1; } |
| .phone-link-overlay { position: absolute; bottom: 25px; left: 50%; transform: translateX(-50%); width: 80%; background: rgba(0, 0, 0, 0.65); backdrop-filter: blur(10px); border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 10px; padding: 10px; text-align: center; text-decoration: none; z-index: 20; transition: 0.3s ease; } |
| .phone-link-overlay span { color: #fff; font-family: 'Montserrat'; font-size: 0.6rem; letter-spacing: 2px; text-transform: uppercase; } |
| |
| .portfolio-carousel { width: 100%; max-width: 450px; position: relative; overflow: hidden; border: 8px solid white; box-shadow: 0 10px 30px rgba(0,0,0,0.05); } |
| .carousel-track { display: flex; transition: transform 0.8s cubic-bezier(0.65, 0, 0.35, 1); } |
| .carousel-slide { min-width: 100%; } |
| .portfolio-carousel img { width: 100%; height: 320px; object-fit: cover; display: block; } |
| .carousel-heading { font-family: 'Tenor Sans', sans-serif; text-transform: uppercase; letter-spacing: 5px; font-size: 0.75rem; margin-bottom: 20px; display: inline-block; border-bottom: 1px solid #ddd; padding-bottom: 5px; } |
| |
| .picks-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 15px; margin-top: 25px; } |
| .pick-item { text-decoration: none; color: inherit; padding: 12px; border: 1px solid #e0e0e0; background-color: white; transition: 0.3s; font-family: 'Montserrat', sans-serif; } |
| .pick-item:hover { background: var(--accent-charcoal); color: white; transform: translateY(-2px); } |
| .pick-item p { margin: 0; font-weight: 600; font-size: 0.8rem; } |
| |
| .back-to-top { position: fixed; bottom: 30px; right: 30px; width: 45px; height: 45px; background: white; border-radius: 50%; display: flex; align-items: center; justify-content: center; box-shadow: 0 5px 15px rgba(0,0,0,0.1); z-index: 999; opacity: 0; transition: 0.4s; } |
| |
| @media (min-width: 950px) { |
| .hero-container, .community-grid { display: grid; grid-template-columns: 1.1fr 0.9fr; gap: 80px; } |
| .contact-sidebar, .portrait-container, .community-sidebar { display: block !important; position: sticky; top: 60px; height: fit-content; } |
| #mobile-portrait-wrapper, #mobile-community-wrapper { display: none !important; } |
| .local-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 60px; } |
| .bio-text p { font-size: 0.9rem; line-height: 1.8; margin-bottom: 20px; } |
| |
| .salon-grid { |
| display: grid; |
| grid-template-columns: 1fr 1fr; |
| gap: 80px; |
| align-items: center; |
| justify-content: center; |
| } |
| .salon-info-column { |
| display: flex; |
| flex-direction: column; |
| align-items: center; |
| text-align: center; |
| } |
| .salon-words-wrapper { |
| max-width: 500px; |
| margin: 0 auto; |
| } |
| } |
| |
| @media (max-width: 949px) { |
| section { padding: 40px 0; text-align: center; } |
| .main-wrapper { padding: 0; width: 100%; } |
| .bio-text p { font-size: 0.85rem; padding: 0 30px; line-height: 1.8; margin-bottom: 20px; font-weight: 300; } |
| .picks-grid { display: flex; overflow-x: auto; padding: 10px 25px 25px 25px; gap: 12px; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; } |
| .picks-grid::-webkit-scrollbar { display: none; } |
| .pick-item { flex: 0 0 150px; scroll-snap-align: start; background: #fff; border: none; border-radius: 15px; box-shadow: 0 6px 15px rgba(0,0,0,0.05); padding: 15px 10px; } |
| #mobile-portrait-wrapper { display: block !important; margin: 0 auto 25px auto; width: 130px; height: 130px; border-radius: 50%; overflow: hidden; border: 6px solid #fff; box-shadow: 0 10px 25px rgba(0,0,0,0.08); } |
| #mobile-portrait-wrapper img { width: 100%; height: 100%; object-fit: cover; } |
| #mobile-community-wrapper { display: block !important; margin: 0 auto 30px auto; width: 65%; } |
| #mobile-community-wrapper .portrait-frame { border-radius: 20px; padding: 8px; } |
| .connect-bento { display: flex; flex-direction: column; width: 100%; padding: 0; } |
| .contact-card { width: 100% !important; margin: -30px auto 0 auto !important; border-radius: 25px 25px 0 0; box-shadow: 0 -15px 40px rgba(0,0,0,0.06); padding: 40px 20px; } |
| .contact-item { font-size: 0.7rem; } |
| .contact-sidebar, .portrait-container, .community-sidebar { display: none !important; } |
| .vcard-btn, .salon-btn { border-radius: 12px; margin: 0 5px; } |
| .portfolio-carousel { border-radius: 15px; width: 90%; margin: 0 auto; border: 5px solid #fff; } |
.nav-trigger { top: 15px; right: 15px; padding: 8px 14px; border-radius: 20px; } |