@font-face{font-family:inter;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/inter-latin-400-normal.woff2)format('woff2')}@font-face{font-family:inter;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/inter-latin-500-normal.woff2)format('woff2')}@font-face{font-family:inter;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/inter-latin-600-normal.woff2)format('woff2')}@font-face{font-family:ibm plex mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-mono-latin-400-normal.woff2)format('woff2')}@font-face{font-family:ibm plex mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/ibm-plex-mono-latin-500-normal.woff2)format('woff2')}:root{--bg:#0d0d0d;--ink:#ededed;--muted:#8a8a8a;--rule:#262626;--hairline:#2a2a2a;--paper:#f2efe9;--red:#c94f38;--sans:'Inter', -apple-system, BlinkMacSystemFont, sans-serif;--mono:'IBM Plex Mono', ui-monospace, 'SF Mono', Menlo, monospace;--pad:40px;--max:1240px}*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}[hidden]{display:none!important}body{font-family:var(--sans);font-size:17px;line-height:1.7;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;display:flex;flex-direction:column;min-height:100vh}main{flex:1;width:100%}a{color:var(--ink);text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:3px}.prose p a,.prose li a,.description a,.entry-body a,.page-sub a{text-decoration:underline;text-underline-offset:3px}img{max-width:100%;height:auto;display:block}button{font:inherit;color:inherit;background:0 0;border:none;cursor:pointer}.mono{font-family:var(--mono);font-size:13px;font-weight:400;letter-spacing:0}.meta{color:var(--muted)}.meta a{color:var(--muted)}.wordmark{font-family:var(--mono);font-size:13px;font-weight:500;letter-spacing:.2em;text-transform:lowercase;position:relative;padding:4px 8px}.wordmark::before,.wordmark::after{content:"";position:absolute;width:7px;height:7px;pointer-events:none}.wordmark::before{top:0;left:0;border-top:1px solid var(--hairline);border-left:1px solid var(--hairline)}.wordmark::after{bottom:0;right:0;border-bottom:1px solid var(--hairline);border-right:1px solid var(--hairline)}.section-label{color:var(--muted);font-weight:400;text-transform:uppercase;letter-spacing:.12em;font-size:12px}.section-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:20px}.section-more{color:var(--muted)}.site-header{display:flex;justify-content:space-between;align-items:baseline;gap:24px;padding:28px var(--pad);max-width:var(--max);margin:0 auto;width:100%}.site-nav{display:flex;gap:22px;flex-wrap:wrap}.site-nav a{font-family:var(--mono);font-size:12px;letter-spacing:.08em;text-transform:lowercase;color:var(--muted);position:relative}.site-nav a:hover{color:var(--ink);text-decoration:none}.site-nav a[aria-current=page]{color:var(--ink)}.site-nav a[aria-current=page]::before{content:"";position:absolute;left:-10px;top:50%;width:5px;height:1px;background:var(--red)}.site-footer{border-top:1px solid var(--rule);margin-top:100px;padding:40px var(--pad)56px}.footer-identity,.footer-socials{max-width:calc(var(--max) - 2 * var(--pad));margin:0 auto}.footer-identity p{color:var(--muted);font-size:14px;margin-top:10px;max-width:48ch}.identity{max-width:var(--max);margin:0 auto;padding:90px var(--pad)70px}.identity-mark{font-size:clamp(28px,6vw,54px);font-weight:400;letter-spacing:.28em;text-transform:uppercase;margin-left:2px}.identity-practice{margin-top:18px;color:var(--muted);max-width:52ch}.studio-strip{max-width:var(--max);margin:0 auto;padding:0 var(--pad)40px;border-bottom:1px solid var(--rule)}.strip{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;align-items:start}.strip .wip-card{break-inside:auto;margin-bottom:0}.career-scan{max-width:var(--max);margin:0 auto;padding:0 var(--pad)}.scan{padding:64px 0;border-bottom:1px solid var(--rule)}.scan:last-child{border-bottom:none}.scan-head{display:flex;justify-content:space-between;align-items:baseline;gap:16px;flex-wrap:wrap}.scan-title{font-size:20px;font-weight:500;letter-spacing:.12em;text-transform:uppercase}.scan-statement{margin-top:10px;color:var(--muted);max-width:62ch}.scan-grid{margin-top:26px;display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.scan-grid img{width:100%;aspect-ratio:.8;object-fit:cover}.scan-more{display:inline-block;margin-top:22px;color:var(--muted)}.page{max-width:var(--max);margin:0 auto;padding:30px var(--pad)0;width:100%}.page-title{font-size:clamp(24px,4vw,34px);font-weight:400;letter-spacing:.1em;text-transform:lowercase;font-family:var(--mono);position:relative;padding-top:14px}.page-title::before{content:"";position:absolute;top:0;left:0;width:min(280px,60%);height:7px;background:repeating-linear-gradient(90deg,var(--hairline) 0 1px,transparent 1px 70px)0 100%/100% 7px no-repeat,repeating-linear-gradient(90deg,var(--hairline) 0 1px,transparent 1px 7px)0 100%/100% 4px no-repeat,linear-gradient(var(--hairline),var(--hairline))0 100%/100% 1px no-repeat}.page-sub{margin-top:10px;color:var(--muted);max-width:62ch}.page-title+.wall,.page-sub+.wall,.page-title+.works-grid{margin-top:44px}.prose{max-width:760px}.prose h2{font-size:15px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;margin:44px 0 14px}.prose p,.prose ul,.prose ol{margin-top:16px;max-width:68ch}.prose ul,.prose ol{padding-left:22px}.prose .page-title{margin-bottom:18px}.plain-list{list-style:none;padding:0;margin-top:30px}.plain-list li{padding:12px 0;border-bottom:1px solid var(--rule);display:flex;justify-content:space-between;gap:16px;align-items:baseline}.contact-list{list-style:none;padding:0;margin-top:34px}.contact-list li{display:flex;gap:24px;padding:12px 0;border-bottom:1px solid var(--rule)}.contact-label{color:var(--muted);min-width:90px}.links-page{max-width:620px}.links-socials,.footer-socials{display:flex;gap:20px;margin-top:20px}.links-socials a,.footer-socials a{color:var(--muted);display:block}.links-socials a:hover,.footer-socials a:hover{color:var(--ink)}.links-socials svg,.footer-socials svg{display:block}.links-section{margin-top:44px}.links-section h2{font-size:15px;font-weight:500;letter-spacing:.1em;text-transform:uppercase}.links-list{list-style:none;padding:0;margin-top:14px}.links-list li+li{margin-top:10px}.links-list a{display:flex;align-items:center;gap:16px;padding:12px 16px;border:1px solid var(--rule)}.links-list a:hover{text-decoration:none;border-color:var(--ink)}.links-cards{list-style:none;padding:0;margin-top:14px}.links-cards li+li{margin-top:18px}.links-cards a{display:block;border:1px solid var(--rule)}.links-cards a:hover{text-decoration:none;border-color:var(--ink)}.links-cards img{width:100%;height:auto;display:block}.links-card-bar{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding:12px 16px;border-top:1px solid var(--rule)}.links-meta{color:var(--muted);white-space:nowrap}.links-note{color:var(--muted);white-space:nowrap;margin-left:auto}.works-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:40px 28px;padding-bottom:20px}.works-item:hover{text-decoration:none}.works-item img{width:100%;aspect-ratio:.8;object-fit:cover}.works-title{margin-top:14px;font-size:15px;font-weight:500;letter-spacing:.1em;text-transform:uppercase}.works-item .meta{margin-top:2px}.project{width:100%}.project-hero{max-width:var(--max);margin:10px auto 0;padding:0 var(--pad)}.project-hero img{width:auto;max-width:100%;max-height:82vh;margin:0 auto}.project-info{max-width:760px;margin:0 auto;padding:56px var(--pad)20px}.project-info h1{font-size:clamp(26px,5vw,40px);font-weight:400;letter-spacing:.1em;text-transform:uppercase}.project-info .meta{margin-top:8px}.description{margin-top:34px}.description p{margin-bottom:18px;max-width:68ch}.tech-note{margin-top:40px;padding-top:24px;border-top:1px solid var(--rule)}.tech-note p{margin-top:10px;color:var(--muted);font-size:15px;max-width:62ch}.live-embed{max-width:760px;margin:30px auto 0;padding:0 var(--pad)}.live-frame{border:1px solid var(--rule);background:#000}.live-frame iframe{width:100%;height:100%;border:0;display:block}.live-controls{display:flex;gap:20px;align-items:baseline;padding:12px 2px;color:var(--muted)}.live-controls button,.live-controls a{font-family:var(--mono);font-size:13px;color:var(--ink)}.live-controls button:hover,.live-controls a:hover{text-decoration:underline;text-underline-offset:3px}.live-hash{margin-left:auto;color:var(--muted)}.highlights{max-width:var(--max);margin:60px auto 0;padding:0 var(--pad)}.highlights-track{display:flex;gap:20px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none}.highlights-track::-webkit-scrollbar{display:none}.highlights-track a{flex:none;width:min(460px,78vw);scroll-snap-align:start}.highlights-track a:hover{text-decoration:none}.highlights-track img{width:100%}.highlights-track .meta{display:inline-block;margin-top:8px;font-size:12px}.highlights-nav{display:flex;justify-content:flex-end;gap:6px;padding-top:12px}.highlights-nav button{font-family:var(--mono);font-size:15px;color:var(--muted);padding:4px 10px}.highlights-nav button:hover{color:var(--ink)}.glightbox-clean .gslide-description{background:0 0}.glightbox-clean .gdesc-inner{padding:12px 0;text-align:center}.lightbox-link{display:inline-block;color:rgba(255,255,255,.75);font-family:var(--mono);font-size:13px;text-decoration:none}.lightbox-link:hover{color:#fff}.project-trail{max-width:var(--max);margin:30px auto 0;padding:40px var(--pad)0;border-top:1px solid var(--rule)}.collection-link{text-align:center;padding:70px var(--pad)10px}.collection-link>a{display:inline-block;font-size:14px;letter-spacing:.08em;padding:14px 40px;border:1px solid var(--ink)}.collection-link>a:hover{background:var(--ink);color:var(--bg);text-decoration:none}.prints-note{margin-top:26px;font-size:14px;color:var(--muted)}.prints-note a{color:var(--muted);text-decoration:underline;text-underline-offset:3px}.wip-head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap}.wip-head+.wall,.wip-head+.wall+.older,.wip-head~.journal-scan{margin-top:44px}.wip-head+.masonry{margin-top:44px}.masonry{columns:3;column-gap:24px}.masonry.masonry-js{columns:auto;display:flex;gap:24px;align-items:flex-start}.masonry-col{flex:1;min-width:0}.masonry .tile{break-inside:avoid;margin:0 0 28px}.time-chip{position:fixed;top:50vh;right:0;transform:translateY(-50%);font:14px/1 var(--mono);letter-spacing:.06em;color:var(--ink);background:var(--bg);border:1px solid var(--rule);border-right:0;border-radius:5px 0 0 5px;padding:10px 16px 10px 14px;white-space:nowrap;opacity:0;transition:opacity 200ms;pointer-events:none;z-index:5}.time-chip.tc-visible{opacity:1}.time-chip .tc-date,.time-chip .tc-release{display:block;text-align:right}.time-chip .tc-release{margin-top:6px}.time-chip .tc-release:empty{display:none}.masonry .tile img,.masonry .tile video{width:100%;height:auto;display:block}.tile-meta{margin-top:8px;font-size:12px;color:var(--muted)}.tile-meta a{color:var(--muted)}.tile-text{border:1px solid var(--rule);padding:20px}.tile-title{margin-top:10px;font-size:16px;font-weight:500;letter-spacing:.04em}.tile-body{margin-top:10px}.tile-body p{margin-bottom:12px}.tile-body p:last-child{margin-bottom:0}@media(max-width:900px){.masonry{columns:2}}@media(max-width:600px){.masonry{columns:1}}.view-toggle{display:flex;gap:10px;align-items:baseline;padding-bottom:6px}.view-toggle button,.view-toggle a{font-family:var(--mono);font-size:13px;color:var(--muted);padding:2px 0}.view-toggle button[aria-pressed=true],.view-toggle a[aria-current=page]{color:var(--ink);text-decoration:underline;text-underline-offset:4px}.view-toggle button:hover,.view-toggle a:hover{color:var(--ink)}.journal-chips{display:flex;gap:10px;flex-wrap:wrap}.journal-chips a{color:var(--muted);border:1px solid var(--rule);padding:5px 14px}.journal-chips a:hover{color:var(--ink);border-color:var(--muted);text-decoration:none}.journal-chips+.scan{margin-top:8px}.journal-scan .scan{scroll-margin-top:24px}.journal-scan .scan:last-of-type{border-bottom:none}.journal-carousel{margin-top:26px}.journal-track{display:flex;gap:14px;overflow-x:auto;scroll-snap-type:x proximity;scrollbar-width:none}.journal-track::-webkit-scrollbar{display:none}.journal-track a,.journal-track video{flex:none;scroll-snap-align:start}.journal-track img,.journal-track video{height:380px;width:auto;display:block}.journal-track video{background:#000;min-width:280px}@media(max-width:768px){.journal-track img,.journal-track video{height:240px}}.entry-video{display:block;width:100%;height:auto;margin-top:26px;background:#000}.wall{display:grid;grid-template-columns:repeat(3,1fr);gap:36px 24px;align-items:start}.wip-card{break-inside:avoid}.wip-card a{display:block}.wip-card a:hover{text-decoration:none}.wip-card img{width:100%;margin-bottom:10px}.wip-card .meta{font-size:12px}.wip-card-line{margin-top:2px;font-size:14px;line-height:1.55}.wip-card a:hover .wip-card-line{text-decoration:underline;text-underline-offset:3px}.wip-card-text{border:1px solid var(--rule);padding:18px 20px 20px}.wip-card-snippet{margin-top:8px;font-size:14px;line-height:1.6;color:var(--muted)}.older{display:inline-block;margin-top:20px;color:var(--muted)}.entry{max-width:900px;margin:0 auto;padding:30px var(--pad)0;width:100%}.entry-meta{color:var(--muted)}.entry-meta a{color:var(--muted)}.entry-title{margin-top:12px;font-size:clamp(20px,3.5vw,28px);font-weight:500;letter-spacing:.04em}.entry-body{margin-top:28px}.entry-body p{margin-bottom:16px;max-width:68ch}.entry-pagination{display:flex;justify-content:space-between;gap:20px;margin-top:60px;padding-top:20px;border-top:1px solid var(--rule);color:var(--muted)}.entry-pagination a{color:var(--muted)}.entry-pagination span{min-width:70px}.entry-siblings{margin-top:60px;padding-top:20px;border-top:1px solid var(--rule)}.entry-siblings h2{font-size:13px;font-weight:400}.entry-siblings-list{list-style:none;margin-top:16px;padding:0}.entry-siblings-list li{margin-bottom:8px;color:var(--muted)}.entry-siblings-list li.is-current{color:var(--ink)}.entry-siblings-list a{color:var(--muted)}.timeline .page-title{margin-top:8px}.timeline-status{margin-top:8px}.timeline-featured{margin-top:30px}.timeline-featured img{width:auto;max-width:100%;max-height:62vh}.timeline-blurb{margin-top:26px;color:var(--muted)}.timeline-blurb p{max-width:68ch;margin-bottom:14px}.timeline-projectlink{margin-top:4px}.timeline-entry{margin-top:64px;padding-top:30px;border-top:1px solid var(--rule)}.timeline-entry:first-of-type{margin-top:56px}.timeline-title{margin-top:6px;font-size:18px;font-weight:500;letter-spacing:.04em}.timeline-entry .entry-body{margin-top:18px}.timeline-entry .journal-carousel,.entry .journal-carousel{margin-top:24px}.algo-page .page-title{margin-top:30px}@media(max-width:1024px){.wall{grid-template-columns:repeat(2,1fr)}}@media(max-width:768px){:root{--pad:24px}.site-header{flex-direction:column;gap:14px;padding-top:22px}.identity{padding-top:50px;padding-bottom:50px}.strip{grid-template-columns:1fr;gap:32px}.works-grid{grid-template-columns:repeat(2,1fr);gap:28px 16px}.scan{padding:44px 0}.scan-grid{grid-template-columns:repeat(2,1fr)}.gallery{grid-template-columns:repeat(2,1fr);gap:12px}}@media(max-width:480px){.wall{grid-template-columns:1fr}.works-grid{grid-template-columns:1fr}.gallery{grid-template-columns:1fr}.contact-list li{flex-direction:column;gap:2px}}.algo-intro{margin-top:10px;color:var(--muted);font-size:15px;max-width:62ch}.algo-explorer{display:grid;grid-template-columns:260px minmax(0,1fr);gap:48px;margin-top:44px;padding-bottom:60px;align-items:start}.algo-rail{border-top:1px solid var(--rule);position:sticky;top:24px}.algo-filters{display:flex;gap:16px;padding:12px 0;border-bottom:1px solid var(--rule)}.algo-filters button{font-family:var(--mono);font-size:12px;letter-spacing:.08em;color:var(--muted)}.algo-filters button:hover,.algo-filters button[aria-current]{color:var(--ink);text-decoration:underline;text-underline-offset:3px}.algo-projects{display:flex;flex-direction:column;max-height:calc(100vh - 140px);overflow-y:auto}.algo-proj{display:grid;grid-template-columns:auto minmax(0,1fr)auto;align-items:baseline;gap:10px;width:100%;text-align:left;padding:9px 0;border-bottom:1px solid var(--rule);color:var(--muted)}.algo-proj:hover{color:var(--ink)}.algo-proj[aria-current]{color:var(--ink)}.algo-proj[aria-current] .algo-proj-id::before{content:"\25B8\00a0";margin-left:-12px}.algo-proj-id{font-size:11px;letter-spacing:.08em}.algo-proj-title{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.algo-proj-count{font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}.algo-current{font-size:12px;letter-spacing:.08em;color:var(--muted)}.algo-viewer .live-frame{aspect-ratio:.8;max-height:calc(100vh - 210px);margin:0 auto}.algo-strip-wrap{display:grid;grid-template-columns:auto minmax(0,1fr)auto;align-items:center;gap:8px;margin-top:12px;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule)}.algo-step{font-size:10px;color:var(--muted);padding:8px 4px}.algo-step:hover{color:var(--ink)}.algo-strip{display:flex;gap:4px;overflow-x:auto;scrollbar-width:none;scroll-behavior:smooth;padding:6px 0}.algo-strip::-webkit-scrollbar{display:none}.algo-strip button{flex:none;font-family:var(--mono);font-size:11px;letter-spacing:.04em;color:var(--muted);padding:4px 7px;border-radius:2px}.algo-strip button:hover{color:var(--ink)}.algo-strip button[aria-current]{color:var(--bg);background:var(--ink)}.algo-hint{font-size:11px;color:var(--muted);padding-top:10px}.algo-empty{margin-top:44px;color:var(--muted);font-size:13px}@media(hover:none){.algo-hint{display:none}}@media(max-width:768px){.algo-explorer{grid-template-columns:minmax(0,1fr);gap:28px;margin-top:24px}.algo-viewer{order:-1}.algo-rail{position:static;border-top:0}.algo-projects{flex-direction:row;max-height:none;overflow-x:auto;scrollbar-width:none;gap:6px;border-top:1px solid var(--rule);padding-top:10px}.algo-projects::-webkit-scrollbar{display:none}.algo-proj{flex:none;width:auto;grid-template-columns:auto auto;gap:6px;padding:4px 8px;border-bottom:0;border:1px solid var(--rule);border-radius:2px}.algo-proj .algo-proj-title{display:none}.algo-proj[aria-current]{color:var(--bg);background:var(--ink);border-color:var(--ink)}.algo-proj[aria-current] .algo-proj-id::before{content:none;margin:0}.algo-proj[aria-current] .algo-proj-count{color:var(--bg)}}.writing-intro{max-width:620px;color:var(--muted);margin-bottom:48px}.writing-list{border-top:1px solid var(--rule);max-width:820px}.writing-row{display:grid;grid-template-columns:120px 1fr;gap:6px 28px;padding:20px 0;border-bottom:1px solid var(--rule);text-decoration:none;color:var(--ink)}.writing-row:hover .writing-title{text-decoration:underline;text-underline-offset:3px}.writing-date{font-size:13px;color:var(--muted);padding-top:3px}.writing-title{font-size:19px;font-weight:500}.writing-desc{grid-column:2;color:var(--muted);font-size:15px}.reading-sheet{display:flex;flex-direction:column;align-items:center}.article{position:relative;background:var(--paper);color:#1c1a17;max-width:760px;width:100%;padding:64px 72px 72px;margin:8px 0 40px}.article::before,.article::after{content:"";position:absolute;width:18px;height:18px;pointer-events:none}.article::before{top:-1px;left:-1px;border-top:1px solid var(--muted);border-left:1px solid var(--muted)}.article::after{bottom:-1px;right:-1px;border-bottom:1px solid var(--muted);border-right:1px solid var(--muted)}.article-meta{font-size:12px;color:#7a746b;margin-bottom:18px}.article-meta a{color:inherit}.article-title{font-size:32px;line-height:1.2;font-weight:600;margin-bottom:28px}.article-cover{width:100%;height:auto;margin-bottom:28px}.article-body{color:#26231f}.article-body a{color:inherit}.article-foot{display:flex;gap:32px;font-size:13px;padding-bottom:24px}.article-foot a{color:var(--muted);text-decoration:none}.article-foot a:hover{color:var(--ink)}@media(max-width:768px){.article{padding:36px 24px 44px}.writing-row{grid-template-columns:1fr;gap:4px}.writing-desc{grid-column:1}}#wipe{position:fixed;inset:0;z-index:150;pointer-events:none}#wipe i{position:absolute;left:50%;top:0;bottom:0;width:0;background:#0a0a0a;border-left:1px solid var(--muted);transform:translateX(-50%);opacity:0;transition:width .26s cubic-bezier(.7,0,.84,0),opacity .1s linear}#wipe.cover{pointer-events:auto}#wipe.cover i{width:100vw;opacity:1;transition:width .3s cubic-bezier(.16,1,.3,1),opacity .08s linear}@keyframes rise-in{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}.reveal{animation:rise-in .55s cubic-bezier(.16,1,.3,1)both}@media(prefers-reduced-motion:reduce){.reveal{animation:none}}body::after{content:"";position:fixed;inset:-50%;z-index:90;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");opacity:.05;animation:grain-shift .9s steps(4)infinite}@keyframes grain-shift{0%{transform:translate(0,0)}25%{transform:translate(-2%,1.4%)}50%{transform:translate(1.6%,-1%)}75%{transform:translate(-1%,-1.8%)}100%{transform:translate(0,0)}}@media(prefers-reduced-motion:reduce){body::after{animation:none}}html.has-cursor,html.has-cursor a,html.has-cursor button{cursor:none}#cursor{position:fixed;left:-12px;top:-12px;z-index:300;width:24px;height:24px;pointer-events:none;mix-blend-mode:normal}#cursor svg{width:100%;height:100%;overflow:visible;transition:transform .22s cubic-bezier(.16,1,.3,1),scale .15s ease-out}#cursor svg line{stroke:var(--red);stroke-width:1.2}#cursor.hot svg{transform:rotate(45deg)scale(1.25)}#cursor.down svg{transform:scale(.8)}#cursor.hot.down svg{transform:rotate(45deg)scale(.9)}.nav-btn{font-family:var(--mono);font-size:12px;letter-spacing:.08em;color:var(--muted);background:0 0;border:1px solid var(--rule);padding:3px 9px;cursor:pointer;display:inline-flex;align-items:baseline;gap:7px;text-decoration:none}.nav-btn:hover{color:var(--ink);border-color:var(--muted);text-decoration:none}.nav-btn[aria-current=page]{color:var(--ink);border-color:var(--muted)}.chart-trigger{display:none}html.js .chart-trigger{display:inline-flex}.chart-key{font-size:10px;color:var(--muted);border:1px solid var(--rule);padding:0 4px}#loom{position:fixed;inset:0;width:100%;height:100%;z-index:0;display:block}.site-header,main,.site-footer{position:relative;z-index:1}html.drawing .site-header,html.drawing main,html.drawing .site-footer{opacity:.05;pointer-events:none;transition:opacity .5s ease-out}.site-header,main,.site-footer{transition:opacity .5s ease-out}#draw-bar{position:fixed;left:0;right:0;bottom:0;transform:translateY(110%);z-index:130;display:flex;align-items:flex-end;justify-content:space-between;gap:34px;background:rgba(10,10,10,.94);border-top:1px solid var(--rule);padding:12px 26px 14px;transition:transform .45s cubic-bezier(.16,1,.3,1)}html.drawing #draw-bar{transform:translateY(0)}.db-group{display:flex;flex-direction:column;gap:8px;min-width:0}.db-label{font-size:10px;letter-spacing:.16em;color:var(--muted)}.db-inks-group{flex:auto;min-width:0}#draw-inks{display:flex;gap:7px;overflow-x:auto;scrollbar-width:none;padding-bottom:2px}#draw-inks::-webkit-scrollbar{display:none}.draw-ink{display:flex;gap:2px;flex:none;background:0 0;border:1px solid transparent;border-bottom:1px solid transparent;padding:4px 4px 6px;cursor:pointer;position:relative}.draw-ink:hover{border-color:var(--rule)}.draw-ink.on{border-color:var(--rule);border-bottom-color:var(--red)}.draw-ink i{width:14px;height:14px;display:block}#draw-sym,#draw-acts{display:flex;gap:8px}#draw-sym button,#draw-acts button{background:0 0;border:1px solid var(--rule);color:var(--muted);font-size:11px;letter-spacing:.08em;padding:6px 12px;cursor:pointer;white-space:nowrap;transition:color .15s linear,border-color .15s linear}#draw-sym button:hover,#draw-acts button:hover{color:var(--ink);border-color:var(--muted)}#draw-sym button.on{color:var(--ink);border-color:var(--muted);box-shadow:inset 0 -2px 0 var(--red)}@media(max-width:900px){#draw-bar{flex-wrap:wrap;gap:14px;align-items:stretch}.db-inks-group{flex-basis:100%}}#draw-toast{position:fixed;left:50%;bottom:76px;transform:translateX(-50%);z-index:131;font-size:12px;letter-spacing:.08em;color:var(--muted);background:rgba(10,10,10,.9);border:1px solid var(--rule);padding:5px 12px;opacity:0;transition:opacity .25s linear;pointer-events:none}#draw-toast.show{opacity:1}.algo-strip button.has-thumb{display:flex;flex-direction:column;align-items:center;gap:4px;padding:4px 4px 5px}.algo-strip button.has-thumb img{display:block;width:44px;height:55px;object-fit:cover;opacity:.62;filter:saturate(.85);transition:opacity .15s linear,filter .15s linear}.algo-strip button.has-thumb:hover img{opacity:.95;filter:none}.algo-strip button.has-thumb[aria-current] img{opacity:1;filter:none;outline:1px solid var(--muted);outline-offset:2px}.algo-strip button.has-thumb span{font-size:10px}.algo-strip button.has-thumb[aria-current]{background:0 0;color:var(--ink)}.draw-page .prose{max-width:560px;color:var(--muted)}.draw-page-hint{margin-top:28px}#draw-page-open{background:0 0;border:1px solid var(--rule);color:var(--ink);font-size:12px;letter-spacing:.1em;padding:8px 18px;cursor:pointer}#draw-page-open:hover{border-color:var(--muted)}#loom-ghosts{position:fixed;inset:0;width:100%;height:100%;z-index:2;pointer-events:none}html.drawing,html.drawing body{overflow:hidden;overscroll-behavior:none;height:100%}html.drawing #loom{touch-action:none}.article-body img{width:100%;height:auto;margin:26px 0 6px}.article-body img+em,.article-body p:has(img)+p em{font-size:13px}#ritual{position:fixed;inset:0;z-index:200;background:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;transition:opacity .4s ease-out}#ritual.done{opacity:0;pointer-events:none}#ritual svg{width:48px;height:48px;overflow:visible}#ritual svg line,#ritual svg circle{fill:none;stroke:var(--red);stroke-width:1;stroke-dasharray:80;stroke-dashoffset:80;animation:ritual-draw .6s ease-out forwards}#ritual svg circle{stroke:var(--muted);stroke-dasharray:70;stroke-dashoffset:70;animation-delay:.2s}@keyframes ritual-draw{to{stroke-dashoffset:0}}#ritual p{font-family:var(--mono);font-size:12px;letter-spacing:.08em;color:var(--muted);min-height:1em}#ritual-rule{width:min(320px,60vw);height:1px;background:var(--rule)}#ritual-rule i{display:block;height:1px;background:var(--ink);transform:scaleX(0);transform-origin:left;transition:transform .2s linear}#chart{position:fixed;inset:0;z-index:120;background:rgba(10,10,10,.96);overflow-y:auto}.chart-inner{max-width:720px;margin:0 auto;padding:48px var(--pad)64px}.chart-head{display:flex;justify-content:space-between;font-size:12px;letter-spacing:.1em;color:var(--muted);border-bottom:1px solid var(--rule);padding-bottom:14px;margin-bottom:30px}#chart-close{background:0 0;border:1px solid var(--rule);color:var(--muted);font-size:11px;padding:2px 8px;cursor:pointer}.chart-label{font-size:11px;font-weight:400;letter-spacing:.14em;color:var(--muted);margin:26px 0 10px}.chart-row{display:grid;grid-template-columns:150px 1fr auto;gap:20px;align-items:baseline;padding:12px 0;border-bottom:1px solid var(--rule);text-decoration:none;color:var(--ink)}.chart-row:hover .chart-title{text-decoration:underline;text-underline-offset:3px}.chart-row.compact{padding:8px 0}.chart-swatches{display:flex;gap:3px}.chart-swatches i{width:24px;height:9px;display:block}.chart-title{font-size:17px}.chart-row.compact .chart-title{font-size:14px}.chart-meta{font-size:11px;color:var(--muted)}.chart-foot{margin-top:36px;font-size:12px;color:var(--muted)}.chart-foot a{color:var(--muted)}@keyframes chart-row-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes chart-rule-draw{from{background-size:0% 1px}to{background-size:100% 1px}}#chart:not([hidden]) .chart-row{animation:chart-row-in .4s cubic-bezier(.16,1,.3,1)both;background:linear-gradient(var(--rule),var(--rule))0 100%/100% 1px no-repeat;border-bottom:0}#chart:not([hidden]) .chart-row{animation-name:chart-row-in,chart-rule-draw;animation-duration:.4s,.5s}#chart:not([hidden]) .chart-row:nth-child(2){animation-delay:.03s}#chart:not([hidden]) .chart-row:nth-child(3){animation-delay:.06s}#chart:not([hidden]) .chart-row:nth-child(4){animation-delay:.09s}#chart:not([hidden]) .chart-row:nth-child(5){animation-delay:.12s}#chart:not([hidden]) .chart-row:nth-child(6){animation-delay:.15s}#chart:not([hidden]) .chart-row:nth-child(7){animation-delay:.18s}#chart:not([hidden]) .chart-row:nth-child(8){animation-delay:.21s}#chart:not([hidden]) .chart-row:nth-child(9){animation-delay:.24s}#chart:not([hidden]) .chart-row:nth-child(n+10){animation-delay:.27s}@media(prefers-reduced-motion:reduce){#chart:not([hidden]) .chart-row{animation:none}}