:root{--bg: #0d0d0d;--panel: #111111;--panel-2: #0a0a0a;--line: #262626;--ink: #f4f4f4;--dim: #9a9a9a;--sub: #808080;--shadow: #000000;--accent: var(--ink);--mono: ui-monospace, "SF Mono", "SFMono-Regular", Menlo, Consolas, "Liberation Mono", monospace;--fs-xs: 11px;--fs-sm: 13px;--fs-md: 14px;--fs-lg: clamp(20px, 6vw, 40px);--tracking: .02em;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 24px;--sp-6: 32px;--radius: 10px;--radius-lg: 16px;--border-w: 2px;--grid-size: 40px;--window-gutter: 8px;--gui-taskbar-h: 42px;--z-desktop: 0;--z-terminal: 10;--z-window: 100;--z-window-active: 500;--z-overlay: 1000;--dur-fast: .12s;--dur-med: .26s;--dur-slow: .52s;--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-in-out: cubic-bezier(.5, .1, .3, 1);--caret-blink: 1s}*,*:before,*:after{box-sizing:border-box}[hidden]{display:none!important}html,body{height:100%}body{margin:0;background:#050505;color:var(--ink);font-family:var(--mono);font-size:var(--fs-md);-webkit-font-smoothing:antialiased;overflow:hidden;image-rendering:pixelated}#app{position:relative;z-index:1;height:100%;width:100%;background:var(--bg)}body.mode-gui{background-color:#050505;background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);background-size:var(--grid-size) var(--grid-size);#app:before{display:none}}#app:before{content:"";position:absolute;inset:0;background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);background-size:var(--grid-size) var(--grid-size);opacity:.35;-webkit-mask-image:radial-gradient(120% 90% at 50% 40%,#000 40%,transparent 100%);mask-image:radial-gradient(120% 90% at 50% 40%,#000 40%,transparent 100%);pointer-events:none;z-index:var(--z-desktop)}#app:after{content:"";position:absolute;inset:0;pointer-events:none;z-index:var(--z-overlay);background:repeating-linear-gradient(to bottom,#0000 0 2px,#00000029 2px 3px),radial-gradient(120% 120% at 50% 30%,transparent 60%,rgba(0,0,0,.45) 100%);mix-blend-mode:multiply}.brackets{position:relative}.brackets:before,.brackets:after{content:"";position:absolute;width:14px;height:14px;pointer-events:none;border-color:var(--dim);border-style:solid}.brackets:before{top:6px;left:6px;border-width:2px 0 0 2px}.brackets:after{bottom:6px;right:6px;border-width:0 2px 2px 0}.caret{display:inline-block;min-width:.6em;background:var(--accent);color:var(--bg);white-space:pre}.caret:empty{height:1.05em;transform:translateY(.14em)}a{color:var(--dim);text-decoration:none;border-bottom:1px solid var(--line)}a:hover{color:var(--ink);border-color:var(--dim)}::selection{background:var(--ink);color:var(--bg)}.u-fade-top{-webkit-mask-image:linear-gradient(to bottom,transparent 0,transparent var(--cat-clear, 56px),#000 calc(var(--cat-clear, 56px) + var(--fade-ramp, 28px)));mask-image:linear-gradient(to bottom,transparent 0,transparent var(--cat-clear, 56px),#000 calc(var(--cat-clear, 56px) + var(--fade-ramp, 28px)))}*{scrollbar-width:thin;scrollbar-color:var(--line) transparent}*::-webkit-scrollbar{width:8px;height:8px}*::-webkit-scrollbar-thumb{background:var(--line)}@media(prefers-reduced-motion:no-preference){.caret{animation:caret var(--caret-blink) steps(1) infinite}}@keyframes caret{0%,49%{opacity:1}50%,to{opacity:0}}body:not(.mode-gui) .rig{padding:0}body:not(.mode-gui) .rig__monitor{padding:0;border:none;border-radius:0;background:none;box-shadow:none;width:100%}body:not(.mode-gui) .rig__screen{border:none;border-radius:0;box-shadow:none}body:not(.mode-gui) .rig__screen:after{display:none}body:not(.mode-gui) .rig__chin,body:not(.mode-gui) .rig__stand,body:not(.mode-gui) .rig__base,body:not(.mode-gui) .rig__desk{display:none}body:not(.mode-gui){background:var(--bg)}.rig{height:100%;display:flex;flex-direction:column;align-items:center;padding:clamp(8px,2.2vh,26px) clamp(8px,3vw,48px) 0}.rig__monitor{flex:1;min-height:0;width:min(100%,1560px);display:flex;flex-direction:column;background:linear-gradient(180deg,#181818,#101010);border:2px solid #2a2a2a;border-radius:18px;padding:clamp(8px,1.6vw,18px);box-shadow:inset 0 1px #ffffff0a,0 18px 60px #0009}.rig__screen{position:relative;flex:1;min-height:0;border:2px solid #000;border-radius:12px;overflow:hidden;background:var(--bg);box-shadow:inset 0 0 0 1px #1c1c1c,inset 0 0 clamp(18px,4vw,44px) #0000008c}.rig__screen:after{content:"";position:absolute;inset:0;pointer-events:none;z-index:calc(var(--z-overlay) + 1);background:linear-gradient(115deg,rgba(255,255,255,.05) 0%,rgba(255,255,255,.015) 18%,transparent 34%)}.rig__chin{display:flex;align-items:center;gap:var(--sp-3);padding:clamp(6px,1.2vh,12px) var(--sp-2) 0;font-size:var(--fs-xs);letter-spacing:.22em;color:var(--sub);user-select:none}.rig__brand{font-weight:700;color:var(--dim)}.rig__badge{margin-left:auto;display:inline-flex;align-items:center;gap:var(--sp-2)}.rig__led{width:7px;height:7px;border-radius:50%;background:var(--ink);box-shadow:0 0 6px #f4f4f4b3}.rig__model{color:#4a4a4a}.rig__stand{width:clamp(90px,12vw,170px);height:clamp(14px,2.6vh,30px);background:linear-gradient(180deg,#141414,#0c0c0c);border:2px solid #222222;border-top:none;clip-path:polygon(8% 0,92% 0,100% 100%,0 100%)}.rig__base{width:clamp(170px,22vw,320px);height:clamp(8px,1.4vh,14px);background:#101010;border:2px solid #242424;border-radius:4px 4px 0 0}.rig__desk{width:100vw;height:clamp(10px,2vh,18px);background:linear-gradient(180deg,#0d0d0d,#050505);border-top:2px solid #1f1f1f}.rig__screen.is-powering{animation:rig-power-on .55s var(--ease-out)}@keyframes rig-power-on{0%{filter:brightness(3);transform:scaleY(.05)}40%{filter:brightness(1.6);transform:scaleY(1.03)}70%{transform:scaleY(.99)}to{filter:brightness(1);transform:scaleY(1)}}@media(prefers-reduced-motion:no-preference){.rig__led{animation:rig-led 2.6s ease-in-out infinite}}@keyframes rig-led{0%,to{opacity:1}50%{opacity:.45}}@media(max-width:700px),(max-height:480px){.rig{padding:6px 6px 0}.rig__monitor{padding:5px;border-radius:10px}.rig__screen{border-radius:6px}.rig__chin{padding:4px 4px 5px}.rig__model,.rig__stand,.rig__base,.rig__desk{display:none}}.terminal{--cat-corner-clear: 100px ;--toggle-clear: 54px ;position:absolute;inset:0;display:flex;flex-direction:column;padding:clamp(16px,4vw,48px);z-index:var(--z-terminal);pointer-events:none}.terminal__surface{pointer-events:auto;display:flex;flex-direction:column;width:min(760px,100%);max-height:100%;margin:auto auto 0;overflow:hidden}.terminal__scroll{overflow-y:auto;line-height:1.55;font-size:var(--fs-md);color:var(--ink);padding-right:var(--sp-2);scrollbar-width:none}.terminal__scroll.is-cat-overlapping{-webkit-mask-image:linear-gradient(to bottom,#000 0,#000 calc(var(--cat-overlap-start) - var(--cat-overlap-ramp)),transparent var(--cat-overlap-start),transparent var(--cat-overlap-end),#000 calc(var(--cat-overlap-end) + var(--cat-overlap-ramp)),#000 100%);mask-image:linear-gradient(to bottom,#000 0,#000 calc(var(--cat-overlap-start) - var(--cat-overlap-ramp)),transparent var(--cat-overlap-start),transparent var(--cat-overlap-end),#000 calc(var(--cat-overlap-end) + var(--cat-overlap-ramp)),#000 100%)}.terminal__scroll::-webkit-scrollbar{display:none}.terminal__line{white-space:pre-wrap;word-break:break-word}.terminal__line--dim{color:var(--dim)}.terminal__line--sub{color:var(--sub)}.terminal__input-row{display:flex;align-items:baseline;gap:var(--sp-2);margin-top:var(--sp-2)}.terminal__prompt{color:var(--dim);white-space:nowrap;user-select:none}.terminal__field{position:relative;flex:1;min-width:0}.terminal__ghost{white-space:pre-wrap;word-break:break-word;pointer-events:none;min-height:1.2em;color:var(--ink)}.terminal__input{position:absolute;inset:0;width:100%;background:transparent;border:none;outline:none;color:transparent;caret-color:transparent;font:inherit;padding:0}@media(max-width:1080px){.terminal{padding-top:var(--cat-corner-clear);padding-bottom:var(--toggle-clear)}}@media(max-width:600px){.terminal{padding:10px;padding-top:var(--cat-corner-clear);padding-bottom:calc(44px + env(safe-area-inset-bottom,0px))}.terminal__scroll{font-size:var(--fs-sm)}.terminal__input-row{font-size:16px}}.window{position:absolute;display:flex;flex-direction:column;min-width:260px;min-height:160px;background:linear-gradient(180deg,var(--panel) 0%,var(--panel-2) 100%);border:3px solid var(--ink);border-radius:var(--radius-lg);box-shadow:0 0 0 4px var(--shadow),0 30px 80px -30px var(--shadow);z-index:var(--z-window);overflow:hidden}.window.is-active{z-index:var(--z-window-active);border-color:var(--ink);box-shadow:0 0 0 4px var(--shadow),0 0 0 5px var(--line),0 30px 90px -28px var(--shadow)}.window__bar{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-3);border-bottom:2px solid var(--line);font-size:var(--fs-xs);letter-spacing:2px;text-transform:uppercase;color:var(--dim);cursor:grab;user-select:none}.window__bar:active{cursor:grabbing}.window__bar,.window__resize{touch-action:none}.window__dots{display:inline-flex;gap:6px}.window__dot{width:9px;height:9px;border:2px solid var(--dim);background:transparent;padding:0;appearance:none}.window__title{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.window__controls{display:inline-flex;gap:var(--sp-2);position:relative;z-index:3}.window__btn{appearance:none;background:transparent;border:2px solid var(--line);color:var(--dim);font:inherit;font-size:var(--fs-xs);line-height:1;width:20px;height:18px;cursor:pointer}.window__btn:hover,.window__btn:active{color:var(--ink);border-color:var(--dim)}.window__body{position:relative;z-index:3;flex:1;overflow:auto;padding:var(--sp-4);margin-right:var(--window-gutter);margin-bottom:var(--window-gutter);line-height:1.6;color:var(--ink)}.window__resize{position:absolute;z-index:2}.window__resize--n,.window__resize--s{left:10px;right:10px;height:var(--window-gutter);cursor:ns-resize}.window__resize--n{top:-2px}.window__resize--s{bottom:-2px}.window__resize--e,.window__resize--w{top:10px;bottom:10px;width:var(--window-gutter);cursor:ew-resize}.window__resize--e{right:-2px}.window__resize--w{left:-2px}.window__resize--ne,.window__resize--nw,.window__resize--se,.window__resize--sw{width:16px;height:16px}.window__resize--nw,.window__resize--se{cursor:nwse-resize}.window__resize--ne,.window__resize--sw{cursor:nesw-resize}.window__resize--nw{top:-2px;left:-2px}.window__resize--ne{top:-2px;right:-2px}.window__resize--sw{bottom:-2px;left:-2px}.window__resize--se{bottom:-2px;right:-2px}@media(pointer:coarse){:root{--window-gutter: 20px}.window__body{margin-left:var(--window-gutter)}.window__resize--e,.window__resize--w{width:14px}.window__resize--e{right:-4px}.window__resize--w{left:-4px}.window__resize--n,.window__resize--s{height:14px}.window__resize--n{top:-4px}.window__resize--s{bottom:-4px}.window__resize--ne,.window__resize--nw,.window__resize--se,.window__resize--sw{width:16px;height:16px}.window__resize--nw,.window__resize--sw{left:-4px}.window__resize--ne,.window__resize--se{right:-4px}.window__resize--nw,.window__resize--ne{top:-4px}.window__resize--sw,.window__resize--se{bottom:-4px}.window__btn{width:28px;height:26px}}.window.is-maximized{border-radius:var(--radius)}.window.is-maximized .window__bar{cursor:default}.window.is-maximized .window__resize{display:none}@media(prefers-reduced-motion:no-preference){.window.is-opening{animation:window-crt-on var(--dur-slow) var(--ease-out)}.window.is-closing{pointer-events:none;animation:window-crt-off var(--dur-med) var(--ease-in-out) forwards}.window.is-minimizing{transform-origin:top right;pointer-events:none;animation:window-fold var(--dur-med) var(--ease-out) forwards}.window.is-snapping{transition:width var(--dur-med) var(--ease-out),height var(--dur-med) var(--ease-out),left var(--dur-med) var(--ease-out),top var(--dur-med) var(--ease-out)}}@keyframes window-crt-on{0%{opacity:0;transform:scale(1.04,.005);filter:brightness(3)}30%{opacity:1;transform:scale(1.02,.03);filter:brightness(2.4)}55%{transform:scaleY(1.04);filter:brightness(1.4)}70%{transform:scale(1);filter:brightness(.9)}82%{filter:brightness(1.15)}to{transform:scale(1);filter:brightness(1)}}@keyframes window-crt-off{0%{opacity:1;transform:scale(1);filter:brightness(1)}45%{opacity:1;transform:scale(1.02,.01);filter:brightness(2.6)}to{opacity:0;transform:scale(.005,.01);filter:brightness(3)}}@keyframes window-fold{to{opacity:0;transform:scale(.04)}}.tray{position:absolute;top:16px;right:16px;z-index:990;display:flex;flex-direction:column;align-items:flex-end;gap:6px}.tray__folder{display:inline-flex;align-items:center;gap:6px;background:var(--panel);border:2px solid var(--ink);color:var(--ink);font:inherit;font-size:var(--fs-xs);letter-spacing:1px;text-transform:uppercase;padding:5px 9px;cursor:pointer}.tray__folder:hover,.tray__folder:active,.tray__folder.is-open{border-color:var(--dim)}.tray__glyph{font-size:13px}.tray__count{min-width:12px;text-align:center}.tray__list{display:flex;flex-direction:column;gap:4px;background:var(--panel);border:2px solid var(--line);padding:6px;min-width:170px;max-width:240px}.tray__item{text-align:left;background:transparent;border:1px solid var(--line);color:var(--ink);font:inherit;font-size:var(--fs-xs);padding:6px 8px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tray__item:hover,.tray__item:active{border-color:var(--dim)}.muted{color:var(--dim)}.about h2,.contact h2{margin:0 0 var(--sp-3);font-size:var(--fs-xs);letter-spacing:2px;text-transform:uppercase;color:var(--dim)}.about p,.contact p{margin:0 0 var(--sp-3)}.contact__list{list-style:none;margin:0 0 var(--sp-4);padding:0;display:flex;flex-direction:column;gap:var(--sp-2)}.contact__item{display:grid;grid-template-columns:18px auto minmax(0,1fr);align-items:start;gap:var(--sp-2);min-width:0}.contact__icon{width:16px;height:16px;color:var(--dim);flex:0 0 auto}.contact__item a,.contact__values{min-width:0;overflow-wrap:anywhere}.contact__values{display:flex;flex-direction:column;align-items:flex-start;gap:var(--sp-1)}.contact__secondary{display:flex;flex-wrap:wrap;gap:0 var(--sp-2)}.app-list{display:flex;flex-direction:column;gap:var(--sp-3)}.app-card{position:relative;text-align:left;display:flex;flex-direction:column;gap:var(--sp-1);padding:var(--sp-3);background:transparent;border:2px solid var(--line);color:var(--ink);font:inherit;cursor:pointer}.app-card:hover{border-color:var(--dim)}.app-card strong{letter-spacing:1px}.app-card span{color:var(--dim);font-size:var(--fs-sm)}.app-card__tag{position:absolute;top:var(--sp-3);right:var(--sp-3);font-size:var(--fs-xs);letter-spacing:1px;text-transform:uppercase;border:1px solid var(--line);padding:0 6px}.pgrid{display:flex;flex-direction:column;gap:var(--sp-3)}.pgrid__filters{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.pgrid__chip{background:transparent;border:1px solid var(--line);color:var(--dim);font:inherit;font-size:var(--fs-xs);letter-spacing:1px;text-transform:uppercase;padding:3px 10px;cursor:pointer}.pgrid__chip:hover{border-color:var(--dim)}.pgrid__chip.is-active{background:var(--ink);border-color:var(--ink);color:var(--bg)}.pgrid__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(210px,100%),1fr));gap:var(--sp-3)}.pgrid__card{text-align:left;display:flex;flex-direction:column;gap:var(--sp-1);padding:var(--sp-2);background:transparent;border:2px solid var(--line);color:var(--ink);font:inherit;cursor:pointer}.pgrid__card:hover{border-color:var(--dim)}.pgrid__thumb{display:flex;align-items:center;justify-content:center;aspect-ratio:16 / 9;margin-bottom:var(--sp-1);border:1px solid var(--line);overflow:hidden;background-image:repeating-conic-gradient(var(--panel-2) 0% 25%,var(--panel) 0% 50%);background-size:6px 6px}.pgrid__shot{width:100%;height:100%;object-fit:cover;display:block;filter:grayscale(1) contrast(.9) brightness(.75);transition:filter var(--dur-med) var(--ease-out)}.pgrid__card:hover .pgrid__shot,.pgrid__card:focus-visible .pgrid__shot{filter:grayscale(.15) contrast(1) brightness(1)}.pgrid__mark{display:flex;color:var(--sub);transition:color var(--dur-med) var(--ease-out)}.pgrid__card:hover .pgrid__mark,.pgrid__card:focus-visible .pgrid__mark{color:var(--ink)}.pgrid__name{letter-spacing:1px}.pgrid__blurb{color:var(--dim);font-size:var(--fs-sm)}.pgrid__meta{color:var(--sub);font-size:var(--fs-xs);letter-spacing:1px;text-transform:uppercase}.pgrid__empty{margin:0}.project{display:flex;flex-direction:column;height:100%}.project__bar{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-3);border-bottom:2px solid var(--line);font-size:var(--fs-xs);color:var(--dim);flex:0 0 auto}.project__dots{letter-spacing:2px}.project__url{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border:1px solid var(--line);padding:2px var(--sp-2)}.repo{display:flex;flex-direction:column;height:100%}.repo__body{flex:1;overflow-y:auto;padding:var(--sp-4)}.repo__open{flex:0 0 auto;color:var(--dim);text-decoration:none;border-bottom:1px solid var(--line)}.repo__open:hover,.repo__open:focus-visible{color:var(--ink);border-color:var(--dim)}.repo__tree{margin:var(--sp-3) 0 0;padding-left:var(--sp-4);list-style:none}.repo__tree li{color:var(--dim);font-size:var(--fs-sm);line-height:1.7}.repo__tree li:before{content:"· ";color:var(--sub)}.repo__body img{max-width:100%;height:auto}.repo__body pre{overflow-x:auto}.project__stage{position:relative;flex:1;display:flex;overflow:hidden}.project__frame{position:absolute;top:0;left:0;transform-origin:0 0;border:0;background:#000}.project__loading{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-3);background:var(--bg);z-index:1}.project__loading.is-done{opacity:0;pointer-events:none;transition:opacity var(--dur-med) var(--ease-out)}.project__loading-label{color:var(--dim);font-size:var(--fs-sm);padding:0 var(--sp-4);text-align:center}.project__loadbar{width:min(220px,70%);height:10px;border:2px solid var(--line);padding:2px;display:block}.project__loadbar i{display:block;height:100%;width:40%;background:repeating-linear-gradient(90deg,var(--ink) 0 4px,transparent 4px 8px)}@media(prefers-reduced-motion:no-preference){.project__loadbar i{animation:loadbar-march 1.1s linear infinite}}@keyframes loadbar-march{0%{transform:translate(0)}to{transform:translate(150%)}}.project__fallback{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-2);padding:var(--sp-5);text-align:center}.project__open{margin-top:var(--sp-3);border:2px solid var(--line);padding:var(--sp-2) var(--sp-4);color:var(--ink)}.project__open:hover{border-color:var(--dim)}.docs{line-height:1.65;color:var(--ink);min-width:0}.docs p,.docs li,.docs a,.docs code,.docs blockquote,.docs h1,.docs h2,.docs h3{overflow-wrap:anywhere}.docs__avatar{float:right;margin:var(--sp-1) 0 var(--sp-2) var(--sp-3)}.docs__avatar .cat__art{font-size:4px}.docs__avatar .cat__zzz{display:none}.docs h1{font-size:clamp(20px,4vw,26px);letter-spacing:1px;margin:0 0 var(--sp-2)}.docs h2{font-size:var(--fs-md);text-transform:uppercase;letter-spacing:2px;color:var(--dim);margin:var(--sp-5) 0 var(--sp-2);padding-bottom:var(--sp-1);border-bottom:1px solid var(--line)}.docs h3{font-size:var(--fs-md);letter-spacing:1px;margin:var(--sp-4) 0 var(--sp-1)}.docs p{margin:0 0 var(--sp-3)}.docs ul,.docs ol{margin:0 0 var(--sp-3);padding-left:1.4em}.docs li{margin:2px 0}.docs a,.docs strong{color:var(--ink)}.docs code{background:#000;border:1px solid var(--line);padding:0 5px;border-radius:3px;font-size:.9em}.docs .md-table{display:block;width:100%;overflow-x:auto;margin:var(--sp-3) 0;border-collapse:collapse;font-size:var(--fs-sm)}.docs .md-table th,.docs .md-table td{padding:var(--sp-1) var(--sp-3);border:1px solid var(--line);text-align:left;vertical-align:top;white-space:nowrap}.docs .md-table th{color:var(--ink);background:var(--panel);letter-spacing:.06em}.docs .md-table td{color:var(--dim)}.docs .md-table .is-center{text-align:center}.docs .md-table .is-right{text-align:right}.docs .md-figure{display:flex;flex-wrap:wrap;gap:var(--sp-2);justify-content:center;margin:0 0 var(--sp-3)}.docs .md-figure img,.docs p>img{flex:1 1 240px;min-width:0;max-width:100%;height:auto;display:block;border:1px solid var(--line);background:var(--panel)}.docs .md-pre{background:#060606;border:1px solid var(--line);border-radius:var(--radius);padding:var(--sp-3);overflow-x:auto;margin:0 0 var(--sp-3)}.docs .md-pre code{background:transparent;border:0;padding:0}.docs blockquote{margin:0 0 var(--sp-3);padding:var(--sp-1) 0 var(--sp-1) var(--sp-3);border-left:2px solid var(--line);color:var(--dim)}.docs hr{border:0;border-top:1px solid var(--line);margin:var(--sp-4) 0}.docs__toolbar{display:flex;justify-content:flex-end;margin-bottom:var(--sp-3)}.docs__download{border:2px solid var(--line);padding:var(--sp-1) var(--sp-3);color:var(--ink);font-size:var(--fs-sm)}.docs__download:hover,.docs__download:active{border-color:var(--dim)}@media(max-width:600px){.docs__avatar{float:none;display:block;margin:0 0 var(--sp-2)}}.liffy{position:relative;display:flex;flex-direction:column;height:100%;--cat-clear: 88px;--fade-ramp: 28px}.liffy:has(.catc--corner){--cat-clear: 70px}.liffy__log{flex:1;overflow-y:auto;padding:var(--sp-4);padding-top:calc(var(--cat-clear) + var(--fade-ramp));display:flex;flex-direction:column;gap:var(--sp-2);line-height:1.55}.liffy__line{display:flex;gap:var(--sp-2);white-space:pre-wrap;word-break:break-word}.liffy__who{flex:0 0 auto;user-select:none}.liffy__who--user{color:var(--dim)}.liffy__who--bot{color:var(--ink)}.liffy__text{flex:1;min-width:0;color:var(--ink)}.liffy__line:has(.liffy__who--user) .liffy__text{color:var(--dim)}.liffy__inputrow{display:flex;align-items:baseline;gap:var(--sp-2);padding:var(--sp-3) var(--sp-4);border-top:2px solid var(--line)}.liffy__prompt{color:var(--dim);user-select:none}.liffy__input{flex:1;min-width:0;background:transparent;border:none;outline:none;color:var(--ink);font:inherit;caret-color:var(--ink);padding:0}.liffy__input:disabled{opacity:.5}@media(max-width:600px){.liffy__inputrow{font-size:16px}.liffy{--cat-clear: 72px;--fade-ramp: 20px}.liffy:has(.catc--corner){--cat-clear: 54px}}.vinyl{display:flex;flex-direction:column;align-items:center;gap:var(--sp-2);font-family:var(--mono);color:var(--ink)}.vinyl--docked{position:absolute;right:clamp(16px,5vw,96px);top:50%;transform:translateY(-50%);z-index:var(--z-terminal);width:384px;padding:var(--sp-4);background:var(--panel-2);border:var(--border-w) solid var(--line);border-radius:var(--radius);box-shadow:0 18px 48px -12px var(--shadow)}.vinyl--windowed{width:100%;padding:var(--sp-3);background:none;border:0}.vinyl__stage{position:relative;display:flex;justify-content:center;width:fit-content;max-width:100%;margin:0 auto}.vinyl__sleeve{position:absolute;display:block;aspect-ratio:1;object-fit:cover;border:1px solid var(--line);box-shadow:3px 3px #0000008c}.vinyl__canvas{display:block;max-width:100%;height:auto;image-rendering:pixelated;cursor:grab;touch-action:none}.vinyl__canvas.is-scrubbing{cursor:grabbing}.vinyl__meta{display:flex;flex-direction:column;align-items:center;gap:2px;text-align:center}.vinyl__meta strong{font-size:var(--fs-md);letter-spacing:.14em}.vinyl__meta span{font-size:var(--fs-xs);color:var(--sub)}.vinyl__now{font-size:var(--fs-sm);color:var(--dim);text-align:center;max-width:100%}.vinyl__meta{width:100%}.vinyl__name,.vinyl__now{width:100%;max-width:100%;overflow:hidden;white-space:nowrap;text-align:center}.vinyl__name.is-marquee,.vinyl__now.is-marquee{text-align:left}.vinyl__name>span,.vinyl__now>span{display:inline-block}.vinyl__name.is-marquee>span,.vinyl__now.is-marquee>span{animation:vinyl-slide var(--dur, 8s) ease-in-out infinite alternate}@keyframes vinyl-slide{0%{transform:translate(0)}to{transform:translate(calc(-1 * var(--shift, 0px)))}}.vinyl__bar{width:100%;height:6px;border:1px solid var(--line);background:var(--panel);cursor:pointer;touch-action:none}.vinyl__bar:focus-visible{outline:1px solid var(--dim);outline-offset:2px}.vinyl__bar i{display:block;height:100%;width:0;background:var(--dim)}.vinyl__time{font-size:var(--fs-xs);color:var(--sub);font-variant-numeric:tabular-nums;min-height:1em}.vinyl__controls{display:flex;gap:var(--sp-2)}.vinyl__controls.is-disabled{opacity:.4;pointer-events:none}.vinyl__btn{min-width:40px;padding:var(--sp-1) var(--sp-2);font:inherit;font-size:var(--fs-xs);color:var(--ink);background:var(--panel);border:1px solid var(--line);cursor:pointer}.vinyl__btn:hover,.vinyl__btn:focus-visible{background:var(--line)}.vinyl__btn.is-active{color:var(--ink);border-color:var(--dim);background:var(--line)}.vinyl__vol{display:flex;align-items:center;gap:var(--sp-2);width:100%;font-size:var(--fs-xs);color:var(--sub)}.vinyl__vol.is-disabled{opacity:.4;pointer-events:none}.vinyl__vol input{flex:1;accent-color:var(--dim)}.vinyl__loadrow{display:flex;flex-wrap:wrap;gap:var(--sp-2);justify-content:center}.vinyl__load{display:inline-block;padding:var(--sp-1) var(--sp-3);font-size:var(--fs-xs);color:var(--dim);background:var(--panel);border:1px dashed var(--line);cursor:pointer}.vinyl__load:hover,.vinyl__load:focus-visible{color:var(--ink);border-style:solid}.vinyl__file{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.vinyl.is-dropping{outline:1px dashed var(--dim);outline-offset:-4px}.vinyl__tracks{width:100%;margin:0;padding:0;list-style:none;max-height:190px;overflow-y:auto;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.vinyl__track{display:flex;gap:var(--sp-2);width:100%;padding:3px var(--sp-1);font:inherit;font-size:var(--fs-xs);color:var(--sub);background:none;border:0;text-align:left;cursor:pointer}.vinyl__track:hover,.vinyl__track:focus-visible{color:var(--ink);background:var(--panel)}.vinyl__track.is-current{color:var(--ink)}.vinyl__track.is-current .vinyl__num:before{content:"▸";margin-right:2px}.vinyl__num{color:var(--sub);font-variant-numeric:tabular-nums}.vinyl__title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vinyl__note{margin:0;font-size:var(--fs-xs);color:var(--dim);text-align:center}.vinyl__credit{margin:0;font-size:10px;line-height:1.5;color:var(--sub);text-align:center}.vinyl__close{position:absolute;top:var(--sp-2);right:var(--sp-2);width:20px;height:20px;padding:0;font:inherit;line-height:1;color:var(--sub);background:none;border:1px solid var(--line);cursor:pointer}.vinyl__close:hover,.vinyl__close:focus-visible{color:var(--ink);background:var(--panel)}@media(max-height:720px){.vinyl__tracks{max-height:120px}}@font-face{font-family:"Press Start 2P";src:url(/fonts/press-start-2p.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}.cat{position:relative;display:inline-block;user-select:none;-webkit-user-select:none}.cat__art{margin:0;font-family:var(--mono);font-size:6px;line-height:1;letter-spacing:0;color:var(--dim);text-shadow:0 0 6px rgba(244,244,244,.08);user-select:none;-webkit-user-select:none}.cat__zzz{position:absolute;top:-1.2em;right:22%;font-family:var(--mono);color:var(--sub);font-size:11px;line-height:1;user-select:none;-webkit-user-select:none}.cat__z{position:absolute;right:0;bottom:0;opacity:.85}.cat__z:nth-child(2){right:.7em;bottom:.9em;font-size:1.2em}.cat__z:nth-child(3){right:1.5em;bottom:1.9em;font-size:1.45em}@media(prefers-reduced-motion:no-preference){.cat__z{animation:cat-z 2.7s linear infinite;opacity:0}.cat__z:nth-child(2),.cat__z:nth-child(3){right:0;bottom:0;font-size:1em}}@keyframes cat-z{0%{transform:translate(0) scale(.8);opacity:0}12%{opacity:.9}to{transform:translate(-1.6em,-2.6em) scale(1.5);opacity:0}}.catc{position:absolute;z-index:var(--z-desktop);display:flex;flex-direction:column;align-items:center;pointer-events:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.catc__cat,.catc__plate{pointer-events:auto}.catc__cat{cursor:pointer}.catc:not([data-frame=sleep]) .cat__zzz{display:none}.catc--hero{left:50%;top:14%;transform:translate(-50%);z-index:calc(var(--z-terminal) + 1)}.catc--hero .cat__art{font-size:7px;text-shadow:0 0 10px rgba(244,244,244,.12)}.catc--hero.catc--corner{left:16px;top:16px;transform:none}.catc--hero.catc--corner .cat__art{font-size:4px}.catc--liffy{left:50%;top:10px;transform:translate(-50%);z-index:3}.catc--liffy .cat__art{font-size:4px}.catc--liffy.catc--corner{left:8px;top:8px;transform:none}.catc--liffy.catc--corner .cat__art{font-size:3px}@media(prefers-reduced-motion:no-preference){.catc,.catc .cat__art{transition:left .6s var(--ease-out, ease-out),top .6s var(--ease-out, ease-out),transform .6s var(--ease-out, ease-out),font-size .6s var(--ease-out, ease-out)}.catc--hero .cat__art{transform-origin:50% 100%;animation:cat-breathe 4.2s ease-in-out infinite,cat-glow 3.4s ease-in-out infinite}}@keyframes cat-breathe{0%,to{transform:scaleY(1);opacity:.92}50%{transform:scaleY(1.025) scaleX(1.006);opacity:1}}@keyframes cat-glow{0%,to{text-shadow:0 0 6px rgba(244,244,244,.08)}50%{text-shadow:0 0 14px rgba(244,244,244,.24),0 0 32px rgba(244,244,244,.1)}}.catc__meter{position:relative;width:64px;height:6px;margin-top:5px;border:1px solid var(--line);background:#00000059;opacity:0}.catc--typing .catc__meter{opacity:1}.catc__fill{height:100%;width:0%;background:repeating-linear-gradient(90deg,var(--dim) 0 2px,transparent 2px 3px)}.catc__plate{position:absolute;left:calc(100% + 6px);top:50%;transform:translateY(-50%) scale(.4);width:13px;height:13px;padding:0;border:2px solid var(--dim);border-radius:50%;background:radial-gradient(circle at 30% 35%,var(--sub) 0 1.5px,transparent 2px),radial-gradient(circle at 65% 60%,var(--sub) 0 1.5px,transparent 2px),radial-gradient(circle at 50% 30%,var(--sub) 0 1px,transparent 1.5px),var(--panel);cursor:pointer;opacity:0;pointer-events:none}.catc__plate.is-served{opacity:1;transform:translateY(-50%) scale(1);pointer-events:auto}.catc__plate:hover,.catc__plate:active{border-color:var(--ink)}@media(pointer:coarse){.catc__plate.is-served:after{content:"";position:absolute;inset:-16px}}@media(prefers-reduced-motion:no-preference){.catc__meter{transition:opacity .25s ease}.catc__fill{transition:width .15s linear}.catc__plate{transition:opacity .2s ease,transform .2s var(--ease-out, ease-out)}}.catc__bubble{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);font-family:var(--mono);font-size:10px;letter-spacing:1px;white-space:nowrap;color:var(--ink);background:var(--panel);border:2px solid var(--ink);padding:3px 7px;opacity:0;pointer-events:none;z-index:2}.catc--corner .catc__bubble{bottom:auto;top:calc(100% + 8px);left:0;transform:none;white-space:normal;max-width:min(200px,60vw);overflow-wrap:anywhere}.catc__bubble.is-visible{opacity:1}@media(prefers-reduced-motion:no-preference){.catc__bubble{transition:opacity .18s ease}}@media(prefers-reduced-motion:no-preference){.catc--shake .catc__cat{animation:catc-shake .4s ease-in-out}.catc--hop .catc__cat{animation:catc-hop .5s var(--ease-out, ease-out)}.catc--bob .catc__cat{animation:catc-bob .7s ease-in-out infinite}.catc__cat{transition:transform .3s ease}}.catc--pet .catc__cat{transform:rotate(-4deg) scale(1.03)}@keyframes catc-shake{0%,to{transform:translate(0)}20%{transform:translate(-4px)}40%{transform:translate(4px)}60%{transform:translate(-3px)}80%{transform:translate(3px)}}@keyframes catc-hop{0%,to{transform:translateY(0)}40%{transform:translateY(-10px)}}@keyframes catc-bob{0%,to{transform:translateY(0)}50%{transform:translateY(2px)}}.hero{position:absolute;top:calc(14% + 140px);left:50%;transform:translate(-50%);z-index:var(--z-desktop);display:flex;flex-direction:column;align-items:center;gap:var(--sp-3);pointer-events:none;user-select:none}.hero__title{font-family:"Press Start 2P",var(--mono);font-size:15px;letter-spacing:1px;line-height:1.7;color:var(--ink);min-height:1.7em}.hero__caret{margin-left:5px}.hero__sub{font-size:var(--fs-xs);letter-spacing:2px;text-transform:uppercase;color:var(--sub);opacity:0}.hero__sub.is-visible{opacity:1}.hero--hidden{opacity:0}@media(prefers-reduced-motion:no-preference){.hero{transition:opacity .4s ease}.hero__sub{transition:opacity .6s ease}.hero.is-arriving,.catc--hero.is-arriving{animation:hero-in .8s var(--ease-out, ease-out)}}@keyframes hero-in{0%{opacity:0;transform:translate(calc(-50% - 56px))}60%{opacity:1}to{opacity:1;transform:translate(-50%)}}@media(max-height:560px){body:not(.is-keyboard-open) .hero{display:none}body:not(.is-keyboard-open) .catc--hero:not(.catc--corner){display:none}}body.is-keyboard-open .catc--hero.catc--corner{position:fixed;top:calc(var(--vv-top, 0px) + 8px);left:8px;transition:none}@media(max-width:600px){.catc--hero .cat__art{font-size:5px}.hero{top:calc(14% + 104px);width:92vw}.catc--liffy .cat__art{font-size:3px}.catc--liffy.catc--corner .cat__art{font-size:2px}.hero__title{font-size:11px;text-align:center;letter-spacing:0;overflow-wrap:anywhere}}.terminal__cat .cat__art{font-size:5px;color:var(--dim)}.terminal__cat{margin:var(--sp-2) 0;max-width:100%;overflow-x:auto}.mode-toggle{position:fixed;left:14px;bottom:12px;z-index:calc(var(--z-overlay) + 200);appearance:none;font:inherit;font-size:var(--fs-xs);letter-spacing:.14em;padding:6px 10px;color:var(--dim);background:#0d0d0dd9;border:2px solid var(--line);cursor:pointer}.mode-toggle:hover,.mode-toggle:active{color:var(--bg);background:var(--ink);border-color:var(--ink)}.mode-toggle:focus-visible{outline:2px solid var(--ink);outline-offset:2px}#app{--desktop-inset-bottom: 0px}body.mode-gui #app{--desktop-inset-bottom: var(--gui-taskbar-h)}body.mode-gui .terminal,body.mode-gui .hero,body.mode-gui .catc--hero{display:none}body:not(.mode-gui) .gui{display:none}.gui{position:absolute;inset:0;pointer-events:none}.gui__icons,.gui__taskbar,.gui__menu{pointer-events:auto}.gui__wallpaper{position:absolute;inset:0;z-index:1;pointer-events:none;image-rendering:pixelated}.gui__icons{position:absolute;top:var(--sp-5);left:var(--sp-5);z-index:5;display:grid;grid-template-columns:repeat(2,auto);gap:var(--sp-4) var(--sp-3)}.gui__icon{appearance:none;background:transparent;border:none;font:inherit;color:var(--dim);width:86px;display:flex;flex-direction:column;align-items:center;gap:6px;cursor:pointer;padding:6px 2px}.gui__icon:hover .gui__icon-art,.gui__icon:active .gui__icon-art,.gui__icon:focus-visible .gui__icon-art{background:var(--ink);color:var(--bg);border-color:var(--ink)}.gui__icon:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.gui__icon-art{position:relative;width:70px;height:62px;border:2px solid var(--dim);display:flex;align-items:center;justify-content:center;font-size:11px;letter-spacing:.06em;color:var(--ink);background:var(--panel)}.gui__icon--file .gui__icon-art:after{content:"";position:absolute;top:-2px;right:-2px;width:10px;height:10px;background:var(--bg);border-left:2px solid var(--dim);border-bottom:2px solid var(--dim)}.gui__icon--folder .gui__icon-art:before{content:"";position:absolute;top:-8px;left:-2px;width:20px;height:6px;border:2px solid var(--dim);border-bottom:none;background:var(--panel)}.gui__icon--app .gui__icon-art,.gui__icon--sys .gui__icon-art{border-width:3px;font-size:10px}.gui__icon-label{font-size:var(--fs-xs);letter-spacing:.08em;color:var(--dim)}.gui__icon:hover .gui__icon-label,.gui__icon:active .gui__icon-label{color:var(--ink)}.gui__taskbar{position:absolute;left:0;right:0;bottom:0;z-index:calc(var(--z-window-active) + 50);display:flex;align-items:stretch;gap:var(--sp-2);height:var(--gui-taskbar-h);padding:5px var(--sp-3);background:var(--panel);border-top:2px solid var(--line)}.gui__start{appearance:none;font:inherit;font-size:var(--fs-xs);letter-spacing:.12em;font-weight:700;padding:0 var(--sp-3);color:var(--ink);background:transparent;border:2px solid var(--dim);cursor:pointer}.gui__start:hover,.gui__start:active,.gui__start[aria-expanded=true]{background:var(--ink);color:var(--bg);border-color:var(--ink)}.gui__menu{position:absolute;left:var(--sp-3);bottom:48px;z-index:calc(var(--z-window-active) + 60);min-width:180px;display:flex;flex-direction:column;background:var(--panel);border:2px solid var(--ink);box-shadow:6px 6px 0 var(--shadow);padding:4px}.gui__menu-item{appearance:none;font:inherit;font-size:var(--fs-sm);text-align:left;padding:7px 10px;color:var(--dim);background:transparent;border:none;cursor:pointer;letter-spacing:.06em}.gui__menu-item:hover,.gui__menu-item:active,.gui__menu-item:focus-visible{background:var(--ink);color:var(--bg)}.gui__tasks{flex:1;min-width:0;display:flex;gap:var(--sp-2);overflow-x:auto;scrollbar-width:none}.gui__tasks::-webkit-scrollbar{display:none}.gui__task{appearance:none;font:inherit;font-size:var(--fs-xs);letter-spacing:.08em;padding:0 var(--sp-3);max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--dim);background:transparent;border:2px solid var(--line);cursor:pointer}.gui__task:hover,.gui__task:active{border-color:var(--dim);color:var(--ink)}.gui__task.is-on{background:var(--ink);color:var(--bg);border-color:var(--ink)}.gui__task.is-min{border-style:dashed;opacity:.75}.gui__tray{display:flex;align-items:center;gap:var(--sp-3);font-size:var(--fs-xs);letter-spacing:.1em;color:var(--sub);padding-left:var(--sp-2);border-left:2px solid var(--line)}.gui__tray-cat{cursor:default;user-select:none;-webkit-user-select:none}.gui__clock{color:var(--dim);font-variant-numeric:tabular-nums}body.mode-gui .tray{display:none}@media(max-width:600px){.gui__icons{top:var(--sp-4);left:var(--sp-4);gap:var(--sp-3) var(--sp-2)}.gui__icon{width:72px}.gui__tray-cat{display:none}.mode-toggle{left:calc(10px + env(safe-area-inset-left,0px));bottom:calc(8px + env(safe-area-inset-bottom,0px));padding:5px 8px;letter-spacing:.08em}}
