:root{--font-display: "Fraunces", "Times New Roman", serif;--font-body: "Inter", system-ui, -apple-system, sans-serif;--font-mono: ui-monospace, "SF Mono", Menlo, monospace;--bg: #fafaf9;--bg-gradient: radial-gradient( ellipse at top left, #e0ecff 0%, transparent 50% ), radial-gradient(ellipse at bottom right, #ffe4ec 0%, transparent 50%);--fg: #0a0a0a;--fg-muted: #6b6b6b;--fg-subtle: #a3a3a3;--border: #e5e5e4;--accent: #2563eb;--space-section: clamp(2.5rem, 5vw, 4rem);--max-content: 1200px;--gutter: clamp(1.25rem, 4vw, 3rem)}:root[data-theme=dark]{--bg: #0a0a0a;--bg-gradient: radial-gradient( ellipse at top left, #1a2540 0%, transparent 50% ), radial-gradient(ellipse at bottom right, #3a1a2a 0%, transparent 50%);--fg: #fafaf9;--fg-muted: #a3a3a3;--fg-subtle: #6b6b6b;--border: #2a2a2a;--accent: #60a5fa}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{margin:0;font-family:var(--font-body);font-size:1rem;line-height:1.6;color:var(--fg);background:var(--bg);background-image:var(--bg-gradient);background-attachment:fixed;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4{font-family:var(--font-display);font-weight:400;letter-spacing:-.02em;line-height:1.05;margin:0}p{margin:0}a{color:inherit;text-decoration:none;border-bottom:1px solid currentColor;transition:opacity .2s}a:hover{opacity:.6}img{max-width:100%;display:block}.container{width:100%;max-width:var(--max-content);margin-inline:auto;padding-inline:var(--gutter)}.section{padding-block:var(--space-section)}.section-label{font-family:var(--font-mono);font-size:.75rem;letter-spacing:.15em;text-transform:uppercase;color:var(--fg-muted);margin-bottom:1.5rem;display:flex;align-items:center;gap:1rem}.section-label:after{content:"";flex:1;height:1px;background:var(--border)}.italic{font-style:italic}.muted{color:var(--fg-muted)}[data-reveal]{opacity:0;transform:translateY(28px);transition:opacity .9s cubic-bezier(.22,1,.36,1),transform .9s cubic-bezier(.22,1,.36,1);will-change:opacity,transform}[data-reveal=from-left]{transform:translate(-40px)}[data-reveal=from-right]{transform:translate(40px)}[data-reveal=scale]{transform:scale(.92)}[data-reveal=blur]{transform:translateY(20px);filter:blur(8px);transition:opacity 1.1s cubic-bezier(.22,1,.36,1),transform 1.1s cubic-bezier(.22,1,.36,1),filter 1.1s cubic-bezier(.22,1,.36,1)}[data-revealed]{opacity:1!important;transform:none!important;filter:none!important}[data-reveal][style*=--delay]{transition-delay:var(--delay)}.scroll-progress{position:fixed;top:0;left:0;height:2px;width:100%;background:transparent;z-index:100;pointer-events:none}.scroll-progress:before{content:"";display:block;height:100%;width:100%;background:linear-gradient(90deg,var(--accent),#ec4899);transform-origin:0 50%;transform:scaleX(var(--scroll, 0));transition:transform 80ms linear}body{background-position-y:calc(var(--scroll, 0) * -120px)}@keyframes float-soft{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.letter{display:inline-block;opacity:0;transform:translateY(.6em) rotateX(-30deg);transition:opacity .8s cubic-bezier(.22,1,.36,1),transform .8s cubic-bezier(.22,1,.36,1);transition-delay:calc(var(--i, 0) * 60ms + .2s)}body[data-loaded] .letter{opacity:1;transform:none}.hero-step{opacity:0;transform:translateY(20px);transition:opacity .9s cubic-bezier(.22,1,.36,1),transform .9s cubic-bezier(.22,1,.36,1)}body[data-loaded] .hero-step{opacity:1;transform:none}.hero-step[data-step="1"]{transition-delay:.1s}.hero-step[data-step="2"]{transition-delay:1.1s}.hero-step[data-step="3"]{transition-delay:1.35s}.hero-step[data-step="4"]{transition-delay:1.6s}a.tag-link{color:inherit;border-bottom:none;transition:color .25s}a.tag-link:hover{color:var(--accent);opacity:1}a.link-draw{border-bottom:none;background:linear-gradient(currentColor,currentColor) 0 100% / 0 1px no-repeat;transition:background-size .4s cubic-bezier(.22,1,.36,1)}a.link-draw:hover{background-size:100% 1px;opacity:1}.section-label{overflow:hidden}.section-label>span{display:inline-block}[data-reveal] .section-label>span{transform:translateY(100%);transition:transform .7s cubic-bezier(.22,1,.36,1)}[data-revealed] .section-label>span{transform:translateY(0)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important;transition:none!important}[data-reveal]{opacity:1!important;transform:none!important;filter:none!important}body[data-loaded] .letter,body[data-loaded] .hero-step{opacity:1;transform:none}}
