:root{color-scheme:light dark;--bg:#f7f7f5;--bg-elevated:#fff;--text:#1a1a1a;--text-muted:#5c5c5c;--border:#e2e2de;--accent:#0b5fff;--accent-soft:#e8f0ff;--todo-bg:#fff6e0;--todo-border:#e0b84a;--todo-text:#5c4500;--matte:#0b0d12;--radius:10px;--font:system-ui, -apple-system, "Segoe UI", "Helvetica Neue", Arial, sans-serif;--mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--max:68rem;--pad:clamp(1rem, 3vw, 1.75rem)}@media (prefers-color-scheme:dark){:root{--bg:#0f1115;--bg-elevated:#171a21;--text:#eceef2;--text-muted:#a0a6b3;--border:#2a2f3a;--accent:#6ea0ff;--accent-soft:#1a2740;--todo-bg:#2a2414;--todo-border:#8a7328;--todo-text:#f0d78c}}*,:before,:after{box-sizing:border-box}body{font-family:var(--font);background:var(--bg);color:var(--text);margin:0;line-height:1.6}img,video{max-width:100%;height:auto;display:block}picture{display:contents}a{color:var(--accent);text-underline-offset:.15em}:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.site-header{border-bottom:1px solid var(--border);background:var(--bg)}.site-header__inner,.site-footer__inner,.page{width:min(100% - 2 * var(--pad), var(--max));margin-inline:auto}.site-header__inner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 1rem;padding:.9rem 0;display:flex}.brand{color:var(--text);font-weight:700;text-decoration:none}.back{color:var(--text-muted);font-size:.95rem;text-decoration:none}.page{padding:2rem 0 4rem}.site-footer{border-top:1px solid var(--border);color:var(--text-muted);padding:1.5rem 0 2.5rem;font-size:.9rem}h1,h2,h3{letter-spacing:-.02em;margin:0 0 .75rem;line-height:1.2}h1{font-size:clamp(1.75rem,4vw,2.4rem)}h2{margin-top:2rem;font-size:clamp(1.25rem,2.5vw,1.6rem)}.lede{color:var(--text-muted);max-width:40rem;font-size:1.1rem}.crumb{color:var(--text-muted);font-size:.9rem}.crumb a{color:inherit}.todo{border:1px dashed var(--todo-border);background:var(--todo-bg);color:var(--todo-text);border-radius:var(--radius);font-family:var(--mono);margin:1rem 0;padding:.9rem 1rem;font-size:.9rem}.intro{align-items:center;gap:1rem;margin-bottom:2.5rem;display:flex}.intro__photo{object-fit:cover;object-position:top center;border:2px solid var(--border);border-radius:50%;flex:none;width:72px;height:72px}.intro__name{margin:0;font-size:clamp(1.5rem,3.5vw,2rem)}.intro__bio{color:var(--text-muted);margin:.2rem 0 0}.intro__links{flex-wrap:wrap;gap:.25rem 1rem;margin:.3rem 0 0;font-size:.95rem;display:flex}.tl{gap:1.25rem;margin:0;padding:0;list-style:none;display:grid}.tl__row{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);color:inherit;align-items:center;gap:1rem 1.5rem;padding:1rem;text-decoration:none;display:grid}a.tl__row:hover{border-color:var(--accent)}a.tl__row:hover .tl__title{color:var(--accent)}.tl__row--text{align-items:baseline;padding-block:.9rem}@media (width>=760px){.tl__row--cover{grid-template-columns:58fr 42fr}.tl__row--text{grid-template-columns:9.5rem 1fr}}.tl__media{background:var(--bg);border:1px solid var(--border);border-radius:6px;overflow:hidden}.tl__media img{object-fit:contain;width:100%;max-height:26rem}.tl__title{margin:0;font-size:1.2rem}.tl__period{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;margin:.25rem 0 .5rem;font-size:.8rem}.tl__period--side{color:var(--accent);margin:0;font-weight:600}.tl__body{color:var(--text-muted);margin:0}.tl__body code{font-family:var(--mono);font-size:.9em}.tl__more{color:var(--accent);margin-top:.6rem;font-size:.92rem;display:inline-block}.badge{width:fit-content;font-size:.72rem;font-family:var(--mono);background:var(--accent-soft);color:var(--accent);border-radius:999px;padding:.15rem .45rem;display:inline-block}.prose{max-width:42rem}.prose :where(p,ul,ol){margin:0 0 1rem}.prose :where(ul,ol){padding-left:1.25rem}.prose :where(h2,h3){margin-top:1.75rem}.prose :where(pre,code){font-family:var(--mono);font-size:.9em}.prose pre{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);padding:1rem;overflow-x:auto}.project-cover{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);max-width:800px;margin:1.25rem 0 1.5rem;overflow:hidden}.project-cover img{object-fit:contain;width:100%;max-height:32rem}.project-cover figcaption{color:var(--text-muted);padding:.5rem .85rem;font-size:.85rem}.gallery{grid-template-columns:repeat(auto-fill,minmax(min(100%,14rem),1fr));gap:.75rem;margin:1rem 0;padding:0;list-style:none;display:grid}.gallery--wide{grid-template-columns:repeat(auto-fill,minmax(min(100%,22rem),1fr))}.gallery li,.gallery figure{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);margin:0;overflow:hidden}.gallery a{background:var(--bg);display:block}.gallery img{aspect-ratio:4/3;object-fit:contain;width:100%}.gallery video{background:#000;width:100%}.gallery__cap,.gallery figcaption{color:var(--text-muted);overflow-wrap:anywhere;padding:.4rem .7rem;font-size:.8rem;display:block}.matte,.matte img,.gallery--matte a{background:var(--matte)}.spine{--spine-open:3.4rem;--spine-rest:13.5rem;--spine-band:max(var(--spine-open), var(--spine-rest));box-sizing:border-box;width:100%;height:calc(var(--spine-band) + 1.4rem);min-height:calc(var(--spine-band) + 1.4rem);max-height:calc(var(--spine-band) + 1.4rem);flex-direction:column;justify-content:flex-end;margin:0 0 1.15rem;padding-bottom:1.4rem;display:flex;overflow:visible}.spine ol{width:100%;min-width:0;height:var(--spine-band);min-height:var(--spine-band);max-height:var(--spine-band);border-bottom:2px solid var(--text);flex:none;align-items:flex-end;margin:0;padding:0;list-style:none;display:flex}.spine__month{flex-direction:column;flex:1 1 0;justify-content:flex-end;align-items:center;min-width:0;height:100%;display:flex;position:relative}.spine__month:has(.spine__entries){flex:1 1 var(--rest-w,auto);min-width:var(--rest-w,max-content)}.spine:has(.spine__hit.is-open) .spine__month{flex:1 1 var(--rest-w,0px);min-width:0}.spine:has(.spine__hit.is-open) .spine__month:has(.spine__hit.is-open){flex:none;width:max-content;min-width:max-content;max-width:none}.spine__month:hover,.spine__month:focus-within{z-index:3}.spine__entries{justify-content:center;align-items:flex-end;gap:0;width:max-content;min-width:max-content;max-width:none;height:100%;display:flex}.spine:has(.spine__hit.is-open) .spine__month:has(.spine__hit.is-open) .spine__entries{width:max-content;min-width:max-content;max-width:none}.spine:has(.spine__hit.is-open) .spine__entries{width:100%;min-width:0;max-width:100%}.spine__hit{width:var(--slot,max-content);min-width:var(--slot,max-content);flex:none;align-self:stretch;max-width:none;height:100%;min-height:0;position:relative}.spine:has(.spine__hit.is-open) .spine__hit{flex:1 1 var(--slot);width:auto;min-width:0;max-width:var(--slot)}.spine:has(.spine__hit.is-open) .spine__month:has(.spine__hit.is-open) .spine__hit{flex:0 0 var(--slot);width:var(--slot);min-width:var(--slot);max-width:var(--slot)}.spine:has(.spine__hit.is-open) .spine__month:has(.spine__hit.is-open) .spine__hit.is-open{flex:0 0 var(--open-w);width:var(--open-w);min-width:var(--open-w);max-width:var(--open-w);align-self:stretch;height:100%}.spine__hit:before{content:"";z-index:1;position:absolute;inset:-.35rem -.2rem}.spine__hit.is-open:before{inset:0}.spine__month:has(~.spine__month .spine__hit.is-open) .spine__spin,.spine__hit:has(~.spine__hit.is-open) .spine__spin{left:calc(100% - (var(--slot) - var(--anchor)))}.spine__sq{z-index:2;pointer-events:auto;position:absolute;inset:0}.spine__spin{--off-vertical:15deg;left:var(--anchor,50%);border:1px solid var(--border);corner-shape:squircle;background:var(--bg-elevated);width:max-content;max-width:none;height:max-content;color:var(--text);pointer-events:none;--dip:0px;transform:translateX(-50%) translateY(calc(-1 * var(--dip))) rotate(calc(-90deg + var(--off-vertical)));transform-origin:bottom;border-radius:32%;justify-content:center;align-items:center;gap:.28rem;padding:.22rem .42rem;transition:transform .22s,background .22s,border-color .22s;display:inline-flex;position:absolute;top:auto;bottom:0;overflow:visible}.spine__hit:hover,.spine__hit:focus-within,.spine__hit.is-open{z-index:4}.spine__hit:hover .spine__spin,.spine__hit:focus-within .spine__spin,.spine__hit.is-open .spine__spin{--dip:0px;border-color:var(--accent);background:var(--accent-soft);left:0;transform:translateY(-4px)rotate(0)}.spine__hit.is-dismissed .spine__spin,.spine__hit.is-dismissed:hover .spine__spin,.spine__hit.is-dismissed:focus-within .spine__spin{left:var(--anchor,50%);transform:translateX(-50%) translateY(calc(-1 * var(--dip))) rotate(calc(-90deg + var(--off-vertical)));border-color:var(--border);background:var(--bg-elevated)}.spine__label{white-space:nowrap;letter-spacing:.01em;font-size:1.35rem;font-weight:600;line-height:1.15}.spine__jump{clip:rect(0 0 0 0);background:var(--accent);color:#fff;cursor:pointer;pointer-events:auto;border:0;border-radius:999px;justify-content:center;align-items:center;width:1px;height:1px;margin:-1px;padding:0;display:inline-flex;position:absolute;overflow:hidden}.spine__hit:hover .spine__jump,.spine__hit:focus-within .spine__jump,.spine__hit.is-open .spine__jump{clip:auto;flex:none;width:1.15rem;height:1.15rem;margin:0;position:static;overflow:visible}.spine__hit.is-dismissed .spine__jump,.spine__hit.is-dismissed:hover .spine__jump,.spine__hit.is-dismissed:focus-within .spine__jump{clip:rect(0 0 0 0);width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}.spine__axis-tick{background:var(--text-muted);flex:none;width:1px;height:.42rem;margin:0;position:absolute;top:100%;left:50%;transform:translate(-50%)}.spine__axis-label{color:var(--text-muted);white-space:nowrap;font-size:.62rem;position:absolute;bottom:-1.15rem;left:50%;transform:translate(-50%)}.tl>li{scroll-margin-top:.75rem}
