Adds a Russian version (data/resume.ru.json, default language) with an RU/EN switch stored under the key shared with the front page and the portfolio. The top bar becomes the site-wide one (brand, Resume, Portfolio, Gitea, Contact, language, theme) with a second row of anchors for this page's sections, and the fonts move to Unbounded and Onest so the three pages share one type system. Portfolio links now point at /portfolio/. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XtcZtnG4GQA1d6mW5PNrS9
141 lines
2.3 KiB
CSS
141 lines
2.3 KiB
CSS
.bar {
|
|
position: fixed;
|
|
z-index: 50;
|
|
inset: 0 0 auto 0;
|
|
border-bottom: 1px solid transparent;
|
|
transition: background-color 0.25s, border-color 0.25s;
|
|
}
|
|
|
|
.solid {
|
|
background: var(--topbar-bg);
|
|
border-bottom-color: var(--line);
|
|
-webkit-backdrop-filter: blur(12px);
|
|
backdrop-filter: blur(12px);
|
|
}
|
|
|
|
.inner {
|
|
width: var(--shell);
|
|
height: 68px;
|
|
margin: 0 auto;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 14px;
|
|
}
|
|
|
|
.brand {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 10px;
|
|
margin-right: auto;
|
|
text-decoration: none;
|
|
font: 700 18px/1 var(--font-head);
|
|
letter-spacing: -0.03em;
|
|
}
|
|
|
|
.nav {
|
|
display: flex;
|
|
gap: 28px;
|
|
margin-right: 10px;
|
|
font-size: 15px;
|
|
font-weight: 500;
|
|
}
|
|
|
|
.nav a {
|
|
padding: 6px 0;
|
|
text-decoration: none;
|
|
background: linear-gradient(currentColor, currentColor) left bottom / 0 1.5px no-repeat;
|
|
transition: background-size 0.25s;
|
|
}
|
|
|
|
.nav a:hover {
|
|
background-size: 100% 1.5px;
|
|
}
|
|
|
|
.nav a[aria-current='page'] {
|
|
font-weight: 700;
|
|
background-size: 100% 2px;
|
|
}
|
|
|
|
.seg {
|
|
display: flex;
|
|
padding: 3px;
|
|
border-radius: var(--radius-control);
|
|
box-shadow: inset 0 0 0 1px var(--line);
|
|
}
|
|
|
|
.seg button {
|
|
padding: 6px 10px;
|
|
border: 0;
|
|
border-radius: 7px;
|
|
background: transparent;
|
|
color: var(--muted);
|
|
font: 600 13px/1.2 var(--font-body);
|
|
letter-spacing: 0.02em;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.seg button[aria-pressed='true'] {
|
|
background: var(--ink);
|
|
color: var(--paper);
|
|
}
|
|
|
|
.toggle {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 40px;
|
|
height: 40px;
|
|
padding: 0;
|
|
border: 0;
|
|
border-radius: var(--radius-control);
|
|
background: transparent;
|
|
color: var(--ink);
|
|
box-shadow: inset 0 0 0 1px var(--line);
|
|
cursor: pointer;
|
|
transition: box-shadow 0.2s;
|
|
}
|
|
|
|
.toggle:hover {
|
|
box-shadow: inset 0 0 0 1.5px var(--ink);
|
|
}
|
|
|
|
.toggle svg {
|
|
width: 20px;
|
|
height: 20px;
|
|
fill: none;
|
|
stroke: currentColor;
|
|
stroke-width: 1.8;
|
|
stroke-linecap: round;
|
|
stroke-linejoin: round;
|
|
}
|
|
|
|
/* Second row: anchors for the sections of this page. */
|
|
.subwrap {
|
|
width: var(--shell);
|
|
margin: 0 auto;
|
|
}
|
|
|
|
.sub {
|
|
display: flex;
|
|
gap: 22px;
|
|
height: 34px;
|
|
align-items: flex-start;
|
|
font-size: 14px;
|
|
color: var(--muted);
|
|
}
|
|
|
|
.sub a {
|
|
text-decoration: none;
|
|
transition: color 0.2s;
|
|
}
|
|
|
|
.sub a:hover {
|
|
color: var(--ink);
|
|
}
|
|
|
|
@media (max-width: 860px) {
|
|
.nav,
|
|
.subwrap {
|
|
display: none;
|
|
}
|
|
}
|