@layer reset{*,:before,:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:none;text-size-adjust:none}img,picture,svg,video,canvas{max-width:100%;display:block}img{height:auto}input,button,textarea,select{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:0;padding:0}p,h1,h2,h3,h4{overflow-wrap:break-word}ul[role=list],ol[role=list]{padding:0;list-style:none}}@layer tokens{:root{color-scheme:light;--shell:oklch(93.6% .013 128);--shell-deep:oklch(90.5% .016 128);--shell-lift:oklch(96.2% .009 128);--shell-rim:oklch(98.5% .006 128);--shell-skirt:oklch(78% .02 124);--shell-line:oklch(80% .016 120);--ink:oklch(25% .014 112);--ink-soft:oklch(40% .014 112);--ink-faint:oklch(47% .013 112);--rule:var(--shell-line);--rule-strong:oklch(34% .014 112);--glass:oklch(21% .014 128);--glass-deep:oklch(17% .014 128);--glass-line:oklch(34% .016 128);--glass-bezel:oklch(42% .02 120);--on-glass:oklch(92% .02 115);--on-glass-soft:oklch(76% .02 115);--on-glass-faint:oklch(68% .02 115);--lime:oklch(90.5% .2 124);--phosphor:var(--lime);--phosphor-dim:oklch(74% .14 124);--lime-ink:oklch(47% .13 128);--on-lime:oklch(22% .03 125);--coral:oklch(54% .17 32);--coral-lit:oklch(74% .16 32);--amber:oklch(62% .12 70);--plaster:var(--shell);--plaster-deep:var(--shell-deep);--plaster-lift:var(--shell-lift);--bg:var(--shell);--bg-2:var(--shell-deep);--surface:var(--shell-lift);--surface-2:var(--shell-deep);--surface-3:oklch(87.5% .016 124);--text:var(--ink);--text-soft:var(--ink-soft);--text-faint:var(--ink-faint);--edge:var(--rule-strong);--edge-soft:var(--rule);--bronze:var(--shell-skirt);--bronze-soft:var(--shell-skirt);--oxblood:var(--coral);--cream:var(--shell-lift);--on-accent:var(--on-lime);--accent:var(--lime);--link:var(--lime-ink);--focus:var(--lime-ink);--active-edge:var(--lime-ink);--shadow-color:transparent;--shadow:none;--shadow-lime:none;--shadow-amber:none;--shadow-coral:none;--dir:1;--radius:10px;--radius-sm:6px;--radius-screen:14px;--radius-key:12px;--radius-pill:999px;--bw:1.5px;--skirt:3px;--ff-body:var(--font-body);--ff-display:var(--font-display);--ff-mono:var(--font-mono);--lh-body:1.6;--step--1:clamp(.84rem, .82rem + .1vw, .9rem);--step-0:clamp(1rem, .97rem + .15vw, 1.08rem);--step-1:clamp(1.15rem, 1.08rem + .35vw, 1.35rem);--step-2:clamp(1.35rem, 1.22rem + .6vw, 1.7rem);--step-3:clamp(1.9rem, 1.55rem + 1.5vw, 2.7rem);--step-4:clamp(2.3rem, 1.7rem + 2.6vw, 3.8rem);--step-5:clamp(2.7rem, 1.8rem + 3.8vw, 5rem);--space-3xs:.25rem;--space-2xs:.5rem;--space-xs:.75rem;--space-s:1rem;--space-m:1.5rem;--space-l:2.25rem;--space-xl:3.5rem;--space-2xl:5rem;--space-3xl:7rem;--page-gutter:18px;--measure:68ch;--page-max:1200px;--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-in-out:cubic-bezier(.77, 0, .175, 1);--ease-drawer:cubic-bezier(.32, .72, 0, 1);--ease-spring:cubic-bezier(.16, 1, .3, 1);--dur-press:90ms;--dur-hover:.16s;--dur-ui:.24s}:root[data-theme=dark]{color-scheme:dark;--shell:oklch(21.5% .045 262);--shell-deep:oklch(18.5% .045 262);--shell-lift:oklch(25% .048 262);--shell-rim:oklch(33% .05 262);--shell-skirt:oklch(12% .035 262);--shell-line:oklch(32% .045 260);--ink:oklch(94% .012 250);--ink-soft:oklch(80% .022 252);--ink-faint:oklch(71% .025 252);--rule-strong:oklch(74% .025 252);--glass:oklch(15% .03 262);--glass-deep:oklch(12% .03 262);--glass-line:oklch(30% .04 262);--glass-bezel:oklch(40% .045 262);--lime-ink:var(--lime);--coral:var(--coral-lit);--amber:oklch(78% .12 70);--surface-3:oklch(30% .048 262)}:root[dir=rtl]{--dir:-1;--ff-body:var(--font-fa);--ff-display:var(--font-fa);--lh-body:1.9}@media (width>=768px){:root{--page-gutter:32px}}}@layer base{html{background:var(--bg);color:var(--text);font-family:var(--ff-body);line-height:var(--lh-body);scrollbar-color:var(--shell-skirt) var(--bg);scroll-padding-block-start:72px}@media (prefers-reduced-motion:no-preference){html:not([data-lite]){scroll-behavior:smooth}}body{min-height:100dvh;font-size:var(--step-0);background-color:var(--bg);-webkit-font-smoothing:antialiased;overflow-x:clip}h1,h2,h3{font-family:var(--ff-display);letter-spacing:-.015em;text-wrap:balance;font-weight:400;line-height:1.08}:root[dir=rtl] :is(h1,h2,h3){letter-spacing:0;font-weight:800;line-height:1.35}p,li{text-wrap:pretty}a{color:var(--link);text-underline-offset:.22em;text-decoration-thickness:1.5px}a:hover{text-decoration-thickness:2.5px}::selection{background:var(--lime);color:var(--on-lime)}:root{caret-color:var(--lime-ink);accent-color:var(--lime-ink)}:focus-visible{outline:2px solid var(--focus);outline-offset:3px;border-radius:var(--radius-sm)}code,kbd,pre,samp{font-family:var(--ff-mono);font-size:.92em}:not(pre)>code{background:var(--shell-deep);border:1px solid var(--shell-line);direction:ltr;unicode-bidi:isolate;border-radius:5px;padding:.08em .4em;font-size:.86em}kbd{border:1px solid var(--shell-skirt);background:var(--shell-lift);box-shadow:inset 0 1px 0 var(--shell-rim), 0 2px 0 var(--shell-skirt);border-radius:6px;padding:.05em .45em;font-size:.82em;display:inline-block}.mono{font-family:var(--ff-mono)}.tabular{font-variant-numeric:tabular-nums}}@layer components{.section{padding-block-start:var(--space-2xl);scroll-margin-block-start:calc(-1 * var(--space-2xl) + 1rem + var(--anchor-extra,0px))}.prose{max-width:var(--measure)}.prose>*+*{margin-block-start:1.1em}.prose :is(h2,h3){margin-block-start:2em}.prose h2{font-size:var(--step-2)}.prose h3{font-size:var(--step-1)}.prose :is(ul,ol){padding-inline-start:1.4em}.prose li+li{margin-block-start:.4em}.prose li::marker{color:var(--lime-ink);font-family:var(--ff-mono)}.prose ul>li::marker{content:"– "}.prose blockquote{font-family:var(--ff-display);font-size:var(--step-1);color:var(--text-soft);border-inline-start:1px solid var(--shell-skirt);padding-inline-start:var(--space-m);line-height:1.45}.prose img{border:1px solid var(--shell-skirt);border-radius:var(--radius)}.prose pre{padding:var(--space-s) var(--space-m);border:1px solid var(--shell-skirt);border-radius:var(--radius);box-shadow:inset 0 0 0 1px var(--glass-line);text-align:left;direction:ltr;font-size:.86em;line-height:1.6;overflow-x:auto}.prose table{border-collapse:collapse;width:100%;font-size:var(--step--1)}.prose :is(th,td){border:1px solid var(--edge-soft);text-align:start;padding:.45em .7em}.prose th{background:var(--shell-deep);font-family:var(--ff-mono);font-weight:600}.astro-code,.astro-code span{color:var(--shiki-dark);background-color:var(--shiki-dark-bg);font-style:var(--shiki-dark-font-style)}:root[data-theme=light] :is(.astro-code,.astro-code span){color:var(--shiki-light);background-color:var(--shiki-light-bg);font-style:var(--shiki-light-font-style)}.cap{background:var(--shell-lift);border:1px solid var(--shell-skirt);border-radius:var(--radius);box-shadow:inset 0 1px 0 var(--shell-rim), 0 var(--skirt) 0 var(--shell-skirt);position:relative}.cap--press{transition:translate var(--dur-press) var(--ease-out), box-shadow var(--dur-press) var(--ease-out), background-color var(--dur-hover) var(--ease-out)}@media (hover:hover) and (pointer:fine){.cap--press:hover{background:var(--shell)}}.cap--press:active{box-shadow:inset 0 1px 0 var(--shell-rim), 0 1px 0 var(--shell-skirt);translate:0 2px}.plate{background:var(--shell-deep);border:1px solid var(--shell-line);border-radius:var(--radius-screen);box-shadow:inset 0 2px 0 var(--shell-skirt)}.screen{background:var(--glass);color:var(--on-glass);border:1px solid var(--shell-skirt);border-radius:var(--radius-screen);box-shadow:inset 0 0 0 1px var(--glass-line), inset 0 1px 0 var(--shell-rim);position:relative}.screen ::selection{background:var(--phosphor);color:var(--on-lime)}.screen a{color:var(--phosphor)}.screen .caption{color:var(--on-glass-faint)}.win{background:var(--glass);color:var(--on-glass);border:1px solid var(--shell-skirt);border-radius:var(--radius-screen);box-shadow:inset 0 0 0 1px var(--glass-line), inset 0 1px 0 var(--shell-rim);position:relative;overflow:clip}.win__bar{align-items:baseline;gap:var(--space-xs);padding:.75rem var(--space-m) 0;font-family:var(--ff-mono);color:var(--on-glass-faint);direction:ltr;font-size:.75rem;display:flex}.win__title{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.win__meta{flex:none}.win__body{padding:var(--space-m)}.win a{color:var(--phosphor)}.win ::selection{background:var(--phosphor);color:var(--on-lime)}.t-out{color:var(--on-glass-soft)}.t-dim{color:var(--on-glass-faint)}.t-lime{color:var(--phosphor);font-weight:600}.t-amber{color:var(--amber);font-weight:600}:root[data-theme=dark] .t-amber,.screen .t-amber,.win .t-amber{color:oklch(80% .13 72)}.t-coral{color:var(--coral-lit);font-weight:600}.sec-head{gap:.6rem;margin-block-end:var(--space-l);display:grid}.sec-head__title{font-size:var(--step-3)}.sec-head__lead{color:var(--ink-soft);font-size:var(--step-0);text-wrap:pretty;max-width:62ch}.btn{border:1px solid var(--glass-deep);border-radius:var(--radius);background:var(--glass);min-height:50px;color:var(--phosphor);font-family:var(--ff-body);box-shadow:inset 0 1px 0 var(--glass-bezel), 0 var(--skirt) 0 var(--glass-deep);transition:translate var(--dur-press) var(--ease-out), box-shadow var(--dur-press) var(--ease-out), background-color var(--dur-hover) var(--ease-out);-webkit-tap-highlight-color:transparent;touch-action:manipulation;justify-content:center;align-items:center;gap:.7em;padding:.6em 1.35em;font-size:.98rem;font-weight:600;text-decoration:none;display:inline-flex}:root[data-theme=dark] .btn{box-shadow:inset 0 1px 0 var(--glass-line), 0 var(--skirt) 0 oklch(8% .03 262);border-color:oklch(8% .03 262)}.btn svg{transition:translate var(--dur-ui) var(--ease-out)}@media (hover:hover) and (pointer:fine){.btn:hover{background:var(--glass-deep)}.btn:hover svg{translate:calc(4px * var(--dir)) 0}}.btn:active{box-shadow:inset 0 1px 0 var(--glass-bezel), 0 1px 0 var(--glass-deep);translate:0 2px}.btn--ghost{background:var(--shell-lift);color:var(--ink);border-color:var(--shell-skirt);box-shadow:inset 0 1px 0 var(--shell-rim), 0 var(--skirt) 0 var(--shell-skirt)}:root[data-theme=dark] .btn--ghost{border-color:var(--shell-skirt);box-shadow:inset 0 1px 0 var(--shell-rim), 0 var(--skirt) 0 var(--shell-skirt)}@media (hover:hover) and (pointer:fine){.btn--ghost:hover{background:var(--shell)}}.btn--ghost:active{box-shadow:inset 0 1px 0 var(--shell-rim), 0 1px 0 var(--shell-skirt)}.btn--lit{background:var(--lime);color:var(--on-lime);border-color:var(--lime-ink);box-shadow:inset 0 1px 0 oklch(97% .12 124), 0 var(--skirt) 0 oklch(55% .15 128)}:root[data-theme=dark] .btn--lit{box-shadow:inset 0 1px 0 oklch(97% .12 124), 0 var(--skirt) 0 oklch(55% .15 128);border-color:oklch(55% .15 128)}@media (hover:hover) and (pointer:fine){.btn--lit:hover{background:oklch(93% .2 124)}}.btn--lit:active{box-shadow:inset 0 1px oklch(97% .12 124),0 1px oklch(55% .15 128)}.btn--glass{color:var(--on-glass);border-color:var(--glass-bezel);box-shadow:inset 0 1px 0 var(--glass-bezel), 0 var(--skirt) 0 var(--glass-deep);background:0 0}:is(.screen,.win,.close) .btn--glass{color:var(--on-glass)}@media (hover:hover) and (pointer:fine){.btn--glass:hover{background:var(--glass-deep)}}:root[dir=rtl] .btn svg.arrow{scale:-1 1}.arrow-link{min-height:44px;color:var(--ink);text-decoration:underline;text-decoration-color:var(--shell-skirt);text-underline-offset:.3em;transition:text-decoration-color var(--dur-hover) var(--ease-out);align-items:center;gap:.45em;font-weight:600;text-decoration-thickness:1.5px;display:inline-flex}.arrow-link svg{transition:translate var(--dur-ui) var(--ease-out)}.arrow-link:hover{text-decoration-color:var(--lime-ink)}.arrow-link:hover svg{translate:calc(4px * var(--dir)) 0}:root[dir=rtl] .arrow-link svg{scale:-1 1}.chip,.sticker{border:1px solid var(--shell-skirt);background:var(--shell-lift);min-height:26px;font-family:var(--ff-mono);color:var(--ink-soft);white-space:nowrap;direction:ltr;border-radius:5px;align-items:center;padding:.05em .6em;font-size:.75rem;display:inline-flex}:root[dir=rtl] :is(.chip,.sticker):not(.ltr),:is(.chip,.sticker):lang(fa){font-family:var(--font-fa)}.sticker--coral{border-color:var(--coral);color:var(--coral)}.sticker--amber,.sticker--lime{border-color:var(--rule-strong);color:var(--ink)}a.chip{min-height:36px;box-shadow:0 2px 0 var(--shell-skirt);transition:translate var(--dur-press) var(--ease-out), box-shadow var(--dur-press) var(--ease-out), color var(--dur-hover) var(--ease-out), background-color var(--dur-hover) var(--ease-out);text-decoration:none}a.chip:hover{color:var(--ink);background:var(--shell)}a.chip:active{box-shadow:0 1px 0 var(--shell-skirt);translate:0 1px}.key-sm{border:1px solid var(--shell-skirt);background:var(--shell-lift);min-height:36px;color:var(--ink);font-family:var(--font-body);white-space:nowrap;box-shadow:inset 0 1px 0 var(--shell-rim), 0 2px 0 var(--shell-skirt);transition:translate var(--dur-press) var(--ease-out), box-shadow var(--dur-press) var(--ease-out), background-color var(--dur-hover) var(--ease-out), border-color var(--dur-hover) var(--ease-out), color var(--dur-hover) var(--ease-out);border-radius:7px;align-items:center;gap:.45rem;padding-inline:.7rem;font-size:.92rem;display:inline-flex}button.key-sm,a.key-sm{cursor:pointer;text-decoration:none}:is(button,a).key-sm:active{box-shadow:inset 0 1px 0 var(--shell-rim), 0 0 0 var(--shell-skirt);translate:0 2px}.led{background:var(--lime);border:1.5px solid var(--ink);border-radius:50%;width:8px;height:8px;display:inline-block}.desk-edge{background:var(--shell-skirt);border-block-start:2px solid var(--shell-rim);border-block-end:1px solid oklch(62% .02 124);height:14px;display:block}:root[data-theme=dark] .desk-edge{border-block-end-color:oklch(8% .03 262)}.shelf-rule{background:var(--shell-skirt);border-block-start:2px solid var(--shell-rim);border-radius:3px;height:10px;display:block}.caption{font-family:var(--ff-mono);color:var(--ink-faint);font-variant-numeric:tabular-nums;font-size:.75rem}.ps1{font-family:var(--ff-mono);color:var(--phosphor);font-weight:600}.caret{vertical-align:-.16em;background:var(--phosphor);width:.55em;height:1.05em;display:inline-block}}@layer motion{@keyframes rise{0%{opacity:0;translate:0 28px;scale:.98}}@keyframes draw{0%{stroke-dashoffset:1px}to{stroke-dashoffset:0}}@keyframes blink{50%{opacity:0}}@keyframes bob{0%{translate:0 -3px}to{translate:0 3px}}@keyframes marquee{to{translate:calc(-50% * var(--dir)) 0}}@keyframes progress{0%{scale:0 1}to{scale:1}}@keyframes fade-out{to{opacity:0}}@keyframes fade-in{0%{opacity:0}}@keyframes page-out{to{opacity:0;translate:0 -10px}}@keyframes page-in{0%{opacity:0;translate:0 14px}}.caret,.blink{animation:1.05s step-end infinite blink}@media (prefers-reduced-motion:no-preference){@supports (animation-timeline:view()){html:not([data-lite]) .rise{animation:linear both rise view();animation-range:entry cover 22%}html:not([data-lite]) .draw-on-scroll{stroke-dasharray:1;animation:linear both draw view();animation-range:entry 10% cover 60%}}html:not([data-lite]) .bob{animation:bob 2.6s var(--ease-in-out) infinite alternate}html:not([data-lite]) .marquee__track{animation:38s linear infinite marquee}html:not([data-lite])::view-transition-old(root){animation:page-out .16s var(--ease-out) both}html:not([data-lite])::view-transition-new(root){animation:page-in .24s var(--ease-out) 60ms both}}html[data-theme-switching]::view-transition-old(root),html[data-theme-switching]::view-transition-new(root){mix-blend-mode:normal;animation:none}@media (prefers-reduced-motion:reduce){.caret,.blink{animation:none}::view-transition-old(root){animation:.12s both fade-out}::view-transition-new(root){animation:.12s both fade-in}}[data-offscreen] :is(.bob,.marquee__track),[data-offscreen]:is(.bob,.marquee__track){animation-play-state:paused}.read-progress{background:var(--lime);height:3px;transform-origin:var(--origin,left);z-index:70;position:fixed;inset-block-start:0;inset-inline:0;scale:0 1}:root[dir=rtl] .read-progress{--origin:right}@supports (animation-timeline:scroll()){.read-progress{animation:linear both progress scroll(root)}}@supports not (animation-timeline:scroll()){.read-progress{display:none}}}@layer utilities{.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.wrap{width:min(100% - 2 * var(--page-gutter), var(--page-max));margin-inline:auto}.ltr{direction:ltr;unicode-bidi:isolate}}
