Files
personal-site/static/output.css
T
2026-05-30 16:38:27 +02:00

624 lines
16 KiB
CSS

.theme-root.night {
--bg: #1c1c1c;
--surface: #252525;
--surface2: #2a2a2a;
--border: #363636;
--border2: #ccc7be;
--text: #ffffff;
--muted: #d9d9d9;
--dim: #b0aa9f;
--navback: rgba(28, 28, 28, 0.8);
--accent: #5389ff;
--accent2:#1447b8;
--green:#0eaf74;
--amber:#ffd78e;
}
.theme-root {
--bg:#f7f6f3;
--surface:#ffffff;
--surface2:#f0eeea;
--border:#e2ddd6;
--border2:#ccc7be;
--text:#1a1917;
--muted:#6b6560;
--dim:#b0aa9f;
--accent:#1a56db;
--accent2:#1447b8;
--green:#0a7c52;
--amber:#92620a;
--navback: rgba(247,246,243,0.8)
--ff-mono:'IBM Plex Mono',monospace;
--ff-sans:'IBM Plex Sans',sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0;}
html{font-size:15px;scroll-behavior:smooth;}
body{
background:var(--bg);
color:var(--text);
font-family:var(--ff-sans);
font-weight:300;
line-height:1.7;
min-height:100vh;
}
/* subtle dot grid */
body::before{
content:'';
position:fixed;inset:0;
background-image:radial-gradient(circle, var(--border) 1px, transparent 1px);
background-size:24px 24px;
opacity:0.5;
pointer-events:none;z-index:0;
}
nav{
position:sticky;top:0;z-index:100;
background: var(--navback);
backdrop-filter:blur(10px);
border-bottom:1px solid var(--border);
padding:0 clamp(1rem,5vw,3rem);
display:flex;align-items:center;justify-content:space-between;
height:52px;
}
.nav-logo{
font-family:var(--ff-mono);font-size:0.78rem;font-weight:500;
color:var(--accent);text-decoration:none;
display:flex;align-items:center;gap:6px;
}
.nav-logo::before{content:'>';color:var(--green);font-weight:500;}
.nav-links{display:flex;gap:0.2rem;align-items:center;}
.nav-links a{
font-family:var(--ff-mono);font-size:0.72rem;
color:var(--muted);text-decoration:none;
padding:0.3rem 0.7rem;border-radius:4px;
transition:color 0.15s,background 0.15s;
}
.nav-links a:hover{color:var(--text);background:var(--surface2);}
.nav-links .cta{color:var(--accent);border:1px solid var(--accent);margin-left:0.4rem;}
.nav-links .cta:hover{background:var(--accent2);color:#fff;}
.shell{
position:relative;z-index:1;
display:grid;
grid-template-columns:220px 1fr;
min-height:calc(100vh - 52px);
max-width:1100px;
margin:0 auto;
}
.sidebar-links a.hidden {
opacity: 0;
transition: opacity 0.4s linear;
}
.sidebar-links:hover a.hidden {
opacity: 1;
}
aside{
border-right:1px solid var(--border);
padding:2.5rem 1.5rem;
display:flex;flex-direction:column;gap:1rem;
position:sticky;top:52px;height:calc(100vh - 52px);
overflow-y:auto;
background:var(--surface);
}
.sidebar-label{
font-family:var(--ff-mono);font-size:0.65rem;
letter-spacing:0.2em;text-transform:uppercase;
color:var(--dim);margin-bottom:0.8rem;
}
.sidebar-links{display:flex;flex-direction:column;gap:2px;}
.sidebar-links a{
font-family:var(--ff-mono);font-size:0.78rem;color:var(--muted);
text-decoration:none;padding:0.3rem 0.6rem;border-radius:4px;
transition:color 0.15s,background 0.15s;
display:flex;align-items:center;gap:6px;
}
.sidebar-links a::before{content:'//';color:var(--dim);font-size:0.65rem;}
.sidebar-links a:hover{color:var(--text);background:var(--surface2);}
.skill-list{display:flex;flex-direction:column;gap:4px;}
.skill-item{
font-family:var(--ff-mono);font-size:0.78rem;
color:var(--muted);padding:0.3rem 0.6rem;
border-left:2px solid var(--border2);
transition:border-color 0.15s,color 0.15s;cursor:default;
}
.skill-item:hover{border-color:var(--accent);color:var(--text);}
main{
padding:3rem clamp(1.5rem,4vw,3rem);
display:flex;flex-direction:column;gap:4rem;
}
.hero-eyebrow{
font-family:var(--ff-mono);font-size:0.72rem;color:var(--green);
letter-spacing:0.18em;margin-bottom:1rem;
display:flex;align-items:center;gap:8px;
}
.hero-eyebrow::before{content:'';display:block;width:20px;height:1px;background:var(--green);}
h1{
font-family:var(--ff-mono);
font-size:clamp(1.8rem,4vw,2.8rem);
font-weight:500;color:var(--text);
letter-spacing:-0.02em;line-height:1.1;
}
h1 span{color:var(--accent);}
.hero-bio{
margin-top:1.2rem;font-size:0.9rem;color:var(--muted);
max-width:560px;line-height:1.8;
}
.hero-meta{
margin-top:1.5rem;display:flex;gap:1.5rem;flex-wrap:wrap;
font-family:var(--ff-mono);font-size:0.72rem;color:var(--dim);
}
.hero-meta span{display:flex;align-items:center;gap:5px;}
@keyframes pulse{0%,100%{opacity:1;}50%{opacity:0.35;}}
.section-head{display:flex;align-items:center;gap:10px;margin-bottom:1.8rem;}
.section-head h2{
font-family:var(--ff-mono);font-size:0.72rem;font-weight:400;
letter-spacing:0.25em;text-transform:uppercase;color:var(--muted);
white-space:nowrap;
}
.section-head::after{content:'';flex:1;height:1px;background:var(--border);}
.exp-grid{display:flex;flex-direction:column;gap:8px;}
.exp-card{
background:var(--surface);border:1px solid var(--border);
border-radius:6px;padding:1.4rem 1.5rem;
transition:border-color 0.2s,box-shadow 0.2s;
}
.exp-card:hover{border-color:var(--border2);box-shadow:0 2px 12px rgba(0,0,0,0.06);}
.exp-header{
display:flex;align-items:baseline;justify-content:space-between;
margin-bottom:0.6rem;flex-wrap:wrap;gap:0.5rem;
}
.exp-title{font-family:var(--ff-mono);font-size:0.9rem;font-weight:500;color:var(--text);}
.exp-tag{
font-family:var(--ff-mono);font-size:0.65rem;
letter-spacing:0.1em;text-transform:uppercase;
background:rgba(26,86,219,0.07);color:var(--accent);
border:1px solid rgba(26,86,219,0.2);
padding:2px 8px;border-radius:3px;
}
.exp-body{font-size:0.85rem;color:var(--muted);line-height:1.8;}
.edu-grid{display:flex;flex-direction:column;gap:8px;}
.edu-card{
display:grid;grid-template-columns:80px 1fr;gap:1.2rem;
background:var(--surface);border:1px solid var(--border);
border-radius:6px;padding:1.2rem 1.4rem;
transition:border-color 0.2s,box-shadow 0.2s;
}
.edu-card:hover{border-color:var(--border2);box-shadow:0 2px 12px rgba(0,0,0,0.06);}
.edu-year{font-family:var(--ff-mono);font-size:0.7rem;color:var(--amber);padding-top:2px;line-height:1.6;}
.edu-degree{font-size:0.9rem;font-weight:500;color:var(--text);}
.edu-inst{font-family:var(--ff-mono);font-size:0.75rem;color:var(--muted);margin-top:2px;}
.edu-detail{font-size:0.82rem;color:var(--dim);margin-top:4px;}
.lang-row{display:flex;gap:0.6rem;flex-wrap:wrap;}
.lang-badge{
font-family:var(--ff-mono);font-size:0.78rem;color:var(--text);
background:var(--surface);border:1px solid var(--border);
padding:0.35rem 0.9rem;border-radius:4px;
}
.interests-row{display:flex;gap:0.6rem;flex-wrap:wrap;}
.interest-chip{
font-family:var(--ff-mono);font-size:0.75rem;color:var(--muted);
background:var(--surface);border:1px solid var(--border);
padding:0.3rem 0.75rem;border-radius:4px;
}
.interest-chip::before{content:'# ';color:var(--dim);}
.opinion-grid{display:flex;flex-wrap:wrap;gap:0.6rem;}
.opinion-link{
font-family:var(--ff-mono);font-size:0.78rem;
color:var(--muted);text-decoration:none;
background:var(--surface);border:1px solid var(--border);
padding:0.4rem 0.9rem;border-radius:4px;
display:flex;align-items:center;gap:6px;
transition:border-color 0.2s,color 0.2s,box-shadow 0.2s;
}
.opinion-link::before{content:'→';color:var(--dim);font-size:0.75rem;}
.opinion-link:hover{border-color:var(--accent2);color:var(--text);box-shadow:0 2px 8px rgba(0,0,0,0.06);}
footer{
position:relative;z-index:1;
border-top:1px solid var(--border);
padding:1.4rem clamp(1rem,5vw,3rem);
display:flex;align-items:center;justify-content:space-between;
flex-wrap:wrap;gap:0.5rem;
background:var(--surface);
}
.footer-contact a{font-family:var(--ff-mono);font-size:0.78rem;color:var(--accent);text-decoration:none;}
.footer-contact a:hover{text-decoration:underline;}
.footer-copy{font-family:var(--ff-mono);font-size:0.7rem;color:var(--dim);}
@keyframes fadeUp{from{opacity:0;transform:translateY(10px);}to{opacity:1;transform:translateY(0);}}
.hero{animation:fadeUp 0.6s ease both;}
.exp-card:nth-child(1){animation:fadeUp 0.5s 0.05s ease both;}
.exp-card:nth-child(2){animation:fadeUp 0.5s 0.12s ease both;}
.edu-card:nth-child(1){animation:fadeUp 0.5s 0.08s ease both;}
.edu-card:nth-child(2){animation:fadeUp 0.5s 0.15s ease both;}
@media(max-width:700px){
.shell{grid-template-columns:1fr;}
aside{display:none;}
.edu-card{grid-template-columns:1fr;gap:0.3rem;}
}
.edu-tag {
display: inline-block;
margin-top: 8px;
font-family: 'DM Mono', monospace;
font-size: 9px;
letter-spacing: 0.1em;
text-transform: uppercase;
padding: 3px 5px;
border-radius: 3px;
}
.tag-dropped {
background: var(--surface2);
color: var(--amber);
}
.toplist-ranked li {
display: flex;
align-items: center;
gap: 14px;
counter-increment: rank;
}
.toplist-ranked {
counter-reset: rank;
}
.toplist-ranked li::before {
content: counter(rank);
font-family: 'DM Mono', monospace;
font-size: 11px;
color: var(--muted);
min-width: 16px;
text-align: right;
}
.toplist-ranked li img {
width: 42px;
height: 62px;
object-fit: cover;
border-radius: 4px;
flex-shrink: 0;
}
.toplist-toggle {
display: block;
width: 100%;
text-align: center;
}
.poster-grid {
display: flex;
flex-wrap: wrap;
justify-content: center;
gap: 1.5rem;
padding: 1rem 0;
}
.poster-item {
display: flex;
flex-direction: column;
align-items: center;
width: 120px;
}
.poster-item img {
width: 120px;
height: 180px;
object-fit: cover;
border-radius: 6px;
}
.poster-item p {
margin-top: 8px;
font-size: 12px;
text-align: center;
line-height: 1.4;
}
.game-grid {
justify-content: center;
gap: 1.5rem;
padding: 1rem 0;
}
.game-item {
display: flex;
flex-direction: column;
align-items: center;
width: 180px;
}
.page-header {
display: flex;
flex-direction: column;
gap: 6px;
margin-bottom: 2.5rem;
}
.page-title {
font-family: var(--ff-mono);
font-size: clamp(1rem, 4vw, 2rem);
font-weight: 500;
letter-spacing: -0.02em;
line-height: 1;
color: var(--accent);
}
.page-title::before {
content: '> ';
color: var(--green);
font-weight: 500;
}
.page-sub {
font-family: var(--ff-mono);
font-size: 0.72rem;
color: var(--muted);
letter-spacing: 0.08em;
padding-left: 1.1rem;
}
.posterhover:hover img {
transform: scale(1.07);
}
#rain-canvas {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
pointer-events: none;
z-index: 999;
opacity: 0;
transition: opacity 0.8s ease;
}
#dragon-grid {
position: fixed;
top: 0;
left: 0;
pointer-events: none;
z-index: 999;
opacity: 0.15;
}
.outlink {font-family:var(--ff-mono);font-size:0.78rem;color:var(--accent);text-decoration:none;}
.outlink:hover{text-decoration:underline;}
a{
font-family:var(--ff-mono);font-size:0.78rem;color:var(--muted);
text-decoration:none;padding:0.3rem 0.6rem;border-radius:4px;
transition:color 0.15s,background 0.15s;
display:flex;align-items:center;gap:6px;
}
.rabbit-svg path { fill: gray; transition: fill 0.3s ease; }
.rabbit-svg:hover path { fill: #7F77DD; }
.scene {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 2rem 1rem;
gap: 1rem;
font-family: var(--font-sans);
}
.toggle-wrap {
position: relative;
width: 50px;
height: 25px;
cursor: pointer;
-webkit-tap-highlight-color: transparent;
}
.track {
position: absolute;
inset: 0;
width: 50px;
height: 25px;
border-radius: 12.5px;
transition: background 0.5s ease;
overflow: hidden;
}
.track.day { background: #87CEEB; }
.track.night { background: #1a1a3e; }
.stars {
position: absolute;
inset: 0;
opacity: 0;
transition: opacity 0.4s ease;
}
.night .stars { opacity: 1; }
.star {
position: absolute;
background: white;
border-radius: 50%;
animation: twinkle 2s infinite;
}
.star:nth-child(1) { width:2px; height:2px; top:4px; left:6px; animation-delay:0s; }
.star:nth-child(2) { width:1px; height:1px; top:10px; left:14px; animation-delay:0.4s; }
.star:nth-child(3) { width:1px; height:1px; top:5px; left:22px; animation-delay:0.8s; }
.star:nth-child(4) { width:2px; height:2px; top:14px; left:10px; animation-delay:1.2s; }
.star:nth-child(5) { width:1px; height:1px; top:8px; left:30px; animation-delay:0.2s; }
@keyframes twinkle {
0%,100% { opacity:1; } 50% { opacity:0.3; }
}
.knob {
position: absolute;
top: 3px;
width: 19px;
height: 19px;
border-radius: 50%;
transition: left 0.45s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.4s ease;
display: flex;
align-items: center;
justify-content: center;
z-index: 2;
}
.knob.night {
left: 3px;
background: radial-gradient(circle at 35% 35%, #e8e8ff, #c8c8f8);
box-shadow:
0 0 0 2px rgba(180,180,255,0.18),
0 0 7px 4px rgba(140,140,255,0.35),
0 0 14px 6px rgba(100,100,220,0.18);
}
.knob.day {
left: 28px;
background: radial-gradient(circle at 40% 40%, #fff8c5, #FFD700);
box-shadow:
0 0 0 3px rgba(255,220,0,0.25),
0 0 8px 4px rgba(255,200,0,0.45),
0 0 16px 6px rgba(255,160,0,0.2);
}
.sun-rays {
position: absolute;
inset: -7px;
opacity: 0;
transition: opacity 0.3s ease 0.15s;
pointer-events: none;
}
.knob.day .sun-rays { opacity: 1; }
.ray {
position: absolute;
width: 1.5px;
height: 4px;
background: rgba(255,220,0,0.9);
border-radius: 1px;
left: 50%;
transform-origin: 50% 16px;
margin-left: -0.75px;
}
.moon-crater {
position: absolute;
border-radius: 50%;
background: rgba(140,140,200,0.4);
transition: opacity 0.3s ease;
}
.knob.day .moon-crater { opacity: 0; }
.knob.night .moon-crater { opacity: 1; }
.label {
font-size: 13px;
font-weight: 500;
letter-spacing: 0.03em;
transition: color 0.4s ease;
user-select: none;
}
.label.day-label { color: #B8860B; }
.label.night-label { color: #9090d0; }
.state-label {
font-size: 11px;
color: var(--color-text-secondary);
letter-spacing: 0.05em;
text-transform: uppercase;
}
.row {
display: flex;
align-items: center;
gap: 12px;
}
.copy-block {
background: var(--color-background-secondary);
border: 0.5px solid var(--color-border-tertiary);
border-radius: var(--border-radius-lg);
padding: 1rem 1.25rem;
width: 100%;
max-width: 420px;
}
.copy-block p { margin: 0 0 8px; font-size: 13px; color: var(--color-text-secondary); }
.copy-block code {
font-family: var(--font-mono);
font-size: 12px;
color: var(--color-text-primary);
display: block;
white-space: nowrap;
overflow-x: auto;
}
.copy-btn {
margin-top: 10px;
font-size: 12px;
padding: 4px 10px;
border-radius: var(--border-radius-md);
cursor: pointer;
border: 0.5px solid var(--color-border-secondary);
background: transparent;
color: var(--color-text-secondary);
}
.copy-btn:hover { background: var(--color-background-secondary); }
.Hitchhiker {
max-width: 480px;
width: 100%;
text-align: center;
display: none;
}
.matrix-hidden {
display: none;
color: green;
font-family: var(--ff-mono);
font-size: 0.72rem;
letter-spacing: 0.08em;
padding-left: 1.1rem;
}
.dot {
width: 6px;
height: 6px;
border-radius: 50%;
display: inline-block;
animation: pulse 2s infinite;
}
.dot--available { background: var(--green); }
.dot--busy { background: red; }
/* styles2.css */
.overlay {
position: fixed;
inset: 0; /* top/right/bottom/left: 0 */
background: rgba(0, 0, 0, 0.6); /* semi-transparent dark */
z-index: 100;
display: none;
align-items: center;
justify-content: center;
}
button {
font-family:var(--ff-mono);font-size:0.65rem;
letter-spacing:0.1em;text-transform:uppercase;
background:rgba(26,86,219,0.07);color:var(--accent);
border:1px solid rgba(26,86,219,0.2);
padding:2px 8px;border-radius:3px;
}
button:hover {
border:1px solid rgb(26, 87, 219);
}
.hidden {
display: none;
}