canvas { display: block; width: 100%; height: 100%; touch-action: none; } /* HUD */ .hud { position: absolute; inset: 0; pointer-events: none; } .topbar { display: flex; justify-content: space-between; align-items: flex-start; padding: 14px 12px; gap: 10px; } .chip { pointer-events: none; background: rgba(8, 10, 24, .55); border: 1px solid rgba(88, 240, 255, .35); color: var(--text); padding: 10px 12px; border-radius: 14px; backdrop-filter: blur(8px); box-shadow: inset 0 0 0 1px rgba(177, 108, 255, .15), 0 10px 30px rgba(0, 0, 0, .25); } .chip .label { opacity: .75; font-size: 11px; letter-spacing: .12em; } .chip .value { font-weight: 900; font-size: 16px; margin-top: 2px; display: flex; align-items: center; gap: 8px; } .chip .value .small { font-size: 12px; opacity: .8; font-weight: 800; } .chipRight { margin-left: auto; } .centerToast { position: absolute; left: 50%; top: 16%; transform: translateX(-50%) translateY(-6px); font-weight: 950; letter-spacing: .12em; text-transform: uppercase; text-shadow: 0 6px 24px rgba(0, 0, 0, .55); font-size: 32px; opacity: 0; transition: opacity .18s ease, transform .18s ease; } .centerToast.show { opacity: 1; transform: translateX(-50%) translateY(0); } .centerToast.perfect { color: #ffefb0; } .centerToast.failed { color: #ff5577; } .centerToast.combo { color: #ffd86b; } .cornerBar { position: absolute; left: 12px; right: 12px; bottom: 12px; display: flex; gap: 10px; pointer-events: auto; } .navBtn { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; padding: 10px 10px; border-radius: 14px; background: rgba(8, 10, 24, .45); border: 1px solid rgba(255, 255, 255, .10); color: rgba(234, 246, 255, .9); font-weight: 900; letter-spacing: .08em; text-transform: uppercase; font-size: 12px; backdrop-filter: blur(8px); cursor: pointer; box-shadow: inset 0 0 0 1px rgba(177, 108, 255, .12), 0 10px 30px rgba(0, 0, 0, .18); } .navBtn.active { border-color: rgba(88, 240, 255, .45); box-shadow: inset 0 0 0 1px rgba(88, 240, 255, .20), 0 10px 30px rgba(0, 0, 0, .18); } .navBtn .ico { font-size: 16px; opacity: .9 } .badge { display: inline-flex; align-items: center; justify-content: center; min-width: 18px; height: 18px; padding: 0 6px; border-radius: 999px; font-size: 11px; font-weight: 950; letter-spacing: .06em; background: rgba(255, 216, 107, .22); border: 1px solid rgba(255, 216, 107, .35); margin-left: 6px; } .pill { display: inline-flex; align-items: center; gap: 8px; padding: 8px 12px; border-radius: 999px; border: 1px solid rgba(177, 108, 255, .35); background: rgba(16, 10, 40, .55); margin: 10px auto 0; width: fit-content; } .kbd { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 12px; padding: 2px 7px; background: rgba(255, 255, 255, .10); border-radius: 8px; border: 1px solid rgba(255, 255, 255, .12); } /* Panels */ .panel { position: absolute; inset: 0; display: none; place-items: center; padding: 16px; background: rgba(0, 0, 0, .35); backdrop-filter: blur(4px); pointer-events: auto; } .panel.show { display: grid; } .card { width: min(460px, 94%); background: var(--panel); border: 1px solid rgba(88, 240, 255, .25); border-radius: 18px; padding: 18px 16px; box-shadow: 0 18px 60px rgba(0, 0, 0, .55), inset 0 0 0 1px rgba(177, 108, 255, .18); } .card h1 { margin: 0 0 10px; font-size: 34px; letter-spacing: .1em; text-align: center; } .sub { opacity: .82; text-align: center; margin: 0 0 14px; line-height: 1.6; } .row { display: flex; align-items: center; justify-content: space-between; gap: 10px; } .divider { height: 1px; background: rgba(255, 255, 255, .10); margin: 12px 0; } .btns { display: grid; gap: 10px; } button { appearance: none; border: 0; border-radius: 14px; padding: 14px 14px; font-size: 15px; font-weight: 950; letter-spacing: .08em; cursor: pointer; } .btnPrimary { background: linear-gradient(180deg, rgba(88, 240, 255, .9), rgba(64, 255, 144, .85)); color: #071018; box-shadow: 0 10px 30px rgba(64, 255, 144, .22); } .btnWarn { background: linear-gradient(180deg, rgba(255, 216, 107, .95), rgba(255, 160, 80, .9)); color: #2a1400; } .btnGhost { background: rgba(255, 255, 255, .08); color: var(--text); border: 1px solid rgba(255, 255, 255, .12); } .btnDanger { background: rgba(255, 77, 109, .14); color: rgba(255, 220, 230, .95); border: 1px solid rgba(255, 77, 109, .25); } .tiny { opacity: .72; font-size: 12px; text-align: center; margin-top: 10px; } .menuTitle { font-size: 42px; text-align: center; margin: 0 0 6px; letter-spacing: .06em; } .tabs { display: flex; gap: 10px; background: rgba(255, 255, 255, .06); border: 1px solid rgba(255, 255, 255, .10); padding: 6px; border-radius: 14px; margin-bottom: 12px; } .tab { flex: 1; padding: 10px 10px; border-radius: 12px; background: transparent; color: rgba(234, 246, 255, .75); border: 1px solid transparent; font-weight: 950; } .tab.active { background: rgba(88, 240, 255, .12); border-color: rgba(88, 240, 255, .22); color: rgba(234, 246, 255, .95); } .grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; } .item { background: rgba(8, 10, 24, .45); border: 1px solid rgba(88, 240, 255, .20); border-radius: 16px; padding: 12px; box-shadow: inset 0 0 0 1px rgba(177, 108, 255, .10); } .item h3 { margin: 0 0 6px; font-size: 14px; letter-spacing: .06em; } .item .thumb { height: 72px; border-radius: 12px; background: linear-gradient(135deg, rgba(88, 240, 255, .18), rgba(177, 108, 255, .14)); border: 1px solid rgba(255, 255, 255, .10); margin-bottom: 10px; display: grid; place-items: center; font-weight: 950; color: rgba(234, 246, 255, .85); } .priceBtn { width: 100%; padding: 12px 12px; border-radius: 12px; background: rgba(177, 108, 255, .18); border: 1px solid rgba(177, 108, 255, .28); color: rgba(234, 246, 255, .95); font-weight: 950; } .priceBtn.buy { background: rgba(255, 216, 107, .18); border-color: rgba(255, 216, 107, .30); } .priceBtn.owned { background: rgba(64, 255, 144, .14); border-color: rgba(64, 255, 144, .22); opacity: .9; cursor: default; } .muted { opacity: .72 } .switchRow { display: flex; align-items: center; justify-content: space-between; padding: 12px 12px; border-radius: 14px; border: 1px solid rgba(255, 255, 255, .10); background: rgba(255, 255, 255, .06); margin-bottom: 10px; } .switchRow b { letter-spacing: .08em; } .switch { width: 46px; height: 28px; border-radius: 999px; border: 1px solid rgba(88, 240, 255, .22); background: rgba(8, 10, 24, .45); position: relative; cursor: pointer; } .knob { position: absolute; top: 3px; left: 3px; width: 22px; height: 22px; border-radius: 50%; background: rgba(234, 246, 255, .92); box-shadow: 0 8px 18px rgba(0, 0, 0, .35); } .switch.on { background: rgba(88, 240, 255, .18); border-color: rgba(88, 240, 255, .38); } .switch.on .knob { left: 21px; background: rgba(88, 240, 255, .95); } input[type="range"] { width: 100%; } .list { display: grid; gap: 10px; max-height: 420px; overflow: auto; padding-right: 4px; } .rankRow { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 12px 12px; border-radius: 14px; border: 1px solid rgba(255, 255, 255, .10); background: rgba(255, 255, 255, .06); } .rankRow .left { display: flex; align-items: center; gap: 10px; } .trophy { width: 28px; height: 28px; border-radius: 10px; display: grid; place-items: center; font-weight: 950; } .t1 { background: rgba(255, 216, 107, .20); border: 1px solid rgba(255, 216, 107, .32); } .t2 { background: rgba(230, 240, 255, .14); border: 1px solid rgba(230, 240, 255, .22); } .t3 { background: rgba(255, 160, 80, .16); border: 1px solid rgba(255, 160, 80, .24); } .you { outline: 2px solid rgba(88, 240, 255, .28); background: rgba(88, 240, 255, .10); } .dailyGrid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; } .dailyCell { padding: 10px; border-radius: 14px; border: 1px solid rgba(255, 255, 255, .10); background: rgba(255, 255, 255, .06); display: grid; place-items: center; gap: 6px; min-height: 84px; text-align: center; position: relative; } .dailyCell.done { border-color: rgba(64, 255, 144, .22); background: rgba(64, 255, 144, .08); } .dailyCell.locked { opacity: .55 } .dailyCell .day { font-size: 12px; opacity: .8; letter-spacing: .08em; } .dailyCell .reward { font-weight: 950; } .dailyCell .check { position: absolute; top: 8px; right: 8px; font-weight: 950; color: rgba(64, 255, 144, .95); } .footerActions { display: flex; gap: 10px; margin-top: 12px; } .footerActions button { flex: 1; }
SCORE
0
COMBO
x1
GEMS
0 โ—†
PERFECT
LEVEL
1
SKIN
CHICK

TUTORIAL

1) ํ™”๋ฉด์„ ๊ธธ๊ฒŒ ๋ˆŒ๋Ÿฌ ๋‹ค๋ฆฌ๋ฅผ ๋Š˜๋ฆฌ์„ธ์š”.
2) ์†์„ ๋–ผ๋ฉด ๋‹ค๋ฆฌ๊ฐ€ ๋–จ์–ด์ง‘๋‹ˆ๋‹ค.
3) ๋‹ค์Œ ๋ฐœํŒ์˜ ์ค‘์•™(Perfect)์— ๋งž์ถ”๋ฉด ์ฝค๋ณด๊ฐ€ ์˜ฌ๋ผ๊ฐ‘๋‹ˆ๋‹ค.

FAILED

SCORE:
0
Continue: ๋ฌด๋ฃŒ 1ํšŒ, ์ดํ›„ 30 Gems ์†Œ๋ชจ

MILESTONE REACHED!

LEVEL
10
GEMS EARNED
+50 โ—†
Share๋Š” ๋ฐ๋ชจ(ํด๋ฆฝ๋ณด๋“œ ๋ณต์‚ฌ)๋กœ ์ฒ˜๋ฆฌ

CHARACTERS

์ ์ˆ˜/์ดˆ๋Œ€ ์กฐ๊ฑด์œผ๋กœ ์ž ๊ธˆ ํ•ด์ œ ยท ์„ ํƒ ์‹œ ์™ธํ˜•/ํšจ๊ณผ ๋ณ€๊ฒฝ(๋ฐ๋ชจ)

STORE

IAP๋Š” ์›น ๋ฐ๋ชจ๋ผ โ€œ๊ฒฐ์ œ ์‹œ๋ฎฌ๋ ˆ์ด์…˜โ€์œผ๋กœ ์ ฌ๋งŒ ์ง€๊ธ‰

RECHARGE GEMS

HANDFUL OF GEMS
100 Gems
BAG OF GEMS
500 Gems + 50 Bonus
TREASURE CHEST
2000 Gems + 300 Bonus
์‹ค์„œ๋น„์Šค๋ฉด Stripe/์ธ์•ฑ๊ฒฐ์ œ/PWA Billing ๋“ฑ ์—ฐ๋™ ํ•„์š”

DAILY GIFTS

์˜ค๋Š˜ ๋ณด์ƒ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์–ด์š”.

Day7: Legendary Chest(๋Œ€๋Ÿ‰ ์ ฌ) ยท ์—ฐ์† ์ถœ์„์€ โ€œํ•˜๋ฃจ 1ํšŒโ€ ๊ธฐ์ค€

GLOBAL RANKING

๋ฐ๋ชจ: ๋กœ์ปฌ ์ตœ๊ณ ์ ์ด ๋ฐ˜์˜๋˜๊ณ , ๋‚˜๋จธ์ง€๋Š” ๋”๋ฏธ ๋ฐ์ดํ„ฐ

INVITE FRIENDS

์นœ๊ตฌ 3๋ช… ์ดˆ๋Œ€ ์‹œ Galaxy Trail ์–ธ๋ฝ
์นœ๊ตฌ 1๋ช…๋‹น +50 Gems

INVITE 3 FRIENDS
0/3 Friends Joined
๐ŸŒŒ
์‹ค์„œ๋น„์Šค๋ฉด ๋ฆฌํผ๋Ÿด ์ฝ”๋“œ+๋”ฅ๋งํฌ+์„œ๋ฒ„ ๊ฒ€์ฆ์œผ๋กœ ๊ตฌํ˜„

SETTINGS

SOUND EFFECTS
MUSIC
HAPTIC FEEDBACK
CALIBRATE SENSITIVITY 1.00x
SLOWFAST
Wipe๋Š” localStorage ์ „์ฒด ์ดˆ๊ธฐํ™”

CREDITS

Demo game made with HTML Canvas.
์š”์ฒญํ•œ UI๋Š” ์Šคํฌ๋ฆฐ์ƒท์„ ์ฐธ๊ณ ํ•ด ์žฌ๊ตฌ์„ฑํ•œ ํ”„๋กœํ† ํƒ€์ž…์ž…๋‹ˆ๋‹ค.

Sky Bridge Z: The Ultimate Bridge Building Challenge

Welcome to Sky Bridge Z, the most addictive endless bridge-building game on the web. Your mission is simple yet challenging: build bridges to cross the endless void of the galaxy. Timing and precision are key as you stretch your bridge to land safely on the next platform.

How to Play

  • Hold to Build: Tap and hold the screen (or mouse) to extend your bridge. The longer you hold, the longer it gets.
  • Release to Drop: Release your finger to let the bridge fall. If it lands on the platform, you cross!
  • Aim for Perfect: Try to land your bridge exactly in the center (red dot) of the platform to earn a "Perfect" score and gain bonus multipliers.

Tips & Tricks for High Scores

Mastering Sky Bridge Z takes practice. Here are some pro tips to help you climb the global leaderboard:

  • Rhythm is Key: Find a rhythm. The bridge grows at a constant speed, so memorize the timing for different gap sizes.
  • Collect Gems: Use your earned gems to unlock cool skins like the Ninja or Rabbit, and beautiful bridge themes like Neon Pulse or Cyber Grid.
  • Don't Rush: Take a deep breath before difficult jumps. Precision beats speed every time.

Frequently Asked Questions (FAQ)

Is Sky Bridge Z free to play?

Yes! Sky Bridge Z is 100% free to play directly in your browser. No download or installation is required.

Can I play on mobile?

Absolutely. The game is fully optimized for mobile devices, tablets, and desktop computers. It supports touch controls for a seamless experience on iPhone and Android.

How do I unlock new skins?

You can unlock new character skins and bridge trails by collecting Gems during gameplay or by reaching specific high scores. Check the "Store" and "Characters" menu in the game for details.

Privacy Policy | Terms of Service | Contact Us

© 2026 Sky Bridge Z. All rights reserved.
A fun HTML5 game for everyone.