3.3 KB
raw
.side {
position: fixed;
left: 0;
top: 0;
bottom: 0;
width: 60px;
background-color: var(--bg-deep);
border-right: 1px solid var(--border);
display: flex;
justify-content: space-between;
flex-direction: column;
align-items: center;
padding: 14px 0;
z-index: 10;
}
@media (max-width: 1023.99px) {
.side {
width: 100%;
height: 56px;
bottom: 0;
left: 0;
top: auto;
flex-direction: row;
align-items: center;
justify-content: space-between;
padding: 0 12px;
border-right: 0;
border-top: 1px solid var(--border);
}
}
/* Brand mark + vertical wordmark */
.brand {
display: flex;
flex-direction: column;
align-items: center;
gap: 16px;
text-decoration: none;
color: var(--text-muted);
transition: color 200ms ease;
padding-top: 4px;
}
.brand:hover {
color: var(--green-bright);
}
.brandMark {
display: flex;
align-items: center;
justify-content: center;
width: 32px;
height: 32px;
color: var(--green-bright);
filter: drop-shadow(0 0 6px rgba(107, 158, 120, 0.35));
transition:
filter 220ms ease,
transform 220ms ease;
}
.brandMark svg {
display: block;
}
.brandMark svg circle:last-child {
transform-origin: center;
animation: brandPulse 2.2s ease-in-out infinite;
}
.brand:hover .brandMark {
filter: drop-shadow(0 0 10px rgba(107, 158, 120, 0.6));
transform: scale(1.05);
}
@keyframes brandPulse {
0%,
100% {
opacity: 1;
transform: scale(1);
}
50% {
opacity: 0.55;
transform: scale(0.82);
}
}
.brandText {
font-size: 1.3em;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.14em;
color: var(--green-bright);
writing-mode: vertical-rl;
text-orientation: mixed;
line-height: 1;
white-space: nowrap;
text-shadow: 0 0 10px var(--green-glow);
}
@media (max-width: 1023.99px) {
.brand {
flex-direction: row;
gap: 10px;
padding-top: 0;
}
.brandMark {
width: 26px;
height: 26px;
}
.brandMark svg {
width: 18px;
height: 18px;
}
.brandText {
font-size: 0.8em;
writing-mode: horizontal-tb;
letter-spacing: 0.2em;
}
}
.pages {
display: flex;
flex-direction: column;
gap: 4px;
align-items: center;
}
@media (max-width: 1023.99px) {
.pages {
flex-direction: row;
gap: 2px;
}
}
.pageLink {
text-decoration: none;
position: relative;
display: flex;
align-items: center;
justify-content: center;
width: 40px;
height: 40px;
border-radius: var(--radius);
color: var(--text-muted);
transition:
color 200ms ease,
background 200ms ease;
}
.pageLink svg {
width: 20px;
height: 20px;
fill: currentColor;
}
.pageLink:hover {
color: var(--green-bright);
background: var(--green-dim);
}
.pageLinkActive {
color: var(--green-bright);
background: var(--green-dim);
box-shadow: inset 2px 0 0 var(--green);
}
@media (max-width: 1023.99px) {
.pageLinkActive {
box-shadow: inset 0 2px 0 var(--green);
}
}
.about {
display: flex;
justify-content: center;
align-items: center;
width: 40px;
height: 40px;
border-radius: var(--radius);
text-decoration: none;
color: var(--text-muted);
transition:
color 200ms ease,
background 200ms ease;
}
.about svg {
width: 20px;
height: 20px;
fill: currentColor;
}
.about:hover {
color: var(--amber);
background: var(--amber-dim);
}