/* ── CASE STUDY HERO ─────────────────────────────── */ .hero--cs { height: auto; min-height: 0; padding-top: 7rem; } .hero--cs .hero-headline .line2 { font-size: 7.5vw; margin-left: 0; text-transform: none; letter-spacing: 0; padding-top: 0.5rem; } @media (max-width: 768px) { .hero--cs .hero-headline .line2 { font-size: 8vw; } } /* ── PORTFOLIO GRID ──────────────────────────────── */ .portfolio-section { padding: 6rem 2.5rem; } .portfolio-header { border-top: 1px solid var(--dark); padding-top: 1rem; margin-bottom: 3rem; } .portfolio-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 2.5rem; } .project-card { display: flex; flex-direction: column; cursor: pointer; } .project-card--wip { opacity: 0.45; pointer-events: none; } /* — Thumbnail — */ .project-card__thumb { position: relative; aspect-ratio: 4 / 3; overflow: hidden; background: var(--dark); } .project-card__thumb img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 0.45s cubic-bezier(0.165, 0.84, 0.44, 1); } .project-card:hover .project-card__thumb img { transform: scale(1.05); } .project-card__label { position: absolute; top: 0; left: 0; font-family: monospace; font-size: 0.65rem; font-weight: 400; color: var(--bg); background: var(--accent); padding: 0.3rem 0.75rem; z-index: 2; letter-spacing: 0.1em; text-transform: uppercase; } .project-card__badge { position: absolute; top: 1rem; right: 1rem; background: var(--neon); color: var(--dark); font-family: var(--general); font-size: 0.65rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; padding: 6px 12px; opacity: 0; z-index: 2; transition: opacity 0.25s ease; } .project-card:hover .project-card__badge { opacity: 1; } /* — Body — */ .project-card__body { padding: 1.25rem 0; border-bottom: 1px solid var(--dark); display: flex; flex-direction: column; flex: 1; transition: border-color 0.2s ease; } .project-card:hover .project-card__body { border-color: var(--accent); } .project-card__title { font-family: var(--clash); font-size: clamp(1.4rem, 2.2vw, 2rem); font-weight: 700; text-transform: uppercase; letter-spacing: -0.02em; line-height: 1; color: var(--dark); margin-bottom: 0.6rem; } .project-card__desc { font-family: var(--general); font-size: 1rem; color: var(--mid); line-height: 1.6; flex: 1; } /* — Footer row — */ .project-card__footer { display: flex; justify-content: space-between; align-items: center; margin-top: 1rem; } .project-card__year { font-family: var(--general); font-size: 0.65rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.1em; color: var(--mid); } .project-card__arrow { display: flex; align-items: center; justify-content: center; width: 2rem; height: 2rem; border: 1px solid var(--accent); font-size: 1rem; color: var(--accent); flex-shrink: 0; transition: background 0.15s, color 0.15s; } .project-card:hover .project-card__arrow { background: var(--accent); color: var(--bg); } /* ── CONTACT CTA (portfolio page variant) ─────────── */ .contact-section--slim { padding: 5rem 2.5rem 4.5rem; } /* ── META BAR ────────────────────────────────────── */ .meta-bar { border-top: 1px solid var(--dark); border-bottom: 1px solid var(--dark); padding: 0 2.5rem; display: grid; grid-template-columns: repeat(4, 1fr); background: var(--bg); } .meta-col { padding: 2rem 0; border-right: 1px solid rgba(27,14,13,0.15); } .meta-col:last-child { border-right: none; } .meta-col:not(:first-child) { padding-left: 2rem; } .meta-col-label { font-family: var(--general); font-size: 0.6rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.15em; color: var(--mid); opacity: 0.65; margin-bottom: 0.5rem; display: block; } .meta-col-value { font-family: var(--clash); font-size: 1rem; font-weight: 500; text-transform: uppercase; color: var(--dark); letter-spacing: -0.01em; } /* ── CS OVERVIEW ─────────────────────────────────── */ .cs-overview { display: grid; grid-template-columns: repeat(12, 1fr); gap: 2rem; padding: 6rem 2.5rem; } .cs-overview-label { grid-column: span 4; border-top: 1px solid var(--dark); padding-top: 1rem; } .cs-overview-body { grid-column: span 8; border-top: 1px solid var(--dark); padding-top: 1rem; } .cs-overview-text { font-family: var(--general); font-size: clamp(1rem, 1.4vw, 1.25rem); color: var(--mid); line-height: 1.6; } /* ── SCREENSHOTS ─────────────────────────────────── */ .screenshots-section { padding: 5rem 2.5rem; } .screenshots-label { border-top: 1px solid var(--dark); padding-top: 1rem; margin-bottom: 3rem; } /* Browser chrome frame */ .browser-frame { background: var(--dark); border-radius: 0; } .browser-bar { display: flex; align-items: center; gap: 0.75rem; padding: 0.75rem 1.25rem; border-bottom: 1px solid rgba(255,255,255,0.06); } .browser-dots { display: flex; gap: 6px; flex-shrink: 0; } .browser-dot { width: 8px; height: 8px; border-radius: 50%; } .browser-dot--red { background: var(--accent); } .browser-dot--beige { background: var(--bg); } .browser-dot--green { background: var(--neon); } .browser-url { font-family: var(--general); font-size: 0.7rem; color: rgba(227,226,222,0.4); letter-spacing: 0.02em; } .browser-frame img { width: 100%; display: block; } .browser-scroll-wrap { position: relative; } .browser-scroll-wrap::after { content: 'SCROLL ↓'; position: absolute; top: 0; left: 0; right: 0; height: 80px; background: linear-gradient(to bottom, rgba(27,14,13,0.9), transparent); display: flex; justify-content: center; align-items: flex-start; padding-top: 1rem; font-family: monospace; font-size: 0.65rem; letter-spacing: 0.25em; text-shadow: 0 0 8px var(--neon); color: var(--neon); pointer-events: none; z-index: 2; } .browser-scroll { max-height: 560px; overflow-y: scroll; scrollbar-width: thin; scrollbar-color: var(--accent) var(--dark); } /* Full-width hero screenshot */ .screenshot-hero { margin-bottom: 4rem; } /* 2-col screenshot grid */ .screenshot-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 2rem; } .screenshot-card-label { font-family: var(--general); font-size: 0.7rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.12em; color: var(--mid); margin-bottom: 0.5rem; display: block; } .screenshot-card-desc { font-family: var(--general); font-size: 0.9rem; color: var(--mid); line-height: 1.6; margin-bottom: 1.25rem; } /* ── PROJECT NAV ─────────────────────────────────── */ .project-nav { background: var(--dark); display: flex; justify-content: space-between; align-items: center; padding: 3rem 2.5rem; border-top: 1px solid rgba(227,226,222,0.1); } .project-nav-link { font-family: var(--clash); font-size: 0.85rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; color: var(--bg); position: relative; transition: color 0.2s; } .project-nav-link::after { content: ''; position: absolute; bottom: -4px; left: 0; width: 100%; height: 2px; background: var(--neon); transform: scaleX(0); transform-origin: right; transition: transform 0.25s cubic-bezier(0.165, 0.84, 0.44, 1); } .project-nav-link:hover::after { transform: scaleX(1); transform-origin: left; } .project-nav-link:hover { color: var(--neon); } /* ── RESPONSIVE ─────────────────────────────────── */ @media (max-width: 960px) { .cs-overview { grid-template-columns: 1fr; gap: 1rem; } .cs-overview-label, .cs-overview-body { grid-column: span 1; } .meta-bar { grid-template-columns: repeat(2, 1fr); } .meta-col:nth-child(2) { border-right: none; } .meta-col:nth-child(3) { border-right: 1px solid rgba(27,14,13,0.15); } } @media (max-width: 768px) { .portfolio-section { padding: 4rem 1.5rem; } .portfolio-grid { grid-template-columns: 1fr; gap: 3rem; } .meta-bar { grid-template-columns: repeat(2, 1fr); padding: 0 1.5rem; } .meta-col:nth-child(2) { border-right: none; } .meta-col:nth-child(3) { border-right: 1px solid rgba(27,14,13,0.15); border-top: 1px solid rgba(27,14,13,0.15); padding-left: 0; } .meta-col:nth-child(4) { border-top: 1px solid rgba(27,14,13,0.15); } .cs-overview { padding: 4rem 1.5rem; } .screenshots-section { padding: 4rem 1.5rem; } .screenshot-grid { grid-template-columns: 1fr; } .project-nav { padding: 2rem 1.5rem; flex-direction: column; gap: 1.5rem; align-items: flex-start; } }