:root{--bg: #ffffff;--bg-soft: #f6f6f7;--fg: #1a1a1e;--fg-soft: #6b6b76;--border: #e7e7ea;--accent: #6366f1;--radius: 16px;--maxw: 720px;--font: "Ioskeley Mono", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", Roboto, Helvetica, Arial, sans-serif}@font-face{font-family:Ioskeley Mono;src:url(/fonts/IoskeleyMono-Regular.woff2) format("woff2");font-style:normal;font-weight:400;font-display:swap}@media(prefers-color-scheme:dark){:root{--bg: #0e0e11;--bg-soft: #17171b;--fg: #f2f2f4;--fg-soft: #9a9aa5;--border: #26262c}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;font-family:var(--font);background:var(--bg);color:var(--fg);line-height:1.6;-webkit-font-smoothing:antialiased;border-top:3px solid var(--accent)}a{color:inherit;text-decoration:none}.page{max-width:660px;margin:0 auto;padding:0 20px;min-height:100dvh;display:flex;flex-direction:column}.site-head{padding:18px 0 20px;color:#d8d8df;background:#202024;box-shadow:0 0 0 100vmax #202024;clip-path:inset(0 -100vmax)}.site-title{display:inline-block;color:#fff;font-size:30px;font-weight:650;letter-spacing:-.02em}.site-description{margin:4px 0 0;font-size:15px}.apps-page{flex:1;padding:40px 0 64px}.app-entry{padding:32px 0 40px;border-top:1px solid var(--border)}.app-entry:first-child{padding-top:0;border-top:0}.app-artwork{margin:0 0 22px}.app-artwork img{display:block;width:100%;height:auto;border:1px solid var(--border)}.app-artwork figcaption{margin-top:7px;color:var(--fg-soft);font-size:12px;text-align:right}.app-artwork figcaption a:hover{color:var(--fg)}.app-entry-head{display:flex;align-items:baseline;gap:12px}.app-entry h2{margin:0;font-size:25px;font-weight:650;letter-spacing:-.015em}.app-entry h2 a:hover{color:var(--accent)}.app-entry p{margin:12px 0;font-size:17px}.app-status{color:var(--fg-soft);font-size:13px;white-space:nowrap}.app-link{color:var(--accent);font-size:15px;font-weight:600}.app-link:hover{text-decoration:underline}.subscribe{padding:36px 0 8px;border-top:1px solid var(--border)}.subscribe h2{margin:0;font-size:25px;font-weight:650;letter-spacing:-.015em}.subscribe>p{margin:10px 0 18px;font-size:16px}.subscribe-embed{max-width:450px}.beehiiv-embed{display:block;width:100%;height:207px;margin:0;background:transparent;border:0;border-radius:0;box-shadow:none}.subscribe-fallback{display:block;margin-top:8px;color:var(--fg-soft);font-size:12px}.subscribe-fallback:hover{color:var(--fg)}body.gallery-body{overflow:hidden;color:#f2f2f0;background:#050505;border-top:0}.gallery-nav{position:fixed;z-index:10;top:0;left:0;width:100%;min-height:58px;padding:0 28px;display:flex;align-items:center;justify-content:space-between;background:#050505c7;border-bottom:1px solid rgba(255,255,255,.08);backdrop-filter:blur(14px)}.gallery-brand{color:#f2f2f0;font-family:Ioskeley Mono,monospace;font-size:18px;font-weight:400;letter-spacing:0}.gallery-page{width:100%;max-width:none;height:100svh;min-height:0;margin:0;padding:0;overflow-x:hidden;overflow-y:auto;background:#050505;scroll-snap-type:y mandatory;scrollbar-color:#333 #050505}.gallery-page>.footer{display:none}.gallery{width:100%}.gallery-panel{min-height:100svh;padding:clamp(80px,10svh,112px) 5vw clamp(32px,6svh,72px);display:grid;place-items:center;scroll-snap-align:start;scroll-snap-stop:always}.gallery-exhibit{width:100%}.gallery-artwork{position:relative;width:fit-content;max-width:90vw;margin:0 auto}.gallery-artwork-link{display:block;line-height:0}.gallery-artwork img{display:block;width:auto;max-width:90vw;height:auto;max-height:58svh;margin:0 auto;border:1px solid #242424;box-shadow:0 24px 80px #00000073}.gallery-artwork-caption{margin-top:7px;color:#666;font-size:10px;line-height:1.35;letter-spacing:.01em;text-align:right}.gallery-artwork-caption cite{font-style:italic}.gallery-app-copy{width:min(460px,82vw);margin:22px auto 0;color:#8f8f8f}.gallery-app-copy-head{display:flex;align-items:baseline;gap:12px}.gallery-app-copy h2{margin:0;line-height:1.25}.gallery-app-name,.gallery-subscribe-label{color:#f2f2f0;font-size:20px;font-weight:600;letter-spacing:-.015em}.gallery-app-name{white-space:nowrap}.gallery-app-copy p{margin:10px 0 8px;color:#a0a0a0;font-size:14px;line-height:1.7}.gallery-app-copy strong{color:inherit;font-weight:inherit}.gallery-app-actions{display:flex;gap:16px}.gallery-app-link{color:#707070;font-size:13px}.gallery-app-link:hover{color:#cfcfcd}.gallery-panel--newsletter{position:relative;color:#e9e9e7}.gallery-newsletter{width:min(340px,90vw);text-align:center}.gallery-newsletter-embed{width:100%;height:78px;margin:0 auto;overflow:hidden}.gallery-newsletter .beehiiv-embed{position:relative;left:50%;width:430px!important;height:207px;transform:translate(-50%,-64px)}.gallery-subscribe-label{margin:0 0 16px;text-align:center}.gallery-subscribe-label a{color:inherit;text-decoration:none}.gallery-subscribe-label a:hover{color:#bdbdbb}.gallery-footer{position:absolute;right:28px;bottom:24px;left:28px;display:flex;align-items:center;flex-direction:column;justify-content:center;gap:8px;text-align:center;color:#555;font-size:11px}.gallery-socials{display:flex;flex-wrap:wrap;justify-content:center;gap:16px}.gallery-socials a:hover{color:#aaa}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@keyframes gallery-reveal{0%{opacity:.18;transform:translateY(24px) scale(.992)}to{opacity:1;transform:translateY(0) scale(1)}}@media(prefers-reduced-motion:no-preference){@supports (animation-timeline: view()){.gallery-exhibit,.gallery-newsletter{animation:gallery-reveal linear both;animation-timeline:view(block);animation-range:entry 0% cover 34%}}}.hero{padding:96px 0 48px}.hero-title{margin:0;font-size:clamp(40px,8vw,64px);font-weight:700;letter-spacing:-.02em}.hero-sub{margin:12px 0 0;font-size:18px;color:var(--fg-soft)}.grid{flex:1;display:grid;align-content:start;gap:16px;padding-bottom:64px}.card{display:flex;align-items:center;gap:18px;padding:22px 24px;background:var(--bg-soft);border:1px solid var(--border);border-radius:var(--radius);transition:transform .15s ease,border-color .15s ease,box-shadow .15s ease}.card:not(.is-soon):hover{transform:translateY(-2px);border-color:var(--card-accent, var(--accent));box-shadow:0 8px 30px -12px var(--card-accent, var(--accent))}.card.is-soon{opacity:.55;cursor:default}.card-emoji{font-size:32px;line-height:1;width:56px;height:56px;display:grid;place-items:center;background:var(--bg);border:1px solid var(--border);border-radius:14px;flex-shrink:0}.card-body{flex:1;min-width:0}.card-name{margin:0;font-size:20px;font-weight:650}.card-tagline{margin:2px 0 0;font-size:15px;color:var(--fg-soft)}.card-status{font-size:14px;font-weight:500;color:var(--card-accent, var(--accent));flex-shrink:0}.card.is-soon .card-status{color:var(--fg-soft)}.project{flex:1;padding:40px 0 64px}.back{display:inline-block;color:var(--fg-soft);font-size:15px;margin-bottom:48px;transition:color .15s ease}.back:hover{color:var(--fg)}.project-head{margin-bottom:32px}.project-emoji{font-size:44px;display:block;margin-bottom:16px}.project-name{margin:0;font-size:clamp(32px,6vw,48px);font-weight:700;letter-spacing:-.02em}.project-tagline{margin:8px 0 0;font-size:18px;color:var(--fg-soft)}.project-body{font-size:17px}.project-body p{margin:0 0 20px}.soon-note{color:var(--fg-soft)}.project-actions{margin-top:32px}.btn{display:inline-block;padding:12px 22px;border-radius:999px;font-size:15px;font-weight:550;transition:transform .15s ease,opacity .15s ease}.btn:hover{transform:translateY(-1px)}.btn-primary{background:var(--accent);color:#fff}.footer{display:flex;gap:8px;align-items:center;padding:24px 0 32px;font-size:14px;color:var(--fg-soft);border-top:1px solid var(--border)}.footer a:hover{color:var(--fg)}@media(max-width:520px){.page{padding:0 16px}.site-title{font-size:26px}.apps-page{padding-top:28px}.app-entry{padding:24px 0 28px}.gallery-nav{min-height:52px;padding:0 16px}.gallery-panel{padding:72px 18px 28px}.gallery-artwork img{max-width:100%;max-height:48svh}.gallery-app-copy{width:min(100%,460px);margin-top:18px}.gallery-footer{right:16px;bottom:16px;left:16px;align-items:center;flex-direction:column;gap:8px}.gallery-socials{gap:13px}}:root{--accent: var(--accent)}
