.page{position:relative;max-width:1180px;margin:0 auto;padding:0 clamp(20px,5vw,56px);overflow-x:clip}.grain{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:50;opacity:.5;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04 0'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E")}.site-header{display:flex;align-items:center;justify-content:space-between;padding:28px 0;border-bottom:1px solid var(--line);animation:fade-down .7s .05s cubic-bezier(.22,1,.36,1) both}.brand{display:flex;align-items:center;gap:12px}.brand-logo{width:34px;height:34px}.brand-name{font-family:var(--font-mono);font-size:15px;font-weight:500;letter-spacing:.18em;text-transform:uppercase}.header-nav{display:flex;align-items:center;gap:clamp(16px,3vw,32px)}.header-nav a{font-family:var(--font-mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);padding:6px 0;border-bottom:2px solid transparent;transition:color .2s ease,border-color .2s ease}.header-nav a .arrow{display:inline-block;margin-left:5px;transition:transform .2s ease}.header-nav a:hover{color:var(--ink);border-color:var(--green)}.header-nav a:hover .arrow{transform:translate(2px,-2px)}.hero{padding:clamp(64px,11vh,130px) 0 clamp(56px,9vh,110px)}.eyebrow{font-family:var(--font-mono);font-size:12px;letter-spacing:.22em;text-transform:uppercase;color:var(--green);margin:0 0 24px;animation:fade-down .7s .15s cubic-bezier(.22,1,.36,1) both}.hero h1{font-family:var(--font-display);font-weight:560;font-size:clamp(44px,8.5vw,96px);line-height:1.02;letter-spacing:-.02em;margin:0;animation:fade-up .9s .25s cubic-bezier(.22,1,.36,1) both}.hero h1 em{font-style:italic;font-weight:420;color:var(--green)}.hero-sub{max-width:540px;font-size:clamp(16px,2vw,19px);color:var(--ink-soft);margin:32px 0 0;animation:fade-up .9s .4s cubic-bezier(.22,1,.36,1) both}.hero-index{display:flex;flex-wrap:wrap;gap:10px 28px;margin-top:48px;padding-top:28px;border-top:1px solid var(--line);animation:fade-up .9s .55s cubic-bezier(.22,1,.36,1) both}.hero-index a{font-family:var(--font-mono);font-size:13px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink);padding:6px 0;border-bottom:2px solid transparent;transition:border-color .2s ease,color .2s ease}.hero-index a span{color:var(--green);margin-right:6px}.hero-index a:hover{border-color:var(--green)}.project{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(32px,5vw,72px);align-items:center;padding:clamp(64px,10vh,120px) 0;border-top:1px solid var(--line);opacity:0;transform:translateY(36px);transition:opacity .9s cubic-bezier(.22,1,.36,1),transform .9s cubic-bezier(.22,1,.36,1)}.project.revealed{opacity:1;transform:translateY(0)}.project.flipped .project-info{order:2}.project.flipped .project-shot{order:1}.project-number{font-family:var(--font-mono);font-size:13px;letter-spacing:.2em;color:var(--accent);display:inline-block;margin-bottom:18px}.project-number:after{content:"";display:inline-block;width:48px;height:1px;background:var(--accent);vertical-align:middle;margin-left:14px}.project-name{font-family:var(--font-display);font-weight:600;font-size:clamp(34px,4.5vw,52px);line-height:1.05;letter-spacing:-.015em;margin:0 0 10px}.project-tagline{font-family:var(--font-display);font-style:italic;font-weight:420;font-size:clamp(18px,2.2vw,22px);color:var(--accent);margin:0 0 20px}.project-description{font-size:16px;color:var(--ink-soft);margin:0 0 24px}.project-features{list-style:none;margin:0 0 24px;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:10px 18px}.project-features li{position:relative;padding-left:18px;font-size:14px;font-weight:500}.project-features li:before{content:"";position:absolute;left:0;top:8px;width:8px;height:8px;border-radius:2px;background:var(--accent)}.project-stack{font-family:var(--font-mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);margin:0 0 28px}.project-link{display:inline-flex;align-items:center;gap:12px;font-family:var(--font-mono);font-size:14px;font-weight:500;letter-spacing:.04em;padding:13px 22px;border:1.5px solid var(--ink);border-radius:999px;background:transparent;color:var(--ink);transition:background .25s ease,color .25s ease,transform .25s ease}.project-link .arrow{transition:transform .25s ease}.project-link:hover{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast);transform:translateY(-2px)}.project-link:hover .arrow{transform:translate(4px)}.project-shot{perspective:1400px}.browser-frame{border-radius:14px;overflow:hidden;background:#fff;border:1px solid var(--line);box-shadow:0 1px 2px #1d2a2214,0 12px 32px #1d2a221f,0 32px 72px var(--accent-glow);transform:rotateY(var(--tilt, -4deg)) rotateX(1.5deg);transition:transform .5s cubic-bezier(.22,1,.36,1),box-shadow .5s ease}.project.flipped .browser-frame{--tilt: 4deg}.browser-frame:hover{transform:rotateY(0) rotateX(0) translateY(-6px);box-shadow:0 2px 4px #1d2a2214,0 20px 48px #1d2a2229,0 48px 96px var(--accent-glow)}.browser-bar{display:flex;align-items:center;gap:7px;padding:11px 14px;background:var(--paper-deep);border-bottom:1px solid var(--line)}.browser-bar .dot{width:10px;height:10px;border-radius:50%;background:rgba(29,42,34,.18)}.browser-url{font-family:var(--font-mono);font-size:11px;letter-spacing:.04em;color:var(--ink-soft);margin-left:10px;padding:3px 12px;background:rgba(255,255,255,.7);border-radius:999px}.browser-body{max-height:460px;overflow:hidden;background:#fff}.browser-body img{width:100%;height:auto;object-fit:cover;object-position:top}.accent-green{--accent: var(--green);--accent-contrast: #f4efe4;--accent-glow: rgba(46, 83, 57, .16)}.accent-amber{--accent: #b97a17;--accent-contrast: #141414;--accent-glow: rgba(232, 161, 60, .2)}.accent-amber .project-link:hover{color:var(--amber-ink);background:var(--amber);border-color:var(--amber)}.accent-indigo{--accent: var(--indigo);--accent-contrast: #f4efe4;--accent-glow: rgba(61, 59, 204, .14)}.site-footer{display:flex;flex-wrap:wrap;gap:12px 24px;align-items:center;justify-content:space-between;padding:32px 0 40px;border-top:1px solid var(--line);font-family:var(--font-mono);font-size:12px;letter-spacing:.06em;color:var(--ink-soft)}.footer-links{display:flex;align-items:center;gap:20px}.footer-links a{text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft);border-bottom:2px solid transparent;transition:color .2s ease,border-color .2s ease}.footer-links a:hover{color:var(--ink);border-color:var(--green)}.footer-mark{text-transform:uppercase;letter-spacing:.18em}@keyframes fade-up{0%{opacity:0;transform:translateY(28px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-down{0%{opacity:0;transform:translateY(-14px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion: reduce){.site-header,.eyebrow,.hero h1,.hero-sub,.hero-index{animation:none}.project{opacity:1;transform:none;transition:none}.browser-frame{transform:none}html{scroll-behavior:auto}}@media (max-width: 860px){.project{grid-template-columns:1fr;gap:36px}.project.flipped .project-info{order:1}.project.flipped .project-shot{order:2}.browser-frame,.project.flipped .browser-frame{--tilt: 0deg;transform:none}.browser-body{max-height:380px}.site-header{flex-wrap:wrap;gap:14px}.header-nav{flex-wrap:wrap;gap:8px 20px}}@media (max-width: 520px){.project-features{grid-template-columns:1fr}}:root{--paper: #f4efe4;--paper-deep: #ece5d4;--ink: #1d2a22;--ink-soft: #4a564d;--line: rgba(29, 42, 34, .16);--green: #2e5339;--green-bright: #7cc580;--amber: #e8a13c;--amber-ink: #141414;--indigo: #3d3bcc;--font-display: "Fraunces", "Iowan Old Style", Georgia, serif;--font-body: "Archivo", "Helvetica Neue", sans-serif;--font-mono: "IBM Plex Mono", "SF Mono", monospace;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-width:320px;font-family:var(--font-body);font-size:16px;line-height:1.6;color:var(--ink);background-color:var(--paper);background-image:radial-gradient(ellipse 80% 50% at 50% -10%,rgba(124,197,128,.18),transparent),linear-gradient(var(--paper),var(--paper))}a{color:inherit;text-decoration:none}img{display:block;max-width:100%}::selection{background:var(--green-bright);color:var(--ink)}
