:root{--bg:#f6e2c9;--bg-alt:#eed3ac;--fg:#1b3a4b;--muted:#546973;--accent:#e2543a;--accent-strong:#b94530;--accent-2:#e8862e;--accent-3:#e8ac3d;--accent-4:#1c7f73;--danger:#c1272d;--border:#e3c9a8;--card-bg:#fdf3e7;--shadow-color:#1b3a4b;--radius:18px;--radius-sm:10px;--maxw:960px;--font-display:"Fraunces", ui-serif, Georgia, serif;--font-body:"Space Grotesk", ui-sans-serif, system-ui, "Segoe UI", Roboto, sans-serif}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#1b2a33;--bg-alt:#22333d;--fg:#f6e2c9;--muted:#cbb89a;--accent:#ef6b52;--accent-strong:#f17a63;--accent-2:#f2984a;--accent-3:#f0c15a;--accent-4:#2ea393;--danger:#ff7a68;--border:#3a4f59;--card-bg:#22333d;--shadow-color:#000}}:root[data-theme=dark]{--bg:#1b2a33;--bg-alt:#22333d;--fg:#f6e2c9;--muted:#cbb89a;--accent:#ef6b52;--accent-strong:#f17a63;--accent-2:#f2984a;--accent-3:#f0c15a;--accent-4:#2ea393;--danger:#ff7a68;--border:#3a4f59;--card-bg:#22333d;--shadow-color:#000}*{box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:var(--font-body);color:var(--fg);background:var(--bg);margin:0;line-height:1.6}a{color:inherit}.shell{max-width:var(--maxw);margin:0 auto;padding:0 1.5rem}.site-header{flex-wrap:wrap;align-items:baseline;gap:1.5rem;padding:2rem 0 1rem;display:flex}.site-title{font-family:var(--font-display);letter-spacing:-.02em;background:linear-gradient(90deg, var(--accent), var(--accent-2));color:#0000;background-clip:text;font-size:1.35rem;font-weight:800;text-decoration:none}.site-nav{gap:1.25rem;display:flex}.site-nav a{color:var(--muted);font-weight:500;text-decoration:none}.site-nav a:hover{color:var(--fg)}.theme-toggle{gap:.35rem;margin-left:auto;display:flex}.theme-toggle__btn{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--card-bg);color:var(--muted);font:inherit;cursor:pointer;padding:.25rem .6rem;font-size:.85rem}.theme-toggle__btn:hover{color:var(--fg)}.theme-toggle__btn[aria-pressed=true]{color:var(--fg);border-color:var(--accent)}.lang-switch{color:var(--muted);font-size:.9rem;text-decoration:none}.lang-switch:hover{color:var(--accent)}.hero{padding:3rem 0 1rem}.hero h1{font-family:var(--font-display);letter-spacing:-.03em;margin:0 0 .75rem;font-size:clamp(2rem,5vw,3rem);line-height:1.1}.hero-intro{color:var(--muted);max-width:40rem;font-size:1.1rem}.projects{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1.25rem;padding:1.5rem 0 3rem;display:grid}.card{background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:.6rem;padding:1.5rem;transition:transform .15s,box-shadow .15s;display:flex}.card:hover{transform:translateY(-3px);box-shadow:0 10px 24px #00000012}.card--featured{background:linear-gradient(var(--card-bg), var(--card-bg)) padding-box, linear-gradient(90deg, var(--accent), var(--accent-2)) border-box;border-color:#0000}.card-head{justify-content:space-between;align-items:baseline;gap:.75rem;display:flex}.card-name{font-family:var(--font-display);letter-spacing:-.01em;margin:0;font-size:1.2rem}.card-year{color:var(--muted);font-size:.85rem}.card-tagline{color:var(--muted);margin:0;font-size:.95rem}.card-tags{flex-wrap:wrap;gap:.4rem;margin:.25rem 0;padding:0;list-style:none;display:flex}.card-links{flex-wrap:wrap;gap:1rem;margin-top:auto;padding-top:.5rem;display:flex}.project-page{padding:2rem 0 3rem}.back-link{color:var(--muted);margin-bottom:1.5rem;font-size:.9rem;text-decoration:none;display:inline-block}.back-link:hover{color:var(--accent)}.project-header{margin-bottom:2rem}.project-header h1{font-family:var(--font-display);letter-spacing:-.02em;margin:0 0 .5rem;font-size:clamp(1.8rem,4vw,2.4rem)}.prose{max-width:65ch}.prose h2{margin-top:2rem;font-size:1.25rem}.prose code{background:color-mix(in srgb, var(--accent-2) 10%, transparent);border-radius:6px;padding:.15em .35em;font-size:.9em}.prose pre{color:#e8e8f2;border-radius:var(--radius);background:#16162b;padding:1rem;overflow-x:auto}.site-footer{border-top:1px solid var(--border);color:var(--muted);padding:1.5rem 0 2.5rem;font-size:.9rem}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.card{transition:none}}
