.image-wrapper[data-astro-cid-6kov3kig]{display:block;width:100%}.image-link[data-astro-cid-6kov3kig]{display:block;width:100%;-webkit-text-decoration:none;text-decoration:none;border-bottom:none;background:none}.image-wrapper[data-astro-cid-6kov3kig] img[data-astro-cid-6kov3kig]{display:block;width:100%;height:auto}figure[data-astro-cid-6kov3kig]{margin:var(--block-spacing-y) 0;display:block;width:100%}figcaption[data-astro-cid-6kov3kig]{text-align:left;font-size:.82rem;color:var(--muted-color);margin-top:6px}figcaption[data-astro-cid-6kov3kig]{background:var(--page-bg);position:relative;z-index:var(--z-elevated);display:block;width:100%}.image-credit[data-astro-cid-6kov3kig]{display:block;margin-top:4px;font-size:12px;color:var(--muted-color)}.image-credit[data-astro-cid-6kov3kig] a[data-astro-cid-6kov3kig]{color:inherit;-webkit-text-decoration:underline;text-decoration:underline;text-underline-offset:2px}[data-astro-cid-6kov3kig][data-zoom-overlay],.zoom-overlay[data-astro-cid-6kov3kig]{position:fixed;inset:0;z-index:var(--z-overlay)}.medium-zoom-overlay{z-index:var(--z-overlay)!important}.medium-zoom-image--opened{z-index:calc(var(--z-overlay) + 1)!important}figure[data-astro-cid-6kov3kig] .download-link[data-astro-cid-6kov3kig]{position:relative;z-index:var(--z-elevated)}img[data-astro-cid-6kov3kig][data-zoomable=true]{cursor:zoom-in}.medium-zoom--opened[data-astro-cid-6kov3kig] img[data-astro-cid-6kov3kig][data-zoomable=true]{cursor:zoom-out}figure[data-astro-cid-6kov3kig].has-dl-btn{position:relative}.dl-host[data-astro-cid-6kov3kig]{position:relative}.img-dl-wrap[data-astro-cid-6kov3kig]{width:100%;position:relative;display:inline-block}.img-dl-btn[data-astro-cid-6kov3kig]{position:absolute;right:8px;bottom:8px;align-items:center;justify-content:center;width:30px;height:30px;border-radius:6px;color:#fff;-webkit-text-decoration:none;text-decoration:none;border:1px solid rgba(255,255,255,.25);z-index:var(--z-elevated);display:none;background:var(--primary-color)}.medium-zoom--opened .image-wrapper[data-astro-cid-6kov3kig]{opacity:0;z-index:calc(var(--z-base) - 1);transition:opacity .3s ease}.medium-zoom--opened .image-wrapper[data-astro-cid-6kov3kig]:has(.medium-zoom--opened){opacity:1;z-index:var(--z-overlay)}.medium-zoom--opened .image-wrapper[data-astro-cid-6kov3kig].zoom-active{opacity:1!important;z-index:var(--z-overlay)!important}.medium-zoom--opened .img-dl-btn[data-astro-cid-6kov3kig]{opacity:0;z-index:calc(var(--z-base) - 1);transition:opacity .3s ease}.medium-zoom--opened figcaption[data-astro-cid-6kov3kig]{opacity:0;z-index:calc(var(--z-base) - 1);transition:opacity .3s ease}.medium-zoom--opened .image-wrapper[data-astro-cid-6kov3kig].zoom-active .img-dl-btn[data-astro-cid-6kov3kig]{opacity:0;z-index:calc(var(--z-base) - 1)}.medium-zoom--opened .image-wrapper[data-astro-cid-6kov3kig].zoom-active figcaption[data-astro-cid-6kov3kig]{opacity:0;z-index:calc(var(--z-base) - 1)}.img-dl-btn[data-astro-cid-6kov3kig] svg[data-astro-cid-6kov3kig]{width:18px;height:18px;fill:currentColor}.img-dl-wrap[data-astro-cid-6kov3kig]:hover .img-dl-btn[data-astro-cid-6kov3kig]{display:inline-flex}.img-dl-btn[data-astro-cid-6kov3kig]:hover{background:var(--primary-color-hover)}[data-astro-cid-6kov3kig][data-theme=dark] .img-dl-btn[data-astro-cid-6kov3kig]{background:var(--primary-color);color:var(--on-primary);border-color:var(--primary-color)}[data-astro-cid-6kov3kig][data-theme=dark] .img-dl-btn[data-astro-cid-6kov3kig]:hover{background:var(--primary-color-hover)}.image-wrapper[data-astro-cid-6kov3kig]:not([data-has-title=true]){margin-top:20px}.image-wrapper[data-astro-cid-6kov3kig]:not([data-has-caption=true]){margin-bottom:20px}img[data-astro-cid-6kov3kig].full{width:100%!important;min-width:100%;max-width:100%}[data-theme=dark] .image-wrapper[data-astro-cid-6kov3kig] img[data-astro-cid-6kov3kig],[data-theme=dark] .medium-zoom-image--opened{filter:invert(.925) hue-rotate(180deg)}.note[data-astro-cid-qg6lmfty]{background:var(--surface-bg);border-left:2px solid var(--border-color);border-top-right-radius:8px;border-bottom-right-radius:8px;padding:20px 18px;margin:var(--block-spacing-y) 0}.note__layout[data-astro-cid-qg6lmfty]{display:flex;align-items:flex-start;gap:10px}.note__icon[data-astro-cid-qg6lmfty]{flex:0 0 auto;line-height:1;padding-top:2px}.note__emoji[data-astro-cid-qg6lmfty]{font-size:32px;line-height:1;display:block}.note__body[data-astro-cid-qg6lmfty]{flex:1 1 auto;min-width:0}.note__header[data-astro-cid-qg6lmfty]{display:flex;align-items:center;gap:8px;margin-bottom:6px}.note__emoji-inline[data-astro-cid-qg6lmfty]{font-size:20px;line-height:1;flex-shrink:0}.note__title[data-astro-cid-qg6lmfty]{font-size:16px;letter-spacing:.2px;font-weight:600;color:var(--text-color);text-align:left}.note__content[data-astro-cid-qg6lmfty]{color:var(--text-color);font-size:.95rem;text-align:left}.note[data-astro-cid-qg6lmfty] .note__content[data-astro-cid-qg6lmfty]>*:last-child{margin-bottom:0!important}.note[data-astro-cid-qg6lmfty] .note__content[data-astro-cid-qg6lmfty] a{color:color-mix(in oklab,var(--note-color) 65%,var(--text-color));background:none;border-bottom:1px solid color-mix(in oklab,var(--note-color) 55%,transparent)}.note[data-astro-cid-qg6lmfty] .note__content[data-astro-cid-qg6lmfty] a:hover{color:var(--text-color);border-bottom-color:currentColor}.note[data-astro-cid-qg6lmfty].note--neutral{--note-color: var(--primary-color);border-left-color:var(--border-color);background:var(--surface-bg)}.note[data-astro-cid-qg6lmfty].note--info{--note-color: #f39c12;border-left-color:#f39c12;background:color-mix(in oklab,#f39c12 10%,var(--surface-bg))}.note[data-astro-cid-qg6lmfty].note--success{--note-color: #2ecc71;border-left-color:#2ecc71;background:color-mix(in oklab,#2ecc71 8%,var(--surface-bg))}.note[data-astro-cid-qg6lmfty].note--danger{--note-color: #e74c3c;border-left-color:#e74c3c;background:color-mix(in oklab,#e74c3c 8%,var(--surface-bg))}.sidenote-wrapper{position:relative;display:block}.sidenote-container{display:none;margin:0;transition:opacity .3s ease-in-out}.sidenote{border-radius:8px;padding:0 30px;font-size:.9rem;color:var(--muted-color);margin:0}@media (--bp-content-collapse){.sidenote-wrapper{position:static!important}.sidenote-container{position:static!important;width:auto!important;right:auto!important;top:auto!important;margin-top:8px;display:block!important;opacity:1!important}.sidenote{padding:0}}.paper-note{--paper-color: rgb(79, 110, 183);border-left:2px solid rgb(79,110,183);border-left:2px solid var(--paper-color);padding-left:10px;font-size:.85rem;line-height:1.45}[data-theme=dark] .paper-note{--paper-color: rgb(131, 163, 234)}.paper-note__kicker{font-size:.7rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--paper-color)}.paper-note__ref{margin-top:6px;font-size:.75rem}.paper-note .paper-note__ref a{color:var(--muted-color);background:none;border-bottom:0}.paper-note .paper-note__ref a:hover{color:var(--text-color)}.paper-note__title{color:var(--text-color);line-height:1.3;margin-top:2px}.paper-note__meta{font-size:.75rem;font-weight:300;line-height:1.35;color:var(--muted-color);margin:3px 0 6px}.paper-note__body{color:var(--text-color)}.paper-note__body>:first-child{margin-top:0}.paper-note__body>:last-child{margin-bottom:0}.paper-note__body p{margin:0 0 6px}.paper-note__look{margin-top:6px;color:var(--muted-color)}.paper-note__look-label{font-weight:700;color:var(--paper-color)}.paper-note .placeholder{margin:6px 0 0;font-size:.8rem}:root{--exercise-color: rgb(85, 145, 221);--exercise-text-color: color-mix(in oklab, var(--exercise-color) 70%, var(--text-color))}.exercise{--primary-color: var(--exercise-color);--primary-color-hover: oklch(from var(--exercise-color) calc(l - .05) c h);margin:var(--spacing-5) 0;border:1px solid var(--border-color);border-radius:10px;background:var(--page-bg);overflow:hidden}.exercise__header{display:flex;gap:12px;align-items:flex-start;padding:12px 16px;background:color-mix(in oklab,rgb(85,145,221) 10%,var(--page-bg));border-bottom:1px solid var(--border-color);list-style:none;cursor:pointer}@supports (color: color-mix(in lch,red,blue)){.exercise__header{background:color-mix(in oklab,rgb(85,145,221) 10%,var(--page-bg))}@supports (color: color-mix(in lch,red,blue)){.exercise__header{background:color-mix(in oklab,var(--exercise-color) 10%,var(--page-bg))}}}.exercise:not([open])>.exercise__header{border-bottom:0}.exercise__header::-webkit-details-marker{display:none}.exercise__header::marker{content:""}.exercise__header:hover{background:color-mix(in oklab,rgb(85,145,221) 15%,var(--page-bg))}@supports (color: color-mix(in lch,red,blue)){.exercise__header:hover{background:color-mix(in oklab,rgb(85,145,221) 15%,var(--page-bg))}@supports (color: color-mix(in lch,red,blue)){.exercise__header:hover{background:color-mix(in oklab,var(--exercise-color) 15%,var(--page-bg))}}}.exercise__header:focus-visible{outline:2px solid rgb(85,145,221);outline:2px solid var(--exercise-color);outline-offset:-2px}.exercise__toggle{display:inline-flex;align-items:center;gap:2px;flex:0 0 auto;margin:2px 0 0 auto;padding:2px 6px 2px 10px;border:1px solid color-mix(in oklab,rgb(85,145,221) 45%,var(--border-color));border-radius:999px;background:var(--page-bg);font-size:.75rem;font-weight:600;color:var(--exercise-text-color)}@supports (color: color-mix(in lch,red,blue)){.exercise__toggle{border:1px solid color-mix(in oklab,rgb(85,145,221) 45%,var(--border-color))}@supports (color: color-mix(in lch,red,blue)){.exercise__toggle{border:1px solid color-mix(in oklab,var(--exercise-color) 45%,var(--border-color))}}}.exercise__toggle .exercise__chevron{width:14px;height:14px;margin-left:0;stroke:currentColor}.exercise[open]>.exercise__header .exercise__chevron{transform:rotate(90deg)}.exercise:not([open]) .exercise__toggle-hide,.exercise[open] .exercise__toggle-show{display:none}.exercise__heading{font-size:1.05rem;font-weight:700;color:var(--exercise-text-color);line-height:1.3}.exercise__number{margin-right:.35em}.exercise__star{margin-left:4px}.exercise__meta{font-size:.8rem;color:var(--muted-color);margin-top:2px}.exercise__body{padding:14px 16px 0;font-size:14px}.exercise__body :not(pre)>code{font-size:12px}.exercise__body>:first-child{margin-top:0}.exercise__icon{width:18px;height:18px;flex:0 0 auto;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.exercise__icon--header{width:22px;height:22px;margin-top:4px;color:#5591dd;color:var(--exercise-color)}.exercise__label{font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--exercise-text-color);margin:0 0 6px}.exercise__starter{margin-bottom:var(--spacing-3)}.exercise__fold{margin:0 -16px;border-top:1px solid var(--border-color)}.exercise__fold[hidden]{display:none}.exercise__fold>summary{list-style:none;display:flex;align-items:center;gap:8px;padding:10px 16px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;color:var(--text-color)}.exercise__fold>summary::-webkit-details-marker{display:none}.exercise__fold>summary::marker{content:""}.exercise__fold>summary:hover{background:color-mix(in oklab,rgb(85,145,221) 6%,var(--page-bg))}@supports (color: color-mix(in lch,red,blue)){.exercise__fold>summary:hover{background:color-mix(in oklab,rgb(85,145,221) 6%,var(--page-bg))}@supports (color: color-mix(in lch,red,blue)){.exercise__fold>summary:hover{background:color-mix(in oklab,var(--exercise-color) 6%,var(--page-bg))}}}.exercise__fold>summary:focus-visible{outline:2px solid rgb(85,145,221);outline:2px solid var(--exercise-color);outline-offset:-2px}.exercise__fold>summary .exercise__icon{color:#5591dd;color:var(--exercise-color)}.exercise__fold-label{font-weight:600}.exercise__fold-detail{color:var(--muted-color);font-size:13px}.exercise__chevron{width:16px;height:16px;margin-left:auto;fill:none;stroke:var(--muted-color);stroke-width:2;transition:transform .15s ease}.exercise__fold[open]>summary .exercise__chevron{transform:rotate(90deg)}.exercise__fold-content{padding:2px 16px 14px 42px}.exercise__fold--solution .exercise__fold-content,.exercise__fold--checkpoint .exercise__fold-content{padding-left:16px}.exercise__fold-content>:first-child{margin-top:0}.exercise__fold-content>:last-child,.exercise__fold-content .code-output:last-child{margin-bottom:0}.exercise__solution-note{font-size:13px;color:var(--muted-color)}.exercise__outputs{margin-top:var(--spacing-2)}.exercise__outputs .code-output:before{content:none}.exercise__outputs .code-output pre{padding-top:var(--spacing-3)!important}.exercise__outputs .code-output+.code-output{margin-top:var(--spacing-2)}.exercise .astro-code,.exercise .astro-code code{font-size:12px}.exercise .astro-code{background-color:color-mix(in oklab,rgb(85,145,221) 5%,var(--surface-bg))!important}@supports (color: color-mix(in lch,red,blue)){.exercise .astro-code{background-color:color-mix(in oklab,rgb(85,145,221) 5%,var(--surface-bg))!important}@supports (color: color-mix(in lch,red,blue)){.exercise .astro-code{background-color:color-mix(in oklab,var(--exercise-color) 5%,var(--surface-bg))!important}}}.exercise .code-output{background:color-mix(in oklab,rgb(85,145,221) 9%,var(--surface-bg))}@supports (color: color-mix(in lch,red,blue)){.exercise .code-output{background:color-mix(in oklab,rgb(85,145,221) 9%,var(--surface-bg))}@supports (color: color-mix(in lch,red,blue)){.exercise .code-output{background:color-mix(in oklab,var(--exercise-color) 9%,var(--surface-bg))}}}.exercise .code-output pre{white-space:pre-wrap;word-wrap:anywhere;font-size:12px;line-height:1.5}.exercise__copied[hidden]{display:none}.exercise__copied-toggle{display:block;width:-moz-fit-content;width:fit-content;margin:2px 0 2px calc(var(--code-gutter-width) + var(--spacing-1));padding:1px 8px;border:1px dashed color-mix(in oklab,rgb(85,145,221) 55%,var(--border-color));border-radius:4px;background:color-mix(in oklab,rgb(85,145,221) 10%,var(--page-bg));color:var(--exercise-text-color);font:inherit;cursor:pointer}@supports (color: color-mix(in lch,red,blue)){.exercise__copied-toggle{border:1px dashed color-mix(in oklab,rgb(85,145,221) 55%,var(--border-color));background:color-mix(in oklab,rgb(85,145,221) 10%,var(--page-bg))}@supports (color: color-mix(in lch,red,blue)){.exercise__copied-toggle{border:1px dashed color-mix(in oklab,var(--exercise-color) 55%,var(--border-color));background:color-mix(in oklab,var(--exercise-color) 10%,var(--page-bg))}}}.exercise__copied-toggle:hover{background:color-mix(in oklab,rgb(85,145,221) 18%,var(--page-bg))}@supports (color: color-mix(in lch,red,blue)){.exercise__copied-toggle:hover{background:color-mix(in oklab,rgb(85,145,221) 18%,var(--page-bg))}@supports (color: color-mix(in lch,red,blue)){.exercise__copied-toggle:hover{background:color-mix(in oklab,var(--exercise-color) 18%,var(--page-bg))}}}.exercise__copied-toggle:focus-visible{outline:2px solid rgb(85,145,221);outline:2px solid var(--exercise-color);outline-offset:1px}.exercise__copied-toggle[aria-expanded=false]{counter-increment:astro-code-line var(--copied-lines)}.exercise__copied-toggle:before{content:"▸ " attr(data-label)}.exercise__copied-toggle[aria-expanded=true]:before{content:"▾ " attr(data-label)}.exercise__notice{margin:0 -16px;padding:12px 16px 14px;border-top:1px solid var(--border-color)}.exercise__notice>:last-child{margin-bottom:0}.exercise__missing{padding:10px 12px;border-radius:6px;border:1px solid var(--danger-color);color:var(--danger-color);font-size:.85rem}.bonus{--primary-color: var(--exercise-color);--primary-color-hover: oklch(from var(--exercise-color) calc(l - .05) c h);display:flex;gap:12px;align-items:baseline;margin:var(--spacing-3) 0 0;padding:10px 14px;border:1px solid var(--border-color);border-radius:10px;font-size:.95rem}.bonus+.bonus{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.bonus:has(+.bonus){border-bottom-left-radius:0;border-bottom-right-radius:0}.bonus__tag{flex:0 0 5.2em;font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--exercise-text-color)}.bonus--extra .bonus__tag{color:var(--muted-color)}.bonus__body>:first-child{margin-top:0}.bonus__body>:last-child{margin-bottom:0}:root{--optional-color: rgb(73, 164, 120);--optional-text-color: color-mix(in oklab, var(--optional-color) 70%, var(--text-color))}.optional{margin:var(--spacing-3) 0;border:1px solid color-mix(in oklab,rgb(73,164,120) 60%,var(--border-color));border-radius:10px}@supports (color: color-mix(in lch,red,blue)){.optional{border:1px solid color-mix(in oklab,rgb(73,164,120) 60%,var(--border-color))}@supports (color: color-mix(in lch,red,blue)){.optional{border:1px solid color-mix(in oklab,var(--optional-color) 60%,var(--border-color))}}}.optional+.optional{margin-top:calc(-1 * var(--spacing-3) - 1px);border-top-left-radius:0;border-top-right-radius:0}.optional:has(+.optional){border-bottom-left-radius:0;border-bottom-right-radius:0}.optional__summary{display:flex;align-items:baseline;gap:8px;padding:9px 14px;list-style:none;cursor:pointer;border-radius:9px}.optional__summary::-webkit-details-marker{display:none}.optional__summary::marker{content:""}.optional__summary:hover{background:#49a4780f}@supports (color: color-mix(in lch,red,blue)){.optional__summary:hover{background:color-mix(in oklab,rgb(73,164,120) 6%,transparent)}@supports (color: color-mix(in lch,red,blue)){.optional__summary:hover{background:color-mix(in oklab,var(--optional-color) 6%,transparent)}}}.optional__summary:focus-visible{outline:2px solid rgb(73,164,120);outline:2px solid var(--optional-color);outline-offset:-2px}.optional[open]>.optional__summary{border-bottom-left-radius:0;border-bottom-right-radius:0}.optional__icon{flex:0 0 auto;position:relative;top:3px;width:18px;height:18px;fill:none;stroke:#49a478;stroke:var(--optional-color);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.optional__tag{flex:0 0 auto;font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--optional-text-color)}.optional__heading{flex:1 1 auto}.optional__chevron{flex:0 0 auto;align-self:center;width:16px;height:16px;fill:none;stroke:var(--muted-color);stroke-width:2;transition:transform .15s ease}.optional[open]>.optional__summary .optional__chevron{transform:rotate(90deg)}.optional__content{padding:2px 16px 14px 40px}.optional__content>:first-child{margin-top:0}.optional__content>:last-child{margin-bottom:0}.pair-table .table-scroll>table th:nth-child(2n):not(:last-child),.pair-table .table-scroll>table td:nth-child(2n):not(:last-child){border-right:3px double var(--border-color)}.wrap-table .table-scroll>table{width:100%}.wrap-table .table-scroll>table th,.wrap-table .table-scroll>table td{white-space:normal}.placeholder{--ph-color: var(--muted-color);margin:var(--spacing-3) 0;padding:10px 14px 12px;border:1.5px dashed color-mix(in oklab,var(--ph-color) 60%,transparent);border-radius:8px;background:color-mix(in oklab,var(--ph-color) 6%,var(--page-bg));font-size:.85rem;line-height:1.5;color:var(--muted-color)}.placeholder--write{--ph-color: rgb(232, 112, 69)}.placeholder--figure{--ph-color: rgb(36, 143, 204)}.placeholder--paper{--ph-color: rgb(136, 100, 192)}.placeholder--exercise{--ph-color: rgb(57, 157, 87)}.placeholder--bonus{--ph-color: rgb(32, 153, 147)}.placeholder__tag{font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ph-color);margin-bottom:4px}.placeholder__who{text-transform:none;letter-spacing:0;font-weight:600}.placeholder__body>:first-child{margin-top:0}.placeholder__body>:last-child{margin-bottom:0}.placeholder__body p,.placeholder__body li{font-size:inherit}.placeholder__body ul{margin:4px 0;padding-left:1.2em}.hide-placeholders [data-placeholder]{display:none!important}.placeholder-toggle{position:fixed;right:16px;bottom:16px;z-index:var(--z-overlay);font-size:12px;padding:6px 10px;border-radius:999px;border:1px solid var(--border-color);background:var(--surface-bg);color:var(--text-color);box-shadow:0 2px 10px #0000001f;cursor:pointer}@media print{.placeholder-toggle{display:none}}.reference-list{list-style:none;padding:0;margin:var(--spacing-3) 0;font-size:.9rem}.reference-list li{display:flex;gap:12px;padding:6px 0;border-top:1px solid var(--border-color);scroll-margin-top:80px}.reference-list li:target{background:color-mix(in oklab,var(--primary-color) 10%,transparent)}.reference-list__year{font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--muted-color);min-width:2.6em}.reference-list__authors{font-weight:600}.reference-list__venue{color:var(--muted-color)}.reference-list__sections{color:var(--muted-color);white-space:nowrap}.reference-list__sections:before{content:"§ "}
