.prose{box-sizing:border-box;width:100%;min-width:0;max-width:100%}.prose section{scroll-margin-top:calc(var(--bar-h) + 20px)}.prose>section{content-visibility:auto;contain-intrinsic-size:auto 900px;min-width:0;margin-bottom:52px}.prose section>h2{border-bottom:1px solid var(--line);margin-bottom:16px;padding-bottom:12px}.prose section>p,.prose section>ul,.prose section>ol{max-width:var(--measure)}.prose h3{margin:26px 0 8px}.prose h4{margin:20px 0 6px}.prose p.lede{color:var(--ink-soft);max-width:var(--measure);margin:12px 0 22px;font-size:1.09rem;line-height:1.8}.prose hr{border:0;border-top:1px solid var(--line);margin:34px 0}.prose .masthead{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-xl);box-shadow:var(--shadow-2);margin-bottom:34px;padding:30px clamp(20px,4vw,38px) 28px;position:relative;overflow:hidden}.prose .masthead:before{content:"";inset-inline-start:0;background:var(--brand-grad);width:100%;height:4px;position:absolute;top:0}.prose .masthead:after{content:"";inset-inline-end:-70px;pointer-events:none;background:radial-gradient(circle, color-mix(in srgb, var(--violet) 16%, transparent) 0%, color-mix(in srgb, var(--blue) 8%, transparent) 55%, transparent 72%);border-radius:50%;width:260px;height:260px;position:absolute;top:-90px}.prose .masthead h1{max-width:22ch;margin-bottom:12px}.prose .masthead .sub{color:var(--ink-soft);max-width:var(--measure);margin-bottom:22px;font-size:1.02rem}.prose .eyebrow{letter-spacing:.05em;color:var(--blue);background:var(--tint-blue);border:1px solid color-mix(in srgb, var(--blue) 22%, transparent);border-radius:99px;align-items:center;gap:7px;margin-bottom:14px;padding:4px 11px;font-size:.73rem;font-weight:700;display:inline-flex}.prose .eyebrow .dot{background:var(--brand-grad);border-radius:50%;flex:none;width:6px;height:6px}.prose .facts{z-index:1;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;display:grid;position:relative}.prose .fact{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow-1);padding:14px 15px;position:relative;overflow:hidden}.prose .fact:before{content:"";top:0;background:var(--fc,var(--blue));width:100%;height:2.5px;position:absolute;inset-inline-start:0}.prose .fact:first-child{--fc:var(--blue);--fbg:var(--tint-blue)}.prose .fact:nth-child(2){--fc:var(--violet);--fbg:var(--tint-violet)}.prose .fact:nth-child(3){--fc:var(--warn);--fbg:var(--tint-warn)}.prose .fact:nth-child(4){--fc:var(--safe);--fbg:var(--tint-safe)}.prose .fact b{white-space:nowrap;font-family:var(--num);color:var(--ink);letter-spacing:-.025em;align-items:baseline;gap:4px;font-size:1.42rem;font-weight:700;line-height:1.2;display:flex}.prose .fact b .u{color:var(--ink-soft);font-size:.7rem;font-weight:600}.prose .fact-ico{background:var(--fbg,var(--tint-blue));width:30px;height:30px;color:var(--fc,var(--blue));border-radius:9px;place-items:center;margin-bottom:10px;display:grid}.prose .fact-ico svg{width:15px;height:15px;display:block}.prose .fact-v{min-width:0;display:block}.prose .fact-v>span{color:var(--ink-faint);margin-top:3px;font-size:.735rem;line-height:1.45;display:block}@media (max-width:559px){.prose .facts{grid-template-columns:1fr 1fr;gap:8px}.prose .fact{padding:11px 12px}.prose .fact b{font-size:1.16rem}}.prose .cards{grid-template-columns:repeat(auto-fit,minmax(232px,1fr));gap:14px;margin:22px 0 26px;display:grid}.prose .card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow-1);padding:16px 17px;transition:border-color .18s,box-shadow .18s}.prose .card:hover{border-color:var(--line-strong);box-shadow:var(--shadow-2)}.prose .card h3{margin:0 0 6px;font-size:1rem}.prose .card p{color:var(--ink-soft);margin:0;font-size:.885rem;line-height:1.72}.prose .card code{white-space:normal}.prose .card.v .card-ico{background:var(--tint-violet);color:var(--violet)}.prose .card.g .card-ico{background:var(--tint-safe);color:var(--safe)}.prose .card.w .card-ico{background:var(--tint-warn);color:var(--warn)}.prose .card-ico{background:var(--tint-blue);width:32px;height:32px;color:var(--blue);border-radius:9px;place-items:center;margin-bottom:11px;display:grid}.prose .card-ico svg{width:16px;height:16px;display:block}.prose .term,.prose .code{border-radius:var(--r-md);border:1px solid var(--line-strong);background:var(--surface-code);box-shadow:var(--shadow-2);margin:20px 0 24px;overflow:hidden}.prose .term-bar,.prose .code-bar{background:#ffffff0b;border-bottom:1px solid #ffffff14;align-items:center;gap:10px;height:38px;padding-inline:13px;display:flex}.prose .dots{flex:none;gap:6px;display:inline-flex}.prose .dots i{border-radius:50%;width:10px;height:10px;display:block}.prose .dots i:first-child{background:#ff5f57}.prose .dots i:nth-child(2){background:#febc2e}.prose .dots i:nth-child(3){background:#28c840}.prose .term-label,.prose .code-path{font-family:var(--mono);color:#8fa0bf;white-space:nowrap;text-overflow:ellipsis;direction:ltr;unicode-bidi:isolate;font-size:.74rem;overflow:hidden}.prose .code-path{color:#a9bad9;font-weight:600}.prose .copy{color:#b7c4dd;cursor:pointer;background:#ffffff12;border:1px solid #ffffff1f;border-radius:7px;flex:none;margin-inline-start:auto;padding:4px 10px;font-family:inherit;font-size:.72rem;font-weight:600;transition:background .15s,color .15s}.prose .copy:hover{color:#fff;background:#ffffff24}.prose .copy.ok{color:#6ee7b7;background:#34d3992e;border-color:#34d39959}.prose .term pre,.prose .code pre{font-family:var(--mono);color:#d6deee;text-align:left;tab-size:2;scrollbar-color:#ffffff47 #0000;direction:ltr;margin:0;padding:15px 16px;font-size:13.5px;line-height:1.75;overflow-x:auto}.prose .term pre::-webkit-scrollbar-thumb{background:#ffffff38 padding-box content-box}.prose .code pre::-webkit-scrollbar-thumb{background:#ffffff38 padding-box content-box}.prose .term .k,.prose .code .k{color:#8ab4f8;font-weight:600}.prose .term .f,.prose .code .f{color:#f0b429}.prose .term .c,.prose .code .c{color:#6b7a99;font-style:italic}.prose .term .s,.prose .code .s{color:#9fe6b8}.prose .term .w,.prose .code .w{color:#f5a3a3;font-weight:600}.prose .term .p,.prose .code .p{color:#c9a6ff}.prose .term .d,.prose .code .d{color:#5e6b85;-webkit-user-select:none;user-select:none}.prose .note{border:1px solid var(--line);border-inline-start:3px solid var(--blue);border-radius:var(--r-md);background:var(--tint-blue);box-shadow:var(--shadow-1);max-width:var(--measure);margin:20px 0 24px;padding:14px 16px;position:relative}.prose .note>:last-child{margin-bottom:0}.prose .note p,.prose .note li{color:var(--ink-soft);font-size:.92rem;line-height:1.75}.prose .note.safe{border-inline-start-color:var(--safe);background:var(--tint-safe)}.prose .note.warn{border-inline-start-color:var(--warn);background:var(--tint-warn)}.prose .note.danger{border-inline-start-color:var(--danger);background:var(--tint-danger)}.prose .note-t{color:var(--blue);align-items:center;gap:7px;margin-bottom:6px;font-size:.88rem;font-weight:700;display:flex}.prose .note-t svg{flex:none;width:15px;height:15px}.prose .note.safe .note-t{color:var(--safe)}.prose .note.warn .note-t{color:var(--warn)}.prose .note.danger .note-t{color:var(--danger)}.prose figure{margin:26px 0 30px}.prose figcaption{color:var(--ink-faint);text-align:center;margin-top:10px;font-size:.82rem;line-height:1.7}.prose .table-wrap{border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);box-shadow:var(--shadow-1);margin:22px 0 26px;overflow-x:auto}.prose .table-wrap .doc-table{border-collapse:collapse;background:var(--surface);width:100%;min-width:620px;font-size:.9rem}.prose .table-wrap .doc-table th,.prose .table-wrap .doc-table td{text-align:start;border-bottom:1px solid var(--line);vertical-align:top;padding:14px 16px;line-height:1.7}.prose .table-wrap .doc-table thead{background:var(--surface-sunk)}.prose .table-wrap .doc-table thead th{background:var(--surface-sunk);color:var(--ink-soft);white-space:nowrap;border-bottom:1px solid var(--line-strong);font-size:.78rem;font-weight:700}.prose .table-wrap .doc-table tbody tr:last-child td{border-bottom:0}.prose .table-wrap .doc-table tbody tr:hover{background:var(--tint-blue)}.prose .table-wrap .doc-table td code{white-space:nowrap;direction:ltr;unicode-bidi:plaintext}.prose .table-wrap .yes{color:var(--safe);font-weight:700}.prose .table-wrap .no{color:var(--danger);font-weight:700}.prose>table{border-collapse:separate;border-spacing:0;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);width:100%;min-width:0;box-shadow:var(--shadow-1);margin:22px 0 26px;font-size:.9rem;display:table;overflow:hidden}.prose>table th,.prose>table td{text-align:start;vertical-align:top;border-bottom:1px solid var(--line);padding:11px 14px;line-height:1.7}.prose>table thead th{background:var(--surface-sunk);color:var(--ink-soft);white-space:nowrap;border-bottom-color:var(--line-strong);font-size:.78rem;font-weight:700}.prose>table tbody tr:last-child td{border-bottom:0}.prose>table tbody tr:hover{background:var(--tint-blue)}.prose ol.ranked{counter-reset:rk;max-width:var(--measure);margin:22px 0 26px;padding:0;list-style:none}.prose ol.ranked>li{counter-increment:rk;padding-inline-start:44px;margin:0;border-inline-start:2px solid var(--line);margin-inline-start:17px;padding-bottom:20px;position:relative}.prose ol.ranked>li:last-child{border-inline-start-color:#0000;padding-bottom:0}.prose ol.ranked>li:before{content:counter(rk);inset-inline-start:-15px;width:28px;height:28px;font-family:var(--num);background:var(--surface);color:var(--blue);border:2px solid var(--blue);border-radius:50%;place-items:center;font-size:.82rem;font-weight:700;display:grid;position:absolute;top:-2px}.prose ol.ranked>li>b:first-child,.prose ol.ranked>li>strong:first-child{margin-bottom:3px;display:block}.prose .ex{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-1);margin:22px 0;transition:border-color .18s;overflow:hidden}.prose .ex:hover{border-color:var(--line-strong)}.prose .ex.solved{border-color:color-mix(in srgb, var(--safe) 45%, transparent)}.prose .ex>h3,.prose .ex>p,.prose .ex>ul,.prose .ex>ol,.prose .ex>.term,.prose .ex>.code,.prose .ex>details,.prose .ex>.note,.prose .ex>figure,.prose .ex>.table-wrap{margin-inline:16px}.prose .ex>p{max-width:none;margin-top:14px}.prose .ex-h{background:var(--surface-sunk);border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:9px;padding:12px 16px;display:flex}.prose .ex-n{color:var(--ink);font-size:.93rem;font-weight:700}.prose .ex-lvl{border:1px solid #0000;border-radius:99px;padding:2px 9px;font-size:.71rem;font-weight:700}.prose .lvl-1{color:var(--safe);background:var(--tint-safe);border-color:color-mix(in srgb, var(--safe) 26%, transparent)}.prose .lvl-2{color:var(--blue);background:var(--tint-blue);border-color:color-mix(in srgb, var(--blue) 26%, transparent)}.prose .lvl-3{color:var(--violet);background:var(--tint-violet);border-color:color-mix(in srgb, var(--violet) 26%, transparent)}.prose .ex-time{color:var(--ink-faint);align-items:center;gap:4px;font-size:.73rem;display:inline-flex}.prose .ex-time:before{content:"";border:1.6px solid;border-radius:50%;flex:none;width:11px;height:11px}.prose .ex-done{color:var(--ink-faint);cursor:pointer;-webkit-user-select:none;user-select:none;border:1px solid var(--line-strong);background:var(--surface);border-radius:99px;align-items:center;gap:6px;margin-inline-start:auto;padding:3px 9px;font-size:.74rem;transition:color .15s,border-color .15s,background .15s;display:inline-flex}.prose .ex-done:hover{color:var(--safe);border-color:var(--safe)}.prose .ex-done input{accent-color:var(--safe);cursor:pointer;width:14px;height:14px;margin:0}.prose .ex-done.on{color:var(--safe);border-color:var(--safe);background:var(--tint-safe);font-weight:600}.prose .ex-goal{color:var(--ink-soft);background:var(--surface-sunk);border:1px dashed var(--line-strong);border-radius:var(--r-sm);padding:9px 12px;font-size:.87rem;margin-bottom:14px!important}.prose .ex-goal:before{content:"◎ ";color:var(--blue);font-weight:700}.prose details.ex-hint,.prose details.ex-sol{border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);margin-bottom:14px}.prose details.ex-hint>summary,.prose details.ex-sol>summary{cursor:pointer;border-radius:var(--r-sm);align-items:center;gap:8px;padding:9px 13px;font-size:.86rem;font-weight:600;list-style:none;transition:color .15s,background .15s;display:flex}.prose details.ex-hint>summary::-webkit-details-marker{display:none}.prose details.ex-sol>summary::-webkit-details-marker{display:none}.prose details.ex-hint>summary:before,.prose details.ex-sol>summary:before{content:"";border-inline:5px solid #0000;border-top:6px solid;flex:none;width:0;height:0;transition:transform .18s}.prose details.ex-hint[open]>summary:before,.prose details.ex-sol[open]>summary:before{transform:rotate(180deg)}.prose details.ex-hint>:not(summary),.prose details.ex-sol>:not(summary){margin-inline:13px}.prose details.ex-hint>p:first-of-type,.prose details.ex-sol>p:first-of-type{margin-top:4px}.prose details.ex-hint>:last-child,.prose details.ex-sol>:last-child{margin-bottom:14px}.prose .ex-hint>summary{color:var(--warn)}.prose .ex-hint>summary:hover{background:var(--tint-warn)}.prose .ex-sol>summary{color:var(--safe)}.prose .ex-sol>summary:hover{background:var(--tint-safe)}.prose .ex-sol[open]{border-color:color-mix(in srgb, var(--safe) 38%, transparent)}.prose .ex-stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow-1);flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:20px;padding:12px 16px;display:flex}.prose .ex-stat .pbar{flex:1;min-width:140px}.prose .ex-stat b{font-family:var(--num);font-size:.95rem}.prose .pbar{background:color-mix(in srgb, var(--ink-faint) 20%, transparent);border:1px solid var(--line);border-radius:99px;height:8px;overflow:hidden}.prose .pbar>i{background:var(--brand-grad);border-radius:99px;width:0;height:100%;transition:width .5s cubic-bezier(.2,.8,.3,1);display:block}.prose .cheat{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-1);margin:22px 0;overflow:hidden}.prose .cheat table{border-collapse:collapse;width:100%;font-size:.865rem}.prose .cheat td{border-bottom:1px solid var(--line);vertical-align:top;padding:8px 14px;line-height:1.7}.prose .cheat tr:last-child td{border-bottom:0}.prose .cheat tr:hover{background:var(--surface-sunk)}.prose .cheat td:first-child{white-space:nowrap;width:1%}.prose .cheat td:last-child{color:var(--ink-soft)}.prose .cheat td:first-child code{background:var(--surface-code);color:#9fe6b8;border-color:#0000;font-size:.82em}.prose .cheat-h{background:var(--brand-grad);color:#fff;align-items:center;gap:8px;padding:12px 16px;font-size:.93rem;font-weight:700;display:flex}.prose .cheat-h svg{width:16px;height:16px}.prose .pitfalls{flex-direction:column;gap:12px;margin:22px 0;display:flex}.prose .pit{background:var(--surface);border:1px solid var(--line);border-inline-start:3px solid var(--danger);border-radius:var(--r-md);box-shadow:var(--shadow-1);padding:13px 16px}.prose .pit dl{grid-template-columns:auto 1fr;align-items:baseline;gap:4px 10px;margin:0;display:grid}.prose .pit dt{color:var(--ink-faint);white-space:nowrap;padding-top:2px;font-size:.75rem;font-weight:700}.prose .pit dd{color:var(--ink-soft);margin:0;font-size:.9rem;line-height:1.7}.prose .pit dd code{white-space:normal}.prose .pit-e{font-family:var(--mono);text-align:left;color:var(--danger);background:var(--tint-danger);border-radius:var(--r-sm);white-space:pre-wrap;direction:ltr;unicode-bidi:isolate;border:0;margin-bottom:11px;padding:8px 11px;font-size:.8rem;line-height:1.7;display:block;overflow-x:auto}.prose .capsule{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-xl);box-shadow:var(--shadow-2);margin:24px 0;padding:24px clamp(18px,3vw,28px);position:relative;overflow:hidden}.prose .capsule:before{content:"";top:0;background:var(--brand-grad);width:100%;height:3px;position:absolute;inset-inline-start:0}.prose .capsule h3{margin-top:0;font-size:1.2rem}.prose .capsule .tagline{color:var(--violet);background:var(--tint-violet);border-radius:99px;align-items:center;gap:7px;margin-bottom:12px;padding:4px 11px;font-size:.73rem;font-weight:700;display:inline-flex}@media (max-width:519px){.prose .masthead{border-radius:var(--r-lg);padding:22px 18px}.prose .term pre,.prose .code pre{padding:13px;font-size:12.5px}.prose .ex-h{padding:10px 13px}.prose .ex>h3,.prose .ex>p,.prose .ex>ul,.prose .ex>ol,.prose .ex>.term,.prose .ex>.code,.prose .ex>details,.prose .ex>.note{margin-inline:13px}}.diagram{box-sizing:border-box;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);width:100%;min-width:0;max-width:100%;box-shadow:var(--shadow-1);padding:20px 16px;overflow-x:auto}.diagram svg{width:100%;min-width:0;max-width:100%;height:auto;margin:0 auto;display:block}.diagram .diagram-cap{box-sizing:border-box;width:100%;max-width:100%;color:var(--ink-soft);overflow-wrap:anywhere;word-break:normal;text-align:start;margin:12px 0 0;font-size:.88rem;line-height:1.8}.diagram .diagram-cap[lang=en]{text-align:left;direction:ltr}.diagram svg .dg-fill{fill:var(--surface-sunk)}.diagram svg .dg-fill-b{fill:var(--tint-blue)}.diagram svg .dg-fill-v{fill:var(--tint-violet)}.diagram svg .dg-fill-g{fill:var(--tint-safe)}.diagram svg .dg-fill-w{fill:var(--tint-warn)}.diagram svg .dg-network-edge{fill:var(--tint-violet);stroke:var(--violet);stroke-width:2px;stroke-dasharray:8 5}.diagram svg .dg-network-backend{fill:var(--tint-blue);stroke:var(--blue);stroke-width:2px;stroke-dasharray:8 5}.diagram svg .dg-stroke{stroke:var(--line-strong);fill:none}.diagram svg .dg-stroke-b{stroke:var(--blue);fill:none}.diagram svg .dg-stroke-v{stroke:var(--violet);fill:none}.diagram svg .dg-stroke-g{stroke:var(--safe);fill:none}.diagram svg .dg-stroke-w{stroke:var(--warn);fill:none}.diagram svg .dg-t{fill:var(--ink);font-family:var(--fa);font-size:13px}.diagram svg .dg-ts{fill:var(--ink-soft);font-family:var(--fa);font-size:11.5px}.diagram svg .dg-tm{fill:var(--ink-soft);font-family:var(--mono);font-size:11px}.diagram svg .dg-tb{fill:var(--blue);font-family:var(--mono);font-size:11px}.diagram svg text{direction:ltr;unicode-bidi:isolate}.diagram svg .dg-arrow{fill:var(--line-strong)}.diagram svg .dg-arrow-b{fill:var(--blue)}.diagram svg rect:not([class]){fill:var(--surface-sunk);stroke:var(--line-strong)}.diagram svg text:not([class]){fill:var(--ink);font-family:var(--mono);font-size:13px}@media (max-width:640px){.diagram svg{width:640px;min-width:640px;max-width:none;margin-inline:0}}
