this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Split nav and effects into separate fixed strips

Keep the main nav (logo + actions) as its own frosted bar; place the
Effects toggle in a second fixed row below with transparent background.
Restore scroll styling on #main-nav and use CSS variables for bar
heights so hero padding clears both strips.

Made-with: Cursor

+69 -38
+40 -14
assets/styles.css
··· 151 151 152 152 /* Sky “static” mode is handled in JS (p=0, no cloud parallax) — clouds stay visible */ 153 153 154 - .nav-protocol-stack { 155 - display: flex; 156 - flex-direction: column; 157 - align-items: flex-end; 158 - gap: 0.35rem; 159 - } 160 - 161 154 .nav-sky-switch-label { 162 155 display: flex; 163 156 align-items: center; ··· 235 228 font-size: 0.6rem; 236 229 gap: 0.3rem; 237 230 } 238 - 239 - .nav-protocol-stack { 240 - gap: 0.28rem; 241 - } 242 231 } 243 232 244 233 /* ================================ ··· 295 284 Navigation 296 285 ================================ */ 297 286 287 + :root { 288 + /* Height of fixed .nav row — keeps .nav-effects-bar aligned below it */ 289 + --nav-bar-height: 4.5rem; 290 + --nav-effects-strip: 2rem; 291 + } 292 + 298 293 .nav { 299 294 position: fixed; 300 295 top: 0; 301 296 left: 0; 302 297 right: 0; 303 - z-index: 100; 298 + z-index: 101; 304 299 padding: 1rem 1.5rem; 305 300 display: flex; 306 301 align-items: center; 307 302 justify-content: space-between; 303 + gap: 0.75rem; 304 + min-width: 0; 308 305 /* Reserve border so .scrolled doesn’t flash a dark seam during backdrop compositing */ 309 306 border-bottom: 1px solid transparent; 310 307 transition: ··· 323 320 box-shadow: 0 12px 40px rgba(14, 20, 40, 0.05); 324 321 } 325 322 323 + /* Effects toggle: own fixed strip under the nav (not inside nav glass) */ 324 + .nav-effects-bar { 325 + position: fixed; 326 + top: var(--nav-bar-height); 327 + left: 0; 328 + right: 0; 329 + z-index: 100; 330 + padding: 0.35rem 1.5rem 0.55rem; 331 + display: flex; 332 + justify-content: flex-end; 333 + align-items: center; 334 + min-height: 1.75rem; 335 + background: transparent; 336 + pointer-events: none; 337 + } 338 + 339 + .nav-effects-bar .nav-sky-switch-label { 340 + pointer-events: auto; 341 + } 342 + 343 + @media (max-width: 480px) { 344 + :root { 345 + --nav-bar-height: 4.35rem; 346 + } 347 + } 348 + 326 349 .nav-logo { 327 350 display: flex; 328 351 align-items: center; ··· 347 370 348 371 .nav-links { 349 372 display: flex; 350 - align-items: flex-start; 373 + align-items: center; 351 374 gap: 0.75rem; 375 + flex-shrink: 0; 352 376 } 353 377 354 378 .nav-btn { ··· 515 539 justify-content: center; 516 540 text-align: center; 517 541 position: relative; 518 - padding: 6rem 1.5rem 4rem; 542 + /* Clear fixed nav + separate effects strip */ 543 + padding: calc(var(--nav-bar-height) + var(--nav-effects-strip) + 1rem) 1.5rem 544 + 4rem; 519 545 } 520 546 521 547 .hero-eyebrow {
+29 -24
components/Nav.tsx
··· 1 1 export default function Nav() { 2 2 return ( 3 - <nav class="nav" id="main-nav"> 4 - <a href="/" class="nav-logo"> 5 - <img src="/union.svg" alt="Atmosphere" width="32" height="32" /> 6 - <span class="nav-logo-text">Atmosphere</span> 7 - </a> 8 - <div class="nav-links"> 9 - <span class="nav-btn nav-btn-ghost nav-coming-soon" title="Coming soon"> 10 - Explore 11 - </span> 12 - <div class="nav-protocol-stack"> 3 + <> 4 + <nav class="nav" id="main-nav"> 5 + <a href="/" class="nav-logo"> 6 + <img src="/union.svg" alt="Atmosphere" width="32" height="32" /> 7 + <span class="nav-logo-text">Atmosphere</span> 8 + </a> 9 + <div class="nav-links"> 10 + <span 11 + class="nav-btn nav-btn-ghost nav-coming-soon" 12 + title="Coming soon" 13 + > 14 + Explore 15 + </span> 13 16 <a 14 17 href="https://atproto.com" 15 18 target="_blank" ··· 18 21 > 19 22 Protocol 20 23 </a> 21 - <label class="nav-sky-switch-label"> 22 - <span class="nav-sky-switch-text">Effects</span> 23 - <span class="nav-sky-switch"> 24 - <input 25 - type="checkbox" 26 - id="sky-effects-toggle" 27 - class="nav-sky-switch-input" 28 - defaultChecked 29 - aria-label="Effects on. Turn off to keep colors and clouds fixed like the first screen." 30 - /> 31 - <span class="nav-sky-switch-track" aria-hidden="true" /> 32 - </span> 33 - </label> 34 24 </div> 25 + </nav> 26 + <div class="nav-effects-bar" id="nav-effects-bar"> 27 + <label class="nav-sky-switch-label"> 28 + <span class="nav-sky-switch-text">Effects</span> 29 + <span class="nav-sky-switch"> 30 + <input 31 + type="checkbox" 32 + id="sky-effects-toggle" 33 + class="nav-sky-switch-input" 34 + defaultChecked 35 + aria-label="Effects on. Turn off to keep colors and clouds fixed like the first screen." 36 + /> 37 + <span class="nav-sky-switch-track" aria-hidden="true" /> 38 + </span> 39 + </label> 35 40 </div> 36 - </nav> 41 + </> 37 42 ); 38 43 }