:root{--ink: #14201a;--ink-soft: #3d4f45;--mist: #d7e6dc;--foam: #eef5f0;--leaf: #0e7c66;--leaf-bright: #1fb893;--sand: #c8d9ce;--line: color-mix(in srgb, var(--ink) 12%, transparent);--glow: color-mix(in srgb, var(--leaf-bright) 35%, transparent);--font-display: "Bricolage Grotesque", system-ui, sans-serif;--font-body: "Figtree", system-ui, sans-serif;--space: clamp(1rem, 2.5vw, 2rem);--max: 72rem;--radius: 1.25rem;color:var(--ink);background:var(--foam);font-family:var(--font-body);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-width:320px;min-height:100vh;background:radial-gradient(ellipse 80% 50% at 10% -10%,var(--glow),transparent 55%),radial-gradient(ellipse 60% 40% at 90% 5%,color-mix(in srgb,var(--mist) 80%,transparent),transparent 50%),linear-gradient(165deg,#e4efe8 0%,var(--foam) 42%,#e8f0eb 100%);background-attachment:fixed}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:.35;background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);background-size:48px 48px;-webkit-mask-image:radial-gradient(ellipse 70% 60% at 50% 20%,black,transparent);mask-image:radial-gradient(ellipse 70% 60% at 50% 20%,black,transparent);z-index:0}#root{position:relative;z-index:1}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer;border:none;background:none}img,svg{display:block;max-width:100%}.site{display:flex;flex-direction:column;min-height:100vh}.wrap{width:min(100% - 2 * var(--space),var(--max));margin-inline:auto}.nav{display:flex;align-items:center;justify-content:space-between;padding:1.25rem 0;animation:rise .7s ease both}.nav-brand{font-family:var(--font-display);font-weight:700;font-size:1.15rem;letter-spacing:-.02em}.nav-links{display:flex;gap:1.5rem;align-items:center;font-size:.95rem;font-weight:500;color:var(--ink-soft)}.nav-links a:hover{color:var(--ink)}.nav-cta{color:var(--ink)!important;padding:.45rem .9rem;border-radius:999px;border:1px solid var(--line);background:color-mix(in srgb,white 55%,transparent);transition:border-color .2s,background .2s}.nav-cta:hover{border-color:var(--leaf);background:#fff}.hero{position:relative;min-height:calc(100svh - 4.5rem);display:grid;align-items:end;padding-bottom:clamp(2.5rem,8vh,5rem);overflow:hidden}.hero-visual{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none}.hero-visual svg{width:100%;height:100%;object-fit:cover}.hero-copy{position:relative;z-index:1;max-width:38rem;animation:rise .85s .1s ease both}.brand-mark{font-family:var(--font-display);font-weight:800;font-size:clamp(3.5rem,12vw,7.5rem);line-height:.9;letter-spacing:-.045em;margin:0 0 1.25rem;background:linear-gradient(135deg,var(--ink) 40%,var(--leaf) 120%);-webkit-background-clip:text;background-clip:text;color:transparent}.hero-title{font-family:var(--font-display);font-weight:650;font-size:clamp(1.35rem,3.2vw,1.85rem);line-height:1.25;letter-spacing:-.02em;margin:0 0 .75rem;max-width:28ch}.hero-lead{margin:0 0 1.75rem;color:var(--ink-soft);font-size:1.05rem;line-height:1.6;max-width:42rem}.hero-actions{display:flex;flex-wrap:wrap;gap:.75rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;padding:.75rem 1.25rem;border-radius:999px;font-weight:600;font-size:.95rem;transition:transform .2s,background .2s,color .2s,box-shadow .2s}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--ink);color:var(--foam);box-shadow:0 10px 30px color-mix(in srgb,var(--ink) 18%,transparent)}.btn-primary:hover{background:var(--leaf);box-shadow:0 12px 28px var(--glow)}.btn-ghost{background:color-mix(in srgb,white 70%,transparent);border:1px solid var(--line);color:var(--ink)}.btn-ghost:hover{border-color:var(--leaf);background:#fff}.section{padding:clamp(3.5rem,10vh,6rem) 0}.section-head{margin-bottom:2rem;max-width:36rem;animation:rise .7s ease both}.section-eyebrow{display:block;font-size:.8rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--leaf);margin-bottom:.5rem}.section-title{font-family:var(--font-display);font-size:clamp(1.75rem,4vw,2.4rem);font-weight:700;letter-spacing:-.03em;margin:0 0 .6rem;line-height:1.15}.section-lead{margin:0;color:var(--ink-soft);line-height:1.6;font-size:1.05rem;max-width:42rem}.filters{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.75rem}.filter{padding:.45rem .9rem;border-radius:999px;border:1px solid var(--line);background:color-mix(in srgb,white 55%,transparent);color:var(--ink-soft);font-size:.875rem;font-weight:500;transition:background .2s,color .2s,border-color .2s}.filter:hover{border-color:var(--sand);color:var(--ink)}.filter[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:var(--foam)}.project-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.75rem}.project{display:grid;grid-template-columns:1fr auto;gap:1rem 1.5rem;align-items:start;padding:1.25rem 1.35rem;border-radius:var(--radius);border:1px solid var(--line);background:color-mix(in srgb,white 72%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:border-color .25s,transform .25s,box-shadow .25s;animation:rise .55s ease both}.project:hover{border-color:color-mix(in srgb,var(--leaf) 45%,var(--line));transform:translateY(-2px);box-shadow:0 16px 40px color-mix(in srgb,var(--ink) 6%,transparent)}.project-title{font-family:var(--font-display);font-size:1.2rem;font-weight:700;letter-spacing:-.02em;margin:0 0 .35rem}.project-summary{margin:0;color:var(--ink-soft);line-height:1.55;font-size:.98rem;max-width:52rem}.project-meta{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.85rem}.chip{font-size:.75rem;font-weight:600;padding:.25rem .55rem;border-radius:999px;background:var(--mist);color:var(--ink)}.chip-offer{background:color-mix(in srgb,var(--leaf-bright) 22%,white);color:var(--leaf)}.chip-monetized{background:color-mix(in srgb,var(--ink) 88%,var(--leaf));color:var(--foam)}.chip-status-wip{background:color-mix(in srgb,#e8b84a 28%,white);color:#7a5a10}.chip-status-idea{background:color-mix(in srgb,var(--sand) 70%,white);color:var(--ink-soft)}.project-aside{display:flex;flex-direction:column;align-items:flex-end;gap:.35rem;text-align:right;font-size:.8rem;font-weight:600;color:var(--leaf);white-space:nowrap}.project-aside:empty{display:none}.project-aside a{color:var(--ink-soft);text-decoration:underline;text-underline-offset:.15em}.project-aside a:hover,.project-title a:hover{color:var(--leaf)}.project-empty{padding:2rem;text-align:center;color:var(--ink-soft);border:1px dashed var(--line);border-radius:var(--radius)}.contact-panel{display:grid;gap:1.5rem;padding:clamp(1.75rem,4vw,2.5rem);border-radius:calc(var(--radius) + .25rem);background:linear-gradient(135deg,color-mix(in srgb,var(--ink) 92%,var(--leaf)),var(--ink));color:var(--foam);animation:rise .7s ease both}.contact-panel .section-eyebrow{color:var(--leaf-bright)}.contact-panel .section-title{color:#fff}.contact-panel .section-lead{color:color-mix(in srgb,var(--foam) 78%,transparent);max-width:40rem}.contact-actions{display:flex;flex-wrap:wrap;gap:.75rem}.contact-panel .btn-primary{background:var(--leaf-bright);color:var(--ink);box-shadow:none}.contact-panel .btn-primary:hover{background:#fff}.contact-panel .btn-ghost{background:transparent;border-color:color-mix(in srgb,white 28%,transparent);color:#fff}.contact-panel .btn-ghost:hover{background:color-mix(in srgb,white 12%,transparent);border-color:#fff}.footer{padding:2rem 0 2.5rem;border-top:1px solid var(--line);display:flex;flex-wrap:wrap;justify-content:space-between;gap:.75rem;color:var(--ink-soft);font-size:.875rem}.footer strong{font-family:var(--font-display);color:var(--ink);font-weight:700}@keyframes rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@media (max-width: 720px){.nav-links a:not(.nav-cta){display:none}.project{grid-template-columns:1fr}.project-aside{text-align:left}.hero{align-items:center;min-height:calc(100svh - 4rem)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important;transition:none!important}html{scroll-behavior:auto}}
