levkin.ca/stack/stack.css
ilia 21c75cdcba Rebuild stack-folder with sticky tab rail and site previews.
L0–L7 folders stack on scroll with aligned max depth, labeled tabs that
stay consistent when L7 joins the rail, Cal embeds, preview screenshots,
Playwright tests, and updated README.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-21 21:30:05 -04:00

120 lines
4.5 KiB
CSS

@import '../shared/stack-vars.css';
@import '../shared/stack-layout.css';
:root {
--mono: 'IBM Plex Mono', ui-monospace, monospace;
--sans: 'Instrument Sans', system-ui, sans-serif;
}
* { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
font-family: var(--sans);
background: #0e0e10;
color: #e8e6e3;
line-height: 1.5;
}
.nav {
position: fixed; top: 0; left: 0; right: 0; z-index: 100;
display: flex; align-items: center; gap: 1rem;
padding: 0.55rem 1rem; font-family: var(--mono); font-size: 0.62rem;
background: rgba(14, 14, 16, 0.92); backdrop-filter: blur(8px);
border-bottom: 1px solid rgba(255,255,255,0.05);
}
.nav a { color: #6b6966; text-decoration: none; }
.nav a:hover { color: #c4a574; }
.variants { margin-left: auto; color: #4a4844; }
.depth { color: #c4a574; font-weight: 600; }
.stack-mount {
padding: var(--stack-nav) 1rem 0;
max-width: 560px;
margin: 0 auto;
}
/* Compact sticky card — click brings to front */
.layer:not(.layer-6) {
margin-bottom: var(--stack-scroll-slot);
}
.layer {
position: sticky;
border-radius: 8px;
border: 1px solid rgba(255,255,255,0.08);
box-shadow: 0 12px 36px rgba(0,0,0,0.5);
cursor: pointer;
transition: box-shadow 0.2s;
}
.layer.is-front {
z-index: 100 !important;
box-shadow: 0 16px 48px rgba(0,0,0,0.65);
}
.layer-0 { top: var(--stack-stick); z-index: 1; background: #1c1c20; }
.layer-1 { top: calc(var(--stack-stick) + var(--stack-step)); z-index: 2; background: #24242c; }
.layer-2 { top: calc(var(--stack-stick) + var(--stack-step) * 2); z-index: 3; background: #2c2c36; }
.layer-3 { top: calc(var(--stack-stick) + var(--stack-step) * 3); z-index: 4; background: #343440; }
.layer-4 { top: calc(var(--stack-stick) + var(--stack-step) * 4); z-index: 5; background: #3c3c4a; }
.layer-5 { top: calc(var(--stack-stick) + var(--stack-step) * 5); z-index: 6; background: #444454; }
.layer-6 { top: calc(var(--stack-stick) + var(--stack-step) * 6); z-index: 7; background: #4c4c5e; margin-bottom: 0; }
.layer-inner { padding: 0.95rem 1.15rem 1.05rem; }
.layer-head {
display: flex; flex-wrap: wrap; align-items: center; gap: 0.35rem 0.65rem;
margin-bottom: 0.65rem; padding-bottom: 0.5rem;
border-bottom: 1px solid rgba(255,255,255,0.06);
font-family: var(--mono); font-size: 0.6rem;
}
.layer-id {
color: #c4a574; font-weight: 600; background: none; border: none;
font-family: var(--mono); font-size: 0.6rem; cursor: pointer; padding: 0;
}
.layer-id:hover { text-decoration: underline; }
.layer-name { color: #6b6966; text-transform: uppercase; letter-spacing: 0.1em; }
.layer-link { margin-left: auto; color: #8b9cb3; text-decoration: none; font-size: 0.58rem; }
.layer h1 { font-size: 1.5rem; font-weight: 600; letter-spacing: -0.03em; }
.layer h2 { font-size: 1.05rem; font-weight: 600; margin-bottom: 0.3rem; }
.tagline { font-family: var(--mono); font-size: 0.65rem; color: #6b6966; margin-bottom: 0.4rem; }
.layer-copy { font-size: 0.9rem; color: #a8a6a1; }
.chips { display: flex; flex-wrap: wrap; gap: 0.3rem; margin: 0.5rem 0; }
.chips span {
font-family: var(--mono); font-size: 0.55rem; padding: 0.15rem 0.4rem;
background: rgba(196,165,116,0.1); color: #c4a574; border: 1px solid rgba(196,165,116,0.2); border-radius: 3px;
}
.avail { font-family: var(--mono); font-size: 0.62rem; color: #7eb87a; }
.contact-row { display: flex; flex-wrap: wrap; gap: 0.45rem; margin: 0.65rem 0 0.4rem; }
.btn {
font-family: var(--mono); font-size: 0.68rem; padding: 0.45rem 0.75rem;
background: #c4a574; color: #0e0e10; text-decoration: none; font-weight: 600; border-radius: 4px;
}
.btn-ghost { background: transparent; color: #c4a574; border: 1px solid rgba(196,165,116,0.35); }
.guarantees { font-family: var(--mono); font-size: 0.58rem; color: #5a5854; }
.site-foot {
display: flex; justify-content: space-between;
max-width: 560px; margin: 0 auto;
padding: 0 1.5rem 2.5rem; font-family: var(--mono); font-size: 0.6rem; color: #4a4844;
}
.site-foot a { color: #4a4844; text-decoration: none; }
.stack-ruler {
position: fixed; right: max(0.5rem, calc(50% - 300px)); top: 50%; transform: translateY(-50%);
z-index: 50; display: flex; flex-direction: column; gap: 0.12rem;
font-family: var(--mono); font-size: 0.48rem; color: #2a2a30;
}
.stack-ruler button {
background: none; border: none; color: inherit; font: inherit; cursor: pointer; padding: 0.1rem 0; text-align: right;
}
.stack-ruler button:hover,
.stack-ruler button.active { color: #c4a574; }
@media (max-width: 700px) {
:root { --stack-step: 1.5rem; }
.variants { display: none; }
}