*{margin:0;padding:0;box-sizing:border-box}body{background:#fafafa;color:#1a1a1a;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:clutch,monospace}.shell{display:block;min-height:100vh;width:100%}.now{background:#ececec;border-radius:14px;margin:24px 0 24px 24px;padding:22px 24px;position:sticky;top:24px;height:calc(100vh - 48px);display:flex;flex-direction:column;color:#6b6b6b;font-family:var(--font-geist-mono),ui-monospace,monospace;font-size:12.5px;letter-spacing:.01em}.now .now-row{display:flex;justify-content:space-between;align-items:center}.now .now-row .date,.now .now-row .time{color:#6b6b6b}.now .now-emoji{flex:1;display:flex;align-items:center;justify-content:center;font-size:30px;line-height:1;transform-origin:70% 70%;animation:nowWave 3.4s ease-in-out infinite}.now .now-foot{display:flex;justify-content:space-between;align-items:flex-end;color:#8a8a8a;font-size:11px}.now .now-foot .label{color:#8a8a8a}.now .now-foot .value{color:#2a2a2a}@keyframes nowWave{0%,60%,to{transform:rotate(0deg)}10%{transform:rotate(14deg)}20%{transform:rotate(-8deg)}30%{transform:rotate(14deg)}40%{transform:rotate(-4deg)}50%{transform:rotate(10deg)}}.app{font-family:clutch,monospace;width:100%;max-width:680px;margin:0 auto;padding:80px 24px 60px;font-size:13px;line-height:1.7;color:#2a2a2a}.app section{scroll-margin-top:80px}.app section+section{margin-top:52px;padding-top:24px;border-top:1px solid #ececec}.app .timeline{list-style:none;margin-top:18px;padding:0}.app .timeline-item{padding-bottom:16px}.app .timeline-item:last-child{padding-bottom:0}.app .timeline-link{display:flex;flex-direction:column;gap:1px;width:fit-content;border:none;text-decoration:none;color:#2a2a2a;transition:color .15s ease}.app .timeline-link .timeline-date{font-size:11px;color:#aaa;letter-spacing:.02em}.app .timeline-link .timeline-title{font-size:13px}.app .timeline-link:hover{color:#f56e59}.app .card-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-top:18px}.app .card{border:none;text-decoration:none;color:inherit;display:flex;flex-direction:column;gap:12px;min-width:0}.app .card .card-shot{position:relative;aspect-ratio:4/3;background:#ececec;border-radius:16px;overflow:hidden;display:flex;align-items:flex-end;justify-content:center;transition:background .18s ease,transform .18s ease}.app .card .card-img{width:100%;height:100%;object-fit:cover;object-position:top center}.app .card .win{position:relative;width:90%;height:88%;border-radius:11px 11px 0 0;box-shadow:0 -2px 28px rgba(0,0,0,.1);transform:translateY(34px);transition:transform .18s ease;overflow:hidden;background:#fff}.app .card .win .win-dots{position:absolute;top:10px;left:11px;z-index:2;display:flex;gap:5px}.app .card .win .win-dots i{width:8px;height:8px;border-radius:50%;background:hsla(0,0%,100%,.55);box-shadow:0 0 0 .5px rgba(0,0,0,.08),0 1px 2px rgba(0,0,0,.12)}.app .card .win .win-frame{position:absolute;inset:0;overflow:hidden}.app .card .win .win-frame iframe{position:absolute;top:0;left:0;width:400%;height:400%;border:0;transform:scale(.25);transform-origin:0 0;pointer-events:none}.app .card .card-cap{display:flex;flex-direction:column;gap:1px;padding-left:2px}.app .card .card-cap .card-top{display:flex;align-items:baseline;justify-content:space-between;gap:8px;min-width:0}.app .card .card-cap .card-name,.app .card .card-cap .card-name-link{color:#1a1a1a;font-size:13px;border:none;text-decoration:none;transition:color .15s ease}.app .card .card-cap .card-links{font-size:10.5px;white-space:nowrap;display:inline-flex;align-items:center;gap:4px;flex:none}.app .card .card-cap .card-links a{color:#f56e59;border:none;text-decoration:none;display:inline-flex;align-items:center;gap:3px;transition:opacity .15s ease}.app .card .card-cap .card-links a:hover{opacity:.72}.app .card .card-cap .card-links .is-soon{color:#c2c2c2;display:inline-flex;align-items:center;gap:4px}.app .card .card-cap .card-links .route{color:#f56e59;display:inline-flex;align-items:center;gap:3px}.app .card .card-cap .card-links .sep{font-style:normal;color:#d4d4d4}.app .card .card-cap .card-links .apple-ico{width:9.5px;height:9.5px;flex:none;margin-top:-1px;color:#1a1a1a}.app .card .card-cap .card-links .is-soon .apple-ico{color:#c2c2c2}.app .card .card-cap .card-links .cursor-ico{width:9.5px;height:9.5px;flex:none;transform:scaleX(-1);transition:transform .15s ease}.app .card .card-cap .card-desc{color:#999;font-size:12px}.app .card:hover .card-cap .card-name-link{color:#f56e59}.app .card:hover .card-cap .card-links .route .cursor-ico,.app .card:hover .card-cap .card-links a .cursor-ico{transform:scaleX(-1) translate(-2px,1px)}.app .card:hover .card-shot{background:#e4e4e4}.app .card:hover .win{transform:translateY(26px)}.app h1,.app h2{font-size:inherit;font-weight:inherit;line-height:inherit;margin:0}.app h1{font-size:16px;font-weight:600;color:#000;letter-spacing:-.01em}.app .tagline{color:#666;margin-bottom:4px}.app h2{margin-top:28px}.app section>h2:first-child{margin-top:0}.app ul+p{margin-top:28px}.app .inline-logo{width:14px;height:14px;display:inline-block;vertical-align:-1px;margin-right:3px;border-radius:3px}.app a{color:#f56e59;text-decoration:none;border-bottom:1px solid rgba(245,110,89,.3);transition:border-color .15s ease}.app a:hover{border-color:#f56e59}.app a.spawnlabs-link{display:inline}.app p{word-wrap:break-word;overflow-wrap:break-word}.app p.socials{display:flex;flex-direction:row;flex-wrap:wrap;gap:12px;margin-top:8px}.app p.socials a{font-size:13px}.app p.emails{display:flex;flex-direction:row;flex-wrap:wrap;gap:12px;margin-top:4px}.app p.emails a{font-size:12px}.app ul{margin-top:8px;padding-left:16px;list-style:none}.app ul li{margin-bottom:10px;position:relative;padding-left:12px;word-wrap:break-word;overflow-wrap:break-word}.app ul li:before{content:"•";position:absolute;left:0;color:#999}.app ul li ul{margin-top:8px;margin-bottom:0;padding-left:8px}.app ul li ul li{margin-bottom:6px;font-size:12.5px;color:#444}.app .emails a{color:#f56e59;font-size:12px}.project-page{font-family:clutch,monospace;width:100%;max-width:680px;margin:0 auto;padding:80px 24px 60px;font-size:13px;line-height:1.7;color:#2a2a2a}.project-page .back{display:inline-block;color:#999;text-decoration:none;border:none;font-size:12px;margin-bottom:32px;transition:color .15s ease}.project-page .back:hover{color:#f56e59}.project-page .project-head{display:flex;align-items:baseline;justify-content:space-between;gap:16px}.project-page .project-head h1{font-size:18px;font-weight:600;color:#000;letter-spacing:-.01em}.project-page .project-head .year{color:#aaa;font-size:12px}.project-page .tagline{color:#666;margin:2px 0 24px}.project-page .project-body{color:#2a2a2a;margin-bottom:24px}.project-page .project-shot{display:block;position:relative;aspect-ratio:16/9;background:#ececec;border-radius:16px;overflow:hidden;margin:4px 0 28px;border:none;transition:background .18s ease}.project-page .project-shot .shot-img{width:100%;height:100%;object-fit:cover;object-position:top center}.project-page .project-shot .win{position:absolute;left:5%;right:5%;top:18px;bottom:0;border-radius:11px 11px 0 0;box-shadow:0 -2px 28px rgba(0,0,0,.1);overflow:hidden;background:#fff}.project-page .project-shot .win .win-dots{position:absolute;top:10px;left:11px;z-index:2;display:flex;gap:5px}.project-page .project-shot .win .win-dots i{width:8px;height:8px;border-radius:50%;background:hsla(0,0%,100%,.55);box-shadow:0 0 0 .5px rgba(0,0,0,.08),0 1px 2px rgba(0,0,0,.12)}.project-page .project-shot .win .win-frame{position:absolute;inset:0;overflow:hidden}.project-page .project-shot .win .win-frame iframe{position:absolute;top:0;left:0;width:400%;height:400%;border:0;transform:scale(.25);transform-origin:0 0;pointer-events:none}.project-page .project-shot:hover{background:#e4e4e4}.project-page .project-link{display:flex;flex-direction:row;flex-wrap:wrap;gap:16px}.project-page .project-link a{color:#f56e59;text-decoration:none;border-bottom:1px solid rgba(245,110,89,.3);transition:border-color .15s ease}.project-page .project-link a:hover{border-color:#f56e59}.note-page .node-timeline{list-style:none;margin:28px 0 0;padding:0}.note-page .node{position:relative;padding-left:24px;padding-bottom:34px}.note-page .node:before{content:"";position:absolute;left:4px;top:9px;bottom:0;width:1px;background:#ececec}.note-page .node:last-child{padding-bottom:0}.note-page .node:last-child:before{display:none}.note-page .node:after{content:"";position:absolute;left:0;top:5px;width:9px;height:9px;border-radius:50%;background:#fafafa;border:1.5px solid #f56e59}.note-page .node-date{display:block;font-size:11px;color:#aaa;letter-spacing:.03em}.note-page .node-title{font-size:13px;font-weight:600;color:#000;margin:4px 0 12px}.note-page .node-body{color:#2a2a2a}.note-page .note-empty{margin-top:24px;color:#aaa}.note-page .thought-h{font-size:13px;font-weight:600;color:#000;margin:26px 0 10px}.note-page .thought-p{color:#2a2a2a;margin-bottom:14px}.note-page .thought-todo{display:flex;align-items:flex-start;gap:9px;margin:12px 0;color:#2a2a2a}.note-page .thought-todo .box{flex:none;width:14px;height:14px;margin-top:3px;border:1px solid #cfcfcf;border-radius:4px;position:relative}.note-page .thought-todo[data-done=true]{color:#999}.note-page .thought-todo[data-done=true] .box{background:#f56e59;border-color:#f56e59}.note-page .thought-todo[data-done=true] .box:after{content:"";position:absolute;left:4px;top:1px;width:4px;height:8px;border:solid #fff;border-width:0 1.5px 1.5px 0;transform:rotate(45deg)}@media(max-width:600px){.project-page{padding:48px 20px 40px}}@keyframes section-blur-pulse{0%{filter:blur(0)}22%{filter:blur(6px)}62%{filter:blur(0)}to{filter:blur(0)}}html.transitioning .app,html.transitioning .project-page{animation:section-blur-pulse .9s cubic-bezier(0,0,.2,1)}@media(prefers-reduced-motion:reduce){html.transitioning .app,html.transitioning .project-page{animation:none}}.nav-rail{position:fixed;right:28px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;align-items:flex-end;gap:2px;z-index:50;font-family:clutch,monospace}.nav-rail a{font-size:12px;line-height:1;color:#b4b4b4;text-decoration:none;padding:6px 11px;border-radius:8px;letter-spacing:.01em;transition:color .15s ease,background .15s ease}.nav-rail a:hover{color:#6b6b6b}.nav-rail a.active{color:#2a2a2a;background:#ececec}@media(max-width:900px){.shell{grid-template-columns:1fr}.now{position:relative;top:0;height:200px;margin:16px 16px 0}.app{padding:40px 20px}.app .card-grid{grid-template-columns:1fr}.nav-rail{position:sticky;top:0;transform:none;flex-direction:row;align-items:center;justify-content:flex-end;gap:4px;padding:10px 16px;background:rgba(250,250,250,.85);backdrop-filter:blur(8px)}}@media(max-width:600px){.now{height:160px;padding:18px 20px;font-size:12px}.now .now-emoji{font-size:26px}.app{padding:32px 20px 40px;font-size:12.5px}.app>h1{font-size:15px}.app ul{padding-left:8px}.app ul li{padding-left:10px}.app p.socials{gap:10px}}@media(max-width:380px){.app{padding:36px 16px 32px;font-size:12px}.app>h1{font-size:14px}}.win.win--shot{background:#0e0e0f}.win .win-img{width:100%;height:auto;display:block}.craft-page{font-family:clutch,monospace;width:100%;max-width:680px;margin:0 auto;padding:80px 24px 90px;font-size:13px;line-height:1.7;color:#2a2a2a}.craft-page.craft-page--wall{max-width:min(1320px,100vw - 40px)}.craft-page .back{display:inline-block;color:#999;text-decoration:none;border:none;font-size:12px;margin-bottom:32px;transition:color .15s ease}.craft-page .back:hover{color:#f56e59}.craft-page .craft-head h1{font-size:18px;font-weight:600;color:#000;letter-spacing:-.01em}.craft-page .tagline{color:#666;margin:2px 0 24px;max-width:600px}.craft-page .craft-argument{max-width:600px;margin-bottom:34px}.craft-page a{color:#f56e59;text-decoration:none;border-bottom:1px solid rgba(245,110,89,.3);transition:border-color .15s ease}.craft-page a:hover{border-color:#f56e59}.craft-page .craft-block{margin-top:38px;max-width:600px}.craft-page .craft-label{font-size:11px;font-weight:400;color:#999;letter-spacing:.02em;text-transform:uppercase;margin-bottom:12px}.craft-page .craft-label .dim{color:#b4b4b4;text-transform:none;letter-spacing:0}.craft-page .craft-foot,.craft-page .craft-open{color:#999;max-width:600px}.craft-page .craft-foot{margin-top:46px;padding-top:20px;border-top:1px solid #ececec;font-size:12px}.diagram{font-family:clutch,monospace;font-size:12px;line-height:1.55;color:#2a2a2a;background:#fff;border:1px solid #ececec;border-radius:8px;padding:18px 20px;margin:0 0 10px;overflow-x:auto;white-space:pre}.diagram b{font-weight:400;color:#f56e59}.diagram em{font-style:normal;color:#b4b4b4}.system{margin-bottom:30px}.system-cap{font-size:12px;color:#666;margin:0;max-width:600px}.pull{border-left:1px solid #ececec;padding:2px 0 2px 16px;margin-bottom:18px}.pull .pull-top{display:flex;align-items:baseline;gap:10px}.pull .pull-name{color:#1a1a1a}.pull .pull-year{color:#b4b4b4;font-size:11px}.pull .pull-body{color:#666;margin:0}.kv{margin:0}.kv .kv-row{display:flex;gap:14px;padding:3px 0;font-size:12px}.kv .kv-row dt{color:#999;flex:none;width:112px}.kv .kv-row dd{margin:0;color:#2a2a2a}.kv .kv-row dd.is-dim{color:#b4b4b4}.kv .kv-row--wide dt{width:210px}.wall{column-count:3;column-gap:10px;margin-top:6px}.tile{break-inside:avoid;margin:0 0 10px}.tile .tile-shot{border:1px solid #ececec;border-radius:3px;overflow:hidden;background:#fff}.tile:has(.shot-composite,.shot-phones,.shot-mac) .tile-shot{border:0;border-radius:10px}.tile .tile-cap{font-size:11px;color:#b4b4b4;line-height:1.45;padding:5px 1px 0}.tile .tile-cap b{font-weight:400;color:#999}.wall-note{font-size:12px;color:#999;margin:14px 0 0;max-width:600px}.shot-img{display:block;width:100%;height:auto}.shot-slot{position:relative;background:#ececec}.shot-slot .shot-slot-mark{position:absolute;left:50%;top:50%;width:20px;height:20px;margin:-10px 0 0 -10px;border:1px dashed #dcdcdc;border-radius:4px}@media(max-width:1040px){.wall{column-count:2}}@media(max-width:720px){.wall{column-count:1}.wall .tile{margin-bottom:22px}.wall .tile--empty,.wall-note--empties{display:none}.tile .tile-cap{font-size:12px;padding-top:7px}.craft-page{padding:48px 20px 60px}.craft-page.craft-page--wall{max-width:680px}.kv .kv-row{flex-direction:column;gap:0}.kv .kv-row dt,.kv .kv-row--wide dt{width:auto}}.sig-wrap{position:absolute;inset:0;background:#fff;overflow:hidden}.sig-wrap .sig{display:block;width:100%;height:100%}.card .win .sig-wrap{bottom:34px}.sig-wrap--lg{position:relative;inset:auto;height:240px;border:1px solid #ececec;border-radius:8px;margin-bottom:34px}.sig{font-family:clutch,monospace}.sig .sig-t{font-size:10px;fill:#b4b4b4;letter-spacing:.02em}.sig .sig-t--head{fill:#1a1a1a;font-size:11.5px}.sig--agents .sig-rail,.sig--agents .sig-tick{stroke:#e4e4e4;stroke-width:1}.sig--agents .sig-ckpt{fill:#2a2a2a}.sig--agents .sig-x{stroke:#f56e59;stroke-width:1.6;stroke-linecap:round}.sig--agents .sig-run{fill:#f56e59;opacity:0}@keyframes sig-run{0%{transform:translateX(0);opacity:1}46%{transform:translateX(180px);opacity:1}52%{transform:translateX(180px);opacity:0}62%{transform:translateX(120px);opacity:0}68%{transform:translateX(120px);opacity:1}92%,to{transform:translateX(240px);opacity:1}}.card:hover .sig--agents .sig-run,.sig-wrap--lg:hover .sig--agents .sig-run{animation:sig-run 3.4s cubic-bezier(.4,0,.6,1) infinite}.sig--infra .ln{stroke:#e2e2e2;stroke-width:1.2}.sig--infra .bx{fill:#fafafa;stroke:#dcdcdc;stroke-width:1.1}.sig--infra .bx.ink{fill:#ececec;stroke:#ccc}.sig--infra .mc rect{fill:#fafafa;stroke:#dcdcdc;stroke-width:1.1}.sig--infra .mc circle{fill:#d4d4d4}.sig--infra .mc.is-keyed rect{fill:rgba(245,110,89,.07);stroke:rgba(245,110,89,.5)}.sig--infra .mc.is-keyed circle{fill:#f56e59}@keyframes sig-claim{0%,to{fill:#d4d4d4}50%{fill:#9a9a9a}}.card:hover .sig--infra .mc circle,.sig-wrap--lg:hover .sig--infra .mc circle{animation:sig-claim 2.8s ease-in-out infinite;animation-delay:calc(var(--i, 0)*.16s)}.card:hover .sig--infra .mc.is-keyed circle,.sig-wrap--lg:hover .sig--infra .mc.is-keyed circle{animation:none}.sig--ml .sig-edge{stroke:#e9e9e9;stroke-width:1.1}.sig--ml .sig-edge.is-cut{stroke:#f0f0f0;stroke-dasharray:2 3}.sig--ml .sig-bound{fill:none;stroke:rgba(245,110,89,.32);stroke-width:1.1;stroke-dasharray:2 4}.sig--ml .sig-node{fill:#dcdcdc}.sig--ml .sig-node.is-out{fill:#fff;stroke:#dcdcdc;stroke-width:1.2}.sig--ml .sig-node.is-h2{fill:#d0d0d0}.sig--ml .sig-node.is-h1{fill:#b6b6b6}.sig--ml .sig-node.is-seed{fill:#2a2a2a}@keyframes sig-hop{0%,8%{fill:#ececec}26%,74%{fill:#8f8f8f}to{fill:#ececec}}@keyframes sig-bound-pulse{0%,to{stroke:rgba(245,110,89,.26)}40%{stroke:rgba(245,110,89,.8)}}.card:hover .sig--ml .sig-node.is-h1,.sig-wrap--lg:hover .sig--ml .sig-node.is-h1{animation:sig-hop 3s ease-in-out infinite;animation-delay:calc(.25s + var(--i)*.06s)}.card:hover .sig--ml .sig-node.is-h2,.sig-wrap--lg:hover .sig--ml .sig-node.is-h2{animation:sig-hop 3s ease-in-out infinite;animation-delay:calc(.7s + var(--i)*.06s)}.card:hover .sig--ml .sig-bound,.sig-wrap--lg:hover .sig--ml .sig-bound{animation:sig-bound-pulse 3s ease-in-out infinite;animation-delay:1.1s}.sig-wrap .sig--product{display:block;position:relative;height:100%;padding:26px 10px 0;background:#fff;overflow:hidden}.sig-wrap .sig--product .sig-head{position:absolute;left:12px;top:7px;z-index:2;font-size:11.5px;color:#1a1a1a;letter-spacing:.02em}.sig-wrap .sig--product .sig-wall{columns:44px;column-gap:4px;transition:transform .3s ease}.sig-wrap .sig--product .sig-tile{display:block;width:100%;height:auto;margin-bottom:4px;break-inside:avoid;border-radius:2px;background:#f2f2f2}.card:hover .sig--product .sig-wall,.sig-wrap--lg:hover .sig--product .sig-wall{transform:translateY(-14px)}@media(prefers-reduced-motion:reduce){.sig--infra .sig-cell,.sig--ml .sig-ambig,.sig--ml .sig-bound,.sig--ml .sig-node,.sig--product .sig-wall,.sig-run{transition:none}.card:hover .sig--agents .sig-run{opacity:1}}.craft-page .sig-wrap--lg{max-width:600px}.sig-wrap--lg .sig--product .sig-wall{columns:66px;column-gap:5px}.sig-wrap--lg .sig--product .sig-tile{margin-bottom:5px}.app .card-grid--3{grid-template-columns:repeat(3,1fr);gap:14px 14px;width:min(860px,100vw - 48px);margin-left:50%;transform:translateX(-50%)}.app .card-grid--3 .card{gap:11px}.app .card-grid--3 .card .card-shot{border-radius:15px}.app .card-grid--3 .card .win{border-radius:10px 10px 0 0;transform:translateY(31px)}.app .card-grid--3 .card:hover .win{transform:translateY(24px)}.grid-divide{grid-column:1/-1;display:flex;align-items:center;gap:12px;margin:14px 0 2px;font-size:11px;color:#b4b4b4;letter-spacing:.02em}.grid-divide:after{content:"";flex:1;height:1px;background:#ececec}@media(max-width:900px){.app .card-grid--3{grid-template-columns:repeat(2,1fr);gap:14px}}@media(max-width:560px){.app .card-grid--3{grid-template-columns:1fr}}.tool-tiles{position:absolute;inset:0;padding:22px 10px 10px;display:grid;grid-template-columns:1fr 1fr;gap:6px;background:#fff}.tool-tiles .tool-tile{position:relative;overflow:hidden;border-radius:4px;background:#f6f6f6;border:1px solid #efefef;display:flex;flex-direction:column;justify-content:flex-end;padding:6px 7px;min-height:0}.tool-tiles .tool-tile img{position:absolute;inset:4px 4px 12px;width:calc(100% - 8px);height:calc(100% - 16px);object-fit:contain;object-position:center}.tool-tiles .tool-tile:has(img) i{display:none}.tool-tiles .tool-tile:has(img):after{content:"";position:absolute;left:0;right:0;bottom:0;height:46%;background:linear-gradient(180deg,rgba(246,246,246,0),#f6f6f6 70%)}.tool-tiles .tool-tile b{position:relative;z-index:1;font-weight:400;font-size:10px;color:#8a8a8a;line-height:1.3}.tool-tiles .tool-tile i{position:relative;z-index:1;font-style:normal;font-size:9px;color:#c2c2c2;line-height:1.3}.tool-tiles .tool-tile:nth-child(odd):last-child{grid-column:1/-1}.project-page .tool-list{list-style:none;margin:4px 0 28px;padding:0}.project-page .tool-list li{display:flex;gap:14px;padding:3px 0;font-size:12px}.project-page .tool-list .tool-name{width:96px;flex:none;color:#2a2a2a}.project-page .tool-list .tool-what{color:#999}.win-empty{position:absolute;inset:0;background:#fff}.win-empty:after{content:"";position:absolute;left:50%;top:50%;width:26px;height:26px;margin:-13px 0 0 -13px;border:1px dashed #e4e4e4;border-radius:4px}.app .card-grid--3 .card--wide{grid-column:1/-1}.app .card-grid--3 .card--wide .card-shot{aspect-ratio:30/9}.app .card-grid--3 .card--wide .win{width:94%;height:90%}@media(max-width:900px){.app .card-grid--3 .card--wide .card-shot{aspect-ratio:2/1}}.project-page .shot-gallery{list-style:none;display:flex;gap:10px;margin:0 0 30px;padding:0 0 10px;overflow-x:auto;scrollbar-width:none}.project-page .shot-gallery::-webkit-scrollbar{display:none}.project-page .shot-gallery li{flex:none;width:148px;align-self:flex-end}.project-page .shot-gallery li.is-wide{width:300px}.project-page .shot-gallery img{display:block;width:100%;height:auto;border-radius:8px;border:1px solid #ececec;background:#fff}.project-page .shot-gallery span{display:block;font-size:11px;color:#b4b4b4;padding-top:6px;line-height:1.4}.composite{position:absolute;inset:0;overflow:hidden}.composite .composite-desk{position:absolute;left:5%;right:5%;top:13%;bottom:-12%;border-radius:6px 6px 0 0;overflow:hidden;background:#0b0c10;box-shadow:0 1px 0 hsla(0,0%,100%,.5),0 10px 26px rgba(0,0,0,.16),0 2px 6px rgba(0,0,0,.08)}.composite .composite-desk img{display:block;width:100%;height:100%;object-fit:cover;object-position:top center}.composite .composite-phone{position:absolute;right:7%;bottom:-17%;width:27%}.phone-frame{display:block;position:relative;aspect-ratio:9/19.5;filter:drop-shadow(0 18px 30px rgba(0,0,0,.34)) drop-shadow(0 4px 8px rgba(0,0,0,.2)) drop-shadow(0 1px 2px rgba(0,0,0,.16))}.phone-frame .phone-band{position:absolute;inset:0;border-radius:15.5%/7.2%;background:linear-gradient(100deg,#6f7278,#c9ccd2 12%,#8a8d94 28%,#5c5f66 52%,#9fa3aa 74%,#6a6d74 90%,#4c4f55);box-shadow:0 0 0 .5px rgba(0,0,0,.4)}.phone-frame .phone-body{position:absolute;left:1.1%;right:1.1%;top:.5%;bottom:.5%;border-radius:14.8%/6.9%;background:#08080a;box-shadow:inset 0 0 0 .5px hsla(0,0%,100%,.2),inset 0 0 5px rgba(0,0,0,.9)}.phone-frame .phone-screen{position:absolute;left:1.6%;right:1.6%;top:.75%;bottom:.75%;border-radius:14%/6.5%;overflow:hidden;background:#000}.phone-frame .phone-screen:after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(114deg,rgba(255,255,255,.16),rgba(255,255,255,.05) 22%,rgba(255,255,255,0) 42%),radial-gradient(120% 90% at 50% 50%,rgba(0,0,0,0) 62%,rgba(0,0,0,.22) 100%)}.phone-frame .phone-screen img{display:block;width:100%;height:100%;object-fit:cover;object-position:top center}.phone-frame .phone-island{position:absolute;top:1.6%;left:50%;transform:translateX(-50%);width:30%;height:3.1%;border-radius:999px;background:#000}.phone-frame .phone-btn{position:absolute;background:linear-gradient(180deg,#8a8d94,#5c5f66);border-radius:1px}.phone-frame .phone-btn--vol{left:-.6%;top:21%;width:1.2%;height:6%}.phone-frame .phone-btn--vol2{left:-.6%;top:29%;width:1.2%;height:6%}.phone-frame .phone-btn--pwr{right:-.6%;top:25%;width:1.2%;height:9%}.project-page .composite .composite-phone{width:20%;right:6%;bottom:-14%}.project-page .project-shot--composite{background:#f4f4f4;cursor:default}.project-page .project-shot--composite:hover{background:#f4f4f4}.tile .shot-composite,.tile .shot-mac,.tile .shot-phones{background:#f4f4f3}.shot-phones{display:flex;justify-content:center;align-items:center;gap:6px;padding:30px 26px}.shot-phones .phone-frame{width:44%}.shot-phones.is-multi{gap:0;padding:32px 20px}.shot-phones.is-multi .phone-frame{width:42%}.shot-phones.is-multi .phone-frame+.phone-frame{margin-left:-12%;margin-bottom:7%}.shot-phones.is-multi .phone-frame:first-child{z-index:2}.shot-phones[data-count="3"]{padding:30px 14px}.shot-phones[data-count="3"] .phone-frame{width:36%}.shot-phones[data-count="3"] .phone-frame+.phone-frame{margin-left:-9%}.shot-phones[data-count="3"] .phone-frame:first-child{z-index:3;margin-bottom:8%}.shot-phones[data-count="3"] .phone-frame:nth-child(2){z-index:2;margin-bottom:0}.shot-phones[data-count="3"] .phone-frame:nth-child(3){z-index:1;margin-bottom:8%}.shot-phones.is-spread{gap:10px;padding:30px 20px}.shot-phones.is-spread .phone-frame{width:42%}.shot-phones.is-spread .phone-frame+.phone-frame{margin-left:0;margin-bottom:0}.shot-phones.is-spread .phone-frame:first-child,.shot-phones.is-spread .phone-frame:nth-child(2),.shot-phones.is-spread .phone-frame:nth-child(3){margin-bottom:0}.shot-mac{padding:30px 26px}.shot-mac.is-multi{padding:26px 20px}.shot-mac.is-multi .mac-win{position:relative}.shot-mac.is-multi .mac-win+.mac-win{margin:-16% 0 0 14%;z-index:2}.shot-mac.is-yapper{padding-left:8px;padding-right:8px}.mac-frame{display:block;position:relative}.mac-frame:after{content:"";position:absolute;left:3%;right:3%;top:100%;aspect-ratio:94/4;transform:translateY(-34%);background:radial-gradient(closest-side,rgba(0,0,0,.34),rgba(0,0,0,0));filter:blur(3px);pointer-events:none}.mac-frame .mac-lid{display:block;position:relative;padding:1.15%;border-radius:1.6%/2.5%;background:linear-gradient(168deg,#303237,#1d1f23 44%,#101114);box-shadow:inset 0 0 0 .5px hsla(0,0%,100%,.16),0 12px 26px rgba(0,0,0,.22),0 3px 6px rgba(0,0,0,.16)}.mac-frame .mac-lid:before{content:"";position:absolute;inset:-.85%;z-index:-1;border-radius:2%/3.1%;background:linear-gradient(158deg,#f2f4f6,#ced3d8 18%,#a5abb2 42%,#878d94 62%,#b7bcc2 84%,#dfe3e7)}.mac-frame .mac-screen{display:block;position:relative;aspect-ratio:16/10;border-radius:.5%/.8%;overflow:hidden;background:#05060a;box-shadow:inset 0 0 0 .5px hsla(0,0%,100%,.07),inset 0 2px 9px rgba(0,0,0,.65)}.mac-frame .mac-screen img{display:block;width:100%;height:100%;object-fit:cover;object-position:top center}.mac-frame .mac-screen:after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(107deg,rgba(255,255,255,.11),rgba(255,255,255,.035) 24%,rgba(255,255,255,0) 46%),radial-gradient(125% 105% at 50% 46%,rgba(0,0,0,0) 58%,rgba(0,0,0,.26) 100%)}.mac-frame .mac-notch{position:absolute;top:0;left:50%;transform:translateX(-50%);width:15%;aspect-ratio:15/1.15;background:#0e0f12;border-radius:0 0 3px 3px}.mac-frame .mac-foot{display:block;position:relative;width:116%;margin-left:-8%;aspect-ratio:116/2.5;border-radius:1px 1px 7px 7px;background:linear-gradient(180deg,#b6bbc1,#eef1f4 9%,#d5dade 26%,#aeb4ba 52%,#8f959c 76%,#757b82 92%,#9aa0a7);clip-path:polygon(0 0,100% 0,98.8% 100%,1.2% 100%);box-shadow:0 8px 16px rgba(0,0,0,.16)}.mac-frame .mac-foot:after{content:"";position:absolute;left:1.6%;right:1.6%;bottom:0;height:22%;background:linear-gradient(180deg,rgba(255,255,255,0),rgba(255,255,255,.4))}.mac-frame .mac-hinge{position:absolute;top:0;left:50%;transform:translateX(-50%);width:12%;height:52%;border-radius:0 0 999px 999px;background:linear-gradient(180deg,#9ba1a8,#b9bec4 45%,#d3d8dc)}.shot-composite{position:relative;aspect-ratio:4/3;overflow:hidden}.shot-composite .composite-desk{left:11%;right:11%;top:20%}.shot-composite .composite-phone{width:25%;right:10%;bottom:-14%}.phone-fan{position:absolute;inset:0;display:flex;align-items:flex-end;justify-content:center;padding:12% 6% 0;background:#f4f4f3}.phone-fan .phone-frame{width:40%;flex:none;transform-origin:bottom center}.phone-fan .phone-frame:first-child,.phone-fan .phone-frame:last-child{width:34%;z-index:1;opacity:.96}.phone-fan .phone-frame:first-child{margin-right:-7%;transform:translateY(6%) rotate(-3deg)}.phone-fan .phone-frame:last-child{margin-left:-7%;transform:translateY(6%) rotate(3deg)}.phone-fan .phone-frame:nth-child(2){z-index:2;margin-bottom:-6%}.project-page .project-shot--composite .phone-fan{padding:8% 6% 0}.project-page .project-shot--composite .phone-fan .phone-frame{width:27%}.project-page .project-shot--composite .phone-fan .phone-frame:first-child,.project-page .project-shot--composite .phone-fan .phone-frame:last-child{width:23%}.app .card .card-hit{display:block;border:none;text-decoration:none;color:inherit}.shot-overlay{background:#f4f4f3;padding:30px 24px;display:flex;align-items:center}.shot-overlay img{display:block;width:100%;height:auto}.win .win-play{position:absolute;left:50%;top:50%;z-index:3;width:38px;height:38px;margin:-19px 0 0 -19px;border-radius:50%;background:rgba(20,20,22,.62);box-shadow:0 2px 10px rgba(0,0,0,.28);backdrop-filter:blur(2px);transition:background .18s ease,transform .18s ease}.win .win-play:after{content:"";position:absolute;left:50%;top:50%;margin:-6px 0 0 -4px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0) #fff;border-style:solid;border-width:6px 0 6px 10px}.card:hover .win .win-play{background:rgba(245,110,89,.92);transform:scale(1.06)}.app .card .win--figure{box-shadow:0 -2px 22px rgba(0,0,0,.07)}.craft-page.hk-page{max-width:min(1180px,100vw - 40px)}.hk-page .hk-count{margin:4px 0 0;font-size:12px;color:#b4b4b4}.hk-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:30px 22px;margin-top:26px}.hk-card{display:flex;flex-direction:column;gap:12px;min-width:0}.hk-card .hk-shot{position:relative;border-radius:10px;overflow:hidden;background:#f2f2f2}.hk-card .hk-shot>img{display:block;width:100%;aspect-ratio:3/2;object-fit:cover;object-position:50% 42%}.hk-card .hk-badge{position:absolute;left:12px;bottom:12px;padding:5px 10px;border-radius:999px;background:#f56e59;color:#fff;font-size:11px;letter-spacing:.01em}.hk-card .hk-meta{display:flex;flex-direction:column;gap:3px;min-width:0}.hk-card .hk-top{display:flex;align-items:baseline;gap:10px}.hk-card .hk-top h3{margin:0;font-size:14px;font-weight:400;color:#1a1a1a}.hk-card .hk-date{font-size:11px;color:#b4b4b4;flex:none}.hk-card .hk-where{margin:0;font-size:12px;color:#666}.hk-card .hk-built{margin:0;font-size:12px;color:#999}.hk-card .hk-built b{color:#444;font-weight:400}.hk-card .hk-note{margin:5px 0 0;font-size:12px;line-height:1.62;color:#777;max-width:56ch}.hk-card .hk-stack{margin:5px 0 0;font-size:11px;color:silver}.hk-card .hk-with{margin:6px 0 0;font-size:12px;color:#999}.hk-card .hk-with a{color:#666;text-decoration:none}.hk-card .hk-with a:hover{color:#1a1a1a;text-decoration:underline}.hk-inset{position:absolute;right:12px;bottom:12px;width:38%;max-width:220px;border-radius:7px;overflow:hidden;background:#000;box-shadow:0 6px 20px rgba(0,0,0,.32);border:1px solid hsla(0,0%,100%,.5);text-decoration:none;transition:transform .18s ease}.hk-inset:hover{transform:translateY(-2px)}.hk-inset img{display:block;width:100%;aspect-ratio:16/10;object-fit:cover}.hk-inset .hk-inset-bar{position:absolute;left:0;right:0;bottom:0;display:flex;align-items:center;gap:6px;padding:6px 8px;background:linear-gradient(0deg,rgba(0,0,0,.72),rgba(0,0,0,0));font-size:10px;color:hsla(0,0%,100%,.9)}.hk-inset .hk-play{width:16px;height:16px;border-radius:999px;background:hsla(0,0%,100%,.94);color:#111;font-size:7px;line-height:16px;text-align:center;padding-left:1px}.hk-links{display:flex;flex-wrap:wrap;gap:14px;padding-top:9px}.hk-link{font-size:12px;color:#888;text-decoration:none}.hk-link:hover{color:#1a1a1a;text-decoration:underline}.hk-link--play,.hk-link--play:hover{color:#f56e59}.hk-card--lead{grid-column:1/-1;flex-direction:row;gap:26px;align-items:stretch}.hk-card--lead .hk-shot{flex:1 1 57%;min-width:0}.hk-card--lead .hk-shot>img{aspect-ratio:16/10;height:100%}.hk-card--lead .hk-meta{flex:1 1 43%;justify-content:center}.hk-card--lead .hk-top{flex-direction:column;align-items:flex-start;gap:3px}.hk-card--lead .hk-top h3{font-size:16px}.hk-card--lead .hk-where{padding-top:4px}.hk-card--lead .hk-note{font-size:13px}@media(max-width:860px){.hk-card--lead{flex-direction:column;gap:12px}.hk-card--lead .hk-shot>img{height:auto;aspect-ratio:3/2}}@media(max-width:980px){.hk-grid{grid-template-columns:1fr 1fr}}@media(max-width:620px){.hk-grid{grid-template-columns:1fr;gap:26px}.hk-inset{width:44%}}.project-page .project-video{margin:22px 0 28px}.vp{position:relative;border-radius:12px;overflow:hidden;background:#0b0c10;line-height:0;outline:none}.vp video{display:block;width:100%;height:auto;cursor:pointer}.vp:focus-visible{box-shadow:0 0 0 2px rgba(245,110,89,.55)}.vp .vp-big{position:absolute;inset:0;margin:auto;width:62px;height:62px;display:grid;place-items:center;border:0;border-radius:999px;cursor:pointer;background:rgba(12,12,14,.52);backdrop-filter:blur(14px) saturate(1.3);-webkit-backdrop-filter:blur(14px) saturate(1.3);box-shadow:inset 0 0 0 1px hsla(0,0%,100%,.16),0 8px 30px rgba(0,0,0,.34);transition:transform .16s ease,background .16s ease}.vp .vp-big svg{width:26px;height:26px;fill:#fff;transform:translateX(1px)}.vp .vp-big:hover{transform:scale(1.05);background:rgba(245,110,89,.9)}.vp .vp-bar{position:absolute;left:12px;right:12px;bottom:12px;z-index:3;display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:999px;line-height:1;background:rgba(12,12,14,.5);backdrop-filter:blur(18px) saturate(1.4);-webkit-backdrop-filter:blur(18px) saturate(1.4);box-shadow:inset 0 0 0 1px hsla(0,0%,100%,.13),0 6px 26px rgba(0,0,0,.3);opacity:0;transform:translateY(6px);transition:opacity .2s ease,transform .2s ease;pointer-events:none}.vp.is-started.is-awake .vp-bar{opacity:1;transform:none;pointer-events:auto}.vp:focus-within .vp-bar{opacity:1;transform:none;pointer-events:auto}.vp .vp-btn{flex:none;width:26px;height:26px;display:grid;place-items:center;padding:0;border:0;border-radius:999px;background:rgba(0,0,0,0);color:#fff;cursor:pointer;transition:background .14s ease,color .14s ease}.vp .vp-btn svg{width:17px;height:17px;fill:currentColor}.vp .vp-btn:hover{background:hsla(0,0%,100%,.14)}.vp .vp-btn:active{color:#f56e59}.vp .vp-btn--sm svg{width:15px;height:15px}.vp .vp-rail{position:relative;flex:1 1 auto;height:14px;display:flex;align-items:center;cursor:pointer;outline:none}.vp .vp-rail:before{content:"";left:0;right:0;background:hsla(0,0%,100%,.2)}.vp .vp-rail span,.vp .vp-rail:before{position:absolute;height:3px;border-radius:999px}.vp .vp-rail .vp-buf{left:0;background:hsla(0,0%,100%,.28)}.vp .vp-rail .vp-fill{left:0;background:#f56e59}.vp .vp-rail .vp-knob{width:9px;height:9px;margin-left:-4.5px;border-radius:999px;background:#fff;box-shadow:0 1px 4px rgba(0,0,0,.45);transform:scale(0);transition:transform .14s ease}.vp .vp-rail:focus-visible .vp-knob,.vp .vp-rail:hover .vp-knob{transform:scale(1)}.vp .vp-time{flex:none;font-family:clutch,monospace;font-size:11px;letter-spacing:.01em;color:hsla(0,0%,100%,.92);font-variant-numeric:tabular-nums}.vp .vp-time i{font-style:normal;color:hsla(0,0%,100%,.45);margin:0 1px}@media(max-width:560px){.vp .vp-bar{gap:7px;padding:6px 8px}.vp .vp-time{font-size:10px}}.app .card .win--collage{padding:0;background:#dcdcdc}.hl-collage{position:absolute;inset:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:repeat(3,minmax(0,1fr));gap:2px}.hl-collage img{display:block;width:100%;height:100%;object-fit:cover;object-position:center;background:#ececec}.hl-collage img:first-child{grid-column:span 2;grid-row:span 3}.hl-collage img:nth-child(2),.hl-collage img:nth-child(3){grid-column:span 2}.wu{margin-top:44px;padding-top:34px;border-top:1px solid #ececec}.rail{position:fixed;top:50%;transform:translateY(-50%);right:calc(50% + 340px + 18px);width:196px;z-index:20}.rail ul{list-style:none;margin:0;padding:7px;border-radius:14px;background:rgba(0,0,0,0);box-shadow:0 0 0 0 rgba(0,0,0,0);transition:background .18s ease,box-shadow .18s ease}.rail:hover ul{background:#fff;box-shadow:0 0 0 1px rgba(0,0,0,.045),0 14px 38px rgba(0,0,0,.1)}.rail li+li{margin-top:1px}.rail a{display:flex;flex-direction:row-reverse;justify-content:flex-start;align-items:center;gap:10px;height:28px;padding:0 9px;border-radius:8px;text-decoration:none;border:none;color:#a8a8a8;font-size:11.5px;line-height:1;white-space:nowrap;transition:color .16s ease,background .14s ease,gap .2s ease}.rail:hover a{justify-content:flex-end;gap:0}.rail i{display:block;width:22px;height:2px;border-radius:1px;background:#d6d6d6;flex:none;transition:width .2s ease,opacity .16s ease,background .2s ease}.rail:hover i{width:0;opacity:0}.rail span{opacity:0;transform:translateX(4px);transition:opacity .18s ease,transform .18s ease}.rail:hover span{opacity:1;transform:none}.rail li.is-on a{color:#1a1a1a}.rail li.is-on i{width:30px;background:#1a1a1a}.rail:hover li.is-on a{background:#f2f2f2}.rail:hover a:hover{background:#ededed;color:#1a1a1a}@media(max-width:1180px){.rail{display:none}}.wu-shape{margin:0 0 18px;font-size:12px;color:#8a8a8a;letter-spacing:.01em}.wu-tags{list-style:none;margin:0 0 22px;padding:0;display:flex;flex-wrap:wrap;gap:5px}.wu-tags li{font-size:10.5px;line-height:1;padding:5px 8px;border-radius:4px;background:#f2f2f2;color:#6a6a6a;letter-spacing:.01em}.wu-sec{scroll-margin-top:90px;margin-bottom:46px}.wu-sec h2{font-size:15px;font-weight:600;color:#000;letter-spacing:-.01em;line-height:1.4;margin:0 0 14px}.wu-sec .wu-kicker{display:block;font-size:10.5px;font-weight:400;color:#f56e59;letter-spacing:.04em;margin-bottom:5px}.wu-sec p{margin:0 0 14px;color:#2a2a2a}.wu-sec code{font-family:clutch,monospace;font-size:12px;padding:1px 4px;border-radius:3px;background:#f2f2f2;color:#1a1a1a;overflow-wrap:anywhere}.wu-sec a{color:#1a1a1a;text-decoration:none;border-bottom:1px solid #d8d8d8;transition:color .15s ease,border-color .15s ease}.wu-sec a:hover{color:#f56e59;border-color:#f56e59}.wu-list{margin:0 0 18px;padding:0}.wu-list div{display:grid;grid-template-columns:128px 1fr;gap:14px;padding:7px 0;border-top:1px solid #f0f0f0}.wu-list dt{color:#1a1a1a}.wu-list dd{margin:0;color:#6a6a6a}@media(max-width:560px){.wu-list div{grid-template-columns:1fr;gap:2px}}.dg{margin:22px 0 24px}.dg+.dg{margin-top:-4px}.dg svg{display:block;width:100%;height:auto;overflow:visible}.dg figcaption{margin-top:9px;font-size:10.5px;color:#a0a0a0;letter-spacing:.02em}.dg .dg-col{font-size:9.5px;fill:#b0b0b0;letter-spacing:.06em;text-transform:uppercase}.dg .dg-col,.dg .dg-node{font-family:clutch,monospace}.dg .dg-node{font-size:11.5px}.dg .dg-note{fill:#9a9a9a}.dg .dg-edge,.dg .dg-note{font-family:clutch,monospace;font-size:9.5px}.dg .dg-edge{fill:#a8a8a8}.dg .dg-chip{font-size:10px;fill:#9a9a9a}.dg .dg-chip,.dg .dg-num{font-family:clutch,monospace}.dg .dg-num{font-size:11px}.dg .dg-item{fill:#5a5a5a}.dg .dg-item,.dg .dg-val{font-family:clutch,monospace}.dg .dg-val{font-size:10px;fill:#6a6a6a;font-variant-numeric:tabular-nums}@media(max-width:700px){.dg{overflow-x:auto;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch}.dg svg{min-width:600px}.dg figcaption{position:sticky;left:0}}.wu-code{margin:20px 0 24px;border:1px solid #ececec;border-radius:8px;overflow:hidden;background:#fbfbfb}.wu-code figcaption{padding:8px 12px;font-size:10.5px;color:#9a9a9a;background:#f5f5f5;border-bottom:1px solid #ececec;letter-spacing:.01em}.wu-code pre{margin:0;padding:12px 14px;overflow-x:auto;font-family:clutch,monospace;font-size:11.5px;line-height:1.62;color:#2a2a2a;tab-size:2}.wu-code code{background:none;padding:0;font-size:inherit}.note-page .es-intro p,.note-page .es-outro p{margin:0 0 14px;color:#2a2a2a}.note-page .es-intro{margin:26px 0 30px}.note-page .es-outro{margin-top:40px;padding-top:26px;border-top:1px solid #ececec}.es{scroll-margin-top:70px}.es-switch{position:sticky;top:14px;z-index:15;display:inline-flex;gap:2px;padding:3px;border-radius:999px;background:#f0f0f0;box-shadow:0 0 0 1px rgba(0,0,0,.04),0 0 0 9px #fafafa}.es-switch button{font-family:clutch,monospace;font-size:12px;line-height:1;padding:8px 16px;border:0;border-radius:999px;background:rgba(0,0,0,0);color:#8a8a8a;cursor:pointer;transition:background .16s ease,color .16s ease,box-shadow .16s ease}.es-switch button:hover{color:#1a1a1a}.es-switch button.is-on{background:#fff;color:#1a1a1a;box-shadow:0 1px 3px rgba(0,0,0,.08),0 0 0 1px rgba(0,0,0,.04)}.es-stance{margin:14px 0 30px;font-size:12px;color:#8a8a8a}.es-body{animation:es-in .22s ease}@keyframes es-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.note-page .es .wu-sec h2{margin-bottom:12px}.wu-eq{margin:18px 0 22px;padding:14px 16px 12px;border:1px solid #ececec;border-radius:8px;background:#fcfcfc}.wu-eq .wu-eq-body{overflow-x:auto;overflow-y:hidden;color:#1a1a1a}.wu-eq .wu-eq-body .katex-display{margin:0}.wu-eq .wu-eq-body .katex{font-size:1.02em}.wu-eq figcaption{margin-top:8px;font-size:10.5px;color:#a0a0a0;letter-spacing:.02em}.tex-i .katex{font-size:1em}.ts{margin-top:36px}.ts-index{display:flex;flex-direction:column;margin:0 0 56px;border-top:1px solid #ececec}.ts-index .ts-index-item{display:grid;grid-template-columns:30px 108px 1fr;align-items:baseline;gap:10px;padding:11px 2px;border-bottom:1px solid #ececec;text-decoration:none;color:inherit;transition:background .15s ease}.ts-index .ts-index-item:hover{background:#f6f6f6}.ts-index .ts-index-item:hover .ts-index-name{color:#f56e59}.ts-index .ts-index-n{font-size:10.5px;color:#b0b0b0;font-variant-numeric:tabular-nums}.ts-index .ts-index-name{font-size:13px;color:#1a1a1a;transition:color .15s ease}.ts-index .ts-index-kind{font-size:11.5px;color:#8a8a8a}@media(max-width:560px){.ts-index .ts-index-item{grid-template-columns:26px 1fr}.ts-index .ts-index-kind{grid-column:2}}.ts-sec{scroll-margin-top:80px;margin-bottom:84px}.ts-sec+.ts-sec{padding-top:44px;border-top:1px solid #ececec}.ts-head{margin-bottom:18px}.ts-head h2{margin:0;font-size:17px;font-weight:600;color:#000;letter-spacing:-.01em}.ts-head .ts-kind{margin:4px 0 0;font-size:12px;color:#8a8a8a}.ts-hero{margin:0 0 22px}.ts-hero img{display:block;width:100%;height:auto;border-radius:10px;border:1px solid #e8e8e8;background:#f2f2f2;box-shadow:0 10px 30px rgba(0,0,0,.06)}.ts-hero figcaption{margin-top:9px;font-size:10.5px;color:#a0a0a0;letter-spacing:.02em}.ts-prose p{margin:0 0 14px;color:#2a2a2a}.ts-tags{margin-top:4px}.ts-grid a,.ts-hero a{display:block;border:none;cursor:zoom-in;transition:opacity .15s ease,transform .2s ease}.ts-grid a:hover,.ts-hero a:hover{opacity:.92}.ts-grid a:hover{transform:translateY(-1px)}.ts-grid{list-style:none;padding:0;margin:26px 0 8px;display:grid;grid-template-columns:1fr 1fr;gap:18px 14px}.ts-grid.is-one{grid-template-columns:1fr}.ts-grid li{min-width:0}.ts-grid img{display:block;width:100%;aspect-ratio:16/10;object-fit:cover;object-position:top center;border-radius:7px;border:1px solid #e8e8e8;background:#f2f2f2}.ts-grid span{display:block;margin-top:7px;font-size:10.5px;color:#a0a0a0;line-height:1.45}@media(max-width:560px){.ts-grid{grid-template-columns:1fr}}.app .card .win--strip{display:grid;grid-template-columns:repeat(3,1fr);gap:3px;background:#1a1a1a}.app .card .win--strip img{width:100%;height:100%;min-height:0;object-fit:cover;object-position:center;display:block}.project-page .project-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;margin:22px 0 26px;border-radius:12px;overflow:hidden;background:#1a1a1a}.project-page .project-strip img{width:100%;aspect-ratio:4/5;object-fit:cover;display:block}.resume-page .rs-top{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:32px}.resume-page .rs-top .back{margin-bottom:0}.resume-page .rs-actions{display:flex;gap:14px;font-size:12px}.resume-page .rs-actions a{color:#f56e59;text-decoration:none;border-bottom:1px solid rgba(245,110,89,.35);transition:border-color .15s ease}.resume-page .rs-actions a:hover{border-color:#f56e59}.resume-page .rs-head{margin-bottom:30px}.resume-page .rs-head h1{font-size:18px;font-weight:600;color:#000;letter-spacing:-.01em;margin:0 0 8px;text-transform:lowercase}.resume-page .rs-contact{display:flex;flex-wrap:wrap;gap:4px 14px;margin:0;font-size:11.5px}.resume-page .rs-contact a{color:#7a7a7a;text-decoration:none;border:none;transition:color .15s ease}.resume-page .rs-contact a:hover{color:#f56e59}.resume-page .rs-sec{margin-bottom:34px}.resume-page .rs-sec h2{font-size:10.5px;font-weight:400;letter-spacing:.08em;text-transform:uppercase;color:#f56e59;margin:0 0 14px;padding-bottom:8px;border-bottom:1px solid #ececec}.resume-page .rs-entry{margin-bottom:20px}.resume-page .rs-row{display:flex;justify-content:space-between;align-items:baseline;gap:16px}.resume-page .rs-row h3{margin:0;font-size:13px;font-weight:600;color:#1a1a1a}.resume-page .rs-when,.resume-page .rs-where{flex:none;font-size:11.5px;color:#8a8a8a;font-variant-numeric:tabular-nums;text-decoration:none;border:none}.resume-page a.rs-when:hover{color:#f56e59}.resume-page .rs-sub{margin-top:2px;font-size:12px;color:#4a4a4a}.resume-page .rs-stack{color:#9a9a9a}.resume-page .rs-points{margin:8px 0 0;padding-left:14px}.resume-page .rs-points li{margin:0 0 6px;font-size:12.5px;line-height:1.65;color:#2a2a2a}.resume-page .rs-points li::marker{color:#c8c8c8}.resume-page .rs-skills{margin:0}.resume-page .rs-skills div{display:grid;grid-template-columns:118px 1fr;gap:14px;padding:6px 0;border-bottom:1px solid #f2f2f2}.resume-page .rs-skills dt{font-size:12px;color:#1a1a1a}.resume-page .rs-skills dd{margin:0;font-size:12px;color:#5a5a5a}@media(max-width:560px){.resume-page .rs-row{flex-direction:column;gap:2px}.resume-page .rs-skills div{grid-template-columns:1fr;gap:2px}}.es-shots{margin:22px 0 26px}.es-shots .es-shots-row{display:flex;align-items:flex-start;justify-content:flex-start;gap:14px}.es-shots .es-phone{width:190px;flex:none}.es-shots .es-window{display:block;height:auto;max-width:100%;width:auto;flex:none;border-radius:9px;box-shadow:0 10px 26px rgba(0,0,0,.12),0 0 0 1px rgba(0,0,0,.06)}.es-shots figcaption{margin-top:12px;font-size:10.5px;color:#a0a0a0;letter-spacing:.02em}.es-code{margin:20px 0 26px}.es-code .es-code-head{display:flex;align-items:baseline;gap:10px;padding:0 0 7px;font-size:10.5px;letter-spacing:.02em}.es-code .es-code-file{color:#8a8a8a}.es-code .es-code-lines{color:#c2c2c2}.es-code pre{margin:0;padding:14px 16px;overflow-x:auto;background:#fbfbfb;border:1px solid #ececec;border-radius:9px}.es-code code{font-family:clutch,monospace;font-size:11.5px;line-height:1.72;color:#3d3d3d;white-space:pre}.es-code .es-code-note{margin-top:10px;font-size:11.5px;line-height:1.65;color:#9a9a9a}@media(max-width:700px){.es-code code{font-size:10.5px}.es-shots .es-shots-row{overflow-x:auto;justify-content:flex-start;padding-bottom:6px}}.craft-page .shot-gallery{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}.craft-page .shot-gallery img{display:block;width:100%;height:auto;border-radius:8px}.craft-page .shot-gallery span{display:block;margin-top:6px;font-size:10.5px;color:#a0a0a0}.sig-wrap .sig--mark{position:absolute;inset:0;container-type:size;overflow:hidden;background:#fff}.sig-wrap .sig--mark span{position:absolute;left:.5em;bottom:.3em;font-family:clutch,monospace;font-size:min(30cqh,54cqw/(var(--len)*.54));line-height:1;letter-spacing:-.06em;color:#efefef;white-space:nowrap;user-select:none}.demo-page{font-family:clutch,monospace;width:100%;max-width:min(1240px,100vw - 40px);margin:0 auto;padding:60px 20px 80px;font-size:13px;color:#2a2a2a}.demo-page .demo-top{display:flex;align-items:baseline;justify-content:space-between;gap:16px;padding-bottom:22px}.demo-page .demo-top a{font-size:12px;color:#888;text-decoration:none}.demo-page .demo-top a:hover{color:#1a1a1a;text-decoration:underline}.demo-page .demo-cap{margin:18px 0 0;font-size:12.5px;line-height:1.7;color:#777;max-width:62ch}@media(max-width:620px){.demo-page{padding:40px 16px 60px}}.dg-table table{width:100%;border-collapse:collapse;font-size:11.5px}.dg-table th{text-align:left;font-weight:400;color:#a0a0a0;letter-spacing:.02em;padding:0 12px 7px 0;border-bottom:1px solid #ececec}.dg-table td{padding:8px 12px 8px 0;border-bottom:1px solid #f4f4f4;color:#666;vertical-align:top}.dg-table td.is-key{color:#1a1a1a}.dg-table td.is-accent{color:#f56e59}.dg-table td.is-muted{color:#b8b8b8}.dg-table tr:last-child td{border-bottom:0}.dg-table .dg-foot{margin:9px 0 0;font-size:11px;line-height:1.6;color:#999}.dg-example .dg-ex-given{margin:0 0 10px;padding:7px 11px;background:#fbfbfb;border:1px solid #ececec;border-radius:7px;font-size:11.5px;color:#444}.dg-example .dg-ex-steps{list-style:none;margin:0;padding:0;counter-reset:ex}.dg-example .dg-ex-steps li{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.4fr);gap:14px;padding:8px 0;border-bottom:1px solid #f4f4f4;font-size:11.5px}.dg-example .dg-ex-steps li:last-child{border-bottom:0}.dg-example .dg-ex-steps li.is-accent .dg-ex-then{color:#f56e59}.dg-example .dg-ex-when{color:#1a1a1a}.dg-example .dg-ex-then{color:#777}@media(max-width:620px){.dg-example .dg-ex-steps li{grid-template-columns:1fr;gap:3px}.dg-table table{font-size:11px}}.wu-shots{margin:20px 0 26px}.wu-shots .wu-shots-row{display:flex;align-items:flex-start;gap:14px}.wu-shots .wu-shot-link{display:block;min-width:0;flex:1 1 0;line-height:0}.wu-shots .wu-shot-link:hover img{opacity:.9}.wu-shots .wu-shot-plate,.wu-shots .wu-shot-window{display:block;min-width:0;flex:1 1 0;width:100%;height:auto;border-radius:8px;transition:opacity .18s ease}.wu-shots .wu-shot-plate{border:1px solid #ececec}.wu-shots .wu-shot-window{box-shadow:0 10px 26px rgba(0,0,0,.12),0 0 0 1px rgba(0,0,0,.06)}.wu-shots .wu-shot-phone{width:168px;flex:none}.wu-shots figcaption{margin-top:10px;font-size:10.5px;line-height:1.6;color:#a0a0a0;letter-spacing:.02em}@media(max-width:620px){.wu-shots .wu-shots-row{flex-direction:column;gap:10px}.wu-shots .wu-shot-phone{width:100%;max-width:240px}}.wu-shots .wu-shot-video{flex:1 1 0;min-width:0}.wu-shots .wu-shot-video .vp{margin:0}