:root{color-scheme:light dark;--bg:var(--site-bg,#fff);--fg:var(--site-fg,#121213);--muted:var(--site-muted,#787c7e);--line:var(--site-line,#d3d6da);--soft:var(--site-soft,#f6f7f8);--accent:var(--site-accent,#787c7e);--error:var(--site-error,#c43d46);--ok:var(--site-correct,#538d4e);--warn:var(--site-present,#b59f3b);--blog-link:color-mix(in srgb,var(--fg) 72%,#4c78ff);--blog-accent:color-mix(in srgb,var(--error) 62%,var(--fg));--blog-text:color-mix(in srgb,var(--fg) 90%,var(--bg))}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--fg);font-family:var(--site-font,Arial,Helvetica,sans-serif)}body{min-height:100dvh}a{color:inherit;text-decoration:none}button,a{-webkit-tap-highlight-color:transparent}.shell{width:min(var(--site-content-width,1080px),100%);margin:0 auto;padding:42px 20px 72px}.eyebrow{font-size:13px;line-height:1;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:0 0 14px}.post-list{border-top:1px solid var(--line)}.post-row{display:grid;grid-template-columns:1fr auto;gap:18px;align-items:start;padding:18px 2px;border-bottom:1px solid var(--line)}.post-row:hover .post-title{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}.post-title{font-size:20px;font-weight:730;letter-spacing:-.02em}.post-row:hover{background:color-mix(in srgb,var(--blog-link) 4%,transparent)}.post-meta{font:12px/1.4 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;color:var(--muted);white-space:nowrap}.post-note{margin-top:6px;color:var(--muted);font-size:14px;line-height:1.5}
.article{width:min(var(--site-content-width,1080px),100%);margin:0 auto;padding:38px 20px 88px}.article-head{padding-bottom:25px;border-bottom:1px solid var(--line);margin-bottom:34px}.article h1{max-width:760px;font-size:clamp(34px,7vw,58px);line-height:.98;letter-spacing:-.048em;margin:0 0 16px}.article .dek{max-width:690px;color:var(--muted);font-size:17px;line-height:1.55;margin:0 0 16px}.article .meta{font:12px/1.45 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;color:var(--muted)}.article p,.article li{font-size:17px;line-height:1.72;color:var(--blog-text)}.article p{margin:20px 0}.article ul{margin:16px 0 22px;padding-left:22px}.article li+li{margin-top:8px}.article h2{font-size:27px;line-height:1.15;letter-spacing:-.03em;margin:52px 0 14px;padding-left:13px;border-left:3px solid var(--blog-accent)}.article h3{font-size:20px;line-height:1.25;letter-spacing:-.015em;margin:34px 0 10px}.article code{font:14px ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;background:var(--soft);padding:.12em .35em;border-radius:4px}.article pre{overflow:auto;background:var(--soft);border:1px solid var(--line);border-radius:8px;padding:16px;font:13px/1.55 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;tab-size:4}.article pre code{background:none;padding:0}.article a:not(.plain){color:var(--blog-link);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}.article a:not(.plain):hover{color:var(--fg)}.article strong{font-weight:760}.aside{border-left:3px solid var(--line);padding:1px 0 1px 16px;margin:27px 0;color:var(--muted)}.aside p{font-size:15px;margin:8px 0}.code-label{display:flex;justify-content:space-between;gap:12px;align-items:center;margin:28px 0 7px;font:12px/1.4 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;color:var(--muted)}.code-label a{text-decoration:none!important}.code-label a:hover{text-decoration:underline!important}.badline{background:color-mix(in srgb,var(--error) 12%,transparent);display:block;margin:0 -16px;padding:0 16px}.goodline{background:color-mix(in srgb,var(--ok) 12%,transparent);display:block;margin:0 -16px;padding:0 16px}
.viz{margin:30px 0 38px;border:1px solid color-mix(in srgb,var(--blog-link) 24%,var(--line));border-radius:10px;background:var(--soft);padding:18px}.viz-head{display:flex;align-items:baseline;justify-content:space-between;gap:14px;margin-bottom:16px}.viz-title{font-size:14px;font-weight:760}.viz-note{font:11px/1.4 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;color:var(--muted);text-align:right}.viz-caption{font-size:13px;line-height:1.55;color:var(--muted);margin-top:14px}.controls{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}.controls button{border:1px solid var(--line);background:var(--bg);color:var(--fg);height:34px;padding:0 12px;border-radius:6px;font:12px ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;cursor:pointer}.controls button:hover{border-color:var(--muted)}
.timeline{display:grid;grid-template-columns:105px 1fr;gap:0}.time-date{font:11px/1.4 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;color:var(--muted);padding:4px 16px 22px 0;text-align:right}.time-event{position:relative;border-left:1px solid var(--line);padding:2px 0 22px 18px;font-size:14px;line-height:1.5}.time-event::before{content:"";position:absolute;width:7px;height:2px;background:var(--muted);left:-4px;top:9px}.time-event.hot::before{background:var(--error)}.time-event.done::before{background:var(--ok)}.time-event b{display:block;margin-bottom:2px}.time-event:last-child{padding-bottom:3px}
.viz-sub{margin-top:4px;color:var(--muted);font-size:12px;line-height:1.45}.cas-viz:focus{outline:none}.cas-viz:focus-visible{outline:2px solid color-mix(in srgb,var(--blog-link) 55%,transparent);outline-offset:3px}.cas-shortcuts{font:10px/1.3 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;color:var(--muted);white-space:nowrap}
.cas-progress{display:grid;grid-template-columns:24px 1fr 24px 1fr 24px 1fr 24px 1fr 24px 1fr 24px 1fr 24px;align-items:center;margin:6px 0 18px}.cas-progress button{width:24px;height:24px;border-radius:50%;border:1px solid var(--line);background:var(--bg);color:var(--muted);padding:0;cursor:pointer;font:10px ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;transition:.12s}.cas-progress i{display:block;height:1px;background:var(--line)}.cas-progress button.done{background:color-mix(in srgb,var(--blog-link) 12%,var(--bg));border-color:color-mix(in srgb,var(--blog-link) 45%,var(--line));color:var(--fg)}.cas-progress button.current{background:var(--fg);color:var(--bg);border-color:var(--fg);transform:scale(1.08)}
.cas-machine{display:grid;grid-template-columns:1fr 150px 1fr;gap:12px;align-items:stretch}.cas-thread-card,.cas-shared{border:1px solid var(--line);background:var(--bg);border-radius:9px;padding:13px;min-width:0}.cas-thread-card{display:flex;flex-direction:column;gap:12px}.cas-thread-card header{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:13px}.thread-state{font:10px/1.3 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;color:var(--muted);padding:3px 5px;border-radius:3px;background:var(--soft)}.cas-thread-card.owns{border-color:color-mix(in srgb,var(--ok) 50%,var(--line))}.cas-thread-card.breach{border-color:var(--error);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--error) 18%,transparent)}.register{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 10px;background:var(--soft);border-radius:6px;font:11px/1.3 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}.register strong{font-size:12px;color:var(--fg)}.instruction{min-height:42px;font:12px/1.45 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;color:var(--muted)}.cas-thread-card.active .instruction{color:var(--fg)}
.cas-shared{display:grid;justify-items:center;align-content:center;text-align:center}.cas-atomic-label,.cas-owner-label{font:10px/1.3 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.cas-atomic-value{margin:7px 0 14px;width:78px;height:40px;border:1px solid var(--line);border-radius:7px;display:grid;place-items:center;font:bold 15px ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;background:var(--soft);transition:.14s}.cas-atomic-value.locked{background:color-mix(in srgb,var(--warn) 14%,var(--bg));border-color:color-mix(in srgb,var(--warn) 48%,var(--line))}.owner-slots{display:flex;gap:6px;margin-top:7px}.owner-slots span{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;border:1px dashed var(--line);color:var(--muted);font:bold 11px ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;opacity:.42}.owner-slots span.on{border-style:solid;border-color:var(--ok);background:color-mix(in srgb,var(--ok) 13%,var(--bg));color:var(--fg);opacity:1}.owner-slots span.bad{border-color:var(--error);background:color-mix(in srgb,var(--error) 16%,var(--bg));opacity:1}.owners{margin-top:7px;font:10px/1.3 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;color:var(--muted)}.owners.danger{color:var(--error);font-weight:700}
.cas-code{margin-top:12px;border:1px solid var(--line);border-radius:7px;background:var(--bg);overflow:hidden;font:11px/1.55 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}.cas-code>div{display:flex;gap:10px;padding:5px 9px}.cas-code>div+div{border-top:1px solid var(--line)}.cas-code .ln{width:15px;text-align:right;color:var(--muted);user-select:none}.cas-code code{background:none;padding:0;font:inherit}.cas-code .hotline{background:color-mix(in srgb,var(--blog-link) 8%,var(--bg))}
.cas-event{margin-top:10px;display:grid;grid-template-columns:auto 1fr;gap:9px;align-items:start;padding:10px 11px;border:1px solid var(--line);border-radius:7px;background:var(--bg);font:11px/1.5 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}.cas-event.fail{border-color:color-mix(in srgb,var(--warn) 55%,var(--line));background:color-mix(in srgb,var(--warn) 7%,var(--bg))}.cas-event.breach{border-color:color-mix(in srgb,var(--error) 58%,var(--line));background:color-mix(in srgb,var(--error) 8%,var(--bg))}.event-tag{color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.cas-controls{align-items:center}.cas-count{margin-left:auto;color:var(--muted);font:11px ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}
.ordering{display:grid;grid-template-columns:1fr 56px 1fr;gap:10px;align-items:center}.lane{display:grid;gap:8px}.op{min-height:48px;border:1px solid var(--line);background:var(--bg);border-radius:7px;padding:9px 10px;font:12px/1.4 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}.op small{display:block;color:var(--muted);margin-top:3px}.hb{display:grid;place-items:center;align-self:stretch;color:var(--muted);font-size:22px}.hb.good{color:var(--ok);font-weight:800}.hb.bad{color:var(--error);font-weight:800}.mode-switch{display:flex;border:1px solid var(--line);border-radius:6px;overflow:hidden}.mode-switch button{border:0;background:var(--bg);color:var(--muted);padding:7px 10px;font:11px ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;cursor:pointer}.mode-switch button+button{border-left:1px solid var(--line)}.mode-switch button.on{background:var(--fg);color:var(--bg)}
.race-map{display:grid;grid-template-columns:1fr 66px 1fr;gap:10px;align-items:stretch}.race-lane{border:1px solid var(--line);background:var(--bg);border-radius:8px;padding:12px}.race-lane h4{margin:0 0 12px;font-size:13px}.race-op{font:12px/1.45 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;padding:8px;border-radius:5px;background:var(--soft);margin-top:7px}.race-op.write{border-left:3px solid var(--error)}.race-op.read{border-left:3px solid var(--warn)}.race-center{display:grid;place-items:center;text-align:center;font:11px/1.35 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}.race-center>div{color:var(--fg);background:color-mix(in srgb,var(--error) 14%,var(--bg));border:1px solid color-mix(in srgb,var(--error) 55%,var(--line));border-radius:7px;padding:9px 6px;font-weight:700}.race-center span{font-size:24px;line-height:1;color:var(--error);display:block;margin-bottom:3px}.fix-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:20px 0}.fix-card{border:1px solid var(--line);background:var(--soft);border-radius:8px;padding:13px}.fix-card code{font-size:12px}.fix-card b{display:block;font-size:14px;margin-bottom:5px}.fix-card p{font-size:13px;line-height:1.5;margin:0;color:var(--muted)}
.commit-list{border-top:1px solid var(--line);margin:24px 0}.commit{display:grid;grid-template-columns:86px 1fr;gap:12px;padding:10px 0;border-bottom:1px solid var(--line);font-size:13px;line-height:1.45}.commit code{font-size:11px;background:none;padding:0;color:var(--muted)}.commit span{color:var(--muted)}
@media(max-width:680px){.shell{padding-top:28px}.post-row{grid-template-columns:1fr}.post-meta{white-space:normal}.article{padding-top:28px}.cas-machine,.ordering,.race-map{grid-template-columns:1fr}.cas-shared{min-height:130px}.hb{min-height:36px;transform:rotate(90deg)}.race-center{min-height:54px}.fix-grid{grid-template-columns:1fr}.timeline{grid-template-columns:76px 1fr}.time-date{padding-right:12px}.viz{padding:14px}.viz-head{align-items:flex-start;flex-direction:column}.viz-note{text-align:left}.commit{grid-template-columns:74px 1fr}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

.article strong,.article h1,.article h2,.article h3,.article code{color:var(--fg)}

/* Same shell language as Home / Work / Lab. */
.top{width:min(var(--site-content-width,1080px),100%);height:64px;margin:auto;padding:0 22px;display:grid;grid-template-columns:1fr auto;align-items:center;border-bottom:1px solid var(--line);position:sticky;top:0;background:color-mix(in srgb,var(--bg) 94%,transparent);backdrop-filter:blur(14px);z-index:10}.top::after{content:"";position:absolute;left:22px;bottom:-1px;width:42px;height:1px;background:var(--accent)}.top .brand{justify-self:start;font-size:15px;font-weight:720;letter-spacing:-.025em}.top-nav{display:flex;align-items:center;gap:3px}.top-nav a,.search-trigger{border:0;background:transparent;color:var(--muted);padding:8px 10px;border-radius:6px;font:14px/1.45 var(--site-font,system-ui);transition:background-color 120ms ease,color 120ms ease,transform 120ms cubic-bezier(.2,.8,.2,1)}.top-nav a:hover,.top-nav a[aria-current=page],.search-trigger:hover{color:var(--fg);background:var(--soft)}.top-nav a[aria-current=page]{box-shadow:inset 0 -2px var(--accent)}.top-nav a:active,.search-trigger:active{transform:scale(.96)}.search-trigger{margin-left:3px;font-size:11px}.blog-head{margin-bottom:30px}.blog-head h1{margin:0;font-size:38px;line-height:1;letter-spacing:-.045em}.blog-head p{margin:10px 0 0;color:var(--muted);font-size:14px}.post-row{position:relative;padding-inline:8px;transition:background-color 120ms ease,transform 150ms cubic-bezier(.2,.8,.2,1)}.post-row:hover{background:var(--soft);transform:translateX(3px)}.controls button,.mode-switch button,.cas-progress button{transition:transform 120ms cubic-bezier(.2,.8,.2,1),background-color 120ms ease,border-color 120ms ease}.controls button:active,.mode-switch button:active,.cas-progress button:active{transform:scale(.96)}
@media(max-width:700px){.top{height:56px;padding-inline:12px}.top::after{left:12px}.search-trigger{font-size:0}.search-trigger::after{content:'⌕';font-size:16px}}
