Skip to content

Commit 120cd5c

Browse files
authored
Add Mobile Integration
1 parent 75ecfaf commit 120cd5c

3 files changed

Lines changed: 313 additions & 100 deletions

File tree

docs/assets/css/style.css

Lines changed: 146 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,12 @@
1414
--radius-lg: 26px;
1515
--radius-md: 16px;
1616
--container: 1240px;
17+
--nav-pill-height-mobile: 56px;
18+
--nav-pill-height-desktop: 46px;
19+
--nav-top-gap: 12px;
20+
--nav-shadow: 0 16px 36px -26px rgba(17, 19, 23, 0.42);
21+
--nav-shadow-scrolled: 0 20px 40px -22px rgba(17, 19, 23, 0.52);
22+
--nav-mobile-offset: calc(env(safe-area-inset-top, 0px) + var(--nav-top-gap) + var(--nav-pill-height-mobile) + 18px);
1723
--nav-h: 74px;
1824
--heading-font: "Unbounded", "Arial", sans-serif;
1925
--body-font: "Space Grotesk", "Segoe UI", sans-serif;
@@ -33,6 +39,8 @@
3339
--button-text: #111317;
3440
--highlight: rgba(241, 241, 235, 0.08);
3541
--highlight-strong: rgba(241, 241, 235, 0.18);
42+
--nav-shadow: 0 16px 38px -26px rgba(0, 0, 0, 0.58);
43+
--nav-shadow-scrolled: 0 22px 44px -22px rgba(0, 0, 0, 0.66);
3644
}
3745
}
3846

@@ -295,31 +303,46 @@ a {
295303

296304
.site-nav {
297305
position: fixed;
298-
top: 14px;
306+
top: calc(env(safe-area-inset-top, 0px) + var(--nav-top-gap));
299307
left: 0;
300308
right: 0;
301309
z-index: 1000;
310+
pointer-events: none;
311+
}
312+
313+
.site-nav * {
314+
pointer-events: auto;
302315
}
303316

304317
.nav-frame {
305318
width: min(1320px, calc(100% - 1.5rem));
306319
margin: 0 auto;
307-
display: flex;
308-
align-items: center;
309-
gap: 1rem;
310-
padding: 0.68rem 0.95rem;
320+
display: block;
321+
padding: 0;
311322
border-radius: 999px;
312323
border: 1px solid var(--line);
313324
background: var(--surface);
314325
backdrop-filter: blur(12px);
315326
-webkit-backdrop-filter: blur(12px);
316-
transition: border-color 220ms ease, transform 220ms ease, background-color 220ms ease;
327+
box-shadow: var(--nav-shadow);
328+
overflow: hidden;
329+
transition: border-color 220ms ease, transform 220ms ease, background-color 220ms ease, box-shadow 220ms ease;
330+
}
331+
332+
.nav-row {
333+
min-height: var(--nav-pill-height-desktop);
334+
display: flex;
335+
align-items: center;
336+
gap: 1rem;
337+
padding: 0.58rem 0.95rem;
317338
}
318339

319-
body.nav-scrolled .nav-frame {
340+
body.nav-scrolled .nav-frame,
341+
body.nav--scrolled .nav-frame {
320342
transform: translateY(-1px);
321343
border-color: var(--line-strong);
322344
background: var(--surface-strong);
345+
box-shadow: var(--nav-shadow-scrolled);
323346
}
324347

325348
.brand {
@@ -333,8 +356,12 @@ body.nav-scrolled .nav-frame {
333356
height: 30px;
334357
}
335358

359+
.nav-links-desktop {
360+
margin-left: auto;
361+
}
362+
336363
.nav-links {
337-
margin: 0 0 0 auto;
364+
margin: 0;
338365
padding: 0;
339366
list-style: none;
340367
display: flex;
@@ -396,6 +423,60 @@ body.nav-scrolled .nav-frame {
396423
transform: translateY(-3.5px) rotate(-45deg);
397424
}
398425

426+
.nav-sheet {
427+
display: none;
428+
}
429+
430+
.nav-sheet-inner {
431+
overflow: hidden;
432+
}
433+
434+
.nav-mobile-links {
435+
list-style: none;
436+
margin: 0;
437+
padding: 0.2rem 0.4rem 0.7rem;
438+
}
439+
440+
.nav-mobile-links li {
441+
opacity: 0;
442+
transform: translateY(-6px);
443+
}
444+
445+
.nav-mobile-links a {
446+
display: block;
447+
min-height: 42px;
448+
padding: 0.62rem 0.78rem;
449+
border-radius: 14px;
450+
text-decoration: none;
451+
font-size: 0.92rem;
452+
letter-spacing: 0.06em;
453+
text-transform: uppercase;
454+
color: var(--muted);
455+
transition: color 180ms ease, background-color 180ms ease;
456+
}
457+
458+
.nav-mobile-links a:hover,
459+
.nav-mobile-links a.is-active {
460+
color: var(--text);
461+
background: var(--highlight);
462+
}
463+
464+
.site-nav.nav-open .nav-mobile-links li {
465+
animation: nav-mobile-in 380ms cubic-bezier(0.22, 1, 0.36, 1) forwards;
466+
animation-delay: var(--menu-delay, 0s);
467+
}
468+
469+
@keyframes nav-mobile-in {
470+
from {
471+
opacity: 0;
472+
transform: translateY(-6px);
473+
}
474+
to {
475+
opacity: 1;
476+
transform: translateY(0);
477+
}
478+
}
479+
399480
.hero {
400481
min-height: min(900px, 100vh);
401482
display: flex;
@@ -727,52 +808,6 @@ body.nav-scrolled .nav-frame {
727808
}
728809

729810
@media (max-width: 980px) {
730-
.site-nav {
731-
top: 12px;
732-
}
733-
734-
.nav-frame {
735-
flex-wrap: wrap;
736-
border-radius: 24px;
737-
gap: 0.5rem;
738-
padding: 0.6rem;
739-
}
740-
741-
.nav-toggle {
742-
display: inline-flex;
743-
}
744-
745-
.nav-links {
746-
width: 100%;
747-
margin: 0;
748-
order: 3;
749-
flex-direction: column;
750-
align-items: stretch;
751-
gap: 0.3rem;
752-
max-height: 0;
753-
overflow: hidden;
754-
opacity: 0;
755-
pointer-events: none;
756-
transform: translateY(-8px);
757-
transition:
758-
max-height 300ms cubic-bezier(0.22, 1, 0.36, 1),
759-
opacity 220ms ease,
760-
transform 240ms ease;
761-
}
762-
763-
.site-nav.nav-open .nav-links {
764-
max-height: 280px;
765-
opacity: 1;
766-
pointer-events: auto;
767-
transform: translateY(0);
768-
}
769-
770-
.nav-links a {
771-
width: 100%;
772-
justify-content: flex-start;
773-
min-height: 42px;
774-
}
775-
776811
.page-wrap {
777812
padding-top: 98px;
778813
}
@@ -816,6 +851,62 @@ body.nav-scrolled .nav-frame {
816851
}
817852
}
818853

854+
@media (max-width: 980px) and (orientation: portrait) {
855+
.site-nav {
856+
top: calc(env(safe-area-inset-top, 0px) + var(--nav-top-gap));
857+
}
858+
859+
.nav-frame {
860+
width: calc(100% - 1.2rem);
861+
border-radius: calc(var(--nav-pill-height-mobile) / 2);
862+
}
863+
864+
.nav-row {
865+
min-height: var(--nav-pill-height-mobile);
866+
padding: 0.52rem 0.72rem;
867+
}
868+
869+
.nav-links-desktop {
870+
display: none;
871+
}
872+
873+
.nav-toggle {
874+
display: inline-flex;
875+
}
876+
877+
.nav-sheet {
878+
display: grid;
879+
grid-template-rows: 0fr;
880+
transition: grid-template-rows 420ms cubic-bezier(0.22, 1, 0.36, 1);
881+
}
882+
883+
.site-nav.nav-open .nav-sheet {
884+
grid-template-rows: 1fr;
885+
}
886+
887+
.nav-mobile-links a {
888+
font-size: 0.9rem;
889+
}
890+
891+
.page-wrap {
892+
padding-top: var(--nav-mobile-offset);
893+
}
894+
}
895+
896+
@media (max-width: 980px) and (orientation: landscape) {
897+
.nav-toggle {
898+
display: none !important;
899+
}
900+
901+
.nav-sheet {
902+
display: none !important;
903+
}
904+
905+
.nav-links-desktop {
906+
display: flex;
907+
}
908+
}
909+
819910
@media (max-width: 680px) {
820911
.container,
821912
.projects-shell {
@@ -838,6 +929,7 @@ body.nav-scrolled .nav-frame {
838929

839930
.ambient-orb,
840931
.ambient-grain,
932+
.site-nav.nav-open .nav-mobile-links li,
841933
.hero-line > span,
842934
.button,
843935
.discipline-card,

0 commit comments

Comments
 (0)