:root{--color-bg: #131110;--color-text: #f5f1ea;--color-text-soft: #c9c0b3;--color-text-muted: #a39a8d;--color-accent: #c9a46b;--color-accent-soft: rgba(201, 164, 107, .14);--color-status-green: #7ec98f;--color-status-yellow: #d8b65c;--font-serif: "Fraunces", Georgia, serif;--font-sans: "Manrope", system-ui, sans-serif;--space-xs: .5rem;--space-sm: 1rem;--space-md: 1.5rem;--space-lg: 2rem;--space-xl: 2.5rem;--transition-fast: .2s;--ease-soft: cubic-bezier(.22, 1, .36, 1)}@media (min-width: 768px){:root{--space-lg: 3rem;--space-xl: 4rem}}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--color-bg);color:var(--color-text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}a{color:inherit}.page{position:relative;isolation:isolate;min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-xl);overflow:hidden;padding:max(var(--space-lg),env(safe-area-inset-top)) max(var(--space-lg),env(safe-area-inset-right)) max(var(--space-lg),env(safe-area-inset-bottom)) max(var(--space-lg),env(safe-area-inset-left))}.glow{position:absolute;top:50%;left:50%;z-index:-1;width:min(640px,150vw);height:min(640px,150vw);transform:translate(-50%,-50%);background:radial-gradient(circle,var(--color-accent-soft) 0%,transparent 70%);filter:blur(48px);pointer-events:none}.hero{text-align:center}.name{margin:0;font-family:var(--font-serif);font-weight:300;font-size:1.875rem;letter-spacing:-.01em;color:var(--color-text-soft);text-wrap:balance}.bio{margin:var(--space-xs) 0 0;font-family:var(--font-sans);font-size:1rem;color:var(--color-text-muted)}.social-row{display:flex;align-items:center;justify-content:center;gap:var(--space-sm);flex-wrap:wrap}.social-link{display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:50%;color:var(--color-text-muted);text-decoration:none;-webkit-tap-highlight-color:transparent;transition:color var(--transition-fast) var(--ease-soft),background-color var(--transition-fast) var(--ease-soft),transform var(--transition-fast) var(--ease-soft)}.social-link:active{color:var(--color-accent);transform:scale(.92)}.social-link:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px}.project-list{display:flex;width:100%;max-width:20rem;flex-direction:column;align-items:center;gap:var(--space-xs)}.project-link{display:flex;min-height:44px;width:100%;align-items:center;justify-content:space-between;gap:var(--space-xs);border-radius:999px;padding:var(--space-xs) var(--space-sm);font-family:var(--font-sans);font-size:.95rem;font-weight:500;color:var(--color-text);text-decoration:none;-webkit-tap-highlight-color:transparent;transition:color var(--transition-fast) var(--ease-soft),background-color var(--transition-fast) var(--ease-soft)}.project-link__label{display:flex;min-width:0;align-items:center;gap:var(--space-xs)}.project-favicon{flex-shrink:0;width:16px;height:16px;border-radius:4px;object-fit:contain}.project-link__status{display:flex;flex-shrink:0;align-items:center;gap:var(--space-xs)}.project-dot{width:7px;height:7px;flex-shrink:0;border-radius:50%;background:var(--color-status-green)}.project-dot[data-status=yellow]{background:var(--color-status-yellow)}.project-link__arrow{color:var(--color-text-muted);transition:transform var(--transition-fast) var(--ease-soft),color var(--transition-fast) var(--ease-soft)}.project-link:active{transform:scale(.98)}.project-link:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}@media (hover: hover) and (pointer: fine){.social-link:hover{color:var(--color-accent);background-color:var(--color-accent-soft);transform:translateY(-2px)}.project-link:hover{background-color:var(--color-accent-soft);color:var(--color-accent)}.project-link:hover .project-link__arrow{color:var(--color-accent);transform:translate(2px,-2px)}}@media (prefers-reduced-motion: no-preference){.hero,.social-row,.project-list{animation:rise-in .7s var(--ease-soft) both}.social-row{animation-delay:.1s}.project-list{animation-delay:.2s}.project-dot{animation:dot-breathe 1.8s ease-in-out infinite}}@keyframes rise-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes dot-breathe{0%,to{opacity:1}50%{opacity:.6}}
