.projects-page{--fav-font-serif:var(--font-serif);--fav-font-sans:var(--font-sans);--fav-ink:#1a1a1a;--fav-ink-soft:rgba(0,0,0,0.55);--fav-ink-muted:rgba(0,0,0,0.35);--fav-border:rgba(0,0,0,0.08);--fav-border-strong:rgba(0,0,0,0.15);--fav-bg:#fafaf8;--fav-surface:#ffffff;--fav-surface-raised:#f3f3f3;--fav-accent:#3b82f6;--fav-accent-hover:#1d4ed8;--fav-signal:#e01e5a;--fav-container:1320px;--fav-gap:clamp(24px,2vw,48px);--fav-ease-out:cubic-bezier(0.25,0.46,0.45,0.94);--fav-ease-spring:cubic-bezier(0.34,1.56,0.64,1);background:var(--fav-bg);color:var(--fav-ink);font-family:var(--fav-font-sans);font-weight:300;line-height:1.6;-webkit-font-smoothing:antialiased}[data-theme=dark] .projects-page{--fav-ink:#f4f1ea;--fav-ink-soft:rgba(244,241,234,0.62);--fav-ink-muted:rgba(244,241,234,0.42);--fav-border:rgba(244,241,234,0.1);--fav-border-strong:rgba(244,241,234,0.2);--fav-bg:#0f0f10;--fav-surface:#17171a;--fav-surface-raised:#1f1f22;--fav-accent:#6ea8ff;--fav-accent-hover:#b1cfff}.projects-page *{box-sizing:border-box}.projects-page button{font:inherit;color:inherit;background:none;border:none;cursor:pointer;padding:0}.projects-page a{color:inherit;text-decoration:none;transition:opacity .3s ease}.projects-page a:hover{opacity:.8}.projects-page img{max-width:100%;height:auto;display:block}.projects-page .page-header{padding:120px var(--fav-gap) 40px;max-width:var(--fav-container);margin:0 auto;text-align:center}.projects-page .eyebrow{font-family:var(--fav-font-sans);font-size:13px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--fav-ink-soft);margin:0 0 20px}.projects-page .page-title{font-family:var(--fav-font-serif);font-weight:300;font-size:clamp(56px,8vw,112px);line-height:1.02;letter-spacing:-.02em;margin:0 0 24px;color:var(--fav-ink)}.projects-page .page-title em{font-style:italic;font-weight:300}.projects-page .page-lede{font-family:var(--fav-font-sans);font-weight:300;font-size:20px;line-height:1.55;color:var(--fav-ink-soft);max-width:620px;margin:0 auto;text-wrap:pretty}.projects-page .accent-underline{border-bottom:2px solid var(--fav-accent);padding-bottom:1px;cursor:default}.projects-page .filters{max-width:var(--fav-container);margin:0 auto;padding:24px var(--fav-gap) 48px;display:flex;flex-direction:column;gap:20px;align-items:center}.projects-page .category-pills{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}.projects-page .pill{padding:8px 18px;font-size:14px;font-weight:500;color:var(--fav-ink);background:var(--fav-surface);border:1px solid var(--fav-border);border-radius:999px;cursor:pointer;transition:all .2s var(--fav-ease-out);white-space:nowrap}.projects-page .pill:hover{border-color:var(--fav-border-strong);background:var(--fav-surface-raised)}.projects-page .pill.active{background:var(--fav-ink);color:var(--fav-bg);border-color:var(--fav-ink)}.projects-page .pill .count{margin-left:6px;font-size:12px;font-weight:400;color:var(--fav-ink-muted)}.projects-page .pill.active .count{color:color-mix(in srgb,var(--fav-bg) 55%,transparent)}.projects-page .pill-shuffle{display:inline-flex;align-items:center;gap:6px;color:var(--fav-ink-soft)}.projects-page .pill-shuffle svg{width:14px;height:14px;transition:transform .4s var(--fav-ease-spring)}.projects-page .pill-shuffle:hover{color:var(--fav-ink)}.projects-page .pill-shuffle:hover svg{transform:rotate(180deg)}.projects-page .pill-shuffle:active svg{transform:rotate(1turn)}.projects-page .controls-row{display:flex;gap:12px;flex-wrap:wrap;align-items:center;justify-content:center;width:100%;max-width:780px}.projects-page .search-wrap{flex:1;min-width:240px;position:relative}.projects-page .search-wrap svg{position:absolute;left:16px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--fav-ink-muted);pointer-events:none}.projects-page .search{width:100%;padding:12px 16px 12px 42px;background:var(--fav-surface);border:1px solid var(--fav-border);border-radius:999px;font:inherit;font-weight:300;color:var(--fav-ink);outline:none;transition:border-color .2s,box-shadow .2s}.projects-page .search::-moz-placeholder{color:var(--fav-ink-muted)}.projects-page .search::placeholder{color:var(--fav-ink-muted)}.projects-page .search:focus{border-color:var(--fav-ink);box-shadow:0 0 0 3px rgba(0,0,0,.04)}.projects-page .select-wrap{position:relative}.projects-page .select{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:12px 40px 12px 16px;background:var(--fav-surface);border:1px solid var(--fav-border);border-radius:999px;font:inherit;font-weight:300;color:var(--fav-ink);cursor:pointer;outline:none;min-width:160px}.projects-page .select:focus{border-color:var(--fav-ink)}.projects-page .select-wrap:after{content:"";position:absolute;right:18px;top:50%;width:8px;height:8px;border-right:1.5px solid var(--fav-ink);border-bottom:1.5px solid var(--fav-ink);transform:translateY(-70%) rotate(45deg);pointer-events:none}.projects-page .currency-seg{display:flex;gap:2px;padding:4px;background:var(--fav-surface-raised);border:1px solid var(--fav-border);border-radius:999px}.projects-page .currency-seg button{padding:7px 14px;font-size:12px;font-weight:500;border-radius:999px;color:var(--fav-ink-soft);transition:all .15s}.projects-page .currency-seg button.active{background:var(--fav-surface);color:var(--fav-ink);box-shadow:0 2px 6px rgba(0,0,0,.06)}.projects-page .v1-grid{max-width:var(--fav-container);margin:0 auto;padding:0 var(--fav-gap) 96px;display:grid;grid-template-columns:repeat(3,1fr);gap:48px 32px}@media (max-width:960px){.projects-page .v1-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:640px){.projects-page .v1-grid{grid-template-columns:1fr}}.projects-page .v1-card{display:flex;flex-direction:column;gap:14px;cursor:pointer;position:relative;animation:favRiseIn .5s var(--fav-ease-out) both;animation-delay:var(--d,0s)}@keyframes favRiseIn{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}.projects-page .v1-card-image{position:relative;aspect-ratio:4/5;overflow:hidden;background:#ece7dd;transition:transform .5s var(--fav-ease-out)}.projects-page .v1-card:hover .v1-card-image{transform:translateY(-4px)}.projects-page .v1-card-image img.product-photo,.projects-page .v1-card-image svg{width:100%;height:100%;display:block;-o-object-fit:cover;object-fit:cover}.projects-page .v1-card-image:after{content:"";position:absolute;inset:0;box-shadow:inset 0 0 80px rgba(0,0,0,.04);pointer-events:none}.projects-page .v1-card-badge{position:absolute;top:12px;left:12px;display:inline-flex;align-items:center;gap:6px;padding:5px 10px;background:rgba(255,255,255,.92);backdrop-filter:blur(8px);border-radius:999px;font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:#1a1a1a}.projects-page .v1-card-badge .dot{width:5px;height:5px;background:var(--fav-signal);border-radius:50%;animation:favPulse 1.5s ease-in-out infinite}.projects-page .v1-card-tag{position:absolute;top:12px;right:12px;display:inline-block;padding:5px 10px;backdrop-filter:blur(8px);border-radius:999px;font-family:var(--fav-font-serif);font-style:italic;font-size:12px;font-weight:300;letter-spacing:.02em;color:#fafaf8}.projects-page .v1-card-tag,.projects-page .v1-card-tag.tag-dream{background:rgba(26,26,26,.88)}.projects-page .v1-card-tag.tag-gift,.projects-page .v1-card-tag.tag-wish{background:rgba(59,130,246,.88)}@keyframes favPulse{0%,to{transform:scale(1)}50%{transform:scale(1.7)}}.projects-page .v1-card-meta{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.projects-page .v1-card-cat{font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--fav-ink-soft)}.projects-page .v1-card-year{font-family:var(--fav-font-serif);font-style:italic;font-size:14px;color:var(--fav-ink-muted)}.projects-page .v1-card-title{font-family:var(--fav-font-serif);font-weight:300;font-size:22px;line-height:1.2;margin:0;color:var(--fav-ink);letter-spacing:-.01em}.projects-page .v1-card-brand{font-size:13px;color:var(--fav-ink-soft);font-weight:400}.projects-page .v1-card-price-row{display:flex;justify-content:space-between;align-items:center;margin-top:2px}.projects-page .v1-card-price{font-size:13px;color:var(--fav-ink);font-weight:500;font-variant-numeric:tabular-nums}.projects-page .v1-card-more{font-size:12px;color:var(--fav-ink-soft);font-style:italic;font-family:var(--fav-font-serif)}.projects-page .v1-card:hover .v1-card-more{color:var(--fav-accent);border-bottom:1px solid var(--fav-accent)}.projects-page .v1-expand{grid-column:1/-1;display:flex;flex-direction:column;gap:40px;padding:40px;background:var(--fav-surface);border-top:1px solid var(--fav-border);border-bottom:1px solid var(--fav-border);margin:8px 0;animation:favExpandDown .5s var(--fav-ease-out) both}.projects-page .v1-expand-top{display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:center}@media (max-width:760px){.projects-page .v1-expand-top{grid-template-columns:1fr}}@keyframes favExpandDown{0%{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:none}}@media (max-width:760px){.projects-page .v1-expand{grid-template-columns:1fr;padding:28px}}.projects-page .v1-expand-img{position:relative;aspect-ratio:4/3;overflow:hidden;background:#ece7dd}.projects-page .v1-expand-img img.product-photo,.projects-page .v1-expand-img svg{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;display:block}.projects-page .v1-expand-body{display:flex;flex-direction:column;gap:18px}.projects-page .v1-expand-cat{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--fav-ink-soft)}.projects-page .v1-expand-title{font-family:var(--fav-font-serif);font-weight:300;font-size:clamp(32px,3.4vw,44px);line-height:1.1;letter-spacing:-.015em;margin:0}.projects-page .v1-expand-brand{font-size:16px;color:var(--fav-ink-soft);margin:0}.projects-page .v1-expand-desc{font-size:16px;line-height:1.6;color:var(--fav-ink);margin:0}.projects-page .v1-expand-story{max-width:68ch;margin:8px auto 0;padding-top:32px;border-top:1px solid var(--fav-border);display:flex;flex-direction:column;gap:18px}.projects-page .v1-expand-story p{font-family:var(--fav-font-serif);font-weight:300;font-size:19px;line-height:1.58;color:var(--fav-ink);margin:0;text-wrap:pretty}.projects-page .v1-expand-story p:first-child:first-letter{font-family:var(--fav-font-serif);font-style:italic;font-weight:300;font-size:3.4em;float:left;line-height:.85;padding:6px 12px 0 0;color:var(--fav-ink)}.projects-page .v1-expand-note{font-family:var(--fav-font-serif);font-style:italic;font-weight:300;font-size:20px;line-height:1.45;color:var(--fav-ink);padding:20px 24px;border-left:2px solid var(--fav-accent);background:rgba(59,130,246,.04);margin:8px 0;text-wrap:pretty}.projects-page .v1-expand-facts{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;padding:16px 0;border-top:1px solid var(--fav-border);border-bottom:1px solid var(--fav-border)}.projects-page .v1-expand-fact{display:flex;flex-direction:column;gap:4px}.projects-page .v1-expand-fact-k{font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--fav-ink-muted)}.projects-page .v1-expand-fact-v{font-family:var(--fav-font-serif);font-size:18px;font-weight:300}.projects-page .v1-expand-actions{display:flex;gap:16px;align-items:center;margin-top:4px}.projects-page .btn-primary{display:inline-flex;align-items:center;gap:10px;min-height:44px;padding:12px 28px;background:var(--fav-ink);color:var(--fav-bg);border-radius:999px;font-size:14px;font-weight:500;transition:all .25s var(--fav-ease-out);cursor:pointer;border:none}.projects-page .btn-primary:hover{background:#000;transform:translateY(-2px);opacity:1}.projects-page .btn-primary:active{transform:translateY(0) scale(.98)}.projects-page .btn-primary svg{width:14px;height:14px}.projects-page .btn-ghost.is-private,.projects-page .btn-primary.is-private,.projects-page .v1-expand-link-secondary.is-private{background:var(--fav-surface,#eee);color:var(--fav-ink-muted,#888);border-color:var(--fav-border,#ddd);cursor:not-allowed;pointer-events:none;opacity:.7;transform:none}.projects-page .btn-ghost.is-private:hover,.projects-page .btn-primary.is-private:hover,.projects-page .v1-expand-link-secondary.is-private:hover{transform:none;background:var(--fav-surface,#eee);color:var(--fav-ink-muted,#888)}.projects-page .btn-text{font-family:var(--fav-font-serif);font-style:italic;font-size:15px;color:var(--fav-ink-soft);cursor:pointer;border-bottom:1px solid transparent;transition:all .2s}.projects-page .btn-text:hover{color:var(--fav-ink);border-bottom-color:var(--fav-ink);opacity:1}.emoji-rain{position:fixed;inset:0;pointer-events:none;z-index:200;overflow:hidden}.emoji-rain span{position:absolute;font-size:28px;animation:favEmojiFall 2.5s cubic-bezier(.25,.46,.45,.94) forwards;opacity:0}@keyframes favEmojiFall{0%{opacity:0;transform:translateY(-40px) rotate(0)}10%{opacity:1}90%{opacity:1}to{opacity:0;transform:translateY(calc(100vh + 40px)) rotate(var(--r,180deg))}}.projects-page .signature-section{padding:96px var(--fav-gap) 120px;display:flex;flex-direction:column;align-items:center;text-align:center}.projects-page .kindest{font-family:var(--fav-font-serif);font-style:italic;font-weight:300;font-size:32px;line-height:1.1;margin:0;color:var(--fav-ink)}.projects-page .signature-wrapper{max-width:280px;width:100%;margin-top:20px;opacity:.85;color:var(--fav-ink)}.projects-page .signature-wrapper svg{width:100%;height:auto;display:block}.projects-page .empty{text-align:center;padding:80px var(--fav-gap);max-width:520px;margin:0 auto}.projects-page .empty h3{font-family:var(--fav-font-serif);font-weight:300;font-size:32px;margin:0 0 8px}.projects-page .empty p{color:var(--fav-ink-soft);margin:0}.projects-page .v1-card-image.cat-writing,.projects-page .v1-expand-img.cat-writing{background:#ecece4}.projects-page .v1-card-badge.status-live .dot{background:#2f9e55}.projects-page .v1-card-badge.status-beta .dot{background:#e0a800}.projects-page .v1-card-badge.status-archived .dot{background:rgba(0,0,0,.35);animation:none}.projects-page .v1-card-tag.tag-flagship{background:rgba(26,26,26,.88)}.projects-page .v1-card-tag.tag-experiment{background:rgba(59,130,246,.88)}.projects-page .v1-card-tagline{font-family:var(--fav-font-sans);font-size:13px;line-height:1.5;color:var(--fav-ink-soft);margin:4px 0 0;text-wrap:pretty;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.projects-page .v1-card-image.cat-side,.projects-page .v1-expand-img.cat-side{background:#eceadf}.projects-page .v1-card-image.cat-tool,.projects-page .v1-expand-img.cat-tool{background:#e3e4ee}.projects-page .v1-card-image.cat-site,.projects-page .v1-expand-img.cat-site{background:#e4e8e3}.projects-page .v1-card-image.cat-venture,.projects-page .v1-expand-img.cat-venture{background:#ebe6d8}.projects-page .v1-card-badge.status-shipped .dot{background:#2f9e55}.projects-page .v1-card-badge.status-ongoing .dot{background:#3b82f6}.projects-page .v2-featured{max-width:var(--fav-container);margin:0 auto;padding:0 var(--fav-gap) 64px}.projects-page .v2-featured-inner{display:grid;grid-template-columns:1.05fr 1fr;gap:clamp(32px,5vw,80px);align-items:stretch;min-height:min(72vh,680px);animation:favRiseIn .5s var(--fav-ease-out) both}@media (max-width:960px){.projects-page .v2-featured-inner{grid-template-columns:1fr;min-height:0}}.projects-page .v2-featured-tile{position:relative;aspect-ratio:4/5;overflow:hidden;background:#ece7dd;display:flex;align-items:center;justify-content:center}@media (max-width:960px){.projects-page .v2-featured-tile{aspect-ratio:5/4}}.projects-page .v2-featured-mark{width:62%;height:62%;display:flex;align-items:center;justify-content:center}.projects-page .v2-featured-mark img.product-photo,.projects-page .v2-featured-mark svg{width:100%;height:100%;-o-object-fit:contain;object-fit:contain}.projects-page .v2-featured-caption{position:absolute;bottom:20px;left:50%;transform:translateX(-50%);font-family:var(--fav-font-sans);font-size:11px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--fav-ink-soft)}.projects-page .v2-featured-body{display:flex;flex-direction:column;justify-content:center;gap:20px;padding:16px 0}.projects-page .v2-featured-eyebrow{font-family:var(--fav-font-sans);font-size:12px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--fav-ink-soft)}.projects-page .v2-featured-title{font-family:var(--fav-font-serif);font-weight:300;font-size:clamp(40px,5vw,72px);line-height:1.02;letter-spacing:-.02em;margin:0;color:var(--fav-ink);text-wrap:balance}.projects-page .v2-featured-tagline{font-size:15px;color:var(--fav-ink-soft);margin:0}.projects-page .v2-featured-lede{font-size:17px;line-height:1.55;color:var(--fav-ink);margin:0;max-width:58ch;text-wrap:pretty}.projects-page .v2-featured-stack{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0}.projects-page .v2-featured-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:8px}.projects-page .btn-ghost{display:inline-flex;align-items:center;gap:10px;min-height:44px;padding:12px 28px;background:transparent;color:var(--fav-ink);border:1px solid var(--fav-border-strong);border-radius:999px;font-size:14px;font-weight:500;transition:all .25s var(--fav-ease-out);cursor:pointer}.projects-page .btn-ghost:hover{background:var(--fav-surface);border-color:var(--fav-ink);transform:translateY(-2px);opacity:1}.projects-page .btn-ghost svg{width:14px;height:14px}.projects-page .v1-expand-stack{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 8px}.projects-page .stack-chip{padding:5px 11px;font-family:var(--fav-font-sans);font-size:11px;letter-spacing:.02em;color:var(--fav-ink-soft);background:var(--fav-surface-raised)}.projects-page .stack-chip,.projects-page .v1-expand-link-secondary{font-weight:500;border:1px solid var(--fav-border);border-radius:999px}.projects-page .v1-expand-link-secondary{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;font-size:13px;color:var(--fav-ink);transition:all .2s var(--fav-ease-out)}.projects-page .v1-expand-link-secondary:hover{background:var(--fav-surface-raised);border-color:var(--fav-border-strong);opacity:1}.projects-page .v1-expand-link-secondary svg{width:14px;height:14px}