/*
Theme Name: Rohlik Classic
Theme URI: https://rohlik.net
Author: Fabian Rohlik
Description: A classic PHP WordPress theme port of Fabian Rohlik's personal site.
Version: 2.4.1
Requires at least: 6.5
Requires PHP: 8.0
Text Domain: rohlik-classic
*/

@font-face{font-family:Inter;src:url("assets/fonts/font-sans-400-normal-latin-e868cdf4720e9ea5.woff2") format("woff2");font-weight:400;font-display:swap}@font-face{font-family:Inter;src:url("assets/fonts/font-sans-500-normal-latin-e868cdf4720e9ea5.woff2") format("woff2");font-weight:500;font-display:swap}@font-face{font-family:Inter;src:url("assets/fonts/font-sans-600-normal-latin-e868cdf4720e9ea5.woff2") format("woff2");font-weight:600;font-display:swap}@font-face{font-family:Newsreader;src:url("assets/fonts/font-serif-400-normal-latin-9725b47eb217448c.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Newsreader;src:url("assets/fonts/font-serif-400-italic-latin-9cc4d5255062373d.woff2") format("woff2");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:"IBM Plex Mono";src:url("assets/fonts/font-mono-400-normal-latin-d39725b5b6a6f2ec.woff2") format("woff2");font-weight:400;font-display:swap}
:root{color-scheme:light;--bg:oklch(98.8% .0012 250);--bg-sunken:oklch(96.6% .0016 250);--bg-raised:#fff;--fg:oklch(21% .002 250);--fg-muted:oklch(49% .003 250);--fg-faint:oklch(65% .003 250);--fg-ghost:oklch(79% .002 250);--fg-intro-link:oklch(41% .003 250);--fg-list-date:oklch(86% .002 250);--rule:oklch(90.5% .0015 250);--rule-strong:oklch(84% .002 250);--accent:oklch(48% .02 250);--selection:oklch(60% .02 250/.18);--face-sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Inter,sans-serif;--face-serif:Newsreader,Georgia,serif;--face-mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,monospace;--step--1:clamp(.72rem,.7rem + .09vw,.76rem);--step-0:clamp(.875rem,.85rem + .13vw,.93rem);--step-1:clamp(.95rem,.91rem + .2vw,1.03rem);--step-2:clamp(1.15rem,1.08rem + .35vw,1.35rem);--step-3:clamp(1.45rem,1.25rem + .95vw,2.05rem);--shell:34rem;--gutter:clamp(1.25rem,5vw,2rem);--radius:10px;--pill:999px;--ease:cubic-bezier(.22,.61,.36,1);--out:cubic-bezier(.16,1,.3,1);--fast:140ms;--mid:260ms;--slow:520ms}
:root[data-theme=dark]{color-scheme:dark;--bg:oklch(16.5% 0 0);--bg-sunken:oklch(13.8% 0 0);--bg-raised:oklch(20.5% 0 0);--fg:oklch(93% 0 0);--fg-muted:oklch(70% 0 0);--fg-faint:oklch(56% 0 0);--fg-ghost:oklch(40% 0 0);--fg-intro-link:#ccc;--fg-list-date:oklch(32% 0 0);--rule:oklch(26.5% 0 0);--rule-strong:oklch(34% 0 0);--accent:oklch(80% 0 0);--selection:oklch(80% 0 0/.22)}
*,*::before,*::after{box-sizing:border-box}*{margin:0}html{scrollbar-gutter:stable;overscroll-behavior-y:none;-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--fg);font:var(--step-0)/1.65 var(--face-sans);min-height:100svh;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}body.drawer-open{overflow:hidden}::selection{background:var(--selection)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:3px}:target{scroll-margin-block-start:5rem}a{color:inherit;text-decoration:none}input,button,textarea,select{font:inherit;color:inherit}img,picture,svg,video{display:block;max-width:100%;height:auto}.shell{width:100%;max-width:calc(var(--shell) + var(--gutter) * 2);margin-inline:auto;padding-inline:var(--gutter)}.page-frame{min-height:100svh;background:var(--bg);transition:transform .48s var(--out),border-radius .48s var(--out),filter .48s var(--out)}.page-document{min-height:100svh;display:flex;flex-direction:column;position:relative;isolation:isolate}main{flex:1;padding-block:clamp(2.5rem,7vw,4.5rem) 0;overflow-x:clip}.skip{position:absolute;z-index:100;top:-5rem;left:.5rem;padding:.4rem .8rem;border-radius:var(--radius);background:var(--bg-raised);border:1px solid var(--rule);transition:top var(--mid) var(--out)}.skip:focus{top:.5rem}@media(prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}
.link,.prose a{color:var(--fg-muted);text-decoration:underline transparent .75px;text-underline-offset:.22em;transition:color var(--fast) var(--ease),text-decoration-color var(--mid) var(--ease)}.link:hover,.link:focus-visible,.prose a:hover,.prose a:focus-visible{color:var(--fg);text-decoration-color:color-mix(in srgb,currentColor 70%,transparent)}.pill{display:inline-flex;align-items:center;gap:.4rem;padding:.28rem .7rem;border-radius:var(--pill);background:var(--bg-sunken);color:var(--fg-muted);font-size:var(--step--1);line-height:1.4;border:1px solid transparent;transition:all var(--fast) var(--ease)}.pill:hover{background:var(--bg-raised);border-color:var(--rule);color:var(--fg)}
.home-layout{padding-top:clamp(8rem,18vh,13rem)}.identity{display:flex;flex-wrap:wrap;align-items:baseline;gap:.4rem}.identity h1{font-size:var(--step-0);font-weight:500;letter-spacing:-.015em}.place{color:var(--fg-faint)}.intro{margin-block:.9rem clamp(2.25rem,8vh,4rem);display:grid;gap:.55rem}.lede{color:var(--fg-muted)}.lede .link{color:color-mix(in oklch,var(--fg-intro-link) 88%,var(--fg) 12%)}.section-title,.archive-title{font-size:var(--step-0);font-weight:400;letter-spacing:-.015em;color:var(--fg-faint);margin-bottom:1.1rem}.more{margin-top:1.1rem}.posts{--divider:color-mix(in srgb,var(--rule) 72%,transparent);list-style:none;padding:0;border-block:1px solid var(--divider)}.posts li+li{border-top:1px solid var(--divider)}.post-row{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;padding-block:.65rem;transition:opacity 340ms cubic-bezier(.4,0,.2,1)}.post-date{flex:none;font: .94em var(--face-mono);letter-spacing:.02em;text-transform:uppercase;color:var(--fg-list-date)}@media(hover:hover){.posts:has(.post-row:hover) .post-row:not(:hover){opacity:.28;transition-delay:60ms}}
.site-footer{padding-block:clamp(3.5rem,9vw,6rem) 3rem;font-size:var(--step--1);color:var(--fg-faint)}.footer-inner{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.75rem 1.5rem}.footer-city{color:var(--fg-ghost)}.footer-clock{font-family:var(--face-mono);font-variant-numeric:tabular-nums}.footer-links{display:flex;gap:1rem;list-style:none;padding:0}
.archive-heading{margin-bottom:clamp(1.75rem,6vh,3rem);transform:translateY(1rem)}.archive-back{display:flex;margin-bottom:clamp(2.5rem,8vw,4rem)}@media(min-width:58rem){.archive-back{width:max-content;transform:translate(calc(-100% - 1.5rem),calc(50% + clamp(2.5rem,8vw,4rem) + .6em));white-space:nowrap}}
.post-chrome{--rule-gap:clamp(1rem,4vw,2rem);display:grid;grid-template-columns:1fr auto;align-items:center;gap:1.25rem 1rem}.rail-right{justify-self:end}.ruled{grid-column:1/-1;box-sizing:content-box;padding-inline:var(--rule-gap);margin-inline:calc(-1 * (var(--rule-gap) + 1px));padding-top:var(--rule-gap);border-inline:1px dashed var(--rule);border-top:1px dashed var(--rule)}.post-head{padding-bottom:1.25rem}.post-head h1{font:400 var(--step-3)/1.14 var(--face-serif);letter-spacing:-.022em}.post-meta{margin-top:.7rem;font:italic var(--step-0) var(--face-serif);color:var(--fg-faint)}.edge{border-top:1px dashed var(--rule);margin-inline:calc(-1 * var(--rule-gap));margin-bottom:2rem}.edge.end{margin-block:2.5rem 0}.progress{position:fixed;z-index:30;top:0;left:0;height:1px;width:var(--reading-progress,0%);background:color-mix(in srgb,var(--fg) 42%,transparent)}@media(min-width:58rem){.post-chrome{display:block;position:relative}.post-chrome>.rail{position:absolute;top:0;width:max-content;white-space:nowrap}.post-chrome>.rail-left{right:calc(100% + var(--rule-gap) + 1.5rem)}.post-chrome>.rail-right{left:calc(100% + var(--rule-gap) + 1.5rem)}}
.prose{font:var(--step-1)/1.72 var(--face-serif);color:var(--fg)}.prose>*+*{margin-top:1.15em}.prose h2,.prose h3{font-family:var(--face-sans);margin-top:2.4em;margin-bottom:.2em;position:relative}.prose h2{font-size:var(--step-1);padding-bottom:.5rem;border-bottom:1px dashed var(--rule)}.prose h3{font-size:var(--step-0);color:var(--fg-muted)}.prose .anchor{position:absolute;right:100%;padding-right:.5rem;color:var(--fg-ghost);opacity:0;transition:opacity var(--fast) var(--ease);font-weight:400}.prose .anchor::before{content:"#"}.prose :is(h2,h3):hover .anchor,.prose :is(h2,h3) .anchor:focus-visible{opacity:1}.prose strong{font-weight:600}.prose blockquote{border-left:2px solid var(--rule-strong);padding-left:1.1rem;color:var(--fg-muted);font-style:italic}.prose ul,.prose ol{padding-left:1.3rem}.prose li+li{margin-top:.35em}.prose li::marker{color:var(--fg-ghost)}.prose hr{border:0;border-top:1px dashed var(--rule);margin-block:2.4em}.prose :not(pre)>code{font: .82em var(--face-mono);padding:.12em .38em;border-radius:5px;background:var(--bg-sunken);border:1px solid var(--rule);white-space:nowrap}.prose pre{font-size:.8em;line-height:1.6;padding:1rem var(--rule-gap,1.1rem);margin-inline:calc(-1 * var(--rule-gap,0px));overflow:auto;background:var(--bg-sunken);white-space:pre}.prose figure{margin-block:2em}.prose figcaption{font:var(--step--1) var(--face-sans);color:var(--fg-faint);margin-top:.6rem;text-align:center}.prose img{border:1px solid var(--rule);width:100%}.prose>p:first-of-type::first-letter{float:left;font-size:3.53em;line-height:.826;margin-top:.143em;margin-left:-.035em;margin-right:.1em}.wp-block-gallery{display:grid;grid-template-columns:repeat(2,1fr);gap:.65rem}.wp-block-gallery img{height:100%;object-fit:cover}.shot,.video-embed,.youtube,.tweet{margin-inline:calc(-1 * var(--rule-gap,0px))}.video-embed video,.youtube iframe{width:100%;aspect-ratio:16/9;border:1px solid var(--rule)}
.post-hero{height:clamp(8rem,24vw,11rem);margin-inline:calc(-1 * var(--rule-gap));border-bottom:1px dashed var(--rule);position:relative;overflow:hidden;background:var(--bg-sunken)}.post-hero canvas{width:100%;height:100%}
.entry-page h1{font:400 var(--step-3)/1.14 var(--face-serif);margin-bottom:1.25rem}.entry-page .lede{font:var(--step-1)/1.72 var(--face-serif)}.entry-page .body{margin-top:1rem}.entry-links{margin-top:2.5rem;display:grid;gap:.6rem}.entry-links a{padding:.9rem 1rem;border-block:1px solid var(--rule);display:flex;justify-content:space-between}
#top-grain-wave{position:absolute;inset:0 0 auto;z-index:-1;width:100%;height:clamp(14rem,42vw,25rem);opacity:.18;pointer-events:none;mask-image:linear-gradient(#000 0 18%,transparent 100%)}:root[data-theme=dark] #top-grain-wave{opacity:.13}
.drawer-backdrop{position:fixed;inset:0;z-index:80;background:rgba(0,0,0,.72);opacity:0;pointer-events:none;transition:opacity .42s var(--ease)}.drawer{position:fixed;z-index:81;inset:5vh 0 0;background:var(--bg);border-radius:22px 22px 0 0;transform:translateY(105%);transition:transform .52s var(--out);overflow:auto;overscroll-behavior:contain}.drawer-handle{position:sticky;z-index:4;top:0;height:44px;background:linear-gradient(var(--bg) 70%,transparent);display:grid;place-items:center}.drawer-handle button{font-size:0;width:56px;height:12px;border:0;background:transparent;cursor:pointer}.drawer-handle button::after{content:"";display:block;width:52px;height:7px;border:2px solid var(--fg-faint);border-radius:99px}.drawer-content{padding-bottom:4rem}.drawer-open .drawer-backdrop{opacity:1;pointer-events:auto}.drawer-open .drawer{transform:none}.drawer-open .page-frame{transform:translateY(1.25rem) scale(.94);border-radius:22px;overflow:hidden;filter:brightness(.8)}.drawer .rail,.drawer .progress,.drawer .site-footer{display:none}
@media(max-width:46rem){.post-chrome{--rule-gap:0px}.ruled{border-inline:0}.gallery{grid-template-columns:1fr}.footer-links{gap:.7rem;flex-wrap:wrap}.drawer{inset:4vh 0 0}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}

/* Rendered MDX figure components. These deliberately use their semantic
   component classes so content remains editable as ordinary post HTML. */
.prose .figure{margin-block:2.25em;margin-inline:calc(-1 * var(--rule-gap,0px))}.prose .figure>.frame{padding:clamp(1.5rem,5vw,2rem);background:var(--bg-sunken)}.focusdemo,.wrapdemo,.costcurves,.agentlanes,.middleman,.threadcompare,.swatches{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(11rem,1fr))}.focusdemo .pane,.wrapdemo .pane{display:grid;gap:.65rem;justify-items:start}.figure .tag{font:var(--step--1) var(--face-mono);letter-spacing:.04em;color:var(--fg-ghost)}.focusdemo .btn{font:var(--step--1) var(--face-sans);padding:.4rem .9rem;border-radius:var(--radius);border:1px solid var(--rule-strong);background:var(--bg-raised)}.focusdemo .btn--ring{animation:focus-ring 3s var(--ease) infinite}.wrapdemo .sample{font:500 var(--step-0)/1.25 var(--face-sans);margin:0}.wrapdemo .sample--on{text-wrap:balance}@keyframes focus-ring{0%,30%,100%{box-shadow:0 0 0 0 transparent}45%,85%{box-shadow:0 0 0 2px var(--bg-sunken),0 0 0 4px var(--fg)}}.barchart,.terminal,.costcurves,.agentlanes,.middleman,.threadcompare,.swatches{font-family:var(--face-sans)}.barchart [class*=bar],.costcurves [class*=bar],.agentlanes [class*=lane]{border-radius:4px;background:color-mix(in oklch,var(--fg) 12%,transparent)}

/* A compact article hero matches the source's drawer and single-post rhythm. */
.post-hero{height:clamp(7rem,18vw,8rem)}

/* Keep the off-canvas sheet entirely out of screenshots and accessibility
   navigation until it is opened. */
.drawer{visibility:hidden;transition:transform .52s var(--out),visibility 0s .52s}.drawer-open .drawer{visibility:visible;transition:transform .52s var(--out)}

.prose .yt{margin-inline:calc(-1 * var(--rule-gap,0px))}.prose .yt .frame{position:relative;aspect-ratio:16/9;background-color:var(--bg-sunken);background-image:linear-gradient(rgb(0 0 0/.08),rgb(0 0 0/.08)),var(--poster);background-position:center;background-size:cover;border:1px solid var(--rule);overflow:hidden}.prose .yt .play{position:absolute;inset:0;margin:auto;width:3.25rem;height:3.25rem;padding:.85rem;border:1px solid color-mix(in srgb,var(--fg) 20%,transparent);border-radius:50%;background:color-mix(in srgb,var(--bg-raised) 88%,transparent);color:var(--fg);cursor:pointer;backdrop-filter:blur(8px);transition:transform var(--fast) var(--ease)}.prose .yt .play:hover{transform:scale(1.06)}.prose .yt iframe{width:100%;height:100%;border:0}.prose .yt figcaption{padding-inline:var(--rule-gap,0px)}

@view-transition{navigation:auto}.section-title#writing-heading,.archive-title{view-transition-name:writing-title}::view-transition-old(root){z-index:1;animation:page-dissolve 180ms linear both}::view-transition-new(root){animation:none}@keyframes page-dissolve{to{opacity:0}}

h1,h2,h3,h4{font-weight:600;line-height:1.2;letter-spacing:-.018em;text-wrap:balance}p,li{text-wrap:pretty}.ruled--flush{padding-top:0}.post-chrome .hero{margin-bottom:2.5rem}.post-meta{font-family:var(--face-serif);font-style:italic;font-size:var(--step-0);line-height:1.65}.more .link{display:inline-flex;align-items:center;gap:.3em;background-image:none;text-decoration:none}

.work-detail .head h1{font-size:var(--step-0);font-weight:500;letter-spacing:-.015em}.work-detail .body{margin-top:1.6rem;display:grid;gap:1.1rem;color:var(--fg-muted)}.work-detail .body>.lede{font:inherit;color:inherit}.work-detail .entry-links{margin-top:clamp(2.25rem,8vh,4rem)}

:root{--drawer-duration:620ms;--drawer-close-duration:500ms;--drawer-curve:cubic-bezier(.32,.72,0,1)}:root.detail-drawer-closing{--drawer-duration:var(--drawer-close-duration)}:root.has-detail-drawer,:root.detail-drawer-closing{background:oklch(13% 0 0)}:root.has-detail-drawer body,:root.detail-drawer-closing body{overflow:hidden;background:oklch(13% 0 0)}.page-frame{transform-origin:50% 0;transition:transform var(--drawer-duration) var(--drawer-curve),border-radius var(--drawer-duration) var(--drawer-curve),box-shadow var(--drawer-duration) var(--drawer-curve)}:root.has-detail-drawer .page-frame,:root.detail-drawer-closing .page-frame{position:fixed;inset:0 var(--drawer-scrollbar-width,0px) 0 0;overflow:hidden;will-change:transform}:root.has-detail-drawer .page-frame{transform:translate3d(0,10px,0) scale(.94);border-radius:22px;box-shadow:0 1.5rem 5rem rgb(0 0 0/.24)}:root.has-detail-drawer .page-document,:root.detail-drawer-closing .page-document{transform:translate3d(0,var(--drawer-scroll-offset,0px),0)}.detail-drawer{position:fixed;inset:0;z-index:80;pointer-events:none;background:rgb(0 0 0/0);transition:background-color var(--drawer-duration) var(--drawer-curve)}:root.has-detail-drawer .detail-drawer{pointer-events:auto;background:rgb(0 0 0/.18)}.detail-drawer__panel{position:absolute;inset:clamp(2rem,4vw,2.5rem) 0 0;display:grid;grid-template-rows:2.75rem minmax(0,1fr);background:var(--bg);color:var(--fg);border-radius:22px 22px 0 0;box-shadow:0 -1rem 4rem rgb(0 0 0/.14);overflow:hidden;transform:translate3d(0,calc(100% + 2.5rem),0);transition:transform var(--drawer-duration) var(--drawer-curve);will-change:transform}:root.has-detail-drawer .detail-drawer__panel{transform:translate3d(0,0,0)}.detail-drawer[data-dragging] .detail-drawer__panel{transition:none;transform:translate3d(0,var(--drawer-drag,0px),0)}.detail-drawer__handle-row{position:relative;z-index:2;display:grid;place-items:center;background:var(--bg)}.detail-drawer__close{display:grid;place-items:center;width:5rem;height:100%;padding:0;border:0;background:transparent;cursor:grab;touch-action:none}.detail-drawer__close:active{cursor:grabbing}.detail-drawer__close:focus-visible{outline:none}.detail-drawer__handle{display:block;width:2.5rem;height:4px;border-radius:var(--pill);background:var(--fg-ghost);transition:width var(--fast) var(--ease),background-color var(--fast) var(--ease)}.detail-drawer__close:hover .detail-drawer__handle,.detail-drawer__close:focus-visible .detail-drawer__handle{width:3rem;background:var(--fg-faint)}.detail-drawer__scroller{overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable}.detail-drawer__content{padding-block:clamp(2.5rem,8vh,5rem) clamp(4rem,12vh,8rem)}.detail-drawer[data-kind=post] .detail-drawer__content{padding-top:0}.detail-drawer[data-kind=work] .work-detail>*{opacity:0;transform:translateY(14px);transition:opacity 480ms var(--out),transform 560ms var(--out)}:root.has-detail-drawer .detail-drawer[data-kind=work] .work-detail>*{opacity:1;transform:none;transition-delay:180ms}:root.has-detail-drawer .detail-drawer[data-kind=work] .work-detail>*:nth-child(2){transition-delay:235ms}:root.has-detail-drawer .detail-drawer[data-kind=work] .work-detail>*:nth-child(3){transition-delay:290ms}[data-work-drawer-link][data-drawer-loading],[data-post-drawer-link][data-drawer-loading]{opacity:.55}.detail-drawer[data-kind=post] .post-chrome{opacity:0;transform:translateY(14px);transition:opacity 480ms var(--out),transform 560ms var(--out)}:root.has-detail-drawer .detail-drawer[data-kind=post] .post-chrome{opacity:1;transform:none;transition-delay:180ms}

/* Match the reference entry and row cadence without fading the entire page twice. */
.enter{animation:none}.enter>.no-stagger,.enter>.enter-rows{animation:none}.enter>.enter-rows{--rows-offset:60ms}.enter-rows>.enter-settled{animation:none!important}@media(prefers-reduced-motion:no-preference){.enter>*{animation:enter-rise 700ms var(--out) both;animation-delay:calc(60ms + var(--enter-index,0) * 90ms)}.enter>*:nth-child(1){--enter-index:0}.enter>*:nth-child(2){--enter-index:1}.enter>*:nth-child(3){--enter-index:2}.enter>*:nth-child(4){--enter-index:3}.enter>*:nth-child(5){--enter-index:4}.enter>*:nth-child(n+6){--enter-index:5}.enter-rows>*{animation:enter-rise 620ms var(--out) both;animation-delay:calc(var(--rows-offset,260ms) + var(--enter-index,0) * 55ms)}.enter-rows>*:nth-child(1){--enter-index:0}.enter-rows>*:nth-child(2){--enter-index:1}.enter-rows>*:nth-child(3){--enter-index:2}.enter-rows>*:nth-child(4){--enter-index:3}.enter-rows>*:nth-child(5){--enter-index:4}.enter-rows>*:nth-child(6){--enter-index:5}.enter-rows>*:nth-child(7){--enter-index:6}.enter-rows>*:nth-child(n+8){--enter-index:7}.enter-late{animation:enter-late-rise 700ms var(--out) 220ms both}}@keyframes enter-rise{from{opacity:0;transform:translateY(10px);filter:blur(3px)}to{opacity:1;transform:none;filter:none}}@keyframes enter-late-rise{from{opacity:0;translate:0 10px;filter:blur(3px)}to{opacity:1;translate:none;filter:none}}

@media(max-width:38rem){:root.has-detail-drawer .page-frame{transform:translate3d(0,8px,0) scale(.965)}.detail-drawer__panel{top:1.5rem;border-radius:18px 18px 0 0}.detail-drawer__content{padding-top:2rem}.detail-drawer[data-kind=post] .detail-drawer__content{padding-top:0}}

:root[data-theme=dark]{--top-grain-wave-strength:.12}#top-grain-wave{image-rendering:pixelated}

.place{line-height:1.4}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--fg-ghost);border-radius:var(--pill)}::-webkit-scrollbar-thumb:hover{background:var(--fg-faint)}

/* Astro's current content build uses JetBrains Mono. Preserve the prose line
   height in interactive figures instead of resetting it with font shorthand. */
@font-face{font-family:"JetBrains Mono";src:url("assets/fonts/font-mono-400-normal-latin-ccfece03c51ce7f7.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}
:root{--face-mono:"JetBrains Mono",ui-monospace,SFMono-Regular,monospace}
.figure .tag,.focusdemo .btn{line-height:1.72}

/* Work/event destination rows, shared by standalone pages and drawers. */
.picture-rows{list-style:none;padding:0;margin:0;display:grid;gap:1.5rem}.picture-row{display:grid;grid-template-columns:clamp(6rem,22vw,8rem) 1fr;align-items:center;gap:1.1rem}.picture-row__title{font-size:var(--step-0);font-weight:500;line-height:1.4;letter-spacing:-.012em;color:var(--fg);text-wrap:pretty}.picture-row__meta{display:flex;align-items:center;gap:.45em;width:fit-content;margin-block-start:.3rem;font-family:var(--face-mono);font-size:var(--step--1);letter-spacing:.02em;text-transform:uppercase;color:var(--fg-faint);transition:color var(--fast) var(--ease)}.picture-row__meta svg{width:1em;height:1em;flex:none;color:var(--fg-ghost);transition:color var(--fast) var(--ease),translate var(--mid) var(--out)}.picture-row:hover .picture-row__meta,.picture-row:focus-visible .picture-row__meta{color:var(--fg-muted)}.picture-row:hover .picture-row__meta svg,.picture-row:focus-visible .picture-row__meta svg{color:var(--fg-muted);translate:2px -2px}.picture-rows__item{opacity:1;transition:opacity var(--slow) cubic-bezier(.33,0,.2,1)}@media(hover:hover){.picture-rows:has(.picture-row:hover) .picture-rows__item:not(:has(.picture-row:hover)){opacity:.28}}.picture-rows:has(.picture-row:focus-visible) .picture-rows__item:not(:has(.picture-row:focus-visible)){opacity:.28}.work-detail .events-block,.work-detail .sites-block{margin-block-start:clamp(2.5rem,9vh,4rem)}.work-detail .events-block+.sites-block{margin-block-start:1.5rem}

/* Exact source interaction tokens and chrome. */
:root{--ease-out-quart:cubic-bezier(.16,1,.3,1);--radius-pill:999px}.lede .link{text-decoration-color:color-mix(in srgb,currentColor 10%,transparent)}.lede .link:hover,.lede .link:focus-visible{color:var(--fg);text-decoration-color:color-mix(in srgb,currentColor 70%,transparent)}.pill:active{transform:scale(.97)}.pill svg{width:.85em;height:.85em;opacity:.7}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}

/* Command menu (Cmd/Ctrl+K), ported from the static reference but populated
   from WordPress pages and posts. */
.cmdk{--cmdk-in:190ms;--cmdk-out:130ms;--ease-in-quad:cubic-bezier(.45,0,.75,.35);width:100%;max-width:none;height:100%;max-height:none;padding:0;border:0;background:transparent;color:var(--fg);overflow:hidden}.cmdk::backdrop{background:oklch(12% 0 0/.34);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.cmdk__panel{display:flex;flex-direction:column;width:min(26rem,calc(100vw - 2rem));max-height:min(21rem,calc(100vh - 3rem));margin:min(20vh,8.5rem) auto 0;background:var(--bg-raised);border-radius:14px;box-shadow:0 20px 48px -28px oklch(0% 0 0/.5);overflow:hidden}.cmdk__search{display:flex;align-items:center;gap:.5rem;flex-shrink:0;margin:.4rem .4rem .15rem;padding:.3rem .55rem;background:color-mix(in oklch,var(--fg) 5%,transparent);border:1px solid var(--rule);border-radius:10px;transition:border-color var(--fast) var(--ease)}.cmdk__search:focus-within{border-color:var(--rule-strong)}.cmdk__search-icon{width:.95em;height:.95em;flex-shrink:0;fill:none;stroke:var(--fg-faint);stroke-width:1.15;stroke-linecap:round}.cmdk__input{width:100%;border:0;background:transparent;color:var(--fg);font-family:inherit;font-size:var(--step--1);line-height:1.5}.cmdk__input:focus-visible{outline:none}.cmdk__input::placeholder{color:var(--fg-faint)}.cmdk__list{overflow-y:auto;overscroll-behavior:contain;padding-block:.15rem .3rem;scrollbar-width:none}.cmdk__list::-webkit-scrollbar{width:0}.cmdk__list[data-scrolled]{scrollbar-width:thin;scrollbar-color:var(--fg-ghost) transparent}.cmdk__list[data-scrolled]::-webkit-scrollbar{width:6px}.cmdk__list[data-scrolled]::-webkit-scrollbar-thumb{background:var(--fg-ghost);border-radius:var(--radius-pill)}.cmdk__group-label{margin-inline:.25rem;padding:.4rem .5rem .15rem;font-size:.68rem;color:var(--fg-faint)}.cmdk__item{display:flex;align-items:center;gap:.6rem;margin-inline:.25rem;padding:.3rem .5rem;border-radius:8px;font-size:var(--step--1);color:var(--fg-muted)}.cmdk__item[data-active]{background:color-mix(in oklch,var(--fg) 6%,transparent);color:var(--fg)}.cmdk__item[data-active] .cmdk__icon{stroke:var(--fg-faint)}.cmdk__item:focus-visible{outline:none}.cmdk__icon{width:.95em;height:.95em;flex-shrink:0;fill:none;stroke:var(--fg-ghost);stroke-width:1.15;stroke-linecap:round;stroke-linejoin:round;transition:stroke var(--fast) var(--ease)}.cmdk__title{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.cmdk__empty{padding:.6rem .75rem;font-size:var(--step--1);color:var(--fg-faint)}.cmdk [hidden]{display:none}.cmdk[open] .cmdk__panel{animation:cmdk-panel-in var(--cmdk-in) var(--ease-out-quart) both}.cmdk[open]::backdrop{animation:cmdk-veil var(--cmdk-in) var(--ease) both}.cmdk[data-closing] .cmdk__panel{animation:cmdk-panel-out var(--cmdk-out) var(--ease-in-quad) forwards}.cmdk[data-closing]::backdrop{animation:cmdk-veil var(--cmdk-out) var(--ease) reverse forwards}@keyframes cmdk-panel-in{from{opacity:0;transform:scale(.955)}to{opacity:1;transform:none}}@keyframes cmdk-panel-out{from{opacity:1;transform:none}to{opacity:0;transform:scale(.975)}}@keyframes cmdk-veil{from{opacity:0}to{opacity:1}}html.has-command-menu{overflow:hidden;padding-inline-end:var(--command-lock-gap,0)}

::view-transition-old(root),::view-transition-new(root){mix-blend-mode:normal}.enter-rows>.enter-settled{animation:none!important}

/* Event route: the same structure serves the full WordPress page that the
   parent row morphs into. */
.topbar{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-block-end:clamp(2.5rem,8vw,4rem)}.topbar .actions{display:flex;align-items:center;gap:.4rem}.event-page{--event-bleed:clamp(0px,3.5vw,2.5rem);--page-room:max(var(--gutter),calc((100vw - var(--shell)) / 2));--page-bleed:max(0px,min(4rem,calc(var(--page-room) - 1rem)))}.event-page__head{margin-block-start:clamp(1.75rem,5vh,2.5rem);display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.5rem 1.25rem}.event-page__title{flex:1 1 auto;min-inline-size:min(100%,20rem);font-size:var(--step-2);font-weight:500;line-height:1.2;letter-spacing:-.02em}.event-page__meta{flex:0 0 auto;padding-inline-end:5px;font-family:var(--face-mono);font-size:var(--step--1);letter-spacing:.02em;text-transform:uppercase;color:var(--fg-faint)}.event-page__links{list-style:none;padding:0;margin-block-start:1.4rem;display:flex;flex-wrap:wrap;gap:.4rem}.event-page__body{margin-block-start:clamp(2rem,6vh,3rem)}.event-page__body.prose{font-family:var(--face-sans)}.event-page__body.prose>p:first-of-type::first-letter{float:none;font-size:inherit;line-height:inherit;margin:0;padding:0;font-weight:inherit}.event-page__body.prose>h2:first-child{margin-block-start:0}@media(prefers-reduced-motion:no-preference){.event-page__links{animation:enter-rise 700ms var(--ease-out-quart) both;animation-delay:170ms}.event-page__body{animation:enter-rise 700ms var(--ease-out-quart) both;animation-delay:310ms}}

/* Preserve the source article rhythm after WordPress' block styles load. */
.post-chrome article.ruled>figure.hero{margin-block-end:2.5rem!important}
.post-chrome article.ruled .prose>figure{margin-block-end:2em!important}
.post-chrome article.ruled .prose>figure.figure,
.post-chrome article.ruled .prose>figure.wp-block-image{margin-block-end:2.25em!important}

/* The hash keeps its quiet colour on interaction; the underline alone is the
   affordance, just as it is on the static reference. */
.prose :is(h2,h3)[id]{scroll-margin-block-start:5rem}.prose :is(h2,h3) .anchor:hover,.prose :is(h2,h3) .anchor:focus-visible{color:var(--fg-ghost)}

/* The component owns both circles: the button is the full-frame hit target,
   while only its glyph is the visible blurred control. */
.prose .yt .play{inset:0;margin:0;width:100%;height:100%;padding:0;border:0;border-radius:0;background:none;backdrop-filter:none;transform:none}
.prose .yt .play:hover{transform:none}

/* Shiki writes its light palette inline. Mirror Astro's dark-theme override,
   including the pre background that WordPress otherwise leaves white. */
.prose pre.astro-code{background:var(--bg-sunken)!important}
:root[data-theme=dark] .prose .astro-code,
:root[data-theme=dark] .prose .astro-code span{color:var(--shiki-dark)!important;font-style:var(--shiki-dark-font-style)!important;font-weight:var(--shiki-dark-font-weight)!important;text-decoration:var(--shiki-dark-text-decoration)!important}

/* The event thumbnail uses a replay class in WordPress so every part of the
   source animation completes even when navigation leaves the pointer in place. */
@media(prefers-reduced-motion:no-preference){.event-graphic.is-playing .node{animation:event-node-pulse .64s var(--ease-out-quart) both;animation-delay:calc(var(--i,0) * .12s)}.event-graphic.is-playing .ring{animation:event-ring-turn 1.1s var(--ease-out-quart) both}.event-graphic.is-playing .slide-line{animation:event-line-draw .56s var(--ease-out-quart) both;animation-delay:calc(var(--i,0) * 70ms)}}

/* Native heroes render from variant PHP components, never stored HTML. */
.post-chrome .post-hero{height:auto;border:0;margin:0 calc(-1 * var(--rule-gap,0px)) 2.5rem;padding:clamp(1.75rem,6vw,2.75rem) clamp(1.25rem,5vw,2rem);background:var(--bg-sunken)}

/* The not-found route mirrors the reference page: one quiet code, a serif
   sentence and a compact way home beneath the standard top bar. */
.notfound{display:grid;gap:.65rem;padding-block:clamp(3rem,12vh,7rem);max-inline-size:40ch}.notfound .code{font-family:var(--face-mono);font-size:var(--step--1);letter-spacing:.18em;color:var(--fg-ghost)}.notfound h1{font-family:var(--face-serif);font-weight:400;font-size:var(--step-2)}.notfound .hint{color:var(--fg-muted)}
