:root{--paper: #fff;--ink: #263442;--dim: #7c8995;--blue: #296e9c;--red: #b65b4c;--green: #438a76;--sp: 0;--mono: "SF Mono", "Cascadia Code", Consolas, "D2Coding", monospace}*{box-sizing:border-box}.page-pets{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;pointer-events:none;overflow:clip}.page-pets__canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none}.page-pet-hit{position:absolute;left:0;top:0;padding:0;border:0;background:transparent;pointer-events:auto;touch-action:none;cursor:grab;-webkit-tap-highlight-color:transparent}.page-pet-hit[data-state=drag]{cursor:grabbing}.page-pet-hit:focus-visible{outline:1px dashed #8daab9;outline-offset:3px;border-radius:40%}.reader__location{display:flex;flex:1;align-items:center;gap:18px;min-width:0}.reader__location #reader-path{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.reader__scroll>#reader-content:has(.cat-room){height:100%}.reader__scroll .journal-main:has(.cat-room){position:relative;display:flex;flex-direction:column;flex:1 0 300px;min-height:0;padding:0}.cat-greeting{position:absolute;z-index:3;top:22px;left:28px;margin:0;font:clamp(16px,1.2vw,26px)/1.8 var(--mono);color:#527789;pointer-events:none}.cat-room{position:relative;isolation:isolate;flex:1;min-height:250px;overflow:hidden}.cat-room__canvas{position:absolute;top:0;right:0;bottom:0;left:0;display:block;width:100%;height:100%}.cat-room__actors{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden}.cat-room__toy-hit{position:absolute;left:0;top:0;width:44px;height:44px;border:0;padding:0;background:transparent;border-radius:50%;pointer-events:auto}.cat-room__actors .page-pet-hit{cursor:pointer;touch-action:manipulation}.cat-room__fallback{padding-top:60px;color:#8195a1;text-align:center}@media(max-width:600px){.journal-main:has(.cat-room){flex-basis:380px}.reader__location{gap:12px}}html{scroll-behavior:smooth;scroll-padding-top:30px}html,body{margin:0}html[data-boot] .dock{opacity:0;pointer-events:none}html[data-boot] .reader,html[data-boot] .workspace>.term{transition:none;animation:none}#reader[data-initial]{transition:none;animation:none}html[data-boot][data-entry=page] .hero,html[data-boot][data-entry=page] .site-header{visibility:hidden}body{background:var(--paper);color:var(--ink);font-family:var(--mono);-webkit-tap-highlight-color:transparent}button,input{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer}button:disabled{opacity:.45;cursor:default}button:focus-visible,a:focus-visible{outline:2px solid #388bb6;outline-offset:5px}[hidden]{display:none!important}#scene{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:0;display:block;pointer-events:none}.site-header{position:absolute;top:0;left:0;right:0;z-index:3;display:flex;align-items:center;justify-content:space-between;padding:28px 42px}.wordmark{font-family:Segoe UI,system-ui,sans-serif;font-size:clamp(30px,1.55vw,44px);font-weight:650;letter-spacing:-1.6px;color:#283d4b;text-decoration:none}.wordmark span{color:#64acc6}.site-header nav{display:flex;gap:29px;align-items:center}.site-header nav a{color:#647886;text-decoration:none;padding:6px 0;font-size:clamp(14px,.72vw,20px);letter-spacing:.02em}.site-header nav a:hover{color:#21658d}.hero{position:relative;z-index:1;height:100vh;height:100svh}.hero__hint{position:absolute;left:50%;bottom:27px;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;justify-content:flex-end;width:44px;min-height:44px;text-decoration:none;opacity:clamp(0,calc(1 - var(--sp) * 4),1)}.scroll-line{width:1px;height:29px;background:linear-gradient(#87b9cc,#dbeaf0);transform-origin:top;animation:breathe 3.4s ease-in-out infinite}@keyframes breathe{50%{transform:scaleY(.65);opacity:.45}}.hero__coordinate,.hero__note{position:absolute;bottom:39px;font-size:9px;color:#8e9ca5;letter-spacing:.12em;opacity:clamp(0,calc(1 - var(--sp) * 4),1)}.hero__coordinate{left:42px}.hero__note{right:42px;letter-spacing:.04em}.eye-fallback{display:block;position:fixed;left:50%;top:50%;width:min(calc(105% / .91),calc(100svh * 1280 / 851));height:auto;object-fit:contain;transform:translate(-50%,-50%);opacity:clamp(0,calc(1 - var(--sp)),1);pointer-events:none;transition:opacity .12s linear}.scene-ready:not(.scene-fallback) .eye-fallback{opacity:0}.scene-fallback .eye-fallback{display:block;position:absolute;top:50svh;opacity:1}.scene-fallback #scene{display:none}.scene-fallback .term{opacity:1;transform:none}.dock{position:relative;z-index:2;min-height:100svh;padding:clamp(70px,12vh,120px) 24px 45px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:21px}.dock__heading{width:min(960px,100%);display:flex;justify-content:space-between;font-size:10px;color:#8c9aa4;letter-spacing:.09em}.dock__heading span:last-child{letter-spacing:.015em}.term{display:flex;flex-direction:column;width:min(960px,100%);height:min(68vh,650px);min-height:340px;background:#fffffff7;border:1px solid #d7e0e6;border-radius:12px;box-shadow:0 24px 75px -28px #294b683b,0 3px 10px #294b6807;overflow:hidden;opacity:clamp(0,calc(var(--sp) * 1.6),1);transform:translateY(calc((1 - var(--sp)) * 22px))}.term__bar{position:relative;display:flex;align-items:center;justify-content:space-between;height:41px;padding:0 17px;flex:none;background:linear-gradient(#f5f7f8,#e9edef);border-bottom:1px solid #dce3e8}.lights{display:flex;gap:8px;z-index:1}.l{width:12px;height:12px;padding:0;border-radius:50%;border:1px solid #00000012;position:relative}.l:before{position:absolute;width:24px;height:28px;content:"";top:-9px;left:-6px}.l--r{background:#ed8078}.l--y{background:#eac477}.l--g{background:#84baa0}.lights:hover .l--r{background:#ff5f57}.lights:hover .l--y{background:#febc2e}.lights:hover .l--g{background:#28c840}.term__title{position:absolute;left:90px;right:90px;text-align:center;font-size:11px;color:#71808a;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;pointer-events:none}.term__online{color:#92b9a6;font-size:7px}.term__body{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:auto;padding:24px 28px 20px;font-size:13px;line-height:1.65;scrollbar-width:thin;scrollbar-color:#cedce3 transparent;cursor:text}:is(#term-out,[data-pane-id=term-out]){display:flex;flex-direction:column}.row{white-space:pre-wrap;overflow-wrap:anywhere;min-height:1.65em}.row.eyebrow{color:#8196a4;font-size:9px;letter-spacing:.16em;margin-bottom:18px}.row.welcome{font-family:Segoe UI,system-ui,sans-serif;color:#304b5d;font-size:clamp(25px,3vw,32px);line-height:1.25;font-weight:350;letter-spacing:-.9px;min-height:0;margin-bottom:12px}.row.intro-copy{color:#84939d;font-size:12px;margin:8px 0 22px}.row.welcome-links{display:flex;gap:22px;margin-bottom:15px;flex-wrap:wrap}.row.command-row{color:#8c9ca7;margin:20px 0 4px;font-size:12px}.term__line{display:flex;align-items:baseline;flex-wrap:wrap;column-gap:9px;padding:0;margin:20px 0 0}:is(#term-out,[data-pane-id=term-out]):empty+.term__line{margin-top:0}.prompt{color:#43758f;font-size:12px;white-space:nowrap}:is(#term-input,[data-pane-id=term-input]){flex:1;min-width:100px;background:transparent;border:0;outline:none;color:#244b62;font:inherit;caret-color:#468db4;padding:3px 0}:is(#term-input,[data-pane-id=term-input])::placeholder{color:#b1bdc5}.term__line:focus-within .prompt{color:#195f88}.hl,.accent{color:var(--blue)}.dim{color:var(--dim)}.err{color:var(--red)}.ok{color:var(--green)}.file-row{display:flex;gap:24px;align-items:baseline}.directory-row{display:flex;align-items:baseline}.terminal-entry{color:#357da4;overflow-wrap:anywhere;min-width:0}.tree-file{white-space:pre-wrap;font-family:inherit}.file-row .dim{font-size:10px}.cmd-link{color:#357da4;cursor:pointer;background:none;border:0;border-bottom:1px solid #b6d6e7;padding:0;font:inherit;line-height:inherit;text-align:left}.cmd-link:hover{color:#204a64;border-color:#357da4}.term__chips{display:flex;gap:7px;padding:12px 20px;flex:none;flex-wrap:wrap;border-top:1px solid #ecf0f3}.term__chips button,.term__chips>span{font-size:11px;color:#5e7c8e;background:#f8fafb;border:1px solid #e2eaee;border-radius:5px;padding:6px 12px;transition:background .18s,border-color .18s}.term__chips button:hover{background:#edf5f9;border-color:#a7cddd}.term__footer{display:flex;align-items:center;justify-content:space-between;flex:none;padding:8px 20px;border-top:1px solid #edf1f3;color:#91a1aa;background:#fafcfd;font-size:9px}.term__footer i{display:inline-block;width:4px;height:4px;background:#7aa998;border-radius:50%;margin-right:4px}.dock__note{color:#a4afb6;font-size:9px;letter-spacing:.07em;margin:3px 0 0}.restore{padding:18px 30px;border:1px solid #d1e2eb;background:#f6fafc;border-radius:9px;color:#46758e;margin:80px 0}.term.is-maximized{position:fixed;top:18px;right:18px;bottom:18px;left:18px;width:auto;height:auto;z-index:20;opacity:1;transform:none}body.terminal-expanded{overflow:hidden}.cat-friend{color:#467ba0;animation:catHello .7s ease-out;transform-origin:left}@keyframes catHello{0%{opacity:0;transform:translateY(8px)}65%{transform:translateY(-2px)}to{opacity:1;transform:none}}.skip-link{position:fixed;top:-80px;left:16px;padding:12px;background:#fff;z-index:30}.skip-link:focus{top:16px}@media(max-width:640px){.site-header{padding:23px}.site-header nav{gap:19px}.hero__coordinate{left:23px;bottom:30px;font-size:8px}.hero__note{display:none}.hero__hint{bottom:25px;font-size:9px}.dock{padding:60px 14px 30px;gap:17px}.dock__heading{font-size:8px}.dock__heading span:last-child{max-width:42%;text-align:right}.term{height:74svh;min-height:370px;border-radius:10px}.term__body{font-size:12px;padding:20px 17px 18px}.prompt{font-size:11px}:is(#term-input,[data-pane-id=term-input]){font-size:16px}.term__chips{padding:10px 12px;gap:6px}.term__chips button,.term__chips>span{font-size:10px;padding:7px 9px}.term__footer{padding:8px 12px;font-size:8px}.term__footer>span:last-child{font-size:7px}.row.welcome-links{gap:18px}.term.is-maximized{top:8px;right:8px;bottom:8px;left:8px;min-height:0;height:calc(100dvh - 16px)}.eye-fallback{width:100%}}html[data-motion=off]{scroll-behavior:auto}html[data-motion=off] *,html[data-motion=off] *:before{animation:none!important;transition:none!important}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before{animation:none!important;transition:none!important}}.site-role{font-size:clamp(13px,.68vw,19px);color:#82949f;letter-spacing:.03em}.workspace{width:min(2500px,100%);display:grid;grid-template-columns:minmax(0,calc((100% - min(1600px,100%))/2)) minmax(0,1fr) minmax(0,0fr) minmax(0,calc((100% - min(1600px,100%))/2));perspective:1800px;align-items:start;transition:grid-template-columns .72s cubic-bezier(.22,.75,.18,1)}.workspace>.term{grid-column:2;width:100%;transform-origin:left center;transform:translateY(calc((1 - var(--sp)) * 35px)) rotateX(calc((1 - var(--sp)) * 7deg));transition:transform .72s cubic-bezier(.22,.75,.18,1),box-shadow .72s}.workspace.has-reader{grid-template-columns:minmax(0,0px) minmax(0,.82fr) minmax(0,1.3fr) minmax(0,0px)}.workspace.has-reader>.term{transform:none;animation:terminal-aside .72s cubic-bezier(.22,.75,.18,1);box-shadow:-10px 24px 55px -30px #294b6836}@keyframes terminal-aside{0%,to{transform:rotateY(0)}35%{transform:rotateY(4deg)}}.reader{grid-column:3;min-width:0;height:min(84svh,1200px);margin-left:0;opacity:0;visibility:hidden;transform:translate3d(0,16px,-80px) rotateY(-6deg);transform-origin:left center;border:1px solid #dde6eb;border-radius:12px;background:#fff;overflow:hidden;transition:opacity .3s,transform .72s cubic-bezier(.22,.75,.18,1),margin-left .72s,visibility .72s}.has-reader>.reader{margin-left:24px;opacity:1;visibility:visible;transform:none}.reader__bar{height:41px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 20px;border-bottom:1px solid #e8edf0;font-size:10px;color:#8195a1}#reader-path{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.reader__bar button{flex:none;border:0;background:none;color:#527789;padding:8px 0;font-size:10px}.reader__scroll{overflow:auto;overscroll-behavior:auto;scrollbar-width:thin;scrollbar-color:#d4e1e7 transparent;outline-offset:-3px}.journal-nav{display:flex;flex-wrap:wrap;gap:12px 20px;padding:22px 32px;border-bottom:1px solid #edf1f3}.journal-nav a{font-size:10px;color:#81909b;text-decoration:none;padding-bottom:5px;border-bottom:1px solid transparent}.journal-nav a[aria-current]{color:#296e9c;border-color:#296e9c}.journal-nav a:hover{color:#296e9c}.journal-main{padding:45px clamp(24px,3vw,48px) 35px;overflow-wrap:anywhere;font-family:Segoe UI,system-ui,sans-serif}.journal-kicker{font:9px/1.6 var(--mono);letter-spacing:.13em;color:#8297a3;margin:0 0 18px}.journal-main h1{font-size:clamp(36px,4.2vw,60px);line-height:1.12;font-weight:450;letter-spacing:-.055em;margin:0 0 20px}.journal-lead{font-size:14px;line-height:1.85;color:#687e8c;margin:0;word-break:keep-all}.journal-hero{margin-bottom:38px}.journal-main a{color:#296e9c;text-decoration:none}.journal-main a:hover{text-decoration:underline;text-underline-offset:5px}.profile-role{font-size:25px;font-weight:350;letter-spacing:-.04em;color:#466579;margin:0 0 18px}.portfolio-intro{font-size:14px;line-height:1.9;color:#738591;word-break:keep-all}.portfolio-links{display:flex;gap:28px;font-size:12px;margin-top:26px}.portfolio-section{margin-top:45px}.experience-list{margin:0}.experience-list>div{padding:18px 0;border-bottom:1px solid #e7edf0}.experience-list dt{font-size:14px}.experience-list dd{margin:8px 0 0;font-size:12px;color:#82939d}.project-list article,.disclosure-list article{display:flex;gap:24px;padding:28px 0;border-top:1px solid #e2eaee}.project-index,.post-index{font:10px/2 var(--mono);color:#8ca9b9}.project-list h2,.disclosure-list h2{font-size:22px;font-weight:450;line-height:1.4;letter-spacing:-.04em;margin:0 0 12px}.project-list p:not(.journal-kicker),.disclosure-list p:not(.journal-kicker){font-size:13px;line-height:1.8;color:#738591}.project-list a,.project-caption,.section-note{font-size:11px;line-height:1.8;color:#7f929d}.journal-tools{display:flex;align-items:center;justify-content:space-between;gap:16px;border-bottom:1px solid #dce6eb;padding:0 0 14px;margin-top:35px;font:10px var(--mono);color:#8297a3}.search-field{display:flex;align-items:center;gap:16px;flex:1;min-width:0}.search-field>span{flex:none;white-space:nowrap}.search-field input{min-width:0;width:100%;border:0;background:none;padding:8px 0;outline-offset:3px;color:#304e61;font-size:12px}.search-field input::placeholder{color:#91a1ab}.post-count{white-space:nowrap}.tag-filters{display:flex;flex-wrap:wrap;gap:16px;margin:20px 0}.tag-filters button{border:0;background:none;font:10px var(--mono);padding:4px 0;color:#92a2ab}.tag-filters button[aria-pressed=true]{color:#296e9c}.post-card{display:flex;gap:20px;border-bottom:1px solid #e5edf0;padding:28px 0}.post-card-link{display:block;flex:1;min-width:0}.post-card-link:hover{text-decoration:none!important}.post-card h2{font-size:22px;line-height:1.5;font-weight:500;letter-spacing:-.04em;color:#35576c;margin:15px 0 10px}.post-card h2 span{display:inline-block;font-size:17px;transition:transform .25s}.post-card-link:hover h2 span{transform:translate(3px,-3px)}.post-card p{font-size:13px;line-height:1.8;color:#81919c;margin:0 0 18px}.post-card-meta,.article-meta{display:flex;flex-wrap:wrap;gap:12px;align-items:center;font:9px/1.6 var(--mono);color:#8a9ca7}.post-tags{display:flex;flex-wrap:wrap;gap:12px;min-width:0}.post-tags>*{min-width:0;max-width:100%;overflow-wrap:anywhere}.journal-tag{color:#66899e;font:9px/1.6 var(--mono)}.journal-tag:before{content:"#";opacity:.6}.empty-posts{padding:60px 0;text-align:center}.empty-posts>span{font:24px var(--mono);color:#a3bdcc}.empty-posts h2{font-size:16px;font-weight:400;color:#648195;margin-top:25px}.empty-posts p{color:#91a1ab;font-size:12px}.back-link{display:inline-block;margin-bottom:32px;font-size:11px}.article-header h1{font-size:clamp(29px,3vw,44px);line-height:1.3;word-break:keep-all}.article-meta{margin-top:22px}.article-toc{border-block:1px solid #e5edf0;padding:22px 0;margin-top:30px;display:flex;flex-wrap:wrap;gap:10px 20px}.article-toc>span{width:100%;font:9px var(--mono);color:#93a5af;margin-bottom:7px}.article-toc a{font-size:11px}.article-prose{color:#536b7a;font-size:14px;line-height:1.95}.article-prose h2,.article-prose h3{font-size:23px;font-weight:500;color:#304e61;line-height:1.5;margin:40px 0 16px;letter-spacing:-.04em}.article-prose h3{font-size:19px}.article-prose p{margin:22px 0}.article-prose img{display:block;max-width:100%;height:auto;margin:25px auto}.article-prose blockquote{border-left:2px solid #a0c9db;margin:25px 0;padding:0 0 0 20px;color:#7893a3}.article-prose code{font-family:var(--mono);font-size:.86em;background:#f1f6f8;padding:2px 5px;border-radius:3px}.code-block{margin:25px 0;background:#f6f9fa;border:1px solid #e5edf0;border-radius:6px;overflow:hidden}.code-bar{display:flex;justify-content:space-between;padding:9px 14px;border-bottom:1px solid #e5edf0;font:9px var(--mono);color:#8297a3}.code-bar button,.article-end button{border:0;background:none;color:#527e96;font-size:10px}.code-block pre{margin:0;padding:20px;overflow-x:auto;line-height:1.9}.code-block code{background:none;padding:0;font-size:11px}.token-keyword{color:#427ca0}.token-string{color:#56867e}.token-comment{color:#91a1ab}.token-number{color:#af8067}.table-scroll{overflow-x:auto}.article-prose table{width:100%;border-collapse:collapse;font-size:12px}.article-prose th,.article-prose td{text-align:left;padding:12px;border-bottom:1px solid #e1eaef}.article-prose th{font-weight:500;background:#f6f9fa}.article-end{border-top:1px solid #e5edf0;margin-top:45px;padding-top:22px;display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;font-size:11px}.journal-footer{display:flex;justify-content:space-between;gap:16px;padding:20px 32px;border-top:1px solid #edf1f3;color:#94a4ae;font:9px/1.6 var(--mono)}.workspace>.term.is-maximized{position:fixed;width:calc(100vw - 36px);height:calc(100dvh - 36px);top:18px;right:18px;bottom:18px;left:18px;transform:none;animation:none;z-index:20}.workspace:has(.is-maximized){perspective:none}@media(min-width:901px){.dock{padding-inline:32px}.dock__heading{width:min(1200px,100%);font-size:12px}.dock:has(.has-reader) .dock__heading{width:min(2000px,100%)}.workspace>.term{height:min(78svh,960px)}.term__bar,.reader__bar{height:48px}.term__title,.reader__bar,.reader__bar button{font-size:12px}.term__body,.has-reader .term__body{font-size:15px;padding:24px 30px}.prompt,.row.command-row{font-size:14px}.row.welcome{font-size:38px}.row.intro-copy{font-size:14px}.row.eyebrow{font-size:11px}.file-row .dim{font-size:12px}.term__chips{padding:15px 22px;gap:9px}.term__chips button,.term__chips>span{font-size:13px;padding:8px 13px}.term__footer{font-size:11px;padding:10px 22px}.has-reader .term__footer>span:last-child{display:none}.journal-nav{padding:25px 40px;gap:16px 26px}.journal-nav a{font-size:13px}.journal-main{padding:48px clamp(32px,3vw,64px) 44px}.journal-main h1{font-size:clamp(44px,4vw,68px)}.journal-kicker{font-size:11px}.journal-lead,.portfolio-intro,.article-prose{font-size:16px}.profile-role{font-size:30px}.portfolio-links,.back-link,.article-toc a,.article-end{font-size:14px}.project-list h2,.disclosure-list h2,.post-card h2{font-size:27px}.project-list p:not(.journal-kicker),.disclosure-list p:not(.journal-kicker),.post-card p{font-size:15px}.project-list a,.project-caption,.section-note,.search-field input,.tag-filters button{font-size:13px}.experience-list dt{font-size:16px}.experience-list dd{font-size:14px}.journal-tools,.post-card-meta,.article-meta,.journal-tag,.journal-footer{font-size:11px}.code-block code{font-size:13px}.article-header h1{font-size:clamp(36px,3vw,52px)}}@media(max-width:900px){.workspace,.workspace.has-reader{display:flex;flex-direction:column;gap:0;perspective:none}.workspace.has-reader>.term{transform:none;animation:none;height:44svh;min-height:320px}.reader{display:none;width:100%;height:min(85svh,900px);scroll-margin-top:18px}.has-reader>.reader{display:block;margin:24px 0 0}.journal-main{padding:32px 24px}.journal-nav{padding:20px 24px;gap:12px 18px}.workspace>.term.is-maximized{top:8px;right:8px;bottom:8px;left:8px;width:calc(100vw - 16px);height:calc(100dvh - 16px)}}@media(max-width:480px){.site-role{display:none}.journal-nav{gap:12px 16px}.journal-nav a{font-size:9px}.journal-footer{padding:20px 24px;font-size:8px}.reader__bar{padding:0 16px}}@media(prefers-reduced-motion:reduce){.workspace.has-reader>.term{transform:none}}.prompt{max-width:100%;overflow:hidden;text-overflow:ellipsis}@media(min-width:901px){.dock{--window-bar: clamp(48px, 3vw, 64px);padding:clamp(65px,6vh,90px) clamp(24px,2.2vw,64px) 45px}.dock__heading{width:min(1600px,100%);font-size:clamp(12px,.6vw,17px)}.dock:has(.has-reader) .dock__heading{width:min(2500px,100%)}.workspace>.term{height:min(84svh,1200px)}.term__bar,.reader__bar{height:var(--window-bar);padding-inline:clamp(20px,1.2vw,34px)}.term__title,.reader__bar,.reader__bar button{font-size:clamp(12px,.65vw,18px)}.term__body,.has-reader .term__body{font-size:clamp(16px,.85vw,24px);padding:clamp(24px,1.4vw,40px) clamp(28px,1.7vw,48px) clamp(20px,1.2vw,32px)}.prompt,.row.command-row{font-size:clamp(15px,.8vw,22px)}.row.welcome{font-size:clamp(36px,2vw,54px)}.row.eyebrow{font-size:clamp(11px,.6vw,16px)}.row.intro-copy{font-size:clamp(14px,.75vw,21px)}.file-row .dim{font-size:clamp(12px,.65vw,18px)}.term__chips{padding:18px clamp(18px,1.2vw,34px);gap:8px}.term__chips button,.term__chips>span{font-size:clamp(13px,.7vw,19px);padding:10px 14px}.term__footer{font-size:clamp(11px,.55vw,15px);padding:13px 26px}.journal-nav{padding:clamp(24px,1.4vw,40px) clamp(28px,1.8vw,52px);gap:18px clamp(20px,1.4vw,40px)}.journal-nav a{font-size:clamp(13px,.7vw,19px)}.journal-main{padding:clamp(40px,2.3vw,66px) clamp(32px,2.3vw,66px)}.journal-main h1{font-size:clamp(48px,3.2vw,86px)}.journal-kicker{font-size:clamp(11px,.6vw,16px)}.journal-lead,.portfolio-intro,.article-prose{font-size:clamp(17px,.85vw,24px)}.profile-role{font-size:clamp(28px,1.6vw,42px)}.portfolio-links,.back-link,.article-toc a,.article-end{font-size:clamp(14px,.75vw,21px)}.project-list h2,.disclosure-list h2,.post-card h2{font-size:clamp(25px,1.45vw,38px)}.project-list p:not(.journal-kicker),.disclosure-list p:not(.journal-kicker),.post-card p{font-size:clamp(16px,.85vw,23px)}.project-list a,.project-caption,.section-note,.search-field input,.tag-filters button{font-size:clamp(14px,.7vw,20px)}.experience-list dt{font-size:clamp(16px,.9vw,24px)}.experience-list dd{font-size:clamp(14px,.75vw,21px)}.journal-tools,.post-card-meta,.article-meta,.journal-tag,.journal-footer{font-size:clamp(12px,.6vw,17px)}.code-block code{font-size:clamp(13px,.7vw,19px)}.article-prose table{font-size:clamp(14px,.75vw,21px)}.article-header h1{font-size:clamp(36px,2.3vw,64px)}.post-card{padding:clamp(28px,1.5vw,44px) 0}.empty-posts h2{font-size:clamp(18px,1vw,26px)}.empty-posts p{font-size:clamp(14px,.75vw,20px)}}@media(prefers-reduced-motion:no-preference){html[data-motion=on]:not(.scene-fallback) .hero{height:200svh}html[data-motion=on]:not(.scene-fallback) .hero__hint{position:fixed}html[data-motion=on]:not(.scene-fallback) .term:not(.is-maximized){opacity:1}html[data-motion=on]:not(.scene-fallback) .workspace:not(.has-reader)>.term:not(.is-maximized){transform:none}html.diving .workspace:not(:has(.is-maximized)){transform:translate(var(--term-x, 0px),calc(var(--term-y, 0px) - var(--term-pin, 0px))) scale(var(--term-scale, 1));transform-origin:center;opacity:var(--term-fade, 1);will-change:transform,opacity}}.hero{cursor:pointer}.hero__cue{font-size:10px;letter-spacing:.28em;text-transform:uppercase;color:#7fa3b5;margin-bottom:9px;padding-left:.28em}.dock{cursor:pointer}.dock .workspace>*,.dock .restore{cursor:auto}.dock .restore{cursor:pointer}html{scrollbar-gutter:stable}html.traveling{overflow:hidden}@media(prefers-reduced-motion:no-preference){html[data-motion=on]:not(.scene-fallback) .hero{touch-action:none}}.term__body,.reader__scroll{overscroll-behavior:contain}.page-pets{transition:opacity .2s}@media(min-width:901px){.workspace:not(.has-reader){grid-template-columns:minmax(0,calc((100% - min(640px,100%))/2)) minmax(0,1fr) minmax(0,0fr) minmax(0,calc((100% - min(640px,100%))/2))}.workspace>.term{transition:transform .72s cubic-bezier(.22,.75,.18,1),box-shadow .72s,height .72s cubic-bezier(.22,.75,.18,1)}.workspace:not(.has-reader)>.term:not(.is-maximized){height:min(76svh,740px)}}@media(min-width:901px){.dock{--cat: clamp(118px, 6.5vw, 168px);--above: max(96px, calc(var(--cat) * .7 + 10px));--below: calc(var(--cat) * .7 + 18px);justify-content:flex-end;padding-top:var(--above);padding-bottom:var(--below)}.workspace>.term,.workspace>.reader{height:min(calc(100svh - var(--above) - var(--below)),1200px)}.workspace:not(.has-reader)>.term:not(.is-maximized){height:min(calc(100svh - var(--above) - var(--below)),740px)}.term__body,.has-reader .term__body{font-size:clamp(14px,.74vw,20px);padding:clamp(20px,1.2vw,34px) clamp(24px,1.5vw,42px) clamp(18px,1vw,28px)}.prompt,.row.command-row{font-size:clamp(13px,.7vw,19px)}.row.welcome{font-size:clamp(28px,1.6vw,44px)}.term__chips{padding:14px clamp(16px,1vw,28px)}.term__chips button,.term__chips>span{font-size:clamp(12px,.62vw,17px);padding:8px 12px}.term__footer{font-size:clamp(10px,.5vw,14px);padding:10px 22px}}@media(min-width:901px){.dock{--window-bar: clamp(40px, 2.4vw, 54px)}.workspace.has-reader{grid-template-columns:minmax(0,4%) minmax(0,.8fr) minmax(0,1.25fr) minmax(0,4%)}.term__title,.reader__bar,.reader__bar button{font-size:clamp(11px,.58vw,16px)}.term__body,.has-reader .term__body{font-size:clamp(13px,.68vw,18px);padding:clamp(18px,1.1vw,30px) clamp(22px,1.4vw,38px) clamp(16px,.9vw,24px)}.prompt,.row.command-row{font-size:clamp(12px,.64vw,17px)}.row.command-row{margin:14px 0 3px}.term__line{margin-top:14px}.row.welcome{font-size:clamp(24px,1.4vw,38px);margin-bottom:8px}.term__chips{padding:10px clamp(14px,.9vw,24px);gap:6px}.term__chips button,.term__chips>span{font-size:clamp(11px,.58vw,16px);padding:6px 10px}.term__footer{font-size:clamp(10px,.48vw,13px);padding:7px 18px}.journal-nav{padding:clamp(12px,.8vw,22px) clamp(24px,1.6vw,44px);gap:8px clamp(16px,1.1vw,30px)}.journal-nav a{font-size:clamp(12px,.62vw,17px);padding-bottom:3px}.journal-main{padding:clamp(22px,1.5vw,42px) clamp(24px,1.6vw,44px) clamp(16px,1vw,28px)}.journal-kicker{font-size:clamp(10px,.52vw,14px);margin-bottom:8px}.journal-main h1{font-size:clamp(30px,2.1vw,56px);margin-bottom:10px}.journal-hero{margin-bottom:18px}.journal-lead,.portfolio-intro,.article-prose{font-size:clamp(14px,.74vw,20px);line-height:1.7}.profile-role{font-size:clamp(20px,1.2vw,32px);margin-bottom:10px}.portfolio-section{margin-top:22px}.portfolio-links,.back-link,.article-toc a,.article-end{font-size:clamp(13px,.66vw,18px)}.portfolio-links{margin-top:12px}.back-link{margin-bottom:16px}.post-card{padding:clamp(11px,.7vw,20px) 0;gap:14px}.project-list h2,.disclosure-list h2,.post-card h2{font-size:clamp(17px,1vw,28px);margin:4px 0 2px;line-height:1.35}.project-list p:not(.journal-kicker),.disclosure-list p:not(.journal-kicker),.post-card p{font-size:clamp(13px,.68vw,18px);line-height:1.6;margin-bottom:4px}.project-list a,.project-caption,.section-note,.search-field input,.tag-filters button{font-size:clamp(12px,.62vw,17px)}.experience-list dt{font-size:clamp(14px,.76vw,20px)}.experience-list dd{font-size:clamp(12px,.66vw,18px)}.journal-tools{margin-top:16px;padding-bottom:8px}.tag-filters{margin:10px 0}.journal-tools,.post-card-meta,.article-meta,.journal-tag,.journal-footer{font-size:clamp(10px,.52vw,15px)}.journal-footer{padding:10px clamp(24px,1.6vw,44px)}.article-header h1{font-size:clamp(26px,1.7vw,46px)}.article-prose h2,.article-prose h3{font-size:clamp(18px,1.05vw,26px);margin:26px 0 10px}.article-prose h3{font-size:clamp(16px,.9vw,22px)}.article-prose p{margin:14px 0}.code-block code{font-size:clamp(12px,.62vw,17px)}.article-prose table{font-size:clamp(13px,.66vw,18px)}.empty-posts{padding:28px 0}.journal-hero+.post-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 clamp(14px,1vw,28px);border-top:1px solid #e5edf0}.journal-hero+.post-list .post-card{border-bottom:0}}.page-body>:first-child{margin-top:0}.page-body p{margin:10px 0}.page-body h3{margin:16px 0 4px}.page-body ul,.page-body ol{margin:8px 0;padding-left:1.1em}.page-body .table-scroll{margin-top:4px}.page-body th,.page-body td{padding:6px 10px}.page-body table{font-size:clamp(12px,.62vw,17px)}.page-body td:first-child{white-space:nowrap}@media(min-width:901px){.page-body p{margin:8px 0}.journal-hero{margin-bottom:12px}.journal-main{padding-top:16px;padding-bottom:8px}.journal-main #contact.portfolio-section{margin-top:12px}.journal-footer{padding-block:6px}}@media(min-width:901px){.page-body p{margin:6px 0}.journal-main h1{margin-bottom:6px}}.facts{margin:0;padding:0;font-size:14px;line-height:1.6;color:#536b7a;font-family:Segoe UI,system-ui,sans-serif}.facts>div{display:grid;grid-template-columns:5.8em minmax(0,1fr);gap:0 14px;align-items:baseline;padding:5px 0;border-top:1px solid #e9eff2}.facts dt{font:10px/1.6 var(--mono);letter-spacing:.12em;color:#8297a3;text-transform:uppercase}.facts dd{margin:0;min-width:0;display:flex;flex-wrap:wrap;gap:0 16px;overflow-wrap:anywhere}.facts dd>span{display:inline-block;max-width:100%}.facts a{color:#296e9c;text-decoration:none}.about-layout{display:grid;width:100%;max-width:72rem;margin:auto;flex:none;grid-template-columns:clamp(136px,13vw,200px) minmax(0,1fr);gap:0 clamp(18px,1.8vw,36px);align-items:start}.about-photo{margin:0;aspect-ratio:4 / 5;border-radius:12px;overflow:hidden;display:grid;place-items:center;background:linear-gradient(160deg,#eaf3f6,#f7eeee);border:1px solid #dde8ed}.about-photo img{width:100%;height:100%;min-height:0;object-fit:cover;object-position:center 20%;display:block}.about-photo.is-empty span{font:600 clamp(26px,2.4vw,44px) "Segoe UI",system-ui,sans-serif;letter-spacing:.06em;color:#8fb6c4}.about-main{min-width:0;overflow-wrap:anywhere}.about-main .journal-hero{margin-bottom:10px}@media(min-width:901px){.facts{font-size:clamp(14px,.74vw,20px)}.facts dt{font-size:clamp(10px,.52vw,14px)}}.about-side{min-width:0}.about-contact{list-style:none;margin:12px 0 0;padding:0;font:12px/1.75 Segoe UI,system-ui,sans-serif;color:#647886}.about-contact li{overflow-wrap:anywhere}.about-contact a{color:inherit;text-decoration:none}.about-contact a:hover{color:#296e9c;text-decoration:underline;text-underline-offset:3px}.reader__scroll>#reader-content{min-height:100%;display:flex;flex-direction:column}.journal-main{flex:1 0 auto}.journal-footer{margin-top:auto}.journal-main:has(.about-layout){display:flex;flex-direction:column;justify-content:flex-start}@media(min-width:901px){.about-contact{font-size:clamp(12px,.62vw,17px)}}.workspace.has-reader>.term{display:none}.workspace:not(.has-reader)>.reader{display:none}@media(min-width:901px){.workspace.has-reader{grid-template-columns:minmax(0,calc((100% - min(1500px,100%))/2)) minmax(0,1fr) minmax(0,0fr) minmax(0,calc((100% - min(1500px,100%))/2))}.workspace.has-reader>.reader{grid-column:2;margin-left:0}}@media(max-width:900px){.has-reader>.reader{margin-top:0}.dock:has(.has-reader){padding:16px;min-height:100svh;justify-content:flex-start}.has-reader>.reader{height:calc(100svh - 32px)}.journal-main:has(.about-layout){padding:20px 24px}.about-layout{grid-template-columns:minmax(136px,28%) minmax(0,1fr);gap:24px}.about-photo{width:min(100%,160px);margin-bottom:0}.about-main h1{font-size:clamp(28px,4.2vw,38px)}.journal-nav{padding-block:14px}.journal-nav a{font-size:12px}.journal-footer{padding-block:10px}}@media(max-width:540px){.dock:has(.has-reader){padding:12px}.has-reader>.reader{height:calc(100svh - 24px)}.journal-main:has(.about-layout){padding:20px}.about-layout{grid-template-columns:minmax(0,1fr);gap:24px}.about-side{display:grid;grid-template-columns:minmax(0,104px) minmax(0,1fr);gap:16px;align-items:center}.about-contact{margin-top:0}.facts>div{grid-template-columns:minmax(0,1fr);gap:4px;padding-block:10px}}.reader{container-type:size}@media(min-width:901px){.reader__scroll{--s: clamp(12px, min(1.45cqw, 2.55cqh), 30px)}.reader__scroll .journal-nav{padding:calc(var(--s) * .7) calc(var(--s) * 1.7)}.reader__scroll .journal-nav a{font-size:calc(var(--s) * .78)}.reader__scroll .journal-main{padding:calc(var(--s) * 1.1) calc(var(--s) * 1.7) calc(var(--s) * .5)}.reader__scroll .journal-kicker{font-size:calc(var(--s) * .62);margin-bottom:calc(var(--s) * .6)}.reader__scroll .journal-main h1{font-size:calc(var(--s) * 2.5);margin-bottom:calc(var(--s) * .35)}.reader__scroll .journal-lead{font-size:calc(var(--s) * .92)}.reader__scroll .journal-hero{margin-bottom:calc(var(--s) * .8)}.reader__scroll .page-body,.reader__scroll .facts{font-size:calc(var(--s) * .88)}.reader__scroll .page-body table{font-size:calc(var(--s) * .82)}.reader__scroll .page-body th,.reader__scroll .page-body td{padding:calc(var(--s) * .4) calc(var(--s) * .7)}.reader__scroll .facts dt{font-size:calc(var(--s) * .62)}.reader__scroll .facts>div{padding:calc(var(--s) * .5) 0}.reader__scroll .about-layout{grid-template-columns:calc(var(--s) * 11.5) minmax(0,1fr);gap:0 calc(var(--s) * 2.2)}.reader__scroll .about-contact{font-size:calc(var(--s) * .82)}.reader__scroll .journal-footer{font-size:calc(var(--s) * .62);padding:calc(var(--s) * .4) calc(var(--s) * 1.7)}}html .dock{--stage-gap: min(48px, 6svh);--above: var(--stage-gap);--below: var(--stage-gap);height:100svh;min-height:0;padding-block:var(--stage-gap);justify-content:center}.workspace{min-height:0;transition:none}.workspace>.term:not(.is-maximized){min-height:0;max-height:calc(100svh - var(--above) - var(--below));transition-property:transform,box-shadow}.workspace>.reader{min-height:0}.workspace.has-reader>.reader{display:flex;flex-direction:column}.reader__bar{flex:none;min-height:min-content}.reader__scroll{flex:1;min-height:0;height:auto}.journal-main,.article-page,.page-body{min-width:0}.portfolio-links{flex-wrap:wrap}.dock>.restore{margin-block:0;max-width:100%}@media(max-width:900px){html .dock{--stage-gap: 16px}}@media(max-width:540px){html .dock{--stage-gap: 12px}}@media(min-width:901px){.reader__scroll:has(.journal-subnav){--s: clamp(12px, min(1.45cqw, 2.4cqh), 30px)}}@media(min-width:901px){.reader__scroll .article-prose:not(.page-body){font-size:calc(var(--s) * .88);line-height:1.75}.reader__scroll .article-prose:not(.page-body) h2{font-size:calc(var(--s) * 1.3);margin:calc(var(--s) * 1.4) 0 calc(var(--s) * .5)}.reader__scroll .article-prose:not(.page-body) h3{font-size:calc(var(--s) * 1.05);margin:calc(var(--s) * 1.1) 0 calc(var(--s) * .4)}.reader__scroll .article-prose:not(.page-body) p{margin:calc(var(--s) * .7) 0}.reader__scroll .article-prose:not(.page-body) table{font-size:calc(var(--s) * .82)}.reader__scroll .article-prose:not(.page-body) th,.reader__scroll .article-prose:not(.page-body) td{padding:calc(var(--s) * .4) calc(var(--s) * .7)}.reader__scroll .article-header h1{margin-bottom:calc(var(--s) * .8)}.reader__scroll .back-link{font-size:calc(var(--s) * .8);margin-bottom:calc(var(--s) * 1)}.reader__scroll .article-end{font-size:calc(var(--s) * .8)}.reader__scroll .post-card h2{font-size:calc(var(--s) * 1.4)}.reader__scroll .post-card{padding:calc(var(--s) * .9) 0}}.workspace>.term{opacity:1;transform:none}.term__body.maintenance-notice{display:flex;flex-direction:column;padding-block:min(20px,3svh);cursor:auto;outline:none}.maintenance-notice h1{margin:auto;max-width:100%;text-align:center;overflow-wrap:anywhere;font-family:Segoe UI,system-ui,sans-serif;font-size:clamp(36px,4vw,64px);line-height:1.2;font-weight:350;letter-spacing:-.04em;color:#304b5d}@media(scripting:none){html[data-operation=stopped] .hero{height:100svh}html[data-operation=stopped] .hero__hint{position:absolute}.eye-fallback{position:absolute;top:50svh}}
