mirror of
https://github.com/SpartanJ/eepp.git
synced 2026-05-28 17:16:29 +03:00
3197 lines
73 KiB
CSS
3197 lines
73 KiB
CSS
:root {
|
||
--bg: #0c1520;
|
||
--bg-surface: #141f2e;
|
||
--bg-surface-2: #1a2637;
|
||
--text: #bfc8d2;
|
||
--text-muted: #566a7c;
|
||
--text-bright: #e4e9ee;
|
||
--accent: #d4a853;
|
||
--accent-hover: #e4bc6a;
|
||
--tag-color: #7eb8a8;
|
||
--eng-color: #3d7b8a;
|
||
--danger: #e07a5f;
|
||
--border: rgba(255, 255, 255, 0.07);
|
||
--border-strong: rgba(255, 255, 255, 0.12);
|
||
--max-width: 54rem;
|
||
--read-width: 54rem;
|
||
--font-text: text, "Roboto", -apple-system, BlinkMacSystemFont, sans-serif;
|
||
--font-mono: code, "JetBrains Mono", ui-monospace, SFMono-Regular, monospace;
|
||
--font-serif: serif, "Fraunces", "Iowan Old Style", Georgia, serif;
|
||
}
|
||
|
||
*, *::before, *::after {
|
||
margin: 0;
|
||
padding: 0;
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
html {
|
||
font-size: 17.5px;
|
||
-webkit-font-smoothing: antialiased;
|
||
-moz-osx-font-smoothing: grayscale;
|
||
scroll-behavior: smooth;
|
||
}
|
||
|
||
@media (max-width: 560px) {
|
||
html {
|
||
font-size: 16px;
|
||
}
|
||
}
|
||
|
||
body {
|
||
font-family: var(--font-text);
|
||
font-weight: 300;
|
||
line-height: 1.65;
|
||
color: var(--text);
|
||
background: var(--bg);
|
||
min-height: 100vh;
|
||
display: flex;
|
||
flex-direction: column;
|
||
overflow-x: clip;
|
||
}
|
||
|
||
::selection {
|
||
background: rgba(212, 168, 83, 0.25);
|
||
color: var(--text-bright);
|
||
}
|
||
|
||
a {
|
||
color: var(--accent);
|
||
text-decoration: none;
|
||
transition: color 0.15s;
|
||
}
|
||
a:hover {
|
||
color: var(--accent-hover);
|
||
}
|
||
|
||
img {
|
||
max-width: 100%;
|
||
height: auto;
|
||
}
|
||
|
||
/* ============ Nav ============ */
|
||
.site-nav {
|
||
padding: 1.25rem 0;
|
||
border-bottom: 1px solid var(--border);
|
||
}
|
||
.site-nav .wrap {
|
||
max-width: var(--max-width);
|
||
margin: 0 auto;
|
||
padding: 0 1.5rem;
|
||
display: flex;
|
||
justify-content: space-between;
|
||
align-items: center;
|
||
}
|
||
.site-nav .brand {
|
||
font-family: var(--font-mono);
|
||
font-size: 0.9rem;
|
||
color: var(--text-bright);
|
||
letter-spacing: -0.02em;
|
||
}
|
||
.site-nav .links {
|
||
display: flex;
|
||
gap: 1.5rem;
|
||
font-family: var(--font-mono);
|
||
font-size: 0.8rem;
|
||
}
|
||
.site-nav .links a {
|
||
color: var(--text-muted);
|
||
}
|
||
.site-nav .links a:hover,
|
||
.site-nav .links a[aria-current="page"] {
|
||
color: var(--text-bright);
|
||
}
|
||
|
||
/* ============ Shell ============ */
|
||
main.shell {
|
||
flex: 1;
|
||
max-width: var(--max-width);
|
||
margin: 0 auto;
|
||
width: 100%;
|
||
padding: 3rem 1.5rem 5rem;
|
||
animation: fadeIn 0.3s ease;
|
||
}
|
||
|
||
@keyframes fadeIn {
|
||
from {
|
||
opacity: 0;
|
||
transform: translateY(0.4rem);
|
||
}
|
||
to {
|
||
opacity: 1;
|
||
transform: translateY(0);
|
||
}
|
||
}
|
||
|
||
/* ============ Footer ============ */
|
||
footer.site-footer {
|
||
margin-top: auto;
|
||
border-top: 1px solid var(--border);
|
||
padding: 2rem 0;
|
||
}
|
||
footer.site-footer .wrap {
|
||
max-width: var(--max-width);
|
||
margin: 0 auto;
|
||
padding: 0 1.5rem;
|
||
display: flex;
|
||
justify-content: space-between;
|
||
align-items: center;
|
||
gap: 1rem;
|
||
flex-wrap: wrap;
|
||
font-family: var(--font-mono);
|
||
font-size: 0.72rem;
|
||
color: var(--text-muted);
|
||
}
|
||
footer.site-footer a {
|
||
color: var(--text-muted);
|
||
}
|
||
footer.site-footer a:hover {
|
||
color: var(--accent);
|
||
}
|
||
|
||
/* ============ Masthead (home / about) ============ */
|
||
.masthead {
|
||
display: grid;
|
||
grid-template-columns: minmax(0, 1fr) 12.5rem;
|
||
gap: 3rem;
|
||
align-items: start;
|
||
padding-bottom: 2.5rem;
|
||
margin-bottom: 2.5rem;
|
||
border-bottom: 1px solid var(--border-strong);
|
||
}
|
||
.masthead:has(.portrait-wrap.has-outline) {
|
||
grid-template-columns: minmax(0, 1fr) 21rem;
|
||
}
|
||
.mh-eyebrow {
|
||
font-family: var(--font-mono);
|
||
font-size: 0.68rem;
|
||
letter-spacing: 0.18em;
|
||
text-transform: uppercase;
|
||
color: var(--text-muted);
|
||
margin-bottom: 1.5rem;
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 0.75rem;
|
||
}
|
||
.mh-eyebrow .dot {
|
||
width: 6px;
|
||
height: 6px;
|
||
border-radius: 50%;
|
||
background: var(--accent);
|
||
box-shadow: 0 0 6px var(--accent);
|
||
}
|
||
.mh-eyebrow .sep {
|
||
flex: 1;
|
||
height: 1px;
|
||
background: var(--border);
|
||
}
|
||
|
||
.masthead h1 {
|
||
font-family: var(--font-serif);
|
||
font-weight: 300;
|
||
font-variation-settings: "opsz" 144;
|
||
font-size: clamp(2.3rem, 5vw, 4rem);
|
||
line-height: 1;
|
||
letter-spacing: -0.03em;
|
||
color: var(--text-bright);
|
||
text-wrap: balance;
|
||
margin-bottom: 1rem;
|
||
}
|
||
.masthead h1 em {
|
||
font-style: italic;
|
||
font-variation-settings: "opsz" 144;
|
||
color: var(--accent);
|
||
}
|
||
.masthead h1 .accent {
|
||
font-style: normal;
|
||
color: var(--accent);
|
||
}
|
||
.masthead .dek {
|
||
font-family: var(--font-text);
|
||
font-weight: 300;
|
||
font-style: normal;
|
||
font-size: 1.1rem;
|
||
line-height: 1.55;
|
||
color: var(--text);
|
||
max-width: 38rem;
|
||
margin-bottom: 1.5rem;
|
||
}
|
||
|
||
.mh-stats {
|
||
display: flex;
|
||
gap: 2rem;
|
||
flex-wrap: wrap;
|
||
font-family: var(--font-mono);
|
||
font-size: 0.7rem;
|
||
color: var(--text-muted);
|
||
text-transform: uppercase;
|
||
letter-spacing: 0.1em;
|
||
padding-top: 1rem;
|
||
border-top: 1px solid var(--border);
|
||
}
|
||
.mh-stats div b {
|
||
display: block;
|
||
font-family: var(--font-serif);
|
||
font-style: normal;
|
||
font-weight: 400;
|
||
font-size: 1.5rem;
|
||
color: var(--text-bright);
|
||
margin-bottom: 0.15rem;
|
||
letter-spacing: -0.02em;
|
||
text-transform: none;
|
||
}
|
||
|
||
.masthead-right {
|
||
position: relative;
|
||
}
|
||
.portrait-wrap {
|
||
position: relative;
|
||
aspect-ratio: 1;
|
||
border-radius: 0.35rem;
|
||
overflow: hidden;
|
||
display: block;
|
||
}
|
||
.portrait-wrap.has-outline {
|
||
border: 1px solid var(--border);
|
||
}
|
||
.portrait-art {
|
||
position: absolute;
|
||
inset: 0;
|
||
}
|
||
.portrait-art img {
|
||
width: 100%;
|
||
height: 100%;
|
||
display: block;
|
||
}
|
||
.portrait-art img[src$=".jpeg"],
|
||
.portrait-art img[src$=".jpg"],
|
||
.portrait-art img[src$=".png"] {
|
||
object-fit: cover;
|
||
filter: grayscale(0.15) contrast(1.02);
|
||
}
|
||
.portrait-art img[src$=".svg"] {
|
||
object-fit: contain;
|
||
padding: 8%;
|
||
opacity: 0.92;
|
||
}
|
||
|
||
/* White line-art overlay on photo portrait (about page) — body only, face masked out */
|
||
.portrait-outline {
|
||
position: absolute;
|
||
inset: 0;
|
||
width: 100%;
|
||
height: 100%;
|
||
object-fit: cover;
|
||
object-position: center;
|
||
pointer-events: none;
|
||
opacity: 0;
|
||
filter: drop-shadow(0 0 4px rgba(255, 255, 255, 0.45));
|
||
animation:
|
||
portrait-outline-in 1.4s ease-out 0.3s forwards,
|
||
portrait-outline-breathe 6s ease-in-out 1.7s infinite;
|
||
-webkit-mask-image: linear-gradient(
|
||
to bottom,
|
||
transparent 0%,
|
||
transparent 38%,
|
||
rgba(0, 0, 0, 0.4) 46%,
|
||
black 54%,
|
||
black 100%
|
||
);
|
||
mask-image: linear-gradient(
|
||
to bottom,
|
||
transparent 0%,
|
||
transparent 38%,
|
||
rgba(0, 0, 0, 0.4) 46%,
|
||
black 54%,
|
||
black 100%
|
||
);
|
||
}
|
||
@keyframes portrait-outline-in {
|
||
0% {
|
||
opacity: 0;
|
||
transform: scale(0.985);
|
||
}
|
||
100% {
|
||
opacity: 0.85;
|
||
transform: scale(1);
|
||
}
|
||
}
|
||
@keyframes portrait-outline-breathe {
|
||
0%, 100% {
|
||
opacity: 0.78;
|
||
}
|
||
50% {
|
||
opacity: 0.95;
|
||
}
|
||
}
|
||
.portrait-wrap.has-outline .portrait-art img {
|
||
filter: grayscale(0.15) contrast(1) brightness(0.95);
|
||
}
|
||
|
||
/* Floating dots overlay on portrait */
|
||
.portrait-dot {
|
||
position: absolute;
|
||
width: 3px;
|
||
height: 3px;
|
||
background: var(--text-bright);
|
||
border-radius: 50%;
|
||
box-shadow: 0 0 6px var(--text-bright);
|
||
animation: portrait-float var(--dur, 5s) ease-in-out var(--del, 0s) infinite
|
||
alternate;
|
||
pointer-events: none;
|
||
}
|
||
@keyframes portrait-float {
|
||
0% {
|
||
left: var(--x1);
|
||
top: var(--y1);
|
||
opacity: 0;
|
||
}
|
||
15% {
|
||
opacity: 0.7;
|
||
}
|
||
85% {
|
||
opacity: 0.7;
|
||
}
|
||
100% {
|
||
left: var(--x2);
|
||
top: var(--y2);
|
||
opacity: 0;
|
||
}
|
||
}
|
||
.portrait-caption {
|
||
font-family: var(--font-mono);
|
||
font-size: 0.62rem;
|
||
color: var(--text-muted);
|
||
letter-spacing: 0.1em;
|
||
text-transform: uppercase;
|
||
margin-top: 0.75rem;
|
||
display: flex;
|
||
justify-content: space-between;
|
||
}
|
||
.portrait-caption .loc {
|
||
color: var(--accent);
|
||
}
|
||
|
||
/* ============ Section bar ============ */
|
||
.section-bar {
|
||
display: grid;
|
||
grid-template-columns: auto 1fr auto auto;
|
||
align-items: baseline;
|
||
gap: 1rem;
|
||
padding-bottom: 0.75rem;
|
||
border-bottom: 1px solid var(--border-strong);
|
||
margin-bottom: 1.75rem;
|
||
font-family: var(--font-mono);
|
||
}
|
||
.section-bar .sb-num {
|
||
font-size: 0.68rem;
|
||
color: var(--accent);
|
||
letter-spacing: 0.1em;
|
||
text-transform: uppercase;
|
||
padding: 0.2rem 0.55rem;
|
||
border: 1px solid rgba(212, 168, 83, 0.3);
|
||
border-radius: 0.15rem;
|
||
background: rgba(212, 168, 83, 0.04);
|
||
}
|
||
.section-bar .sb-label {
|
||
font-family: var(--font-serif);
|
||
font-weight: 400;
|
||
font-size: 1.4rem;
|
||
color: var(--text-bright);
|
||
letter-spacing: -0.015em;
|
||
}
|
||
.section-bar .sb-label em {
|
||
font-style: italic;
|
||
color: var(--accent);
|
||
}
|
||
.section-bar .sb-count {
|
||
font-size: 0.7rem;
|
||
color: var(--text-muted);
|
||
letter-spacing: 0.06em;
|
||
}
|
||
.section-bar .sb-filter {
|
||
display: flex;
|
||
gap: 0.35rem;
|
||
flex-wrap: wrap;
|
||
}
|
||
.section-bar .sb-filter button {
|
||
background: transparent;
|
||
border: 1px solid var(--border);
|
||
color: var(--text-muted);
|
||
font-family: inherit;
|
||
font-size: 0.62rem;
|
||
letter-spacing: 0.06em;
|
||
text-transform: uppercase;
|
||
padding: 0.28rem 0.55rem;
|
||
border-radius: 0.15rem;
|
||
cursor: pointer;
|
||
transition: color 0.15s, border-color 0.15s, background 0.15s;
|
||
}
|
||
.section-bar .sb-filter button:hover {
|
||
color: var(--text-bright);
|
||
border-color: var(--border-strong);
|
||
}
|
||
.section-bar .sb-filter button.on {
|
||
color: var(--accent);
|
||
border-color: rgba(212, 168, 83, 0.4);
|
||
background: rgba(212, 168, 83, 0.08);
|
||
}
|
||
|
||
/* ============ Featured block (home) ============ */
|
||
.featured {
|
||
display: grid;
|
||
grid-template-columns: minmax(0, 1fr) 12.5rem;
|
||
gap: 3rem;
|
||
padding: 0.5rem 0 2.5rem;
|
||
border-bottom: 1px solid var(--border);
|
||
margin-bottom: 2.5rem;
|
||
align-items: center;
|
||
}
|
||
.feat-main .f-eyebrow {
|
||
font-family: var(--font-mono);
|
||
font-size: 0.65rem;
|
||
color: var(--accent);
|
||
letter-spacing: 0.14em;
|
||
text-transform: uppercase;
|
||
margin-bottom: 0.9rem;
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 0.6rem;
|
||
}
|
||
.feat-main .f-eyebrow .pulse {
|
||
width: 7px;
|
||
height: 7px;
|
||
border-radius: 50%;
|
||
background: var(--accent);
|
||
animation: pulse 2s ease-in-out infinite;
|
||
}
|
||
@keyframes pulse {
|
||
0%, 100% {
|
||
opacity: 1;
|
||
}
|
||
50% {
|
||
opacity: 0.35;
|
||
}
|
||
}
|
||
|
||
.feat-main h2 {
|
||
font-family: var(--font-serif);
|
||
font-weight: 400;
|
||
font-variation-settings: "opsz" 96;
|
||
font-size: clamp(1.6rem, 3vw, 2.3rem);
|
||
line-height: 1.1;
|
||
letter-spacing: -0.02em;
|
||
color: var(--text-bright);
|
||
text-wrap: balance;
|
||
margin-bottom: 1rem;
|
||
}
|
||
.feat-main h2 a {
|
||
color: inherit;
|
||
}
|
||
.feat-main h2 a:hover {
|
||
color: var(--accent);
|
||
}
|
||
.feat-main .dek {
|
||
font-family: var(--font-text);
|
||
font-weight: 300;
|
||
font-size: 1.05rem;
|
||
line-height: 1.6;
|
||
color: var(--text);
|
||
max-width: 40rem;
|
||
margin-bottom: 1.25rem;
|
||
text-wrap: pretty;
|
||
}
|
||
.feat-main .meta {
|
||
display: flex;
|
||
gap: 1.25rem;
|
||
flex-wrap: wrap;
|
||
font-family: var(--font-mono);
|
||
font-size: 0.68rem;
|
||
color: var(--text-muted);
|
||
text-transform: uppercase;
|
||
letter-spacing: 0.1em;
|
||
}
|
||
.feat-main .meta .tag {
|
||
color: var(--tag-color);
|
||
}
|
||
.feat-main .meta .tag::before {
|
||
content: "#";
|
||
opacity: 0.6;
|
||
}
|
||
|
||
.feat-art {
|
||
aspect-ratio: 1;
|
||
border: 1px solid var(--border);
|
||
border-radius: 0.35rem;
|
||
overflow: hidden;
|
||
position: relative;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
}
|
||
.feat-art > div {
|
||
position: absolute;
|
||
inset: 0;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
}
|
||
.feat-art svg {
|
||
width: 100%;
|
||
height: 100%;
|
||
transform: scale(0.49);
|
||
transform-origin: center center;
|
||
display: block;
|
||
}
|
||
.feat-art.has-cover img {
|
||
width: 100%;
|
||
height: 100%;
|
||
object-fit: cover;
|
||
display: block;
|
||
}
|
||
.feat-art:not(.has-cover) .art-spin,
|
||
.feat-art:not(.has-cover) .art-orbit {
|
||
animation: none !important;
|
||
}
|
||
.feat-art .art-draw {
|
||
animation: art-build-slow 18s ease-in-out calc(var(--d, 0s) * 4) infinite;
|
||
}
|
||
.feat-art .art-dot,
|
||
.feat-art .art-pulse-dot {
|
||
animation: art-build-dot-slow 18s ease-in-out calc(var(--d, 0s) * 4) infinite;
|
||
}
|
||
@keyframes art-build-slow {
|
||
0% {
|
||
stroke-dashoffset: 1;
|
||
opacity: 0;
|
||
}
|
||
8% {
|
||
opacity: 1;
|
||
}
|
||
55% {
|
||
stroke-dashoffset: 0;
|
||
opacity: 1;
|
||
}
|
||
85% {
|
||
stroke-dashoffset: 0;
|
||
opacity: 1;
|
||
}
|
||
100% {
|
||
stroke-dashoffset: 0;
|
||
opacity: 0;
|
||
}
|
||
}
|
||
@keyframes art-build-dot-slow {
|
||
0%, 100% {
|
||
opacity: 0;
|
||
}
|
||
15%, 85% {
|
||
opacity: var(--op, 0.6);
|
||
}
|
||
}
|
||
.feat-art::after {
|
||
content: "";
|
||
position: absolute;
|
||
inset: 0;
|
||
background: radial-gradient(
|
||
ellipse at center,
|
||
transparent 60%,
|
||
rgba(12, 21, 32, 0.3) 100%
|
||
);
|
||
pointer-events: none;
|
||
}
|
||
|
||
/* ============ Post list (home) ============ */
|
||
.post-list {
|
||
list-style: none;
|
||
}
|
||
.post-list > li {
|
||
display: grid;
|
||
grid-template-columns: 5rem minmax(0, 1fr) 4.5rem;
|
||
gap: 1.5rem;
|
||
padding: 1.5rem 0;
|
||
border-bottom: 1px solid var(--border);
|
||
align-items: start;
|
||
transition: background 0.2s ease;
|
||
}
|
||
.post-list > li:first-child {
|
||
padding-top: 0.5rem;
|
||
}
|
||
.post-list > li:hover {
|
||
background: linear-gradient(
|
||
to right,
|
||
rgba(212, 168, 83, 0.02),
|
||
transparent 80%
|
||
);
|
||
}
|
||
.post-list .p-art {
|
||
width: 4.75rem;
|
||
height: 4.75rem;
|
||
border: 1px solid var(--border);
|
||
border-radius: 0.25rem;
|
||
background: transparent;
|
||
overflow: hidden;
|
||
}
|
||
.post-list .p-art svg {
|
||
width: 100%;
|
||
height: 100%;
|
||
display: block;
|
||
}
|
||
.post-list .p-body {
|
||
min-width: 0;
|
||
}
|
||
.post-list .p-date {
|
||
font-family: var(--font-mono);
|
||
font-size: 0.64rem;
|
||
color: var(--text-muted);
|
||
letter-spacing: 0.1em;
|
||
text-transform: uppercase;
|
||
margin-bottom: 0.35rem;
|
||
display: flex;
|
||
gap: 0.75rem;
|
||
align-items: center;
|
||
}
|
||
.post-list .p-date .n {
|
||
color: var(--accent);
|
||
opacity: 0.7;
|
||
font-size: 0.6rem;
|
||
}
|
||
.post-list .p-title {
|
||
font-family: var(--font-serif);
|
||
font-weight: 400;
|
||
font-variation-settings: "opsz" 48;
|
||
font-size: 1.35rem;
|
||
line-height: 1.2;
|
||
color: var(--text-bright);
|
||
text-wrap: balance;
|
||
margin-bottom: 0.35rem;
|
||
letter-spacing: -0.01em;
|
||
}
|
||
.post-list .p-title a {
|
||
color: inherit;
|
||
}
|
||
.post-list > li:hover .p-title a {
|
||
color: var(--accent);
|
||
}
|
||
.post-list .p-desc {
|
||
font-family: var(--font-text);
|
||
font-weight: 300;
|
||
font-style: normal;
|
||
font-size: 0.98rem;
|
||
line-height: 1.55;
|
||
color: var(--text);
|
||
margin: 0 0 0.5rem;
|
||
max-width: 48rem;
|
||
text-wrap: pretty;
|
||
}
|
||
.post-list .p-tags {
|
||
display: flex;
|
||
flex-wrap: wrap;
|
||
gap: 0.6rem;
|
||
font-family: var(--font-mono);
|
||
font-size: 0.64rem;
|
||
}
|
||
.post-list .p-tags a {
|
||
color: var(--tag-color);
|
||
letter-spacing: 0.04em;
|
||
}
|
||
.post-list .p-tags a::before {
|
||
content: "#";
|
||
opacity: 0.5;
|
||
}
|
||
.post-list .p-read {
|
||
font-family: var(--font-mono);
|
||
font-size: 0.62rem;
|
||
color: var(--text-muted);
|
||
letter-spacing: 0.06em;
|
||
text-align: right;
|
||
padding-top: 0.35rem;
|
||
}
|
||
.post-list .p-read b {
|
||
display: block;
|
||
font-family: var(--font-serif);
|
||
font-style: normal;
|
||
font-weight: 400;
|
||
font-size: 1.1rem;
|
||
color: var(--text-bright);
|
||
letter-spacing: -0.02em;
|
||
margin-bottom: 0.1rem;
|
||
}
|
||
.post-list .p-read .mini {
|
||
display: block;
|
||
margin-top: 0.25rem;
|
||
font-size: 0.6rem;
|
||
color: var(--text-muted);
|
||
}
|
||
|
||
/* Series row */
|
||
.post-list > li.is-series {
|
||
align-items: stretch;
|
||
}
|
||
.series-wrap {
|
||
grid-column: 2 / span 2;
|
||
padding: 1.1rem 1.2rem;
|
||
border: 1px solid rgba(212, 168, 83, 0.2);
|
||
background: rgba(212, 168, 83, 0.03);
|
||
border-radius: 0.3rem;
|
||
}
|
||
.series-head {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
align-items: center;
|
||
margin-bottom: 0;
|
||
gap: 1rem;
|
||
}
|
||
.series-wrap.is-expanded .series-head {
|
||
margin-bottom: 0.4rem;
|
||
}
|
||
.series-head .s-name {
|
||
font-family: var(--font-serif);
|
||
font-weight: 500;
|
||
font-size: 1.2rem;
|
||
color: var(--text-bright);
|
||
letter-spacing: -0.01em;
|
||
}
|
||
.series-head .s-badge {
|
||
font-family: var(--font-mono);
|
||
font-size: 0.62rem;
|
||
color: var(--accent);
|
||
letter-spacing: 0.08em;
|
||
text-transform: uppercase;
|
||
padding: 0.2rem 0.55rem;
|
||
border: 1px solid rgba(212, 168, 83, 0.35);
|
||
border-radius: 0.15rem;
|
||
white-space: nowrap;
|
||
}
|
||
.series-desc {
|
||
font-family: var(--font-text);
|
||
font-style: normal;
|
||
font-size: 0.95rem;
|
||
line-height: 1.55;
|
||
color: var(--text-muted);
|
||
margin-bottom: 0.9rem;
|
||
display: none;
|
||
}
|
||
.series-parts {
|
||
list-style: none;
|
||
display: none;
|
||
flex-direction: column;
|
||
gap: 0.1rem;
|
||
}
|
||
.series-wrap.is-expanded .series-desc {
|
||
display: block;
|
||
}
|
||
.series-wrap.is-expanded .series-parts {
|
||
display: flex;
|
||
}
|
||
.series-parts li {
|
||
border-top: 1px solid var(--border);
|
||
}
|
||
.series-parts li:first-child {
|
||
border-top: none;
|
||
}
|
||
.series-parts a {
|
||
display: grid;
|
||
grid-template-columns: 4.5rem 1fr auto;
|
||
gap: 1rem;
|
||
align-items: baseline;
|
||
padding: 0.55rem 0;
|
||
color: var(--text);
|
||
}
|
||
.series-parts a:hover {
|
||
color: var(--accent);
|
||
}
|
||
.series-parts .sp-num {
|
||
font-family: var(--font-mono);
|
||
font-size: 0.62rem;
|
||
color: var(--text-muted);
|
||
letter-spacing: 0.08em;
|
||
text-transform: uppercase;
|
||
}
|
||
.series-parts .sp-title {
|
||
font-family: var(--font-text);
|
||
font-weight: 400;
|
||
font-size: 0.95rem;
|
||
color: var(--text-bright);
|
||
text-wrap: balance;
|
||
}
|
||
.series-parts a:hover .sp-title {
|
||
color: var(--accent);
|
||
}
|
||
.series-parts .sp-date {
|
||
font-family: var(--font-mono);
|
||
font-size: 0.62rem;
|
||
color: var(--text-muted);
|
||
letter-spacing: 0.06em;
|
||
}
|
||
.series-toggle {
|
||
display: flex;
|
||
align-items: center;
|
||
background: none;
|
||
border: 1px solid rgba(212, 168, 83, 0.35);
|
||
border-radius: 0.15rem;
|
||
padding: 0.25rem 0.4rem;
|
||
color: var(--accent);
|
||
cursor: pointer;
|
||
transition: background 0.15s, transform 0.2s;
|
||
margin-left: auto;
|
||
}
|
||
.series-toggle:hover {
|
||
background: rgba(212, 168, 83, 0.1);
|
||
}
|
||
.series-toggle svg {
|
||
display: block;
|
||
transition: transform 0.2s;
|
||
}
|
||
.series-wrap.is-expanded .series-toggle svg {
|
||
transform: rotate(180deg);
|
||
}
|
||
|
||
/* ============ Bottom grid: tags + archive ============ */
|
||
.bottom-grid {
|
||
display: grid;
|
||
grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
|
||
gap: 3rem;
|
||
align-items: start;
|
||
margin-top: 3rem;
|
||
padding-top: 2.5rem;
|
||
border-top: 1px solid var(--border-strong);
|
||
}
|
||
.bg-left, .bg-right {
|
||
min-width: 0;
|
||
}
|
||
|
||
.card {
|
||
margin-bottom: 2.5rem;
|
||
}
|
||
.card-title {
|
||
font-family: var(--font-mono);
|
||
font-size: 0.65rem;
|
||
color: var(--text-muted);
|
||
letter-spacing: 0.15em;
|
||
text-transform: uppercase;
|
||
margin-bottom: 1rem;
|
||
padding-bottom: 0.5rem;
|
||
border-bottom: 1px solid var(--border);
|
||
display: flex;
|
||
justify-content: space-between;
|
||
align-items: baseline;
|
||
}
|
||
.card-title .c {
|
||
color: var(--accent);
|
||
}
|
||
|
||
.tagcloud {
|
||
display: flex;
|
||
flex-wrap: wrap;
|
||
gap: 0.4rem;
|
||
}
|
||
.tagcloud a {
|
||
display: inline-flex;
|
||
align-items: baseline;
|
||
gap: 0.35rem;
|
||
font-family: var(--font-mono);
|
||
font-size: 0.74rem;
|
||
color: var(--tag-color);
|
||
padding: 0.25rem 0.55rem;
|
||
border: 1px solid rgba(126, 184, 168, 0.2);
|
||
border-radius: 0.15rem;
|
||
transition: color 0.15s, border-color 0.15s, background 0.15s;
|
||
}
|
||
.tagcloud a::before {
|
||
content: "#";
|
||
opacity: 0.5;
|
||
}
|
||
.tagcloud a .ct {
|
||
font-size: 0.62rem;
|
||
color: var(--text-muted);
|
||
}
|
||
.tagcloud a:hover {
|
||
color: var(--accent);
|
||
border-color: rgba(212, 168, 83, 0.35);
|
||
background: rgba(212, 168, 83, 0.05);
|
||
}
|
||
|
||
.archive-list {
|
||
list-style: none;
|
||
font-family: var(--font-mono);
|
||
font-size: 0.78rem;
|
||
}
|
||
.archive-list li {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
padding: 0.4rem 0;
|
||
border-bottom: 1px solid var(--border);
|
||
color: var(--text-muted);
|
||
}
|
||
.archive-list li:last-child {
|
||
border-bottom: none;
|
||
}
|
||
.archive-list li b {
|
||
color: var(--text-bright);
|
||
font-weight: 400;
|
||
}
|
||
.archive-list li a {
|
||
color: var(--text-muted);
|
||
}
|
||
.archive-list li a:hover {
|
||
color: var(--accent);
|
||
}
|
||
|
||
/* ============ Newsletter ============ */
|
||
.newsletter {
|
||
margin-top: 3.5rem;
|
||
padding: 2.25rem 2rem;
|
||
border: 1px solid var(--border);
|
||
border-radius: 0.35rem;
|
||
background: rgba(255, 255, 255, 0.015);
|
||
display: grid;
|
||
grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr);
|
||
gap: 2.5rem;
|
||
align-items: center;
|
||
}
|
||
.newsletter .nl-title {
|
||
font-family: var(--font-serif);
|
||
font-weight: 400;
|
||
font-size: 1.75rem;
|
||
color: var(--text-bright);
|
||
line-height: 1.15;
|
||
margin-bottom: 0.5rem;
|
||
letter-spacing: -0.01em;
|
||
}
|
||
.newsletter .nl-title em {
|
||
font-style: italic;
|
||
color: var(--accent);
|
||
}
|
||
.newsletter .nl-desc {
|
||
font-family: var(--font-text);
|
||
font-style: normal;
|
||
font-size: 1rem;
|
||
color: var(--text-muted);
|
||
line-height: 1.6;
|
||
}
|
||
.nl-form-wrap {
|
||
min-width: 0;
|
||
}
|
||
.nl-form {
|
||
display: flex;
|
||
flex-direction: row;
|
||
gap: 0.5rem;
|
||
min-width: 0;
|
||
}
|
||
.nl-form input[type="email"] {
|
||
flex: 1 1 auto;
|
||
min-width: 0;
|
||
background: var(--bg);
|
||
border: 1px solid var(--border);
|
||
border-radius: 0.2rem;
|
||
padding: 0.6rem 0.8rem;
|
||
color: var(--text);
|
||
font-family: var(--font-mono);
|
||
font-size: 0.82rem;
|
||
outline: none;
|
||
transition: border-color 0.15s, box-shadow 0.15s;
|
||
}
|
||
.nl-form input[type="email"]:focus {
|
||
border-color: var(--accent);
|
||
box-shadow: 0 0 0 2px rgba(212, 168, 83, 0.2);
|
||
}
|
||
.nl-form input[type="email"]::placeholder {
|
||
color: var(--text-muted);
|
||
}
|
||
.nl-form button {
|
||
flex: 0 0 auto;
|
||
background: var(--accent);
|
||
color: var(--bg);
|
||
border: none;
|
||
border-radius: 0.2rem;
|
||
padding: 0.6rem 1.1rem;
|
||
font-family: var(--font-mono);
|
||
font-size: 0.74rem;
|
||
letter-spacing: 0.08em;
|
||
text-transform: uppercase;
|
||
font-weight: 500;
|
||
cursor: pointer;
|
||
transition: background 0.15s;
|
||
white-space: nowrap;
|
||
}
|
||
.nl-form button:hover {
|
||
background: var(--accent-hover);
|
||
}
|
||
.nl-form button:disabled {
|
||
opacity: 0.6;
|
||
cursor: not-allowed;
|
||
}
|
||
|
||
.nl-count {
|
||
font-family: var(--font-mono);
|
||
font-size: 0.64rem;
|
||
color: var(--text-muted);
|
||
letter-spacing: 0.08em;
|
||
text-transform: uppercase;
|
||
margin-top: 0.7rem;
|
||
padding-top: 0.7rem;
|
||
border-top: 1px dashed var(--border);
|
||
display: flex;
|
||
justify-content: space-between;
|
||
}
|
||
.nl-count b {
|
||
color: var(--accent);
|
||
font-weight: 400;
|
||
}
|
||
|
||
.nl-spinner {
|
||
display: none;
|
||
animation: spin 0.8s linear infinite;
|
||
}
|
||
.newsletter.is-loading .nl-btn-text {
|
||
display: none;
|
||
}
|
||
.newsletter.is-loading .nl-spinner {
|
||
display: inline-block;
|
||
}
|
||
.newsletter.is-success .nl-form {
|
||
display: none;
|
||
}
|
||
.nl-success, .nl-error {
|
||
display: none;
|
||
font-size: 0.88rem;
|
||
margin-top: 0.75rem;
|
||
}
|
||
.newsletter.is-success .nl-success {
|
||
display: block;
|
||
color: var(--tag-color);
|
||
}
|
||
.newsletter.is-error .nl-error {
|
||
display: block;
|
||
color: var(--danger);
|
||
}
|
||
|
||
@keyframes spin {
|
||
to {
|
||
transform: rotate(360deg);
|
||
}
|
||
}
|
||
|
||
/* ============ Post page ============ */
|
||
.progress-top {
|
||
position: fixed;
|
||
top: 0;
|
||
left: 0;
|
||
right: 0;
|
||
height: 2px;
|
||
background: transparent;
|
||
z-index: 50;
|
||
pointer-events: none;
|
||
}
|
||
.progress-top .bar {
|
||
height: 100%;
|
||
width: 0;
|
||
background: var(--accent);
|
||
transition: width 0.08s linear;
|
||
box-shadow: 0 0 8px rgba(212, 168, 83, 0.4);
|
||
}
|
||
|
||
main.post-shell {
|
||
max-width: var(--max-width);
|
||
margin: 0 auto;
|
||
width: 100%;
|
||
padding: 2.5rem 1.5rem 4rem;
|
||
}
|
||
|
||
.mm-art {
|
||
width: 8rem;
|
||
height: 8rem;
|
||
opacity: 0.9;
|
||
flex-shrink: 0;
|
||
}
|
||
.mm-art svg {
|
||
width: 100%;
|
||
height: 100%;
|
||
display: block;
|
||
}
|
||
|
||
/* Header KV box (post meta) */
|
||
.header-box {
|
||
border: 1px solid var(--border);
|
||
border-radius: 0.25rem;
|
||
padding: 0.9rem 1.1rem;
|
||
background: rgba(255, 255, 255, 0.015);
|
||
margin-bottom: 2.5rem;
|
||
font-family: var(--font-mono);
|
||
font-size: 0.72rem;
|
||
}
|
||
.header-box .hb-row {
|
||
display: grid;
|
||
grid-template-columns: 6.5rem minmax(0, 1fr);
|
||
gap: 1rem;
|
||
padding: 0.2rem 0;
|
||
}
|
||
.header-box .hb-k {
|
||
color: var(--text-muted);
|
||
text-transform: uppercase;
|
||
letter-spacing: 0.08em;
|
||
font-size: 0.64rem;
|
||
padding-top: 0.15rem;
|
||
}
|
||
.header-box .hb-v {
|
||
color: var(--text-bright);
|
||
text-wrap: pretty;
|
||
overflow-wrap: anywhere;
|
||
min-width: 0;
|
||
}
|
||
.header-box .hb-v .tag {
|
||
color: var(--tag-color);
|
||
margin-right: 0.6rem;
|
||
}
|
||
.header-box .hb-v .tag::before {
|
||
content: "#";
|
||
opacity: 0.5;
|
||
}
|
||
.header-box .hb-v a {
|
||
color: var(--text-bright);
|
||
border-bottom: 1px dashed var(--border-strong);
|
||
}
|
||
.header-box .hb-v a:hover {
|
||
color: var(--accent);
|
||
border-bottom-color: var(--accent);
|
||
}
|
||
.header-box .hb-v .muted {
|
||
color: var(--text-muted);
|
||
}
|
||
|
||
/* Hero */
|
||
.post-hero {
|
||
display: grid;
|
||
grid-template-columns: minmax(0, 1fr) auto;
|
||
gap: 2.5rem;
|
||
align-items: start;
|
||
margin-bottom: 3rem;
|
||
}
|
||
.post-hero .hero-text {
|
||
min-width: 0;
|
||
}
|
||
.post-hero .eyebrow {
|
||
font-family: var(--font-mono);
|
||
font-size: 0.68rem;
|
||
text-transform: uppercase;
|
||
letter-spacing: 0.15em;
|
||
color: var(--text-muted);
|
||
margin-bottom: 1.25rem;
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 0.75rem;
|
||
}
|
||
.post-hero .eyebrow::after {
|
||
content: "";
|
||
flex: 1;
|
||
height: 1px;
|
||
background: var(--border);
|
||
}
|
||
.post-hero .eyebrow b {
|
||
color: var(--accent);
|
||
font-weight: 400;
|
||
}
|
||
.post-hero h1 {
|
||
font-family: var(--font-serif);
|
||
font-weight: 300;
|
||
font-variation-settings: "opsz" 144;
|
||
font-size: clamp(1.9rem, 4.3vw, 3.15rem);
|
||
line-height: 1.15;
|
||
letter-spacing: -0.02em;
|
||
color: var(--text-bright);
|
||
text-wrap: balance;
|
||
overflow-wrap: break-word;
|
||
margin-bottom: 1.75rem;
|
||
}
|
||
.post-hero .dek {
|
||
font-family: var(--font-serif);
|
||
font-weight: 300;
|
||
font-style: italic;
|
||
font-size: 1.2rem;
|
||
line-height: 1.5;
|
||
color: var(--text);
|
||
text-wrap: balance;
|
||
margin-bottom: 1.5rem;
|
||
}
|
||
.post-hero .byline {
|
||
font-family: var(--font-mono);
|
||
font-size: 0.7rem;
|
||
color: var(--text-muted);
|
||
text-transform: uppercase;
|
||
letter-spacing: 0.12em;
|
||
display: flex;
|
||
gap: 1.5rem;
|
||
flex-wrap: wrap;
|
||
padding-top: 1rem;
|
||
border-top: 1px solid var(--border);
|
||
}
|
||
.post-hero .byline b {
|
||
color: var(--text-bright);
|
||
font-weight: 400;
|
||
}
|
||
.post-hero .byline a {
|
||
color: var(--text-bright);
|
||
}
|
||
.post-hero .byline a:hover {
|
||
color: var(--accent);
|
||
}
|
||
|
||
/* Series strip */
|
||
.series-strip {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 0.5rem;
|
||
margin-bottom: 2rem;
|
||
padding: 0.75rem 0.9rem;
|
||
background: rgba(212, 168, 83, 0.04);
|
||
border: 1px solid rgba(212, 168, 83, 0.2);
|
||
border-radius: 0.25rem;
|
||
font-family: var(--font-mono);
|
||
font-size: 0.7rem;
|
||
}
|
||
.series-strip .label {
|
||
color: var(--accent);
|
||
text-transform: uppercase;
|
||
letter-spacing: 0.08em;
|
||
margin-right: 0.5rem;
|
||
}
|
||
.series-strip .parts {
|
||
display: flex;
|
||
gap: 0.25rem;
|
||
flex: 1;
|
||
min-width: 0;
|
||
}
|
||
.series-strip .parts a, .series-strip .parts .cur {
|
||
flex: 1;
|
||
min-width: 0;
|
||
text-align: center;
|
||
padding: 0.35rem 0.5rem;
|
||
border-radius: 0.15rem;
|
||
color: var(--text-muted);
|
||
background: rgba(255, 255, 255, 0.02);
|
||
transition: color 0.15s, background 0.15s;
|
||
text-overflow: ellipsis;
|
||
overflow: hidden;
|
||
white-space: nowrap;
|
||
}
|
||
.series-strip .parts a:hover {
|
||
color: var(--text-bright);
|
||
background: rgba(255, 255, 255, 0.04);
|
||
}
|
||
.series-strip .parts .cur {
|
||
color: var(--text-bright);
|
||
background: rgba(212, 168, 83, 0.15);
|
||
}
|
||
.series-strip .progress-pct {
|
||
color: var(--text-muted);
|
||
white-space: nowrap;
|
||
}
|
||
.series-strip .progress-pct b {
|
||
color: var(--accent);
|
||
font-weight: 400;
|
||
}
|
||
|
||
/* Post content (serif editorial body) */
|
||
.post-content {
|
||
font-family: var(--font-serif);
|
||
font-weight: 400;
|
||
font-size: 1.15rem;
|
||
line-height: 1.6;
|
||
color: #d4dce4;
|
||
}
|
||
.post-content p {
|
||
margin-bottom: 1.35em;
|
||
text-wrap: pretty;
|
||
}
|
||
.post-content > p:first-of-type .first-word {
|
||
color: var(--accent);
|
||
}
|
||
|
||
.post-content h2 {
|
||
font-family: var(--font-serif);
|
||
font-weight: 400;
|
||
font-variation-settings: "opsz" 72;
|
||
font-size: 1.6rem;
|
||
color: var(--text-bright);
|
||
line-height: 1.15;
|
||
letter-spacing: -0.015em;
|
||
text-wrap: balance;
|
||
margin: 3.5rem 0 1.25rem;
|
||
padding-top: 1.25rem;
|
||
border-top: 1px solid var(--border-strong);
|
||
scroll-margin-top: 1.5rem;
|
||
}
|
||
|
||
.post-content h3 {
|
||
font-family: var(--font-serif);
|
||
font-weight: 500;
|
||
font-style: italic;
|
||
font-size: 1.25rem;
|
||
color: var(--text-bright);
|
||
margin: 2.25rem 0 0.5rem;
|
||
line-height: 1.2;
|
||
}
|
||
.post-content h3::before {
|
||
content: "—";
|
||
color: var(--accent);
|
||
margin-right: 0.5rem;
|
||
opacity: 0.7;
|
||
}
|
||
|
||
.post-content em {
|
||
font-style: italic;
|
||
color: var(--text);
|
||
}
|
||
.post-content strong {
|
||
font-weight: 500;
|
||
color: var(--text-bright);
|
||
}
|
||
.post-content a {
|
||
color: var(--accent);
|
||
border-bottom: 1px solid rgba(212, 168, 83, 0.3);
|
||
transition: border-bottom-color 0.15s, color 0.15s;
|
||
}
|
||
.post-content a:hover {
|
||
color: var(--accent-hover);
|
||
border-bottom-color: var(--accent-hover);
|
||
}
|
||
|
||
.post-content ul, .post-content ol {
|
||
margin: 1.5rem 0 1.5rem 1.5rem;
|
||
padding-left: 0.75rem;
|
||
}
|
||
.post-content li {
|
||
margin-bottom: 0.5rem;
|
||
}
|
||
|
||
.post-content code {
|
||
font-family: var(--font-mono);
|
||
background: rgba(255, 255, 255, 0.04);
|
||
border: 1px solid var(--border);
|
||
padding: 0.08em 0.35em;
|
||
border-radius: 0.2rem;
|
||
font-size: 0.82em;
|
||
color: var(--text-bright);
|
||
}
|
||
.post-content pre {
|
||
background: var(--bg-surface);
|
||
border: 1px solid var(--border);
|
||
border-radius: 0.3rem;
|
||
margin: 1.75rem 0;
|
||
overflow: hidden;
|
||
font-family: var(--font-mono);
|
||
}
|
||
.post-content pre code {
|
||
display: block;
|
||
background: none;
|
||
border: none;
|
||
padding: 1rem 1.25rem;
|
||
font-size: 0.83rem;
|
||
line-height: 1.65;
|
||
color: var(--text);
|
||
overflow-x: auto;
|
||
border-radius: 0;
|
||
}
|
||
|
||
.post-content blockquote {
|
||
font-family: var(--font-serif);
|
||
font-weight: 300;
|
||
font-variation-settings: "opsz" 144;
|
||
font-size: 1.45rem;
|
||
line-height: 1.3;
|
||
color: var(--text-bright);
|
||
margin: 2.5rem 0;
|
||
padding: 1.25rem 0 1.25rem 1.5rem;
|
||
border-top: 1px solid var(--border-strong);
|
||
border-bottom: 1px solid var(--border-strong);
|
||
border-left: 2px solid var(--accent);
|
||
text-wrap: balance;
|
||
font-style: italic;
|
||
}
|
||
|
||
.post-content img {
|
||
max-width: 100%;
|
||
border-radius: 0.375rem;
|
||
margin: 2rem 0;
|
||
}
|
||
|
||
.post-content table {
|
||
width: 100%;
|
||
border-collapse: collapse;
|
||
margin: 2rem 0;
|
||
font-family: var(--font-text);
|
||
font-size: 0.9rem;
|
||
}
|
||
.post-content th, .post-content td {
|
||
padding: 0.6rem 1rem;
|
||
text-align: left;
|
||
border-bottom: 1px solid var(--border);
|
||
}
|
||
.post-content th {
|
||
font-family: var(--font-mono);
|
||
font-size: 0.72rem;
|
||
font-weight: 400;
|
||
color: var(--text-muted);
|
||
text-transform: uppercase;
|
||
letter-spacing: 0.06em;
|
||
}
|
||
|
||
.post-content .mermaid {
|
||
margin: 2rem 0;
|
||
text-align: center;
|
||
font-family: var(--font-text);
|
||
}
|
||
.post-content .mermaid svg {
|
||
max-width: 100%;
|
||
}
|
||
|
||
/* Margin notes rail (right) */
|
||
.margin-notes {
|
||
position: sticky;
|
||
top: 1.5rem;
|
||
align-self: start;
|
||
font-family: var(--font-text);
|
||
font-size: 0.8rem;
|
||
line-height: 1.5;
|
||
color: var(--text-muted);
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 0.2rem;
|
||
}
|
||
.mnote {
|
||
padding: 0.6rem 0 0.7rem 0.9rem;
|
||
border-left: 1px solid var(--border-strong);
|
||
}
|
||
.mnote .mref {
|
||
font-family: var(--font-mono);
|
||
font-size: 0.62rem;
|
||
color: var(--accent);
|
||
letter-spacing: 0.1em;
|
||
text-transform: uppercase;
|
||
display: block;
|
||
margin-bottom: 0.3rem;
|
||
}
|
||
|
||
/* Post footer / nav */
|
||
.post-footer {
|
||
margin-top: 4rem;
|
||
padding-top: 2rem;
|
||
border-top: 1px solid var(--border);
|
||
}
|
||
.footer-title {
|
||
font-family: var(--font-mono);
|
||
font-size: 0.68rem;
|
||
color: var(--text-muted);
|
||
text-transform: uppercase;
|
||
letter-spacing: 0.1em;
|
||
margin-bottom: 1rem;
|
||
}
|
||
.post-nav {
|
||
display: grid;
|
||
grid-template-columns: 1fr 1fr;
|
||
gap: 1rem;
|
||
margin-bottom: 3rem;
|
||
}
|
||
.post-nav .cell {
|
||
padding: 1rem 1.1rem;
|
||
border: 1px solid var(--border);
|
||
border-radius: 0.3rem;
|
||
background: rgba(255, 255, 255, 0.015);
|
||
transition: border-color 0.15s, background 0.15s;
|
||
}
|
||
.post-nav .cell:hover {
|
||
border-color: rgba(212, 168, 83, 0.3);
|
||
background: rgba(212, 168, 83, 0.03);
|
||
}
|
||
.post-nav .cell .dir {
|
||
font-family: var(--font-mono);
|
||
font-size: 0.62rem;
|
||
color: var(--text-muted);
|
||
text-transform: uppercase;
|
||
letter-spacing: 0.1em;
|
||
margin-bottom: 0.4rem;
|
||
}
|
||
.post-nav .cell .ttl {
|
||
font-family: var(--font-serif);
|
||
font-size: 1.02rem;
|
||
line-height: 1.35;
|
||
color: var(--text-bright);
|
||
font-weight: 400;
|
||
text-wrap: balance;
|
||
}
|
||
.post-nav .cell.right {
|
||
text-align: right;
|
||
}
|
||
|
||
.related {
|
||
margin-bottom: 3rem;
|
||
}
|
||
.related-list {
|
||
list-style: none;
|
||
display: grid;
|
||
grid-template-columns: repeat(3, 1fr);
|
||
gap: 0.75rem;
|
||
}
|
||
.related-list li a {
|
||
display: block;
|
||
padding: 0.9rem 1rem;
|
||
border: 1px solid var(--border);
|
||
border-radius: 0.3rem;
|
||
color: var(--text);
|
||
transition: border-color 0.15s, color 0.15s;
|
||
}
|
||
.related-list li a:hover {
|
||
border-color: rgba(212, 168, 83, 0.3);
|
||
color: var(--accent);
|
||
}
|
||
.related-list li .rl-date {
|
||
font-family: var(--font-mono);
|
||
font-size: 0.62rem;
|
||
color: var(--text-muted);
|
||
text-transform: uppercase;
|
||
letter-spacing: 0.08em;
|
||
margin-bottom: 0.35rem;
|
||
display: block;
|
||
}
|
||
.related-list li .rl-title {
|
||
font-family: var(--font-serif);
|
||
font-size: 0.98rem;
|
||
line-height: 1.3;
|
||
color: var(--text-bright);
|
||
}
|
||
.related-list li a:hover .rl-title {
|
||
color: var(--accent);
|
||
}
|
||
|
||
.comments {
|
||
margin-top: 3rem;
|
||
padding-top: 2rem;
|
||
border-top: 1px solid var(--border);
|
||
}
|
||
.comments h2 {
|
||
font-family: var(--font-mono);
|
||
font-size: 0.68rem;
|
||
font-weight: 400;
|
||
color: var(--text-muted);
|
||
letter-spacing: 0.1em;
|
||
text-transform: uppercase;
|
||
margin-bottom: 1.5rem;
|
||
}
|
||
|
||
/* ============ About page ============ */
|
||
.bio {
|
||
font-family: var(--font-text);
|
||
font-weight: 300;
|
||
font-size: 1.05rem;
|
||
line-height: 1.7;
|
||
color: var(--text);
|
||
max-width: 42rem;
|
||
text-wrap: pretty;
|
||
}
|
||
.bio p + p {
|
||
margin-top: 0.9rem;
|
||
}
|
||
.bio em {
|
||
color: var(--text-bright);
|
||
font-style: italic;
|
||
}
|
||
|
||
.now-card {
|
||
display: grid;
|
||
grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr);
|
||
gap: 2.5rem;
|
||
align-items: start;
|
||
padding: 1.75rem;
|
||
border: 1px solid var(--border);
|
||
border-radius: 0.4rem;
|
||
background: linear-gradient(
|
||
to bottom right,
|
||
rgba(212, 168, 83, 0.03),
|
||
transparent 60%
|
||
);
|
||
}
|
||
.now-head {
|
||
display: flex;
|
||
align-items: baseline;
|
||
gap: 0.75rem;
|
||
margin-bottom: 0.9rem;
|
||
}
|
||
.now-badge {
|
||
font-family: var(--font-mono);
|
||
font-size: 0.6rem;
|
||
color: var(--accent);
|
||
letter-spacing: 0.14em;
|
||
text-transform: uppercase;
|
||
padding: 0.2rem 0.5rem;
|
||
border: 1px solid rgba(212, 168, 83, 0.35);
|
||
border-radius: 0.15rem;
|
||
display: inline-flex;
|
||
align-items: center;
|
||
gap: 0.4rem;
|
||
}
|
||
.now-badge .pulse {
|
||
width: 6px;
|
||
height: 6px;
|
||
border-radius: 50%;
|
||
background: var(--accent);
|
||
animation: pulse 2s ease-in-out infinite;
|
||
}
|
||
.now-role {
|
||
font-family: var(--font-serif);
|
||
font-weight: 400;
|
||
font-size: 1.6rem;
|
||
letter-spacing: -0.015em;
|
||
color: var(--text-bright);
|
||
line-height: 1.15;
|
||
}
|
||
.now-role em {
|
||
font-style: italic;
|
||
color: var(--accent);
|
||
}
|
||
.now-since {
|
||
font-family: var(--font-mono);
|
||
font-size: 0.68rem;
|
||
color: var(--text-muted);
|
||
letter-spacing: 0.08em;
|
||
text-transform: uppercase;
|
||
margin-bottom: 1rem;
|
||
}
|
||
.now-desc {
|
||
font-family: var(--font-text);
|
||
font-weight: 300;
|
||
font-size: 1rem;
|
||
line-height: 1.65;
|
||
color: var(--text);
|
||
text-wrap: pretty;
|
||
margin-bottom: 1rem;
|
||
}
|
||
.now-tech {
|
||
display: flex;
|
||
flex-wrap: wrap;
|
||
gap: 0.35rem;
|
||
}
|
||
.now-tech .tp {
|
||
font-family: var(--font-mono);
|
||
font-size: 0.64rem;
|
||
color: var(--text);
|
||
background: rgba(255, 255, 255, 0.03);
|
||
border: 1px solid var(--border);
|
||
padding: 0.18rem 0.5rem;
|
||
border-radius: 0.15rem;
|
||
}
|
||
.now-facts {
|
||
display: grid;
|
||
gap: 0.65rem;
|
||
font-family: var(--font-mono);
|
||
font-size: 0.75rem;
|
||
}
|
||
.now-facts .row {
|
||
display: grid;
|
||
grid-template-columns: 5.5rem 1fr;
|
||
gap: 1rem;
|
||
padding: 0.4rem 0;
|
||
border-bottom: 1px dashed var(--border);
|
||
}
|
||
.now-facts .row:last-child {
|
||
border-bottom: none;
|
||
}
|
||
.now-facts .k {
|
||
color: var(--text-muted);
|
||
text-transform: uppercase;
|
||
letter-spacing: 0.08em;
|
||
font-size: 0.64rem;
|
||
padding-top: 0.15rem;
|
||
}
|
||
.now-facts .v {
|
||
color: var(--text-bright);
|
||
text-wrap: balance;
|
||
}
|
||
.now-facts .v .accent {
|
||
color: var(--accent);
|
||
}
|
||
.now-facts .v a {
|
||
color: var(--text-bright);
|
||
border-bottom: 1px dashed var(--border-strong);
|
||
}
|
||
.now-facts .v a:hover {
|
||
color: var(--accent);
|
||
border-bottom-color: var(--accent);
|
||
}
|
||
|
||
/* Timeline */
|
||
.timeline-wrap {
|
||
display: grid;
|
||
grid-template-columns: 7rem minmax(0, 1fr);
|
||
gap: 2.5rem;
|
||
align-items: start;
|
||
}
|
||
.tl-axis {
|
||
position: sticky;
|
||
top: 2rem;
|
||
font-family: var(--font-mono);
|
||
font-size: 0.68rem;
|
||
color: var(--text-muted);
|
||
}
|
||
.tl-axis .tl-label {
|
||
font-size: 0.6rem;
|
||
letter-spacing: 0.14em;
|
||
text-transform: uppercase;
|
||
color: var(--text-muted);
|
||
margin-bottom: 1rem;
|
||
}
|
||
.tl-axis .tl-bigyr {
|
||
font-family: var(--font-serif);
|
||
font-size: 2rem;
|
||
font-weight: 400;
|
||
color: var(--text-bright);
|
||
letter-spacing: -0.02em;
|
||
line-height: 1;
|
||
}
|
||
.tl-axis .tl-bigyr span {
|
||
color: var(--text-muted);
|
||
font-size: 1rem;
|
||
margin-left: 0.25rem;
|
||
}
|
||
.tl-axis .tl-bigyr-sub {
|
||
font-size: 0.62rem;
|
||
color: var(--text-muted);
|
||
letter-spacing: 0.08em;
|
||
text-transform: uppercase;
|
||
margin-top: 0.2rem;
|
||
}
|
||
.tl-axis .tl-key {
|
||
display: grid;
|
||
gap: 0.45rem;
|
||
font-size: 0.65rem;
|
||
margin-top: 1.2rem;
|
||
padding-top: 1rem;
|
||
border-top: 1px solid var(--border);
|
||
}
|
||
.tl-axis .tl-key .row {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 0.55rem;
|
||
color: var(--text-muted);
|
||
}
|
||
.tl-axis .tl-key .sw {
|
||
width: 8px;
|
||
height: 8px;
|
||
border-radius: 2px;
|
||
flex-shrink: 0;
|
||
}
|
||
.tl-axis .tl-key .sw.lead {
|
||
background: var(--accent);
|
||
}
|
||
.tl-axis .tl-key .sw.found {
|
||
background: var(--tag-color);
|
||
}
|
||
.tl-axis .tl-key .sw.eng {
|
||
background: var(--eng-color);
|
||
}
|
||
.tl-axis .tl-key .sw.other {
|
||
background: var(--text-muted);
|
||
}
|
||
|
||
.tl-track {
|
||
position: relative;
|
||
padding-left: 1.5rem;
|
||
min-width: 0;
|
||
}
|
||
.tl-track::before {
|
||
content: "";
|
||
position: absolute;
|
||
left: 0;
|
||
top: 0.5rem;
|
||
bottom: 0.5rem;
|
||
width: 1px;
|
||
background: linear-gradient(
|
||
to bottom,
|
||
transparent,
|
||
var(--border-strong) 3%,
|
||
var(--border-strong) 97%,
|
||
transparent
|
||
);
|
||
}
|
||
.tl-track::after {
|
||
content: "";
|
||
position: absolute;
|
||
left: -2px;
|
||
top: 0;
|
||
width: 5px;
|
||
height: var(--pct, 16%);
|
||
background: linear-gradient(to bottom, var(--accent), transparent);
|
||
opacity: 0.6;
|
||
border-radius: 2px;
|
||
transition: height 0.4s cubic-bezier(0.22, 1, 0.36, 1);
|
||
}
|
||
.tl-item {
|
||
position: relative;
|
||
padding: 0 0 2.5rem 0;
|
||
transition: opacity 0.2s;
|
||
}
|
||
.tl-item.hidden {
|
||
display: none;
|
||
}
|
||
.tl-dot {
|
||
position: absolute;
|
||
left: -1.75rem;
|
||
top: 0.55rem;
|
||
width: 0.65rem;
|
||
height: 0.65rem;
|
||
border-radius: 50%;
|
||
background: var(--bg);
|
||
border: 2px solid var(--text-muted);
|
||
transition: all 0.2s;
|
||
}
|
||
.tl-item[data-kind="lead"] .tl-dot {
|
||
border-color: var(--accent);
|
||
}
|
||
.tl-item[data-kind="found"] .tl-dot {
|
||
border-color: var(--tag-color);
|
||
}
|
||
.tl-item[data-kind="eng"] .tl-dot {
|
||
border-color: var(--eng-color);
|
||
}
|
||
.tl-item.expanded .tl-dot {
|
||
box-shadow: 0 0 0 4px rgba(212, 168, 83, 0.12);
|
||
transform: scale(1.15);
|
||
}
|
||
.tl-item[data-kind="lead"].expanded .tl-dot {
|
||
background: var(--accent);
|
||
box-shadow: 0 0 0 4px rgba(212, 168, 83, 0.12);
|
||
}
|
||
.tl-item[data-kind="found"].expanded .tl-dot {
|
||
background: var(--tag-color);
|
||
box-shadow: 0 0 0 4px rgba(126, 184, 168, 0.12);
|
||
}
|
||
.tl-item[data-kind="eng"].expanded .tl-dot {
|
||
background: var(--eng-color);
|
||
box-shadow: 0 0 0 4px rgba(61, 123, 138, 0.12);
|
||
}
|
||
|
||
.tl-header {
|
||
display: grid;
|
||
grid-template-columns: minmax(0, 1fr) auto;
|
||
gap: 1rem;
|
||
align-items: baseline;
|
||
cursor: pointer;
|
||
padding: 0.2rem 0;
|
||
user-select: none;
|
||
}
|
||
.tl-header:hover .tl-company {
|
||
color: var(--accent);
|
||
}
|
||
.tl-when {
|
||
font-family: var(--font-mono);
|
||
font-size: 0.64rem;
|
||
color: var(--text-muted);
|
||
letter-spacing: 0.1em;
|
||
text-transform: uppercase;
|
||
margin-bottom: 0.2rem;
|
||
}
|
||
.tl-when .dur {
|
||
color: var(--accent);
|
||
opacity: 0.8;
|
||
margin-left: 0.4rem;
|
||
}
|
||
.tl-company {
|
||
font-family: var(--font-serif);
|
||
font-weight: 400;
|
||
font-size: 1.4rem;
|
||
letter-spacing: -0.015em;
|
||
color: var(--text-bright);
|
||
line-height: 1.2;
|
||
transition: color 0.15s;
|
||
}
|
||
.tl-role {
|
||
font-family: var(--font-serif);
|
||
font-style: italic;
|
||
font-weight: 300;
|
||
font-size: 1rem;
|
||
color: var(--text);
|
||
margin-top: 0.2rem;
|
||
}
|
||
.tl-toggle {
|
||
font-family: var(--font-mono);
|
||
font-size: 0.6rem;
|
||
letter-spacing: 0.1em;
|
||
text-transform: uppercase;
|
||
color: var(--text-muted);
|
||
padding: 0.2rem 0.5rem;
|
||
border: 1px solid var(--border);
|
||
border-radius: 0.15rem;
|
||
transition: all 0.15s;
|
||
white-space: nowrap;
|
||
}
|
||
.tl-header:hover .tl-toggle {
|
||
color: var(--accent);
|
||
border-color: rgba(212, 168, 83, 0.3);
|
||
}
|
||
.tl-item.expanded .tl-toggle {
|
||
color: var(--accent);
|
||
border-color: rgba(212, 168, 83, 0.4);
|
||
background: rgba(212, 168, 83, 0.05);
|
||
}
|
||
.tl-item.expanded .tl-toggle::after {
|
||
content: " −";
|
||
}
|
||
.tl-item:not(.expanded) .tl-toggle::after {
|
||
content: " +";
|
||
}
|
||
|
||
.tl-detail {
|
||
overflow: hidden;
|
||
max-height: 0;
|
||
opacity: 0;
|
||
transition: max-height 0.35s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.25s;
|
||
}
|
||
.tl-item.expanded .tl-detail {
|
||
max-height: 60rem;
|
||
opacity: 1;
|
||
margin-top: 0.9rem;
|
||
}
|
||
.tl-detail-inner {
|
||
padding: 1rem 1.1rem;
|
||
border: 1px solid var(--border);
|
||
border-radius: 0.3rem;
|
||
background: rgba(255, 255, 255, 0.015);
|
||
}
|
||
.tl-detail p {
|
||
font-family: var(--font-text);
|
||
font-weight: 300;
|
||
font-size: 0.98rem;
|
||
line-height: 1.65;
|
||
color: var(--text);
|
||
text-wrap: pretty;
|
||
margin-bottom: 0.7rem;
|
||
}
|
||
.tl-detail p:last-child {
|
||
margin-bottom: 0;
|
||
}
|
||
.tl-detail em {
|
||
color: var(--text-bright);
|
||
font-style: italic;
|
||
}
|
||
.tl-highlights {
|
||
list-style: none;
|
||
display: grid;
|
||
gap: 0.5rem;
|
||
margin-top: 0.9rem;
|
||
padding-top: 0.9rem;
|
||
border-top: 1px dashed var(--border);
|
||
}
|
||
.tl-highlights li {
|
||
font-family: var(--font-mono);
|
||
font-size: 0.72rem;
|
||
color: var(--text);
|
||
padding-left: 1rem;
|
||
position: relative;
|
||
line-height: 1.5;
|
||
}
|
||
.tl-highlights li::before {
|
||
content: "▸";
|
||
position: absolute;
|
||
left: 0;
|
||
color: var(--accent);
|
||
opacity: 0.7;
|
||
}
|
||
.tl-highlights li b {
|
||
color: var(--accent);
|
||
font-weight: 400;
|
||
}
|
||
.tl-sub-role {
|
||
font-family: var(--font-mono);
|
||
font-size: 0.68rem;
|
||
color: var(--text-muted);
|
||
text-transform: uppercase;
|
||
letter-spacing: 0.08em;
|
||
margin: 0.9rem 0 0.4rem;
|
||
padding-top: 0.6rem;
|
||
border-top: 1px dashed var(--border);
|
||
display: flex;
|
||
gap: 0.7rem;
|
||
align-items: baseline;
|
||
flex-wrap: wrap;
|
||
}
|
||
.tl-sub-role:first-of-type {
|
||
border-top: none;
|
||
padding-top: 0;
|
||
margin-top: 0;
|
||
}
|
||
.tl-sub-role .sr-title {
|
||
color: var(--text-bright);
|
||
letter-spacing: -0.005em;
|
||
font-size: 0.9rem;
|
||
text-transform: none;
|
||
font-family: var(--font-serif);
|
||
font-style: italic;
|
||
font-weight: 400;
|
||
}
|
||
.tl-sub-role .sr-when {
|
||
color: var(--accent);
|
||
font-size: 0.6rem;
|
||
}
|
||
|
||
/* Contact CTA (shared by About + redirect) */
|
||
.contact-cta {
|
||
margin-top: 3.5rem;
|
||
padding: 2.25rem 2rem;
|
||
border: 1px solid var(--border);
|
||
border-radius: 0.35rem;
|
||
background: rgba(255, 255, 255, 0.015);
|
||
display: grid;
|
||
grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr);
|
||
gap: 2.5rem;
|
||
align-items: center;
|
||
}
|
||
.contact-cta .cc-title {
|
||
font-family: var(--font-serif);
|
||
font-weight: 400;
|
||
font-size: 1.75rem;
|
||
color: var(--text-bright);
|
||
line-height: 1.15;
|
||
margin-bottom: 0.5rem;
|
||
letter-spacing: -0.01em;
|
||
}
|
||
.contact-cta .cc-title em {
|
||
font-style: italic;
|
||
color: var(--accent);
|
||
}
|
||
.contact-cta .cc-sub {
|
||
font-family: var(--font-text);
|
||
font-style: normal;
|
||
font-size: 1rem;
|
||
color: var(--text-muted);
|
||
line-height: 1.6;
|
||
}
|
||
.cc-links {
|
||
display: grid;
|
||
gap: 0.5rem;
|
||
}
|
||
.cc-link {
|
||
display: grid;
|
||
grid-template-columns: 5.5rem 1fr auto;
|
||
gap: 1rem;
|
||
align-items: center;
|
||
padding: 0.75rem 0.9rem;
|
||
border: 1px solid var(--border);
|
||
border-radius: 0.25rem;
|
||
background: rgba(255, 255, 255, 0.015);
|
||
font-family: var(--font-mono);
|
||
font-size: 0.78rem;
|
||
color: var(--text);
|
||
transition: all 0.15s;
|
||
}
|
||
.cc-link:hover {
|
||
border-color: var(--accent);
|
||
background: rgba(212, 168, 83, 0.04);
|
||
color: var(--text);
|
||
}
|
||
.cc-link .ck {
|
||
color: var(--text-muted);
|
||
text-transform: uppercase;
|
||
font-size: 0.62rem;
|
||
letter-spacing: 0.1em;
|
||
}
|
||
.cc-link .cv {
|
||
color: var(--text-bright);
|
||
min-width: 0;
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
white-space: nowrap;
|
||
}
|
||
.cc-link .arr {
|
||
color: var(--accent);
|
||
opacity: 0.7;
|
||
font-family: var(--font-mono);
|
||
transition: transform 0.15s;
|
||
}
|
||
.cc-link:hover .arr {
|
||
transform: translate(2px, -2px);
|
||
}
|
||
|
||
/* ============ Tag pages ============ */
|
||
.tag-page {
|
||
margin-bottom: 2rem;
|
||
}
|
||
.tag-page h1 {
|
||
font-family: var(--font-serif);
|
||
font-weight: 400;
|
||
font-size: 2.15rem;
|
||
color: var(--text-bright);
|
||
letter-spacing: -0.02em;
|
||
margin-bottom: 0.5rem;
|
||
}
|
||
.tag-page .tag-label {
|
||
font-family: var(--font-mono);
|
||
font-size: 0.72rem;
|
||
color: var(--text-muted);
|
||
letter-spacing: 0.1em;
|
||
text-transform: uppercase;
|
||
margin-bottom: 1rem;
|
||
}
|
||
.back-to-tags {
|
||
font-family: var(--font-mono);
|
||
font-size: 0.8rem;
|
||
color: var(--text-muted);
|
||
}
|
||
.tag-list {
|
||
display: flex;
|
||
flex-wrap: wrap;
|
||
gap: 0.75rem;
|
||
}
|
||
|
||
/* ============ Projects page (kept from old) ============ */
|
||
.project-list {
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 0.5rem;
|
||
}
|
||
.project {
|
||
position: relative;
|
||
padding: 1.75rem 0;
|
||
border-bottom: 1px solid var(--border);
|
||
display: grid;
|
||
grid-template-columns: minmax(0, 1fr) 14rem;
|
||
grid-template-areas:
|
||
"header shot"
|
||
"blurb shot"
|
||
"meta shot";
|
||
column-gap: 3rem;
|
||
row-gap: 0.75rem;
|
||
align-items: start;
|
||
}
|
||
.project-art {
|
||
display: none;
|
||
}
|
||
.project-header {
|
||
grid-area: header;
|
||
display: flex;
|
||
justify-content: space-between;
|
||
align-items: baseline;
|
||
gap: 1.5rem;
|
||
}
|
||
.project-name {
|
||
font-family: var(--font-serif);
|
||
font-size: 1.5rem;
|
||
font-weight: 400;
|
||
letter-spacing: -0.015em;
|
||
color: var(--text-bright);
|
||
}
|
||
.project-links {
|
||
display: flex;
|
||
gap: 1rem;
|
||
}
|
||
.project-link {
|
||
font-family: var(--font-mono);
|
||
font-size: 0.75rem;
|
||
color: var(--accent);
|
||
}
|
||
.project-blurb {
|
||
grid-area: blurb;
|
||
font-family: var(--font-text);
|
||
color: var(--text);
|
||
font-size: 1.02rem;
|
||
line-height: 1.65;
|
||
}
|
||
.project-meta {
|
||
grid-area: meta;
|
||
display: flex;
|
||
flex-wrap: wrap;
|
||
gap: 0.5rem;
|
||
}
|
||
.project-tech {
|
||
font-family: var(--font-mono);
|
||
font-size: 0.7rem;
|
||
color: var(--tag-color);
|
||
padding: 0.2rem 0.5rem;
|
||
border: 1px solid rgba(126, 184, 168, 0.2);
|
||
border-radius: 0.2rem;
|
||
}
|
||
.project-screenshot {
|
||
grid-area: shot;
|
||
align-self: center;
|
||
width: 100%;
|
||
aspect-ratio: 1;
|
||
border: 1px solid var(--border);
|
||
border-radius: 0.35rem;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
color: var(--text-muted);
|
||
font-family: var(--font-mono);
|
||
font-size: 0.75rem;
|
||
opacity: 0.4;
|
||
background: var(--bg-surface);
|
||
overflow: hidden;
|
||
}
|
||
.project-screenshot.has-image {
|
||
border: 1px solid var(--border);
|
||
opacity: 1;
|
||
background: #0d1117;
|
||
}
|
||
.project-screenshot.has-image img {
|
||
width: 100%;
|
||
height: 100%;
|
||
object-fit: cover;
|
||
display: block;
|
||
}
|
||
|
||
/* ============ Not found ============ */
|
||
.not-found {
|
||
text-align: center;
|
||
padding: 4rem 0;
|
||
}
|
||
.not-found h1 {
|
||
font-family: var(--font-serif);
|
||
font-size: 4.5rem;
|
||
font-weight: 300;
|
||
color: var(--accent);
|
||
margin-bottom: 1rem;
|
||
letter-spacing: -0.05em;
|
||
}
|
||
.not-found p {
|
||
color: var(--text-muted);
|
||
font-size: 1.1rem;
|
||
}
|
||
|
||
/* ============ Generative art keyframes ============ */
|
||
@keyframes art-spin {
|
||
to {
|
||
transform: rotate(360deg);
|
||
}
|
||
}
|
||
@keyframes art-draw-in {
|
||
to {
|
||
stroke-dashoffset: 0;
|
||
}
|
||
}
|
||
@keyframes art-dot-in {
|
||
to {
|
||
opacity: var(--op, 0.6);
|
||
}
|
||
}
|
||
@keyframes art-pulse-scale {
|
||
0%, 100% {
|
||
transform: scale(1);
|
||
}
|
||
50% {
|
||
transform: scale(2);
|
||
}
|
||
}
|
||
.art-spin {
|
||
transform-origin: 50% 50%;
|
||
animation: art-spin var(--dur) linear infinite;
|
||
animation-direction: var(--dir);
|
||
}
|
||
.art-draw {
|
||
stroke-dasharray: 1;
|
||
stroke-dashoffset: 1;
|
||
animation: art-draw-in 0.8s ease-out var(--d, 0s) forwards;
|
||
}
|
||
.art-dot {
|
||
opacity: 0;
|
||
animation: art-dot-in 0.4s ease-out var(--d, 0s) forwards;
|
||
}
|
||
.art-pulse-dot {
|
||
opacity: 0;
|
||
transform-box: fill-box;
|
||
transform-origin: center;
|
||
animation:
|
||
art-dot-in 0.4s ease-out var(--d, 0s) forwards,
|
||
art-pulse-scale var(--pd, 3s) ease-in-out calc(var(--d, 0s) + 0.5s)
|
||
infinite;
|
||
}
|
||
.art-orbit {
|
||
transform-origin: 50px 50px;
|
||
animation: art-spin var(--dur, 4s) linear infinite;
|
||
animation-direction: var(--dir, normal);
|
||
}
|
||
|
||
/* ============ Responsive ============ */
|
||
@media (max-width: 1200px) {
|
||
.margin-notes {
|
||
display: none;
|
||
}
|
||
}
|
||
@media (max-width: 900px) {
|
||
.masthead {
|
||
grid-template-columns: 1fr;
|
||
gap: 1.75rem;
|
||
}
|
||
.masthead:has(.portrait-wrap.has-outline) {
|
||
grid-template-columns: 1fr;
|
||
}
|
||
.masthead-right {
|
||
max-width: 12rem;
|
||
}
|
||
.featured {
|
||
grid-template-columns: 1fr;
|
||
gap: 1.75rem;
|
||
}
|
||
.feat-art {
|
||
max-width: 12.5rem;
|
||
}
|
||
.project {
|
||
grid-template-columns: 1fr;
|
||
grid-template-areas:
|
||
"header"
|
||
"shot"
|
||
"blurb"
|
||
"meta";
|
||
column-gap: 0;
|
||
row-gap: 1rem;
|
||
}
|
||
.project-screenshot {
|
||
max-width: 14rem;
|
||
align-self: start;
|
||
}
|
||
.bottom-grid {
|
||
grid-template-columns: 1fr;
|
||
gap: 0;
|
||
}
|
||
.now-card {
|
||
grid-template-columns: 1fr;
|
||
gap: 1.5rem;
|
||
}
|
||
.timeline-wrap {
|
||
grid-template-columns: 1fr;
|
||
gap: 1.5rem;
|
||
}
|
||
.tl-axis {
|
||
position: static;
|
||
display: flex;
|
||
align-items: center;
|
||
flex-wrap: wrap;
|
||
gap: 1rem;
|
||
padding-bottom: 1rem;
|
||
border-bottom: 1px solid var(--border);
|
||
}
|
||
.tl-axis .tl-key {
|
||
display: flex;
|
||
gap: 1rem;
|
||
margin-top: 0;
|
||
padding-top: 0;
|
||
border-top: none;
|
||
}
|
||
.contact-cta {
|
||
grid-template-columns: 1fr;
|
||
gap: 1.25rem;
|
||
padding: 1.5rem;
|
||
}
|
||
.newsletter {
|
||
grid-template-columns: 1fr;
|
||
gap: 1.25rem;
|
||
padding: 1.5rem;
|
||
}
|
||
.post-list > li {
|
||
grid-template-columns: 4rem 1fr;
|
||
gap: 1rem;
|
||
}
|
||
.post-list .p-art {
|
||
width: 4rem;
|
||
height: 4rem;
|
||
}
|
||
.post-list .p-read {
|
||
grid-column: 2;
|
||
text-align: left;
|
||
padding-top: 0.25rem;
|
||
}
|
||
.series-wrap {
|
||
grid-column: 1 / -1;
|
||
}
|
||
}
|
||
@media (max-width: 820px) {
|
||
main.post-shell {
|
||
padding: 2rem 1.25rem 3rem;
|
||
}
|
||
.post-hero {
|
||
grid-template-columns: 1fr;
|
||
gap: 1.25rem;
|
||
}
|
||
.post-hero .mm-art {
|
||
width: 5rem;
|
||
height: 5rem;
|
||
order: -1;
|
||
}
|
||
.progress-top {
|
||
display: block;
|
||
}
|
||
.post-content {
|
||
font-size: 1.05rem;
|
||
}
|
||
.post-hero h1 {
|
||
font-size: 2rem;
|
||
}
|
||
.post-hero .dek {
|
||
font-size: 1.05rem;
|
||
}
|
||
.post-content h2 {
|
||
font-size: 1.4rem;
|
||
}
|
||
.post-content h3 {
|
||
font-size: 1.15rem;
|
||
}
|
||
.post-content pre {
|
||
font-size: 0.78rem;
|
||
}
|
||
.post-content img,
|
||
.post-content video,
|
||
.post-content iframe {
|
||
max-width: 100%;
|
||
height: auto;
|
||
}
|
||
.header-box {
|
||
font-size: 0.78rem;
|
||
}
|
||
.header-box .hb-row {
|
||
flex-wrap: wrap;
|
||
gap: 0.35rem 0.65rem;
|
||
}
|
||
.byline {
|
||
flex-wrap: wrap;
|
||
gap: 0.5rem 1rem;
|
||
}
|
||
.series-strip {
|
||
flex-direction: column;
|
||
align-items: stretch;
|
||
gap: 0.6rem;
|
||
}
|
||
.series-strip .label {
|
||
margin-right: 0;
|
||
text-align: center;
|
||
}
|
||
.series-strip .parts {
|
||
flex-wrap: wrap;
|
||
gap: 0.35rem;
|
||
justify-content: center;
|
||
}
|
||
.series-strip .parts a, .series-strip .parts .cur {
|
||
flex: 0 0 auto;
|
||
min-width: 2.5rem;
|
||
padding: 0.4rem 0.6rem;
|
||
white-space: nowrap;
|
||
overflow: visible;
|
||
text-overflow: clip;
|
||
}
|
||
.series-strip .sp-sep,
|
||
.series-strip .sp-preview {
|
||
display: none;
|
||
}
|
||
.related-list {
|
||
grid-template-columns: 1fr;
|
||
}
|
||
.post-nav {
|
||
grid-template-columns: 1fr;
|
||
gap: 0.5rem;
|
||
}
|
||
.post-nav .cell.right {
|
||
text-align: left;
|
||
}
|
||
}
|
||
@media (max-width: 560px) {
|
||
main.shell {
|
||
padding: 1.5rem 1rem 2.5rem;
|
||
}
|
||
.site-nav {
|
||
padding: 0.85rem 0;
|
||
}
|
||
.site-nav .wrap {
|
||
padding: 0 1rem;
|
||
gap: 0.75rem;
|
||
}
|
||
.site-nav .brand {
|
||
font-size: 0.82rem;
|
||
}
|
||
.site-nav .links {
|
||
gap: 1rem;
|
||
font-size: 0.72rem;
|
||
}
|
||
|
||
.section-bar {
|
||
grid-template-columns: 1fr;
|
||
row-gap: 0.5rem;
|
||
margin-bottom: 1.25rem;
|
||
text-align: center;
|
||
}
|
||
.section-bar .sb-label {
|
||
font-size: 1.15rem;
|
||
}
|
||
.section-bar .sb-filter {
|
||
gap: 0.3rem;
|
||
justify-content: center;
|
||
}
|
||
.section-bar .sb-filter button {
|
||
font-size: 0.6rem;
|
||
padding: 0.22rem 0.45rem;
|
||
}
|
||
|
||
.masthead {
|
||
padding-bottom: 1.5rem;
|
||
margin-bottom: 1.75rem;
|
||
gap: 1.25rem;
|
||
text-align: center;
|
||
}
|
||
.masthead h1 {
|
||
font-size: 2rem;
|
||
margin-bottom: 0.75rem;
|
||
}
|
||
.masthead .dek {
|
||
font-size: 1rem;
|
||
margin-bottom: 1rem;
|
||
margin-left: auto;
|
||
margin-right: auto;
|
||
}
|
||
.mh-stats {
|
||
gap: 0.85rem 1.5rem;
|
||
padding-top: 0.75rem;
|
||
justify-content: center;
|
||
}
|
||
.mh-stats div b {
|
||
font-size: 1.2rem;
|
||
}
|
||
.masthead-right {
|
||
display: none;
|
||
}
|
||
|
||
.featured {
|
||
padding: 0.25rem 0 1.75rem;
|
||
margin-bottom: 1.75rem;
|
||
gap: 1rem;
|
||
text-align: center;
|
||
}
|
||
.feat-art {
|
||
display: none;
|
||
}
|
||
.feat-main .f-eyebrow {
|
||
margin-bottom: 0.65rem;
|
||
font-size: 0.6rem;
|
||
justify-content: center;
|
||
}
|
||
.feat-main h2 {
|
||
font-size: clamp(1.4rem, 6vw, 1.8rem);
|
||
margin-bottom: 0.75rem;
|
||
}
|
||
.feat-main .dek {
|
||
font-size: 0.95rem;
|
||
margin-bottom: 0.9rem;
|
||
margin-left: auto;
|
||
margin-right: auto;
|
||
}
|
||
.feat-main .meta {
|
||
gap: 0.65rem 1rem;
|
||
font-size: 0.62rem;
|
||
justify-content: center;
|
||
}
|
||
|
||
.post-list > li {
|
||
grid-template-columns: 3rem minmax(0, 1fr);
|
||
gap: 0.85rem;
|
||
padding: 1.1rem 0;
|
||
}
|
||
.post-list .p-art {
|
||
width: 3rem;
|
||
height: 3rem;
|
||
}
|
||
.post-list .p-date {
|
||
gap: 0.55rem;
|
||
font-size: 0.6rem;
|
||
margin-bottom: 0.3rem;
|
||
}
|
||
.post-list .p-title {
|
||
font-size: 1.15rem;
|
||
margin-bottom: 0.3rem;
|
||
}
|
||
.post-list .p-desc {
|
||
font-size: 0.92rem;
|
||
margin-bottom: 0.45rem;
|
||
}
|
||
.post-list .p-tags {
|
||
gap: 0.45rem;
|
||
font-size: 0.6rem;
|
||
}
|
||
.post-list .p-read {
|
||
grid-column: 2;
|
||
display: flex;
|
||
align-items: baseline;
|
||
gap: 0.5rem;
|
||
padding-top: 0.4rem;
|
||
font-size: 0.6rem;
|
||
}
|
||
.post-list .p-read b {
|
||
display: inline;
|
||
font-size: 0.82rem;
|
||
margin-bottom: 0;
|
||
}
|
||
.post-list .p-read .mini {
|
||
display: inline;
|
||
margin-top: 0;
|
||
font-size: 0.6rem;
|
||
}
|
||
|
||
.series-wrap {
|
||
padding: 0.9rem 0.9rem;
|
||
}
|
||
.series-head {
|
||
flex-wrap: wrap;
|
||
gap: 0.35rem 0.75rem;
|
||
}
|
||
.series-head .s-name {
|
||
font-size: 1.05rem;
|
||
}
|
||
.series-desc {
|
||
font-size: 0.88rem;
|
||
margin-bottom: 0.7rem;
|
||
}
|
||
.series-wrap.is-expanded .series-head {
|
||
margin-bottom: 0.5rem;
|
||
}
|
||
.series-parts a {
|
||
grid-template-columns: 3.25rem minmax(0, 1fr);
|
||
gap: 0.6rem;
|
||
padding: 0.5rem 0;
|
||
}
|
||
.series-parts .sp-title {
|
||
font-size: 0.9rem;
|
||
grid-column: 2;
|
||
}
|
||
.series-parts .sp-date {
|
||
grid-column: 2;
|
||
font-size: 0.58rem;
|
||
}
|
||
|
||
.bottom-grid {
|
||
margin-top: 2rem;
|
||
padding-top: 1.75rem;
|
||
}
|
||
.card {
|
||
margin-bottom: 1.75rem;
|
||
}
|
||
.card-title {
|
||
font-size: 0.6rem;
|
||
margin-bottom: 0.75rem;
|
||
}
|
||
.tagcloud a {
|
||
font-size: 0.7rem;
|
||
padding: 0.22rem 0.5rem;
|
||
}
|
||
.archive-list {
|
||
font-size: 0.72rem;
|
||
}
|
||
|
||
.newsletter {
|
||
margin-top: 2.25rem;
|
||
padding: 1.25rem;
|
||
gap: 1rem;
|
||
border-radius: 0.25rem;
|
||
text-align: center;
|
||
}
|
||
.newsletter .nl-title {
|
||
font-size: 1.35rem;
|
||
}
|
||
.newsletter .nl-desc {
|
||
font-size: 0.92rem;
|
||
}
|
||
.nl-form {
|
||
flex-direction: column;
|
||
gap: 0.5rem;
|
||
}
|
||
.nl-form button {
|
||
width: 100%;
|
||
padding: 0.7rem 1rem;
|
||
}
|
||
.nl-count {
|
||
gap: 0.5rem;
|
||
flex-wrap: wrap;
|
||
justify-content: center;
|
||
}
|
||
.post-hero h1 {
|
||
font-size: 1.7rem;
|
||
}
|
||
.post-hero .dek {
|
||
font-size: 0.98rem;
|
||
}
|
||
.post-content {
|
||
font-size: 1rem;
|
||
}
|
||
.post-content h2 {
|
||
font-size: 1.25rem;
|
||
margin: 2.5rem 0 1rem;
|
||
}
|
||
.post-content h3 {
|
||
font-size: 1.1rem;
|
||
}
|
||
.post-content pre {
|
||
padding: 0.75rem;
|
||
font-size: 0.74rem;
|
||
border-radius: 0.25rem;
|
||
}
|
||
.post-content blockquote {
|
||
padding-left: 1rem;
|
||
}
|
||
.project-name {
|
||
font-size: 1.25rem;
|
||
}
|
||
.project-blurb {
|
||
font-size: 0.95rem;
|
||
}
|
||
.project-screenshot {
|
||
max-width: 11rem;
|
||
}
|
||
.project-header {
|
||
flex-wrap: wrap;
|
||
gap: 0.5rem 1rem;
|
||
}
|
||
.now-role {
|
||
font-size: 1.1rem;
|
||
}
|
||
.now-card {
|
||
padding: 1.25rem;
|
||
}
|
||
.now-tech {
|
||
gap: 0.35rem;
|
||
}
|
||
.tl-header {
|
||
grid-template-columns: 1fr;
|
||
}
|
||
.tl-toggle {
|
||
justify-self: start;
|
||
margin-top: 0.3rem;
|
||
}
|
||
.tl-company {
|
||
font-size: 1.15rem;
|
||
}
|
||
.tl-when {
|
||
font-size: 0.7rem;
|
||
flex-wrap: wrap;
|
||
}
|
||
.cc-link {
|
||
padding: 0.85rem 1rem;
|
||
gap: 0.4rem;
|
||
flex-wrap: wrap;
|
||
}
|
||
.cc-link .cv {
|
||
font-size: 0.85rem;
|
||
}
|
||
.site-nav .wrap {
|
||
flex-direction: column;
|
||
gap: 0.75rem;
|
||
}
|
||
.site-nav .links {
|
||
gap: 1rem;
|
||
flex-wrap: wrap;
|
||
justify-content: center;
|
||
}
|
||
main.shell {
|
||
padding: 2rem 1rem 3rem;
|
||
}
|
||
main.post-shell {
|
||
padding: 1.75rem 1rem 3rem;
|
||
}
|
||
.header-box {
|
||
padding: 0.85rem 1rem;
|
||
}
|
||
.post-nav .cell {
|
||
padding: 1rem;
|
||
}
|
||
}
|
||
|
||
@media (prefers-reduced-motion: reduce) {
|
||
*, *::before, *::after {
|
||
animation-duration: 0.01ms !important;
|
||
transition-duration: 0.01ms !important;
|
||
}
|
||
html {
|
||
scroll-behavior: auto;
|
||
}
|
||
}
|
||
|
||
/* Visually hidden (a11y) */
|
||
.sr-only {
|
||
position: absolute;
|
||
width: 1px;
|
||
height: 1px;
|
||
padding: 0;
|
||
margin: -1px;
|
||
overflow: hidden;
|
||
clip: rect(0, 0, 0, 0);
|
||
white-space: nowrap;
|
||
border: 0;
|
||
}
|
||
|
||
/* ============ Skip link (a11y / SEO) ============ */
|
||
.skip-link {
|
||
position: absolute;
|
||
left: -9999px;
|
||
top: 0;
|
||
background: var(--accent);
|
||
color: var(--bg);
|
||
padding: 0.5rem 1rem;
|
||
font-family: var(--font-mono);
|
||
font-size: 0.75rem;
|
||
z-index: 999;
|
||
}
|
||
.skip-link:focus {
|
||
left: 1rem;
|
||
top: 1rem;
|
||
}
|
||
|
||
@font-face {
|
||
font-family: 'text';
|
||
font-style: italic;
|
||
font-weight: 100 900;
|
||
src: url('fonts/text-italic-100_900-cyrillic-ext.woff2') format('woff2');
|
||
unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
||
}
|
||
|
||
@font-face {
|
||
font-family: 'text';
|
||
font-style: italic;
|
||
font-weight: 100 900;
|
||
src: url('fonts/text-italic-100_900-cyrillic.woff2') format('woff2');
|
||
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||
}
|
||
|
||
@font-face {
|
||
font-family: 'text';
|
||
font-style: italic;
|
||
font-weight: 100 900;
|
||
src: url('fonts/text-italic-100_900-greek-ext.woff2') format('woff2');
|
||
unicode-range: U+1F00-1FFF;
|
||
}
|
||
|
||
@font-face {
|
||
font-family: 'text';
|
||
font-style: italic;
|
||
font-weight: 100 900;
|
||
src: url('fonts/text-italic-100_900-greek.woff2') format('woff2');
|
||
unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
|
||
}
|
||
|
||
@font-face {
|
||
font-family: 'text';
|
||
font-style: italic;
|
||
font-weight: 100 900;
|
||
src: url('fonts/text-italic-100_900-math.woff2') format('woff2');
|
||
unicode-range: U+0302-0303, U+0305, U+0307-0308, U+0310, U+0312, U+0315, U+031A, U+0326-0327, U+032C, U+032F-0330, U+0332-0333, U+0338, U+033A, U+0346, U+034D, U+0391-03A1, U+03A3-03A9, U+03B1-03C9, U+03D1, U+03D5-03D6, U+03F0-03F1, U+03F4-03F5, U+2016-2017, U+2034-2038, U+203C, U+2040, U+2043, U+2047, U+2050, U+2057, U+205F, U+2070-2071, U+2074-208E, U+2090-209C, U+20D0-20DC, U+20E1, U+20E5-20EF, U+2100-2112, U+2114-2115, U+2117-2121, U+2123-214F, U+2190, U+2192, U+2194-21AE, U+21B0-21E5, U+21F1-21F2, U+21F4-2211, U+2213-2214, U+2216-22FF, U+2308-230B, U+2310, U+2319, U+231C-2321, U+2336-237A, U+237C, U+2395, U+239B-23B7, U+23D0, U+23DC-23E1, U+2474-2475, U+25AF, U+25B3, U+25B7, U+25BD, U+25C1, U+25CA, U+25CC, U+25FB, U+266D-266F, U+27C0-27FF, U+2900-2AFF, U+2B0E-2B11, U+2B30-2B4C, U+2BFE, U+3030, U+FF5B, U+FF5D, U+1D400-1D7FF, U+1EE00-1EEFF;
|
||
}
|
||
|
||
@font-face {
|
||
font-family: 'text';
|
||
font-style: italic;
|
||
font-weight: 100 900;
|
||
src: url('fonts/text-italic-100_900-symbols.woff2') format('woff2');
|
||
unicode-range: U+0001-000C, U+000E-001F, U+007F-009F, U+20DD-20E0, U+20E2-20E4, U+2150-218F, U+2190, U+2192, U+2194-2199, U+21AF, U+21E6-21F0, U+21F3, U+2218-2219, U+2299, U+22C4-22C6, U+2300-243F, U+2440-244A, U+2460-24FF, U+25A0-27BF, U+2800-28FF, U+2921-2922, U+2981, U+29BF, U+29EB, U+2B00-2BFF, U+4DC0-4DFF, U+FFF9-FFFB, U+10140-1018E, U+10190-1019C, U+101A0, U+101D0-101FD, U+102E0-102FB, U+10E60-10E7E, U+1D2C0-1D2D3, U+1D2E0-1D37F, U+1F000-1F0FF, U+1F100-1F1AD, U+1F1E6-1F1FF, U+1F30D-1F30F, U+1F315, U+1F31C, U+1F31E, U+1F320-1F32C, U+1F336, U+1F378, U+1F37D, U+1F382, U+1F393-1F39F, U+1F3A7-1F3A8, U+1F3AC-1F3AF, U+1F3C2, U+1F3C4-1F3C6, U+1F3CA-1F3CE, U+1F3D4-1F3E0, U+1F3ED, U+1F3F1-1F3F3, U+1F3F5-1F3F7, U+1F408, U+1F415, U+1F41F, U+1F426, U+1F43F, U+1F441-1F442, U+1F444, U+1F446-1F449, U+1F44C-1F44E, U+1F453, U+1F46A, U+1F47D, U+1F4A3, U+1F4B0, U+1F4B3, U+1F4B9, U+1F4BB, U+1F4BF, U+1F4C8-1F4CB, U+1F4D6, U+1F4DA, U+1F4DF, U+1F4E3-1F4E6, U+1F4EA-1F4ED, U+1F4F7, U+1F4F9-1F4FB, U+1F4FD-1F4FE, U+1F503, U+1F507-1F50B, U+1F50D, U+1F512-1F513, U+1F53E-1F54A, U+1F54F-1F5FA, U+1F610, U+1F650-1F67F, U+1F687, U+1F68D, U+1F691, U+1F694, U+1F698, U+1F6AD, U+1F6B2, U+1F6B9-1F6BA, U+1F6BC, U+1F6C6-1F6CF, U+1F6D3-1F6D7, U+1F6E0-1F6EA, U+1F6F0-1F6F3, U+1F6F7-1F6FC, U+1F700-1F7FF, U+1F800-1F80B, U+1F810-1F847, U+1F850-1F859, U+1F860-1F887, U+1F890-1F8AD, U+1F8B0-1F8BB, U+1F8C0-1F8C1, U+1F900-1F90B, U+1F93B, U+1F946, U+1F984, U+1F996, U+1F9E9, U+1FA00-1FA6F, U+1FA70-1FA7C, U+1FA80-1FA89, U+1FA8F-1FAC6, U+1FACE-1FADC, U+1FADF-1FAE9, U+1FAF0-1FAF8, U+1FB00-1FBFF;
|
||
}
|
||
|
||
@font-face {
|
||
font-family: 'text';
|
||
font-style: italic;
|
||
font-weight: 100 900;
|
||
src: url('fonts/text-italic-100_900-vietnamese.woff2') format('woff2');
|
||
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
|
||
}
|
||
|
||
@font-face {
|
||
font-family: 'text';
|
||
font-style: italic;
|
||
font-weight: 100 900;
|
||
src: url('fonts/text-italic-100_900-latin-ext.woff2') format('woff2');
|
||
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||
}
|
||
|
||
@font-face {
|
||
font-family: 'text';
|
||
font-style: italic;
|
||
font-weight: 100 900;
|
||
src: url('fonts/text-italic-100_900-latin.woff2') format('woff2');
|
||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||
}
|
||
|
||
@font-face {
|
||
font-family: 'text';
|
||
font-style: normal;
|
||
font-weight: 100 900;
|
||
src: url('fonts/text-normal-100_900-cyrillic-ext.woff2') format('woff2');
|
||
unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
||
}
|
||
|
||
@font-face {
|
||
font-family: 'text';
|
||
font-style: normal;
|
||
font-weight: 100 900;
|
||
src: url('fonts/text-normal-100_900-cyrillic.woff2') format('woff2');
|
||
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||
}
|
||
|
||
@font-face {
|
||
font-family: 'text';
|
||
font-style: normal;
|
||
font-weight: 100 900;
|
||
src: url('fonts/text-normal-100_900-greek-ext.woff2') format('woff2');
|
||
unicode-range: U+1F00-1FFF;
|
||
}
|
||
|
||
@font-face {
|
||
font-family: 'text';
|
||
font-style: normal;
|
||
font-weight: 100 900;
|
||
src: url('fonts/text-normal-100_900-greek.woff2') format('woff2');
|
||
unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
|
||
}
|
||
|
||
@font-face {
|
||
font-family: 'text';
|
||
font-style: normal;
|
||
font-weight: 100 900;
|
||
src: url('fonts/text-normal-100_900-math.woff2') format('woff2');
|
||
unicode-range: U+0302-0303, U+0305, U+0307-0308, U+0310, U+0312, U+0315, U+031A, U+0326-0327, U+032C, U+032F-0330, U+0332-0333, U+0338, U+033A, U+0346, U+034D, U+0391-03A1, U+03A3-03A9, U+03B1-03C9, U+03D1, U+03D5-03D6, U+03F0-03F1, U+03F4-03F5, U+2016-2017, U+2034-2038, U+203C, U+2040, U+2043, U+2047, U+2050, U+2057, U+205F, U+2070-2071, U+2074-208E, U+2090-209C, U+20D0-20DC, U+20E1, U+20E5-20EF, U+2100-2112, U+2114-2115, U+2117-2121, U+2123-214F, U+2190, U+2192, U+2194-21AE, U+21B0-21E5, U+21F1-21F2, U+21F4-2211, U+2213-2214, U+2216-22FF, U+2308-230B, U+2310, U+2319, U+231C-2321, U+2336-237A, U+237C, U+2395, U+239B-23B7, U+23D0, U+23DC-23E1, U+2474-2475, U+25AF, U+25B3, U+25B7, U+25BD, U+25C1, U+25CA, U+25CC, U+25FB, U+266D-266F, U+27C0-27FF, U+2900-2AFF, U+2B0E-2B11, U+2B30-2B4C, U+2BFE, U+3030, U+FF5B, U+FF5D, U+1D400-1D7FF, U+1EE00-1EEFF;
|
||
}
|
||
|
||
@font-face {
|
||
font-family: 'text';
|
||
font-style: normal;
|
||
font-weight: 100 900;
|
||
src: url('fonts/text-normal-100_900-symbols.woff2') format('woff2');
|
||
unicode-range: U+0001-000C, U+000E-001F, U+007F-009F, U+20DD-20E0, U+20E2-20E4, U+2150-218F, U+2190, U+2192, U+2194-2199, U+21AF, U+21E6-21F0, U+21F3, U+2218-2219, U+2299, U+22C4-22C6, U+2300-243F, U+2440-244A, U+2460-24FF, U+25A0-27BF, U+2800-28FF, U+2921-2922, U+2981, U+29BF, U+29EB, U+2B00-2BFF, U+4DC0-4DFF, U+FFF9-FFFB, U+10140-1018E, U+10190-1019C, U+101A0, U+101D0-101FD, U+102E0-102FB, U+10E60-10E7E, U+1D2C0-1D2D3, U+1D2E0-1D37F, U+1F000-1F0FF, U+1F100-1F1AD, U+1F1E6-1F1FF, U+1F30D-1F30F, U+1F315, U+1F31C, U+1F31E, U+1F320-1F32C, U+1F336, U+1F378, U+1F37D, U+1F382, U+1F393-1F39F, U+1F3A7-1F3A8, U+1F3AC-1F3AF, U+1F3C2, U+1F3C4-1F3C6, U+1F3CA-1F3CE, U+1F3D4-1F3E0, U+1F3ED, U+1F3F1-1F3F3, U+1F3F5-1F3F7, U+1F408, U+1F415, U+1F41F, U+1F426, U+1F43F, U+1F441-1F442, U+1F444, U+1F446-1F449, U+1F44C-1F44E, U+1F453, U+1F46A, U+1F47D, U+1F4A3, U+1F4B0, U+1F4B3, U+1F4B9, U+1F4BB, U+1F4BF, U+1F4C8-1F4CB, U+1F4D6, U+1F4DA, U+1F4DF, U+1F4E3-1F4E6, U+1F4EA-1F4ED, U+1F4F7, U+1F4F9-1F4FB, U+1F4FD-1F4FE, U+1F503, U+1F507-1F50B, U+1F50D, U+1F512-1F513, U+1F53E-1F54A, U+1F54F-1F5FA, U+1F610, U+1F650-1F67F, U+1F687, U+1F68D, U+1F691, U+1F694, U+1F698, U+1F6AD, U+1F6B2, U+1F6B9-1F6BA, U+1F6BC, U+1F6C6-1F6CF, U+1F6D3-1F6D7, U+1F6E0-1F6EA, U+1F6F0-1F6F3, U+1F6F7-1F6FC, U+1F700-1F7FF, U+1F800-1F80B, U+1F810-1F847, U+1F850-1F859, U+1F860-1F887, U+1F890-1F8AD, U+1F8B0-1F8BB, U+1F8C0-1F8C1, U+1F900-1F90B, U+1F93B, U+1F946, U+1F984, U+1F996, U+1F9E9, U+1FA00-1FA6F, U+1FA70-1FA7C, U+1FA80-1FA89, U+1FA8F-1FAC6, U+1FACE-1FADC, U+1FADF-1FAE9, U+1FAF0-1FAF8, U+1FB00-1FBFF;
|
||
}
|
||
|
||
@font-face {
|
||
font-family: 'text';
|
||
font-style: normal;
|
||
font-weight: 100 900;
|
||
src: url('fonts/text-normal-100_900-vietnamese.woff2') format('woff2');
|
||
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
|
||
}
|
||
|
||
@font-face {
|
||
font-family: 'text';
|
||
font-style: normal;
|
||
font-weight: 100 900;
|
||
src: url('fonts/text-normal-100_900-latin-ext.woff2') format('woff2');
|
||
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||
}
|
||
|
||
@font-face {
|
||
font-family: 'text';
|
||
font-style: normal;
|
||
font-weight: 100 900;
|
||
src: url('fonts/text-normal-100_900-latin.woff2') format('woff2');
|
||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||
}
|
||
@font-face {
|
||
font-family: 'code';
|
||
font-style: normal;
|
||
font-weight: 400;
|
||
src: url('fonts/code-normal-400-cyrillic-ext.woff2') format('woff2');
|
||
unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
||
}
|
||
|
||
@font-face {
|
||
font-family: 'code';
|
||
font-style: normal;
|
||
font-weight: 400;
|
||
src: url('fonts/code-normal-400-cyrillic.woff2') format('woff2');
|
||
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||
}
|
||
|
||
@font-face {
|
||
font-family: 'code';
|
||
font-style: normal;
|
||
font-weight: 400;
|
||
src: url('fonts/code-normal-400-greek.woff2') format('woff2');
|
||
unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
|
||
}
|
||
|
||
@font-face {
|
||
font-family: 'code';
|
||
font-style: normal;
|
||
font-weight: 400;
|
||
src: url('fonts/code-normal-400-vietnamese.woff2') format('woff2');
|
||
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
|
||
}
|
||
|
||
@font-face {
|
||
font-family: 'code';
|
||
font-style: normal;
|
||
font-weight: 400;
|
||
src: url('fonts/code-normal-400-latin-ext.woff2') format('woff2');
|
||
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||
}
|
||
|
||
@font-face {
|
||
font-family: 'code';
|
||
font-style: normal;
|
||
font-weight: 400;
|
||
src: url('fonts/code-normal-400-latin.woff2') format('woff2');
|
||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||
}
|
||
|
||
@font-face {
|
||
font-family: 'code';
|
||
font-style: normal;
|
||
font-weight: 500;
|
||
src: url('fonts/code-normal-500-cyrillic-ext.woff2') format('woff2');
|
||
unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
|
||
}
|
||
|
||
@font-face {
|
||
font-family: 'code';
|
||
font-style: normal;
|
||
font-weight: 500;
|
||
src: url('fonts/code-normal-500-cyrillic.woff2') format('woff2');
|
||
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
|
||
}
|
||
|
||
@font-face {
|
||
font-family: 'code';
|
||
font-style: normal;
|
||
font-weight: 500;
|
||
src: url('fonts/code-normal-500-greek.woff2') format('woff2');
|
||
unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
|
||
}
|
||
|
||
@font-face {
|
||
font-family: 'code';
|
||
font-style: normal;
|
||
font-weight: 500;
|
||
src: url('fonts/code-normal-500-vietnamese.woff2') format('woff2');
|
||
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
|
||
}
|
||
|
||
@font-face {
|
||
font-family: 'code';
|
||
font-style: normal;
|
||
font-weight: 500;
|
||
src: url('fonts/code-normal-500-latin-ext.woff2') format('woff2');
|
||
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||
}
|
||
|
||
@font-face {
|
||
font-family: 'code';
|
||
font-style: normal;
|
||
font-weight: 500;
|
||
src: url('fonts/code-normal-500-latin.woff2') format('woff2');
|
||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||
}
|
||
@font-face {
|
||
font-family: 'serif';
|
||
font-style: italic;
|
||
font-weight: 300;
|
||
src: url('fonts/serif-italic-300-vietnamese.woff2') format('woff2');
|
||
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
|
||
}
|
||
|
||
@font-face {
|
||
font-family: 'serif';
|
||
font-style: italic;
|
||
font-weight: 300;
|
||
src: url('fonts/serif-italic-300-latin-ext.woff2') format('woff2');
|
||
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||
}
|
||
|
||
@font-face {
|
||
font-family: 'serif';
|
||
font-style: italic;
|
||
font-weight: 300;
|
||
src: url('fonts/serif-italic-300-latin.woff2') format('woff2');
|
||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||
}
|
||
|
||
@font-face {
|
||
font-family: 'serif';
|
||
font-style: italic;
|
||
font-weight: 400;
|
||
src: url('fonts/serif-italic-400-vietnamese.woff2') format('woff2');
|
||
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
|
||
}
|
||
|
||
@font-face {
|
||
font-family: 'serif';
|
||
font-style: italic;
|
||
font-weight: 400;
|
||
src: url('fonts/serif-italic-400-latin-ext.woff2') format('woff2');
|
||
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||
}
|
||
|
||
@font-face {
|
||
font-family: 'serif';
|
||
font-style: italic;
|
||
font-weight: 400;
|
||
src: url('fonts/serif-italic-400-latin.woff2') format('woff2');
|
||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||
}
|
||
|
||
@font-face {
|
||
font-family: 'serif';
|
||
font-style: normal;
|
||
font-weight: 300;
|
||
src: url('fonts/serif-normal-300-vietnamese.woff2') format('woff2');
|
||
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
|
||
}
|
||
|
||
@font-face {
|
||
font-family: 'serif';
|
||
font-style: normal;
|
||
font-weight: 300;
|
||
src: url('fonts/serif-normal-300-latin-ext.woff2') format('woff2');
|
||
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||
}
|
||
|
||
@font-face {
|
||
font-family: 'serif';
|
||
font-style: normal;
|
||
font-weight: 300;
|
||
src: url('fonts/serif-normal-300-latin.woff2') format('woff2');
|
||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||
}
|
||
|
||
@font-face {
|
||
font-family: 'serif';
|
||
font-style: normal;
|
||
font-weight: 400;
|
||
src: url('fonts/serif-normal-400-vietnamese.woff2') format('woff2');
|
||
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
|
||
}
|
||
|
||
@font-face {
|
||
font-family: 'serif';
|
||
font-style: normal;
|
||
font-weight: 400;
|
||
src: url('fonts/serif-normal-400-latin-ext.woff2') format('woff2');
|
||
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||
}
|
||
|
||
@font-face {
|
||
font-family: 'serif';
|
||
font-style: normal;
|
||
font-weight: 400;
|
||
src: url('fonts/serif-normal-400-latin.woff2') format('woff2');
|
||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||
}
|
||
|
||
@font-face {
|
||
font-family: 'serif';
|
||
font-style: normal;
|
||
font-weight: 500;
|
||
src: url('fonts/serif-normal-500-vietnamese.woff2') format('woff2');
|
||
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
|
||
}
|
||
|
||
@font-face {
|
||
font-family: 'serif';
|
||
font-style: normal;
|
||
font-weight: 500;
|
||
src: url('fonts/serif-normal-500-latin-ext.woff2') format('woff2');
|
||
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||
}
|
||
|
||
@font-face {
|
||
font-family: 'serif';
|
||
font-style: normal;
|
||
font-weight: 500;
|
||
src: url('fonts/serif-normal-500-latin.woff2') format('woff2');
|
||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||
}
|