@font-face{font-family:Public Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/public-sans-vietnamese-wght-normal.CtlIRbEm.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Public Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/public-sans-latin-ext-wght-normal.MQgHevqp.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Public Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/public-sans-latin-wght-normal.DdeTHZLK.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-cyrillic-ext-opsz-normal.DIwfbPUE.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-cyrillic-opsz-normal.C0olyEE-.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-greek-opsz-normal.DrHU7SY7.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-vietnamese-opsz-normal.DX68cEVD.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-latin-ext-opsz-normal.HoL-AExg.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-latin-opsz-normal.BpEBLj1O.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"Source Serif 4 Variable";font-style:italic;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-cyrillic-ext-opsz-italic.Bl6DJqma.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:"Source Serif 4 Variable";font-style:italic;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-cyrillic-opsz-italic.Dibx14aP.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:"Source Serif 4 Variable";font-style:italic;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-greek-opsz-italic.CMW9dfKg.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:"Source Serif 4 Variable";font-style:italic;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-vietnamese-opsz-italic.Hh3oeMt5.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:"Source Serif 4 Variable";font-style:italic;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-latin-ext-opsz-italic.BhUEwDRF.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Source Serif 4 Variable";font-style:italic;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-latin-opsz-italic.BOLXpvkj.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg: #faf8f4;--layer: #f1ede5;--rule: #e4ded3;--rule-strong: #cfc7b9;--text: #24211d;--text-2: #4a453e;--muted: #7a7368;--ink: #24211d;--on-ink: #faf8f4;--accent: #2f5d50;--accent-hover: #244a40;--accent-soft: #e3ece7;--on-accent: #ffffff;--link: #2f5d50;--tint: var(--accent);--code-bg: #2a2723;--font-serif: "Source Serif 4 Variable", Georgia, "Times New Roman", serif;--font-sans: "Public Sans Variable", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: var(--font-sans);--font-code: ui-monospace, "Cascadia Code", Consolas, monospace;--radius: 6px;--radius-lg: 14px;--max: 1120px;--gutter: clamp(16px, 4vw, 40px);color-scheme:light}:root[data-theme=dark]{--bg: #1a1917;--layer: #24221f;--rule: #34312c;--rule-strong: #4a463f;--text: #ece7df;--text-2: #c9c2b7;--muted: #958d81;--ink: #ece7df;--on-ink: #1a1917;--accent: #8fc1ad;--accent-hover: #a9d2c1;--accent-soft: #23302b;--on-accent: #14201b;--link: #9ccbb8;--code-bg: #121110;color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--text);font:400 16.5px/1.65 var(--font-sans);font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased;overflow-x:hidden}img{max-width:100%;display:block}a{color:inherit;text-decoration:none}::selection{background:var(--accent-soft);color:var(--text)}:focus-visible{outline:2px solid var(--link);outline-offset:2px;border-radius:2px}h1,h2,h3,h4{font-family:var(--font-serif);font-weight:600;line-height:1.2;margin:0 0 .5em;text-wrap:balance}h1{font-size:clamp(2.3rem,5.5vw,3.9rem);font-weight:600;letter-spacing:-.015em;line-height:1.08}h2{font-size:clamp(1.5rem,2.8vw,2.05rem);font-weight:500;letter-spacing:-.01em}h3{font-size:1.22rem}h4{font-family:var(--font-sans);font-weight:600}p{margin:0 0 1em;text-wrap:pretty}.container{width:100%;max-width:var(--max);margin:0 auto;padding-inline:var(--gutter)}.mono{font-family:var(--font-sans)}.muted{color:var(--muted)}.lead{font-size:clamp(1.1rem,1.5vw,1.25rem);line-height:1.6;color:var(--text-2);max-width:60ch}.sec{display:grid;grid-template-columns:3fr 9fr;gap:16px 40px;padding-block:36px clamp(56px,8vw,96px);border-top:1px solid var(--rule)}.sec-label{font:500 .95rem/1.4 var(--font-sans);color:var(--muted);display:flex;gap:12px;margin:0}.sec-label>span:first-child:not(:only-child){display:none}.sec-body>h2:first-child{margin-top:-4px}@media(max-width:860px){.sec{grid-template-columns:1fr}}:root,[style*=--tint]{--tint-fg: color-mix(in srgb, var(--tint) 78%, var(--text))}:root[data-theme=dark],:root[data-theme=dark] [style*=--tint]{--tint-fg: color-mix(in srgb, var(--tint) 55%, var(--text))}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 22px;font:500 .95rem/1 var(--font-sans);border:1px solid var(--rule-strong);border-radius:999px;background:transparent;color:var(--text);transition:background .15s,border-color .15s,color .15s;cursor:pointer}.btn:hover{background:var(--layer);border-color:var(--muted)}.btn-primary{background:var(--ink);color:var(--on-ink);border-color:var(--ink)}.btn-primary:hover{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.tag{display:inline-block;padding:2px 10px;font:500 .78rem/1.7 var(--font-sans);color:var(--tint-fg);background:color-mix(in srgb,var(--tint) 10%,var(--bg));border-radius:999px}.tags{display:flex;flex-wrap:wrap;gap:6px}.link{color:var(--link);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}.arrow-link{font-weight:500;color:var(--link);text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--link) 35%,transparent);text-underline-offset:4px;text-decoration-thickness:1px;transition:text-decoration-color .15s}.arrow-link:hover{text-decoration-color:currentColor}.icon{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round}.prose{font:400 1.15rem/1.75 var(--font-serif);color:var(--text-2);max-width:66ch}.prose :where(p,ul,ol,pre,blockquote,table){margin-block:0}.prose>*+*{margin-top:1.1em}.prose h2{color:var(--text);font-size:1.65rem;font-weight:600;margin:2em 0 .5em}.prose h3{color:var(--text);font-size:1.25rem;font-weight:600;margin:1.7em 0 .4em}.prose strong{color:var(--text);font-weight:600}.prose a{color:var(--link);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}.prose ul,.prose ol{padding-left:1.3em}.prose li+li{margin-top:.45em}.prose ul li::marker{color:var(--muted)}.prose ol li::marker{color:var(--muted);font-weight:600}.prose blockquote{margin:1.8em 0;padding:0 0 0 22px;border-left:3px solid var(--accent-soft);color:var(--text);font-style:italic;font-size:1.25rem;line-height:1.55}.prose code{font:.84em var(--font-code);background:var(--layer);padding:.1em .35em;border-radius:4px;color:var(--text)}.prose pre{background:var(--code-bg)!important;padding:18px 20px;overflow-x:auto;font-size:.86rem;line-height:1.65;border-radius:var(--radius)}.prose pre code{background:none;padding:0;color:inherit}.prose hr{border:0;height:1px;background:var(--rule);margin:2.5em 0}.loop-fig{margin:2em 0;display:grid;grid-template-columns:150px 1fr 150px;gap:0 18px;align-items:center;font:.9rem/1.45 var(--font-sans)}.lf-node{align-self:stretch;display:flex;flex-direction:column;justify-content:center;gap:4px;padding:16px;text-align:center;background:var(--layer);border:1px solid var(--rule-strong);border-radius:var(--radius)}.lf-node strong{font:600 1.3rem/1.2 var(--font-serif);color:var(--text)}.lf-node span{font-size:.8rem;color:var(--muted)}.lf-flows{display:grid;gap:24px;padding-block:8px}.lf-flow{display:grid;gap:6px}.lf-when{font-size:.72rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.lf-line{position:relative;height:2px;background:var(--rule-strong)}.lf-line:after{content:"";position:absolute;top:-5px;border:6px solid transparent}.today .lf-line:after{right:-2px;border-right:0;border-left-color:var(--rule-strong)}.tomorrow .lf-when{color:var(--accent)}.tomorrow .lf-line{background:var(--accent)}.tomorrow .lf-line:after{left:-2px;border-left:0;border-right-color:var(--accent)}.lf-what{font-size:.85rem;color:var(--text-2)}.lf-what b{margin-right:4px;font-weight:600;color:var(--text)}.loop-fig figcaption{grid-column:1 / -1;margin-top:14px;text-align:center;font-size:.82rem;color:var(--muted)}@media(max-width:640px){.loop-fig{grid-template-columns:1fr}.lf-flows{gap:12px;padding:12px 0}.lf-flow{grid-template-columns:28px 1fr;gap:2px 10px}.lf-line{grid-column:1;grid-row:1 / 3;justify-self:center;width:2px;height:auto;min-height:48px}.lf-when,.lf-what{grid-column:2}.lf-line:after{top:auto;left:-5px;right:auto}.today .lf-line:after{bottom:-2px;border:6px solid transparent;border-bottom:0;border-top-color:var(--rule-strong)}.tomorrow .lf-line:after{top:-2px;bottom:auto;border:6px solid transparent;border-top:0;border-bottom-color:var(--accent)}}.prose table{width:100%;border-collapse:collapse;font:.92rem/1.5 var(--font-sans);display:block;overflow-x:auto}.prose thead th{border-bottom:1px solid var(--rule-strong)}.prose th,.prose td{text-align:left;vertical-align:top;padding:10px 14px 10px 0;border-bottom:1px solid var(--rule)}.prose th{color:var(--text);font-weight:600}.prose td:first-child{color:var(--text)}.site-header[data-astro-cid-3ef6ksr2]{position:sticky;top:0;z-index:50;background:var(--bg);border-bottom:1px solid var(--rule)}.bar[data-astro-cid-3ef6ksr2]{display:flex;align-items:center;justify-content:space-between;height:56px;gap:16px}.brand[data-astro-cid-3ef6ksr2]{font:600 1.05rem/1 var(--font-serif);white-space:nowrap}nav[data-astro-cid-3ef6ksr2]{display:flex;align-items:stretch;height:100%}.nav-link[data-astro-cid-3ef6ksr2]{display:flex;align-items:center;padding:0 14px;font-size:.9rem;color:var(--text-2);border-bottom:2px solid transparent;margin-bottom:-1px}.nav-link[data-astro-cid-3ef6ksr2]:hover{color:var(--text);background:var(--layer)}.nav-link[data-astro-cid-3ef6ksr2].active{color:var(--text);border-bottom-color:var(--accent)}.theme[data-astro-cid-3ef6ksr2]{display:grid;place-items:center;width:48px;border:0;background:transparent;color:var(--text-2);cursor:pointer}.theme[data-astro-cid-3ef6ksr2]:hover{background:var(--layer);color:var(--text)}@media(max-width:560px){.brand[data-astro-cid-3ef6ksr2]{font-size:0}.brand[data-astro-cid-3ef6ksr2]:before{content:"A. Hammoudi";font-size:.92rem}.nav-link[data-astro-cid-3ef6ksr2]{padding:0 9px;font-size:.86rem}.theme[data-astro-cid-3ef6ksr2]{width:40px}}.site-footer[data-astro-cid-sz7xmlte]{margin-top:32px}.cta-title[data-astro-cid-sz7xmlte]{max-width:22ch;margin-bottom:32px}.actions[data-astro-cid-sz7xmlte]{display:flex;flex-wrap:wrap;gap:12px}.actions[data-astro-cid-sz7xmlte] .btn[data-astro-cid-sz7xmlte]{min-width:200px}.bottom[data-astro-cid-sz7xmlte]{border-top:1px solid var(--rule)}.bottom-inner[data-astro-cid-sz7xmlte]{display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;padding-block:18px;font-size:.78rem;color:var(--muted)}.links[data-astro-cid-sz7xmlte]{display:flex;gap:20px}.links[data-astro-cid-sz7xmlte] a[data-astro-cid-sz7xmlte]:hover{color:var(--text)}@media(max-width:480px){.actions[data-astro-cid-sz7xmlte] .btn[data-astro-cid-sz7xmlte]{width:100%;word-break:break-all}}
