Liveweave: Generative AI Web Editor & HTML/CSS/JS Playground
Initializing
Liveweave
Web
expand_more
home
Home
Palette
Color Explorer
arrow_outward
Polyline
Graphics Editor
arrow_outward
frame_source
Python Playground
arrow_outward
build
Tools
expand_more
restart_alt
Load "Hello Weaver!"
post_add
Generate Lorem ipsum...
code
Format HTML
code_blocks
Format CSS
data_object
Format JavaScript
library_add
Library
expand_more
A
Algolia JS
Animate CSS
Apex Charts JS
B
Bulma CSS
Bootstrap
C
Chart JS
Chartist
Create JS
D
D3
Dojo
F
Foundation
Fullpage JS
G
Granim JS
Google Charts
H
Halfmoon
J
jQuery
M
Materialize
Moment JS
Masonry JS
Milligram CSS
P
Pure CSS
Primer CSS
Popper JS
Pattern CSS
Picnic CSS
R
React JS
Raphael JS
Raisin CSS
S
Semantic UI
Skeleton CSS
Spectre CSS
Tachyons CSS
T
Tailwind
Three JS
U
UI Kit
Vis JS
W
Water CSS
download
Download
expand_more
developer_mode
Download as HTML
folder_zip
Download as .ZIP
cloud_upload
Fork
account_circle
Login
settings
Settings
expand_more
Editor font
14
px
A
A
Night mode
Line number
Mini map
Word wrap
sync_alt
Reset Settings
smart_display
Run
left_panel_close
AI Assistant
dashboard
All
HTML
CSS
JS
visibility
Preview
bolt
Live Preview
terminal
JS Console
<!DOCTYPE html> <html> <head> <title>Smartphone product website template</title> </head> <body> <!-- Start your code here --> <div class="gravity-site" id="gravitySite"> <!-- NAVIGATION --> <header class="gravity-nav"> <a class="gravity-logo" href="#top"> <span class="gravity-mark">G<span>•</span></span> <span>GRAVITY</span> </a> <nav class="gravity-links" id="gravityLinks"> <a href="#design">Design</a> <a href="#camera">Camera</a> <a href="#performance">Performance</a> <a href="#android">Android</a> <a href="#specs">Specifications</a> </nav> <a class="nav-cta" href="#finale">EXPLORE PHONE <span>↗</span></a> <button class="mobile-menu" id="gravityMenu" aria-label="Open navigation" aria-expanded="false"> <span></span> <span></span> </button> </header> <!-- HERO --> <section class="gravity-hero" id="top"> <div class="hero-photo"></div> <div class="hero-shade"></div> <div class="hero-content"> <div class="hero-eyebrow"> <span class="orange-dot"></span> INTRODUCING THE NEXT GENERATION </div> <h1> DEFY<br> <span>ORDINARY.</span> </h1> <div class="hero-divider"></div> <div class="hero-bottom"> <div> <h2>GRAVITY <em>PHONE</em></h2> <p> Extraordinary power. Limitless creativity.<br> An Android experience unlike anything before. </p> </div> <a href="#design" class="hero-explore"> <span>EXPLORE THE EXPERIENCE</span> <span class="explore-circle">↓</span> </a> </div> </div> <div class="hero-vertical">GRAVITY PHONE / 2026 EDITION</div> </section> <!-- INTRO --> <section class="gravity-intro" id="design"> <div class="section-index">01 — THE DESIGN</div> <div class="intro-heading reveal"> <span class="eyebrow">BEYOND THE EXPECTED</span> <h2> Not just a phone.<br> <em>A force of nature.</em> </h2> </div> <div class="intro-description reveal"> <p> Designed to challenge everything you expect from a smartphone. Precision-engineered materials. Unmistakable presence. A design that refuses to blend in. </p> <div class="intro-symbol">✳</div> </div> </section> <!-- FULL BLEED DESIGN PHOTO --> <section class="design-visual full-image-section"> <div class="design-image"></div> <div class="image-darken"></div> <div class="image-content reveal"> <span class="eyebrow">CRAFTED TO PERFECTION</span> <h2> Every detail.<br> <em>Intentional.</em> </h2> <p> Sculpted aluminum. Precision glass. An iconic camera system built to stand apart. </p> </div> <div class="image-bottom-label"> <span>GRAVITY INDUSTRIAL DESIGN</span> <span>01 / 05</span> </div> </section> <!-- PRODUCT COLORS --> <section class="gravity-colors"> <div class="colors-header reveal"> <div> <span class="eyebrow">PERSONAL EXPRESSION</span> <h2>Choose your<br><em>gravity.</em></h2> </div> <p> Four distinctive finishes.<br> One unmistakable identity. </p> </div> <div class="color-stage"> <div class="stage-glow"></div> <div class="gravity-phone-render" id="gravityPhoneRender"> <div class="phone-top-glow"></div> <div class="gravity-camera-block"> <div class="lens lens-one"></div> <div class="lens lens-two"></div> <div class="lens lens-three"></div> <div class="camera-flash"></div> <span>200MP / AI OPTICS</span> </div> <div class="render-logo">GRAVITY</div> <div class="render-model">G / ONE ULTRA</div> </div> <div class="stage-side-text">DESIGNED TO BE DIFFERENT</div> </div> <div class="color-controls"> <div class="selected-finish"> <span>SELECTED FINISH</span> <strong id="gravityColorName">Obsidian Black</strong> </div> <div class="color-swatches"> <button class="gravity-swatch active" data-finish="black" style="--swatch:#292c31" aria-label="Obsidian Black"></button> <button class="gravity-swatch" data-finish="titanium" style="--swatch:#a3a6a8" aria-label="Titanium Silver"></button> <button class="gravity-swatch" data-finish="violet" style="--swatch:#716389" aria-label="Cosmic Violet"></button> <button class="gravity-swatch" data-finish="orange" style="--swatch:#bb5c35" aria-label="Solar Orange"></button> </div> </div> </section> <!-- CAMERA --> <section class="gravity-camera" id="camera"> <div class="camera-intro reveal"> <span class="section-index">02 — THE CAMERA</span> <h2> SEE<br> <span>BEYOND.</span> </h2> <p> The most ambitious camera system we've ever imagined. Every shadow. Every texture. Every extraordinary moment. </p> </div> <div class="camera-full-photo"> <div class="camera-photo-bg"></div> <div class="camera-photo-shade"></div> <div class="camera-photo-copy"> <span>200 MEGAPIXEL MAIN CAMERA</span> <h3>Details that<br>defy belief.</h3> </div> <div class="camera-photo-index">GRAVITY OPTICAL SYSTEM / 01</div> </div> <div class="camera-numbers"> <div> <strong>200<span>MP</span></strong> <p>MAIN SENSOR</p> </div> <div> <strong>8<span>K</span></strong> <p>VIDEO RECORDING</p> </div> <div> <strong>10<span>×</span></strong> <p>OPTICAL ZOOM</p> </div> <div> <strong>AI<span>+</span></strong> <p>COMPUTATIONAL IMAGING</p> </div> </div> <!-- CAMERA MODE SELECTOR --> <div class="camera-modes"> <div class="mode-heading"> <span class="eyebrow">EVERY PERSPECTIVE MATTERS</span> <h3>One camera system.<br><em>Infinite possibilities.</em></h3> </div> <div class="mode-buttons"> <button class="mode-btn active" data-mode="portrait">PORTRAIT</button> <button class="mode-btn" data-mode="night">NIGHT</button> <button class="mode-btn" data-mode="landscape">ULTRA-WIDE</button> </div> <div class="mode-showcase"> <img id="cameraModeImage" src="https://images.unsplash.com/photo-1534528741775-53994a69daeb?w=1400&q=85" alt="Portrait photography example" > <div class="mode-overlay"> <span id="cameraModeLabel">PORTRAIT MODE</span> <h4 id="cameraModeTitle">Every face tells a story.</h4> <p id="cameraModeDescription"> Beautiful depth, natural skin tones, and professional-looking portraits. </p> </div> </div> </div> <div class="photo-disclaimer"> Illustrative photography. Images are not captured with a Gravity Phone. </div> </section> <!-- PERFORMANCE --> <section class="gravity-performance" id="performance"> <div class="performance-background"></div> <div class="performance-shade"></div> <div class="performance-content reveal"> <span class="section-index">03 — PERFORMANCE</span> <h2> FASTER<br> THAN <em>FAST.</em> </h2> <p> From instant app launches to effortless multitasking, Gravity Phone delivers the speed to keep your world moving. </p> <div class="performance-features"> <div> <strong>5G+</strong> <span>ULTRA-FAST CONNECTIVITY</span> </div> <div> <strong>144Hz</strong> <span>FLUID AMOLED DISPLAY</span> </div> <div> <strong>16GB</strong> <span>HIGH-SPEED MEMORY</span> </div> </div> </div> </section> <!-- BROWSING --> <section class="gravity-browsing"> <div class="browsing-copy reveal"> <span class="eyebrow">BUILT FOR THE CONNECTED WORLD</span> <h2> The internet.<br> <em>Without waiting.</em> </h2> <p> Experience responsive browsing, seamless streaming, and effortless multitasking with next-generation connectivity and intelligent performance optimization. </p> <div class="browsing-stats"> <div> <strong>Wi-Fi 7</strong> <span>NEXT-GEN WIRELESS</span> </div> <div> <strong>5G</strong> <span>ULTRA-FAST MOBILE DATA</span> </div> </div> </div> <div class="browsing-image"> <img src="https://images.unsplash.com/photo-1610945265064-0e34e5519bbf?w=1400&q=85" alt="Android smartphone with modern display" > <div class="browsing-image-caption">SPEED WITHOUT COMPROMISE.</div> </div> </section> <!-- ANDROID EXPERIENCE --> <section class="gravity-android" id="android"> <div class="android-heading reveal"> <span class="section-index">04 — THE EXPERIENCE</span> <h2> ANDROID.<br> <em>UNLEASHED.</em> </h2> <p> Open possibilities. Intelligent experiences. Designed around the way you live. </p> </div> <div class="android-grid"> <div class="android-feature feature-ai"> <div class="feature-background ai-background"></div> <div class="feature-content"> <span>01 / INTELLIGENCE</span> <h3>AI that moves<br>with you.</h3> <p>Smart summaries, creative assistance, and contextual suggestions.</p> </div> <div class="ai-orb">✳</div> </div> <div class="android-feature feature-display"> <div class="feature-background display-background"></div> <div class="feature-content"> <span>02 / DISPLAY</span> <h3>Brilliant from<br>every angle.</h3> <p>6.9-inch AMOLED. Vivid color. Ultra-smooth scrolling.</p> </div> </div> <div class="android-feature feature-security"> <div class="feature-content"> <span>03 / SECURITY</span> <h3>Your privacy.<br>Your control.</h3> <p>Advanced Android privacy features and biometric protection.</p> </div> <div class="security-art">◎</div> </div> <div class="android-feature feature-battery"> <div class="feature-content"> <span>04 / BATTERY</span> <h3>Power through<br>everything.</h3> <p>5,500mAh battery with ultra-fast charging technology.</p> </div> <div class="battery-art"> <div class="battery-energy"></div> <strong>100%</strong> </div> </div> </div> </section> <!-- SPECS --> <section class="gravity-specs" id="specs"> <div class="specs-heading reveal"> <span class="eyebrow">THE DETAILS</span> <h2>EVERYTHING<br><em>YOU NEED.</em></h2> </div> <div class="specs-list"> <div class="spec-row"> <span>DISPLAY</span> <strong>6.9" AMOLED / 144Hz</strong> </div> <div class="spec-row"> <span>PROCESSOR</span> <strong>Gravity G1 Ultra / 3nm</strong> </div> <div class="spec-row"> <span>CAMERA</span> <strong>200MP + 50MP + 50MP</strong> </div> <div class="spec-row"> <span>MEMORY</span> <strong>16GB RAM</strong> </div> <div class="spec-row"> <span>STORAGE</span> <strong>256GB / 512GB / 1TB</strong> </div> <div class="spec-row"> <span>BATTERY</span> <strong>5,500mAh / 100W Charging</strong> </div> <div class="spec-row"> <span>CONNECTIVITY</span> <strong>5G / Wi-Fi 7 / Bluetooth</strong> </div> <div class="spec-row"> <span>OPERATING SYSTEM</span> <strong>Android</strong> </div> </div> </section> <!-- FINAL HERO --> <section class="gravity-finale" id="finale"> <div class="finale-image"></div> <div class="finale-shade"></div> <div class="finale-content reveal"> <span class="eyebrow">THE NEXT CHAPTER STARTS HERE</span> <h2> FEEL THE<br> <em>GRAVITY.</em> </h2> <p>Everything changes when you stop following the ordinary.</p> <a href="#top" class="finale-button">DISCOVER AGAIN <span>↗</span></a> </div> </section> <!-- FOOTER --> <footer class="gravity-footer"> <div class="footer-logo">GRAVITY<span>•</span></div> <div class="footer-center">ENGINEERED TO DEFY ORDINARY.</div> <div class="footer-right">© 2026 GRAVITY CONCEPT</div> </footer> </div> <!-- End your code here --> </body> </html>
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Space+Grotesk:wght@400;500;600;700&display=swap'); :root { --black: #08090b; --dark: #101115; --dark2: #181a20; --white: #f5f5f3; --muted: #9b9da5; --orange: #ff6b35; --violet: #8d75d8; } * { box-sizing: border-box; } html { scroll-behavior: smooth; } body { margin: 0; background: var(--black); color: var(--white); font-family: 'Inter', sans-serif; } a { color: inherit; text-decoration: none; } button { font-family: inherit; cursor: pointer; } img { width: 100%; height: 100%; object-fit: cover; display: block; } .gravity-site { width: 100%; overflow: hidden; background: var(--black); } .gravity-site h1, .gravity-site h2, .gravity-site h3, .gravity-site h4 { font-family: 'Space Grotesk', sans-serif; letter-spacing: -.065em; } .gravity-site em { font-style: normal; color: var(--orange); } /* NAVIGATION */ .gravity-nav { height: 86px; padding: 0 5%; display: flex; align-items: center; justify-content: space-between; position: relative; z-index: 30; background: #08090bee; border-bottom: 1px solid #ffffff18; } .gravity-logo { display: flex; align-items: center; gap: 13px; font-size: 18px; font-weight: 800; letter-spacing: 3px; } .gravity-mark { width: 40px; height: 40px; border: 2px solid var(--orange); border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 23px; font-weight: 700; letter-spacing: -4px; } .gravity-mark span { color: var(--orange); } .gravity-links { display: flex; align-items: center; gap: 34px; } .gravity-links a { font-size: 12px; font-weight: 600; color: #c6c6ca; transition: .2s; } .gravity-links a:hover { color: var(--orange); } .nav-cta { padding: 14px 20px; border: 1px solid #ffffff40; border-radius: 4px; font-size: 11px; font-weight: 800; letter-spacing: 1px; } .nav-cta span { margin-left: 20px; color: var(--orange); } .mobile-menu { display: none; width: 42px; height: 42px; border: 0; background: transparent; } .mobile-menu span { display: block; width: 24px; height: 2px; background: white; margin: 6px auto; } /* HERO */ .gravity-hero { min-height: 830px; height: calc(100vh - 86px); position: relative; background: #14161b; overflow: hidden; } .hero-photo { position: absolute; inset: 0; background-image: url('https://images.unsplash.com/photo-1610945265064-0e34e5519bbf?w=2000&q=90'); background-position: center center; background-size: cover; transform: scale(1.04); } .hero-shade { position: absolute; inset: 0; background: linear-gradient(90deg, #050609ef 0%, #050609b0 42%, #05060930 100%), linear-gradient(0deg, #050609e8 0%, transparent 45%); } .hero-content { position: absolute; inset: 0; z-index: 2; display: flex; flex-direction: column; justify-content: center; padding: 8% 7%; } .hero-eyebrow, .eyebrow { font-size: 11px; font-weight: 700; letter-spacing: 3px; } .hero-eyebrow { display: flex; align-items: center; gap: 12px; } .orange-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--orange); box-shadow: 0 0 15px var(--orange); } .gravity-hero h1 { font-size: clamp(90px, 12vw, 210px); line-height: .85; margin: 40px 0 45px; font-weight: 700; } .gravity-hero h1 span { color: transparent; -webkit-text-stroke: 2px #ffffff; } .hero-divider { width: 100%; height: 1px; background: #ffffff50; } .hero-bottom { display: flex; justify-content: space-between; align-items: end; gap: 30px; margin-top: 35px; } .hero-bottom h2 { font-size: 31px; margin: 0 0 15px; letter-spacing: -1px; } .hero-bottom p { color: #c4c5c7; line-height: 1.9; font-size: 14px; } .hero-explore { display: flex; align-items: center; gap: 25px; font-size: 11px; font-weight: 800; letter-spacing: 1px; white-space: nowrap; } .explore-circle { width: 55px; height: 55px; border: 1px solid #ffffff80; border-radius: 50%; display: grid; place-items: center; font-size: 25px; } .hero-vertical { position: absolute; z-index: 3; right: 25px; top: 35%; writing-mode: vertical-rl; font-size: 10px; letter-spacing: 3px; color: #ffffff90; } /* INTRO */ .gravity-intro { padding: 140px 8%; background: var(--black); } .section-index { color: var(--orange); font-size: 11px; letter-spacing: 3px; font-weight: 700; } .intro-heading { margin-top: 60px; } .intro-heading h2 { font-size: clamp(65px, 8vw, 135px); line-height: 1; margin: 25px 0; } .intro-description { display: flex; align-items: end; justify-content: space-between; gap: 50px; margin-top: 70px; padding-top: 40px; border-top: 1px solid #ffffff25; } .intro-description p { max-width: 620px; font-size: 19px; line-height: 1.9; color: #a8a9ae; } .intro-symbol { font-size: 100px; color: var(--orange); } /* FULL BLEED IMAGES */ .full-image-section { min-height: 800px; position: relative; overflow: hidden; } .design-image { position: absolute; inset: 0; background-image: url('https://images.unsplash.com/photo-1592750475338-74b7b21085ab?w=2000&q=90'); background-position: center; background-size: cover; filter: saturate(.75); } .image-darken { position: absolute; inset: 0; background: linear-gradient(90deg, #070809dc, #07080935); } .image-content { position: relative; z-index: 2; padding: 190px 8%; } .image-content h2 { font-size: clamp(70px, 8vw, 130px); line-height: 1; margin: 35px 0; } .image-content p { max-width: 430px; font-size: 15px; line-height: 1.9; color: #d4d4d6; } .image-bottom-label { position: absolute; bottom: 35px; left: 8%; right: 8%; display: flex; justify-content: space-between; font-size: 10px; letter-spacing: 2px; } /* COLORS */ .gravity-colors { padding: 150px 8% 100px; background: #121319; } .colors-header { display: flex; justify-content: space-between; align-items: end; gap: 40px; } .colors-header h2 { font-size: clamp(60px, 7vw, 110px); line-height: 1; margin: 25px 0 0; } .colors-header > p { color: #aaaab3; line-height: 1.9; } .color-stage { height: 680px; margin-top: 80px; position: relative; overflow: hidden; display: grid; place-items: center; background: radial-gradient(ellipse at center, #343341 0%, #171820 40%, #0d0e12 75%); border: 1px solid #ffffff15; } .stage-glow { position: absolute; width: 570px; height: 570px; border: 1px solid #ffffff15; border-radius: 50%; box-shadow: 0 0 0 90px #ffffff05, 0 0 0 180px #ffffff03; } .gravity-phone-render { position: relative; width: 270px; height: 550px; border: 8px solid #3b3e43; border-radius: 43px; background: linear-gradient(135deg, #595d65, #1b1d23 60%, #484b52); box-shadow: 40px 50px 80px #0009; transform: rotate(-13deg); transition: background .4s, transform .4s; } .gravity-phone-render:hover { transform: rotate(-8deg) translateY(-12px); } .phone-top-glow { position: absolute; inset: 0; border-radius: 35px; background: linear-gradient(110deg, #ffffff22, transparent 40%); } .gravity-camera-block { position: absolute; top: 26px; left: 24px; width: 148px; height: 166px; border-radius: 29px; background: #17191f; border: 2px solid #646771; padding: 12px; display: grid; grid-template-columns: 1fr 1fr; gap: 7px; } .lens { width: 54px; height: 54px; border-radius: 50%; border: 6px solid #686d79; background: radial-gradient(circle at 35% 35%, #55748d, #080b12 45%, #191d28 70%); box-shadow: inset 0 0 8px #000; } .camera-flash { width: 20px; height: 20px; border-radius: 50%; background: #fff1b8; align-self: center; justify-self: center; } .gravity-camera-block > span { position: absolute; bottom: 8px; left: 15px; font-size: 7px; letter-spacing: 1px; color: #a8aab0; } .render-logo { position: absolute; bottom: 75px; width: 100%; text-align: center; font-size: 23px; font-weight: 800; letter-spacing: 6px; color: #ffffff90; } .render-model { position: absolute; bottom: 45px; width: 100%; text-align: center; font-size: 9px; letter-spacing: 3px; color: #ffffff60; } .stage-side-text { position: absolute; right: 30px; bottom: 30px; font-size: 10px; letter-spacing: 3px; color: #777985; } .color-controls { display: flex; justify-content: space-between; align-items: center; padding: 35px 0; gap: 25px; } .selected-finish span { display: block; font-size: 10px; letter-spacing: 2px; color: #858691; } .selected-finish strong { display: block; margin-top: 10px; font-size: 22px; } .color-swatches { display: flex; gap: 16px; } .gravity-swatch { width: 44px; height: 44px; border: 3px solid #303139; border-radius: 50%; background: var(--swatch); transition: .2s; } .gravity-swatch.active { border-color: var(--orange); transform: scale(1.12); } /* CAMERA */ .gravity-camera { padding: 150px 0 100px; background: #08090b; } .camera-intro { padding: 0 8% 90px; } .camera-intro h2 { font-size: clamp(90px, 12vw, 200px); line-height: .85; margin: 40px 0; } .camera-intro h2 span { color: transparent; -webkit-text-stroke: 2px white; } .camera-intro p { max-width: 550px; color: #a5a6ad; font-size: 17px; line-height: 1.9; } .camera-full-photo { position: relative; height: 800px; overflow: hidden; } .camera-photo-bg { position: absolute; inset: 0; background-image: url('https://images.unsplash.com/photo-1470770841072-f978cf4d019e?w=2000&q=90'); background-size: cover; background-position: center; } .camera-photo-shade { position: absolute; inset: 0; background: linear-gradient(0deg, #000b, transparent 65%); } .camera-photo-copy { position: absolute; bottom: 90px; left: 8%; } .camera-photo-copy > span { font-size: 11px; letter-spacing: 3px; } .camera-photo-copy h3 { font-size: clamp(55px, 7vw, 110px); line-height: 1; margin: 25px 0; } .camera-photo-index { position: absolute; right: 8%; bottom: 35px; font-size: 10px; letter-spacing: 2px; } .camera-numbers { display: grid; grid-template-columns: repeat(4, 1fr); gap: 25px; padding: 100px 8%; } .camera-numbers strong { font-size: clamp(55px, 6vw, 100px); font-family: 'Space Grotesk', sans-serif; letter-spacing: -6px; } .camera-numbers strong span { font-size: .35em; letter-spacing: 0; color: var(--orange); } .camera-numbers p { font-size: 10px; letter-spacing: 2px; color: #92939c; } .camera-modes { padding: 60px 8%; } .mode-heading h3 { font-size: clamp(45px, 5vw, 85px); line-height: 1.1; margin: 25px 0 45px; } .mode-buttons { display: flex; gap: 10px; margin-bottom: 25px; } .mode-btn { padding: 15px 25px; border: 1px solid #ffffff30; border-radius: 4px; background: transparent; color: white; font-size: 11px; font-weight: 700; letter-spacing: 1px; } .mode-btn.active { background: var(--orange); border-color: var(--orange); color: #111; } .mode-showcase { height: 620px; position: relative; overflow: hidden; background: #202027; } .mode-showcase img { transition: opacity .3s; } .mode-overlay { position: absolute; bottom: 0; left: 0; right: 0; padding: 90px 50px 45px; background: linear-gradient(0deg, #000d, transparent); } .mode-overlay span { font-size: 11px; letter-spacing: 2px; color: var(--orange); } .mode-overlay h4 { font-size: clamp(30px, 4vw, 60px); margin: 15px 0; } .mode-overlay p { max-width: 480px; color: #ddd; line-height: 1.8; } .photo-disclaimer { padding: 20px 8%; color: #747680; font-size: 11px; } /* PERFORMANCE */ .gravity-performance { min-height: 850px; position: relative; display: flex; align-items: center; overflow: hidden; } .performance-background { position: absolute; inset: 0; background-image: url('https://images.unsplash.com/photo-1518770660439-4636190af475?w=2000&q=90'); background-size: cover; background-position: center; } .performance-shade { position: absolute; inset: 0; background: linear-gradient(90deg, #050609f5, #05060970); } .performance-content { position: relative; z-index: 2; padding: 120px 8%; width: 100%; } .performance-content h2 { font-size: clamp(85px, 11vw, 180px); line-height: .9; margin: 40px 0; } .performance-content > p { max-width: 520px; font-size: 17px; line-height: 1.9; color: #c3c3ca; } .performance-features { display: flex; gap: 65px; flex-wrap: wrap; margin-top: 80px; } .performance-features strong { display: block; font-size: 60px; font-family: 'Space Grotesk', sans-serif; } .performance-features span { display: block; margin-top: 12px; font-size: 10px; letter-spacing: 2px; color: #a5a6af; } /* BROWSING */ .gravity-browsing { display: grid; grid-template-columns: 1fr 1fr; min-height: 800px; background: #15161b; } .browsing-copy { padding: 150px 12%; display: flex; flex-direction: column; justify-content: center; } .browsing-copy h2 { font-size: clamp(55px, 6vw, 105px); line-height: 1.05; margin: 35px 0; } .browsing-copy > p { max-width: 450px; color: #a5a6ae; line-height: 1.9; } .browsing-stats { display: flex; gap: 50px; margin-top: 65px; } .browsing-stats strong { display: block; font-size: 40px; } .browsing-stats span { display: block; margin-top: 12px; font-size: 10px; letter-spacing: 1.5px; color: #888a94; } .browsing-image { position: relative; min-height: 700px; overflow: hidden; } .browsing-image-caption { position: absolute; bottom: 35px; left: 35px; font-size: 11px; letter-spacing: 2px; } /* ANDROID */ .gravity-android { padding: 150px 5%; background: #0c0d10; } .android-heading { padding: 0 3% 90px; } .android-heading h2 { font-size: clamp(85px, 11vw, 180px); line-height: .9; margin: 40px 0; } .android-heading p { max-width: 520px; color: #a7a8ae; font-size: 17px; line-height: 1.9; } .android-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 18px; } .android-feature { min-height: 610px; position: relative; padding: 50px; overflow: hidden; background: #1b1c23; } .feature-background { position: absolute; inset: 0; background-size: cover; background-position: center; } .ai-background { background: radial-gradient(circle at 70% 70%, #6653a5, transparent 45%), radial-gradient(circle at 30% 20%, #333e78, transparent 50%), #191a2d; } .display-background { background-image: linear-gradient(0deg, #000d, transparent 75%), url('https://images.unsplash.com/photo-1610945265064-0e34e5519bbf?w=1200&q=85'); } .feature-content { position: relative; z-index: 2; } .feature-content > span { font-size: 10px; letter-spacing: 2px; color: var(--orange); } .feature-content h3 { font-size: clamp(40px, 4vw, 65px); line-height: 1.05; margin: 25px 0; } .feature-content p { max-width: 350px; color: #b0b1bb; line-height: 1.8; font-size: 14px; } .ai-orb { position: absolute; right: 12%; bottom: 3%; font-size: 230px; color: #b8a4ff; text-shadow: 0 0 80px #9c83ff; animation: orbFloat 5s ease-in-out infinite; } @keyframes orbFloat { 50% { transform: translateY(-25px) rotate(20deg); } } .feature-security { background: #20252a; } .security-art { position: absolute; right: 10%; bottom: 0; font-size: 350px; color: #ffffff15; line-height: 1; } .feature-battery { background: #272018; } .battery-art { position: absolute; left: 50%; bottom: 80px; transform: translateX(-50%); width: 280px; height: 140px; border: 12px solid #e9e4da; border-radius: 25px; display: grid; place-items: center; } .battery-art::after { content: ""; position: absolute; right: -28px; width: 15px; height: 50px; background: #e9e4da; border-radius: 0 8px 8px 0; } .battery-energy { position: absolute; inset: 8px; background: var(--orange); border-radius: 10px; } .battery-art strong { position: relative; z-index: 2; font-size: 38px; color: #111; } /* SPECS */ .gravity-specs { padding: 150px 8%; background: #15161b; } .specs-heading h2 { font-size: clamp(65px, 8vw, 130px); line-height: .95; margin: 30px 0 90px; } .spec-row { display: grid; grid-template-columns: 1fr 1fr; gap: 30px; align-items: center; padding: 32px 0; border-bottom: 1px solid #ffffff20; } .spec-row span { font-size: 11px; letter-spacing: 2px; color: #888a95; } .spec-row strong { font-size: clamp(17px, 2vw, 28px); font-weight: 500; } /* FINALE */ .gravity-finale { position: relative; min-height: 850px; display: flex; align-items: center; overflow: hidden; } .finale-image { position: absolute; inset: 0; background-image: url('https://images.unsplash.com/photo-1610945265064-0e34e5519bbf?w=2000&q=90'); background-size: cover; background-position: center; } .finale-shade { position: absolute; inset: 0; background: linear-gradient(90deg, #050609ed, #05060945); } .finale-content { position: relative; z-index: 2; padding: 100px 8%; } .finale-content h2 { font-size: clamp(85px, 12vw, 190px); line-height: .9; margin: 35px 0; } .finale-content p { color: #c4c4ca; line-height: 1.9; } .finale-button { display: inline-flex; gap: 50px; align-items: center; padding: 20px 27px; margin-top: 35px; background: var(--orange); color: #111; font-size: 12px; font-weight: 800; letter-spacing: 1px; } /* FOOTER */ .gravity-footer { padding: 55px 5%; display: flex; justify-content: space-between; align-items: center; gap: 25px; background: #050506; } .footer-logo { font-size: 34px; font-weight: 800; letter-spacing: -2px; } .footer-logo span { color: var(--orange); } .footer-center, .footer-right { font-size: 10px; letter-spacing: 2px; color: #888a91; } /* REVEALS */ .reveal { opacity: 0; transform: translateY(45px); transition: opacity .9s ease, transform .9s ease; } .reveal.visible { opacity: 1; transform: translateY(0); } /* RESPONSIVE */ @media (max-width: 1100px) { .gravity-links { gap: 18px; } .gravity-hero h1 { font-size: 110px; } .gravity-phone-render { transform: rotate(-10deg) scale(.9); } } @media (max-width: 850px) { .gravity-links { display: none; position: absolute; top: 86px; left: 0; right: 0; background: #101115; padding: 30px; flex-direction: column; align-items: flex-start; } .gravity-links.open { display: flex; } .mobile-menu { display: block; } .nav-cta { margin-left: auto; margin-right: 20px; } .gravity-hero { min-height: 720px; } .gravity-hero h1 { font-size: 90px; } .colors-header, .intro-description { flex-direction: column; align-items: flex-start; } .gravity-browsing { grid-template-columns: 1fr; } .browsing-copy { padding: 100px 8%; } .browsing-image { min-height: 550px; } .android-feature { padding: 30px; } } @media (max-width: 650px) { .gravity-nav { height: 75px; } .gravity-logo { font-size: 15px; } .nav-cta { display: none; } .gravity-hero { min-height: 680px; height: auto; } .hero-content { padding: 100px 6% 65px; position: relative; } .gravity-hero h1 { font-size: clamp(55px, 13vw, 85px); } .hero-bottom { flex-direction: column; align-items: flex-start; } .hero-vertical { display: none; } .gravity-intro, .gravity-colors, .gravity-specs { padding: 90px 6%; } .intro-heading h2, .colors-header h2, .image-content h2, .specs-heading h2 { font-size: 55px; } .full-image-section { min-height: 650px; } .image-content { padding: 130px 6%; } .color-stage { height: 550px; } .gravity-phone-render { transform: rotate(-10deg) scale(.75); } .color-controls { flex-direction: column; align-items: flex-start; } .gravity-camera { padding-top: 90px; } .camera-intro { padding: 0 6% 60px; } .camera-intro h2, .performance-content h2, .android-heading h2, .finale-content h2 { font-size: clamp(65px, 14vw, 100px); } .camera-full-photo { height: 600px; } .camera-photo-copy { left: 6%; bottom: 80px; } .camera-photo-copy h3 { font-size: 55px; } .camera-numbers { grid-template-columns: repeat(2, 1fr); padding: 65px 6%; } .camera-modes { padding: 40px 6%; } .mode-buttons { flex-wrap: wrap; } .mode-btn { padding: 13px 16px; } .mode-showcase { height: 500px; } .mode-overlay { padding: 60px 25px 25px; } .gravity-performance { min-height: 750px; } .performance-content { padding: 100px 6%; } .performance-features { gap: 30px; } .performance-features strong { font-size: 43px; } .browsing-copy h2 { font-size: 55px; } .gravity-android { padding: 90px 6%; } .android-heading { padding: 0 0 60px; } .android-grid { grid-template-columns: 1fr; } .android-feature { min-height: 520px; } .spec-row { grid-template-columns: 1fr; gap: 12px; } .gravity-finale { min-height: 750px; } .finale-content { padding: 100px 6%; } .gravity-footer { flex-direction: column; align-items: flex-start; } } @media (prefers-reduced-motion: reduce) { .reveal { opacity: 1; transform: none; } .ai-orb { animation: none; } }
(function () { var root = document.getElementById("gravitySite"); if (!root) return; // MOBILE NAVIGATION var menuButton = document.getElementById("gravityMenu"); var navigation = document.getElementById("gravityLinks"); if (menuButton && navigation) { menuButton.addEventListener("click", function () { var isOpen = navigation.classList.toggle("open"); menuButton.setAttribute( "aria-expanded", isOpen ? "true" : "false" ); }); navigation.querySelectorAll("a").forEach(function (link) { link.addEventListener("click", function () { navigation.classList.remove("open"); menuButton.setAttribute("aria-expanded", "false"); }); }); } // COLOR SELECTOR var finishes = { black: { name: "Obsidian Black", background: "linear-gradient(135deg, #595d65, #1b1d23 60%, #484b52)" }, titanium: { name: "Titanium Silver", background: "linear-gradient(135deg, #d9dbde, #81868d 60%, #c4c7cc)" }, violet: { name: "Cosmic Violet", background: "linear-gradient(135deg, #a99ac6, #51456c 60%, #80739e)" }, orange: { name: "Solar Orange", background: "linear-gradient(135deg, #e8a076, #8b402b 60%, #c8754b)" } }; var swatches = root.querySelectorAll(".gravity-swatch"); var phoneRender = document.getElementById("gravityPhoneRender"); var colorName = document.getElementById("gravityColorName"); swatches.forEach(function (button) { button.addEventListener("click", function () { var finish = button.getAttribute("data-finish"); if (!finishes[finish]) return; swatches.forEach(function (item) { item.classList.remove("active"); }); button.classList.add("active"); phoneRender.style.background = finishes[finish].background; colorName.textContent = finishes[finish].name; }); }); // CAMERA MODES var cameraModes = { portrait: { image: "https://images.unsplash.com/photo-1534528741775-53994a69daeb?w=1400&q=85", label: "PORTRAIT MODE", title: "Every face tells a story.", description: "Beautiful depth, natural skin tones, and professional-looking portraits." }, night: { image: "https://images.unsplash.com/photo-1519681393784-d120267933ba?w=1400&q=85", label: "NIGHT PHOTOGRAPHY", title: "Own the darkness.", description: "Capture beautiful detail, atmosphere, and color after sunset." }, landscape: { image: "https://images.unsplash.com/photo-1470770841072-f978cf4d019e?w=1400&q=85", label: "ULTRA-WIDE CAMERA", title: "See the bigger picture.", description: "Expansive landscapes and breathtaking scenes with remarkable clarity." } }; var modeButtons = root.querySelectorAll(".mode-btn"); var modeImage = document.getElementById("cameraModeImage"); var modeLabel = document.getElementById("cameraModeLabel"); var modeTitle = document.getElementById("cameraModeTitle"); var modeDescription = document.getElementById("cameraModeDescription"); modeButtons.forEach(function (button) { button.addEventListener("click", function () { var mode = button.getAttribute("data-mode"); var settings = cameraModes[mode]; if (!settings) return; modeButtons.forEach(function (item) { item.classList.remove("active"); }); button.classList.add("active"); modeImage.src = settings.image; modeLabel.textContent = settings.label; modeTitle.textContent = settings.title; modeDescription.textContent = settings.description; }); }); // SCROLL REVEALS var revealElements = root.querySelectorAll(".reveal"); if ( "IntersectionObserver" in window && !window.matchMedia("(prefers-reduced-motion: reduce)").matches ) { var observer = new IntersectionObserver(function (entries) { entries.forEach(function (entry) { if (entry.isIntersecting) { entry.target.classList.add("visible"); observer.unobserve(entry.target); } }); }, { threshold: 0.08 }); revealElements.forEach(function (element) { observer.observe(element); }); } else { revealElements.forEach(function (element) { element.classList.add("visible"); }); } // SMOOTH NAVIGATION root.querySelectorAll('a[href^="#"]').forEach(function (link) { link.addEventListener("click", function (event) { var selector = link.getAttribute("href"); if (!selector || selector === "#") return; var target = root.querySelector(selector); if (!target) return; event.preventDefault(); target.scrollIntoView({ behavior: "smooth", block: "start" }); }); }); })();
terminal
JavaScript Console
Preview
Clear
close
›
Run