@font-face{font-family:Newsreader Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-vietnamese-wght-normal.Czsa-EzN.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Newsreader Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-latin-ext-wght-normal.C-3rgBeH.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Newsreader Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-latin-wght-normal.CCVVNp6i.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Newsreader Variable;font-style:italic;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-vietnamese-wght-italic.xAqemagA.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Newsreader Variable;font-style:italic;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-latin-ext-wght-italic.DFS986qL.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Newsreader Variable;font-style:italic;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-latin-wght-italic.Bxi8ein9.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-cyrillic-ext-400-normal.xuaO2J-f.woff2)format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-ext-400-normal.DMdlQ8Kv.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-cyrillic-400-normal.BSMlKf0J.woff2)format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-400-normal.CEL4l2ZJ.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-vietnamese-400-normal.BulugwFq.woff2)format("woff2"),url(/_astro/ibm-plex-mono-vietnamese-400-normal.DDuiU_S-.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-latin-ext-400-normal.BmRBH3aV.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-ext-400-normal.D3D2R8hC.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-400-normal.CvHOgSBP.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-cyrillic-ext-500-normal.BqneJy0T.woff2)format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-ext-500-normal.BIfNGwUT.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-cyrillic-500-normal.Bq9vWWag.woff2)format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-500-normal.Ael50iVv.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-vietnamese-500-normal.DZ4AoWbu.woff2)format("woff2"),url(/_astro/ibm-plex-mono-vietnamese-500-normal.C8zxqsMH.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-latin-ext-500-normal.CAhNIIs5.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-ext-500-normal.CZ70TYgx.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-latin-500-normal.DSY6xOcd.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-500-normal.CB9ihrfo.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Michroma;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/michroma-latin-ext-400-normal.BeYM1uOO.woff2)format("woff2"),url(/_astro/michroma-latin-ext-400-normal.DlRaauac.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Michroma;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/michroma-latin-400-normal.4gS0VCia.woff2)format("woff2"),url(/_astro/michroma-latin-400-normal.C7Pn7qca.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{color-scheme:light dark;--bg:light-dark(#f2eee3,#10141a);--surface:light-dark(#e8e3d5,#171c24);--ink:light-dark(#1d1c1a,#d9d4c7);--muted:light-dark(#6b665c,#8a8678);--line:light-dark(#1d1c1a26,#d9d4c726);--grid:light-dark(#1d1c1a14,#d9d4c710);--accent:light-dark(#b5391f,#e0a43a);--serif:"Newsreader Variable", Georgia, serif;--mono:"IBM Plex Mono", ui-monospace, monospace;--panel:"Michroma", var(--mono)}:root[data-theme=light]{color-scheme:light}:root[data-theme=dark]{color-scheme:dark}html{scroll-behavior:smooth}body{background-color:var(--bg);background-image:radial-gradient(var(--grid) 1px, transparent 1px);max-width:62rem;color:var(--ink);font-family:var(--serif);background-size:1.5rem 1.5rem;margin:0 auto;padding:0 1.25rem;font-size:1.125rem;line-height:1.65}body:before{content:"";background:linear-gradient(90deg,#c9c4b4 0 14.28%,#d9b23c 0 28.57%,#5fa8a0 0 42.85%,#6f9a55 0 57.14%,#a8588c 0 71.42%,#b5391f 0 85.71%,#3d5a8c 0);height:.4rem;display:block}::selection{background:var(--accent);color:var(--bg)}main{max-width:42rem}main.wide{max-width:none}h1,h2,h3{text-wrap:balance;font-weight:500;line-height:1.2}h1{letter-spacing:-.01em;font-size:2.5rem}h2{margin-top:2.5em;font-size:1.5rem}a{color:inherit;text-decoration-color:var(--accent);text-underline-offset:.2em;text-decoration-thickness:1px}a:hover{color:var(--accent)}img,video,audio{max-width:100%;height:auto}audio{width:100%}.prose img,.prose video{border:1px solid var(--line);background:#fff;display:block}code,pre{font-family:var(--mono);font-size:.82em}:not(pre)>code{background:var(--surface);padding:.1em .3em}pre{border:1px solid var(--line);border-left:2px solid var(--accent);padding:1rem;line-height:1.5;overflow-x:auto}blockquote{border-left:2px solid var(--accent);margin-left:0;padding-left:1.25rem;font-style:italic}table{border-collapse:collapse;font-size:.95rem;display:block;overflow-x:auto}th,td{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;padding:.4rem .75rem}th{border-bottom-color:var(--ink);font-family:var(--mono);text-transform:uppercase;letter-spacing:.08em;font-size:.72rem;font-weight:500}.torus{fill:none;stroke:var(--accent);stroke-width:1px;vector-effect:non-scaling-stroke}.torus circle,.torus path{vector-effect:non-scaling-stroke}.muted,.meta,time,.tags,.badge,.site-header,.site-footer,.section-head a,.toc,.post-nav span,.scope figcaption,.cards li:before{font-family:var(--mono);text-transform:uppercase;letter-spacing:.08em;font-size:.75rem}.muted,.meta,time{color:var(--muted)}.site-header,.site-footer{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 1.5rem;padding:1.25rem 0;display:flex}.site-header{padding-bottom:.75rem}.site-footer{color:var(--muted);padding-top:.75rem}.signal{align-items:center;gap:.75rem;margin-bottom:3rem;display:flex}.signal span{border:1px solid var(--ink);flex:none;width:.5rem;height:.5rem}.signal .analog{border-radius:50%}.signal .digital{background:var(--ink)}.signal.flip{margin:5rem 0 0}.signal svg{flex:1;min-width:0;height:2rem}.signal.flip svg{transform:scaleX(-1)}.signal path{fill:none;stroke:var(--ink);stroke-width:1px;vector-effect:non-scaling-stroke}.site-footer span{gap:1.25rem;display:flex}.site-name{font-family:var(--panel);letter-spacing:.2em;align-items:center;gap:.6rem;display:flex}.site-name .torus{width:1.75rem;height:1.75rem}.site-header a,.site-footer a{text-decoration:none}.site-header nav{align-items:center;gap:1.5rem;display:flex}.theme-switch{border:1px solid var(--ink);cursor:pointer;background:0 0;border-radius:1rem;width:2.1rem;height:1.1rem;padding:2px;display:none}:root[data-theme] .theme-switch{display:block}.theme-switch span{aspect-ratio:1;background:var(--accent);border-radius:50%;height:100%;transition:translate .2s;display:block}:root[data-theme=dark] .theme-switch span{translate:1rem}.site-header nav a[aria-current=page]{color:var(--accent)}.site-header nav a[aria-current=page]:before{content:"● "}.intro{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:2rem;display:grid}.intro h1{font-family:var(--panel);letter-spacing:.06em;text-transform:uppercase;margin:0;font-size:clamp(1.6rem,6vw,3.25rem);font-weight:400}.intro p{max-width:34rem;color:var(--muted)}.not-found{text-align:center;padding:3rem 0}.not-found .torus{width:9rem}.not-found h1{font-family:var(--panel);letter-spacing:.06em;font-weight:400}.scope{margin:0}.scope figcaption{color:var(--muted);text-align:center;margin-top:.5rem;font-size:.6rem}.screen{box-sizing:border-box;aspect-ratio:1;border:1px solid color-mix(in srgb, var(--ink) 40%, transparent);cursor:grab;touch-action:pan-y;outline:1px solid var(--line);outline-offset:.4rem;background-color:color-mix(in srgb, var(--surface) 40%, var(--bg));background-image:linear-gradient(var(--grid) 1px, transparent 1px), linear-gradient(90deg, var(--grid) 1px, transparent 1px);background-position:50%;background-size:12.5% 12.5%;border-radius:14%;width:clamp(9rem,28vw,16rem);padding:9%;position:relative;overflow:hidden}.screen:after{content:"";pointer-events:none;background:repeating-linear-gradient(#0000 0 2px,light-dark(#0000,#0002) 2px 3px);position:absolute;inset:0}.intro .torus{width:100%;filter:drop-shadow(0 0 3px light-dark(#0000,var(--accent)));display:block}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}.section-head{justify-content:space-between;align-items:baseline;gap:1rem;margin-top:4rem;display:flex}.section-head h2{margin:0}.post-list,.cards,.tags{padding:0;list-style:none}.post-list{max-width:46rem}.post-list li{border-top:1px solid var(--line);grid-template-columns:7.5rem 1fr;gap:1rem;padding:1rem 0;display:grid}.post-list time{padding-top:.45rem}.post-list p,.cards p{color:var(--muted);margin:.25rem 0 0;font-size:1rem;line-height:1.5}.post-title,.cards a{font-size:1.3rem;line-height:1.25;text-decoration:none}.cards{counter-reset:channel;grid-template-columns:repeat(auto-fill,minmax(15rem,1fr));gap:1.5rem;display:grid}.cards li:before{content:"CH " counter(channel, decimal-leading-zero);color:var(--accent);counter-increment:channel;margin-bottom:.75rem;font-size:.65rem;display:block}.cards li{border:1px solid var(--line);border-top:1px solid var(--ink);background:var(--bg);padding:1.25rem}.cards li:hover{border-top-color:var(--accent)}.tags{flex-wrap:wrap;gap:.25rem 1rem;display:flex}.tags a{color:var(--muted);text-decoration:none}.tags a:hover{color:var(--accent)}.badge{border:1px solid var(--line);color:var(--muted);vertical-align:middle;margin-left:.5rem;padding:.1rem .4rem;font-size:.65rem}.badge.draft{border-color:var(--accent);color:var(--accent)}.meta{flex-wrap:wrap;align-items:baseline;gap:.25rem 1.25rem;display:flex}.meta .badge{margin-left:0}.lede{font-size:1.3rem;font-style:italic;line-height:1.45}.post{grid-template-columns:minmax(0,42rem);gap:0 4rem;display:grid}.post>header{border-bottom:1px solid var(--line);padding-bottom:1.5rem}.post h1{margin-top:0;font-size:clamp(2rem,6vw,3rem);line-height:1.1}.prose h2{border-top:1px solid var(--line);padding-top:1rem}.prose em:only-child{color:var(--muted);font-size:.95rem}.toc{border-left:1px solid var(--line);padding:1rem 0 1rem 1rem;line-height:1.5}.toc h2{font:inherit;color:var(--muted);border:0;margin:0 0 .75rem;padding:0}.toc ol{counter-reset:toc;margin:0;padding:0;list-style:none}.toc li{counter-increment:toc;text-transform:none;letter-spacing:0;grid-template-columns:1.75rem 1fr;padding:.3rem 0;display:grid}.toc li:before{content:counter(toc, decimal-leading-zero);color:var(--accent)}.toc a{text-decoration:none}.post-nav{border-top:1px solid var(--ink);justify-content:space-between;gap:1rem;margin-top:4rem;padding-top:1rem;display:flex}.post-nav a{max-width:48%;text-decoration:none}.post-nav span{color:var(--muted);margin-bottom:.25rem;display:block}.post-nav .next{text-align:right;margin-left:auto}@media (width>=60rem){.post{grid-template-columns:minmax(0,42rem) 14rem}.post>*{grid-column:1}.post>.toc{grid-area:2/2/span 2;align-self:start;margin-top:2rem;position:sticky;top:1.5rem}}@media (width<=36rem){.post-list li{grid-template-columns:1fr;gap:0}.intro{gap:1rem}.intro h1{font-size:5vw}.intro .screen{width:28vw}.intro .scope figcaption{font-size:.5rem}}
