portfolio / styles.css
JBARU's picture
Upload 5 files
a837843 verified
Raw History Blame Contribute Delete
4.95 kB
:root {
--bg: #000000;
--fg: #f2f2f0;
--muted: #9a9a94;
--line: rgba(255, 255, 255, 0.1);
--panel: #111111;
--btn: #f2f2f0;
--btn-fg: #000000;
--danger: #ff6b6b;
--font: "Inter", system-ui, sans-serif;
--serif: "Instrument Serif", Georgia, serif;
}
body.light {
--bg: #f4f3ef;
--fg: #161616;
--muted: #6f6f6b;
--line: rgba(22, 22, 22, 0.1);
--panel: #fff;
--btn: #161616;
--btn-fg: #f4f3ef;
--danger: #b42318;
}
* { box-sizing: border-box; margin: 0; padding: 0; }
html, body { min-height: 100%; }
body {
background: var(--bg);
color: var(--fg);
font-family: var(--font);
font-size: 15px;
line-height: 1.5;
transition: background 0.25s ease, color 0.25s ease;
}
a { color: inherit; text-decoration: none; }
button, input, textarea, select {
font-family: inherit;
color: inherit;
background: transparent;
border: 1px solid var(--line);
}
button { cursor: pointer; }
.hidden { display: none !important; }
.topbar {
position: sticky;
top: 0;
z-index: 20;
display: flex;
align-items: center;
justify-content: space-between;
padding: 22px 32px;
background: color-mix(in srgb, var(--bg) 88%, transparent);
backdrop-filter: blur(12px);
}
.logo {
font-family: var(--serif);
font-size: 22px;
letter-spacing: -0.02em;
}
.ghost, .primary, .danger {
font-size: 13px;
padding: 8px 14px;
border-radius: 999px;
}
.ghost:hover { border-color: var(--fg); }
.primary {
background: var(--btn);
color: var(--btn-fg);
border-color: var(--btn);
}
.danger { border-color: var(--danger); color: var(--danger); }
#app { padding: 12px 32px 80px; }
.hero {
max-width: 640px;
margin: 28px 0 56px;
}
.hero .artist {
font-size: 12px;
letter-spacing: 0.16em;
text-transform: uppercase;
color: var(--muted);
margin-bottom: 10px;
}
.hero h1 {
font-family: var(--serif);
font-size: clamp(40px, 7vw, 72px);
font-weight: 400;
letter-spacing: -0.03em;
line-height: 0.95;
}
.hero p {
margin-top: 18px;
color: var(--muted);
max-width: 46ch;
}
.works {
display: flex;
flex-direction: column;
gap: 72px;
}
.work h2 {
font-size: 14px;
font-weight: 500;
margin-bottom: 6px;
}
.work .cap {
color: var(--muted);
font-size: 14px;
margin-bottom: 16px;
max-width: 62ch;
}
.frames {
display: grid;
gap: 10px;
}
.frames.count-1 { grid-template-columns: 1fr; }
.frames.count-2 { grid-template-columns: 1fr 1fr; }
.frames.count-3 { grid-template-columns: repeat(3, 1fr); }
.frames.count-more { grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); }
.frames img {
width: 100%;
height: auto;
max-height: 85vh;
object-fit: contain;
object-position: center;
display: block;
background: transparent;
cursor: zoom-in;
transition: opacity 0.2s ease;
}
.frames img:hover { opacity: 0.88; }
.footer-note {
margin-top: 80px;
color: var(--muted);
font-size: 12px;
}
.lightbox {
position: fixed;
inset: 0;
z-index: 50;
background: rgba(10, 10, 10, 0.94);
display: flex;
align-items: center;
justify-content: center;
color: #fff;
}
.lightbox img {
max-width: 90vw;
max-height: 84vh;
object-fit: contain;
}
.lb-close, .lb-prev, .lb-next {
position: absolute;
border: 0;
color: #fff;
font-size: 32px;
padding: 8px 14px;
}
.lb-close { top: 16px; right: 20px; }
.lb-prev { left: 12px; }
.lb-next { right: 12px; }
.lb-meta {
position: absolute;
bottom: 18px;
left: 0;
right: 0;
text-align: center;
font-size: 13px;
color: #cfcfcf;
}
.studio {
position: fixed;
top: 0;
right: 0;
bottom: 0;
width: min(400px, 100vw);
background: var(--panel);
border-left: 1px solid var(--line);
z-index: 40;
display: flex;
flex-direction: column;
box-shadow: -16px 0 40px rgba(0,0,0,0.08);
}
.studio-head {
display: flex;
justify-content: space-between;
align-items: center;
padding: 20px;
border-bottom: 1px solid var(--line);
}
.studio-head h2 { font-size: 16px; font-weight: 600; }
.studio-body { overflow: auto; padding: 20px 20px 48px; }
.studio section { margin-bottom: 28px; }
.studio h3 {
font-size: 11px;
letter-spacing: 0.14em;
text-transform: uppercase;
color: var(--muted);
margin-bottom: 12px;
}
.studio label {
display: block;
font-size: 12px;
color: var(--muted);
margin: 10px 0;
}
.studio input, .studio textarea, .studio select {
width: 100%;
margin-top: 6px;
padding: 8px 10px;
background: var(--bg);
border-radius: 6px;
}
.studio .row { display: flex; gap: 8px; flex-wrap: wrap; }
.hint { color: var(--muted); font-size: 13px; margin-bottom: 12px; }
.post-item {
border: 1px solid var(--line);
border-radius: 10px;
padding: 12px;
margin-bottom: 10px;
}
.post-item .row { justify-content: flex-end; margin-top: 8px; }
@media (max-width: 800px) {
.topbar, #app { padding-left: 18px; padding-right: 18px; }
.frames.count-2,
.frames.count-3 { grid-template-columns: 1fr; }
.frames img { max-height: none; }
}