.projects-page{--fav-font-serif:var(--font-serif);--fav-font-sans:var(--font-sans);--fav-ink:#1a1a1a;--fav-ink-soft:#0000008c;--fav-ink-muted:#00000059;--fav-border:#00000014;--fav-border-strong:#00000026;--fav-bg:#fafaf8;--fav-surface:#fff;--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(.25, .46, .45, .94);--fav-ease-spring:cubic-bezier(.34, 1.56, .64, 1);background:var(--fav-bg);color:var(--fav-ink);font-family:var(--fav-font-sans);-webkit-font-smoothing:antialiased;font-weight:300;line-height:1.6}[data-theme=dark] .projects-page{--fav-ink:#f4f1ea;--fav-ink-soft:#f4f1ea9e;--fav-ink-muted:#f4f1ea6b;--fav-border:#f4f1ea1a;--fav-border-strong:#f4f1ea33;--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;cursor:pointer;background:0 0;border:none;padding:0}.projects-page a{color:inherit;text-decoration:none;transition:opacity .3s}.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);text-align:center;margin:0 auto}.projects-page .eyebrow{font-family:var(--fav-font-sans);letter-spacing:.12em;text-transform:uppercase;color:var(--fav-ink-soft);margin:0 0 20px;font-size:13px;font-weight:700}.projects-page .page-title{font-family:var(--fav-font-serif);letter-spacing:-.02em;color:var(--fav-ink);margin:0 0 24px;font-size:clamp(56px,8vw,112px);font-weight:300;line-height:1.02}.projects-page .page-title em{font-style:italic;font-weight:300}.projects-page .page-lede{font-family:var(--fav-font-sans);color:var(--fav-ink-soft);text-wrap:pretty;max-width:620px;margin:0 auto;font-size:20px;font-weight:300;line-height:1.55}.projects-page .accent-underline{border-bottom:2px solid var(--fav-accent);cursor:default;padding-bottom:1px}.projects-page .filters{max-width:var(--fav-container);padding:24px var(--fav-gap) 48px;flex-direction:column;align-items:center;gap:20px;margin:0 auto;display:flex}.projects-page .category-pills{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.projects-page .pill{color:var(--fav-ink);background:var(--fav-surface);border:1px solid var(--fav-border);cursor:pointer;transition:all .2s var(--fav-ease-out);white-space:nowrap;border-radius:999px;padding:8px 18px;font-size:14px;font-weight:500}.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{color:var(--fav-ink-muted);margin-left:6px;font-size:12px;font-weight:400}.projects-page .pill.active .count{color:color-mix(in srgb, var(--fav-bg) 55%, transparent)}.projects-page .pill-shuffle{color:var(--fav-ink-soft);align-items:center;gap:6px;display:inline-flex}.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(360deg)}.projects-page .controls-row{flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;width:100%;max-width:780px;display:flex}.projects-page .search-wrap{flex:1;min-width:240px;position:relative}.projects-page .search-wrap svg{width:16px;height:16px;color:var(--fav-ink-muted);pointer-events:none;position:absolute;top:50%;left:16px;transform:translateY(-50%)}.projects-page .search{background:var(--fav-surface);border:1px solid var(--fav-border);width:100%;font:inherit;color:var(--fav-ink);border-radius:999px;outline:none;padding:12px 16px 12px 42px;font-weight:300;transition:border-color .2s,box-shadow .2s}.projects-page .search::placeholder{color:var(--fav-ink-muted)}.projects-page .search:focus{border-color:var(--fav-ink);box-shadow:0 0 0 3px #0000000a}.projects-page .select-wrap{position:relative}.projects-page .select{appearance:none;background:var(--fav-surface);border:1px solid var(--fav-border);font:inherit;color:var(--fav-ink);cursor:pointer;border-radius:999px;outline:none;min-width:160px;padding:12px 40px 12px 16px;font-weight:300}.projects-page .select:focus{border-color:var(--fav-ink)}.projects-page .select-wrap:after{content:"";border-right:1.5px solid var(--fav-ink);border-bottom:1.5px solid var(--fav-ink);pointer-events:none;width:8px;height:8px;position:absolute;top:50%;right:18px;transform:translateY(-70%)rotate(45deg)}.projects-page .currency-seg{background:var(--fav-surface-raised);border:1px solid var(--fav-border);border-radius:999px;gap:2px;padding:4px;display:flex}.projects-page .currency-seg button{color:var(--fav-ink-soft);border-radius:999px;padding:7px 14px;font-size:12px;font-weight:500;transition:all .15s}.projects-page .currency-seg button.active{background:var(--fav-surface);color:var(--fav-ink);box-shadow:0 2px 6px #0000000f}.projects-page .v1-grid{max-width:var(--fav-container);padding:0 var(--fav-gap) 96px;grid-template-columns:repeat(3,1fr);gap:48px 32px;margin:0 auto;display:grid}@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{cursor:pointer;animation:favRiseIn .5s var(--fav-ease-out) both;animation-delay:var(--d,0s);flex-direction:column;gap:14px;display:flex;position:relative}.projects-page .v1-card:focus-visible{outline:2px solid var(--color-primary);outline-offset:5px}@keyframes favRiseIn{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}.projects-page .v1-card-image{aspect-ratio:4/5;transition:transform .5s var(--fav-ease-out);background:#ece7dd;position:relative;overflow:hidden}.projects-page .v1-card:hover .v1-card-image{transform:translateY(-4px)}.projects-page .v1-card-image svg,.projects-page .v1-card-image img.product-photo{-o-object-fit:cover;object-fit:cover;width:100%;height:100%;display:block}.projects-page .v1-card-image:after{content:"";pointer-events:none;position:absolute;inset:0;box-shadow:inset 0 0 80px #0000000a}.projects-page .v1-card-badge{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);letter-spacing:.06em;text-transform:uppercase;color:#1a1a1a;background:#ffffffeb;border-radius:999px;align-items:center;gap:6px;padding:5px 10px;font-size:11px;font-weight:600;display:inline-flex;position:absolute;top:12px;left:12px}.projects-page .v1-card-badge .dot{background:var(--fav-signal);border-radius:50%;width:5px;height:5px;animation:1.5s ease-in-out infinite favPulse}.projects-page .v1-card-tag{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);font-family:var(--fav-font-serif);letter-spacing:.02em;color:#fafaf8;background:#1a1a1ae0;border-radius:999px;padding:5px 10px;font-size:12px;font-style:italic;font-weight:300;display:inline-block;position:absolute;top:12px;right:12px}.projects-page .v1-card-tag.tag-dream{background:#1a1a1ae0}.projects-page .v1-card-tag.tag-gift,.projects-page .v1-card-tag.tag-wish{background:#3b82f6e0}@keyframes favPulse{0%,to{transform:scale(1)}50%{transform:scale(1.7)}}.projects-page .v1-card-meta{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.projects-page .v1-card-cat{letter-spacing:.1em;text-transform:uppercase;color:var(--fav-ink-soft);font-size:11px;font-weight:600}.projects-page .v1-card-year{font-family:var(--fav-font-serif);color:var(--fav-ink-muted);font-size:14px;font-style:italic}.projects-page .v1-card-title{font-family:var(--fav-font-serif);color:var(--fav-ink);letter-spacing:-.01em;margin:0;font-size:22px;font-weight:300;line-height:1.2}.projects-page .v1-card-brand{color:var(--fav-ink-soft);font-size:13px;font-weight:400}.projects-page .v1-card-price-row{justify-content:space-between;align-items:center;margin-top:2px;display:flex}.projects-page .v1-card-price{color:var(--fav-ink);font-variant-numeric:tabular-nums;font-size:13px;font-weight:500}.projects-page .v1-card-more{color:var(--fav-ink-soft);font-size:12px;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{background:var(--fav-surface);border-top:1px solid var(--fav-border);border-bottom:1px solid var(--fav-border);animation:favExpandDown .5s var(--fav-ease-out) both;flex-direction:column;grid-column:1/-1;gap:40px;margin:8px 0;padding:40px;display:flex}.projects-page .v1-expand-top{grid-template-columns:1fr 1fr;align-items:center;gap:48px;display:grid}@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{aspect-ratio:4/3;background:#ece7dd;position:relative;overflow:hidden}.projects-page .v1-expand-img svg,.projects-page .v1-expand-img img.product-photo{-o-object-fit:cover;object-fit:cover;width:100%;height:100%;display:block}.projects-page .v1-expand-body{flex-direction:column;gap:18px;display:flex}.projects-page .v1-expand-cat{letter-spacing:.14em;text-transform:uppercase;color:var(--fav-ink-soft);font-size:11px;font-weight:700}.projects-page .v1-expand-title{font-family:var(--fav-font-serif);letter-spacing:-.015em;margin:0;font-size:clamp(32px,3.4vw,44px);font-weight:300;line-height:1.1}.projects-page .v1-expand-brand{color:var(--fav-ink-soft);margin:0;font-size:16px}.projects-page .v1-expand-desc{color:var(--fav-ink);margin:0;font-size:16px;line-height:1.6}.projects-page .v1-expand-story{border-top:1px solid var(--fav-border);flex-direction:column;gap:18px;max-width:68ch;margin:8px auto 0;padding-top:32px;display:flex}.projects-page .v1-expand-story p{font-family:var(--fav-font-serif);color:var(--fav-ink);text-wrap:pretty;margin:0;font-size:19px;font-weight:300;line-height:1.58}.projects-page .v1-expand-story p:first-child:first-letter{font-family:var(--fav-font-serif);float:left;color:var(--fav-ink);padding:6px 12px 0 0;font-size:3.4em;font-style:italic;font-weight:300;line-height:.85}.projects-page .v1-expand-note{font-family:var(--fav-font-serif);color:var(--fav-ink);border-left:2px solid var(--fav-accent);text-wrap:pretty;background:#3b82f60a;margin:8px 0;padding:20px 24px;font-size:20px;font-style:italic;font-weight:300;line-height:1.45}.projects-page .v1-expand-facts{border-top:1px solid var(--fav-border);border-bottom:1px solid var(--fav-border);grid-template-columns:repeat(3,1fr);gap:16px;padding:16px 0;display:grid}.projects-page .v1-expand-fact{flex-direction:column;gap:4px;display:flex}.projects-page .v1-expand-fact-k{letter-spacing:.1em;text-transform:uppercase;color:var(--fav-ink-muted);font-size:11px;font-weight:600}.projects-page .v1-expand-fact-v{font-family:var(--fav-font-serif);font-size:18px;font-weight:300}.projects-page .v1-expand-actions{align-items:center;gap:16px;margin-top:4px;display:flex}.projects-page .btn-primary{background:var(--fav-ink);min-height:44px;color:var(--fav-bg);transition:all .25s var(--fav-ease-out);cursor:pointer;border:none;border-radius:999px;align-items:center;gap:10px;padding:12px 28px;font-size:14px;font-weight:500;display:inline-flex}.projects-page .btn-primary:hover{opacity:1;background:#000;transform:translateY(-2px)}.projects-page .btn-primary:active{transform:translateY(0)scale(.98)}.projects-page .btn-primary svg{width:14px;height:14px}.projects-page .btn-primary.is-private,.projects-page .btn-ghost.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-primary.is-private:hover,.projects-page .btn-ghost.is-private:hover,.projects-page .v1-expand-link-secondary.is-private:hover{background:var(--fav-surface,#eee);color:var(--fav-ink-muted,#888);transform:none}.projects-page .btn-text{font-family:var(--fav-font-serif);color:var(--fav-ink-soft);cursor:pointer;border-bottom:1px solid #0000;font-size:15px;font-style:italic;transition:all .2s}.projects-page .btn-text:hover{color:var(--fav-ink);border-bottom-color:var(--fav-ink);opacity:1}.emoji-rain{pointer-events:none;z-index:200;position:fixed;inset:0;overflow:hidden}.emoji-rain span{opacity:0;font-size:28px;animation:2.5s cubic-bezier(.25,.46,.45,.94) forwards favEmojiFall;position:absolute}@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;text-align:center;flex-direction:column;align-items:center;display:flex}.projects-page .kindest{font-family:var(--fav-font-serif);color:var(--fav-ink);margin:0;font-size:32px;font-style:italic;font-weight:300;line-height:1.1}.projects-page .signature-wrapper{opacity:.85;width:100%;max-width:280px;color:var(--fav-ink);margin-top:20px}.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);margin:0 0 8px;font-size:32px;font-weight:300}.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:#00000059;animation:none}.projects-page .v1-card-tag.tag-flagship{background:#1a1a1ae0}.projects-page .v1-card-tag.tag-experiment{background:#3b82f6e0}.projects-page .v1-card-tagline{font-family:var(--fav-font-sans);color:var(--fav-ink-soft);text-wrap:pretty;-webkit-line-clamp:3;-webkit-box-orient:vertical;margin:4px 0 0;font-size:13px;line-height:1.5;display:-webkit-box;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);padding:0 var(--fav-gap) 64px;margin:0 auto}.projects-page .v2-featured-inner{min-height:min(72vh,680px);animation:favRiseIn .5s var(--fav-ease-out) both;grid-template-columns:1.05fr 1fr;align-items:stretch;gap:clamp(32px,5vw,80px);display:grid}@media (max-width:960px){.projects-page .v2-featured-inner{grid-template-columns:1fr;min-height:0}}.projects-page .v2-featured-tile{aspect-ratio:4/5;background:#ece7dd;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}@media (max-width:960px){.projects-page .v2-featured-tile{aspect-ratio:5/4}}.projects-page .v2-featured-mark{justify-content:center;align-items:center;width:62%;height:62%;display:flex}.projects-page .v2-featured-mark svg,.projects-page .v2-featured-mark img.product-photo{-o-object-fit:contain;object-fit:contain;width:100%;height:100%}.projects-page .v2-featured-caption{font-family:var(--fav-font-sans);letter-spacing:.16em;text-transform:uppercase;color:var(--fav-ink-soft);font-size:11px;font-weight:600;position:absolute;bottom:20px;left:50%;transform:translate(-50%)}.projects-page .v2-featured-body{flex-direction:column;justify-content:center;gap:20px;padding:16px 0;display:flex}.projects-page .v2-featured-eyebrow{font-family:var(--fav-font-sans);letter-spacing:.14em;text-transform:uppercase;color:var(--fav-ink-soft);font-size:12px;font-weight:700}.projects-page .v2-featured-title{font-family:var(--fav-font-serif);letter-spacing:-.02em;color:var(--fav-ink);text-wrap:balance;margin:0;font-size:clamp(40px,5vw,72px);font-weight:300;line-height:1.02}.projects-page .v2-featured-tagline{color:var(--fav-ink-soft);margin:0;font-size:15px}.projects-page .v2-featured-lede{color:var(--fav-ink);text-wrap:pretty;max-width:58ch;margin:0;font-size:17px;line-height:1.55}.projects-page .v2-featured-stack{flex-wrap:wrap;gap:6px;margin:4px 0;display:flex}.projects-page .v2-featured-actions{flex-wrap:wrap;gap:12px;margin-top:8px;display:flex}.projects-page .btn-ghost{min-height:44px;color:var(--fav-ink);border:1px solid var(--fav-border-strong);transition:all .25s var(--fav-ease-out);cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:10px;padding:12px 28px;font-size:14px;font-weight:500;display:inline-flex}.projects-page .btn-ghost:hover{background:var(--fav-surface);border-color:var(--fav-ink);opacity:1;transform:translateY(-2px)}.projects-page .btn-ghost svg{width:14px;height:14px}.projects-page .v1-expand-stack{flex-wrap:wrap;gap:6px;margin:4px 0 8px;display:flex}.projects-page .stack-chip{font-family:var(--fav-font-sans);letter-spacing:.02em;color:var(--fav-ink-soft);background:var(--fav-surface-raised);border:1px solid var(--fav-border);border-radius:999px;padding:5px 11px;font-size:11px;font-weight:500}.projects-page .v1-expand-link-secondary{color:var(--fav-ink);border:1px solid var(--fav-border);transition:all .2s var(--fav-ease-out);border-radius:999px;align-items:center;gap:8px;padding:10px 16px;font-size:13px;font-weight:500;display:inline-flex}.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}
