fixed nav

This commit is contained in:
2026-07-23 18:42:29 +02:00
parent d056462f81
commit 25dfe21097
3 changed files with 48 additions and 50 deletions
+24 -23
View File
@@ -24,6 +24,7 @@
--f-head:'Archivo',sans-serif;
--f-body:'Inter',sans-serif;
--f-mono:'IBM Plex Mono',monospace;
--f-wordmark:'Fraunces','Georgia',serif;
}
html{scroll-behavior:smooth}
body{
@@ -59,24 +60,22 @@ nav.nav-scrolled{
max-width:var(--container);margin:0 auto;
padding:0 var(--pad);
height:64px;
display:flex;align-items:center;justify-content:space-between;
display:flex;align-items:center;gap:24px;
}
.nav-logo-wrap{
display:flex;align-items:center;gap:9px;
display:flex;align-items:center;
text-decoration:none;color:var(--navy);
flex-shrink:0;
height:64px;
}
.nav-logosvg{width:24px;height:24px}
.nav-name{
font-family:var(--f-head);
font-size:15px;font-weight:700;
.nav-mark{
font-family:var(--f-wordmark);
font-size:26px;font-weight:600;font-style:italic;
letter-spacing:-.01em;
color:var(--navy);
}
.nav-name sup{
font-size:8px;font-weight:500;
opacity:.55;vertical-align:super;
letter-spacing:.06em;font-family:var(--f-mono);
}
.nav-links{display:flex;align-items:center;gap:4px}
.nav-mark em{color:var(--navy2);font-style:italic}
.nav-links{display:flex;align-items:center;justify-content:center;gap:4px;flex:1}
.nav-links a{
display:flex;align-items:center;
padding:8px 14px;
@@ -85,20 +84,23 @@ nav.nav-scrolled{
transition:color .15s,background .15s;
font-weight:500;letter-spacing:.03em;
font-family:var(--f-mono);text-transform:uppercase;
white-space:nowrap;
}
.nav-links a:hover{color:var(--navy2);background:var(--stone3)}
.nav-socials{display:flex;align-items:center;gap:4px;margin-left:8px;padding-left:14px;border-left:1px solid var(--line)}
.nav-right{display:flex;align-items:center;gap:10px;flex-shrink:0}
.nav-socials{display:flex;align-items:center;gap:8px}
.nav-socials a{
display:flex;align-items:center;justify-content:center;
width:32px;height:32px;
color:var(--mid);text-decoration:none;
transition:color .15s,background .15s;
width:38px;height:38px;
border:1px solid var(--line);
color:var(--navy);text-decoration:none;
transition:color .15s,background .15s,border-color .15s;
}
.nav-socials a:hover{color:var(--navy2);background:var(--stone3)}
.nav-socials svg{width:15px;height:15px;fill:currentColor}
.nav-socials a:hover{color:var(--navy2);border-color:var(--navy);background:var(--stone3)}
.nav-socials svg{width:18px;height:18px;fill:currentColor}
.nav-burger{
display:none;flex-direction:column;justify-content:center;gap:4px;
width:36px;height:36px;background:transparent;border:1px solid var(--line3);
width:38px;height:38px;background:transparent;border:1px solid var(--line3);
cursor:pointer;flex-shrink:0;
}
.nav-burger span{display:block;width:15px;height:1.5px;background:var(--navy);margin:0 auto;transition:transform .2s,opacity .2s}
@@ -552,16 +554,15 @@ footer a:hover{color:var(--navy2)}
}
@media(max-width:820px){
.nav-links{
position:fixed;top:64px;left:0;right:0;bottom:0;
position:absolute;top:64px;left:0;right:0;height:calc(100vh - 64px);height:calc(100dvh - 64px);
background:rgba(247,246,241,.98);backdrop-filter:blur(16px);
flex-direction:column;align-items:stretch;gap:2px;
padding:16px;
flex-direction:column;align-items:stretch;justify-content:flex-start;gap:2px;
padding:16px;overflow-y:auto;
transform:translateY(-8px);opacity:0;pointer-events:none;
transition:opacity .2s ease,transform .2s ease;
}
nav.nav-open .nav-links{opacity:1;transform:translateY(0);pointer-events:auto}
.nav-links a{padding:14px 16px;font-size:14px}
.nav-socials{margin:10px 0 0;padding:14px 16px 0;border-left:none;border-top:1px solid var(--line);justify-content:flex-start}
.nav-burger{display:flex}
.category-row,.detail-row,.repo-row{grid-template-columns:1fr;gap:8px}
.repo-meta{justify-content:flex-start}
+1 -1
View File
@@ -21,7 +21,7 @@ export default function RootLayout({ children }: { children: React.ReactNode })
<meta name="theme-color" content="#FAF9F5" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossOrigin="anonymous" />
<link href="https://fonts.googleapis.com/css2?family=Archivo:wght@500;600;700&family=IBM+Plex+Mono:wght@400;500&family=Inter:ital,wght@0,400;0,500;1,400&display=swap" rel="stylesheet" />
<link href="https://fonts.googleapis.com/css2?family=Archivo:wght@500;600;700&family=IBM+Plex+Mono:wght@400;500&family=Inter:ital,wght@0,400;0,500;1,400&family=Fraunces:ital,wght@1,600&display=swap" rel="stylesheet" />
</head>
<body>{children}</body>
</html>
+7 -10
View File
@@ -76,17 +76,8 @@ export default function Home() {
<nav className={mobileOpen ? 'nav-open' : ''}>
<div className="nav-bar">
<a href="#" className="nav-logo-wrap">
<svg className="nav-logosvg" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="22" height="22" rx="4" fill="#111110"/>
<path d="M5 8L11 5.5L17 8V12.8C17 16.5 11 20 11 20C11 20 5 16.5 5 12.8V8Z" stroke="#C1121F" strokeWidth="1.3"/>
<path d="M9 11.8L10.8 13.5L14 9.5" stroke="#C1121F" strokeWidth="1.3" strokeLinecap="round" strokeLinejoin="round"/>
</svg>
<span className="nav-name">Pietro<sup>DEV</sup></span>
<span className="nav-mark">P<em>Q</em></span>
</a>
<button className="nav-burger" aria-label="Toggle menu" aria-expanded={mobileOpen} onClick={() => setMobileOpen(o => !o)}>
<span></span><span></span><span></span>
</button>
</div>
<div className="nav-links">
<a href="#skills" onClick={closeMobile}>Skills</a>
<a href="#homelab" onClick={closeMobile}>Homelab</a>
@@ -96,6 +87,8 @@ export default function Home() {
<a href="#github" onClick={closeMobile}>GitHub</a>
<a href="#experience" onClick={closeMobile}>Experience</a>
<a href="#contact" onClick={closeMobile}>Contact</a>
</div>
<div className="nav-right">
<div className="nav-socials">
<a href="https://github.com/Quinta0" target="_blank" rel="noopener" title="GitHub">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 2C6.48 2 2 6.48 2 12c0 4.42 2.87 8.17 6.84 9.49.5.09.68-.22.68-.48v-1.69C6.72 19.9 6.14 18 6.14 18c-.46-1.16-1.11-1.47-1.11-1.47-.91-.62.07-.61.07-.61 1 .07 1.53 1.03 1.53 1.03.89 1.52 2.34 1.08 2.91.83.09-.65.35-1.08.63-1.33-2.22-.25-4.56-1.11-4.56-4.95 0-1.09.39-1.98 1.03-2.68-.1-.26-.45-1.27.1-2.64 0 0 .84-.27 2.75 1.02A9.56 9.56 0 0 1 12 7.8c.85.004 1.71.115 2.51.337 1.91-1.29 2.75-1.02 2.75-1.02.55 1.37.2 2.38.1 2.64.64.7 1.03 1.59 1.03 2.68 0 3.85-2.34 4.7-4.57 4.95.36.31.68.92.68 1.85v2.74c0 .27.18.58.69.48A10.01 10.01 0 0 0 22 12c0-5.52-4.48-10-10-10Z"/></svg>
@@ -104,6 +97,10 @@ export default function Home() {
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 3a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14m-.5 15.5v-5.3a3.26 3.26 0 0 0-3.26-3.26c-.85 0-1.84.52-2.32 1.3v-1.11h-2.79v8.37h2.79v-4.93c0-.77.62-1.4 1.39-1.4a1.4 1.4 0 0 1 1.4 1.4v4.93h2.79M6.88 8.56a1.68 1.68 0 0 0 1.68-1.68c0-.93-.75-1.69-1.68-1.69a1.69 1.69 0 0 0-1.69 1.69c0 .93.76 1.68 1.69 1.68m1.39 9.94v-8.37H5.5v8.37h2.77Z"/></svg>
</a>
</div>
<button className="nav-burger" aria-label="Toggle menu" aria-expanded={mobileOpen} onClick={() => setMobileOpen(o => !o)}>
<span></span><span></span><span></span>
</button>
</div>
</div>
</nav>