:root{--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:24px;--s-6:32px;--s-7:48px;--s-8:64px;--s-9:96px;--text-caption:.8125rem;--text-ui:.875rem;--text-base:1rem;--text-body:1.0625rem;--text-heading:1.25rem;--text-title:2rem;--r-sm:6px;--r-md:10px;--px:1.618em;--py:1.618em;--measure:38rem;color-scheme:light;--color-bg:#fbfbf8;--color-bg-hover:color-mix(in srgb, var(--color-text) 8%, var(--color-bg));--color-text:#1d1d1b;--color-text-secondary:color-mix(in srgb, var(--color-text) 66%, var(--color-bg));--color-decoration:color-mix(in srgb, var(--color-text) 45%, var(--color-bg));--color-border:color-mix(in srgb, var(--color-text) 8%, var(--color-bg));--color-underline:color-mix(in srgb, currentColor 22%, transparent);--color-focus:#2f6ce0;--color-warning-text:#9a6200;--color-danger-border:#c4321c14;--color-tip-text:#2c7346;--color-surface:color-mix(in srgb, var(--color-text) 3.5%, var(--color-bg));--color-warning-surface:color-mix(in srgb, #c98a00 8%, var(--color-bg));--shadow-raised:0 0 0 1px #0000000f, 0 1px 2px -1px #0000000f, 0 4px 16px 0 #0000000f;--r-lg:14px;--color-paper:#f4f2ec;--color-accent:#c4491b;--color-accent-surface:color-mix(in srgb, var(--color-accent) 10%, var(--color-bg));--color-danger:#b4321c;--color-danger-surface:color-mix(in srgb, var(--color-danger) 9%, var(--color-bg));--color-good-surface:color-mix(in srgb, var(--color-tip-text) 10%, var(--color-bg));--color-chart-1:#d9541e;--color-chart-2:#7f9c78;--color-chart-3:#d2b98f;--color-chart-4:#4a4a46;--color-chart-5:#a9b8c4}:root[data-theme=dark]{color-scheme:dark;--color-bg:#161615;--color-bg-hover:color-mix(in srgb, var(--color-text) 8%, var(--color-bg));--color-text:#e3e2dd;--color-text-secondary:color-mix(in srgb, var(--color-text) 68%, var(--color-bg));--color-decoration:color-mix(in srgb, var(--color-text) 45%, var(--color-bg));--color-border:color-mix(in srgb, var(--color-text) 8%, var(--color-bg));--color-focus:#7aa3f2;--color-warning-text:#e0a83c;--color-danger-border:#ff7b6b1f;--color-tip-text:#7dc59a;--color-surface:color-mix(in srgb, var(--color-text) 5%, var(--color-bg));--color-warning-surface:color-mix(in srgb, #e0a83c 9%, var(--color-bg));--shadow-raised:0 0 0 1px #ffffff1a, 0 4px 16px 0 #0006;--color-paper:#e6e3db;--color-accent:#ec8456;--color-danger:#f08a78;--color-chart-1:#e46a37;--color-chart-2:#8fae88;--color-chart-3:#d8c39c;--color-chart-4:#b9b8b2;--color-chart-5:#8fa3b4}*{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:var(--color-bg-hover)}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-sans);font-size:var(--text-base);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.5}h1,h2{text-wrap:balance}a{color:inherit;text-decoration:none}a,button,summary{touch-action:manipulation}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0}img,svg{display:block}:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.u,.body a,.note a{text-decoration:underline;text-decoration-color:var(--color-underline);text-underline-offset:3px;text-decoration-thickness:1px}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.skip{inset-inline-start:-9999px;top:var(--s-2);z-index:10;border-radius:var(--r-sm);background:var(--color-text);color:var(--color-bg);padding:6px 10px;position:absolute}.skip:focus{inset-inline-start:var(--s-2)}.page{max-width:60rem;padding:var(--py) var(--px);flex-direction:column;min-height:100svh;margin:0 auto;display:flex}.bar a,.lang summary,footer a,.crumb{margin-block:-10px;padding-block:10px}@media (pointer:coarse){.bar a,.lang summary,footer a,.crumb{margin-block:-12px;padding-block:12px}}.bar{justify-content:space-between;align-items:center;gap:var(--s-4);font-size:var(--text-ui);color:var(--color-text-secondary);display:flex}.brand{color:var(--color-text);align-items:center;gap:8px;font-weight:600;display:inline-flex}.brand i{background:var(--color-accent);border-radius:50%;width:9px;height:9px}.bar nav{align-items:center;gap:var(--s-5);display:flex}.bar nav>a{align-items:center;display:inline-flex}.bar nav a[aria-current=page]{color:var(--color-text)}.theme{border-radius:var(--r-sm);width:32px;height:32px;color:var(--color-text-secondary);place-items:center;margin:-8px;display:grid;position:relative}.theme .moon,[data-theme=dark] .theme .sun{display:none}[data-theme=dark] .theme .moon{display:block}@media (pointer:coarse){.theme:after{content:"";position:absolute;inset:-6px}}@media (prefers-reduced-motion:no-preference){.theme{transition:scale .15s ease-out}.theme:active{scale:.96}}.lang{position:relative}.lang summary{cursor:pointer;align-items:center;gap:6px;list-style:none;display:inline-flex}.lang summary::-webkit-details-marker{display:none}.lang summary:after{content:"";border:1.5px solid;border-width:0 1.5px 1.5px 0;width:5px;height:5px;margin-inline-start:1px;transform:translateY(-2px)rotate(45deg)}.lang[open] summary{color:var(--color-text)}.lang ul{inset-inline-end:0;top:calc(100% + var(--s-3));z-index:10;border-radius:var(--r-md);background:var(--color-bg);min-width:10rem;box-shadow:var(--shadow-raised);padding:4px;list-style:none;position:absolute}.lang ul a{border-radius:var(--r-sm);margin:0;padding:8px 10px;display:block}.lang ul a[aria-current]{color:var(--color-text);font-weight:500}@media (pointer:coarse){.lang ul a{margin:0;padding-block:12px}}@media (width<=22.5rem){.bar .about{display:none}}.hero{margin-top:calc(var(--py) * 2)}.hero h1,.guide h1,.prose h1{font-size:var(--text-title);letter-spacing:-.02em;font-weight:600;line-height:1.15}.hero h1{margin-bottom:var(--s-3)}.hero p{max-width:var(--measure);color:var(--color-text-secondary);font-size:var(--text-body);text-wrap:pretty}.hero .empty{margin-top:var(--s-5);color:var(--color-text)}.grid{margin:var(--s-7) 0 var(--s-5);border-top:1px solid var(--color-border);border-inline-start:1px solid var(--color-border);grid-template-columns:repeat(auto-fit,minmax(16rem,1fr));display:grid}.cat{padding:var(--s-5) var(--s-5) var(--s-6);border-inline-end:1px solid var(--color-border);border-bottom:1px solid var(--color-border);flex-direction:column;display:flex}.cat h2{font-size:var(--text-base);margin-bottom:var(--s-2);font-weight:600}.cat h2 a{margin-block:-5px;padding-block:5px;display:block}.list{flex-direction:column;list-style:none;display:flex}.list a{font-size:var(--text-ui);color:var(--color-text-secondary);padding-block:5px;display:block}@media (pointer:coarse){.list a{font-size:var(--text-base);padding-block:10px}}.home-hero{gap:var(--s-7);margin-top:calc(var(--py) * 1.5);grid-template-columns:minmax(0,1fr) minmax(0,28rem);align-items:center;display:grid}.home-hero h1{letter-spacing:-.03em;text-wrap:balance;font-size:clamp(2rem,1.4rem + 2.2vw,2.75rem);font-weight:600;line-height:1.08}.home-hero p{max-width:34rem;margin-top:var(--s-4);color:var(--color-text-secondary);font-size:var(--text-body);text-wrap:pretty}.empty{margin-top:var(--s-6)}.home-sec{margin-top:var(--s-8)}.home-sec>h2{margin-bottom:var(--s-4);font-size:var(--text-heading);letter-spacing:-.01em;text-wrap:balance;font-weight:600}.topics{gap:var(--s-4);grid-template-columns:repeat(auto-fill,minmax(17rem,1fr));list-style:none;display:grid}.topics a{border-radius:var(--r-lg);background:var(--color-surface);height:100%;box-shadow:0 0 0 1px var(--color-border);flex-direction:column;display:flex;overflow:hidden}.topics .thumb{aspect-ratio:16/9;object-fit:cover;background:var(--color-paper);width:100%;height:auto}[data-theme=dark] .topics .thumb{filter:brightness(.86)saturate(.95)}.topics .tx{gap:var(--s-1);padding:var(--s-4) var(--s-5) var(--s-5);flex-direction:column;flex:1;display:flex}.topics b{align-items:center;gap:var(--s-2);font-weight:600;font-size:var(--text-body);display:flex}.topics b .icon{color:var(--color-accent)}.topics p{font-size:var(--text-ui);color:var(--color-text-secondary);text-wrap:pretty}.topics small{padding-top:var(--s-2);font-size:var(--text-caption);color:var(--color-text-secondary);margin-top:auto}.road ol{counter-reset:road;gap:var(--s-2);grid-template-columns:repeat(4,minmax(0,1fr));list-style:none;display:grid}.road li{counter-increment:road}.road a{gap:var(--s-1);height:100%;padding:var(--s-4);border-radius:var(--r-md);box-shadow:inset 0 0 0 1px var(--color-border);flex-direction:column;display:flex;position:relative}.road a:before{content:counter(road, decimal-leading-zero);font-family:var(--font-mono);font-size:var(--text-caption);color:var(--color-accent)}.road small{font-size:var(--text-caption);color:var(--color-text-secondary)}.road b{font-size:var(--text-ui);text-wrap:balance;font-weight:600;line-height:1.35}.road p{font-size:var(--text-caption);color:var(--color-text-secondary);text-wrap:pretty}@media (width<=52rem){.road ol{grid-template-columns:1fr 1fr}}.home-hacks a{gap:var(--s-2);flex-direction:column;height:100%;display:flex}.home-hacks li{padding:0}.home-hacks a{padding:var(--s-5);border-radius:inherit}.home-hacks small{padding-top:var(--s-2);font-size:var(--text-caption);color:var(--color-text-secondary);margin-top:auto}.home-sec .grid{margin-top:0}.cat h3{font-size:var(--text-base);margin-bottom:var(--s-2);font-weight:600}.cat h3 a{margin-block:-5px;padding-block:5px;display:block}.langs{margin-top:var(--s-6);border-top:1px solid var(--color-border);list-style:none}.langs li{border-bottom:1px solid var(--color-border)}.langs a{justify-content:space-between;gap:2px var(--s-4);padding:var(--s-4) 0;flex-wrap:wrap;display:flex}.langs b{font-weight:500}.langs span{color:var(--color-text-secondary);font-size:var(--text-ui)}footer{padding-top:calc(var(--py) * 2);justify-content:space-between;gap:var(--s-5);font-size:var(--text-ui);color:var(--color-text-secondary);flex-wrap:wrap;margin-top:auto;display:flex}footer .links{gap:var(--s-5);flex-wrap:wrap;display:flex}.crumb{font-size:var(--text-ui);color:var(--color-text-secondary);display:inline-block}.crumb+h1{margin-top:var(--s-3)}.group-list{max-width:var(--measure);margin-top:var(--s-7);border-top:1px solid var(--color-border);list-style:none}.group-list li{border-bottom:1px solid var(--color-border)}.group-list a{align-items:baseline;gap:var(--s-1) var(--s-4);padding:var(--s-4) 0;grid-template-columns:1fr auto;display:grid}.group-list b{font-weight:500;font-size:var(--text-body)}.group-list p{color:var(--color-text-secondary);font-size:var(--text-ui);text-wrap:pretty;grid-column:1}.group-list small{font-size:var(--text-caption);color:var(--color-text-secondary);white-space:nowrap;grid-area:1/2}.guide{grid-template-columns:minmax(0, var(--measure)) 1fr;gap:calc(var(--px) * 2.5);margin-top:calc(var(--py) * 2);display:grid}.guide h1{margin-bottom:var(--s-1)}.guide .en{color:var(--color-text-secondary)}.meta{gap:var(--s-1) var(--s-4);margin-top:var(--s-3);font-size:var(--text-caption);color:var(--color-text-secondary);font-variant-numeric:tabular-nums;flex-wrap:wrap;display:flex}.flag{margin-top:var(--s-5);color:var(--color-warning-text);text-wrap:pretty;border-inline-start:2px solid;padding-inline-start:var(--s-3);font-weight:500}.body{counter-reset:sec;overflow-wrap:break-word}.body h2{counter-increment:sec;align-items:baseline;gap:var(--s-3);margin:var(--s-7) 0 var(--s-3);scroll-margin-top:var(--s-5);font-size:var(--text-heading);letter-spacing:-.01em;font-weight:600;line-height:1.3;display:flex}.body>h2:first-child{margin-top:var(--s-6)}.body h2:before{content:counter(sec, decimal-leading-zero);font-family:var(--font-mono);font-size:var(--text-caption);letter-spacing:0;color:var(--color-text-secondary);font-weight:400}.body h3{font-size:var(--text-body);margin:var(--s-5) 0 var(--s-2);font-weight:600}.body p,.body li{font-size:var(--text-body);line-height:1.6}.body p+p{margin-top:var(--s-3)}.body strong{font-weight:500}.body ul{gap:var(--s-2);list-style:none;display:grid}.body ul li{padding-inline-start:20px;position:relative}.body ul li:before{content:"";inset-inline-start:3px;background:var(--color-decoration);width:6px;height:1px;position:absolute;top:.8em}.body ul.tldr li{padding-inline-start:26px}.body ul.tldr li:before{content:"→";inset-inline-start:0;width:auto;height:auto;color:var(--color-decoration);background:0 0;top:0}.body ol{counter-reset:step;gap:var(--s-4);list-style:none;display:grid}.body ol li{counter-increment:step;padding-inline-start:32px;position:relative}.body ol li:before{content:counter(step, decimal-leading-zero);inset-inline-start:0;font-family:var(--font-mono);font-size:var(--text-caption);color:var(--color-text-secondary);font-variant-numeric:tabular-nums;position:absolute;top:.3em}.body ol li{color:var(--color-text-secondary);font-size:var(--text-base)}.body ol li strong{color:var(--color-text);font-size:var(--text-body);margin-bottom:2px;display:block}.body>*+:not(h2,h3){margin-top:var(--s-4)}.body>p+p{margin-top:var(--s-3)}.body>*+:is(.callout,.block,.compare,.table),.body>:is(.callout,.block,.compare,.table)+*{margin-top:var(--s-5)}.body h3+*{margin-top:0}.body li>p+*,.body li>ul,.body li>ol{margin-top:var(--s-2)}.body .label{font-size:var(--text-caption);letter-spacing:.02em;color:var(--color-text-secondary);font-weight:600}.callout{padding:var(--s-4) var(--s-5);border-radius:var(--r-md);background:var(--color-surface)}.callout>*+*{margin-top:var(--s-2)}.callout p,.callout li{font-size:var(--text-base)}.callout.tip .label{color:var(--color-tip-text)}.callout.warning{background:var(--color-warning-surface)}.callout.warning .label{color:var(--color-warning-text)}.callout.example{font-variant-numeric:tabular-nums}.stats ul,.cards ul{border-top:1px solid var(--color-border);border-inline-start:1px solid var(--color-border);gap:0;display:grid}.stats ul{grid-template-columns:repeat(auto-fit,minmax(9.5rem,1fr))}.cards ul{grid-template-columns:repeat(auto-fit,minmax(15rem,1fr))}.body .stats li,.body .cards li{padding:var(--s-4);border-inline-end:1px solid var(--color-border);border-bottom:1px solid var(--color-border);font-size:var(--text-ui);color:var(--color-text-secondary);line-height:1.5}.body .stats li:before,.body .cards li:before{display:none}.stats strong{margin-bottom:var(--s-1);letter-spacing:-.02em;color:var(--color-text);font-variant-numeric:tabular-nums;font-size:1.5rem;font-weight:600;line-height:1.2;display:block}.cards strong{margin-bottom:var(--s-1);font-size:var(--text-base);color:var(--color-text);font-weight:600;display:block}.block>.label{margin-bottom:var(--s-3)}.compare{border:1px solid var(--color-border);border-radius:var(--r-md);grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));display:grid}.compare>.label{padding:var(--s-3) var(--s-4) 0;grid-column:1/-1}.compare .col{padding:var(--s-4)}.compare .col+.col{border-inline-start:1px solid var(--color-border)}.body .compare h3{margin:0 0 var(--s-2);font-size:var(--text-base)}.compare .col>*+*{margin-top:var(--s-2)}.compare p,.compare li{font-size:var(--text-base)}.body .timeline :is(ol,ul){gap:var(--s-4);border-inline-start:1px solid var(--color-border);margin-inline-start:4px;display:grid}.body .timeline li{font-size:var(--text-base);color:var(--color-text-secondary);padding-inline-start:var(--s-5);position:relative}.body .timeline li:before{content:"";inset-inline-start:-4.5px;background:var(--color-bg);border:1.5px solid var(--color-decoration);border-radius:50%;width:8px;height:8px;position:absolute;top:.45em}.body .timeline li strong{font-size:var(--text-caption);letter-spacing:.02em;color:var(--color-text);margin-bottom:2px;font-weight:600;display:block}.body .checklist ul{border-top:1px solid var(--color-border);gap:0}.body .checklist li{gap:var(--s-3);padding:var(--s-3) 0;border-bottom:1px solid var(--color-border);cursor:pointer;align-items:baseline;display:flex}.body .checklist li:before{display:none}.checklist input{width:18px;height:18px;accent-color:var(--color-text);cursor:pointer;flex:none;translate:0 3px}.checklist li:has(input:checked){color:var(--color-text-secondary);text-decoration:line-through;text-decoration-color:var(--color-decoration)}.say{padding:var(--s-4) var(--s-5);border-radius:var(--r-md);background:var(--color-surface)}.body .say ul{gap:0}.body .say li{padding:var(--s-3) 0;font-size:var(--text-ui);color:var(--color-text-secondary)}.body .say li+li{border-top:1px solid var(--color-border)}.body .say li:before{display:none}.say [lang=en]{font-size:var(--text-body);color:var(--color-text);margin-bottom:2px;font-weight:500;display:block}.body .myths ul{gap:var(--s-4)}.body .myths li{padding:var(--s-4) var(--s-5);border-radius:var(--r-md);background:var(--color-surface);font-size:var(--text-base)}.body .myths li:before,.myths strong:after{width:auto;height:auto;font-size:var(--text-caption);letter-spacing:.02em;background:0 0;font-weight:600;display:block;position:static}.body .myths li:before{content:attr(data-label);color:var(--color-warning-text);margin-bottom:2px}.myths strong{margin-bottom:var(--s-1);color:var(--color-text-secondary);font-weight:400;display:block}.myths strong:after{content:attr(data-after);margin-top:var(--s-3);color:var(--color-tip-text)}.body .mistakes ul{gap:var(--s-4)}.body .mistakes li{border-inline-start:2px solid var(--color-danger-border);color:var(--color-text-secondary);font-size:var(--text-base);padding-inline-start:var(--s-3)}.body .mistakes li:before{display:none}.mistakes li strong{color:var(--color-text);font-size:var(--text-body);margin-bottom:2px;display:block}.table{overflow-x:auto}.table:focus-visible{outline-offset:4px}.body table{border-collapse:collapse;width:100%;font-size:var(--text-ui);font-variant-numeric:tabular-nums;line-height:1.45}.body th,.body td{padding:var(--s-2) var(--s-4) var(--s-2) 0;border-bottom:1px solid var(--color-border);text-align:start;vertical-align:top}.body th{font-size:var(--text-caption);color:var(--color-text-secondary);white-space:nowrap;font-weight:600}.body :is(th,td):last-child{padding-inline-end:0}.body ul.sources,.body ul.related{gap:0}.body ul.sources li,.body ul.related li{padding-inline-start:0}.body ul.sources li:before,.body ul.related li:before{display:none}.sources a,.related a{font-size:var(--text-base);padding-block:6px;display:inline-block}@media (pointer:coarse){.sources a,.related a{padding-block:10px}}.sources small{font-size:var(--text-caption);color:var(--color-text-secondary);white-space:nowrap}.note{margin-top:var(--s-7);gap:var(--s-2);font-size:var(--text-ui);color:var(--color-text-secondary);text-wrap:pretty;display:grid}.note a{color:var(--color-text)}.toc{top:var(--py);font-size:var(--text-ui);align-self:start;position:sticky}.toc p{margin-bottom:var(--s-2);font-size:var(--text-caption);color:var(--color-text-secondary)}.toc a{color:var(--color-text-secondary);border-inline-start:1px solid var(--color-border);padding:4px 0 4px 12px;padding-inline:12px 0;display:block}.toc a.on{color:var(--color-text);border-inline-start-color:var(--color-text)}.topic{margin-top:calc(var(--py) * 1.5);counter-reset:sec}.topic-head{gap:var(--s-6);grid-template-columns:minmax(0,1fr) minmax(0,26rem);align-items:center;display:grid}.topic h1{margin-top:var(--s-3);margin-bottom:var(--s-1);font-size:var(--text-title);letter-spacing:-.02em;text-wrap:balance;font-weight:600;line-height:1.15}.topic .en{color:var(--color-text-secondary)}.topic .lede{max-width:var(--measure);margin-top:var(--s-3);color:var(--color-text-secondary);font-size:var(--text-body);text-wrap:pretty}.beta{align-items:baseline;gap:var(--s-2);margin-top:var(--s-4);background:var(--color-surface);font-size:var(--text-caption);color:var(--color-text-secondary);text-wrap:pretty;border-radius:999px;padding:5px 12px;display:inline-flex}.beta:before{content:"";background:var(--color-accent);border-radius:50%;flex:none;width:6px;height:6px;translate:0 -1px}.art{border-radius:var(--r-lg);background:var(--color-paper);box-shadow:0 0 0 1px var(--color-border);aspect-ratio:16/9;overflow:hidden}.art img{object-fit:cover;width:100%;height:100%}[data-theme=dark] .art img{filter:brightness(.86)saturate(.95)}.sec{margin-top:var(--s-8);scroll-margin-top:var(--s-5)}.sec>h2,.sec-head h2{counter-increment:sec;align-items:baseline;gap:var(--s-3);margin-bottom:var(--s-4);font-size:var(--text-heading);letter-spacing:-.01em;text-wrap:balance;font-weight:600;line-height:1.3;display:flex}.sec>h2:before,.sec-head h2:before{content:counter(sec, decimal-leading-zero);font-family:var(--font-mono);font-size:var(--text-caption);letter-spacing:0;color:var(--color-text-secondary);font-weight:400}.sec-head{justify-content:space-between;align-items:baseline;gap:var(--s-3);margin-bottom:var(--s-4);flex-wrap:wrap;display:flex}.sec-head h2{margin-bottom:0}.sec-note{max-width:var(--measure);margin-top:var(--s-3);font-size:var(--text-ui);color:var(--color-text-secondary);text-wrap:pretty}.badge{background:var(--color-accent-surface);width:36px;height:36px;color:var(--color-accent);border-radius:50%;flex:none;place-items:center;display:grid}.facts{margin-top:var(--s-7);border-top:1px solid var(--color-border);border-inline-start:1px solid var(--color-border);grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));list-style:none;display:grid}.facts li{padding:var(--s-4) var(--s-5) var(--s-5);border-inline-end:1px solid var(--color-border);border-bottom:1px solid var(--color-border);font-size:var(--text-ui);color:var(--color-text-secondary);text-wrap:pretty}.facts strong{margin-bottom:var(--s-1);letter-spacing:-.03em;color:var(--color-text);font-variant-numeric:tabular-nums;font-size:1.75rem;font-weight:600;line-height:1.2;display:block}.hacks{grid-template-columns:repeat(var(--cols,3), minmax(0, 1fr));gap:var(--s-3);list-style:none;display:grid}.hacks li{gap:var(--s-2);padding:var(--s-5);border-radius:var(--r-md);background:var(--color-surface);flex-direction:column;display:flex}.hacks .badge{margin-bottom:var(--s-2)}.hacks b{text-wrap:balance;font-weight:600;line-height:1.35}.hacks p{font-size:var(--text-ui);color:var(--color-text-secondary);text-wrap:pretty}.stack{border-radius:999px;gap:2px;height:14px;display:flex;overflow:hidden}.stack span,.bars .track span{background:var(--bar)}:is(.stack span,.bars li)[data-i="0"]{--bar:var(--color-chart-1)}:is(.stack span,.bars li)[data-i="1"]{--bar:var(--color-chart-2)}:is(.stack span,.bars li)[data-i="2"]{--bar:var(--color-chart-3)}:is(.stack span,.bars li)[data-i="3"]{--bar:var(--color-chart-4)}:is(.stack span,.bars li)[data-i="4"]{--bar:var(--color-chart-5)}.bars{gap:var(--s-3);max-width:40rem;margin-top:var(--s-5);list-style:none;display:grid}.bars li{align-items:center;gap:var(--s-4);font-size:var(--text-ui);grid-template-columns:minmax(0,15rem) 1fr 3rem;display:grid}.bars .label{align-items:center;gap:var(--s-2);text-wrap:pretty;display:flex}.bars .label:before{content:"";background:var(--bar);border-radius:3px;flex:none;width:10px;height:10px}.bars .track{background:var(--color-surface);border-radius:999px;height:8px;overflow:hidden}.bars .track span{height:100%;width:var(--v);border-radius:inherit;display:block}.bars.amounts li{grid-template-columns:minmax(0,15rem) 1fr 4rem}.bars.amounts .track span{min-width:3px}.bars b{text-align:end;font-variant-numeric:tabular-nums;font-weight:600}.line{gap:var(--s-4);grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;list-style:none;display:grid}.line li{padding-top:var(--s-5);border-top:1px solid var(--color-border);position:relative}.line li:before{content:"";top:-5px;background:var(--color-accent);width:9px;height:9px;box-shadow:0 0 0 4px var(--color-bg);border-radius:50%;position:absolute;inset-inline-start:0}.line b{margin-bottom:var(--s-1);font-variant-numeric:tabular-nums;font-weight:600;display:block}.line p{font-size:var(--text-ui);color:var(--color-text-secondary);text-wrap:pretty}.steps{counter-reset:step;grid-template-columns:repeat(var(--cols,3), minmax(0, 1fr));gap:var(--s-3);list-style:none;display:grid}.steps li{counter-increment:step;padding:var(--s-5);border-radius:var(--r-md);box-shadow:inset 0 0 0 1px var(--color-border)}.steps li:before{content:counter(step, decimal-leading-zero);margin-bottom:var(--s-3);font-family:var(--font-mono);font-size:var(--text-caption);color:var(--color-accent);display:block}.steps b{text-wrap:balance;font-weight:600;line-height:1.35;display:block}.steps p{margin-top:var(--s-1);font-size:var(--text-ui);color:var(--color-text-secondary);text-wrap:pretty}.rules{gap:var(--s-3);grid-template-columns:repeat(auto-fill,minmax(19rem,1fr));list-style:none;display:grid}.rules li{gap:var(--s-4);padding:var(--s-5);border-radius:var(--r-md);background:var(--color-surface);display:flex}.rules .dont .badge{background:var(--color-danger-surface);color:var(--color-danger)}.rules .do .badge{background:var(--color-good-surface);color:var(--color-tip-text)}.rules small{font-size:var(--text-caption);letter-spacing:.02em;color:var(--color-tip-text);font-weight:600;display:block}.rules .dont small{color:var(--color-danger)}.rules b{margin:2px 0 var(--s-1);text-wrap:balance;font-weight:600;line-height:1.35;display:block}.rules p{font-size:var(--text-ui);color:var(--color-text-secondary);text-wrap:pretty}.calc-box{gap:var(--s-5);padding:var(--s-5);border-radius:var(--r-lg);background:var(--color-surface);grid-template-columns:minmax(0,1fr) minmax(0,1fr);display:grid}.calc-in{gap:var(--s-4);align-content:start;display:grid}.calc-in label{font-size:var(--text-ui);color:var(--color-text-secondary);gap:6px;display:grid}.calc-in input{width:100%;min-height:44px;padding:0 var(--s-3);border:1px solid var(--color-border);border-radius:var(--r-sm);background:var(--color-bg);color:var(--color-text);font:inherit;font-size:var(--text-body);font-variant-numeric:tabular-nums;box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--color-text) 6%, transparent)}.calc-in input:focus-visible{outline:2px solid var(--color-focus);outline-offset:1px}.calc-brand{font-size:var(--text-caption);color:var(--color-text-secondary)}.calc-out{gap:var(--s-4);padding:var(--s-4);border-radius:var(--r-md);background:var(--color-bg);box-shadow:0 0 0 1px var(--color-border);align-items:flex-start;display:flex}.calc-res{gap:var(--s-1);flex:1;min-width:0;display:grid}.calc-res b{letter-spacing:-.01em;font-variant-numeric:tabular-nums;font-size:1.25rem;font-weight:600}.calc-res span,.calc-res small{font-size:var(--text-ui);color:var(--color-text-secondary);text-wrap:pretty}.calc-res small{font-size:var(--text-caption);font-variant-numeric:tabular-nums}.calc-out[data-level=high] .badge{background:var(--color-danger-surface);color:var(--color-danger)}.calc-out[data-level=good] .badge{background:var(--color-good-surface);color:var(--color-tip-text)}.calc-res ul{list-style:none;display:grid}.calc-res li{justify-content:space-between;gap:var(--s-3);border-bottom:1px solid var(--color-border);font-size:var(--text-ui);padding:6px 0;display:flex}.calc-res li:last-child{border-bottom:0}.calc-res li b{font-size:var(--text-base)}@media (width<=52rem){.calc-box{grid-template-columns:1fr}}.map-box{padding:var(--s-4);border-radius:var(--r-lg);background:var(--color-surface)}.usmap{width:100%;height:auto}.usmap .land{fill:color-mix(in srgb, var(--color-text) 7%, var(--color-bg))}.usmap .borders{fill:none;stroke:var(--color-bg);stroke-width:1.2px;stroke-linejoin:round}.usmap .dot{cursor:pointer}.usmap .dot:focus-visible{outline:none}.usmap .dot:focus-visible circle:not(.halo){stroke:var(--color-focus);stroke-width:3px}.usmap .dot circle{fill:var(--color-accent)}.usmap .dot .halo{fill:var(--color-accent);opacity:.16}.usmap .dot text{fill:var(--color-text);paint-order:stroke;stroke:color-mix(in srgb, var(--color-text) 7%, var(--color-bg));stroke-width:4px;font-size:15px;font-weight:600}.places{gap:var(--s-5) var(--s-4);margin-top:var(--s-5);grid-template-columns:repeat(auto-fill,minmax(15rem,1fr));list-style:none;display:grid}.places li{scroll-margin-top:var(--s-5)}.places h3{margin-bottom:var(--s-2);font-size:var(--text-base);align-items:center;gap:6px;font-weight:600;display:flex}.places h3 .icon{color:var(--color-accent)}.places h3 span{color:var(--color-text-secondary);font-weight:400}.places ul{gap:var(--s-1);padding-inline-start:22px;list-style:none;display:grid}.places ul li{align-items:baseline;gap:2px var(--s-2);font-size:var(--text-ui);flex-wrap:wrap;display:flex}.places ul a{text-decoration:underline;text-decoration-color:var(--color-underline);text-underline-offset:3px}.places small{font-size:var(--text-caption);color:var(--color-text-secondary)}.places li:target h3{color:var(--color-accent)}.seg{background:var(--color-surface);border-radius:999px;padding:3px;display:inline-flex}.seg button{min-height:30px;font-size:var(--text-caption);color:var(--color-text-secondary);border-radius:999px;padding:0 14px;font-weight:500}.seg button[aria-pressed=true]{background:var(--color-bg);color:var(--color-text);box-shadow:0 0 0 1px var(--color-border), 0 1px 2px #0000000f}@media (pointer:coarse){.seg button{min-height:40px}}.filter{margin-bottom:var(--s-4)}.filter p{margin-bottom:var(--s-2);font-size:var(--text-caption);letter-spacing:.02em;color:var(--color-text-secondary);font-weight:600}.chips{gap:var(--s-2);flex-wrap:wrap;display:flex}.chip{border:1px solid var(--color-border);min-height:36px;font-size:var(--text-ui);color:var(--color-text-secondary);border-radius:999px;align-items:center;gap:6px;padding:0 14px;display:inline-flex}.chip[aria-pressed=true]{background:var(--color-text);border-color:var(--color-text);color:var(--color-bg)}@media (pointer:coarse){.chip{min-height:44px}}@media (prefers-reduced-motion:no-preference){.chip,.seg button{transition:scale .15s ease-out}.chip:active,.seg button:active{scale:.96}}.svc{gap:var(--s-3);grid-template-columns:repeat(auto-fill,minmax(17.5rem,1fr));list-style:none;display:grid}.svc>li{gap:var(--s-4);padding:var(--s-5);border-radius:var(--r-md);background:var(--color-surface);flex-direction:column;display:flex;position:relative}.svc>li[hidden],.cmp tr[hidden]{display:none}.svc h3{font-size:var(--text-heading);letter-spacing:-.01em;font-weight:600;line-height:1.2}.svc h3 a:after{content:"";border-radius:inherit;position:absolute;inset:0}.svc .head{align-items:center;gap:var(--s-3);display:flex}.svc .head img,.svc .mono{border-radius:var(--r-sm);width:40px;height:40px;box-shadow:0 0 0 1px var(--color-border);object-fit:contain;background:#fff;flex:none}.mono{background:var(--color-bg);color:var(--color-text-secondary);place-items:center;font-weight:600;display:grid}.svc .mono{font-size:var(--text-body);background:var(--color-bg)}.svc .host{font-size:var(--text-caption);color:var(--color-text-secondary)}.pitch{gap:2px;display:grid}.pitch strong{letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:1.375rem;font-weight:600;line-height:1.25}.pitch span{font-size:var(--text-ui);text-wrap:pretty}.pitch small{font-size:var(--text-ui);color:var(--color-text-secondary)}.tags{gap:var(--s-1) var(--s-2);flex-wrap:wrap;list-style:none;display:flex}.tags li{background:var(--color-bg);font-size:var(--text-caption);border-radius:999px;align-items:center;gap:5px;padding:3px 9px;font-weight:500;display:inline-flex}.pc{gap:var(--s-2);font-size:var(--text-ui);list-style:none;display:grid}.pc li{gap:var(--s-2);text-wrap:pretty;display:flex}.pc .icon{flex:none;translate:0 3px}.pc .pro .icon{color:var(--color-tip-text)}.pc .con .icon{color:var(--color-danger)}.svc dl{gap:var(--s-2);font-size:var(--text-ui);display:grid}.svc dt{font-size:var(--text-caption);color:var(--color-text-secondary)}.svc dd{text-wrap:pretty}.svc .note-line{padding-top:var(--s-3);border-top:1px solid var(--color-border);font-size:var(--text-ui);color:var(--color-text-secondary);text-wrap:pretty;margin-top:auto}.cmp{border-radius:var(--r-md);box-shadow:inset 0 0 0 1px var(--color-border);overflow-x:auto}.cmp table{border-collapse:collapse;width:100%;min-width:40rem;font-size:var(--text-ui);line-height:1.45}.cmp th,.cmp td{padding:var(--s-3) var(--s-4);border-bottom:1px solid var(--color-border);text-align:start;vertical-align:top;text-wrap:pretty}.cmp tbody tr:last-child>*{border-bottom:0}.cmp thead th{font-size:var(--text-caption);color:var(--color-text-secondary);white-space:nowrap;background:var(--color-surface);font-weight:600}.cmp tbody th{background:var(--color-bg);white-space:nowrap;font-weight:600;position:sticky;inset-inline-start:0}.cmp tbody th a{align-items:center;gap:var(--s-2);display:inline-flex}.cmp tbody th img,.cmp .mono{width:20px;height:20px;box-shadow:0 0 0 1px var(--color-border);background:#fff;border-radius:4px}.cmp .mono{background:var(--color-surface);font-size:11px}.cmp .num{font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:600}.links-list{max-width:var(--measure);border-top:1px solid var(--color-border);list-style:none}.links-list li{padding:var(--s-3) 0;border-bottom:1px solid var(--color-border)}.links-list a{align-items:baseline;gap:2px var(--s-3);flex-wrap:wrap;display:flex}.links-list b{font-weight:500}.links-list small{font-size:var(--text-caption);color:var(--color-text-secondary)}.links-list p{font-size:var(--text-ui);color:var(--color-text-secondary);text-wrap:pretty;margin-top:2px}.src{margin-top:var(--s-8);border-block:1px solid var(--color-border)}.src summary{align-items:center;gap:var(--s-2) var(--s-3);padding:var(--s-4) 0;cursor:pointer;font-size:var(--text-ui);flex-wrap:wrap;font-weight:500;list-style:none;display:flex}.src summary::-webkit-details-marker{display:none}.src summary:after{content:"";border:solid var(--color-text-secondary);border-width:0 1.5px 1.5px 0;width:6px;height:6px;margin-inline-start:auto;transform:rotate(45deg)translateY(-2px)}.src[open] summary:after{transform:rotate(-135deg)translateY(2px)}.src summary small{color:var(--color-text-secondary);font-weight:400}.src ul{gap:var(--s-1);padding-bottom:var(--s-4);list-style:none;display:grid}.src a{font-size:var(--text-ui);text-decoration:underline;text-decoration-color:var(--color-underline);text-underline-offset:3px;padding-block:4px;display:inline-block}.src a small{font-size:var(--text-caption);color:var(--color-text-secondary);text-decoration:none}.topic .note{margin-top:var(--s-5)}.prose{max-width:var(--measure);margin-top:calc(var(--py) * 2)}.prose h1{margin-bottom:var(--s-5)}.prose>p:last-child{margin-top:var(--s-5)}@media (hover:hover){.u:hover,.body a:hover,.note a:hover{color:var(--color-text);text-decoration-color:currentColor}.bar nav a:hover,.lang summary:hover,.crumb:hover,.list a:hover,.toc a:hover{color:var(--color-text)}.topics a:hover{box-shadow:0 0 0 1px color-mix(in srgb, var(--color-text) 18%, var(--color-bg))}.topics a:hover b{text-decoration:underline;text-decoration-color:var(--color-underline);text-underline-offset:3px;text-decoration-thickness:1px}.home-hacks a:hover,.road a:hover{background:var(--color-bg-hover)}.list a:hover,.cat h2 a:hover,.group-list a:hover b,.langs a:hover b{text-decoration:underline;text-decoration-color:var(--color-underline);text-underline-offset:3px;text-decoration-thickness:1px}.theme:hover,.chip:not([aria-pressed=true]):hover{color:var(--color-text);background:var(--color-bg-hover)}.svc>li:hover{background:var(--color-bg-hover)}.seg button:not([aria-pressed=true]):hover,.src summary:hover{color:var(--color-text)}.places ul a:hover,.src a:hover{text-decoration-color:currentColor}.links-list a:hover b{text-decoration:underline;text-decoration-color:var(--color-underline);text-underline-offset:3px}.svc>li:hover h3 a{text-decoration:underline;text-decoration-color:var(--color-underline);text-underline-offset:3px;text-decoration-thickness:1px}.lang ul a:hover{background:var(--color-bg-hover);color:var(--color-text)}}@media (width<=52rem){.hacks,.steps{grid-template-columns:1fr 1fr}.home-hero,.topic-head{gap:var(--s-5);grid-template-columns:minmax(0,1fr)}.home-hero .art,.topic-head .art{grid-row:1}.line{gap:var(--s-5);border-inline-start:1px solid var(--color-border);grid-auto-columns:auto;grid-auto-flow:row;margin-inline-start:4px}.line li{padding:0 0 0 var(--s-5);border-top:0}.line li:before{top:.45em;inset-inline-start:-5px}.guide{grid-template-columns:minmax(0,1fr)}.toc{display:none}}@media (width<=30rem){:root{--px:16px;--py:20px;--text-title:1.75rem}.grid{margin-inline:calc(-1 * var(--px));border-inline-start:0;grid-template-columns:1fr}.facts{grid-template-columns:1fr 1fr}.svc,.hacks,.rules,.steps{grid-template-columns:1fr}.topics{gap:var(--s-2);grid-template-columns:1fr 1fr}.topics .tx{padding:var(--s-3)}.topics b{font-size:var(--text-ui);align-items:flex-start;line-height:1.3}.topics b .icon{flex:none;margin-top:1px}.topics p,.topics small{display:none}.bars li{grid-template-columns:1fr 3rem}.bars .track{grid-area:2/1/auto/-1}.cat{padding-inline:var(--px);border-inline-end:0}footer{gap:var(--s-3);flex-direction:column}}
