@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro_rooms/ibm-plex-mono-cyrillic-ext-400-normal.xuaO2J-f.woff2)format("woff2"),url(/_astro_rooms/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_rooms/ibm-plex-mono-cyrillic-400-normal.BSMlKf0J.woff2)format("woff2"),url(/_astro_rooms/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_rooms/ibm-plex-mono-vietnamese-400-normal.BulugwFq.woff2)format("woff2"),url(/_astro_rooms/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_rooms/ibm-plex-mono-latin-ext-400-normal.BmRBH3aV.woff2)format("woff2"),url(/_astro_rooms/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_rooms/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2)format("woff2"),url(/_astro_rooms/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_rooms/ibm-plex-mono-cyrillic-ext-500-normal.BqneJy0T.woff2)format("woff2"),url(/_astro_rooms/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_rooms/ibm-plex-mono-cyrillic-500-normal.Bq9vWWag.woff2)format("woff2"),url(/_astro_rooms/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_rooms/ibm-plex-mono-vietnamese-500-normal.DZ4AoWbu.woff2)format("woff2"),url(/_astro_rooms/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_rooms/ibm-plex-mono-latin-ext-500-normal.CAhNIIs5.woff2)format("woff2"),url(/_astro_rooms/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_rooms/ibm-plex-mono-latin-500-normal.DSY6xOcd.woff2)format("woff2"),url(/_astro_rooms/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}:root{--night:#071724;--night-2:#0d2232;--royal:#2f3c47;--mint:#2ee4d0;--green:#075b50;--paper:#f3f3ee;--paper-2:#e7e7e0;--ink:#071724;--mute:#53616b;--mute-dark:#a3b0b8;--line:#d9dee0;--on-dark:#dce3e6;--danger:#b3261e;--display:"Helvetica Neue", Helvetica, Arial, sans-serif;--body:"Helvetica Neue", Helvetica, Arial, sans-serif;--mono:var(--body);--code:"IBM Plex Mono", ui-monospace, "Courier New", monospace;--slate-2:#a9b3b8;--t-small:.875rem;--t-body:1.0625rem;--t-lead:1.25rem;--t-h3:1.5rem;--t-h2:clamp(2.2rem, 4.6vw, 3.9rem);--t-h1:clamp(2.8rem, 7.4vw, 6.4rem);--gutter:clamp(16px, 4vw, 48px);--gl:calc(var(--gutter) + env(safe-area-inset-left,0px));--gr:calc(var(--gutter) + env(safe-area-inset-right,0px));--serif:var(--body);--max:1240px}.is-tool{--night:#071724;--night-2:#0d2232;--royal:#2f3c47;--mint:#2ee4d0;--green:#075b50;--paper:#f3f3ee;--ink:#071724}*,:before,:after{box-sizing:border-box}[hidden]{display:none!important}html{-webkit-text-size-adjust:100%}body{background:var(--paper);color:var(--ink);font-family:var(--body);font-size:var(--t-body);-webkit-font-smoothing:antialiased;margin:0;line-height:1.55}img,svg{max-width:100%;display:block}a{color:inherit}:focus-visible{outline:2px solid var(--mint);outline-offset:3px}.on-light :focus-visible,.paper :focus-visible{outline-color:var(--green)}.wrap{width:100%;max-width:calc(var(--max) + env(safe-area-inset-left,0px) + env(safe-area-inset-right,0px));padding:0 var(--gr) 0 var(--gl);margin:0 auto}h1,h2,h3,.display,.lead,.r-hook,.dm-big,.dm-h2,.dm-lead,.dm-locked-t{text-wrap:balance}p,li,dd,figcaption,blockquote{text-wrap:pretty}.display{font-family:var(--display);letter-spacing:-.045em;margin:0;font-weight:400;line-height:.96}.display .accent{color:var(--green);display:block}.dark .display .accent,.hero .display .accent{color:var(--mint)}h1.display{font-size:var(--t-h1)}h2.display{font-size:var(--t-h2);line-height:1}h3{font-size:var(--t-h3);letter-spacing:-.02em;margin:0 0 .4em;font-weight:500;line-height:1.15}p{max-width:66ch;margin:0 0 1em}.lead{font-size:var(--t-lead);max-width:54ch;line-height:1.5}.marker{font:600 .72rem/1.4 var(--body);letter-spacing:.2em;text-transform:uppercase;color:var(--green);margin:0 0 1.5rem}.dark .marker{color:var(--mint)}.source{font-family:var(--mono);color:var(--mute);max-width:80ch;font-size:.75rem;line-height:1.5}.dark .source{color:var(--mute-dark)}section{padding:clamp(72px,11vw,144px) 0}.dark{background:var(--night);color:var(--paper)}.paper{background:var(--paper);color:var(--ink)}.paper-2{background:var(--paper-2);color:var(--ink)}.btn{font:600 .95rem/1 var(--body);letter-spacing:-.005em;cursor:pointer;border:1px solid #0000;border-radius:0;justify-content:space-between;align-items:center;gap:28px;padding:18px 22px;text-decoration:none;transition:background .15s,color .15s,border-color .15s;display:inline-flex}.btn:after{content:"→";font-weight:400}.btn-primary{background:var(--mint);color:var(--night);min-width:240px}.btn-primary:hover{background:#7defe2}.btn-ghost{color:inherit;text-transform:uppercase;letter-spacing:.16em;background:0 0;border-color:#0000;padding-left:4px;padding-right:4px;font-size:.75rem}.btn-ghost:hover{color:var(--mint)}.paper .btn-ghost:hover,.on-light .btn-ghost:hover{color:var(--green)}.paper .btn-primary,.on-light .btn-primary{background:var(--night);color:var(--paper)}.paper .btn-primary:hover,.on-light .btn-primary:hover{background:var(--green)}.btn[disabled]{opacity:.5;cursor:progress}.field{align-content:start;gap:6px;margin-bottom:18px;display:grid}.field label{font-size:.95rem;font-weight:600}.field .hint{font-size:var(--t-small);color:var(--mute)}input,select,textarea{font:inherit;color:var(--ink);border:1px solid var(--line);background:#fff;border-radius:0;width:100%;padding:12px 14px}input:focus,select:focus,textarea:focus{border-color:var(--royal);box-shadow:0 0 0 3px color-mix(in srgb, var(--green) 20%, transparent);outline:none}textarea{resize:vertical;min-height:140px}.hp{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.form-status{min-height:1.5em;margin-top:14px;font-weight:600}.form-status.ok{color:var(--green)}.form-status.err{color:var(--danger)}.form-status:focus{outline:none}.field-err{color:var(--danger);margin:2px 0 0;font-size:.9375rem;font-weight:600}[aria-invalid=true]{border-color:var(--danger)!important}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;overflow:hidden;position:absolute!important}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}:root{--ease-out:cubic-bezier(.2, .7, .2, 1)}html.motion :is(.fg, .r-stats, .facts, .tiles, .stairs, .therm, .big-stat, .r-steps, .r-links, .r-next, .r-callout, .r-quote, .r-table, .path){transition:opacity .9s var(--ease-out), transform .9s var(--ease-out)}html.motion :is(.fg, .big-stat, .r-next, .r-callout, .r-quote, .r-table):not(.in){opacity:0;transform:translateY(16px)}html.motion :is(.r-stats, .facts, .tiles, .stairs, .therm, .r-steps, .r-links)>*{transition:opacity .7s var(--ease-out), transform .7s var(--ease-out);transition-delay:calc(var(--i,0) * 90ms)}html.motion :is(.r-stats, .facts, .tiles, .therm, .r-steps, .r-links):not(.in)>*{opacity:0;transform:translateY(12px)}html.motion :is(.fb-bar, .fsb-a, .fsb-b, .fs-seg, .stack>span){transform-origin:0;transition:transform 1.1s var(--ease-out);transition-delay:calc(var(--i,0) * .11s + .15s)}html.motion :is(.fg, .stack):not(.in) :is(.fb-bar, .fsb-a, .fsb-b, .fs-seg),html.motion .stack:not(.in)>span{transform:scaleX(0)}html.motion .stairs .bar{transform-origin:bottom;transition:transform 1s var(--ease-out);transition-delay:calc(var(--i,0) * .12s)}html.motion .stairs:not(.in) .bar{transform:scaleY(0)}html.motion .fc-col{transform-origin:bottom;transition:transform 1s var(--ease-out);transition-delay:calc(var(--i,0) * .12s + .15s)}html.motion .fg:not(.in) .fc-col{transform:scaleY(0)}html.motion :is(path.fcv-line, path.fm-route, path.fm-export){stroke-dasharray:1;stroke-dashoffset:0;transition:stroke-dashoffset 1.8s var(--ease-out) .25s}html.motion .fg:not(.in) :is(path.fcv-line, path.fm-route, path.fm-export){stroke-dashoffset:1px}html.motion path.fsk-band{transition:opacity 1.2s var(--ease-out) .3s}html.motion .fg:not(.in) path.fsk-band{opacity:0}html.motion :is(.fg-time li, .fg-log li, .fg-flow>*){transition:opacity .7s var(--ease-out), transform .7s var(--ease-out);transition-delay:calc(var(--i,0) * .12s + .1s)}html.motion .fg:not(.in) :is(.fg-time li, .fg-log li, .fg-flow>*){opacity:0;transform:translateY(10px)}html.motion .path .p-dot{transition:transform .6s var(--ease-out)}html.motion .path:not(.in) .p-dot{transform:scale(.6)}html.motion .path .now .p-dot{animation:3.2s ease-in-out 1.2s infinite path-breathe}@keyframes path-breathe{0%,to{box-shadow:0 0 0 5px color-mix(in srgb, var(--green) 18%, transparent)}50%{box-shadow:0 0 0 10px color-mix(in srgb, var(--green) 6%, transparent)}}html.motion :is(.dm-h2, .dm-mail, .dm-vs>div, .dm-card h2, .dm-locked, .r-original).in:not(.settled){transition:opacity .6s var(--ease-out), transform .6s var(--ease-out)}html.motion :is(.dm-h2, .dm-mail, .dm-vs>div, .dm-card h2, .dm-locked, .r-original):not(.in){opacity:0;transform:translateY(14px)}html.motion :is(.dm-real-grid, .dm-rows, .dm-why-l, .dm-tiles, .dm-how-grid, .dm-x tbody, .r-pager).in:not(.settled)>*{transition:opacity .55s var(--ease-out), transform .55s var(--ease-out);transition-delay:calc(var(--i,0) * 70ms)}html.motion :is(.dm-real-grid, .dm-rows, .dm-why-l, .dm-tiles, .dm-how-grid, .dm-x tbody, .r-pager):not(.in)>*{opacity:0;transform:translateY(10px)}html.motion :is(.dm-rows, .dm-real-grid, .dm-why-l){background-image:linear-gradient(var(--rule-c,currentColor), var(--rule-c,currentColor));background-position:0 0;background-repeat:no-repeat;background-size:100% 1px;border-top-color:#0000!important}html.motion :is(.dm-rows, .dm-real-grid, .dm-why-l).in:not(.settled){transition:background-size .6s var(--ease-out)}html.motion :is(.dm-rows, .dm-real-grid, .dm-why-l):not(.in){background-size:0% 1px}.dm-rows,.dm-real-grid,.dm-why-l{--rule-c:#071724}@media (prefers-reduced-motion:no-preference){.dm-hero .wrap>*,.dm-main .r-head>*{animation:dr-rise .6s var(--ease-out) both}.dm-hero .wrap>:nth-child(2),.dm-main .r-head>:nth-child(2){animation-delay:80ms}.dm-hero .wrap>:nth-child(3),.dm-main .r-head>:nth-child(3){animation-delay:.16s}.dm-hero .wrap>:nth-child(n+4),.dm-main .r-head>:nth-child(n+4){animation-delay:.22s}@keyframes dr-rise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}}@media (hover:none){:is(.dm-tile, .r-link, .r-doc, .r-pager a, .dm-original){transition:transform .2s var(--ease-out);-webkit-tap-highlight-color:transparent}:is(.dm-tile, .r-link, .r-doc, .r-pager a, .dm-original):active{transform:translateY(-2px)scale(.99)}}:is(.r-link, .r-next, .r-doc, .doc-card){transition:transform .35s var(--ease-out), box-shadow .35s var(--ease-out), border-color .35s}@media (hover:hover){:is(.r-link, .r-next, .r-doc):hover{box-shadow:0 10px 28px -14px color-mix(in srgb, var(--night) 35%, transparent);transform:translateY(-2px)}}@media (prefers-reduced-motion:no-preference){.hero .hero-label,.hero h1,.hero .hero-row,.page-head .marker,.page-head h1,.page-head .lead{animation:rise 1.1s var(--ease-out) both}.hero h1,.page-head h1{animation-delay:.12s}.hero .hero-row,.page-head .lead{animation-delay:.32s}.hero .chain{animation:rise 1.1s var(--ease-out) .5s both}.hero-img,.ph-img{animation:settle 2.6s var(--ease-out) both}@keyframes rise{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}@keyframes settle{0%{transform:scale(1.06)}to{transform:none}}.pm>:first-child{animation:fadein .7s var(--ease-out) both}@keyframes fadein{0%{opacity:0}to{opacity:1}}}.pv{background:var(--paper-2);flex-direction:column;width:100%;height:100%;display:flex}.pv-bar{background:var(--night);color:var(--paper);flex:none;align-items:center;gap:6px;padding:8px 10px;font-size:.88rem;display:flex}.pv-b{color:var(--paper);border:1px solid var(--royal);min-width:34px;height:32px;font:inherit;cursor:pointer;background:0 0;padding:0 10px}.pv-b:hover{border-color:var(--mint);color:var(--mint)}.pv-pg{color:var(--on-dark);align-items:center;gap:6px;display:inline-flex}.pv-pg input{background:var(--night-2);width:4.2em;height:32px;color:var(--paper);border:1px solid var(--royal);font:inherit;padding:0 6px}.pv-sp{flex:1}.pv-scroll{outline:none;flex-direction:column;flex:auto;align-items:center;gap:12px;padding:12px;display:flex;overflow:auto}.pv-scroll:focus-visible{outline:2px solid var(--mint);outline-offset:-3px}.pv-page{-webkit-user-select:none;user-select:none;background:#fff;flex:none;position:relative;box-shadow:0 1px 3px #0000002e}.pv-page canvas{display:block}.pv-mark{pointer-events:none;opacity:.07;font:600 14px var(--mono);color:var(--night);flex-wrap:wrap;place-content:space-around;display:flex;position:absolute;inset:0;overflow:hidden;transform:rotate(-18deg)scale(1.25)}.pv-mark span{white-space:nowrap;padding:36px 26px}@media (width<=640px){.pv-fit{display:none}.pv-scroll{padding:6px}}@media print{.pv,.r-original{display:none!important}}.pv-protected{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.pv-shield{z-index:5;cursor:pointer;background:var(--night);color:var(--paper);font:inherit;text-align:center;border:0;place-items:center;margin:0;padding:24px;font-size:1rem;line-height:1.5;display:none;position:absolute;inset:0}.pv-shield strong{color:var(--mint);font-weight:600}.pv-hidden>.pv-shield{display:grid}.pv-hidden canvas,.pv-hidden iframe{visibility:hidden}@media print{html.pv-protect-on body *{visibility:hidden!important}html.pv-protect-on body:after{content:"This document is protected and cannot be printed.";visibility:visible;color:#000;font:16px sans-serif;position:fixed;top:48px;left:48px}}.pv-fencemask{z-index:4;pointer-events:none;background:var(--night);position:absolute;inset:0}.pv-fence.pv-fence-on .pv-fencemask{background:linear-gradient(to bottom, var(--night) 0, var(--night) calc(var(--fy,0px) - 78px), transparent calc(var(--fy,0px) - 64px), transparent calc(var(--fy,0px) + 64px), var(--night) calc(var(--fy,0px) + 78px), var(--night) 100%)}.pv-fence .pv-bar{z-index:5;position:relative}@media (width<=760px),(pointer:coarse) and (width<=1024px){.pv-b{min-width:44px;min-height:44px}.pv-pg input{min-height:44px;font-size:16px}.portal .t select,.portal .t input{font-size:16px}}.swipe-hint{display:none}@media (width<=760px){.swipe-hint{gap:6px;margin:16px 0 0;display:flex}.swipe-hint i{background:#07172433;width:18px;height:2px;transition:background .3s,width .3s}.swipe-hint i.on{background:#075b50;width:30px}.dm-how .swipe-hint i{background:#ffffff40}.dm-tiles:focus-visible{outline-offset:4px;outline:2px solid #075b50}}@media (prefers-reduced-motion:reduce){.swipe-hint i{transition:none}}@media (width<=760px),(pointer:coarse) and (width<=1024px){:is(p, li, dd, figcaption) a:not([class]):not([data-l]){padding-block:4px}}