diff --git a/README.md b/README.md index 8e10e02..3083560 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,12 @@ -# TrekMap pre-order page +# TrekMap marketing site -Hand-written static site. Created, committed and deployed entirely through the Corben API — no dashboard, no git CLI. +Hand-written static site — single self-contained `index.html`, no build step and no +external requests. + +The hero is an LED dot matrix: the real Natural Earth country geometry from +`trekmap-web/public/data/countries.geo.json`, rasterised to a 150x66 grid so each +land cell is one addressable "LED", mirroring the physical product. Bright cells +are visited, dim cells are wishlist, and the cursor lights nearby cells like a +hand passing over the wall map. + +Created, committed and deployed entirely through the Corben API. diff --git a/index.html b/index.html index d77b893..e413226 100644 --- a/index.html +++ b/index.html @@ -1,44 +1,446 @@ - - -TrekMap — Reserve your map + + + + +TrekMap — Wish It. Time It. Make It Happen. + + + +
- Pre-order · first production run -

Hang your travels on the wall.

-

TrekMap is a travel bucket list that lives on a world map — and an LED map that - glows with everywhere you’ve been and everywhere you’re going. Reserve a unit and lock the launch price.

-
-

TrekMap Mini

$99
Desktop frame · US, CA, MX
-

TrekMap

$199
Wall map · one LED per region
-

TrekGlobe

$399
Walnut base · brass meridian
+ :root{ + --midnight:#001F3F; --nightsky:#0B192C; --deep:#00162e; + --gold:#E6B800; --gold-soft:#f0cf4d; --mahogany:#6F4E37; --jungle:#1B4332; + --ink:#F4F1EA; --muted:#8FA3B8; --line:rgba(230,184,0,.16); + --max:1120px; + } + *,*::before,*::after{box-sizing:border-box} + html{scroll-behavior:smooth} + body{ + margin:0; background:var(--midnight); color:var(--ink); + font:16px/1.65 ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif; + -webkit-font-smoothing:antialiased; overflow-x:hidden; + } + h1,h2,h3{line-height:1.08; letter-spacing:-.025em; margin:0; font-weight:700} + p{margin:0} + a{color:var(--gold); text-decoration:none} + a:focus-visible,button:focus-visible,summary:focus-visible{outline:2px solid var(--gold); outline-offset:3px; border-radius:6px} + .wrap{max-width:var(--max); margin:0 auto; padding:0 24px} + .eyebrow{font-size:.72rem; letter-spacing:.18em; text-transform:uppercase; color:var(--gold); font-weight:700} + .lede{color:var(--muted); font-size:1.08rem; max-width:34em} + + /* ── nav ── */ + header{position:fixed; inset:0 0 auto; z-index:50; backdrop-filter:blur(12px); + background:rgba(0,31,63,.72); border-bottom:1px solid rgba(255,255,255,.06)} + nav{display:flex; align-items:center; gap:28px; max-width:var(--max); margin:0 auto; padding:14px 24px} + .brand{display:flex; align-items:center; gap:10px; font-weight:800; letter-spacing:-.02em; font-size:1.05rem} + .brand i{width:10px; height:10px; border-radius:50%; background:var(--gold); box-shadow:0 0 12px var(--gold); display:block} + nav .links{display:flex; gap:24px; margin-left:auto; font-size:.9rem; color:var(--muted)} + nav .links a:hover{color:var(--ink)} + .btn{display:inline-block; background:var(--gold); color:#00162e; font-weight:700; + padding:11px 20px; border-radius:10px; border:0; cursor:pointer; font-size:.92rem; + transition:transform .15s ease, box-shadow .2s ease} + .btn:hover{transform:translateY(-1px); box-shadow:0 8px 26px rgba(230,184,0,.28)} + .btn.ghost{background:transparent; color:var(--ink); border:1px solid rgba(255,255,255,.18)} + .btn.ghost:hover{border-color:var(--gold); color:var(--gold); box-shadow:none} + + /* ── hero ── */ + .hero{position:relative; min-height:100svh; display:grid; align-items:center; padding:120px 0 80px; isolation:isolate} + #led{position:absolute; inset:0; width:100%; height:100%; z-index:-1; opacity:.95} + .hero::after{content:""; position:absolute; inset:0; z-index:-1; pointer-events:none; + background:radial-gradient(120% 90% at 18% 45%, rgba(0,22,46,.94) 0%, rgba(0,22,46,.72) 38%, transparent 72%)} + .hero-inner{max-width:38rem} + .hero h1{font-size:clamp(2.6rem,6.4vw,4.4rem); margin:18px 0 20px} + .hero h1 em{font-style:normal; color:var(--gold); display:block} + .cta-row{display:flex; gap:12px; flex-wrap:wrap; margin-top:32px} + .hint{margin-top:26px; font-size:.82rem; color:#5f7590; display:flex; align-items:center; gap:8px} + .hint b{color:var(--gold); font-weight:600} + + /* ── sections ── */ + section{padding:104px 0; border-top:1px solid rgba(255,255,255,.05)} + .sec-head{max-width:40rem; margin-bottom:52px} + .sec-head h2{font-size:clamp(1.9rem,4vw,2.7rem); margin:14px 0 14px} + + .steps{display:grid; grid-template-columns:repeat(auto-fit,minmax(250px,1fr)); gap:20px} + .step{background:linear-gradient(180deg,var(--nightsky),rgba(11,25,44,.4)); + border:1px solid var(--line); border-radius:16px; padding:28px; position:relative; overflow:hidden} + .step .n{font-size:.72rem; letter-spacing:.16em; color:var(--mahogany); font-weight:800} + .step h3{font-size:1.22rem; margin:10px 0 10px; color:var(--gold)} + .step p{color:var(--muted); font-size:.95rem} + .step::after{content:""; position:absolute; right:-40px; top:-40px; width:120px; height:120px; + background:radial-gradient(circle,rgba(230,184,0,.14),transparent 68%)} + + /* ── pipeline ── */ + .pipe{display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:12px; margin-top:8px} + .pipe div{background:var(--deep); border:1px solid rgba(255,255,255,.07); border-radius:12px; + padding:18px 16px; font-size:.86rem; color:var(--muted)} + .pipe div b{display:block; color:var(--ink); font-size:.95rem; margin-bottom:4px} + .pipe div span{color:var(--gold); font-size:.7rem; letter-spacing:.14em; font-weight:800} + + /* ── hardware ── */ + .skus{display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:20px; align-items:start} + .sku{background:var(--nightsky); border:1px solid var(--line); border-radius:18px; padding:28px; position:relative} + .sku.featured{border-color:var(--gold); box-shadow:0 0 0 1px var(--gold), 0 24px 60px -30px rgba(230,184,0,.5)} + .sku .tag{position:absolute; top:-11px; left:28px; background:var(--gold); color:#00162e; + font-size:.66rem; font-weight:800; letter-spacing:.12em; padding:4px 10px; border-radius:100px} + .sku h3{font-size:1.3rem} + .sku .price{font-size:2.4rem; font-weight:800; margin:12px 0 2px; letter-spacing:-.03em} + .sku .price small{font-size:.8rem; font-weight:600; color:var(--muted); letter-spacing:0} + .sku p{color:var(--muted); font-size:.92rem; margin:12px 0 18px; min-height:3.2em} + .sku ul{list-style:none; padding:0; margin:0 0 22px; font-size:.88rem; color:#B7C6D6} + .sku li{padding:7px 0 7px 22px; position:relative; border-top:1px solid rgba(255,255,255,.05)} + .sku li::before{content:"◆"; position:absolute; left:0; color:var(--gold); font-size:.62rem; top:9px} + .mini{display:grid; grid-template-columns:repeat(14,1fr); gap:3px; margin-bottom:20px} + .mini i{aspect-ratio:1; border-radius:50%; background:rgba(255,255,255,.07)} + .mini i.on{background:var(--gold); box-shadow:0 0 7px rgba(230,184,0,.85)} + .mini i.dim{background:rgba(230,184,0,.32)} + + /* ── specs ── */ + .specs{display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:1px; background:rgba(255,255,255,.07); + border:1px solid rgba(255,255,255,.07); border-radius:16px; overflow:hidden} + .specs div{background:var(--midnight); padding:26px 22px} + .specs b{display:block; font-size:1.7rem; font-weight:800; color:var(--gold); letter-spacing:-.02em} + .specs span{font-size:.84rem; color:var(--muted)} + + /* ── faq ── */ + details{border-bottom:1px solid rgba(255,255,255,.08); padding:18px 0} + summary{cursor:pointer; font-weight:600; list-style:none; display:flex; justify-content:space-between; gap:16px; align-items:center} + summary::-webkit-details-marker{display:none} + summary::after{content:"+"; color:var(--gold); font-size:1.3rem; line-height:1; flex:none} + details[open] summary::after{content:"–"} + details p{color:var(--muted); font-size:.94rem; margin-top:12px; max-width:52em} + + /* ── final cta ── */ + .final{text-align:center; background: + radial-gradient(80% 120% at 50% 0%, rgba(230,184,0,.1), transparent 62%), var(--deep)} + .final h2{font-size:clamp(2rem,4.6vw,3rem); margin-bottom:16px} + .final .lede{margin:0 auto 30px} + form.reserve{display:flex; gap:10px; justify-content:center; flex-wrap:wrap; max-width:30rem; margin:0 auto} + form.reserve input{flex:1 1 220px; background:var(--nightsky); border:1px solid rgba(255,255,255,.16); + color:var(--ink); padding:13px 16px; border-radius:10px; font-size:.98rem; font-family:inherit} + form.reserve input::placeholder{color:#5f7590} + .said{color:var(--gold); font-weight:600} + + footer{padding:44px 0; border-top:1px solid rgba(255,255,255,.06); color:#5f7590; font-size:.86rem} + .foot{display:flex; gap:18px; flex-wrap:wrap; align-items:center} + .foot .sp{margin-left:auto} + + /* ── reveal ── */ + .rev{opacity:0; transform:translateY(18px); transition:opacity .7s ease, transform .7s ease} + .rev.in{opacity:1; transform:none} + @media (prefers-reduced-motion:reduce){ + .rev{opacity:1; transform:none; transition:none} + html{scroll-behavior:auto} + } + @media (max-width:720px){ + nav .links{display:none} + section{padding:76px 0} + .sku p{min-height:0} + } + + + +
+ +
+ +
+
+ +
+ Pre-order · first production run +

Hang your travels on the wall.

+

TrekMap is a travel bucket list that lives on a world map — and an LED map + that glows with everywhere you’ve been and everywhere you’re going. One list, two places: + your phone and your wall.

+ +

● bright = been there  ·  ● dim = on the list  ·  move your cursor across the map

+
+
+ +
+
+
+ How it works +

Wish it. Time it. Make it happen.

+

Most travel apps are a log of where you’ve been. TrekMap is built around + the part that comes first — wanting to go.

+
+
+
01 / WISH IT

Save it in one tap

+

Share an Instagram or TikTok reel straight from your phone. TrekMap watches the video, + reads the signs and the audio, works out the actual place, and files it with a cover photo.

+
02 / TIME IT

See it build up

+

Countries glow by how badly you want to go. Explorer Mode splits 57 countries into + states, prefectures and nations, so progress is honest instead of a flag count.

+
03 / MAKE IT HAPPEN

Go, and light it up

+

Flight-price thresholds nudge you when it’s time to book. Log the trip and the + country turns bright — in the app, and on the map on your wall.

+
+
+
+ +
+
+
+ The part nobody else does +

Share a reel. Get a pin.

+

A 20-second clip of a restaurant with no caption and no tag still becomes a + real, mapped, searchable place.

+
+
+
01DownloadPulls the video and audio from the share sheet.
+
02Scene detectSplits it into frames worth reading.
+
03Read itVision model reads signage; Whisper reads the voiceover.
+
04DecidePicks the actual venue, drops "a city over a close-up".
+
05EnrichCaptions, embeds and geocodes it, then finds a cover photo.
+
+

Every saved spot is embedded as a vector, so you can + search your own list by vibe — “quiet places near water” — not just by name.

+
+
+ +
+
+
+ The hardware line +

Your list, in the room with you.

+

Individually addressable LEDs, one per country or region, synced live from the + same account. Wishlist glows dim; visited burns bright.

+
+
+
+ +

TrekMap Mini

+
$99 pre-order
+

Picture-frame sized. Sits on a desk or a workbench and still shows the whole picture.

+
  • Continental US, Canada, Mexico
  • One LED per state or region
  • WiFi or USB sync
+ Reserve — $99 +
+ +
+ +

TrekGlobe

+
$399 pre-order
+

A full world globe on a walnut base with a brass meridian ring. Every country addressable.

+
  • Per-country LEDs, whole planet
  • Walnut base, brass meridian
  • Librarian’s Midnight glass
+ Reserve — $399 +
+
+

None of the three have shipped yet. Reserving costs + nothing today and holds your place in the first run at the launch price.

+
+
+ +
+
+
+
57Countries split to region level
+
3Hardware form factors
+
ESP32-S3Firmware on every unit
+
ZeroPaid map APIs — OpenStreetMap only
+
+
+
+ +
+
+
Questions

Straight answers.

+
+
Is the hardware shipping? +

Not yet — all three units are pre-launch. Reserving puts you in the first production + run at the launch price, and you’re not charged until it ships.

+
Does the app work without buying hardware? +

Yes. The app at trekmap.co is the product; the LED map is a physical view of the same + data. Plenty of people will only ever use the app.

+
Who can see my travel list? +

Only you, and friends you accept. Boards are private by default. You can publish an + individual spot to a public feed if you want to share one — notes, reminders and price + thresholds never leave your account.

+
What if a reel is ambiguous? +

It gets dropped rather than guessed. A city-wide pin attached to a close-up of a plate + isn’t useful, so the pipeline throws those away instead of cluttering your map.

+
How does the map know what I’ve visited? +

Your passport is a separate list from your wishes, so marking somewhere visited doesn’t + create an empty wish or change the glow. The hardware polls the same account and lights up to match.

+
+
+
+ +
+
+ Pre-order +

Get in the first run.

+

Leave an email. We’ll tell you the moment the run opens — no charge, + no newsletter, no other use for the address.

+
+ + +
+

+ Or just email hello.trekmap@corben.world

+
+
+
+ +
+
+ TrekMap + A travel bucket list you can hang on the wall. + trekmap.co
-

Reserve yours

-

No charge today — we email you when the run opens.

-
- -
- -
\ No newline at end of file + + + + +