this repo has no description
10
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 }