:root{--color-field:#e6dbc3;--color-ink:#2a2219;--color-ink-soft:#574a38;--color-window:#fdfcf7;--color-window-2:#ebe8dc;--color-on-window-soft:#5b5446;--color-error:#9e2a12;--font-sans:"Schibsted Grotesk", "Helvetica Neue", Arial, sans-serif;--font-code:"JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--text-2xs:.75rem;--text-xs:.8125rem;--text-sm:.9375rem;--text-base:1.0625rem;--text-lg:1.375rem;--text-xl:2rem;--text-2xl:clamp(2.25rem, 4.6vw, 3.75rem);--text-display:clamp(2.75rem, 7.4vw, 6rem);--text-statement:clamp(2.5rem, 4.9vw, 4.25rem);--text-code:.8125rem;--space-2xs:.25rem;--space-xs:.5rem;--space-sm:.75rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2rem;--space-2xl:3rem;--space-3xl:5rem;--space-4xl:8rem;--rule:1px;--shadow:2px 2px 0 var(--color-ink);--bar:1.5rem;--page:1240px;--gutter:1.5rem;--ease-out:cubic-bezier(.16, 1, .3, 1);--dur-fast:.12s}*,:before,:after{box-sizing:border-box}html,body{overflow-x:clip}html{background:var(--color-field);color:var(--color-ink);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;scroll-behavior:smooth;scrollbar-color:var(--color-ink) var(--color-field);accent-color:var(--color-ink);caret-color:var(--color-ink);scroll-padding-top:4rem}body{font-size:var(--text-base);margin:0;line-height:1.5}::selection{background:var(--color-ink);color:var(--color-field)}a{color:inherit;text-underline-offset:.2em;transition:text-decoration-thickness var(--dur-fast);text-decoration:underline 1px}a:hover{text-decoration-thickness:3px}:focus-visible{outline:2px solid var(--color-ink);outline-offset:3px}.win :focus-visible{outline-offset:2px}[tabindex="-1"]:focus:not(:focus-visible){outline:none}code,pre{font-family:var(--font-code);font-size:var(--text-code)}pre{margin:0}h1,h2,h3{text-wrap:balance}.bar,.desk,.panel>section,.colophon{width:min(100% - 2 * var(--gutter), var(--page));margin-inline:auto}.meta{font-family:var(--font-code);font-size:var(--text-2xs);font-variant-numeric:tabular-nums;margin:0;font-weight:700;line-height:1.4}.menubar{z-index:50;background:var(--color-window);border-bottom:var(--rule) solid var(--color-ink);position:sticky;top:0}.bar{align-items:center;gap:var(--space-lg);min-height:2.75rem;display:flex}.home{letter-spacing:-.01em;white-space:nowrap;font-weight:700;text-decoration:none}.views{border:var(--rule) solid var(--color-ink);border-radius:6px;margin-inline:auto;display:flex;overflow:hidden}.views a{font-weight:600;font-size:var(--text-sm);align-items:center;min-height:2rem;padding:.3em 1.1em;text-decoration:none;display:inline-flex}.views a+a{border-left:var(--rule) solid var(--color-ink)}.views a:hover{background:var(--color-window-2)}.views a[aria-current=true]{background:var(--color-ink);color:var(--color-window)}.short{display:none}.btn{justify-content:center;align-items:center;gap:var(--space-xs);font:600 var(--text-sm) / 1.2 var(--font-sans);color:var(--color-ink);background:var(--color-window);border:var(--rule) solid var(--color-ink);cursor:pointer;border-radius:6px;min-height:2.5rem;padding:.5em 1.1em;text-decoration:none;display:inline-flex}.btn:hover{background:var(--color-ink);color:var(--color-window)}.btn:active{transform:translateY(1px)}.btn-ink{background:var(--color-ink);color:var(--color-window);border-radius:0;min-height:2rem;padding:.35em .9em}.btn-ink:hover{background:var(--color-ink-soft)}.btn-default{box-shadow:0 0 0 2px var(--color-window), 0 0 0 5px var(--color-ink);margin:5px}.btn-sm{min-height:2rem;font-size:var(--text-xs);border-radius:5px;padding:.2em .8em}.win{background:var(--color-window);border:var(--rule) solid var(--color-ink);box-shadow:var(--shadow);min-width:0;margin:0;position:relative}.win-bar{height:var(--bar);border-bottom:var(--rule) solid var(--color-ink);background:repeating-linear-gradient(var(--color-ink) 0 1px, transparent 1px 3px) 0 5px / 100% 13px no-repeat;background-origin:content-box;justify-content:center;align-items:center;padding:0 6px;display:flex;position:relative}.win-box{background:var(--color-window);border:var(--rule) solid var(--color-ink);width:13px;height:13px;box-shadow:0 0 0 3px var(--color-window);position:absolute;left:10px}.win-title{font:700 var(--text-2xs) / 1 var(--font-code);background:var(--color-window);white-space:nowrap;margin:0;padding:0 .6em}.win-body{padding:var(--space-lg)}.js .draggable .win-bar{cursor:grab;touch-action:none}.js .draggable.dragging .win-bar{cursor:grabbing}.dragging{user-select:none}.desktop{background:url(/img/desktop.png) center / 1440px auto repeat-x, var(--color-field);border-bottom:var(--rule) solid var(--color-ink);image-rendering:pixelated}.desk{image-rendering:auto;gap:var(--space-lg);padding-block:var(--space-xl) var(--space-2xl);grid-template-columns:minmax(0,1fr) minmax(0,1fr);display:grid;position:relative}.desk>.win{align-self:start}.w-app,.w-source,.w-gate,.w-console{grid-column:1/-1}.js[data-view=human] [data-layer=agent],.js[data-view=agent] [data-layer=human],.js[data-view=human] [data-panel=agent],.js[data-view=agent] [data-panel=human]{display:none}@media (width>=1081px){.js .desk{height:clamp(46rem,100svh - 2.75rem,52rem);padding:0;display:block}.js .desk>.win{align-self:normal;position:absolute}.js .w-app,.js .w-source{z-index:2;width:57%;top:3.5rem;left:0}.js .w-source{flex-direction:column;display:flex;bottom:2.5rem}.js .w-source .src{flex:1;min-height:0;max-height:none}.js .w-portrait{z-index:1;width:16%;top:1.5rem;left:60.5%}.js .w-clock{z-index:1;width:21%;top:3rem;right:0}.js .w-gate,.js .w-console{z-index:3;width:45%;top:21.5rem;right:0}}.sweep{background:var(--color-ink);opacity:0;pointer-events:none;z-index:20;width:2px;position:absolute;top:0;bottom:0;left:0}html:not(.js) .sweep{display:none}.w-app .win-body{padding:var(--space-xl) var(--space-xl) var(--space-xl)}.statement{font-weight:700;font-size:var(--text-statement);letter-spacing:-.035em;margin:0 0 var(--space-lg);max-width:12ch;line-height:.98}.standfirst{font-size:var(--text-lg);letter-spacing:-.01em;text-wrap:pretty;max-width:32em;margin:0;line-height:1.4}.actions{align-items:center;gap:var(--space-md) var(--space-lg);margin:var(--space-xl) 0 0;flex-wrap:wrap;display:flex}.w-portrait img{width:100%;height:auto;display:block}.w-ascii{container-type:inline-size}.ascii{font-family:var(--font-code);user-select:none;margin:0;padding:4px 0;font-size:2.60417cqi;font-weight:700;line-height:1;overflow:hidden}.w-clock .win-body{padding:var(--space-md)}.clock{font:700 var(--text-xl) / 1 var(--font-code);letter-spacing:-.04em;margin:0 0 var(--space-md);font-variant-numeric:tabular-nums}.clock time:not([datetime]){font-size:var(--text-xs);letter-spacing:0}.live{background:var(--color-ink);color:var(--color-window);font-weight:700;font-size:var(--text-sm);margin:0;padding:.15em .5em;display:inline-block}.live:before{content:"";background:var(--color-field);vertical-align:.05em;width:.5em;height:.5em;margin-right:.45em;animation:1.2s step-end infinite blink;display:inline-block}.terms{margin:var(--space-xs) 0 0;font-size:var(--text-sm);color:var(--color-on-window-soft)}@keyframes blink{50%{opacity:0}}@media (prefers-reduced-motion:no-preference){.js .desk>.win{animation:.36s steps(5,end) backwards zoom;animation-delay:calc(var(--i,0) * .11s)}.w-app,.w-source{--i:0}.w-portrait{--i:1}.w-clock{--i:2}.w-gate,.w-console{--i:3}@keyframes zoom{0%{clip-path:inset(48%)}}}.w-gate .win-body{padding:var(--space-lg)}.gate-title{font-weight:700;font-size:var(--text-xl);letter-spacing:-.03em;margin:0 0 var(--space-sm);line-height:1.05}.w-gate .note{margin-bottom:var(--space-md);max-width:36em}.spec{margin:0 0 var(--space-lg);border-top:var(--rule) solid var(--color-ink)}.spec>div{gap:var(--space-sm);padding:var(--space-xs) 0;border-bottom:var(--rule) dotted var(--color-ink);grid-template-columns:6rem minmax(0,1fr);display:grid}.spec dt{font:700 var(--text-2xs) / 1.6 var(--font-code)}.spec dd{margin:0}.spec code{font-size:var(--text-2xs);overflow-wrap:anywhere;line-height:1.6;display:block}.console{padding:var(--space-md)}.ask{align-items:center;gap:var(--space-xs);padding-bottom:var(--space-sm);border-bottom:var(--rule) solid var(--color-ink);flex-wrap:wrap;display:flex}.ask code{font-size:var(--text-sm)}.ask input{min-width:0;font-family:var(--font-code);font-size:var(--text-sm);color:var(--color-ink);background:var(--color-window-2);border:0;border-radius:0;flex:8rem;padding:.35em .5em}.ask input::placeholder{color:var(--color-on-window-soft)}.ask input:focus-visible{outline-offset:0}.tries{margin:var(--space-sm) 0 0;gap:var(--space-xs);flex-wrap:wrap;padding:0;list-style:none;display:flex}.chip{font:inherit;color:var(--color-ink);background:var(--color-window-2);cursor:pointer;border:0;min-height:2rem;padding:.3em .55em}.chip code{font-size:var(--text-2xs)}.chip:before{content:"+ ";font-family:var(--font-code);font-size:var(--text-2xs)}.chip:hover{background:var(--color-ink);color:var(--color-window)}.log{margin:var(--space-sm) 0 0;overscroll-behavior:contain;scrollbar-width:thin;max-height:22rem;padding:0;list-style:none;overflow:auto}.log:empty{display:none}.x{padding:var(--space-xs) 0;border-top:var(--rule) dotted var(--color-ink);font-family:var(--font-code);font-size:var(--text-2xs);line-height:1.55}.x:first-child{border-top:0}.x p{grid-template-columns:1.4em minmax(0,1fr);margin:0;display:grid}.x .req code{font-size:inherit;overflow-wrap:anywhere}.x .res{color:var(--color-on-window-soft)}.x[aria-busy=true] .res span:last-child:after{content:"waiting";animation:.8s step-end infinite blink}.x[data-kind=error] .res,.x[data-kind=error] .out{color:var(--color-error)}.x .out{margin:var(--space-2xs) 0 0 1.4em;padding:var(--space-xs) var(--space-sm);background:var(--color-window-2);white-space:pre-wrap;overflow-wrap:anywhere}.x .out:empty{display:none}.x.new{animation:arrive .34s var(--ease-out) both}@keyframes arrive{0%{opacity:0;transform:translateY(-6px)}}html:not(.js) .console,html:not(.js) .js-only{display:none}.framed{padding:var(--space-2xl) var(--space-xl);margin-block:var(--space-3xl);background:linear-gradient(var(--color-ink), var(--color-ink)) 0 0 / 12px 1px, linear-gradient(var(--color-ink), var(--color-ink)) 0 0 / 1px 12px, linear-gradient(var(--color-ink), var(--color-ink)) 100% 0 / 12px 1px, linear-gradient(var(--color-ink), var(--color-ink)) 100% 0 / 1px 12px, linear-gradient(var(--color-ink), var(--color-ink)) 0 100% / 12px 1px, linear-gradient(var(--color-ink), var(--color-ink)) 0 100% / 1px 12px, linear-gradient(var(--color-ink), var(--color-ink)) 100% 100% / 12px 1px, linear-gradient(var(--color-ink), var(--color-ink)) 100% 100% / 1px 12px;background-repeat:no-repeat;position:relative}.display{font-weight:600;font-size:var(--text-display);letter-spacing:-.04em;max-width:15ch;margin:0;line-height:.96}.manifesto .display{text-align:center;margin-inline:auto}.manifesto .cols-3{margin-top:var(--space-2xl)}.cols-3{gap:var(--space-lg);grid-template-columns:repeat(3,minmax(0,1fr));margin:0;display:grid}.cols-3>div{border-left:var(--rule) solid var(--color-ink);padding-left:var(--space-sm)}.cols-3 dt{font-weight:700;font-size:var(--text-lg);letter-spacing:-.02em;margin-bottom:var(--space-2xs);line-height:1.2}.cols-3 dd{font-size:var(--text-base);color:var(--color-ink-soft);margin:0;line-height:1.45}.ascii i{font-style:normal}.ascii .t2{color:color-mix(in oklch, var(--color-ink) 62%, var(--color-window))}.ascii .t3{color:color-mix(in oklch, var(--color-ink) 30%, var(--color-window));font-weight:400}.ascii .t4{color:color-mix(in oklch, var(--color-ink) 14%, var(--color-window));font-weight:400}.ascii .t5{color:color-mix(in oklch, var(--color-ink) 5%, var(--color-window));font-weight:400}.ascii .t6,.ascii .t7,.ascii .t8{color:color-mix(in oklch, var(--color-ink) 0%, var(--color-window));font-weight:400}.section{padding-block:var(--space-2xl) var(--space-4xl)}.head{font-weight:600;font-size:var(--text-2xl);letter-spacing:-.035em;margin:0 0 var(--space-2xl);line-height:1}.lede{font-size:var(--text-lg);max-width:36em;margin:calc(-1 * var(--space-lg)) 0 var(--space-2xl);text-wrap:pretty;line-height:1.4}.ruled{gap:var(--space-2xl) var(--space-lg);grid-template-columns:repeat(4,minmax(0,1fr));margin:0;padding:0;list-style:none;display:grid}.ruled>*{border-left:var(--rule) solid var(--color-ink);padding-left:var(--space-sm);min-width:0}.ruled h3{font-weight:700;font-size:var(--text-xl);letter-spacing:-.03em;margin:0 0 var(--space-xs);line-height:1.05}.ruled .meta{margin-bottom:var(--space-sm)}.ruled .deck{margin:0 0 var(--space-sm);font-weight:500;line-height:1.3}.ruled p{font-size:var(--text-sm);margin:0;line-height:1.55}.ruled h3 a,.files-list>li>a{text-decoration:none}.ruled h3 a:after,.files-list>li>a:after{content:"";vertical-align:.4em;background:currentColor;width:.45em;height:.45em;margin-left:.25em;display:inline-block;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 10' fill='none' stroke='black' stroke-width='1.6'%3E%3Cpath d='M2 8 8 2M3.5 2H8v4.5'/%3E%3C/svg%3E") 50%/contain no-repeat}.ruled h3 a:hover,.files-list>li>a:hover{text-decoration:underline 3px}.facts{margin-top:var(--space-3xl);grid-template-columns:repeat(2,minmax(0,1fr))}.facts h3{font-size:var(--text-lg)}.facts ul{margin:var(--space-xs) 0 0;gap:var(--space-2xs);font-size:var(--text-lg);letter-spacing:-.01em;padding:0;list-style:none;display:grid}.facts li span{color:var(--color-ink-soft)}.facts .year{font:700 var(--text-sm) var(--font-code);color:var(--color-ink);margin-right:var(--space-xs)}.more{margin-top:var(--space-xl)}.more>summary{align-items:center;gap:var(--space-xs);cursor:pointer;min-height:2rem;font:700 var(--text-2xs) / 1 var(--font-code);border:var(--rule) solid var(--color-ink);background:var(--color-window);padding:.45em .7em;list-style:none;display:inline-flex}.more>summary::-webkit-details-marker{display:none}.more>summary:after{content:"";border-bottom:1.5px solid;border-right:1.5px solid;width:.4em;height:.4em;transform:translateY(-.15em)rotate(45deg)}.more[open]>summary:after{transform:translateY(.1em)rotate(-135deg)}.more>summary:hover{background:var(--color-ink);color:var(--color-window)}.more>.ruled{margin-top:var(--space-xl)}.field{position:relative}.field:before{content:"";inset:7rem calc(50% - 50vw) var(--space-2xl);z-index:-1;image-rendering:pixelated;background:url(/img/desktop.png) 30% 0/1440px;position:absolute}body{isolation:isolate}.w-finder{max-width:62rem;margin-inline:auto}.w-finder .win-body{padding:0 var(--space-lg) var(--space-lg)}.files-list{margin:0;padding:0;list-style:none}.files-list>li{gap:var(--space-lg);padding:var(--space-sm) 0;border-bottom:var(--rule) dotted var(--color-ink);grid-template-columns:minmax(0,11rem) minmax(0,1fr);align-items:baseline;display:grid}.files-list>li>a,.files-list .name{font-weight:700;font-size:var(--text-lg);letter-spacing:-.02em}.files-list p{font-size:var(--text-sm);margin:0}.w-finder .more>.files-list{margin-top:var(--space-sm)}.lede code{font-size:.85em}.spec-cols{margin-bottom:var(--space-2xl)}.spec-cols dt code{font-size:var(--text-sm)}.spec-cols dd{font-size:var(--text-base)}.snippets{gap:var(--space-lg);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.win-info{gap:var(--space-2xs) var(--space-md);padding:var(--space-xs) var(--space-md);border-bottom:var(--rule) solid var(--color-ink);font:400 var(--text-2xs) / 1.4 var(--font-code);color:var(--color-on-window-soft);flex-wrap:wrap;margin:0;display:flex}.win-info code{font-size:inherit;color:var(--color-ink)}.w-source{overflow:hidden}.src{padding:var(--space-md);white-space:pre-wrap;overflow-wrap:anywhere;scrollbar-width:thin;max-height:40rem;line-height:1.65;overflow:auto}.src .mk{color:var(--color-on-window-soft)}.src .hd{font-weight:700}.src .h1 .hd,.src .h2 .hd{background:var(--color-ink);color:var(--color-window);padding:0 .3em}.src .k{color:var(--color-on-window-soft)}.src button.hd{font:inherit;color:inherit;cursor:pointer;text-underline-offset:.2em;background:0 0;border:0;padding:0;font-weight:700;text-decoration:underline}.src button.hd:hover{background:var(--color-ink);color:var(--color-window)}.w-install .win-body{gap:var(--space-lg);padding:var(--space-lg);display:grid}.copyline{align-items:center;gap:var(--space-xs) var(--space-sm);flex-wrap:wrap;display:flex}.endpoint{padding:var(--space-sm);background:var(--color-window-2)}.endpoint code{font-size:var(--text-xs);overflow-wrap:anywhere;flex:14rem}.note{font-size:var(--text-xs);color:var(--color-on-window-soft);margin:0}.note code{font-size:var(--text-2xs)}.snippet{margin:0}.snippet figcaption{font:700 var(--text-2xs) / 1.4 var(--font-code);margin-bottom:var(--space-2xs)}.snippet pre{background:var(--color-window-2);padding:var(--space-xs) var(--space-sm);white-space:pre-wrap;overflow-wrap:anywhere;margin-bottom:var(--space-xs);line-height:1.6}.plain-files{padding:var(--space-sm) 0 0;border-top:var(--rule) solid var(--color-ink);gap:var(--space-xs);margin:0;list-style:none;display:grid}.plain-files li{gap:var(--space-sm);flex-wrap:wrap;align-items:baseline;display:flex}.plain-files span{font-size:var(--text-sm);color:var(--color-on-window-soft)}html:not(.js) [data-copy],html:not(.js) .copy-note,.copy-note:empty{display:none}.copy-note[data-kind=ok]{font:700 var(--text-2xs) / 1 var(--font-code);background:var(--color-ink);color:var(--color-field);padding:.4em .6em}.copy-note[data-kind=error]{font-size:var(--text-sm);color:var(--color-error);flex-basis:100%}.contact .display{max-width:18ch}.mail-line{margin-top:var(--space-2xl)}.mail-big{font-weight:600;font-size:var(--text-2xl);letter-spacing:-.035em;overflow-wrap:anywhere;text-underline-offset:.12em;line-height:1.05;text-decoration-thickness:2px}.mail-big:hover{text-decoration-thickness:5px}.contact-list{margin-top:var(--space-3xl)}.contact-list li{gap:var(--space-2xs);font-size:var(--text-lg);display:grid}.contact-list .cap{font-size:var(--text-xs);color:var(--color-ink-soft)}.w-work .win-body{padding:var(--space-xl) var(--space-lg)}.w-work .more{margin-top:var(--space-lg)}.colophon{padding-bottom:var(--space-2xl)}.w-about{max-width:26rem}.w-about .win-body{padding:var(--space-sm) var(--space-md);font:400 var(--text-2xs) / 1.6 var(--font-code)}.w-about p{margin:0}.sn{position:relative}.sn-note{z-index:5;width:min(17rem,80vw);padding:var(--space-xs) var(--space-sm);background:var(--color-window);border:var(--rule) solid var(--color-ink);box-shadow:var(--shadow);font-size:var(--text-xs);color:var(--color-ink);opacity:0;pointer-events:none;transition:opacity .18s var(--ease-out), transform .18s var(--ease-out);line-height:1.5;position:absolute;top:calc(100% + .4rem);left:0;transform:translateY(-4px)}.sn:hover .sn-note,.sn:focus-within .sn-note{opacity:1;pointer-events:auto;transform:none}@media (width<=1080px){.src{max-height:30rem}.ruled,.snippets{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=640px){:root{--gutter:1rem}.long{display:none}.bar{gap:var(--space-sm)}.views{margin-inline:0}.short{display:inline}.bar{justify-content:space-between}.desk{grid-template-columns:minmax(0,1fr)}.w-portrait{width:62%}.w-app .win-body{padding:var(--space-lg) var(--space-md)}.standfirst{font-size:var(--text-base)}.framed{padding:var(--space-2xl) var(--space-md);margin-block:var(--space-2xl)}.cols-3,.ruled,.facts,.snippets{grid-template-columns:minmax(0,1fr)}.files-list>li{gap:var(--space-2xs);grid-template-columns:minmax(0,1fr)}.w-finder .win-body{padding:0 var(--space-md) var(--space-md)}.section{padding-bottom:var(--space-3xl)}.sn{position:static}.ruled>*,.files-list li{position:relative}.sn-note{width:auto;left:0;right:0}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.live:before,.x.new,.x[aria-busy=true] .res span:last-child:after{animation:none}.sn-note{transition:none}}
